diff --git a/package-lock.json b/package-lock.json index 6b36584c4b..b8aeaf75cc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -131,11 +131,11 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@aws-sdk/abort-controller": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.36.0.tgz", - "integrity": "sha512-IzOL+3x6odlo6mChPChSJepvtHncMKuCQSO0HCDp7AHdhfbZxDCrOL4byH6E3L/LXhUQX8hI0vYE1IDB1nqjhA==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.37.0.tgz", + "integrity": "sha512-Zq2PejlunZhV6MYeq2kXz5n8XbE5jsbeuKANwCqoD138zopsEmBGN71g/K+Ha8TtqLnMhZkt/cSYA4eaCdNaWg==", "dependencies": { - "@aws-sdk/types": "3.36.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -143,71 +143,71 @@ } }, "node_modules/@aws-sdk/chunked-blob-reader": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/chunked-blob-reader/-/chunked-blob-reader-3.36.0.tgz", - "integrity": "sha512-8MwykUnBjFUpvUYzuSmq7QvNtslmz9HNYO5YcOawUg7J0XtY01EquOp/dc0LPXCQhTLCaG0YLxZrhMGP9DrB8g==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/chunked-blob-reader/-/chunked-blob-reader-3.37.0.tgz", + "integrity": "sha512-uDacnFaczeO962RnVttwAQddS4rgDfI7nfeY8NV6iZkDv5uxGzHTfH4jT7WvPDM1pSMcOMDx8RJ+Tmtsd1VTsA==", "dependencies": { "tslib": "^2.3.0" } }, "node_modules/@aws-sdk/chunked-blob-reader-native": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/chunked-blob-reader-native/-/chunked-blob-reader-native-3.36.0.tgz", - "integrity": "sha512-060kKMFiCvzCI4OZRv4pTf5fNiCBT99fRVm39kKs6k3R0AKXn+4lPDN8Is740ZvGnoCCfnWC+EUUf7mwWX+jWw==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/chunked-blob-reader-native/-/chunked-blob-reader-native-3.37.0.tgz", + "integrity": "sha512-h9OYq6EvDrpb7SKod+Kow+d3aRNFVBYR1a8G8ahEDDQe3AtmA2Smyvni4kt/ABTiKvYdof2//Pq3BL/IUV9n9Q==", "dependencies": { - "@aws-sdk/util-base64-browser": "3.36.0", + "@aws-sdk/util-base64-browser": "3.37.0", "tslib": "^2.3.0" } }, "node_modules/@aws-sdk/client-s3": { - "version": "3.36.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.36.1.tgz", - "integrity": "sha512-7J2OlN4x/+f66S5Ux2qJ68Zd/l5iBLpKmpSfbnuRcpjtatHi9qFDFUAFhrezDqRcETt6Dsqf6cflhF9cO7R2FQ==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.37.0.tgz", + "integrity": "sha512-8qGu+AaOamNB4/PnrgFdmqEc7BfoTU676pp9xC2UJL/9rQvsYcs6prDON0Rg9raoO55XSKfgXyNyKNdGaW2Faw==", "dependencies": { "@aws-crypto/sha256-browser": "^1.0.0", "@aws-crypto/sha256-js": "^1.0.0", - "@aws-sdk/client-sts": "3.36.1", - "@aws-sdk/config-resolver": "3.36.0", - "@aws-sdk/credential-provider-node": "3.36.1", - "@aws-sdk/eventstream-serde-browser": "3.36.0", - "@aws-sdk/eventstream-serde-config-resolver": "3.36.0", - "@aws-sdk/eventstream-serde-node": "3.36.0", - "@aws-sdk/fetch-http-handler": "3.36.0", - "@aws-sdk/hash-blob-browser": "3.36.0", - "@aws-sdk/hash-node": "3.36.0", - "@aws-sdk/hash-stream-node": "3.36.0", - "@aws-sdk/invalid-dependency": "3.36.0", - "@aws-sdk/md5-js": "3.36.0", - "@aws-sdk/middleware-apply-body-checksum": "3.36.0", - "@aws-sdk/middleware-bucket-endpoint": "3.36.0", - "@aws-sdk/middleware-content-length": "3.36.0", - "@aws-sdk/middleware-expect-continue": "3.36.0", - "@aws-sdk/middleware-host-header": "3.36.0", - "@aws-sdk/middleware-location-constraint": "3.36.0", - "@aws-sdk/middleware-logger": "3.36.0", - "@aws-sdk/middleware-retry": "3.36.0", - "@aws-sdk/middleware-sdk-s3": "3.36.0", - "@aws-sdk/middleware-serde": "3.36.0", - "@aws-sdk/middleware-signing": "3.36.0", - "@aws-sdk/middleware-ssec": "3.36.0", - "@aws-sdk/middleware-stack": "3.36.0", - "@aws-sdk/middleware-user-agent": "3.36.0", - "@aws-sdk/node-config-provider": "3.36.0", - "@aws-sdk/node-http-handler": "3.36.0", - "@aws-sdk/protocol-http": "3.36.0", - "@aws-sdk/smithy-client": "3.36.0", - "@aws-sdk/types": "3.36.0", - "@aws-sdk/url-parser": "3.36.0", - "@aws-sdk/util-base64-browser": "3.36.0", - "@aws-sdk/util-base64-node": "3.36.0", - "@aws-sdk/util-body-length-browser": "3.36.0", - "@aws-sdk/util-body-length-node": "3.36.0", - "@aws-sdk/util-user-agent-browser": "3.36.0", - "@aws-sdk/util-user-agent-node": "3.36.0", - "@aws-sdk/util-utf8-browser": "3.36.0", - "@aws-sdk/util-utf8-node": "3.36.0", - "@aws-sdk/util-waiter": "3.36.0", - "@aws-sdk/xml-builder": "3.36.0", + "@aws-sdk/client-sts": "3.37.0", + "@aws-sdk/config-resolver": "3.37.0", + "@aws-sdk/credential-provider-node": "3.37.0", + "@aws-sdk/eventstream-serde-browser": "3.37.0", + "@aws-sdk/eventstream-serde-config-resolver": "3.37.0", + "@aws-sdk/eventstream-serde-node": "3.37.0", + "@aws-sdk/fetch-http-handler": "3.37.0", + "@aws-sdk/hash-blob-browser": "3.37.0", + "@aws-sdk/hash-node": "3.37.0", + "@aws-sdk/hash-stream-node": "3.37.0", + "@aws-sdk/invalid-dependency": "3.37.0", + "@aws-sdk/md5-js": "3.37.0", + "@aws-sdk/middleware-apply-body-checksum": "3.37.0", + "@aws-sdk/middleware-bucket-endpoint": "3.37.0", + "@aws-sdk/middleware-content-length": "3.37.0", + "@aws-sdk/middleware-expect-continue": "3.37.0", + "@aws-sdk/middleware-host-header": "3.37.0", + "@aws-sdk/middleware-location-constraint": "3.37.0", + "@aws-sdk/middleware-logger": "3.37.0", + "@aws-sdk/middleware-retry": "3.37.0", + "@aws-sdk/middleware-sdk-s3": "3.37.0", + "@aws-sdk/middleware-serde": "3.37.0", + "@aws-sdk/middleware-signing": "3.37.0", + "@aws-sdk/middleware-ssec": "3.37.0", + "@aws-sdk/middleware-stack": "3.37.0", + "@aws-sdk/middleware-user-agent": "3.37.0", + "@aws-sdk/node-config-provider": "3.37.0", + "@aws-sdk/node-http-handler": "3.37.0", + "@aws-sdk/protocol-http": "3.37.0", + "@aws-sdk/smithy-client": "3.37.0", + "@aws-sdk/types": "3.37.0", + "@aws-sdk/url-parser": "3.37.0", + "@aws-sdk/util-base64-browser": "3.37.0", + "@aws-sdk/util-base64-node": "3.37.0", + "@aws-sdk/util-body-length-browser": "3.37.0", + "@aws-sdk/util-body-length-node": "3.37.0", + "@aws-sdk/util-user-agent-browser": "3.37.0", + "@aws-sdk/util-user-agent-node": "3.37.0", + "@aws-sdk/util-utf8-browser": "3.37.0", + "@aws-sdk/util-utf8-node": "3.37.0", + "@aws-sdk/util-waiter": "3.37.0", + "@aws-sdk/xml-builder": "3.37.0", "entities": "2.2.0", "fast-xml-parser": "3.19.0", "tslib": "^2.3.0" @@ -217,37 +217,37 @@ } }, "node_modules/@aws-sdk/client-sso": { - "version": "3.36.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.36.1.tgz", - "integrity": "sha512-ZYhsmzv5aCoIvP+NqWr50jY8suA/lZkV5jRmwW6jbgEdxO2G32eV0I3jeNplZYhLx3PdfOWpTdnSsYEaiFD2iA==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.37.0.tgz", + "integrity": "sha512-nD3dbPQvgfB54U1zf0xqdrKimS5mbzYhEldsGq/6yDrE+PsU3p/+PK3IV1sy4K84jLaWkaHo8e/cJBtw28xfzQ==", "dependencies": { "@aws-crypto/sha256-browser": "^1.0.0", "@aws-crypto/sha256-js": "^1.0.0", - "@aws-sdk/config-resolver": "3.36.0", - "@aws-sdk/fetch-http-handler": "3.36.0", - "@aws-sdk/hash-node": "3.36.0", - "@aws-sdk/invalid-dependency": "3.36.0", - "@aws-sdk/middleware-content-length": "3.36.0", - "@aws-sdk/middleware-host-header": "3.36.0", - "@aws-sdk/middleware-logger": "3.36.0", - "@aws-sdk/middleware-retry": "3.36.0", - "@aws-sdk/middleware-serde": "3.36.0", - "@aws-sdk/middleware-stack": "3.36.0", - "@aws-sdk/middleware-user-agent": "3.36.0", - "@aws-sdk/node-config-provider": "3.36.0", - "@aws-sdk/node-http-handler": "3.36.0", - "@aws-sdk/protocol-http": "3.36.0", - "@aws-sdk/smithy-client": "3.36.0", - "@aws-sdk/types": "3.36.0", - "@aws-sdk/url-parser": "3.36.0", - "@aws-sdk/util-base64-browser": "3.36.0", - "@aws-sdk/util-base64-node": "3.36.0", - "@aws-sdk/util-body-length-browser": "3.36.0", - "@aws-sdk/util-body-length-node": "3.36.0", - "@aws-sdk/util-user-agent-browser": "3.36.0", - "@aws-sdk/util-user-agent-node": "3.36.0", - "@aws-sdk/util-utf8-browser": "3.36.0", - "@aws-sdk/util-utf8-node": "3.36.0", + "@aws-sdk/config-resolver": "3.37.0", + "@aws-sdk/fetch-http-handler": "3.37.0", + "@aws-sdk/hash-node": "3.37.0", + "@aws-sdk/invalid-dependency": "3.37.0", + "@aws-sdk/middleware-content-length": "3.37.0", + "@aws-sdk/middleware-host-header": "3.37.0", + "@aws-sdk/middleware-logger": "3.37.0", + "@aws-sdk/middleware-retry": "3.37.0", + "@aws-sdk/middleware-serde": "3.37.0", + "@aws-sdk/middleware-stack": "3.37.0", + "@aws-sdk/middleware-user-agent": "3.37.0", + "@aws-sdk/node-config-provider": "3.37.0", + "@aws-sdk/node-http-handler": "3.37.0", + "@aws-sdk/protocol-http": "3.37.0", + "@aws-sdk/smithy-client": "3.37.0", + "@aws-sdk/types": "3.37.0", + "@aws-sdk/url-parser": "3.37.0", + "@aws-sdk/util-base64-browser": "3.37.0", + "@aws-sdk/util-base64-node": "3.37.0", + "@aws-sdk/util-body-length-browser": "3.37.0", + "@aws-sdk/util-body-length-node": "3.37.0", + "@aws-sdk/util-user-agent-browser": "3.37.0", + "@aws-sdk/util-user-agent-node": "3.37.0", + "@aws-sdk/util-utf8-browser": "3.37.0", + "@aws-sdk/util-utf8-node": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -255,40 +255,40 @@ } }, "node_modules/@aws-sdk/client-sts": { - "version": "3.36.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.36.1.tgz", - "integrity": "sha512-Bvpr1dquJs6lRd2hu/BjfUz2nfP/ESXsxh0YR0H7HMq+RtW2Mr+IDIV6n+EK5te21VUmc47LVpPfdiYDWyRxLQ==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.37.0.tgz", + "integrity": "sha512-BiKf2YCW4rhn9UIBhZdzdDsCYWFYsWtRm71budsVaRmdY263g5wpCd4v0PCbyO69dbScllOrR8qrUuWW8YZ2IQ==", "dependencies": { "@aws-crypto/sha256-browser": "^1.0.0", "@aws-crypto/sha256-js": "^1.0.0", - "@aws-sdk/config-resolver": "3.36.0", - "@aws-sdk/credential-provider-node": "3.36.1", - "@aws-sdk/fetch-http-handler": "3.36.0", - "@aws-sdk/hash-node": "3.36.0", - "@aws-sdk/invalid-dependency": "3.36.0", - "@aws-sdk/middleware-content-length": "3.36.0", - "@aws-sdk/middleware-host-header": "3.36.0", - "@aws-sdk/middleware-logger": "3.36.0", - "@aws-sdk/middleware-retry": "3.36.0", - "@aws-sdk/middleware-sdk-sts": "3.36.0", - "@aws-sdk/middleware-serde": "3.36.0", - "@aws-sdk/middleware-signing": "3.36.0", - "@aws-sdk/middleware-stack": "3.36.0", - "@aws-sdk/middleware-user-agent": "3.36.0", - "@aws-sdk/node-config-provider": "3.36.0", - "@aws-sdk/node-http-handler": "3.36.0", - "@aws-sdk/protocol-http": "3.36.0", - "@aws-sdk/smithy-client": "3.36.0", - "@aws-sdk/types": "3.36.0", - "@aws-sdk/url-parser": "3.36.0", - "@aws-sdk/util-base64-browser": "3.36.0", - "@aws-sdk/util-base64-node": "3.36.0", - "@aws-sdk/util-body-length-browser": "3.36.0", - "@aws-sdk/util-body-length-node": "3.36.0", - "@aws-sdk/util-user-agent-browser": "3.36.0", - "@aws-sdk/util-user-agent-node": "3.36.0", - "@aws-sdk/util-utf8-browser": "3.36.0", - "@aws-sdk/util-utf8-node": "3.36.0", + "@aws-sdk/config-resolver": "3.37.0", + "@aws-sdk/credential-provider-node": "3.37.0", + "@aws-sdk/fetch-http-handler": "3.37.0", + "@aws-sdk/hash-node": "3.37.0", + "@aws-sdk/invalid-dependency": "3.37.0", + "@aws-sdk/middleware-content-length": "3.37.0", + "@aws-sdk/middleware-host-header": "3.37.0", + "@aws-sdk/middleware-logger": "3.37.0", + "@aws-sdk/middleware-retry": "3.37.0", + "@aws-sdk/middleware-sdk-sts": "3.37.0", + "@aws-sdk/middleware-serde": "3.37.0", + "@aws-sdk/middleware-signing": "3.37.0", + "@aws-sdk/middleware-stack": "3.37.0", + "@aws-sdk/middleware-user-agent": "3.37.0", + "@aws-sdk/node-config-provider": "3.37.0", + "@aws-sdk/node-http-handler": "3.37.0", + "@aws-sdk/protocol-http": "3.37.0", + "@aws-sdk/smithy-client": "3.37.0", + "@aws-sdk/types": "3.37.0", + "@aws-sdk/url-parser": "3.37.0", + "@aws-sdk/util-base64-browser": "3.37.0", + "@aws-sdk/util-base64-node": "3.37.0", + "@aws-sdk/util-body-length-browser": "3.37.0", + "@aws-sdk/util-body-length-node": "3.37.0", + "@aws-sdk/util-user-agent-browser": "3.37.0", + "@aws-sdk/util-user-agent-node": "3.37.0", + "@aws-sdk/util-utf8-browser": "3.37.0", + "@aws-sdk/util-utf8-node": "3.37.0", "entities": "2.2.0", "fast-xml-parser": "3.19.0", "tslib": "^2.3.0" @@ -298,12 +298,12 @@ } }, "node_modules/@aws-sdk/config-resolver": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.36.0.tgz", - "integrity": "sha512-4UxdPrlSo1RToelV72fMustttTSWKHJm3L054jJQUCiXDIIrUTAFhI5Z6El4wqYjg15QIZkIdcN0T9Vzd/z5Lw==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.37.0.tgz", + "integrity": "sha512-rvreWb5qOSb+AMeQuiK1Ljro3FMAXKbDdr804+S+3GhieaA3HJDzdUH/M8wznLRxUIpIni4yBRxD0WWqngFkCg==", "dependencies": { - "@aws-sdk/signature-v4": "3.36.0", - "@aws-sdk/types": "3.36.0", + "@aws-sdk/signature-v4": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -311,12 +311,12 @@ } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.36.0.tgz", - "integrity": "sha512-APQAgVmVx850lL8v2Sz/L4kA7a7ectqNZNxTBm6+H534uGsGYwNSmRcTQiXA77qCRts5ZaFQP3CHdxR8/Ixr6w==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.37.0.tgz", + "integrity": "sha512-vdxqtoaT9RgMEP8XlIOsnZQHFLGkdTyU+sL7mLuie/iuSD3jKamdwJUAGFQhFQVmdXBRL2D8dqYPaimvOnmp9A==", "dependencies": { - "@aws-sdk/property-provider": "3.36.0", - "@aws-sdk/types": "3.36.0", + "@aws-sdk/property-provider": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -324,14 +324,14 @@ } }, "node_modules/@aws-sdk/credential-provider-imds": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.36.0.tgz", - "integrity": "sha512-4hDzNZ60hgAenhAm1Sys25H2LispgtvSx+K6U/5kTJCvfqRwS13ZH9LTjlA4FoJC+zv4INSYN01oYZfhQpczUw==", - "dependencies": { - "@aws-sdk/node-config-provider": "3.36.0", - "@aws-sdk/property-provider": "3.36.0", - "@aws-sdk/types": "3.36.0", - "@aws-sdk/url-parser": "3.36.0", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.37.0.tgz", + "integrity": "sha512-DB2Wkm8dUsE1S59h9ImxgbyTV11jODtOF6gkDKtnrEzpVN75KpBtG1Rh+QUewBjV7VmxSJoROszfXzpsOY8mLQ==", + "dependencies": { + "@aws-sdk/node-config-provider": "3.37.0", + "@aws-sdk/property-provider": "3.37.0", + "@aws-sdk/types": "3.37.0", + "@aws-sdk/url-parser": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -339,18 +339,18 @@ } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.36.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.36.1.tgz", - "integrity": "sha512-DqApaEr6khLcPOiZBjQeZqQ8A4eI9DJrlmlP5Ov2p0ne5miXEddwXaqGAFryF+ylMdPOvfjJvza1TkRD7MxhwA==", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.36.0", - "@aws-sdk/credential-provider-imds": "3.36.0", - "@aws-sdk/credential-provider-sso": "3.36.1", - "@aws-sdk/credential-provider-web-identity": "3.36.0", - "@aws-sdk/property-provider": "3.36.0", - "@aws-sdk/shared-ini-file-loader": "3.36.0", - "@aws-sdk/types": "3.36.0", - "@aws-sdk/util-credentials": "3.36.0", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.37.0.tgz", + "integrity": "sha512-zmT3cPqTRG8Foo8GZlkSX533OI0IVyA1uDMff4osKcJTPGXv/Yv+91QqXRUPnCZ8vizlDHFR1c4Mwur0Mayyqg==", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.37.0", + "@aws-sdk/credential-provider-imds": "3.37.0", + "@aws-sdk/credential-provider-sso": "3.37.0", + "@aws-sdk/credential-provider-web-identity": "3.37.0", + "@aws-sdk/property-provider": "3.37.0", + "@aws-sdk/shared-ini-file-loader": "3.37.0", + "@aws-sdk/types": "3.37.0", + "@aws-sdk/util-credentials": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -358,20 +358,20 @@ } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.36.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.36.1.tgz", - "integrity": "sha512-SHBZOq+jOO/9Yqdrig5ATSLifjdNeVdi5/trCQj2ynwO6N9bAde0V1ni9TdBU/4kejYdtL+vIeEg8R29n1fMoA==", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.36.0", - "@aws-sdk/credential-provider-imds": "3.36.0", - "@aws-sdk/credential-provider-ini": "3.36.1", - "@aws-sdk/credential-provider-process": "3.36.0", - "@aws-sdk/credential-provider-sso": "3.36.1", - "@aws-sdk/credential-provider-web-identity": "3.36.0", - "@aws-sdk/property-provider": "3.36.0", - "@aws-sdk/shared-ini-file-loader": "3.36.0", - "@aws-sdk/types": "3.36.0", - "@aws-sdk/util-credentials": "3.36.0", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.37.0.tgz", + "integrity": "sha512-MhjpXIEMf6Scob+9emrtD0a9QH9q16hqUByT2Pr+7zTjmJZGy78uDCYAHnnlhcbE19ImCZtzfMlR/TpyLWokaA==", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.37.0", + "@aws-sdk/credential-provider-imds": "3.37.0", + "@aws-sdk/credential-provider-ini": "3.37.0", + "@aws-sdk/credential-provider-process": "3.37.0", + "@aws-sdk/credential-provider-sso": "3.37.0", + "@aws-sdk/credential-provider-web-identity": "3.37.0", + "@aws-sdk/property-provider": "3.37.0", + "@aws-sdk/shared-ini-file-loader": "3.37.0", + "@aws-sdk/types": "3.37.0", + "@aws-sdk/util-credentials": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -379,14 +379,14 @@ } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.36.0.tgz", - "integrity": "sha512-2ITkLv5mwbPzDCnPpZ7GpibQD78yiF2voU3knR5XWbnSdHosV+taTwnU+HMcJhWQPR9lTKHDf4/rEtUPw/imrQ==", - "dependencies": { - "@aws-sdk/property-provider": "3.36.0", - "@aws-sdk/shared-ini-file-loader": "3.36.0", - "@aws-sdk/types": "3.36.0", - "@aws-sdk/util-credentials": "3.36.0", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.37.0.tgz", + "integrity": "sha512-VOfWtUBbICb7xEHRFN7+fRA+move/3HT4mZt7C5KBXIaILT3b8hrK1mT/fRQ3dx9dF56PEGj/WkACOBjMzIcdg==", + "dependencies": { + "@aws-sdk/property-provider": "3.37.0", + "@aws-sdk/shared-ini-file-loader": "3.37.0", + "@aws-sdk/types": "3.37.0", + "@aws-sdk/util-credentials": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -394,15 +394,15 @@ } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.36.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.36.1.tgz", - "integrity": "sha512-uS6ZIwq0HbBGD7lhuUr/g2RIpQzEb2gT3e86r5Fesv5eLWTqzkhmXJ5jc7cHPuQK3Ojcu2S8atVcdeUGfdamgw==", - "dependencies": { - "@aws-sdk/client-sso": "3.36.1", - "@aws-sdk/property-provider": "3.36.0", - "@aws-sdk/shared-ini-file-loader": "3.36.0", - "@aws-sdk/types": "3.36.0", - "@aws-sdk/util-credentials": "3.36.0", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.37.0.tgz", + "integrity": "sha512-JLehEOR21zdcLiPqYmQKM8N2zOiqGD1qCSOS2IVNcG69hTLVzBQZURo3f2j65C78/YjUQ/YHYcfgx9SD57iShw==", + "dependencies": { + "@aws-sdk/client-sso": "3.37.0", + "@aws-sdk/property-provider": "3.37.0", + "@aws-sdk/shared-ini-file-loader": "3.37.0", + "@aws-sdk/types": "3.37.0", + "@aws-sdk/util-credentials": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -410,12 +410,12 @@ } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.36.0.tgz", - "integrity": "sha512-cC0WZmQhxmEw5VJud15tNDQggGFTxtz6FP5Yj46UtmNa+cTadtrruoe4PZBC1QqWgrfBpkI7W1quD3BZthiV/w==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.37.0.tgz", + "integrity": "sha512-GbMdGgLltyiX/0xrUn1VkyNepi05Yc/xrTw/kHjzQ14beE8BQdv51giSwjhGDoVZH6Ul+ouIJg9v6q8ufIEqlA==", "dependencies": { - "@aws-sdk/property-provider": "3.36.0", - "@aws-sdk/types": "3.36.0", + "@aws-sdk/property-provider": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -423,24 +423,24 @@ } }, "node_modules/@aws-sdk/eventstream-marshaller": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-marshaller/-/eventstream-marshaller-3.36.0.tgz", - "integrity": "sha512-6/WKo0LZkNG6YiJ8HoElWj0SndXCxib482cz16GmrBY1WsXsqqx/qxAfxhMMkBayyOWzVD0r/TOjHqdiwOT+/w==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-marshaller/-/eventstream-marshaller-3.37.0.tgz", + "integrity": "sha512-N9S3Z5zmco2byOYfbEQWAdl2bzDk8NZBqM9547PUUcpvy2bO+nbUtQLKcB1t6lpmt+hLu0TVIcBPdDHGFxdX0A==", "dependencies": { "@aws-crypto/crc32": "^1.0.0", - "@aws-sdk/types": "3.36.0", - "@aws-sdk/util-hex-encoding": "3.36.0", + "@aws-sdk/types": "3.37.0", + "@aws-sdk/util-hex-encoding": "3.37.0", "tslib": "^2.3.0" } }, "node_modules/@aws-sdk/eventstream-serde-browser": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-browser/-/eventstream-serde-browser-3.36.0.tgz", - "integrity": "sha512-W1DCmEcWkQa3kC23sg5Bb6rozafy83CwtXBiJ26CZFvtSnEsntrXz2+xHc4fITTu1D4rAD+J9w4hYZ72gfE5Tg==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-browser/-/eventstream-serde-browser-3.37.0.tgz", + "integrity": "sha512-uArfFTmnuNP9o17NaokoTMpIJVIuIcZQQ45IbQp2gGn1RrNQK5jj44qNcsxgC2VNndBV2hfmITAIhZLbnQffJQ==", "dependencies": { - "@aws-sdk/eventstream-marshaller": "3.36.0", - "@aws-sdk/eventstream-serde-universal": "3.36.0", - "@aws-sdk/types": "3.36.0", + "@aws-sdk/eventstream-marshaller": "3.37.0", + "@aws-sdk/eventstream-serde-universal": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -448,11 +448,11 @@ } }, "node_modules/@aws-sdk/eventstream-serde-config-resolver": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.36.0.tgz", - "integrity": "sha512-+s9hj1NhGFSYotCACSf5h1hebbBZyeCZKlxm9My3zE3Is1hG3I1v2PBw8al39kxHR0nDMGPlMjMzWL7F7byjdA==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.37.0.tgz", + "integrity": "sha512-cWaYDFNJxwfY+jD18St0DwKvkTZpAatTeh9qSNVOkcemSkdYcHGtj2rPijCctg2EPKSXVxdKow4Hoa36vqT2Jg==", "dependencies": { - "@aws-sdk/types": "3.36.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -460,13 +460,13 @@ } }, "node_modules/@aws-sdk/eventstream-serde-node": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-node/-/eventstream-serde-node-3.36.0.tgz", - "integrity": "sha512-x5VaVk6XEheDNSAp/VRqJOq/z/SWa0PKiMCSrFuUM9IznicQcG90AgUUDGA0gEp2GMBwR+LhVCz4soTZtAoADA==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-node/-/eventstream-serde-node-3.37.0.tgz", + "integrity": "sha512-pRvAjg6WQWNraqBklqsJfFaUojHDVZeHLLL+zJMuhmv7VhK1oJv4GAtlxbnpy9YH75qo1UTMALN0v/B3K7SugA==", "dependencies": { - "@aws-sdk/eventstream-marshaller": "3.36.0", - "@aws-sdk/eventstream-serde-universal": "3.36.0", - "@aws-sdk/types": "3.36.0", + "@aws-sdk/eventstream-marshaller": "3.37.0", + "@aws-sdk/eventstream-serde-universal": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -474,12 +474,12 @@ } }, "node_modules/@aws-sdk/eventstream-serde-universal": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-universal/-/eventstream-serde-universal-3.36.0.tgz", - "integrity": "sha512-suMcZFKH/Q2y3QCRpr0rSMYxvCoCKmv4JanuDqqjR5FuFQ1W+JfGCYPkJmMfwXzPzF9p+P/3NXFh3sflNtSYXQ==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-universal/-/eventstream-serde-universal-3.37.0.tgz", + "integrity": "sha512-e41oMHpi7OpW4ySXlE9/hJjcnhdDpGq/Yi0/uqwveXGi8UPzOEq8xGLDXXnABxnVTXw2QhYrWtAB89/cPClLEQ==", "dependencies": { - "@aws-sdk/eventstream-marshaller": "3.36.0", - "@aws-sdk/types": "3.36.0", + "@aws-sdk/eventstream-marshaller": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -487,35 +487,35 @@ } }, "node_modules/@aws-sdk/fetch-http-handler": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.36.0.tgz", - "integrity": "sha512-Xhd55V12+m8GTHdJRQVlxsdzq3k5rNUMK/5t4ehJwLoYdo3yc2tjOytgUoD9qDyGPkAV8nnP/uM03QEuovEk9w==", - "dependencies": { - "@aws-sdk/protocol-http": "3.36.0", - "@aws-sdk/querystring-builder": "3.36.0", - "@aws-sdk/types": "3.36.0", - "@aws-sdk/util-base64-browser": "3.36.0", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.37.0.tgz", + "integrity": "sha512-cFFBW6OJSevI4QtGii4tZLNjGiLJjK5+f7E+V4AMTFnD7ZN/Q6D/SlHYm6huwRkhedIDGdRvUZVgoF6IPfnylw==", + "dependencies": { + "@aws-sdk/protocol-http": "3.37.0", + "@aws-sdk/querystring-builder": "3.37.0", + "@aws-sdk/types": "3.37.0", + "@aws-sdk/util-base64-browser": "3.37.0", "tslib": "^2.3.0" } }, "node_modules/@aws-sdk/hash-blob-browser": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/hash-blob-browser/-/hash-blob-browser-3.36.0.tgz", - "integrity": "sha512-A+SmEvHPEf1+grMDfs8jtk9GVtG/Qs58VtPmsUq5yeUSme8Vor+MsOMfNjZ6QXD267HourMMSNNLBWzLNzTqjw==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/hash-blob-browser/-/hash-blob-browser-3.37.0.tgz", + "integrity": "sha512-CYoMRIz/Tha9gKFXsyEe8J7F9pBgn1CvkHw44AsCCpHsxQ+VhtTt7Gp7KkeIoZA8Hg7ptnkFNsOhWGospizo0g==", "dependencies": { - "@aws-sdk/chunked-blob-reader": "3.36.0", - "@aws-sdk/chunked-blob-reader-native": "3.36.0", - "@aws-sdk/types": "3.36.0", + "@aws-sdk/chunked-blob-reader": "3.37.0", + "@aws-sdk/chunked-blob-reader-native": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" } }, "node_modules/@aws-sdk/hash-node": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.36.0.tgz", - "integrity": "sha512-+SbX7eE+DRGeK6VfxKa4SanlT3syEn512XkwGvPe51r/ojeTgAZf/PzlKh+ketGMsbwDwoF2uQaQo/dos8PGjA==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.37.0.tgz", + "integrity": "sha512-131zDh7szkeTeQM8AViKENmJzy7OEZNmxiybwOVaFBYvA/z+wrrmPdkQV0hLPXgPK4sGhtTM0iqnrT+j//R7bg==", "dependencies": { - "@aws-sdk/types": "3.36.0", - "@aws-sdk/util-buffer-from": "3.36.0", + "@aws-sdk/types": "3.37.0", + "@aws-sdk/util-buffer-from": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -523,11 +523,11 @@ } }, "node_modules/@aws-sdk/hash-stream-node": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/hash-stream-node/-/hash-stream-node-3.36.0.tgz", - "integrity": "sha512-oNWxMyAxfQZ/pEGWA9AWNswdfnb3B7fE03kBOL6h4cO4G4OAFL6l3r3e9BH1m2CYc4zgn1ezXK3m4tP+K28PxQ==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/hash-stream-node/-/hash-stream-node-3.37.0.tgz", + "integrity": "sha512-WYR6hLiXQjYMlo20jsSy/vy2gVxqI6OibZ9Bupxs/+gUU/EtgJGux23YZ2xVaAMsoY53I46djRPhQotKHwjHSw==", "dependencies": { - "@aws-sdk/types": "3.36.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -535,18 +535,18 @@ } }, "node_modules/@aws-sdk/invalid-dependency": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.36.0.tgz", - "integrity": "sha512-ArRPRY/5QmxmmAoMX1ukNPyOFic7CskZwDwFxnlFOzrsSaVuLkkqTW4SLV+xjVMHX8oINggj9Ufzgh3gj2oUaA==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.37.0.tgz", + "integrity": "sha512-p1iF+hCRoCqN5YG4MRCgcw0AmfYugn2yljwepvaubY8RSR4OwH76x8SURdiNMoLbEDrMZUHXkan9copTpfH6Xg==", "dependencies": { - "@aws-sdk/types": "3.36.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" } }, "node_modules/@aws-sdk/is-array-buffer": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.36.0.tgz", - "integrity": "sha512-sglBYWZYeYmCxkVdol+W2HGazAwF6z3HvLETkDIKTzM80+xepCoEBGrJi1tWO+OMZxSJq1KV/u89fQuGouBeKQ==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.37.0.tgz", + "integrity": "sha512-XLjA/a6AuGnCvcJZLsMTy2jxF2upgGhqCCkoIJgLlzzXHSihur13KcmPvW/zcaGnCRj0SvKWXiJHl4vDlW75VQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -555,24 +555,24 @@ } }, "node_modules/@aws-sdk/md5-js": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/md5-js/-/md5-js-3.36.0.tgz", - "integrity": "sha512-C4xOIcqIa/rkzxaV6HwXxjchTHXcS8IfkpBcuEYB1DzDfuJEXo3ZfPJI6srGaU+7CzqYgd1eQ0bWk9A3jF0x+Q==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/md5-js/-/md5-js-3.37.0.tgz", + "integrity": "sha512-sOMqj2cGLsaInsKUJGxTDCHY1X/t8jA+Sm+zIVlkKpXPRcmLcLjl3NC58/ABpNBQy1Co1hPGFUq+dyTppjn03g==", "dependencies": { - "@aws-sdk/types": "3.36.0", - "@aws-sdk/util-utf8-browser": "3.36.0", - "@aws-sdk/util-utf8-node": "3.36.0", + "@aws-sdk/types": "3.37.0", + "@aws-sdk/util-utf8-browser": "3.37.0", + "@aws-sdk/util-utf8-node": "3.37.0", "tslib": "^2.3.0" } }, "node_modules/@aws-sdk/middleware-apply-body-checksum": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-apply-body-checksum/-/middleware-apply-body-checksum-3.36.0.tgz", - "integrity": "sha512-dqiUCM9QJu+CfTnFL8v+E0+/f+eheVfifWntdd/JyQC0TGOmikqDqkbUDtguag6EgLTr9i37nKLAWH/PewXIhA==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-apply-body-checksum/-/middleware-apply-body-checksum-3.37.0.tgz", + "integrity": "sha512-PhnELMBsCY2P6pIUJ9Q0wnPVZ+1blHHvbzsDvGuFEf+GTvfkVfrvjlJy8QXaoDo6WEl3kB59xy+PN2eKwatBoQ==", "dependencies": { - "@aws-sdk/is-array-buffer": "3.36.0", - "@aws-sdk/protocol-http": "3.36.0", - "@aws-sdk/types": "3.36.0", + "@aws-sdk/is-array-buffer": "3.37.0", + "@aws-sdk/protocol-http": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -580,13 +580,13 @@ } }, "node_modules/@aws-sdk/middleware-bucket-endpoint": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.36.0.tgz", - "integrity": "sha512-WgiZzlZMDp2HEvBe8xLsj2cG6OhtPuXb1L4tlU9XIUlM64Y3Phrxjo/aHI+wynmvF2/lqlcG4J+5NUpiH9AjYg==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.37.0.tgz", + "integrity": "sha512-0k32PGmeLv7+ih3X/5fqvQIlo8XuMrvXau3/bmMB/kJ8KKFZs8v82eK/GsPo8OLs6pZAYh1hBOG33dlQn5s4gw==", "dependencies": { - "@aws-sdk/protocol-http": "3.36.0", - "@aws-sdk/types": "3.36.0", - "@aws-sdk/util-arn-parser": "3.36.0", + "@aws-sdk/protocol-http": "3.37.0", + "@aws-sdk/types": "3.37.0", + "@aws-sdk/util-arn-parser": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -594,12 +594,12 @@ } }, "node_modules/@aws-sdk/middleware-content-length": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.36.0.tgz", - "integrity": "sha512-3+3QYgXnIukhdeP8UHXb7E8vv9d61sUAN4hbEi4/Tg6ZZOUoeVfWZrQCQNTNBV07qoATdeGE+EaPgTJEOmiDig==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.37.0.tgz", + "integrity": "sha512-rsl4Fpxx5PBbPYrFIgCa/QfE+9dnCuJ+P/fx/LPxDkJwNfFZd3lq4M3IuTLpZEU6Wq9NdTTkyT47fyDc8UUKeA==", "dependencies": { - "@aws-sdk/protocol-http": "3.36.0", - "@aws-sdk/types": "3.36.0", + "@aws-sdk/protocol-http": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -607,13 +607,13 @@ } }, "node_modules/@aws-sdk/middleware-expect-continue": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.36.0.tgz", - "integrity": "sha512-WOsWLqpJVe4InSZnh0SJmNuyFOb3tt+bGO9CywMzhydhE1EC504kn2EVHW4ukQUeSVyLZgh7O4Vxl+hQu8rw3w==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.37.0.tgz", + "integrity": "sha512-SVYqr4pxfEXfHprG7T7uiq4r4mkwSF/TlPz40n3ooD5GywmSzDxS0K2W9B0Gnh+pKfBvxfokwaPAOjLsYBwMGA==", "dependencies": { - "@aws-sdk/middleware-header-default": "3.36.0", - "@aws-sdk/protocol-http": "3.36.0", - "@aws-sdk/types": "3.36.0", + "@aws-sdk/middleware-header-default": "3.37.0", + "@aws-sdk/protocol-http": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -621,12 +621,12 @@ } }, "node_modules/@aws-sdk/middleware-header-default": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-header-default/-/middleware-header-default-3.36.0.tgz", - "integrity": "sha512-KzhxyHAn+byf09G49PwiqrwCTI+DA2peF8uxRA7EAPMyLZUcjL/qSYwxhIf3on5ul4IkysvECF8RGGB+paQwNg==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-header-default/-/middleware-header-default-3.37.0.tgz", + "integrity": "sha512-3obXyhYjPVOBhmV9dBbjU4N0wFI7UtzTdmXh/UrawVksDiC64U/BbDkNDniCELyC/qqn/8VoKdraC56fk0mwLQ==", "dependencies": { - "@aws-sdk/protocol-http": "3.36.0", - "@aws-sdk/types": "3.36.0", + "@aws-sdk/protocol-http": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -634,12 +634,12 @@ } }, "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.36.0.tgz", - "integrity": "sha512-hN9HSMAE6um17TygJaQjAlM5fFJRneXB794OK/hMngibotQ90FogvbEWOPBRBW+LaWWemr39xdcb51PHsUSlbg==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.37.0.tgz", + "integrity": "sha512-xSYWu6acxufcAILXki9/mVLDK5FyxnBlNOuogeItamtJcRWh0vgIbUQswISNJNuJMa4AWXduYfRaM7IOqbiKmw==", "dependencies": { - "@aws-sdk/protocol-http": "3.36.0", - "@aws-sdk/types": "3.36.0", + "@aws-sdk/protocol-http": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -647,11 +647,11 @@ } }, "node_modules/@aws-sdk/middleware-location-constraint": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.36.0.tgz", - "integrity": "sha512-lcKNfFLzDKLmsHOPv3fr0GqP02qimn7m69yDNTyDXKgzwkYPG36aIjCxX1Znaw1jZbAvtW6ErwEB+6BlN7Is1g==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.37.0.tgz", + "integrity": "sha512-ZK0qpwr3Ku4oYntmCGE8DUqNlMbICkoO6SP7Du2EqHfVSLbxAnNh9BKU4exgzgKt5HTKioYmKg3ykfnEAr1HCA==", "dependencies": { - "@aws-sdk/types": "3.36.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -659,11 +659,11 @@ } }, "node_modules/@aws-sdk/middleware-logger": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.36.0.tgz", - "integrity": "sha512-Cl5yx5xNbm8nL6iI0iRjEmtT/ImoxZzU3eWpACglweyxgeF5nRDUMp5v9WthuCPCOjxrw2I95JOj5JOP+/QIXA==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.37.0.tgz", + "integrity": "sha512-CPOj+YPzUJiusgYaodXYDWpfWQrAJVh3TNZVNOtIsmesjyYFqhn416IZ3QGa03xukYn4NQ1nBgCTNgmQazYS2Q==", "dependencies": { - "@aws-sdk/types": "3.36.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -671,13 +671,13 @@ } }, "node_modules/@aws-sdk/middleware-retry": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.36.0.tgz", - "integrity": "sha512-qFHFQ7KmwpD8eRCsbN4vaisidlRi/rzegns5/3PZU0wygQ2obTi2NnKJJr0dWSG6XqPhBmUv0YleIh9LQZimuQ==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.37.0.tgz", + "integrity": "sha512-+//D+79AtyZ9wsL5fRnt75P4eiU/UA2o530mA4gtsC2/ffHn9jAHPCCurC6mRNAfObvM2aiTK1pcVs0exX5LtA==", "dependencies": { - "@aws-sdk/protocol-http": "3.36.0", - "@aws-sdk/service-error-classification": "3.36.0", - "@aws-sdk/types": "3.36.0", + "@aws-sdk/protocol-http": "3.37.0", + "@aws-sdk/service-error-classification": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0", "uuid": "^8.3.2" }, @@ -686,14 +686,14 @@ } }, "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.36.0.tgz", - "integrity": "sha512-40477uh2rEBEU2L/Hhvih+/a9mFvCPRvz9kLOjYYmHaLkAVRBHWsMatNgNIs/8qsaWQXq7a1PBejDPDyXkLivw==", - "dependencies": { - "@aws-sdk/protocol-http": "3.36.0", - "@aws-sdk/signature-v4": "3.36.0", - "@aws-sdk/types": "3.36.0", - "@aws-sdk/util-arn-parser": "3.36.0", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.37.0.tgz", + "integrity": "sha512-NS8EISg8CcljdgFtFTz8aTFKsRqRUj59S2eXmMe2Hrqev5jORJBjw9aOOrJmr6B4LBJEKuKFBb04TiwotpjhFg==", + "dependencies": { + "@aws-sdk/protocol-http": "3.37.0", + "@aws-sdk/signature-v4": "3.37.0", + "@aws-sdk/types": "3.37.0", + "@aws-sdk/util-arn-parser": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -704,15 +704,15 @@ } }, "node_modules/@aws-sdk/middleware-sdk-sts": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.36.0.tgz", - "integrity": "sha512-W4b09/mfNqFNoxJxI0L2FjKEadhtYIBNkL8kh4fL40ax7zBL1Q7El9ZKueBezyN1EbYRui+tym39x9eEYZwTWw==", - "dependencies": { - "@aws-sdk/middleware-signing": "3.36.0", - "@aws-sdk/property-provider": "3.36.0", - "@aws-sdk/protocol-http": "3.36.0", - "@aws-sdk/signature-v4": "3.36.0", - "@aws-sdk/types": "3.36.0", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.37.0.tgz", + "integrity": "sha512-NfQ6NINwhBYgzkpzQdH3ULZ8CbOLmojcsd6qR7lLOy00rI4RT5KiI7GkoDuNMo49qz57cWFROlpfCoz+yY2yTg==", + "dependencies": { + "@aws-sdk/middleware-signing": "3.37.0", + "@aws-sdk/property-provider": "3.37.0", + "@aws-sdk/protocol-http": "3.37.0", + "@aws-sdk/signature-v4": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -720,11 +720,11 @@ } }, "node_modules/@aws-sdk/middleware-serde": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.36.0.tgz", - "integrity": "sha512-KuQIt3Cq+FC2UlQ/PMYQACnSK4v/fkV0dHqTjICuCi0Tft17HtkXU6rFLbIAbkM1wCp1OhyHFjHHDESvvjdmGA==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.37.0.tgz", + "integrity": "sha512-7ZdSF1T0k5y4ErB0BmSCZ/8J2WfRQFOmDPxkF6a5O18bEWu9RMhLD2JO5x1cZw2kHPOmJq3BOlfvCCJe8c42Rg==", "dependencies": { - "@aws-sdk/types": "3.36.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -732,14 +732,14 @@ } }, "node_modules/@aws-sdk/middleware-signing": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.36.0.tgz", - "integrity": "sha512-nx+IJE2YFxHF+ap4mOUSVP7WmXMgtHgC/QM97pcd03RtUhsNsu0rmv5HOmyl5MduP/NjGdRdF3Ng+MP2q2aTpg==", - "dependencies": { - "@aws-sdk/property-provider": "3.36.0", - "@aws-sdk/protocol-http": "3.36.0", - "@aws-sdk/signature-v4": "3.36.0", - "@aws-sdk/types": "3.36.0", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.37.0.tgz", + "integrity": "sha512-iV/xcNqTTidc07VcRf5+f4YgnUX0NS1ff7l5wbB80u7u9B8G1trjZOLruM/q+5SesNigQ3trA0P+jdo5LrIk8w==", + "dependencies": { + "@aws-sdk/property-provider": "3.37.0", + "@aws-sdk/protocol-http": "3.37.0", + "@aws-sdk/signature-v4": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -747,11 +747,11 @@ } }, "node_modules/@aws-sdk/middleware-ssec": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.36.0.tgz", - "integrity": "sha512-73P+q51tZRpW2Q+f0rbv3aWLulkvDsYixNnNjY9k10pKN30Nld1kIF0EYecJZCrR769GGeUGROXU4pvwu19EXQ==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.37.0.tgz", + "integrity": "sha512-IAVqvx+RG/r01V7awz5JdVqyVo9QTbKggXWpwCySZlQOLhctzl9bsi9+NFaha1RBMNRh7uyDICh3+qqMOWL62g==", "dependencies": { - "@aws-sdk/types": "3.36.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -759,9 +759,9 @@ } }, "node_modules/@aws-sdk/middleware-stack": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.36.0.tgz", - "integrity": "sha512-9BWJ25nGQET23CiukmdGw0njDhl+uTUZ8CwO4VQwklmK9x8Y+NFE7k2RCp5m3GxEvn07oJ3FlWK5WE4LLmu4Pw==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.37.0.tgz", + "integrity": "sha512-rsh7IlFZhdmHnT0BhxLe2cPK+6tXBDixN7vhYMRmluRis8OvTy10CvfOxN+JwkVCjyGs0LW5QupFCi6e00EHng==", "dependencies": { "tslib": "^2.3.0" }, @@ -770,12 +770,12 @@ } }, "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.36.0.tgz", - "integrity": "sha512-n2Poao1alyrKu8a5vcOW9hFIRHrnAlKtUvlItQWSVxgVHQhrYkBJycRW/qh1BKLxt1S+EUPTMTVS4i0XGYOqSw==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.37.0.tgz", + "integrity": "sha512-jkl9u1FyQyffL9JFyCjOCwjbOJuILUWubcGdfoW3qVF4+d5Wnc9X1DVIW2dn52RYNL5pEYPbqxm2EYOGWuG1Iw==", "dependencies": { - "@aws-sdk/protocol-http": "3.36.0", - "@aws-sdk/types": "3.36.0", + "@aws-sdk/protocol-http": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -783,13 +783,13 @@ } }, "node_modules/@aws-sdk/node-config-provider": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.36.0.tgz", - "integrity": "sha512-tn1ToARM3iPXh1BZxzv5OgqBvXIAZaWV+sZ/Ns1GY7r5oy9JA2Z3Q/VG49POrY2gL5q1QaGAs/5WiBc6TEEE6Q==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.37.0.tgz", + "integrity": "sha512-1ZCX3BGrFO0WEcI9tlDIGqrlWzGM3jbXkWGAyzXgXXFt7dxZ358z+aexY5uJfZj48NP4NUEXLXzbrjrZXn4TwA==", "dependencies": { - "@aws-sdk/property-provider": "3.36.0", - "@aws-sdk/shared-ini-file-loader": "3.36.0", - "@aws-sdk/types": "3.36.0", + "@aws-sdk/property-provider": "3.37.0", + "@aws-sdk/shared-ini-file-loader": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -797,14 +797,14 @@ } }, "node_modules/@aws-sdk/node-http-handler": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.36.0.tgz", - "integrity": "sha512-hfmiEw498YNS/maPVLqQaXvfE6zygGgCsQcD/r8AHdI3vuoNk0fMr6Ys9EhTr9cjBATRDej3Yq7PMKMylsnaiw==", - "dependencies": { - "@aws-sdk/abort-controller": "3.36.0", - "@aws-sdk/protocol-http": "3.36.0", - "@aws-sdk/querystring-builder": "3.36.0", - "@aws-sdk/types": "3.36.0", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.37.0.tgz", + "integrity": "sha512-fknvIzKyJ4d8AipCMQqQPgX2mUf5ePJA2QFjpEfCB20GVjE5eq1tC9wMR+AjXO9ZWuoPBvLkEsB4Xg6qBf430A==", + "dependencies": { + "@aws-sdk/abort-controller": "3.37.0", + "@aws-sdk/protocol-http": "3.37.0", + "@aws-sdk/querystring-builder": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -812,11 +812,11 @@ } }, "node_modules/@aws-sdk/property-provider": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.36.0.tgz", - "integrity": "sha512-/+XvcAClcpaV0ufcC7r7mYq7MWRk9gsSWWw2nlb8O4Yj1r7bQyg3WsR4gCd9bxL8uUJn4xCD5nvVp3pLzgOsRg==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.37.0.tgz", + "integrity": "sha512-puXV4MIj+n9Pr4KbwpOz6+nK7gmJAgAOZW/yKXxyWH4fTcrCVe9xuo5kqaiI1gb5ojaNt2GuISBFR7bVLumh9Q==", "dependencies": { - "@aws-sdk/types": "3.36.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -824,11 +824,11 @@ } }, "node_modules/@aws-sdk/protocol-http": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.36.0.tgz", - "integrity": "sha512-8uSVHoboZh9oNG4oCf0sVmZDB5HDY0CiWcX22ELqvYpia96gIp/n1AHru7aEbD++uHB3w+VPbHABOXDD6dxqmg==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.37.0.tgz", + "integrity": "sha512-mx/KBlwpgTK1v4n1MgYaz5OTVH+PwomhIFYvciM5ZoVbkfhMvIS2haaP5/FrOl/BxLSzf4W1M031KAngdDcndw==", "dependencies": { - "@aws-sdk/types": "3.36.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -836,12 +836,12 @@ } }, "node_modules/@aws-sdk/querystring-builder": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.36.0.tgz", - "integrity": "sha512-l+ngIoBDKoarU8Pdi2InIKGhzl7/pnAMmAE8HMC9EIFDPwpdyOVd8HQFT8+Ot3nlvHiZC8OzpRTTwS0sXIhLEQ==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.37.0.tgz", + "integrity": "sha512-3M32yk6FjneO3psCGb8uLwM1pPUz6IytE0iQyLoBSD7uFnUxBbPdp8JlLzh0AgMZ97TIW/SqF0NHFYR3Nt6ZMQ==", "dependencies": { - "@aws-sdk/types": "3.36.0", - "@aws-sdk/util-uri-escape": "3.36.0", + "@aws-sdk/types": "3.37.0", + "@aws-sdk/util-uri-escape": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -849,11 +849,11 @@ } }, "node_modules/@aws-sdk/querystring-parser": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.36.0.tgz", - "integrity": "sha512-ZRqJaWnuZLx7c0iTrUr1Se4rEuAlrS3+gzNaraheJasUCVTSXGqHYSGuV8y83/hKnwMra4r9ITd8SzTHuHPTzA==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.37.0.tgz", + "integrity": "sha512-jdijX1bdk/L7JVfN4mrrnNwcq4Hkcb0hNq0z2YR7KO+jc+4OJxVcV79uVDk6aqb94wVkIq/wntwiisPRV5SRlQ==", "dependencies": { - "@aws-sdk/types": "3.36.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -861,17 +861,17 @@ } }, "node_modules/@aws-sdk/service-error-classification": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.36.0.tgz", - "integrity": "sha512-y3m/Gc1kSZBX1Dvg3lnu3TxteW2WqjFGc5Y1XBqjOdmQ5JmE1GZz+s9inGfP6N/5v56qQfhTeVCABh1Anq+jEw==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.37.0.tgz", + "integrity": "sha512-HFYr+kfOIXcFH2Y9KgiJF92kDle2cml0KudCyK4Mhy8j54IqQyKlnB7MlO+LtmUubG8WVyQO0rC1ZNh5uNSn3w==", "engines": { "node": ">= 10.0.0" } }, "node_modules/@aws-sdk/shared-ini-file-loader": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.36.0.tgz", - "integrity": "sha512-4Xb40+nmfT+qjmHfC17bC96bTME01k+axhSX1GkPH6PlrZrR3ICuq59JLn7SJprw8x7/HHa1HmYpCR1tbkXjNw==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.37.0.tgz", + "integrity": "sha512-+vRBSlfa48R9KL7DpQt3dsu5/+5atjRgoCISblWo3SLpjrx41pKcjKneo7a1u0aP1Xc2oG2TfIyqTWZuOXsmEQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -880,14 +880,14 @@ } }, "node_modules/@aws-sdk/signature-v4": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.36.0.tgz", - "integrity": "sha512-R17pRSxUYai0rBDAQPMXp/9kC1BewciJlkfP2Lztvp09KqEOqkHTzS3/vHm5W2lStQi+LThAjtG7vADSJIJ9Vg==", - "dependencies": { - "@aws-sdk/is-array-buffer": "3.36.0", - "@aws-sdk/types": "3.36.0", - "@aws-sdk/util-hex-encoding": "3.36.0", - "@aws-sdk/util-uri-escape": "3.36.0", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.37.0.tgz", + "integrity": "sha512-m0TTIBd/Mc/LJysusrXPg5S6U15w3QOtS+FQWLGcJxmLxkrSq65+wEyMOepcbYVT524XrvxMNxjhjdEI6TRnYg==", + "dependencies": { + "@aws-sdk/is-array-buffer": "3.37.0", + "@aws-sdk/types": "3.37.0", + "@aws-sdk/util-hex-encoding": "3.37.0", + "@aws-sdk/util-uri-escape": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -895,16 +895,16 @@ } }, "node_modules/@aws-sdk/signature-v4-crt": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-crt/-/signature-v4-crt-3.36.0.tgz", - "integrity": "sha512-pAM7Sw1VM45yY81F6pvLouK87eczP30dqNTc4aP+hWcR6xlCrYuUsQFODY3dyWBrFTxz04pPAPqt9c/CDaWg9w==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-crt/-/signature-v4-crt-3.37.0.tgz", + "integrity": "sha512-1TMoANahjKtpnLVhhA0/zoZv6UiVLSQheK7k4wo8a1e5FELW21lt/0QagNxje6TZmVemgOdExpsrUM5vY/Wn3Q==", "peer": true, "dependencies": { - "@aws-sdk/is-array-buffer": "3.36.0", - "@aws-sdk/querystring-parser": "3.36.0", - "@aws-sdk/signature-v4": "3.36.0", - "@aws-sdk/util-hex-encoding": "3.36.0", - "@aws-sdk/util-uri-escape": "3.36.0", + "@aws-sdk/is-array-buffer": "3.37.0", + "@aws-sdk/querystring-parser": "3.37.0", + "@aws-sdk/signature-v4": "3.37.0", + "@aws-sdk/util-hex-encoding": "3.37.0", + "@aws-sdk/util-uri-escape": "3.37.0", "aws-crt": "^1.9.7", "tslib": "^2.3.0" }, @@ -913,12 +913,12 @@ } }, "node_modules/@aws-sdk/smithy-client": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.36.0.tgz", - "integrity": "sha512-uYX4M7pNj+Vf4JuVOL0p+tAIKNHg2i7GgNyVlcELdaLFMIFfViJ2cMF72KqHA5xssnc9BHX/pR/0LS5PhBCYRg==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.37.0.tgz", + "integrity": "sha512-yODcUbVN+nyWm57M8zJdkSoaAKJZJg2PIc38j1PtT5Qts+yjiaOzwI8VWMbBf1RhC/Iizb0rt7UDnZgxCevbyQ==", "dependencies": { - "@aws-sdk/middleware-stack": "3.36.0", - "@aws-sdk/types": "3.36.0", + "@aws-sdk/middleware-stack": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -926,27 +926,27 @@ } }, "node_modules/@aws-sdk/types": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.36.0.tgz", - "integrity": "sha512-OeaTDZqo4OfGahgsZF2viOWxSSNColEUf8RbKAWNlke3nkMu3JW8kkft1Qte6jvoQxZ3jOQWi33Z4LUxix/V7A==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.37.0.tgz", + "integrity": "sha512-KwHB06E1uxof5ijfcQXYidyihoCRMnHEFvWCy/VlL+1S54FTlMZ27JOZzQhLiw8NqeNfO33aqpMkxR60TwUZzg==", "engines": { "node": ">= 10.0.0" } }, "node_modules/@aws-sdk/url-parser": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.36.0.tgz", - "integrity": "sha512-3l0iY9lx7dqEEyeKEB5IV92nFSYFAqwnD9cvJ6qmv5bheAgoizykugRMiT5U5DFGh5WYOHAh0Zkedqq87vJZOA==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.37.0.tgz", + "integrity": "sha512-X87ZQz/viHMjVVX20unU7adsRO+JUrRWgyWUmCLOQpsLM7bdjES2sR3yEdFKBmgvC9hRQraDtTlJVwL5nLDE0Q==", "dependencies": { - "@aws-sdk/querystring-parser": "3.36.0", - "@aws-sdk/types": "3.36.0", + "@aws-sdk/querystring-parser": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" } }, "node_modules/@aws-sdk/util-arn-parser": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.36.0.tgz", - "integrity": "sha512-C1H1uiJEkXiE7636kjdiK/vBZc1IgRf3dmwqM7slS0JN9xb81tmFFmS0GPSCS5ghkZIbfg6G48bk9MYmymBn4g==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.37.0.tgz", + "integrity": "sha512-njIYn8gzm7Ms17A2oEu0vN/0GJpgq7cNFFtzBrM1cPtrc1jhMRJx5hzS7uX5h6ll8BM92bA3y00evRZFHxQPVQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -955,19 +955,19 @@ } }, "node_modules/@aws-sdk/util-base64-browser": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64-browser/-/util-base64-browser-3.36.0.tgz", - "integrity": "sha512-N8Ej1C5rea8QSoU8Aomh9hpcGA1p/lEw6jIQQJ6yAKOUPk3y/XIhmJLj7nkIbL1LoRmS5seNqlaFilEBDDUxQw==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64-browser/-/util-base64-browser-3.37.0.tgz", + "integrity": "sha512-o4s/rHVm5k8eC/T7grJQINyYA/mKfDmEWKMA9wk5iBroXlI2rUm7x649TBk5hzoddufk/mffEeNz/1wM7yTmlg==", "dependencies": { "tslib": "^2.3.0" } }, "node_modules/@aws-sdk/util-base64-node": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64-node/-/util-base64-node-3.36.0.tgz", - "integrity": "sha512-Lum6NUvfJuzCikeWjwBBKZR8cveVzwpGM6kCYEtLzFrc41vCf1bdUFwG05v6J0cAyUz9ULjJ/5P/RV27ddqTfQ==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64-node/-/util-base64-node-3.37.0.tgz", + "integrity": "sha512-1UPxly1GPrGZtlIWvbNCDIAund4Oyp8cFi9neA43TeNACvrmEQu/nG01pDbOoo0ENoVSVJrNAVBeqKEpqjH2GA==", "dependencies": { - "@aws-sdk/util-buffer-from": "3.36.0", + "@aws-sdk/util-buffer-from": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -975,17 +975,17 @@ } }, "node_modules/@aws-sdk/util-body-length-browser": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.36.0.tgz", - "integrity": "sha512-6iSpqACjRVaG0J//zfPCcGb4Dy+7a/SQIWPg+dvDt3kV36oUYUpjE5UurlniONL4tntXs28WsiGJkJ8SQ+wefA==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.37.0.tgz", + "integrity": "sha512-tClmH1uYelqWT43xxmnOsVFbCQJiIwizp6y4E109G2LIof07inxrO0L8nbwBpjhugVplx6NZr9IaqTFqbdM1gA==", "dependencies": { "tslib": "^2.3.0" } }, "node_modules/@aws-sdk/util-body-length-node": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.36.0.tgz", - "integrity": "sha512-19Qnr3AyInJes3LSlcf21Gw+e872ZeXHz59it91UvHX0bDqteJ7hjKG9g3PwA4z68JDTh+cL0zsUGlXQbaCv8w==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.37.0.tgz", + "integrity": "sha512-aY3mXdbEajruRi9CHgq/heM89R+Gectj/Xrs1naewmamaN8NJrvjDm3s+cw//lqqSOW903LYHXDgm7wvCzUnFA==", "dependencies": { "tslib": "^2.3.0" }, @@ -994,11 +994,11 @@ } }, "node_modules/@aws-sdk/util-buffer-from": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.36.0.tgz", - "integrity": "sha512-5HUsLHUQWOt87HeM6BO42BW1tCsD2UyJPdub7ME/r6NjpUNHsDHQP1j4MrqKFh7RbPUkdIF5s4/0VK5yoHQC4A==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.37.0.tgz", + "integrity": "sha512-aa3SBwjLwImuJoE4+hxDIWQ9REz3UFb3p7KFPe9qopdXb/yB12RTcbrXVb4whUux4i4mO6KRij0ZNjFZrjrKPg==", "dependencies": { - "@aws-sdk/is-array-buffer": "3.36.0", + "@aws-sdk/is-array-buffer": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -1006,11 +1006,11 @@ } }, "node_modules/@aws-sdk/util-credentials": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-credentials/-/util-credentials-3.36.0.tgz", - "integrity": "sha512-5+XZL8ARDZGGhVDoBZNzS2Y6EJLGtsMkJbihZSMrHybljrLcYV0aM+Szqeotic9Zces5G4u5ZrN53IkXlLiY5Q==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-credentials/-/util-credentials-3.37.0.tgz", + "integrity": "sha512-zcLhSZDKgBLhUjSU5HoQpuQiP3v8oE86NmV/tiZVPEaO6YVULEAB2Cfj1hpM/b/JXWzjSHfT06KXT7QUODKS+A==", "dependencies": { - "@aws-sdk/shared-ini-file-loader": "3.36.0", + "@aws-sdk/shared-ini-file-loader": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -1018,9 +1018,9 @@ } }, "node_modules/@aws-sdk/util-hex-encoding": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.36.0.tgz", - "integrity": "sha512-idqvxxGpitTt2UryXk+oy5dFHNVER1GOzexmNZG2JDtqJRfcJyx+gy+Q/HpQFxty1q3/5jxoYQW3KIpsqx7djw==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.37.0.tgz", + "integrity": "sha512-tn5UpfaeM+rZWqynoNqB8lwtcAXil5YYO3HLGH9himpWAdft/2Z7LK6bsYDpctaAI1WHgMDcL0bw3Id04ZUbhA==", "dependencies": { "tslib": "^2.3.0" }, @@ -1029,9 +1029,9 @@ } }, "node_modules/@aws-sdk/util-locate-window": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.36.0.tgz", - "integrity": "sha512-w5k3siBOGy7bAfZG/p0WIHpedHNb4OQ0wUSDNvd6Kzn4dkqHPTWoA1NrCEuFk9Gwkrr1yNKxgVlo0SCtgznxPw==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.37.0.tgz", + "integrity": "sha512-NvDCfOhLLVHp27oGUUs8EVirhz91aX5gdxGS7J/sh5PF0cNN8rwaR1vSLR7BxPmJHMO7NH7i9EwiELfLfYcq6g==", "dependencies": { "tslib": "^2.3.0" }, @@ -1040,9 +1040,9 @@ } }, "node_modules/@aws-sdk/util-uri-escape": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.36.0.tgz", - "integrity": "sha512-2JW6lj5OUhoWxMCFpCS/ADXrzuEkjx/djjJuEJ3aFcHUH0uBUJGYtM7Kz5Vot5PcE/KBVe+fsi3wczoFpK+iag==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.37.0.tgz", + "integrity": "sha512-8pKf4YJTELP5lm/CEgYw2atyJBB1RWWqFa0sZx6YJmTlOtLF5G6raUdAi4iDa2hldGt2B6IAdIIyuusT8zeU8Q==", "dependencies": { "tslib": "^2.3.0" }, @@ -1051,22 +1051,22 @@ } }, "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.36.0.tgz", - "integrity": "sha512-pCHWQF85Aexrdtgd/hVGp5nHkqVt4+Ypse0J6Q2hs4pmu70HydnDDPRCimTquTsV3ni1M7mJGBMiTn7/qcjqyQ==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.37.0.tgz", + "integrity": "sha512-GP8qfAjYMGyVCzTw8pVVtGWo3bEbDJmOiDAPXNF4c2ErTwvNmEK1LgEm+12lhVD323iqSCDgn8SDCsOfqtYm0Q==", "dependencies": { - "@aws-sdk/types": "3.36.0", + "@aws-sdk/types": "3.37.0", "bowser": "^2.11.0", "tslib": "^2.3.0" } }, "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.36.0.tgz", - "integrity": "sha512-4OXZf2IYNBDkNPvptAQVztjF2Ov9s8vx1kAoHQx9LuKXV8FrhygU9DcMFlFkAXOeUkGDtWvok0n6horQ5/KNJA==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.37.0.tgz", + "integrity": "sha512-VbN4iaQCfBRYAIDtuv/hyOaNWa8NZkjfPigkPpserN0WDbBcu3k2uDuGA9fuz2SkmFsbcG1TyR44e02BNYks0w==", "dependencies": { - "@aws-sdk/node-config-provider": "3.36.0", - "@aws-sdk/types": "3.36.0", + "@aws-sdk/node-config-provider": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -1074,19 +1074,19 @@ } }, "node_modules/@aws-sdk/util-utf8-browser": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.36.0.tgz", - "integrity": "sha512-xVUtGIemnh2gD+1s6DZzdGNlgVxHXKlR/sT4G1afysifKrbyXMbh2Z3Ez+BgunWXQRbVXFmNQXHKHYuebMDe5w==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.37.0.tgz", + "integrity": "sha512-tuiOxzfqet1kKGYzlgpMGfhr64AHJnYsFx2jZiH/O6Yq8XQg43ryjQlbJlim/K/XHGNzY0R+nabeJg34q3Ua1g==", "dependencies": { "tslib": "^2.3.0" } }, "node_modules/@aws-sdk/util-utf8-node": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-node/-/util-utf8-node-3.36.0.tgz", - "integrity": "sha512-Yu0I2QDAzLShC9WVHyzRgPDgbwkDHK2lthtIMpRJ3s5kedUzXxbNqFKekrUihfODJMJGnrgDQp/rUq7hWjGciA==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-node/-/util-utf8-node-3.37.0.tgz", + "integrity": "sha512-fUAgd7UTCULL36j9/vnXHxVhxvswnq23mYgTCIT8NQ7wHN30q2a89ym1e9DwGeQkJEBOkOcKLn6nsMsN7YQMDQ==", "dependencies": { - "@aws-sdk/util-buffer-from": "3.36.0", + "@aws-sdk/util-buffer-from": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -1094,12 +1094,12 @@ } }, "node_modules/@aws-sdk/util-waiter": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-waiter/-/util-waiter-3.36.0.tgz", - "integrity": "sha512-lHBBg6n29yphB3J+UQkZb93FjOFxVSEs1jqtk77lCYp3Ugz0LwiSDHgQePMomwSP3HMR6Iqb3pAlkTivTW45sg==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-waiter/-/util-waiter-3.37.0.tgz", + "integrity": "sha512-toH5SolyKdTYH4aYME1MIofp5/v1kdfd9u0vugRGL2/ET2dNgx4VpdwIeyY8mIVsNhGw1PhWcc9CMq3fjedI+g==", "dependencies": { - "@aws-sdk/abort-controller": "3.36.0", - "@aws-sdk/types": "3.36.0", + "@aws-sdk/abort-controller": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" }, "engines": { @@ -1107,9 +1107,9 @@ } }, "node_modules/@aws-sdk/xml-builder": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.36.0.tgz", - "integrity": "sha512-3YYLKjR/ow7WQB1gJZRO7gWmNPi+fzPE8sPIYVwLCmqP03Z6UnaFIPv373ZW/HQUunRTo/AeSdnyrFAeK3XO7g==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.37.0.tgz", + "integrity": "sha512-Vf0f4ZQ+IBo/l9wUaTOXLqqQO9b/Ll5yPbg+EhHx8zlHbTHIm89ettkVCGyT/taGagC1X+ZeTK9maX6ymEOBow==", "dependencies": { "tslib": "^2.3.0" }, @@ -2752,9 +2752,9 @@ } }, "node_modules/@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", @@ -2915,9 +2915,9 @@ "integrity": "sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw==" }, "node_modules/@ipld/car": { - "version": "3.1.18", - "resolved": "https://registry.npmjs.org/@ipld/car/-/car-3.1.18.tgz", - "integrity": "sha512-THOv4aYVojfcFNnhMvS1acRTMGIshnBeoLqms1a+jjKx6Z+3CM/y8BhJeLq4jNBKijxHApus7+ikHkC5UbfEHA==", + "version": "3.1.19", + "resolved": "https://registry.npmjs.org/@ipld/car/-/car-3.1.19.tgz", + "integrity": "sha512-uHQYA9f/WV2xTNITZf451kgFM66JGZW0xMRn/ckkSlHPFpAqta2QSuViQ8ElnnCeMAm340/byCbzxYfPv4kycg==", "dependencies": { "@ipld/dag-cbor": "^6.0.0", "@types/varint": "^6.0.0", @@ -2926,18 +2926,18 @@ } }, "node_modules/@ipld/dag-cbor": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/@ipld/dag-cbor/-/dag-cbor-6.0.11.tgz", - "integrity": "sha512-W9hpFAFS7+n0orqlq7w06ADeORealpTJ92jQZBZDywYMjOlcVfVKKKkVgCq/pUbwlSRqip+9kgzEvdfd5N3zcQ==", + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@ipld/dag-cbor/-/dag-cbor-6.0.12.tgz", + "integrity": "sha512-CZRiXFEMtbEoZq5x2vR6xXtsycbYml2C+4eKFxzwyFjLsAGVbk6MZFnMtiO/dphz+ZVLPwnHU5hOL5uJ+Lf7yw==", "dependencies": { "cborg": "^1.2.1", "multiformats": "^9.0.0" } }, "node_modules/@ipld/dag-json": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@ipld/dag-json/-/dag-json-8.0.1.tgz", - "integrity": "sha512-+vl+mCeHWOih269/+E2oQ3vWnDSt9K5PKvnwrmwzgFJw3u/UHwbi4RwdYpvLupvDIkKNnGGURQYdxh35DlHsSw==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@ipld/dag-json/-/dag-json-8.0.2.tgz", + "integrity": "sha512-G4EzQKwAjmYeQwIWwYCauFMUWxI2CCPJzxdfU/hhy9hqLhRB3GfQsqSoJKDpCtCmGmBDUpBXtGnVrYH72Dqq3w==", "dev": true, "dependencies": { "cborg": "^1.4.0", @@ -2945,9 +2945,9 @@ } }, "node_modules/@ipld/dag-pb": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/@ipld/dag-pb/-/dag-pb-2.1.11.tgz", - "integrity": "sha512-M4PMBlKErEffK/APnmQ/78M+YouQ7L5w2Llpl9U6MgDXtfPisD5zQHxxDE8yYW1Ume45+suB1tBPF0uSdNQQEg==", + "version": "2.1.12", + "resolved": "https://registry.npmjs.org/@ipld/dag-pb/-/dag-pb-2.1.12.tgz", + "integrity": "sha512-fNAtr4RnPU2N+QBEfPxwry2zOe6t10s1KdyisTL7i/Ct3m8p2lDfg4Zs3EmgSBXvXVrMJ0cIsxK1D/J4b/mwvw==", "dependencies": { "multiformats": "^9.0.0" } @@ -3113,9 +3113,9 @@ "integrity": "sha512-CvVUPTF9tSLNFA4JhcAFjheiqWyVp9r9ooy/AheK+0rWRZCxE5QCwc81d2FduDTqzEJZeUV9+9F9R0AplhnX7w==" }, "node_modules/@multiformats/murmur3": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@multiformats/murmur3/-/murmur3-1.0.4.tgz", - "integrity": "sha512-skwYQeIVDxUhqJngCjzC9ZV3cSYkrHsyq2T4DDiMR2QAPkyv6JsKMCXj7FEhrgDqx5fB4Bkxv6+VLVNlDBbzJQ==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@multiformats/murmur3/-/murmur3-1.0.5.tgz", + "integrity": "sha512-1AUn8G4C5DgVJQg/KDzCv3/gsao6W3yt78Q+mgXDQ3JjbcHbu7ZgrMfSYj5bc2Wfz05MiQSZRcwGIyiiTfECPQ==", "dependencies": { "multiformats": "^9.4.1", "murmurhash3js-revisited": "^3.0.0" @@ -3427,9 +3427,9 @@ } }, "node_modules/@rollup/plugin-node-resolve": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.5.tgz", - "integrity": "sha512-mVaw6uxtvuGx/XCI4qBQXsDZJUfyx5vp39iE0J/7Hd6wDhEbjHr6aES7Nr9yWbuE0BY+oKp6N7Bq6jX5NCGNmQ==", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.6.tgz", + "integrity": "sha512-sFsPDMPd4gMqnh2gS0uIxELnoRUp5kBl5knxD2EO0778G1oOJv4G1vyT2cpWz75OU2jDVcXhjVUuTAczGyFNKA==", "dev": true, "dependencies": { "@rollup/pluginutils": "^3.1.0", @@ -3470,9 +3470,9 @@ "dev": true }, "node_modules/@sentry/cli": { - "version": "1.69.1", - "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-1.69.1.tgz", - "integrity": "sha512-HxO7vjqSvWfc9L5A/ib3UB1mXKFNiORY9BXwtYTo38jv4ROrKDFz36IzHsD6nPFuv8+6iDVyNlEujK/n9NvRyw==", + "version": "1.70.1", + "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-1.70.1.tgz", + "integrity": "sha512-pab3nU3rNsq1HKKmJP2ITDl5cGi+QbQ5eLX6ELaeAbN2eAzfndHu2rTqlnjJAKcYQg6l9gFBn8vvY2xAeRJb6Q==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -3581,12 +3581,12 @@ "dev": true }, "node_modules/@sentry/webpack-plugin": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/@sentry/webpack-plugin/-/webpack-plugin-1.18.1.tgz", - "integrity": "sha512-maEnHC0nxRnVgAz0qvKvhTGy+SxneR8MFjpgNMvh9CyAB6GEM9VQI1hzxTcAd7Qk90qGW8W4eUmB+ZX8nMrM1w==", + "version": "1.18.3", + "resolved": "https://registry.npmjs.org/@sentry/webpack-plugin/-/webpack-plugin-1.18.3.tgz", + "integrity": "sha512-Qk3Jevislc5DZK0X/WwRVcOtO7iatnWARsEgTV/TuXvDN+fUDDpD/2MytAWAbpLaLy3xEB/cXGeLsbv6d1XNkQ==", "dev": true, "dependencies": { - "@sentry/cli": "^1.68.0" + "@sentry/cli": "^1.70.1" }, "engines": { "node": ">= 8" @@ -3661,9 +3661,9 @@ } }, "node_modules/@supabase/postgrest-js": { - "version": "0.34.0", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-0.34.0.tgz", - "integrity": "sha512-5n0fljeojwNvRrvwCoZPcSYDADr3fEJtvpLW7T3f+g+Mxgg8C8gHmuXfhYg0vzC7Jm/ldEWoZY98bN/ZAQs4cA==", + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-0.34.1.tgz", + "integrity": "sha512-64RQhBpwZDXOpPRCHqrCrlVcyPWE/p4nH6/ALnJCvTkQHkyzXNPDoTlX6OjbuyMH9/BNvgVhEZth0e6hfpWDXw==", "dependencies": { "cross-fetch": "^3.0.6" } @@ -3918,9 +3918,9 @@ "dev": true }, "node_modules/@types/eslint": { - "version": "7.28.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.1.tgz", - "integrity": "sha512-XhZKznR3i/W5dXqUhgU9fFdJekufbeBd5DALmkuXoeFcjbQcPk+2cL+WLHf6Q81HWAnM2vrslIHpGVyCAviRwg==", + "version": "7.28.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.2.tgz", + "integrity": "sha512-KubbADPkfoU75KgKeKLsFHXnU4ipH7wYg0TRT33NK3N3yiu7jlFAAoygIWBV+KbuHx/G+AvuGX6DllnK35gfJA==", "devOptional": true, "dependencies": { "@types/estree": "*", @@ -3999,9 +3999,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "16.10.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.9.tgz", - "integrity": "sha512-H9ReOt+yqIJPCutkTYjFjlyK6WEMQYT9hLZMlWtOjFQY2ItppsWZ6RJf8Aw+jz5qTYceuHvFgPIaKOHtLAEWBw==" + "version": "16.11.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.3.tgz", + "integrity": "sha512-aIYL9Eemcecs1y77XzFGiSc+FdfN58k4J23UEe6+hynf4Wd9g4DzQPwIKL080vSMuubFqy2hWwOzCtJdc6vFKw==" }, "node_modules/@types/normalize-package-data": { "version": "2.4.1", @@ -4049,18 +4049,18 @@ } }, "node_modules/@types/react-copy-to-clipboard": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@types/react-copy-to-clipboard/-/react-copy-to-clipboard-5.0.1.tgz", - "integrity": "sha512-CDuRrJWEIdfKFC4vbwpXT3vk0O4gA/I/Kxu/1npUvGc2Yey5swPvsgO3JEnQkIUwdnYUbwUYDE/fTFQVgqr4oA==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@types/react-copy-to-clipboard/-/react-copy-to-clipboard-5.0.2.tgz", + "integrity": "sha512-O29AThfxrkUFRsZXjfSWR2yaWo0ppB1yLEnHA+Oh24oNetjBAwTDu1PmolIqdJKzsZiO4J1jn6R6TmO96uBvGg==", "dev": true, "dependencies": { "@types/react": "*" } }, "node_modules/@types/react-dom": { - "version": "17.0.9", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.9.tgz", - "integrity": "sha512-wIvGxLfgpVDSAMH5utdL9Ngm5Owu0VsGmldro3ORLXV8CShrL8awVj06NuEXFQ5xyaYfdca7Sgbk/50Ri1GdPg==", + "version": "17.0.10", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.10.tgz", + "integrity": "sha512-8oz3NAUId2z/zQdFI09IMhQPNgIbiP8Lslhv39DIDamr846/0spjZK0vnrMak0iB8EKb9QFTTIdg2Wj2zH5a3g==", "dev": true, "dependencies": { "@types/react": "*" @@ -5931,9 +5931,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001267", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001267.tgz", - "integrity": "sha512-r1mjTzAuJ9W8cPBGbbus8E0SKcUP7gn03R14Wk8FlAlqhH9hroy9nLqmpuXlfKEw/oILW+FGz47ipXV2O7x8lg==", + "version": "1.0.30001271", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001271.tgz", + "integrity": "sha512-BBruZFWmt3HFdVPS8kceTBIguKxu4f99n5JNp06OlPD/luoAMIaIK5ieV5YjnBLH3Nysai9sxj9rpJj4ZisXOA==", "funding": { "type": "opencollective", "url": "https://opencollective.com/browserslist" @@ -5957,9 +5957,9 @@ "peer": true }, "node_modules/cborg": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/cborg/-/cborg-1.5.1.tgz", - "integrity": "sha512-GKCylZR7os3Q9X+U3DiARfeFKQUdcZMAP8EKFSE91YbhJsxV71Z6PMOT2osVWprb+iWf6viyqD7peEkK0QCAAw==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/cborg/-/cborg-1.5.2.tgz", + "integrity": "sha512-w7RJ0Hm29B/Y5kvUXrP+TfgvBmkRUwYVr8hD63z5MlIGdlelhzNMCV/xKbG+yAyp4euJrqxPsQMXGyJKnfGhPQ==", "bin": { "cborg": "cli.js" } @@ -7802,9 +7802,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.3.867", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.867.tgz", - "integrity": "sha512-WbTXOv7hsLhjJyl7jBfDkioaY++iVVZomZ4dU6TMe/SzucV6mUAs2VZn/AehBwuZMiNEQDaPuTGn22YK5o+aDw==" + "version": "1.3.877", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.877.tgz", + "integrity": "sha512-fT5mW5Giw5iyVukeHb2XvB4joBKvzHtl8Vs3QzE7APATpFMt/T7RWyUcIKSZzYkKQgpMbu+vDBTCHfQZvh8klA==" }, "node_modules/elliptic": { "version": "6.5.4", @@ -8036,14 +8036,254 @@ "dev": true }, "node_modules/esbuild": { - "version": "0.12.26", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.26.tgz", - "integrity": "sha512-YmTkhPKjvTJ+G5e96NyhGf69bP+hzO0DscqaVJTi5GM34uaD4Ecj7omu5lJO+NrxCUBRhy2chONLK1h/2LwoXA==", + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.13.8.tgz", + "integrity": "sha512-A4af7G7YZLfG5OnARJRMtlpEsCkq/zHZQXewgPA864l9D6VjjbH1SuFYK/OSV6BtHwDGkdwyRrX0qQFLnMfUcw==", "dev": true, "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" - } + }, + "optionalDependencies": { + "esbuild-android-arm64": "0.13.8", + "esbuild-darwin-64": "0.13.8", + "esbuild-darwin-arm64": "0.13.8", + "esbuild-freebsd-64": "0.13.8", + "esbuild-freebsd-arm64": "0.13.8", + "esbuild-linux-32": "0.13.8", + "esbuild-linux-64": "0.13.8", + "esbuild-linux-arm": "0.13.8", + "esbuild-linux-arm64": "0.13.8", + "esbuild-linux-mips64le": "0.13.8", + "esbuild-linux-ppc64le": "0.13.8", + "esbuild-netbsd-64": "0.13.8", + "esbuild-openbsd-64": "0.13.8", + "esbuild-sunos-64": "0.13.8", + "esbuild-windows-32": "0.13.8", + "esbuild-windows-64": "0.13.8", + "esbuild-windows-arm64": "0.13.8" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.13.8.tgz", + "integrity": "sha512-AilbChndywpk7CdKkNSZ9klxl+9MboLctXd9LwLo3b0dawmOF/i/t2U5d8LM6SbT1Xw36F8yngSUPrd8yPs2RA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/esbuild-darwin-64": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.13.8.tgz", + "integrity": "sha512-b6sdiT84zV5LVaoF+UoMVGJzR/iE2vNUfUDfFQGrm4LBwM/PWXweKpuu6RD9mcyCq18cLxkP6w/LD/w9DtX3ng==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.8.tgz", + "integrity": "sha512-R8YuPiiJayuJJRUBG4H0VwkEKo6AvhJs2m7Tl0JaIer3u1FHHXwGhMxjJDmK+kXwTFPriSysPvcobXC/UrrZCQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.8.tgz", + "integrity": "sha512-zBn6urrn8FnKC+YSgDxdof9jhPCeU8kR/qaamlV4gI8R3KUaUK162WYM7UyFVAlj9N0MyD3AtB+hltzu4cysTw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.8.tgz", + "integrity": "sha512-pWW2slN7lGlkx0MOEBoUGwRX5UgSCLq3dy2c8RIOpiHtA87xAUpDBvZK10MykbT+aMfXc0NI2lu1X+6kI34xng==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/esbuild-linux-32": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.13.8.tgz", + "integrity": "sha512-T0I0ueeKVO/Is0CAeSEOG9s2jeNNb8jrrMwG9QBIm3UU18MRB60ERgkS2uV3fZ1vP2F8i3Z2e3Zju4lg9dhVmw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/esbuild-linux-64": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.13.8.tgz", + "integrity": "sha512-Bm8SYmFtvfDCIu9sjKppFXzRXn2BVpuCinU1ChTuMtdKI/7aPpXIrkqBNOgPTOQO9AylJJc1Zw6EvtKORhn64w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/esbuild-linux-arm": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.13.8.tgz", + "integrity": "sha512-4/HfcC40LJ4GPyboHA+db0jpFarTB628D1ifU+/5bunIgY+t6mHkJWyxWxAAE8wl/ZIuRYB9RJFdYpu1AXGPdg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.8.tgz", + "integrity": "sha512-X4pWZ+SL+FJ09chWFgRNO3F+YtvAQRcWh0uxKqZSWKiWodAB20flsW/OWFYLXBKiVCTeoGMvENZS/GeVac7+tQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.8.tgz", + "integrity": "sha512-o7e0D+sqHKT31v+mwFircJFjwSKVd2nbkHEn4l9xQ1hLR+Bv8rnt3HqlblY3+sBdlrOTGSwz0ReROlKUMJyldA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.8.tgz", + "integrity": "sha512-eZSQ0ERsWkukJp2px/UWJHVNuy0lMoz/HZcRWAbB6reoaBw7S9vMzYNUnflfL3XA6WDs+dZn3ekHE4Y2uWLGig==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.8.tgz", + "integrity": "sha512-gZX4kP7gVvOrvX0ZwgHmbuHczQUwqYppxqtoyC7VNd80t5nBHOFXVhWo2Ad/Lms0E8b+wwgI/WjZFTCpUHOg9Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ] + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.8.tgz", + "integrity": "sha512-afzza308X4WmcebexbTzAgfEWt9MUkdTvwIa8xOu4CM2qGbl2LanqEl8/LUs8jh6Gqw6WsicEK52GPrS9wvkcw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/esbuild-sunos-64": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.13.8.tgz", + "integrity": "sha512-mWPZibmBbuMKD+LDN23LGcOZ2EawMYBONMXXHmbuxeT0XxCNwadbCVwUQ/2p5Dp5Kvf6mhrlIffcnWOiCBpiVw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ] + }, + "node_modules/esbuild-windows-32": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.13.8.tgz", + "integrity": "sha512-QsZ1HnWIcnIEApETZWw8HlOhDSWqdZX2SylU7IzGxOYyVcX7QI06ety/aDcn437mwyO7Ph4RrbhB+2ntM8kX8A==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/esbuild-windows-64": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.13.8.tgz", + "integrity": "sha512-76Fb57B9eE/JmJi1QmUW0tRLQZfGo0it+JeYoCDTSlbTn7LV44ecOHIMJSSgZADUtRMWT9z0Kz186bnaB3amSg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.8.tgz", + "integrity": "sha512-HW6Mtq5eTudllxY2YgT62MrVcn7oq2o8TAoAvDUhyiEmRmDY8tPwAhb1vxw5/cdkbukM3KdMYtksnUhF/ekWeg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] }, "node_modules/escalade": { "version": "3.1.1", @@ -8338,9 +8578,9 @@ } }, "node_modules/eslint-plugin-promise": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-5.1.0.tgz", - "integrity": "sha512-NGmI6BH5L12pl7ScQHbg7tvtk4wPxxj8yPHH47NvSmMtFneC077PSeY3huFj06ZWZvtbfxSPt3RuOQD5XcR4ng==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-5.1.1.tgz", + "integrity": "sha512-XgdcdyNzHfmlQyweOPTxmc7pIsS6dE4MvwhXWMQ2Dxs1XAL2GJDilUsjWen6TWik0aSI+zD/PqocZBblcm9rdA==", "dev": true, "engines": { "node": "^10.12.0 || >=12.0.0" @@ -9753,9 +9993,9 @@ } }, "node_modules/graphql-request": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-3.6.0.tgz", - "integrity": "sha512-p5qIuD+gyjuOJ8z9sEcfcLVK7HUB+/88hf/xGEzX330U3L2OR1JtaupLPmd1D2V7YtqWiEnSA3tX9vqZ4eGMhA==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-3.6.1.tgz", + "integrity": "sha512-Nm1EasrAQVZllyNTlHDLnLZjlhC6eRWnWP6KH//ytnAL08pjlLkdI2K+s6OV92p45hn5b/kUlLbDwACmRoLwrQ==", "dependencies": { "cross-fetch": "^3.0.6", "extract-files": "^9.0.0", @@ -10437,9 +10677,9 @@ } }, "node_modules/interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "dev": true, "engines": { "node": ">= 0.10" @@ -10471,9 +10711,9 @@ } }, "node_modules/ipfs-car": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/ipfs-car/-/ipfs-car-0.5.8.tgz", - "integrity": "sha512-77dwPVpMqq++ZlM6csNs0FMrNnBy+lJxDTQbPz/jYYiwPmvmMq1Z1VoB/h9zRu0KVZPt1xUQvH8cSIOTUmQNSw==", + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/ipfs-car/-/ipfs-car-0.5.9.tgz", + "integrity": "sha512-81jKWdkFj1XjP23Qu2ts5K4VOZsLySD4V4UH8fQeb1T6ETf5btdm24mhRRuY7hvM/Vq7AMtDc+bDXocO+WouJQ==", "dependencies": { "@ipld/car": "^3.1.4", "@web-std/blob": "^2.1.1", @@ -11051,9 +11291,9 @@ } }, "node_modules/is-core-module": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.7.0.tgz", - "integrity": "sha512-ByY+tjCciCr+9nLryBYcSD50EOGWt95c7tIsKTG1J2ixKKXPvF7Ej3AVd+UfDydAJom3biBGDBALaO79ktwgEQ==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", "dependencies": { "has": "^1.0.3" }, @@ -11465,9 +11705,9 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, "node_modules/iso-url": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/iso-url/-/iso-url-1.1.5.tgz", - "integrity": "sha512-+3JqoKdBTGmyv9vOkS6b9iHhvK34UajfTibrH/1HOK8TI7K2VsM0qOCd+aJdWKtSOA8g3PqZfcwDmnR0p3klqQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iso-url/-/iso-url-1.2.1.tgz", + "integrity": "sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng==", "engines": { "node": ">=12" } @@ -11488,9 +11728,9 @@ "peer": true }, "node_modules/istanbul-lib-coverage": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.2.tgz", - "integrity": "sha512-o5+eTUYzCJ11/+JhW5/FUCdfsdoYVdQ/8I/OveE2XsjehYn5DdeSnNQAbjYaO8gQ6hvGTN6GM6ddQqpTVG5j8g==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", "dev": true, "engines": { "node": ">=8" @@ -13486,9 +13726,9 @@ } }, "node_modules/multiformats": { - "version": "9.4.8", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.4.8.tgz", - "integrity": "sha512-EOJL02/kv+FD5hoItMhKgkYUUruJYMYFq4NQ6YkCh3jVQ5CuHo+OKdHeR50hAxEQmXQ9yvrM9BxLIk42xtfwnQ==" + "version": "9.4.9", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.4.9.tgz", + "integrity": "sha512-zA84TTJcRfRMpjvYqy63piBbSEdqlIGqNNSpP6kspqtougqjo60PRhIFo+oAxrjkof14WMCImvr7acK6rPpXLw==" }, "node_modules/murmurhash3js-revisited": { "version": "3.0.0", @@ -14097,9 +14337,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.0.tgz", - "integrity": "sha512-aA87l0flFYMzCHpTM3DERFSYxc6lv/BltdbRTOMZuxZ0cwZCD3mejE5n9vLhSJCN++/eOqr77G1IO5uXxlQYWA==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==" }, "node_modules/noop-logger": { "version": "0.1.1", @@ -14762,9 +15002,9 @@ } }, "node_modules/openapi-typescript": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/openapi-typescript/-/openapi-typescript-4.3.0.tgz", - "integrity": "sha512-mAvW7lCS8V2s2KLp81uAH8DynJgMHFOyD4k5IWi15JbmTacvKQCKglXf8mhEkxhWUTKaNfis23cPNJy+IL/16w==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/openapi-typescript/-/openapi-typescript-4.4.0.tgz", + "integrity": "sha512-fSx4qAd5q1NPjpJv7qobwYgLud7HDgwX1DJsRgERmouS333AJOl904oRLwZqHcjKqaZFeuVm6WCWC7nOKeXU1g==", "dev": true, "dependencies": { "hosted-git-info": "^3.0.8", @@ -15367,9 +15607,9 @@ } }, "node_modules/parse-duration": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-duration/-/parse-duration-1.0.1.tgz", - "integrity": "sha512-vv3rNpBYqRo8m357JeFBYFud+yX6HyxT2oBCI5gi0d/zW7g2C+meWucThqzp47Mdp+90nOjDbXfrqxdvkEIMxA==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-duration/-/parse-duration-1.0.2.tgz", + "integrity": "sha512-Dg27N6mfok+ow1a2rj/nRjtCfaKrHUZV2SJpEn/s8GaVUSlf4GGRCRP1c13Hj+wfPKVMrFDqLMLITkYKgKxyyg==" }, "node_modules/parse-entities": { "version": "1.2.2", @@ -15782,9 +16022,9 @@ "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==" }, "node_modules/playwright-core": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.14.1.tgz", - "integrity": "sha512-G4fO98T/DOTj3uabIlhkWrWzhXGXx8y8rVzBgR6DKPqEz8NfTxuQ3NFGWA1u+sfD1CtAXRxBisaUvlmnD2jRYw==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.15.2.tgz", + "integrity": "sha512-bY3eZu27QL62Y/iVsZUTm+RtPZ+0Zj34GoKQ6VtdjhzqoUWj40IoLy0q/GhMpXUNqKZMntHmtxvLYlREFauf8Q==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -15820,15 +16060,15 @@ } }, "node_modules/playwright-test": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/playwright-test/-/playwright-test-7.1.0.tgz", - "integrity": "sha512-5utXlpFJxoaPb1thZDRa7vUGiZqN6vWGVD6/6AhT37Gzfv2q64PWfDmLXO28FMlSJBJTefq8+NEZgbWs6sC8tA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/playwright-test/-/playwright-test-7.1.1.tgz", + "integrity": "sha512-a8p5aSWLsXzes3SIUIYo2yMg3Ndz2CYd8bPvL1H3KAW8tj+L51MYAvltoP2FlN1aiat3omp7zAboObMlVEV7jg==", "dev": true, "dependencies": { "buffer": "^6.0.3", "camelcase": "^6.2.0", "chokidar": "^3.5.2", - "esbuild": "0.12.26", + "esbuild": "0.13.8", "events": "^3.3.0", "globby": "^12.0.2", "kleur": "^4.1.4", @@ -15838,7 +16078,7 @@ "ora": "^6.0.0", "p-wait-for": "4.1.0", "path-browserify": "^1.0.1", - "playwright-core": "1.14.1", + "playwright-core": "1.15.2", "polka": "^0.5.2", "premove": "^3.0.1", "process": "^0.11.10", @@ -16131,12 +16371,12 @@ } }, "node_modules/postcss": { - "version": "8.3.9", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.9.tgz", - "integrity": "sha512-f/ZFyAKh9Dnqytx5X62jgjhhzttjZS7hMsohcI7HEI5tjELX/HxCy3EFhsRxyzGvrzFF+82XPvCS8T9TFleVJw==", + "version": "8.3.11", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.11.tgz", + "integrity": "sha512-hCmlUAIlUiav8Xdqw3Io4LcpA1DOt7h3LSTAC4G6JGHFFaWzI6qvFt9oilvl8BmkbBRX1IhM90ZAmpk68zccQA==", "dependencies": { - "nanoid": "^3.1.28", - "picocolors": "^0.2.1", + "nanoid": "^3.1.30", + "picocolors": "^1.0.0", "source-map-js": "^0.6.2" }, "engines": { @@ -16223,6 +16463,11 @@ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==" }, + "node_modules/postcss/node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, "node_modules/postgres-array": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", @@ -16937,9 +17182,9 @@ } }, "node_modules/react-query": { - "version": "3.26.0", - "resolved": "https://registry.npmjs.org/react-query/-/react-query-3.26.0.tgz", - "integrity": "sha512-wFPnL9Y+9xf6gJHAQ8ue+vBurciJ4cfQL4dhsI0x3YyRaEXlyklUQpJzbR63CfFULVekP3iWoyFxhaNVS9RFDw==", + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/react-query/-/react-query-3.27.0.tgz", + "integrity": "sha512-2MR5LBXnR6OMXQVLcv/57x1zkDNj6gK5J5mtjGi6pu0aQ6Y4jGQysVvkrAErMKMZJVZELFcYGA8LsGIHzlo/zg==", "dependencies": { "@babel/runtime": "^7.5.5", "broadcast-channel": "^3.4.1", @@ -17044,12 +17289,12 @@ } }, "node_modules/rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", "dev": true, "dependencies": { - "resolve": "^1.9.0" + "resolve": "^1.1.6" }, "engines": { "node": ">= 0.10" @@ -17908,27 +18153,6 @@ "node": ">=4" } }, - "node_modules/shelljs/node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/shelljs/node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -17992,9 +18216,9 @@ "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" }, "node_modules/sirv": { - "version": "1.0.17", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.17.tgz", - "integrity": "sha512-qx9go5yraB7ekT7bCMqUHJ5jEaOC/GXBxUWv+jeWnb7WzHUFdcQPGWk7YmAwFBaQBrogpuSqd/azbC2lZRqqmw==", + "version": "1.0.18", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.18.tgz", + "integrity": "sha512-f2AOPogZmXgJ9Ma2M22ZEhc1dNtRIzcEkiflMFeVTRq+OViOZMvH1IPMVOwrKaxpSaHioBJiDR0SluRqGa7atA==", "dev": true, "dependencies": { "@polka/url": "^1.0.0-next.20", @@ -19266,9 +19490,9 @@ } }, "node_modules/tempy/node_modules/type-fest": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.5.0.tgz", - "integrity": "sha512-wB5vE+XXZ2g2mDRo18yZMae1joUhquomLTm+BkxeuRHnwmrNWzVPNrFah9z7pjsKNiVAaJL33+uQbgbPSARyqw==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.5.1.tgz", + "integrity": "sha512-JDcsxbLR6Z6OcL7TnGAAAGQrY4g7Q4EEALMT4Kp6FQuIc0JLQvOF3l7ejFvx8o5GmLlfMseTWUL++sYFP+o8kw==", "dev": true, "engines": { "node": ">=12.20" @@ -19330,9 +19554,9 @@ } }, "node_modules/terser-webpack-plugin/node_modules/jest-worker": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.2.5.tgz", - "integrity": "sha512-HTjEPZtcNKZ4LnhSp02NEH4vE+5OpJ0EsOWYvGQpHgUMLngydESAAMH5Wd/asPf29+XUDQZszxpLg1BkIIA2aw==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz", + "integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==", "devOptional": true, "dependencies": { "@types/node": "*", @@ -20338,9 +20562,9 @@ "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" }, "node_modules/webpack": { - "version": "5.58.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.58.2.tgz", - "integrity": "sha512-3S6e9Vo1W2ijk4F4PPWRIu6D/uGgqaPmqw+av3W3jLDujuNkdxX5h5c+RQ6GkjVR+WwIPOfgY8av+j5j4tMqJw==", + "version": "5.59.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.59.1.tgz", + "integrity": "sha512-I01IQV9K96FlpXX3V0L4nvd7gb0r7thfuu1IfT2P4uOHOA77nKARAKDYGe/tScSHKnffNIyQhLC8kRXzY4KEHQ==", "devOptional": true, "dependencies": { "@types/eslint-scope": "^3.7.0", @@ -20385,9 +20609,9 @@ } }, "node_modules/webpack-cli": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.0.tgz", - "integrity": "sha512-n/jZZBMzVEl4PYIBs+auy2WI0WTQ74EnJDiyD98O2JZY6IVIHJNitkYp/uTXOviIOMfgzrNvC9foKv/8o8KSZw==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.1.tgz", + "integrity": "sha512-JYRFVuyFpzDxMDB+v/nanUdQYcZtqFPGzmlW4s+UkPMFhSpfRNmf1z4AwYcHJVdvEFAM7FFCQdNTpsBYhDLusQ==", "dev": true, "dependencies": { "@discoveryjs/json-ext": "^0.5.0", @@ -20401,7 +20625,6 @@ "import-local": "^3.0.2", "interpret": "^2.2.0", "rechoir": "^0.7.0", - "v8-compile-cache": "^2.2.0", "webpack-merge": "^5.7.3" }, "bin": { @@ -20437,6 +20660,27 @@ "node": ">= 10" } }, + "node_modules/webpack-cli/node_modules/interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/webpack-cli/node_modules/rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "dependencies": { + "resolve": "^1.9.0" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/webpack-merge": { "version": "5.8.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", @@ -21187,7 +21431,8 @@ "license": "(Apache-2.0 AND MIT)", "dependencies": { "@supabase/postgrest-js": "^0.34.0", - "graphql-request": "^3.4.0" + "graphql-request": "^3.4.0", + "p-retry": "^4.6.1" }, "devDependencies": { "@web-std/fetch": "^2.0.1", @@ -21197,7 +21442,6 @@ "execa": "^5.1.1", "faunadb": "^4.3.0", "openapi-typescript": "^4.0.2", - "p-retry": "^4.6.1", "pg": "^8.7.1", "playwright-test": "^7.0.1", "sade": "^1.7.4", @@ -21752,808 +21996,808 @@ } }, "@aws-sdk/abort-controller": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.36.0.tgz", - "integrity": "sha512-IzOL+3x6odlo6mChPChSJepvtHncMKuCQSO0HCDp7AHdhfbZxDCrOL4byH6E3L/LXhUQX8hI0vYE1IDB1nqjhA==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.37.0.tgz", + "integrity": "sha512-Zq2PejlunZhV6MYeq2kXz5n8XbE5jsbeuKANwCqoD138zopsEmBGN71g/K+Ha8TtqLnMhZkt/cSYA4eaCdNaWg==", "requires": { - "@aws-sdk/types": "3.36.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/chunked-blob-reader": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/chunked-blob-reader/-/chunked-blob-reader-3.36.0.tgz", - "integrity": "sha512-8MwykUnBjFUpvUYzuSmq7QvNtslmz9HNYO5YcOawUg7J0XtY01EquOp/dc0LPXCQhTLCaG0YLxZrhMGP9DrB8g==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/chunked-blob-reader/-/chunked-blob-reader-3.37.0.tgz", + "integrity": "sha512-uDacnFaczeO962RnVttwAQddS4rgDfI7nfeY8NV6iZkDv5uxGzHTfH4jT7WvPDM1pSMcOMDx8RJ+Tmtsd1VTsA==", "requires": { "tslib": "^2.3.0" } }, "@aws-sdk/chunked-blob-reader-native": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/chunked-blob-reader-native/-/chunked-blob-reader-native-3.36.0.tgz", - "integrity": "sha512-060kKMFiCvzCI4OZRv4pTf5fNiCBT99fRVm39kKs6k3R0AKXn+4lPDN8Is740ZvGnoCCfnWC+EUUf7mwWX+jWw==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/chunked-blob-reader-native/-/chunked-blob-reader-native-3.37.0.tgz", + "integrity": "sha512-h9OYq6EvDrpb7SKod+Kow+d3aRNFVBYR1a8G8ahEDDQe3AtmA2Smyvni4kt/ABTiKvYdof2//Pq3BL/IUV9n9Q==", "requires": { - "@aws-sdk/util-base64-browser": "3.36.0", + "@aws-sdk/util-base64-browser": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/client-s3": { - "version": "3.36.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.36.1.tgz", - "integrity": "sha512-7J2OlN4x/+f66S5Ux2qJ68Zd/l5iBLpKmpSfbnuRcpjtatHi9qFDFUAFhrezDqRcETt6Dsqf6cflhF9cO7R2FQ==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.37.0.tgz", + "integrity": "sha512-8qGu+AaOamNB4/PnrgFdmqEc7BfoTU676pp9xC2UJL/9rQvsYcs6prDON0Rg9raoO55XSKfgXyNyKNdGaW2Faw==", "requires": { "@aws-crypto/sha256-browser": "^1.0.0", "@aws-crypto/sha256-js": "^1.0.0", - "@aws-sdk/client-sts": "3.36.1", - "@aws-sdk/config-resolver": "3.36.0", - "@aws-sdk/credential-provider-node": "3.36.1", - "@aws-sdk/eventstream-serde-browser": "3.36.0", - "@aws-sdk/eventstream-serde-config-resolver": "3.36.0", - "@aws-sdk/eventstream-serde-node": "3.36.0", - "@aws-sdk/fetch-http-handler": "3.36.0", - "@aws-sdk/hash-blob-browser": "3.36.0", - "@aws-sdk/hash-node": "3.36.0", - "@aws-sdk/hash-stream-node": "3.36.0", - "@aws-sdk/invalid-dependency": "3.36.0", - "@aws-sdk/md5-js": "3.36.0", - "@aws-sdk/middleware-apply-body-checksum": "3.36.0", - "@aws-sdk/middleware-bucket-endpoint": "3.36.0", - "@aws-sdk/middleware-content-length": "3.36.0", - "@aws-sdk/middleware-expect-continue": "3.36.0", - "@aws-sdk/middleware-host-header": "3.36.0", - "@aws-sdk/middleware-location-constraint": "3.36.0", - "@aws-sdk/middleware-logger": "3.36.0", - "@aws-sdk/middleware-retry": "3.36.0", - "@aws-sdk/middleware-sdk-s3": "3.36.0", - "@aws-sdk/middleware-serde": "3.36.0", - "@aws-sdk/middleware-signing": "3.36.0", - "@aws-sdk/middleware-ssec": "3.36.0", - "@aws-sdk/middleware-stack": "3.36.0", - "@aws-sdk/middleware-user-agent": "3.36.0", - "@aws-sdk/node-config-provider": "3.36.0", - "@aws-sdk/node-http-handler": "3.36.0", - "@aws-sdk/protocol-http": "3.36.0", - "@aws-sdk/smithy-client": "3.36.0", - "@aws-sdk/types": "3.36.0", - "@aws-sdk/url-parser": "3.36.0", - "@aws-sdk/util-base64-browser": "3.36.0", - "@aws-sdk/util-base64-node": "3.36.0", - "@aws-sdk/util-body-length-browser": "3.36.0", - "@aws-sdk/util-body-length-node": "3.36.0", - "@aws-sdk/util-user-agent-browser": "3.36.0", - "@aws-sdk/util-user-agent-node": "3.36.0", - "@aws-sdk/util-utf8-browser": "3.36.0", - "@aws-sdk/util-utf8-node": "3.36.0", - "@aws-sdk/util-waiter": "3.36.0", - "@aws-sdk/xml-builder": "3.36.0", + "@aws-sdk/client-sts": "3.37.0", + "@aws-sdk/config-resolver": "3.37.0", + "@aws-sdk/credential-provider-node": "3.37.0", + "@aws-sdk/eventstream-serde-browser": "3.37.0", + "@aws-sdk/eventstream-serde-config-resolver": "3.37.0", + "@aws-sdk/eventstream-serde-node": "3.37.0", + "@aws-sdk/fetch-http-handler": "3.37.0", + "@aws-sdk/hash-blob-browser": "3.37.0", + "@aws-sdk/hash-node": "3.37.0", + "@aws-sdk/hash-stream-node": "3.37.0", + "@aws-sdk/invalid-dependency": "3.37.0", + "@aws-sdk/md5-js": "3.37.0", + "@aws-sdk/middleware-apply-body-checksum": "3.37.0", + "@aws-sdk/middleware-bucket-endpoint": "3.37.0", + "@aws-sdk/middleware-content-length": "3.37.0", + "@aws-sdk/middleware-expect-continue": "3.37.0", + "@aws-sdk/middleware-host-header": "3.37.0", + "@aws-sdk/middleware-location-constraint": "3.37.0", + "@aws-sdk/middleware-logger": "3.37.0", + "@aws-sdk/middleware-retry": "3.37.0", + "@aws-sdk/middleware-sdk-s3": "3.37.0", + "@aws-sdk/middleware-serde": "3.37.0", + "@aws-sdk/middleware-signing": "3.37.0", + "@aws-sdk/middleware-ssec": "3.37.0", + "@aws-sdk/middleware-stack": "3.37.0", + "@aws-sdk/middleware-user-agent": "3.37.0", + "@aws-sdk/node-config-provider": "3.37.0", + "@aws-sdk/node-http-handler": "3.37.0", + "@aws-sdk/protocol-http": "3.37.0", + "@aws-sdk/smithy-client": "3.37.0", + "@aws-sdk/types": "3.37.0", + "@aws-sdk/url-parser": "3.37.0", + "@aws-sdk/util-base64-browser": "3.37.0", + "@aws-sdk/util-base64-node": "3.37.0", + "@aws-sdk/util-body-length-browser": "3.37.0", + "@aws-sdk/util-body-length-node": "3.37.0", + "@aws-sdk/util-user-agent-browser": "3.37.0", + "@aws-sdk/util-user-agent-node": "3.37.0", + "@aws-sdk/util-utf8-browser": "3.37.0", + "@aws-sdk/util-utf8-node": "3.37.0", + "@aws-sdk/util-waiter": "3.37.0", + "@aws-sdk/xml-builder": "3.37.0", "entities": "2.2.0", "fast-xml-parser": "3.19.0", "tslib": "^2.3.0" } }, "@aws-sdk/client-sso": { - "version": "3.36.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.36.1.tgz", - "integrity": "sha512-ZYhsmzv5aCoIvP+NqWr50jY8suA/lZkV5jRmwW6jbgEdxO2G32eV0I3jeNplZYhLx3PdfOWpTdnSsYEaiFD2iA==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.37.0.tgz", + "integrity": "sha512-nD3dbPQvgfB54U1zf0xqdrKimS5mbzYhEldsGq/6yDrE+PsU3p/+PK3IV1sy4K84jLaWkaHo8e/cJBtw28xfzQ==", "requires": { "@aws-crypto/sha256-browser": "^1.0.0", "@aws-crypto/sha256-js": "^1.0.0", - "@aws-sdk/config-resolver": "3.36.0", - "@aws-sdk/fetch-http-handler": "3.36.0", - "@aws-sdk/hash-node": "3.36.0", - "@aws-sdk/invalid-dependency": "3.36.0", - "@aws-sdk/middleware-content-length": "3.36.0", - "@aws-sdk/middleware-host-header": "3.36.0", - "@aws-sdk/middleware-logger": "3.36.0", - "@aws-sdk/middleware-retry": "3.36.0", - "@aws-sdk/middleware-serde": "3.36.0", - "@aws-sdk/middleware-stack": "3.36.0", - "@aws-sdk/middleware-user-agent": "3.36.0", - "@aws-sdk/node-config-provider": "3.36.0", - "@aws-sdk/node-http-handler": "3.36.0", - "@aws-sdk/protocol-http": "3.36.0", - "@aws-sdk/smithy-client": "3.36.0", - "@aws-sdk/types": "3.36.0", - "@aws-sdk/url-parser": "3.36.0", - "@aws-sdk/util-base64-browser": "3.36.0", - "@aws-sdk/util-base64-node": "3.36.0", - "@aws-sdk/util-body-length-browser": "3.36.0", - "@aws-sdk/util-body-length-node": "3.36.0", - "@aws-sdk/util-user-agent-browser": "3.36.0", - "@aws-sdk/util-user-agent-node": "3.36.0", - "@aws-sdk/util-utf8-browser": "3.36.0", - "@aws-sdk/util-utf8-node": "3.36.0", + "@aws-sdk/config-resolver": "3.37.0", + "@aws-sdk/fetch-http-handler": "3.37.0", + "@aws-sdk/hash-node": "3.37.0", + "@aws-sdk/invalid-dependency": "3.37.0", + "@aws-sdk/middleware-content-length": "3.37.0", + "@aws-sdk/middleware-host-header": "3.37.0", + "@aws-sdk/middleware-logger": "3.37.0", + "@aws-sdk/middleware-retry": "3.37.0", + "@aws-sdk/middleware-serde": "3.37.0", + "@aws-sdk/middleware-stack": "3.37.0", + "@aws-sdk/middleware-user-agent": "3.37.0", + "@aws-sdk/node-config-provider": "3.37.0", + "@aws-sdk/node-http-handler": "3.37.0", + "@aws-sdk/protocol-http": "3.37.0", + "@aws-sdk/smithy-client": "3.37.0", + "@aws-sdk/types": "3.37.0", + "@aws-sdk/url-parser": "3.37.0", + "@aws-sdk/util-base64-browser": "3.37.0", + "@aws-sdk/util-base64-node": "3.37.0", + "@aws-sdk/util-body-length-browser": "3.37.0", + "@aws-sdk/util-body-length-node": "3.37.0", + "@aws-sdk/util-user-agent-browser": "3.37.0", + "@aws-sdk/util-user-agent-node": "3.37.0", + "@aws-sdk/util-utf8-browser": "3.37.0", + "@aws-sdk/util-utf8-node": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/client-sts": { - "version": "3.36.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.36.1.tgz", - "integrity": "sha512-Bvpr1dquJs6lRd2hu/BjfUz2nfP/ESXsxh0YR0H7HMq+RtW2Mr+IDIV6n+EK5te21VUmc47LVpPfdiYDWyRxLQ==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.37.0.tgz", + "integrity": "sha512-BiKf2YCW4rhn9UIBhZdzdDsCYWFYsWtRm71budsVaRmdY263g5wpCd4v0PCbyO69dbScllOrR8qrUuWW8YZ2IQ==", "requires": { "@aws-crypto/sha256-browser": "^1.0.0", "@aws-crypto/sha256-js": "^1.0.0", - "@aws-sdk/config-resolver": "3.36.0", - "@aws-sdk/credential-provider-node": "3.36.1", - "@aws-sdk/fetch-http-handler": "3.36.0", - "@aws-sdk/hash-node": "3.36.0", - "@aws-sdk/invalid-dependency": "3.36.0", - "@aws-sdk/middleware-content-length": "3.36.0", - "@aws-sdk/middleware-host-header": "3.36.0", - "@aws-sdk/middleware-logger": "3.36.0", - "@aws-sdk/middleware-retry": "3.36.0", - "@aws-sdk/middleware-sdk-sts": "3.36.0", - "@aws-sdk/middleware-serde": "3.36.0", - "@aws-sdk/middleware-signing": "3.36.0", - "@aws-sdk/middleware-stack": "3.36.0", - "@aws-sdk/middleware-user-agent": "3.36.0", - "@aws-sdk/node-config-provider": "3.36.0", - "@aws-sdk/node-http-handler": "3.36.0", - "@aws-sdk/protocol-http": "3.36.0", - "@aws-sdk/smithy-client": "3.36.0", - "@aws-sdk/types": "3.36.0", - "@aws-sdk/url-parser": "3.36.0", - "@aws-sdk/util-base64-browser": "3.36.0", - "@aws-sdk/util-base64-node": "3.36.0", - "@aws-sdk/util-body-length-browser": "3.36.0", - "@aws-sdk/util-body-length-node": "3.36.0", - "@aws-sdk/util-user-agent-browser": "3.36.0", - "@aws-sdk/util-user-agent-node": "3.36.0", - "@aws-sdk/util-utf8-browser": "3.36.0", - "@aws-sdk/util-utf8-node": "3.36.0", + "@aws-sdk/config-resolver": "3.37.0", + "@aws-sdk/credential-provider-node": "3.37.0", + "@aws-sdk/fetch-http-handler": "3.37.0", + "@aws-sdk/hash-node": "3.37.0", + "@aws-sdk/invalid-dependency": "3.37.0", + "@aws-sdk/middleware-content-length": "3.37.0", + "@aws-sdk/middleware-host-header": "3.37.0", + "@aws-sdk/middleware-logger": "3.37.0", + "@aws-sdk/middleware-retry": "3.37.0", + "@aws-sdk/middleware-sdk-sts": "3.37.0", + "@aws-sdk/middleware-serde": "3.37.0", + "@aws-sdk/middleware-signing": "3.37.0", + "@aws-sdk/middleware-stack": "3.37.0", + "@aws-sdk/middleware-user-agent": "3.37.0", + "@aws-sdk/node-config-provider": "3.37.0", + "@aws-sdk/node-http-handler": "3.37.0", + "@aws-sdk/protocol-http": "3.37.0", + "@aws-sdk/smithy-client": "3.37.0", + "@aws-sdk/types": "3.37.0", + "@aws-sdk/url-parser": "3.37.0", + "@aws-sdk/util-base64-browser": "3.37.0", + "@aws-sdk/util-base64-node": "3.37.0", + "@aws-sdk/util-body-length-browser": "3.37.0", + "@aws-sdk/util-body-length-node": "3.37.0", + "@aws-sdk/util-user-agent-browser": "3.37.0", + "@aws-sdk/util-user-agent-node": "3.37.0", + "@aws-sdk/util-utf8-browser": "3.37.0", + "@aws-sdk/util-utf8-node": "3.37.0", "entities": "2.2.0", "fast-xml-parser": "3.19.0", "tslib": "^2.3.0" } }, "@aws-sdk/config-resolver": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.36.0.tgz", - "integrity": "sha512-4UxdPrlSo1RToelV72fMustttTSWKHJm3L054jJQUCiXDIIrUTAFhI5Z6El4wqYjg15QIZkIdcN0T9Vzd/z5Lw==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.37.0.tgz", + "integrity": "sha512-rvreWb5qOSb+AMeQuiK1Ljro3FMAXKbDdr804+S+3GhieaA3HJDzdUH/M8wznLRxUIpIni4yBRxD0WWqngFkCg==", "requires": { - "@aws-sdk/signature-v4": "3.36.0", - "@aws-sdk/types": "3.36.0", + "@aws-sdk/signature-v4": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/credential-provider-env": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.36.0.tgz", - "integrity": "sha512-APQAgVmVx850lL8v2Sz/L4kA7a7ectqNZNxTBm6+H534uGsGYwNSmRcTQiXA77qCRts5ZaFQP3CHdxR8/Ixr6w==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.37.0.tgz", + "integrity": "sha512-vdxqtoaT9RgMEP8XlIOsnZQHFLGkdTyU+sL7mLuie/iuSD3jKamdwJUAGFQhFQVmdXBRL2D8dqYPaimvOnmp9A==", "requires": { - "@aws-sdk/property-provider": "3.36.0", - "@aws-sdk/types": "3.36.0", + "@aws-sdk/property-provider": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/credential-provider-imds": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.36.0.tgz", - "integrity": "sha512-4hDzNZ60hgAenhAm1Sys25H2LispgtvSx+K6U/5kTJCvfqRwS13ZH9LTjlA4FoJC+zv4INSYN01oYZfhQpczUw==", - "requires": { - "@aws-sdk/node-config-provider": "3.36.0", - "@aws-sdk/property-provider": "3.36.0", - "@aws-sdk/types": "3.36.0", - "@aws-sdk/url-parser": "3.36.0", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.37.0.tgz", + "integrity": "sha512-DB2Wkm8dUsE1S59h9ImxgbyTV11jODtOF6gkDKtnrEzpVN75KpBtG1Rh+QUewBjV7VmxSJoROszfXzpsOY8mLQ==", + "requires": { + "@aws-sdk/node-config-provider": "3.37.0", + "@aws-sdk/property-provider": "3.37.0", + "@aws-sdk/types": "3.37.0", + "@aws-sdk/url-parser": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/credential-provider-ini": { - "version": "3.36.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.36.1.tgz", - "integrity": "sha512-DqApaEr6khLcPOiZBjQeZqQ8A4eI9DJrlmlP5Ov2p0ne5miXEddwXaqGAFryF+ylMdPOvfjJvza1TkRD7MxhwA==", - "requires": { - "@aws-sdk/credential-provider-env": "3.36.0", - "@aws-sdk/credential-provider-imds": "3.36.0", - "@aws-sdk/credential-provider-sso": "3.36.1", - "@aws-sdk/credential-provider-web-identity": "3.36.0", - "@aws-sdk/property-provider": "3.36.0", - "@aws-sdk/shared-ini-file-loader": "3.36.0", - "@aws-sdk/types": "3.36.0", - "@aws-sdk/util-credentials": "3.36.0", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.37.0.tgz", + "integrity": "sha512-zmT3cPqTRG8Foo8GZlkSX533OI0IVyA1uDMff4osKcJTPGXv/Yv+91QqXRUPnCZ8vizlDHFR1c4Mwur0Mayyqg==", + "requires": { + "@aws-sdk/credential-provider-env": "3.37.0", + "@aws-sdk/credential-provider-imds": "3.37.0", + "@aws-sdk/credential-provider-sso": "3.37.0", + "@aws-sdk/credential-provider-web-identity": "3.37.0", + "@aws-sdk/property-provider": "3.37.0", + "@aws-sdk/shared-ini-file-loader": "3.37.0", + "@aws-sdk/types": "3.37.0", + "@aws-sdk/util-credentials": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/credential-provider-node": { - "version": "3.36.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.36.1.tgz", - "integrity": "sha512-SHBZOq+jOO/9Yqdrig5ATSLifjdNeVdi5/trCQj2ynwO6N9bAde0V1ni9TdBU/4kejYdtL+vIeEg8R29n1fMoA==", - "requires": { - "@aws-sdk/credential-provider-env": "3.36.0", - "@aws-sdk/credential-provider-imds": "3.36.0", - "@aws-sdk/credential-provider-ini": "3.36.1", - "@aws-sdk/credential-provider-process": "3.36.0", - "@aws-sdk/credential-provider-sso": "3.36.1", - "@aws-sdk/credential-provider-web-identity": "3.36.0", - "@aws-sdk/property-provider": "3.36.0", - "@aws-sdk/shared-ini-file-loader": "3.36.0", - "@aws-sdk/types": "3.36.0", - "@aws-sdk/util-credentials": "3.36.0", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.37.0.tgz", + "integrity": "sha512-MhjpXIEMf6Scob+9emrtD0a9QH9q16hqUByT2Pr+7zTjmJZGy78uDCYAHnnlhcbE19ImCZtzfMlR/TpyLWokaA==", + "requires": { + "@aws-sdk/credential-provider-env": "3.37.0", + "@aws-sdk/credential-provider-imds": "3.37.0", + "@aws-sdk/credential-provider-ini": "3.37.0", + "@aws-sdk/credential-provider-process": "3.37.0", + "@aws-sdk/credential-provider-sso": "3.37.0", + "@aws-sdk/credential-provider-web-identity": "3.37.0", + "@aws-sdk/property-provider": "3.37.0", + "@aws-sdk/shared-ini-file-loader": "3.37.0", + "@aws-sdk/types": "3.37.0", + "@aws-sdk/util-credentials": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/credential-provider-process": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.36.0.tgz", - "integrity": "sha512-2ITkLv5mwbPzDCnPpZ7GpibQD78yiF2voU3knR5XWbnSdHosV+taTwnU+HMcJhWQPR9lTKHDf4/rEtUPw/imrQ==", - "requires": { - "@aws-sdk/property-provider": "3.36.0", - "@aws-sdk/shared-ini-file-loader": "3.36.0", - "@aws-sdk/types": "3.36.0", - "@aws-sdk/util-credentials": "3.36.0", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.37.0.tgz", + "integrity": "sha512-VOfWtUBbICb7xEHRFN7+fRA+move/3HT4mZt7C5KBXIaILT3b8hrK1mT/fRQ3dx9dF56PEGj/WkACOBjMzIcdg==", + "requires": { + "@aws-sdk/property-provider": "3.37.0", + "@aws-sdk/shared-ini-file-loader": "3.37.0", + "@aws-sdk/types": "3.37.0", + "@aws-sdk/util-credentials": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/credential-provider-sso": { - "version": "3.36.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.36.1.tgz", - "integrity": "sha512-uS6ZIwq0HbBGD7lhuUr/g2RIpQzEb2gT3e86r5Fesv5eLWTqzkhmXJ5jc7cHPuQK3Ojcu2S8atVcdeUGfdamgw==", - "requires": { - "@aws-sdk/client-sso": "3.36.1", - "@aws-sdk/property-provider": "3.36.0", - "@aws-sdk/shared-ini-file-loader": "3.36.0", - "@aws-sdk/types": "3.36.0", - "@aws-sdk/util-credentials": "3.36.0", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.37.0.tgz", + "integrity": "sha512-JLehEOR21zdcLiPqYmQKM8N2zOiqGD1qCSOS2IVNcG69hTLVzBQZURo3f2j65C78/YjUQ/YHYcfgx9SD57iShw==", + "requires": { + "@aws-sdk/client-sso": "3.37.0", + "@aws-sdk/property-provider": "3.37.0", + "@aws-sdk/shared-ini-file-loader": "3.37.0", + "@aws-sdk/types": "3.37.0", + "@aws-sdk/util-credentials": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/credential-provider-web-identity": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.36.0.tgz", - "integrity": "sha512-cC0WZmQhxmEw5VJud15tNDQggGFTxtz6FP5Yj46UtmNa+cTadtrruoe4PZBC1QqWgrfBpkI7W1quD3BZthiV/w==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.37.0.tgz", + "integrity": "sha512-GbMdGgLltyiX/0xrUn1VkyNepi05Yc/xrTw/kHjzQ14beE8BQdv51giSwjhGDoVZH6Ul+ouIJg9v6q8ufIEqlA==", "requires": { - "@aws-sdk/property-provider": "3.36.0", - "@aws-sdk/types": "3.36.0", + "@aws-sdk/property-provider": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/eventstream-marshaller": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-marshaller/-/eventstream-marshaller-3.36.0.tgz", - "integrity": "sha512-6/WKo0LZkNG6YiJ8HoElWj0SndXCxib482cz16GmrBY1WsXsqqx/qxAfxhMMkBayyOWzVD0r/TOjHqdiwOT+/w==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-marshaller/-/eventstream-marshaller-3.37.0.tgz", + "integrity": "sha512-N9S3Z5zmco2byOYfbEQWAdl2bzDk8NZBqM9547PUUcpvy2bO+nbUtQLKcB1t6lpmt+hLu0TVIcBPdDHGFxdX0A==", "requires": { "@aws-crypto/crc32": "^1.0.0", - "@aws-sdk/types": "3.36.0", - "@aws-sdk/util-hex-encoding": "3.36.0", + "@aws-sdk/types": "3.37.0", + "@aws-sdk/util-hex-encoding": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/eventstream-serde-browser": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-browser/-/eventstream-serde-browser-3.36.0.tgz", - "integrity": "sha512-W1DCmEcWkQa3kC23sg5Bb6rozafy83CwtXBiJ26CZFvtSnEsntrXz2+xHc4fITTu1D4rAD+J9w4hYZ72gfE5Tg==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-browser/-/eventstream-serde-browser-3.37.0.tgz", + "integrity": "sha512-uArfFTmnuNP9o17NaokoTMpIJVIuIcZQQ45IbQp2gGn1RrNQK5jj44qNcsxgC2VNndBV2hfmITAIhZLbnQffJQ==", "requires": { - "@aws-sdk/eventstream-marshaller": "3.36.0", - "@aws-sdk/eventstream-serde-universal": "3.36.0", - "@aws-sdk/types": "3.36.0", + "@aws-sdk/eventstream-marshaller": "3.37.0", + "@aws-sdk/eventstream-serde-universal": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/eventstream-serde-config-resolver": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.36.0.tgz", - "integrity": "sha512-+s9hj1NhGFSYotCACSf5h1hebbBZyeCZKlxm9My3zE3Is1hG3I1v2PBw8al39kxHR0nDMGPlMjMzWL7F7byjdA==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.37.0.tgz", + "integrity": "sha512-cWaYDFNJxwfY+jD18St0DwKvkTZpAatTeh9qSNVOkcemSkdYcHGtj2rPijCctg2EPKSXVxdKow4Hoa36vqT2Jg==", "requires": { - "@aws-sdk/types": "3.36.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/eventstream-serde-node": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-node/-/eventstream-serde-node-3.36.0.tgz", - "integrity": "sha512-x5VaVk6XEheDNSAp/VRqJOq/z/SWa0PKiMCSrFuUM9IznicQcG90AgUUDGA0gEp2GMBwR+LhVCz4soTZtAoADA==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-node/-/eventstream-serde-node-3.37.0.tgz", + "integrity": "sha512-pRvAjg6WQWNraqBklqsJfFaUojHDVZeHLLL+zJMuhmv7VhK1oJv4GAtlxbnpy9YH75qo1UTMALN0v/B3K7SugA==", "requires": { - "@aws-sdk/eventstream-marshaller": "3.36.0", - "@aws-sdk/eventstream-serde-universal": "3.36.0", - "@aws-sdk/types": "3.36.0", + "@aws-sdk/eventstream-marshaller": "3.37.0", + "@aws-sdk/eventstream-serde-universal": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/eventstream-serde-universal": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-universal/-/eventstream-serde-universal-3.36.0.tgz", - "integrity": "sha512-suMcZFKH/Q2y3QCRpr0rSMYxvCoCKmv4JanuDqqjR5FuFQ1W+JfGCYPkJmMfwXzPzF9p+P/3NXFh3sflNtSYXQ==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-universal/-/eventstream-serde-universal-3.37.0.tgz", + "integrity": "sha512-e41oMHpi7OpW4ySXlE9/hJjcnhdDpGq/Yi0/uqwveXGi8UPzOEq8xGLDXXnABxnVTXw2QhYrWtAB89/cPClLEQ==", "requires": { - "@aws-sdk/eventstream-marshaller": "3.36.0", - "@aws-sdk/types": "3.36.0", + "@aws-sdk/eventstream-marshaller": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/fetch-http-handler": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.36.0.tgz", - "integrity": "sha512-Xhd55V12+m8GTHdJRQVlxsdzq3k5rNUMK/5t4ehJwLoYdo3yc2tjOytgUoD9qDyGPkAV8nnP/uM03QEuovEk9w==", - "requires": { - "@aws-sdk/protocol-http": "3.36.0", - "@aws-sdk/querystring-builder": "3.36.0", - "@aws-sdk/types": "3.36.0", - "@aws-sdk/util-base64-browser": "3.36.0", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.37.0.tgz", + "integrity": "sha512-cFFBW6OJSevI4QtGii4tZLNjGiLJjK5+f7E+V4AMTFnD7ZN/Q6D/SlHYm6huwRkhedIDGdRvUZVgoF6IPfnylw==", + "requires": { + "@aws-sdk/protocol-http": "3.37.0", + "@aws-sdk/querystring-builder": "3.37.0", + "@aws-sdk/types": "3.37.0", + "@aws-sdk/util-base64-browser": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/hash-blob-browser": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/hash-blob-browser/-/hash-blob-browser-3.36.0.tgz", - "integrity": "sha512-A+SmEvHPEf1+grMDfs8jtk9GVtG/Qs58VtPmsUq5yeUSme8Vor+MsOMfNjZ6QXD267HourMMSNNLBWzLNzTqjw==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/hash-blob-browser/-/hash-blob-browser-3.37.0.tgz", + "integrity": "sha512-CYoMRIz/Tha9gKFXsyEe8J7F9pBgn1CvkHw44AsCCpHsxQ+VhtTt7Gp7KkeIoZA8Hg7ptnkFNsOhWGospizo0g==", "requires": { - "@aws-sdk/chunked-blob-reader": "3.36.0", - "@aws-sdk/chunked-blob-reader-native": "3.36.0", - "@aws-sdk/types": "3.36.0", + "@aws-sdk/chunked-blob-reader": "3.37.0", + "@aws-sdk/chunked-blob-reader-native": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/hash-node": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.36.0.tgz", - "integrity": "sha512-+SbX7eE+DRGeK6VfxKa4SanlT3syEn512XkwGvPe51r/ojeTgAZf/PzlKh+ketGMsbwDwoF2uQaQo/dos8PGjA==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.37.0.tgz", + "integrity": "sha512-131zDh7szkeTeQM8AViKENmJzy7OEZNmxiybwOVaFBYvA/z+wrrmPdkQV0hLPXgPK4sGhtTM0iqnrT+j//R7bg==", "requires": { - "@aws-sdk/types": "3.36.0", - "@aws-sdk/util-buffer-from": "3.36.0", + "@aws-sdk/types": "3.37.0", + "@aws-sdk/util-buffer-from": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/hash-stream-node": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/hash-stream-node/-/hash-stream-node-3.36.0.tgz", - "integrity": "sha512-oNWxMyAxfQZ/pEGWA9AWNswdfnb3B7fE03kBOL6h4cO4G4OAFL6l3r3e9BH1m2CYc4zgn1ezXK3m4tP+K28PxQ==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/hash-stream-node/-/hash-stream-node-3.37.0.tgz", + "integrity": "sha512-WYR6hLiXQjYMlo20jsSy/vy2gVxqI6OibZ9Bupxs/+gUU/EtgJGux23YZ2xVaAMsoY53I46djRPhQotKHwjHSw==", "requires": { - "@aws-sdk/types": "3.36.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/invalid-dependency": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.36.0.tgz", - "integrity": "sha512-ArRPRY/5QmxmmAoMX1ukNPyOFic7CskZwDwFxnlFOzrsSaVuLkkqTW4SLV+xjVMHX8oINggj9Ufzgh3gj2oUaA==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.37.0.tgz", + "integrity": "sha512-p1iF+hCRoCqN5YG4MRCgcw0AmfYugn2yljwepvaubY8RSR4OwH76x8SURdiNMoLbEDrMZUHXkan9copTpfH6Xg==", "requires": { - "@aws-sdk/types": "3.36.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/is-array-buffer": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.36.0.tgz", - "integrity": "sha512-sglBYWZYeYmCxkVdol+W2HGazAwF6z3HvLETkDIKTzM80+xepCoEBGrJi1tWO+OMZxSJq1KV/u89fQuGouBeKQ==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.37.0.tgz", + "integrity": "sha512-XLjA/a6AuGnCvcJZLsMTy2jxF2upgGhqCCkoIJgLlzzXHSihur13KcmPvW/zcaGnCRj0SvKWXiJHl4vDlW75VQ==", "requires": { "tslib": "^2.3.0" } }, "@aws-sdk/md5-js": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/md5-js/-/md5-js-3.36.0.tgz", - "integrity": "sha512-C4xOIcqIa/rkzxaV6HwXxjchTHXcS8IfkpBcuEYB1DzDfuJEXo3ZfPJI6srGaU+7CzqYgd1eQ0bWk9A3jF0x+Q==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/md5-js/-/md5-js-3.37.0.tgz", + "integrity": "sha512-sOMqj2cGLsaInsKUJGxTDCHY1X/t8jA+Sm+zIVlkKpXPRcmLcLjl3NC58/ABpNBQy1Co1hPGFUq+dyTppjn03g==", "requires": { - "@aws-sdk/types": "3.36.0", - "@aws-sdk/util-utf8-browser": "3.36.0", - "@aws-sdk/util-utf8-node": "3.36.0", + "@aws-sdk/types": "3.37.0", + "@aws-sdk/util-utf8-browser": "3.37.0", + "@aws-sdk/util-utf8-node": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/middleware-apply-body-checksum": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-apply-body-checksum/-/middleware-apply-body-checksum-3.36.0.tgz", - "integrity": "sha512-dqiUCM9QJu+CfTnFL8v+E0+/f+eheVfifWntdd/JyQC0TGOmikqDqkbUDtguag6EgLTr9i37nKLAWH/PewXIhA==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-apply-body-checksum/-/middleware-apply-body-checksum-3.37.0.tgz", + "integrity": "sha512-PhnELMBsCY2P6pIUJ9Q0wnPVZ+1blHHvbzsDvGuFEf+GTvfkVfrvjlJy8QXaoDo6WEl3kB59xy+PN2eKwatBoQ==", "requires": { - "@aws-sdk/is-array-buffer": "3.36.0", - "@aws-sdk/protocol-http": "3.36.0", - "@aws-sdk/types": "3.36.0", + "@aws-sdk/is-array-buffer": "3.37.0", + "@aws-sdk/protocol-http": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/middleware-bucket-endpoint": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.36.0.tgz", - "integrity": "sha512-WgiZzlZMDp2HEvBe8xLsj2cG6OhtPuXb1L4tlU9XIUlM64Y3Phrxjo/aHI+wynmvF2/lqlcG4J+5NUpiH9AjYg==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.37.0.tgz", + "integrity": "sha512-0k32PGmeLv7+ih3X/5fqvQIlo8XuMrvXau3/bmMB/kJ8KKFZs8v82eK/GsPo8OLs6pZAYh1hBOG33dlQn5s4gw==", "requires": { - "@aws-sdk/protocol-http": "3.36.0", - "@aws-sdk/types": "3.36.0", - "@aws-sdk/util-arn-parser": "3.36.0", + "@aws-sdk/protocol-http": "3.37.0", + "@aws-sdk/types": "3.37.0", + "@aws-sdk/util-arn-parser": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/middleware-content-length": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.36.0.tgz", - "integrity": "sha512-3+3QYgXnIukhdeP8UHXb7E8vv9d61sUAN4hbEi4/Tg6ZZOUoeVfWZrQCQNTNBV07qoATdeGE+EaPgTJEOmiDig==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.37.0.tgz", + "integrity": "sha512-rsl4Fpxx5PBbPYrFIgCa/QfE+9dnCuJ+P/fx/LPxDkJwNfFZd3lq4M3IuTLpZEU6Wq9NdTTkyT47fyDc8UUKeA==", "requires": { - "@aws-sdk/protocol-http": "3.36.0", - "@aws-sdk/types": "3.36.0", + "@aws-sdk/protocol-http": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/middleware-expect-continue": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.36.0.tgz", - "integrity": "sha512-WOsWLqpJVe4InSZnh0SJmNuyFOb3tt+bGO9CywMzhydhE1EC504kn2EVHW4ukQUeSVyLZgh7O4Vxl+hQu8rw3w==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.37.0.tgz", + "integrity": "sha512-SVYqr4pxfEXfHprG7T7uiq4r4mkwSF/TlPz40n3ooD5GywmSzDxS0K2W9B0Gnh+pKfBvxfokwaPAOjLsYBwMGA==", "requires": { - "@aws-sdk/middleware-header-default": "3.36.0", - "@aws-sdk/protocol-http": "3.36.0", - "@aws-sdk/types": "3.36.0", + "@aws-sdk/middleware-header-default": "3.37.0", + "@aws-sdk/protocol-http": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/middleware-header-default": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-header-default/-/middleware-header-default-3.36.0.tgz", - "integrity": "sha512-KzhxyHAn+byf09G49PwiqrwCTI+DA2peF8uxRA7EAPMyLZUcjL/qSYwxhIf3on5ul4IkysvECF8RGGB+paQwNg==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-header-default/-/middleware-header-default-3.37.0.tgz", + "integrity": "sha512-3obXyhYjPVOBhmV9dBbjU4N0wFI7UtzTdmXh/UrawVksDiC64U/BbDkNDniCELyC/qqn/8VoKdraC56fk0mwLQ==", "requires": { - "@aws-sdk/protocol-http": "3.36.0", - "@aws-sdk/types": "3.36.0", + "@aws-sdk/protocol-http": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/middleware-host-header": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.36.0.tgz", - "integrity": "sha512-hN9HSMAE6um17TygJaQjAlM5fFJRneXB794OK/hMngibotQ90FogvbEWOPBRBW+LaWWemr39xdcb51PHsUSlbg==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.37.0.tgz", + "integrity": "sha512-xSYWu6acxufcAILXki9/mVLDK5FyxnBlNOuogeItamtJcRWh0vgIbUQswISNJNuJMa4AWXduYfRaM7IOqbiKmw==", "requires": { - "@aws-sdk/protocol-http": "3.36.0", - "@aws-sdk/types": "3.36.0", + "@aws-sdk/protocol-http": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/middleware-location-constraint": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.36.0.tgz", - "integrity": "sha512-lcKNfFLzDKLmsHOPv3fr0GqP02qimn7m69yDNTyDXKgzwkYPG36aIjCxX1Znaw1jZbAvtW6ErwEB+6BlN7Is1g==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.37.0.tgz", + "integrity": "sha512-ZK0qpwr3Ku4oYntmCGE8DUqNlMbICkoO6SP7Du2EqHfVSLbxAnNh9BKU4exgzgKt5HTKioYmKg3ykfnEAr1HCA==", "requires": { - "@aws-sdk/types": "3.36.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/middleware-logger": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.36.0.tgz", - "integrity": "sha512-Cl5yx5xNbm8nL6iI0iRjEmtT/ImoxZzU3eWpACglweyxgeF5nRDUMp5v9WthuCPCOjxrw2I95JOj5JOP+/QIXA==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.37.0.tgz", + "integrity": "sha512-CPOj+YPzUJiusgYaodXYDWpfWQrAJVh3TNZVNOtIsmesjyYFqhn416IZ3QGa03xukYn4NQ1nBgCTNgmQazYS2Q==", "requires": { - "@aws-sdk/types": "3.36.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/middleware-retry": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.36.0.tgz", - "integrity": "sha512-qFHFQ7KmwpD8eRCsbN4vaisidlRi/rzegns5/3PZU0wygQ2obTi2NnKJJr0dWSG6XqPhBmUv0YleIh9LQZimuQ==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.37.0.tgz", + "integrity": "sha512-+//D+79AtyZ9wsL5fRnt75P4eiU/UA2o530mA4gtsC2/ffHn9jAHPCCurC6mRNAfObvM2aiTK1pcVs0exX5LtA==", "requires": { - "@aws-sdk/protocol-http": "3.36.0", - "@aws-sdk/service-error-classification": "3.36.0", - "@aws-sdk/types": "3.36.0", + "@aws-sdk/protocol-http": "3.37.0", + "@aws-sdk/service-error-classification": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0", "uuid": "^8.3.2" } }, "@aws-sdk/middleware-sdk-s3": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.36.0.tgz", - "integrity": "sha512-40477uh2rEBEU2L/Hhvih+/a9mFvCPRvz9kLOjYYmHaLkAVRBHWsMatNgNIs/8qsaWQXq7a1PBejDPDyXkLivw==", - "requires": { - "@aws-sdk/protocol-http": "3.36.0", - "@aws-sdk/signature-v4": "3.36.0", - "@aws-sdk/types": "3.36.0", - "@aws-sdk/util-arn-parser": "3.36.0", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.37.0.tgz", + "integrity": "sha512-NS8EISg8CcljdgFtFTz8aTFKsRqRUj59S2eXmMe2Hrqev5jORJBjw9aOOrJmr6B4LBJEKuKFBb04TiwotpjhFg==", + "requires": { + "@aws-sdk/protocol-http": "3.37.0", + "@aws-sdk/signature-v4": "3.37.0", + "@aws-sdk/types": "3.37.0", + "@aws-sdk/util-arn-parser": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/middleware-sdk-sts": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.36.0.tgz", - "integrity": "sha512-W4b09/mfNqFNoxJxI0L2FjKEadhtYIBNkL8kh4fL40ax7zBL1Q7El9ZKueBezyN1EbYRui+tym39x9eEYZwTWw==", - "requires": { - "@aws-sdk/middleware-signing": "3.36.0", - "@aws-sdk/property-provider": "3.36.0", - "@aws-sdk/protocol-http": "3.36.0", - "@aws-sdk/signature-v4": "3.36.0", - "@aws-sdk/types": "3.36.0", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.37.0.tgz", + "integrity": "sha512-NfQ6NINwhBYgzkpzQdH3ULZ8CbOLmojcsd6qR7lLOy00rI4RT5KiI7GkoDuNMo49qz57cWFROlpfCoz+yY2yTg==", + "requires": { + "@aws-sdk/middleware-signing": "3.37.0", + "@aws-sdk/property-provider": "3.37.0", + "@aws-sdk/protocol-http": "3.37.0", + "@aws-sdk/signature-v4": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/middleware-serde": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.36.0.tgz", - "integrity": "sha512-KuQIt3Cq+FC2UlQ/PMYQACnSK4v/fkV0dHqTjICuCi0Tft17HtkXU6rFLbIAbkM1wCp1OhyHFjHHDESvvjdmGA==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.37.0.tgz", + "integrity": "sha512-7ZdSF1T0k5y4ErB0BmSCZ/8J2WfRQFOmDPxkF6a5O18bEWu9RMhLD2JO5x1cZw2kHPOmJq3BOlfvCCJe8c42Rg==", "requires": { - "@aws-sdk/types": "3.36.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/middleware-signing": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.36.0.tgz", - "integrity": "sha512-nx+IJE2YFxHF+ap4mOUSVP7WmXMgtHgC/QM97pcd03RtUhsNsu0rmv5HOmyl5MduP/NjGdRdF3Ng+MP2q2aTpg==", - "requires": { - "@aws-sdk/property-provider": "3.36.0", - "@aws-sdk/protocol-http": "3.36.0", - "@aws-sdk/signature-v4": "3.36.0", - "@aws-sdk/types": "3.36.0", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.37.0.tgz", + "integrity": "sha512-iV/xcNqTTidc07VcRf5+f4YgnUX0NS1ff7l5wbB80u7u9B8G1trjZOLruM/q+5SesNigQ3trA0P+jdo5LrIk8w==", + "requires": { + "@aws-sdk/property-provider": "3.37.0", + "@aws-sdk/protocol-http": "3.37.0", + "@aws-sdk/signature-v4": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/middleware-ssec": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.36.0.tgz", - "integrity": "sha512-73P+q51tZRpW2Q+f0rbv3aWLulkvDsYixNnNjY9k10pKN30Nld1kIF0EYecJZCrR769GGeUGROXU4pvwu19EXQ==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.37.0.tgz", + "integrity": "sha512-IAVqvx+RG/r01V7awz5JdVqyVo9QTbKggXWpwCySZlQOLhctzl9bsi9+NFaha1RBMNRh7uyDICh3+qqMOWL62g==", "requires": { - "@aws-sdk/types": "3.36.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/middleware-stack": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.36.0.tgz", - "integrity": "sha512-9BWJ25nGQET23CiukmdGw0njDhl+uTUZ8CwO4VQwklmK9x8Y+NFE7k2RCp5m3GxEvn07oJ3FlWK5WE4LLmu4Pw==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.37.0.tgz", + "integrity": "sha512-rsh7IlFZhdmHnT0BhxLe2cPK+6tXBDixN7vhYMRmluRis8OvTy10CvfOxN+JwkVCjyGs0LW5QupFCi6e00EHng==", "requires": { "tslib": "^2.3.0" } }, "@aws-sdk/middleware-user-agent": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.36.0.tgz", - "integrity": "sha512-n2Poao1alyrKu8a5vcOW9hFIRHrnAlKtUvlItQWSVxgVHQhrYkBJycRW/qh1BKLxt1S+EUPTMTVS4i0XGYOqSw==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.37.0.tgz", + "integrity": "sha512-jkl9u1FyQyffL9JFyCjOCwjbOJuILUWubcGdfoW3qVF4+d5Wnc9X1DVIW2dn52RYNL5pEYPbqxm2EYOGWuG1Iw==", "requires": { - "@aws-sdk/protocol-http": "3.36.0", - "@aws-sdk/types": "3.36.0", + "@aws-sdk/protocol-http": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/node-config-provider": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.36.0.tgz", - "integrity": "sha512-tn1ToARM3iPXh1BZxzv5OgqBvXIAZaWV+sZ/Ns1GY7r5oy9JA2Z3Q/VG49POrY2gL5q1QaGAs/5WiBc6TEEE6Q==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.37.0.tgz", + "integrity": "sha512-1ZCX3BGrFO0WEcI9tlDIGqrlWzGM3jbXkWGAyzXgXXFt7dxZ358z+aexY5uJfZj48NP4NUEXLXzbrjrZXn4TwA==", "requires": { - "@aws-sdk/property-provider": "3.36.0", - "@aws-sdk/shared-ini-file-loader": "3.36.0", - "@aws-sdk/types": "3.36.0", + "@aws-sdk/property-provider": "3.37.0", + "@aws-sdk/shared-ini-file-loader": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/node-http-handler": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.36.0.tgz", - "integrity": "sha512-hfmiEw498YNS/maPVLqQaXvfE6zygGgCsQcD/r8AHdI3vuoNk0fMr6Ys9EhTr9cjBATRDej3Yq7PMKMylsnaiw==", - "requires": { - "@aws-sdk/abort-controller": "3.36.0", - "@aws-sdk/protocol-http": "3.36.0", - "@aws-sdk/querystring-builder": "3.36.0", - "@aws-sdk/types": "3.36.0", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.37.0.tgz", + "integrity": "sha512-fknvIzKyJ4d8AipCMQqQPgX2mUf5ePJA2QFjpEfCB20GVjE5eq1tC9wMR+AjXO9ZWuoPBvLkEsB4Xg6qBf430A==", + "requires": { + "@aws-sdk/abort-controller": "3.37.0", + "@aws-sdk/protocol-http": "3.37.0", + "@aws-sdk/querystring-builder": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/property-provider": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.36.0.tgz", - "integrity": "sha512-/+XvcAClcpaV0ufcC7r7mYq7MWRk9gsSWWw2nlb8O4Yj1r7bQyg3WsR4gCd9bxL8uUJn4xCD5nvVp3pLzgOsRg==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.37.0.tgz", + "integrity": "sha512-puXV4MIj+n9Pr4KbwpOz6+nK7gmJAgAOZW/yKXxyWH4fTcrCVe9xuo5kqaiI1gb5ojaNt2GuISBFR7bVLumh9Q==", "requires": { - "@aws-sdk/types": "3.36.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/protocol-http": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.36.0.tgz", - "integrity": "sha512-8uSVHoboZh9oNG4oCf0sVmZDB5HDY0CiWcX22ELqvYpia96gIp/n1AHru7aEbD++uHB3w+VPbHABOXDD6dxqmg==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.37.0.tgz", + "integrity": "sha512-mx/KBlwpgTK1v4n1MgYaz5OTVH+PwomhIFYvciM5ZoVbkfhMvIS2haaP5/FrOl/BxLSzf4W1M031KAngdDcndw==", "requires": { - "@aws-sdk/types": "3.36.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/querystring-builder": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.36.0.tgz", - "integrity": "sha512-l+ngIoBDKoarU8Pdi2InIKGhzl7/pnAMmAE8HMC9EIFDPwpdyOVd8HQFT8+Ot3nlvHiZC8OzpRTTwS0sXIhLEQ==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.37.0.tgz", + "integrity": "sha512-3M32yk6FjneO3psCGb8uLwM1pPUz6IytE0iQyLoBSD7uFnUxBbPdp8JlLzh0AgMZ97TIW/SqF0NHFYR3Nt6ZMQ==", "requires": { - "@aws-sdk/types": "3.36.0", - "@aws-sdk/util-uri-escape": "3.36.0", + "@aws-sdk/types": "3.37.0", + "@aws-sdk/util-uri-escape": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/querystring-parser": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.36.0.tgz", - "integrity": "sha512-ZRqJaWnuZLx7c0iTrUr1Se4rEuAlrS3+gzNaraheJasUCVTSXGqHYSGuV8y83/hKnwMra4r9ITd8SzTHuHPTzA==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.37.0.tgz", + "integrity": "sha512-jdijX1bdk/L7JVfN4mrrnNwcq4Hkcb0hNq0z2YR7KO+jc+4OJxVcV79uVDk6aqb94wVkIq/wntwiisPRV5SRlQ==", "requires": { - "@aws-sdk/types": "3.36.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/service-error-classification": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.36.0.tgz", - "integrity": "sha512-y3m/Gc1kSZBX1Dvg3lnu3TxteW2WqjFGc5Y1XBqjOdmQ5JmE1GZz+s9inGfP6N/5v56qQfhTeVCABh1Anq+jEw==" + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.37.0.tgz", + "integrity": "sha512-HFYr+kfOIXcFH2Y9KgiJF92kDle2cml0KudCyK4Mhy8j54IqQyKlnB7MlO+LtmUubG8WVyQO0rC1ZNh5uNSn3w==" }, "@aws-sdk/shared-ini-file-loader": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.36.0.tgz", - "integrity": "sha512-4Xb40+nmfT+qjmHfC17bC96bTME01k+axhSX1GkPH6PlrZrR3ICuq59JLn7SJprw8x7/HHa1HmYpCR1tbkXjNw==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.37.0.tgz", + "integrity": "sha512-+vRBSlfa48R9KL7DpQt3dsu5/+5atjRgoCISblWo3SLpjrx41pKcjKneo7a1u0aP1Xc2oG2TfIyqTWZuOXsmEQ==", "requires": { "tslib": "^2.3.0" } }, "@aws-sdk/signature-v4": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.36.0.tgz", - "integrity": "sha512-R17pRSxUYai0rBDAQPMXp/9kC1BewciJlkfP2Lztvp09KqEOqkHTzS3/vHm5W2lStQi+LThAjtG7vADSJIJ9Vg==", - "requires": { - "@aws-sdk/is-array-buffer": "3.36.0", - "@aws-sdk/types": "3.36.0", - "@aws-sdk/util-hex-encoding": "3.36.0", - "@aws-sdk/util-uri-escape": "3.36.0", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.37.0.tgz", + "integrity": "sha512-m0TTIBd/Mc/LJysusrXPg5S6U15w3QOtS+FQWLGcJxmLxkrSq65+wEyMOepcbYVT524XrvxMNxjhjdEI6TRnYg==", + "requires": { + "@aws-sdk/is-array-buffer": "3.37.0", + "@aws-sdk/types": "3.37.0", + "@aws-sdk/util-hex-encoding": "3.37.0", + "@aws-sdk/util-uri-escape": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/signature-v4-crt": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-crt/-/signature-v4-crt-3.36.0.tgz", - "integrity": "sha512-pAM7Sw1VM45yY81F6pvLouK87eczP30dqNTc4aP+hWcR6xlCrYuUsQFODY3dyWBrFTxz04pPAPqt9c/CDaWg9w==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-crt/-/signature-v4-crt-3.37.0.tgz", + "integrity": "sha512-1TMoANahjKtpnLVhhA0/zoZv6UiVLSQheK7k4wo8a1e5FELW21lt/0QagNxje6TZmVemgOdExpsrUM5vY/Wn3Q==", "peer": true, "requires": { - "@aws-sdk/is-array-buffer": "3.36.0", - "@aws-sdk/querystring-parser": "3.36.0", - "@aws-sdk/signature-v4": "3.36.0", - "@aws-sdk/util-hex-encoding": "3.36.0", - "@aws-sdk/util-uri-escape": "3.36.0", + "@aws-sdk/is-array-buffer": "3.37.0", + "@aws-sdk/querystring-parser": "3.37.0", + "@aws-sdk/signature-v4": "3.37.0", + "@aws-sdk/util-hex-encoding": "3.37.0", + "@aws-sdk/util-uri-escape": "3.37.0", "aws-crt": "^1.9.7", "tslib": "^2.3.0" } }, "@aws-sdk/smithy-client": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.36.0.tgz", - "integrity": "sha512-uYX4M7pNj+Vf4JuVOL0p+tAIKNHg2i7GgNyVlcELdaLFMIFfViJ2cMF72KqHA5xssnc9BHX/pR/0LS5PhBCYRg==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.37.0.tgz", + "integrity": "sha512-yODcUbVN+nyWm57M8zJdkSoaAKJZJg2PIc38j1PtT5Qts+yjiaOzwI8VWMbBf1RhC/Iizb0rt7UDnZgxCevbyQ==", "requires": { - "@aws-sdk/middleware-stack": "3.36.0", - "@aws-sdk/types": "3.36.0", + "@aws-sdk/middleware-stack": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/types": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.36.0.tgz", - "integrity": "sha512-OeaTDZqo4OfGahgsZF2viOWxSSNColEUf8RbKAWNlke3nkMu3JW8kkft1Qte6jvoQxZ3jOQWi33Z4LUxix/V7A==" + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.37.0.tgz", + "integrity": "sha512-KwHB06E1uxof5ijfcQXYidyihoCRMnHEFvWCy/VlL+1S54FTlMZ27JOZzQhLiw8NqeNfO33aqpMkxR60TwUZzg==" }, "@aws-sdk/url-parser": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.36.0.tgz", - "integrity": "sha512-3l0iY9lx7dqEEyeKEB5IV92nFSYFAqwnD9cvJ6qmv5bheAgoizykugRMiT5U5DFGh5WYOHAh0Zkedqq87vJZOA==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.37.0.tgz", + "integrity": "sha512-X87ZQz/viHMjVVX20unU7adsRO+JUrRWgyWUmCLOQpsLM7bdjES2sR3yEdFKBmgvC9hRQraDtTlJVwL5nLDE0Q==", "requires": { - "@aws-sdk/querystring-parser": "3.36.0", - "@aws-sdk/types": "3.36.0", + "@aws-sdk/querystring-parser": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/util-arn-parser": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.36.0.tgz", - "integrity": "sha512-C1H1uiJEkXiE7636kjdiK/vBZc1IgRf3dmwqM7slS0JN9xb81tmFFmS0GPSCS5ghkZIbfg6G48bk9MYmymBn4g==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.37.0.tgz", + "integrity": "sha512-njIYn8gzm7Ms17A2oEu0vN/0GJpgq7cNFFtzBrM1cPtrc1jhMRJx5hzS7uX5h6ll8BM92bA3y00evRZFHxQPVQ==", "requires": { "tslib": "^2.3.0" } }, "@aws-sdk/util-base64-browser": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64-browser/-/util-base64-browser-3.36.0.tgz", - "integrity": "sha512-N8Ej1C5rea8QSoU8Aomh9hpcGA1p/lEw6jIQQJ6yAKOUPk3y/XIhmJLj7nkIbL1LoRmS5seNqlaFilEBDDUxQw==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64-browser/-/util-base64-browser-3.37.0.tgz", + "integrity": "sha512-o4s/rHVm5k8eC/T7grJQINyYA/mKfDmEWKMA9wk5iBroXlI2rUm7x649TBk5hzoddufk/mffEeNz/1wM7yTmlg==", "requires": { "tslib": "^2.3.0" } }, "@aws-sdk/util-base64-node": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64-node/-/util-base64-node-3.36.0.tgz", - "integrity": "sha512-Lum6NUvfJuzCikeWjwBBKZR8cveVzwpGM6kCYEtLzFrc41vCf1bdUFwG05v6J0cAyUz9ULjJ/5P/RV27ddqTfQ==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64-node/-/util-base64-node-3.37.0.tgz", + "integrity": "sha512-1UPxly1GPrGZtlIWvbNCDIAund4Oyp8cFi9neA43TeNACvrmEQu/nG01pDbOoo0ENoVSVJrNAVBeqKEpqjH2GA==", "requires": { - "@aws-sdk/util-buffer-from": "3.36.0", + "@aws-sdk/util-buffer-from": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/util-body-length-browser": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.36.0.tgz", - "integrity": "sha512-6iSpqACjRVaG0J//zfPCcGb4Dy+7a/SQIWPg+dvDt3kV36oUYUpjE5UurlniONL4tntXs28WsiGJkJ8SQ+wefA==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.37.0.tgz", + "integrity": "sha512-tClmH1uYelqWT43xxmnOsVFbCQJiIwizp6y4E109G2LIof07inxrO0L8nbwBpjhugVplx6NZr9IaqTFqbdM1gA==", "requires": { "tslib": "^2.3.0" } }, "@aws-sdk/util-body-length-node": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.36.0.tgz", - "integrity": "sha512-19Qnr3AyInJes3LSlcf21Gw+e872ZeXHz59it91UvHX0bDqteJ7hjKG9g3PwA4z68JDTh+cL0zsUGlXQbaCv8w==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.37.0.tgz", + "integrity": "sha512-aY3mXdbEajruRi9CHgq/heM89R+Gectj/Xrs1naewmamaN8NJrvjDm3s+cw//lqqSOW903LYHXDgm7wvCzUnFA==", "requires": { "tslib": "^2.3.0" } }, "@aws-sdk/util-buffer-from": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.36.0.tgz", - "integrity": "sha512-5HUsLHUQWOt87HeM6BO42BW1tCsD2UyJPdub7ME/r6NjpUNHsDHQP1j4MrqKFh7RbPUkdIF5s4/0VK5yoHQC4A==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.37.0.tgz", + "integrity": "sha512-aa3SBwjLwImuJoE4+hxDIWQ9REz3UFb3p7KFPe9qopdXb/yB12RTcbrXVb4whUux4i4mO6KRij0ZNjFZrjrKPg==", "requires": { - "@aws-sdk/is-array-buffer": "3.36.0", + "@aws-sdk/is-array-buffer": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/util-credentials": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-credentials/-/util-credentials-3.36.0.tgz", - "integrity": "sha512-5+XZL8ARDZGGhVDoBZNzS2Y6EJLGtsMkJbihZSMrHybljrLcYV0aM+Szqeotic9Zces5G4u5ZrN53IkXlLiY5Q==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-credentials/-/util-credentials-3.37.0.tgz", + "integrity": "sha512-zcLhSZDKgBLhUjSU5HoQpuQiP3v8oE86NmV/tiZVPEaO6YVULEAB2Cfj1hpM/b/JXWzjSHfT06KXT7QUODKS+A==", "requires": { - "@aws-sdk/shared-ini-file-loader": "3.36.0", + "@aws-sdk/shared-ini-file-loader": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/util-hex-encoding": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.36.0.tgz", - "integrity": "sha512-idqvxxGpitTt2UryXk+oy5dFHNVER1GOzexmNZG2JDtqJRfcJyx+gy+Q/HpQFxty1q3/5jxoYQW3KIpsqx7djw==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.37.0.tgz", + "integrity": "sha512-tn5UpfaeM+rZWqynoNqB8lwtcAXil5YYO3HLGH9himpWAdft/2Z7LK6bsYDpctaAI1WHgMDcL0bw3Id04ZUbhA==", "requires": { "tslib": "^2.3.0" } }, "@aws-sdk/util-locate-window": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.36.0.tgz", - "integrity": "sha512-w5k3siBOGy7bAfZG/p0WIHpedHNb4OQ0wUSDNvd6Kzn4dkqHPTWoA1NrCEuFk9Gwkrr1yNKxgVlo0SCtgznxPw==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.37.0.tgz", + "integrity": "sha512-NvDCfOhLLVHp27oGUUs8EVirhz91aX5gdxGS7J/sh5PF0cNN8rwaR1vSLR7BxPmJHMO7NH7i9EwiELfLfYcq6g==", "requires": { "tslib": "^2.3.0" } }, "@aws-sdk/util-uri-escape": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.36.0.tgz", - "integrity": "sha512-2JW6lj5OUhoWxMCFpCS/ADXrzuEkjx/djjJuEJ3aFcHUH0uBUJGYtM7Kz5Vot5PcE/KBVe+fsi3wczoFpK+iag==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.37.0.tgz", + "integrity": "sha512-8pKf4YJTELP5lm/CEgYw2atyJBB1RWWqFa0sZx6YJmTlOtLF5G6raUdAi4iDa2hldGt2B6IAdIIyuusT8zeU8Q==", "requires": { "tslib": "^2.3.0" } }, "@aws-sdk/util-user-agent-browser": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.36.0.tgz", - "integrity": "sha512-pCHWQF85Aexrdtgd/hVGp5nHkqVt4+Ypse0J6Q2hs4pmu70HydnDDPRCimTquTsV3ni1M7mJGBMiTn7/qcjqyQ==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.37.0.tgz", + "integrity": "sha512-GP8qfAjYMGyVCzTw8pVVtGWo3bEbDJmOiDAPXNF4c2ErTwvNmEK1LgEm+12lhVD323iqSCDgn8SDCsOfqtYm0Q==", "requires": { - "@aws-sdk/types": "3.36.0", + "@aws-sdk/types": "3.37.0", "bowser": "^2.11.0", "tslib": "^2.3.0" } }, "@aws-sdk/util-user-agent-node": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.36.0.tgz", - "integrity": "sha512-4OXZf2IYNBDkNPvptAQVztjF2Ov9s8vx1kAoHQx9LuKXV8FrhygU9DcMFlFkAXOeUkGDtWvok0n6horQ5/KNJA==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.37.0.tgz", + "integrity": "sha512-VbN4iaQCfBRYAIDtuv/hyOaNWa8NZkjfPigkPpserN0WDbBcu3k2uDuGA9fuz2SkmFsbcG1TyR44e02BNYks0w==", "requires": { - "@aws-sdk/node-config-provider": "3.36.0", - "@aws-sdk/types": "3.36.0", + "@aws-sdk/node-config-provider": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/util-utf8-browser": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.36.0.tgz", - "integrity": "sha512-xVUtGIemnh2gD+1s6DZzdGNlgVxHXKlR/sT4G1afysifKrbyXMbh2Z3Ez+BgunWXQRbVXFmNQXHKHYuebMDe5w==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.37.0.tgz", + "integrity": "sha512-tuiOxzfqet1kKGYzlgpMGfhr64AHJnYsFx2jZiH/O6Yq8XQg43ryjQlbJlim/K/XHGNzY0R+nabeJg34q3Ua1g==", "requires": { "tslib": "^2.3.0" } }, "@aws-sdk/util-utf8-node": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-node/-/util-utf8-node-3.36.0.tgz", - "integrity": "sha512-Yu0I2QDAzLShC9WVHyzRgPDgbwkDHK2lthtIMpRJ3s5kedUzXxbNqFKekrUihfODJMJGnrgDQp/rUq7hWjGciA==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-node/-/util-utf8-node-3.37.0.tgz", + "integrity": "sha512-fUAgd7UTCULL36j9/vnXHxVhxvswnq23mYgTCIT8NQ7wHN30q2a89ym1e9DwGeQkJEBOkOcKLn6nsMsN7YQMDQ==", "requires": { - "@aws-sdk/util-buffer-from": "3.36.0", + "@aws-sdk/util-buffer-from": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/util-waiter": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-waiter/-/util-waiter-3.36.0.tgz", - "integrity": "sha512-lHBBg6n29yphB3J+UQkZb93FjOFxVSEs1jqtk77lCYp3Ugz0LwiSDHgQePMomwSP3HMR6Iqb3pAlkTivTW45sg==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-waiter/-/util-waiter-3.37.0.tgz", + "integrity": "sha512-toH5SolyKdTYH4aYME1MIofp5/v1kdfd9u0vugRGL2/ET2dNgx4VpdwIeyY8mIVsNhGw1PhWcc9CMq3fjedI+g==", "requires": { - "@aws-sdk/abort-controller": "3.36.0", - "@aws-sdk/types": "3.36.0", + "@aws-sdk/abort-controller": "3.37.0", + "@aws-sdk/types": "3.37.0", "tslib": "^2.3.0" } }, "@aws-sdk/xml-builder": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.36.0.tgz", - "integrity": "sha512-3YYLKjR/ow7WQB1gJZRO7gWmNPi+fzPE8sPIYVwLCmqP03Z6UnaFIPv373ZW/HQUunRTo/AeSdnyrFAeK3XO7g==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.37.0.tgz", + "integrity": "sha512-Vf0f4ZQ+IBo/l9wUaTOXLqqQO9b/Ll5yPbg+EhHx8zlHbTHIm89ettkVCGyT/taGagC1X+ZeTK9maX6ymEOBow==", "requires": { "tslib": "^2.3.0" } @@ -23685,9 +23929,9 @@ } }, "@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -23820,9 +24064,9 @@ "integrity": "sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw==" }, "@ipld/car": { - "version": "3.1.18", - "resolved": "https://registry.npmjs.org/@ipld/car/-/car-3.1.18.tgz", - "integrity": "sha512-THOv4aYVojfcFNnhMvS1acRTMGIshnBeoLqms1a+jjKx6Z+3CM/y8BhJeLq4jNBKijxHApus7+ikHkC5UbfEHA==", + "version": "3.1.19", + "resolved": "https://registry.npmjs.org/@ipld/car/-/car-3.1.19.tgz", + "integrity": "sha512-uHQYA9f/WV2xTNITZf451kgFM66JGZW0xMRn/ckkSlHPFpAqta2QSuViQ8ElnnCeMAm340/byCbzxYfPv4kycg==", "requires": { "@ipld/dag-cbor": "^6.0.0", "@types/varint": "^6.0.0", @@ -23831,18 +24075,18 @@ } }, "@ipld/dag-cbor": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/@ipld/dag-cbor/-/dag-cbor-6.0.11.tgz", - "integrity": "sha512-W9hpFAFS7+n0orqlq7w06ADeORealpTJ92jQZBZDywYMjOlcVfVKKKkVgCq/pUbwlSRqip+9kgzEvdfd5N3zcQ==", + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@ipld/dag-cbor/-/dag-cbor-6.0.12.tgz", + "integrity": "sha512-CZRiXFEMtbEoZq5x2vR6xXtsycbYml2C+4eKFxzwyFjLsAGVbk6MZFnMtiO/dphz+ZVLPwnHU5hOL5uJ+Lf7yw==", "requires": { "cborg": "^1.2.1", "multiformats": "^9.0.0" } }, "@ipld/dag-json": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@ipld/dag-json/-/dag-json-8.0.1.tgz", - "integrity": "sha512-+vl+mCeHWOih269/+E2oQ3vWnDSt9K5PKvnwrmwzgFJw3u/UHwbi4RwdYpvLupvDIkKNnGGURQYdxh35DlHsSw==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@ipld/dag-json/-/dag-json-8.0.2.tgz", + "integrity": "sha512-G4EzQKwAjmYeQwIWwYCauFMUWxI2CCPJzxdfU/hhy9hqLhRB3GfQsqSoJKDpCtCmGmBDUpBXtGnVrYH72Dqq3w==", "dev": true, "requires": { "cborg": "^1.4.0", @@ -23850,9 +24094,9 @@ } }, "@ipld/dag-pb": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/@ipld/dag-pb/-/dag-pb-2.1.11.tgz", - "integrity": "sha512-M4PMBlKErEffK/APnmQ/78M+YouQ7L5w2Llpl9U6MgDXtfPisD5zQHxxDE8yYW1Ume45+suB1tBPF0uSdNQQEg==", + "version": "2.1.12", + "resolved": "https://registry.npmjs.org/@ipld/dag-pb/-/dag-pb-2.1.12.tgz", + "integrity": "sha512-fNAtr4RnPU2N+QBEfPxwry2zOe6t10s1KdyisTL7i/Ct3m8p2lDfg4Zs3EmgSBXvXVrMJ0cIsxK1D/J4b/mwvw==", "requires": { "multiformats": "^9.0.0" } @@ -23986,9 +24230,9 @@ "integrity": "sha512-CvVUPTF9tSLNFA4JhcAFjheiqWyVp9r9ooy/AheK+0rWRZCxE5QCwc81d2FduDTqzEJZeUV9+9F9R0AplhnX7w==" }, "@multiformats/murmur3": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@multiformats/murmur3/-/murmur3-1.0.4.tgz", - "integrity": "sha512-skwYQeIVDxUhqJngCjzC9ZV3cSYkrHsyq2T4DDiMR2QAPkyv6JsKMCXj7FEhrgDqx5fB4Bkxv6+VLVNlDBbzJQ==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@multiformats/murmur3/-/murmur3-1.0.5.tgz", + "integrity": "sha512-1AUn8G4C5DgVJQg/KDzCv3/gsao6W3yt78Q+mgXDQ3JjbcHbu7ZgrMfSYj5bc2Wfz05MiQSZRcwGIyiiTfECPQ==", "requires": { "multiformats": "^9.4.1", "murmurhash3js-revisited": "^3.0.0" @@ -24227,9 +24471,9 @@ } }, "@rollup/plugin-node-resolve": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.5.tgz", - "integrity": "sha512-mVaw6uxtvuGx/XCI4qBQXsDZJUfyx5vp39iE0J/7Hd6wDhEbjHr6aES7Nr9yWbuE0BY+oKp6N7Bq6jX5NCGNmQ==", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.6.tgz", + "integrity": "sha512-sFsPDMPd4gMqnh2gS0uIxELnoRUp5kBl5knxD2EO0778G1oOJv4G1vyT2cpWz75OU2jDVcXhjVUuTAczGyFNKA==", "dev": true, "requires": { "@rollup/pluginutils": "^3.1.0", @@ -24260,9 +24504,9 @@ } }, "@sentry/cli": { - "version": "1.69.1", - "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-1.69.1.tgz", - "integrity": "sha512-HxO7vjqSvWfc9L5A/ib3UB1mXKFNiORY9BXwtYTo38jv4ROrKDFz36IzHsD6nPFuv8+6iDVyNlEujK/n9NvRyw==", + "version": "1.70.1", + "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-1.70.1.tgz", + "integrity": "sha512-pab3nU3rNsq1HKKmJP2ITDl5cGi+QbQ5eLX6ELaeAbN2eAzfndHu2rTqlnjJAKcYQg6l9gFBn8vvY2xAeRJb6Q==", "dev": true, "requires": { "https-proxy-agent": "^5.0.0", @@ -24357,12 +24601,12 @@ } }, "@sentry/webpack-plugin": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/@sentry/webpack-plugin/-/webpack-plugin-1.18.1.tgz", - "integrity": "sha512-maEnHC0nxRnVgAz0qvKvhTGy+SxneR8MFjpgNMvh9CyAB6GEM9VQI1hzxTcAd7Qk90qGW8W4eUmB+ZX8nMrM1w==", + "version": "1.18.3", + "resolved": "https://registry.npmjs.org/@sentry/webpack-plugin/-/webpack-plugin-1.18.3.tgz", + "integrity": "sha512-Qk3Jevislc5DZK0X/WwRVcOtO7iatnWARsEgTV/TuXvDN+fUDDpD/2MytAWAbpLaLy3xEB/cXGeLsbv6d1XNkQ==", "dev": true, "requires": { - "@sentry/cli": "^1.68.0" + "@sentry/cli": "^1.70.1" } }, "@sindresorhus/df": { @@ -24418,9 +24662,9 @@ "dev": true }, "@supabase/postgrest-js": { - "version": "0.34.0", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-0.34.0.tgz", - "integrity": "sha512-5n0fljeojwNvRrvwCoZPcSYDADr3fEJtvpLW7T3f+g+Mxgg8C8gHmuXfhYg0vzC7Jm/ldEWoZY98bN/ZAQs4cA==", + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-0.34.1.tgz", + "integrity": "sha512-64RQhBpwZDXOpPRCHqrCrlVcyPWE/p4nH6/ALnJCvTkQHkyzXNPDoTlX6OjbuyMH9/BNvgVhEZth0e6hfpWDXw==", "requires": { "cross-fetch": "^3.0.6" } @@ -24574,9 +24818,9 @@ "dev": true }, "@types/eslint": { - "version": "7.28.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.1.tgz", - "integrity": "sha512-XhZKznR3i/W5dXqUhgU9fFdJekufbeBd5DALmkuXoeFcjbQcPk+2cL+WLHf6Q81HWAnM2vrslIHpGVyCAviRwg==", + "version": "7.28.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.2.tgz", + "integrity": "sha512-KubbADPkfoU75KgKeKLsFHXnU4ipH7wYg0TRT33NK3N3yiu7jlFAAoygIWBV+KbuHx/G+AvuGX6DllnK35gfJA==", "devOptional": true, "requires": { "@types/estree": "*", @@ -24655,9 +24899,9 @@ "dev": true }, "@types/node": { - "version": "16.10.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.9.tgz", - "integrity": "sha512-H9ReOt+yqIJPCutkTYjFjlyK6WEMQYT9hLZMlWtOjFQY2ItppsWZ6RJf8Aw+jz5qTYceuHvFgPIaKOHtLAEWBw==" + "version": "16.11.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.3.tgz", + "integrity": "sha512-aIYL9Eemcecs1y77XzFGiSc+FdfN58k4J23UEe6+hynf4Wd9g4DzQPwIKL080vSMuubFqy2hWwOzCtJdc6vFKw==" }, "@types/normalize-package-data": { "version": "2.4.1", @@ -24705,18 +24949,18 @@ } }, "@types/react-copy-to-clipboard": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@types/react-copy-to-clipboard/-/react-copy-to-clipboard-5.0.1.tgz", - "integrity": "sha512-CDuRrJWEIdfKFC4vbwpXT3vk0O4gA/I/Kxu/1npUvGc2Yey5swPvsgO3JEnQkIUwdnYUbwUYDE/fTFQVgqr4oA==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@types/react-copy-to-clipboard/-/react-copy-to-clipboard-5.0.2.tgz", + "integrity": "sha512-O29AThfxrkUFRsZXjfSWR2yaWo0ppB1yLEnHA+Oh24oNetjBAwTDu1PmolIqdJKzsZiO4J1jn6R6TmO96uBvGg==", "dev": true, "requires": { "@types/react": "*" } }, "@types/react-dom": { - "version": "17.0.9", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.9.tgz", - "integrity": "sha512-wIvGxLfgpVDSAMH5utdL9Ngm5Owu0VsGmldro3ORLXV8CShrL8awVj06NuEXFQ5xyaYfdca7Sgbk/50Ri1GdPg==", + "version": "17.0.10", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.10.tgz", + "integrity": "sha512-8oz3NAUId2z/zQdFI09IMhQPNgIbiP8Lslhv39DIDamr846/0spjZK0vnrMak0iB8EKb9QFTTIdg2Wj2zH5a3g==", "dev": true, "requires": { "@types/react": "*" @@ -26629,9 +26873,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001267", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001267.tgz", - "integrity": "sha512-r1mjTzAuJ9W8cPBGbbus8E0SKcUP7gn03R14Wk8FlAlqhH9hroy9nLqmpuXlfKEw/oILW+FGz47ipXV2O7x8lg==" + "version": "1.0.30001271", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001271.tgz", + "integrity": "sha512-BBruZFWmt3HFdVPS8kceTBIguKxu4f99n5JNp06OlPD/luoAMIaIK5ieV5YjnBLH3Nysai9sxj9rpJj4ZisXOA==" }, "carbites": { "version": "1.0.6", @@ -26651,9 +26895,9 @@ "peer": true }, "cborg": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/cborg/-/cborg-1.5.1.tgz", - "integrity": "sha512-GKCylZR7os3Q9X+U3DiARfeFKQUdcZMAP8EKFSE91YbhJsxV71Z6PMOT2osVWprb+iWf6viyqD7peEkK0QCAAw==" + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/cborg/-/cborg-1.5.2.tgz", + "integrity": "sha512-w7RJ0Hm29B/Y5kvUXrP+TfgvBmkRUwYVr8hD63z5MlIGdlelhzNMCV/xKbG+yAyp4euJrqxPsQMXGyJKnfGhPQ==" }, "chainsaw": { "version": "0.1.0", @@ -28134,9 +28378,9 @@ } }, "electron-to-chromium": { - "version": "1.3.867", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.867.tgz", - "integrity": "sha512-WbTXOv7hsLhjJyl7jBfDkioaY++iVVZomZ4dU6TMe/SzucV6mUAs2VZn/AehBwuZMiNEQDaPuTGn22YK5o+aDw==" + "version": "1.3.877", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.877.tgz", + "integrity": "sha512-fT5mW5Giw5iyVukeHb2XvB4joBKvzHtl8Vs3QzE7APATpFMt/T7RWyUcIKSZzYkKQgpMbu+vDBTCHfQZvh8klA==" }, "elliptic": { "version": "6.5.4", @@ -28328,10 +28572,148 @@ "dev": true }, "esbuild": { - "version": "0.12.26", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.26.tgz", - "integrity": "sha512-YmTkhPKjvTJ+G5e96NyhGf69bP+hzO0DscqaVJTi5GM34uaD4Ecj7omu5lJO+NrxCUBRhy2chONLK1h/2LwoXA==", - "dev": true + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.13.8.tgz", + "integrity": "sha512-A4af7G7YZLfG5OnARJRMtlpEsCkq/zHZQXewgPA864l9D6VjjbH1SuFYK/OSV6BtHwDGkdwyRrX0qQFLnMfUcw==", + "dev": true, + "requires": { + "esbuild-android-arm64": "0.13.8", + "esbuild-darwin-64": "0.13.8", + "esbuild-darwin-arm64": "0.13.8", + "esbuild-freebsd-64": "0.13.8", + "esbuild-freebsd-arm64": "0.13.8", + "esbuild-linux-32": "0.13.8", + "esbuild-linux-64": "0.13.8", + "esbuild-linux-arm": "0.13.8", + "esbuild-linux-arm64": "0.13.8", + "esbuild-linux-mips64le": "0.13.8", + "esbuild-linux-ppc64le": "0.13.8", + "esbuild-netbsd-64": "0.13.8", + "esbuild-openbsd-64": "0.13.8", + "esbuild-sunos-64": "0.13.8", + "esbuild-windows-32": "0.13.8", + "esbuild-windows-64": "0.13.8", + "esbuild-windows-arm64": "0.13.8" + } + }, + "esbuild-android-arm64": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.13.8.tgz", + "integrity": "sha512-AilbChndywpk7CdKkNSZ9klxl+9MboLctXd9LwLo3b0dawmOF/i/t2U5d8LM6SbT1Xw36F8yngSUPrd8yPs2RA==", + "dev": true, + "optional": true + }, + "esbuild-darwin-64": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.13.8.tgz", + "integrity": "sha512-b6sdiT84zV5LVaoF+UoMVGJzR/iE2vNUfUDfFQGrm4LBwM/PWXweKpuu6RD9mcyCq18cLxkP6w/LD/w9DtX3ng==", + "dev": true, + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.8.tgz", + "integrity": "sha512-R8YuPiiJayuJJRUBG4H0VwkEKo6AvhJs2m7Tl0JaIer3u1FHHXwGhMxjJDmK+kXwTFPriSysPvcobXC/UrrZCQ==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.8.tgz", + "integrity": "sha512-zBn6urrn8FnKC+YSgDxdof9jhPCeU8kR/qaamlV4gI8R3KUaUK162WYM7UyFVAlj9N0MyD3AtB+hltzu4cysTw==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.8.tgz", + "integrity": "sha512-pWW2slN7lGlkx0MOEBoUGwRX5UgSCLq3dy2c8RIOpiHtA87xAUpDBvZK10MykbT+aMfXc0NI2lu1X+6kI34xng==", + "dev": true, + "optional": true + }, + "esbuild-linux-32": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.13.8.tgz", + "integrity": "sha512-T0I0ueeKVO/Is0CAeSEOG9s2jeNNb8jrrMwG9QBIm3UU18MRB60ERgkS2uV3fZ1vP2F8i3Z2e3Zju4lg9dhVmw==", + "dev": true, + "optional": true + }, + "esbuild-linux-64": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.13.8.tgz", + "integrity": "sha512-Bm8SYmFtvfDCIu9sjKppFXzRXn2BVpuCinU1ChTuMtdKI/7aPpXIrkqBNOgPTOQO9AylJJc1Zw6EvtKORhn64w==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.13.8.tgz", + "integrity": "sha512-4/HfcC40LJ4GPyboHA+db0jpFarTB628D1ifU+/5bunIgY+t6mHkJWyxWxAAE8wl/ZIuRYB9RJFdYpu1AXGPdg==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.8.tgz", + "integrity": "sha512-X4pWZ+SL+FJ09chWFgRNO3F+YtvAQRcWh0uxKqZSWKiWodAB20flsW/OWFYLXBKiVCTeoGMvENZS/GeVac7+tQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.8.tgz", + "integrity": "sha512-o7e0D+sqHKT31v+mwFircJFjwSKVd2nbkHEn4l9xQ1hLR+Bv8rnt3HqlblY3+sBdlrOTGSwz0ReROlKUMJyldA==", + "dev": true, + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.8.tgz", + "integrity": "sha512-eZSQ0ERsWkukJp2px/UWJHVNuy0lMoz/HZcRWAbB6reoaBw7S9vMzYNUnflfL3XA6WDs+dZn3ekHE4Y2uWLGig==", + "dev": true, + "optional": true + }, + "esbuild-netbsd-64": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.8.tgz", + "integrity": "sha512-gZX4kP7gVvOrvX0ZwgHmbuHczQUwqYppxqtoyC7VNd80t5nBHOFXVhWo2Ad/Lms0E8b+wwgI/WjZFTCpUHOg9Q==", + "dev": true, + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.8.tgz", + "integrity": "sha512-afzza308X4WmcebexbTzAgfEWt9MUkdTvwIa8xOu4CM2qGbl2LanqEl8/LUs8jh6Gqw6WsicEK52GPrS9wvkcw==", + "dev": true, + "optional": true + }, + "esbuild-sunos-64": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.13.8.tgz", + "integrity": "sha512-mWPZibmBbuMKD+LDN23LGcOZ2EawMYBONMXXHmbuxeT0XxCNwadbCVwUQ/2p5Dp5Kvf6mhrlIffcnWOiCBpiVw==", + "dev": true, + "optional": true + }, + "esbuild-windows-32": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.13.8.tgz", + "integrity": "sha512-QsZ1HnWIcnIEApETZWw8HlOhDSWqdZX2SylU7IzGxOYyVcX7QI06ety/aDcn437mwyO7Ph4RrbhB+2ntM8kX8A==", + "dev": true, + "optional": true + }, + "esbuild-windows-64": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.13.8.tgz", + "integrity": "sha512-76Fb57B9eE/JmJi1QmUW0tRLQZfGo0it+JeYoCDTSlbTn7LV44ecOHIMJSSgZADUtRMWT9z0Kz186bnaB3amSg==", + "dev": true, + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.8.tgz", + "integrity": "sha512-HW6Mtq5eTudllxY2YgT62MrVcn7oq2o8TAoAvDUhyiEmRmDY8tPwAhb1vxw5/cdkbukM3KdMYtksnUhF/ekWeg==", + "dev": true, + "optional": true }, "escalade": { "version": "3.1.1", @@ -28545,9 +28927,9 @@ } }, "eslint-plugin-promise": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-5.1.0.tgz", - "integrity": "sha512-NGmI6BH5L12pl7ScQHbg7tvtk4wPxxj8yPHH47NvSmMtFneC077PSeY3huFj06ZWZvtbfxSPt3RuOQD5XcR4ng==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-5.1.1.tgz", + "integrity": "sha512-XgdcdyNzHfmlQyweOPTxmc7pIsS6dE4MvwhXWMQ2Dxs1XAL2GJDilUsjWen6TWik0aSI+zD/PqocZBblcm9rdA==", "dev": true, "requires": {} }, @@ -29657,9 +30039,9 @@ "peer": true }, "graphql-request": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-3.6.0.tgz", - "integrity": "sha512-p5qIuD+gyjuOJ8z9sEcfcLVK7HUB+/88hf/xGEzX330U3L2OR1JtaupLPmd1D2V7YtqWiEnSA3tX9vqZ4eGMhA==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-3.6.1.tgz", + "integrity": "sha512-Nm1EasrAQVZllyNTlHDLnLZjlhC6eRWnWP6KH//ytnAL08pjlLkdI2K+s6OV92p45hn5b/kUlLbDwACmRoLwrQ==", "requires": { "cross-fetch": "^3.0.6", "extract-files": "^9.0.0", @@ -30171,9 +30553,9 @@ } }, "interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "dev": true }, "invert-kv": { @@ -30193,9 +30575,9 @@ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, "ipfs-car": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/ipfs-car/-/ipfs-car-0.5.8.tgz", - "integrity": "sha512-77dwPVpMqq++ZlM6csNs0FMrNnBy+lJxDTQbPz/jYYiwPmvmMq1Z1VoB/h9zRu0KVZPt1xUQvH8cSIOTUmQNSw==", + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/ipfs-car/-/ipfs-car-0.5.9.tgz", + "integrity": "sha512-81jKWdkFj1XjP23Qu2ts5K4VOZsLySD4V4UH8fQeb1T6ETf5btdm24mhRRuY7hvM/Vq7AMtDc+bDXocO+WouJQ==", "requires": { "@ipld/car": "^3.1.4", "@web-std/blob": "^2.1.1", @@ -30612,9 +30994,9 @@ } }, "is-core-module": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.7.0.tgz", - "integrity": "sha512-ByY+tjCciCr+9nLryBYcSD50EOGWt95c7tIsKTG1J2ixKKXPvF7Ej3AVd+UfDydAJom3biBGDBALaO79ktwgEQ==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", "requires": { "has": "^1.0.3" } @@ -30885,9 +31267,9 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, "iso-url": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/iso-url/-/iso-url-1.1.5.tgz", - "integrity": "sha512-+3JqoKdBTGmyv9vOkS6b9iHhvK34UajfTibrH/1HOK8TI7K2VsM0qOCd+aJdWKtSOA8g3PqZfcwDmnR0p3klqQ==" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iso-url/-/iso-url-1.2.1.tgz", + "integrity": "sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng==" }, "isobject": { "version": "3.0.1", @@ -30902,9 +31284,9 @@ "peer": true }, "istanbul-lib-coverage": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.2.tgz", - "integrity": "sha512-o5+eTUYzCJ11/+JhW5/FUCdfsdoYVdQ/8I/OveE2XsjehYn5DdeSnNQAbjYaO8gQ6hvGTN6GM6ddQqpTVG5j8g==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", "dev": true }, "istanbul-lib-hook": { @@ -32490,9 +32872,9 @@ } }, "multiformats": { - "version": "9.4.8", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.4.8.tgz", - "integrity": "sha512-EOJL02/kv+FD5hoItMhKgkYUUruJYMYFq4NQ6YkCh3jVQ5CuHo+OKdHeR50hAxEQmXQ9yvrM9BxLIk42xtfwnQ==" + "version": "9.4.9", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.4.9.tgz", + "integrity": "sha512-zA84TTJcRfRMpjvYqy63piBbSEdqlIGqNNSpP6kspqtougqjo60PRhIFo+oAxrjkof14WMCImvr7acK6rPpXLw==" }, "murmurhash3js-revisited": { "version": "3.0.0", @@ -32993,9 +33375,9 @@ } }, "node-releases": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.0.tgz", - "integrity": "sha512-aA87l0flFYMzCHpTM3DERFSYxc6lv/BltdbRTOMZuxZ0cwZCD3mejE5n9vLhSJCN++/eOqr77G1IO5uXxlQYWA==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==" }, "noop-logger": { "version": "0.1.1", @@ -33499,9 +33881,9 @@ } }, "openapi-typescript": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/openapi-typescript/-/openapi-typescript-4.3.0.tgz", - "integrity": "sha512-mAvW7lCS8V2s2KLp81uAH8DynJgMHFOyD4k5IWi15JbmTacvKQCKglXf8mhEkxhWUTKaNfis23cPNJy+IL/16w==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/openapi-typescript/-/openapi-typescript-4.4.0.tgz", + "integrity": "sha512-fSx4qAd5q1NPjpJv7qobwYgLud7HDgwX1DJsRgERmouS333AJOl904oRLwZqHcjKqaZFeuVm6WCWC7nOKeXU1g==", "dev": true, "requires": { "hosted-git-info": "^3.0.8", @@ -33954,9 +34336,9 @@ } }, "parse-duration": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-duration/-/parse-duration-1.0.1.tgz", - "integrity": "sha512-vv3rNpBYqRo8m357JeFBYFud+yX6HyxT2oBCI5gi0d/zW7g2C+meWucThqzp47Mdp+90nOjDbXfrqxdvkEIMxA==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-duration/-/parse-duration-1.0.2.tgz", + "integrity": "sha512-Dg27N6mfok+ow1a2rj/nRjtCfaKrHUZV2SJpEn/s8GaVUSlf4GGRCRP1c13Hj+wfPKVMrFDqLMLITkYKgKxyyg==" }, "parse-entities": { "version": "1.2.2", @@ -34271,9 +34653,9 @@ "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==" }, "playwright-core": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.14.1.tgz", - "integrity": "sha512-G4fO98T/DOTj3uabIlhkWrWzhXGXx8y8rVzBgR6DKPqEz8NfTxuQ3NFGWA1u+sfD1CtAXRxBisaUvlmnD2jRYw==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.15.2.tgz", + "integrity": "sha512-bY3eZu27QL62Y/iVsZUTm+RtPZ+0Zj34GoKQ6VtdjhzqoUWj40IoLy0q/GhMpXUNqKZMntHmtxvLYlREFauf8Q==", "dev": true, "requires": { "commander": "^6.1.0", @@ -34301,15 +34683,15 @@ } }, "playwright-test": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/playwright-test/-/playwright-test-7.1.0.tgz", - "integrity": "sha512-5utXlpFJxoaPb1thZDRa7vUGiZqN6vWGVD6/6AhT37Gzfv2q64PWfDmLXO28FMlSJBJTefq8+NEZgbWs6sC8tA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/playwright-test/-/playwright-test-7.1.1.tgz", + "integrity": "sha512-a8p5aSWLsXzes3SIUIYo2yMg3Ndz2CYd8bPvL1H3KAW8tj+L51MYAvltoP2FlN1aiat3omp7zAboObMlVEV7jg==", "dev": true, "requires": { "buffer": "^6.0.3", "camelcase": "^6.2.0", "chokidar": "^3.5.2", - "esbuild": "0.12.26", + "esbuild": "0.13.8", "events": "^3.3.0", "globby": "^12.0.2", "kleur": "^4.1.4", @@ -34319,7 +34701,7 @@ "ora": "^6.0.0", "p-wait-for": "4.1.0", "path-browserify": "^1.0.1", - "playwright-core": "1.14.1", + "playwright-core": "1.15.2", "polka": "^0.5.2", "premove": "^3.0.1", "process": "^0.11.10", @@ -34507,13 +34889,20 @@ } }, "postcss": { - "version": "8.3.9", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.9.tgz", - "integrity": "sha512-f/ZFyAKh9Dnqytx5X62jgjhhzttjZS7hMsohcI7HEI5tjELX/HxCy3EFhsRxyzGvrzFF+82XPvCS8T9TFleVJw==", + "version": "8.3.11", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.11.tgz", + "integrity": "sha512-hCmlUAIlUiav8Xdqw3Io4LcpA1DOt7h3LSTAC4G6JGHFFaWzI6qvFt9oilvl8BmkbBRX1IhM90ZAmpk68zccQA==", "requires": { - "nanoid": "^3.1.28", - "picocolors": "^0.2.1", + "nanoid": "^3.1.30", + "picocolors": "^1.0.0", "source-map-js": "^0.6.2" + }, + "dependencies": { + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + } } }, "postcss-js": { @@ -35094,9 +35483,9 @@ } }, "react-query": { - "version": "3.26.0", - "resolved": "https://registry.npmjs.org/react-query/-/react-query-3.26.0.tgz", - "integrity": "sha512-wFPnL9Y+9xf6gJHAQ8ue+vBurciJ4cfQL4dhsI0x3YyRaEXlyklUQpJzbR63CfFULVekP3iWoyFxhaNVS9RFDw==", + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/react-query/-/react-query-3.27.0.tgz", + "integrity": "sha512-2MR5LBXnR6OMXQVLcv/57x1zkDNj6gK5J5mtjGi6pu0aQ6Y4jGQysVvkrAErMKMZJVZELFcYGA8LsGIHzlo/zg==", "requires": { "@babel/runtime": "^7.5.5", "broadcast-channel": "^3.4.1", @@ -35168,12 +35557,12 @@ } }, "rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", "dev": true, "requires": { - "resolve": "^1.9.0" + "resolve": "^1.1.6" } }, "redent": { @@ -35840,23 +36229,6 @@ "glob": "^7.0.0", "interpret": "^1.0.0", "rechoir": "^0.6.2" - }, - "dependencies": { - "interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "requires": { - "resolve": "^1.1.6" - } - } } }, "side-channel": { @@ -35907,9 +36279,9 @@ } }, "sirv": { - "version": "1.0.17", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.17.tgz", - "integrity": "sha512-qx9go5yraB7ekT7bCMqUHJ5jEaOC/GXBxUWv+jeWnb7WzHUFdcQPGWk7YmAwFBaQBrogpuSqd/azbC2lZRqqmw==", + "version": "1.0.18", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.18.tgz", + "integrity": "sha512-f2AOPogZmXgJ9Ma2M22ZEhc1dNtRIzcEkiflMFeVTRq+OViOZMvH1IPMVOwrKaxpSaHioBJiDR0SluRqGa7atA==", "dev": true, "requires": { "@polka/url": "^1.0.0-next.20", @@ -36908,9 +37280,9 @@ "dev": true }, "type-fest": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.5.0.tgz", - "integrity": "sha512-wB5vE+XXZ2g2mDRo18yZMae1joUhquomLTm+BkxeuRHnwmrNWzVPNrFah9z7pjsKNiVAaJL33+uQbgbPSARyqw==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.5.1.tgz", + "integrity": "sha512-JDcsxbLR6Z6OcL7TnGAAAGQrY4g7Q4EEALMT4Kp6FQuIc0JLQvOF3l7ejFvx8o5GmLlfMseTWUL++sYFP+o8kw==", "dev": true } } @@ -36949,9 +37321,9 @@ }, "dependencies": { "jest-worker": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.2.5.tgz", - "integrity": "sha512-HTjEPZtcNKZ4LnhSp02NEH4vE+5OpJ0EsOWYvGQpHgUMLngydESAAMH5Wd/asPf29+XUDQZszxpLg1BkIIA2aw==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz", + "integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==", "devOptional": true, "requires": { "@types/node": "*", @@ -37801,9 +38173,9 @@ "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" }, "webpack": { - "version": "5.58.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.58.2.tgz", - "integrity": "sha512-3S6e9Vo1W2ijk4F4PPWRIu6D/uGgqaPmqw+av3W3jLDujuNkdxX5h5c+RQ6GkjVR+WwIPOfgY8av+j5j4tMqJw==", + "version": "5.59.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.59.1.tgz", + "integrity": "sha512-I01IQV9K96FlpXX3V0L4nvd7gb0r7thfuu1IfT2P4uOHOA77nKARAKDYGe/tScSHKnffNIyQhLC8kRXzY4KEHQ==", "devOptional": true, "requires": { "@types/eslint-scope": "^3.7.0", @@ -37864,9 +38236,9 @@ } }, "webpack-cli": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.0.tgz", - "integrity": "sha512-n/jZZBMzVEl4PYIBs+auy2WI0WTQ74EnJDiyD98O2JZY6IVIHJNitkYp/uTXOviIOMfgzrNvC9foKv/8o8KSZw==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.1.tgz", + "integrity": "sha512-JYRFVuyFpzDxMDB+v/nanUdQYcZtqFPGzmlW4s+UkPMFhSpfRNmf1z4AwYcHJVdvEFAM7FFCQdNTpsBYhDLusQ==", "dev": true, "requires": { "@discoveryjs/json-ext": "^0.5.0", @@ -37880,7 +38252,6 @@ "import-local": "^3.0.2", "interpret": "^2.2.0", "rechoir": "^0.7.0", - "v8-compile-cache": "^2.2.0", "webpack-merge": "^5.7.3" }, "dependencies": { @@ -37889,6 +38260,21 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true + }, + "interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true + }, + "rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "requires": { + "resolve": "^1.9.0" + } } } }, diff --git a/packages/api/README.md b/packages/api/README.md index 27dc2627d9..0fb01eb4bb 100644 --- a/packages/api/README.md +++ b/packages/api/README.md @@ -13,11 +13,11 @@ One time set up of your cloudflare worker subdomain for dev: - Setup Cluster - You need to run a cluster locally and make it accessible from the internet for development. - Follow the quickstart guide to get an IPFS Cluster up and running: https://cluster.ipfs.io/documentation/quickstart/ - - Install [localtunnel](https://theboroer.github.io/localtunnel-www/) and expose the IPFS Cluster HTTP API and IPFS Proxy API (replacing "USER" with your name): + - Install [localtunnel](https://theboroer.github.io/localtunnel-www/) and expose the IPFS Cluster HTTP API (replacing "USER" with your name): ```sh npm install -g localtunnel - lt --port 9094 --subdomain USER-cluster-api-web3-storage + npm run lt:cluster ``` - There is an npm script you can use to quickly establish these tunnels during development: @@ -26,6 +26,13 @@ One time set up of your cloudflare worker subdomain for dev: npm run lt ``` - Copy your cloudflare account id from `wrangler whoami` +- Setup database + - For setting up a local database check [Local DB setup](../db/postgres/README.md). + - Once a DB is running, you will need a local tunnel similar to cluster: + + ```sh + npm run lt:postgres + ``` - Update `wrangler.toml` with a new `env`. Set your env name to be the value of `whoami` on your system you can use `npm start` to run the worker in dev mode for you. [**wrangler.toml**](./wrangler.toml) @@ -34,7 +41,7 @@ One time set up of your cloudflare worker subdomain for dev: [env.bobbytables] workers_dev = true account_id = "" - vars = { CLUSTER_API_URL = "https://USER-cluster-api-web3-storage.loca.lt", ENV = "dev" } + vars = { CLUSTER_API_URL = "https://USER-cluster-api-web3-storage.loca.lt", PG_REST_URL = "https://USER-postgres-api-web3-storage.loca.lt", ENV = "dev" } ``` - `npm run build` - Build the bundle diff --git a/packages/api/package.json b/packages/api/package.json index 8594d8b154..5db52ee005 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -6,17 +6,22 @@ "license": "(Apache-2.0 AND MIT)", "main": "dist/worker.js", "scripts": { - "lt": "npm run lt:cluster", + "lt": "npm-run-all -p lt:*", "lt:cluster": "npx localtunnel --port 9094 --subdomain \"$(whoami)-cluster-api-web3-storage\"", + "lt:postgres": "npx localtunnel --port 3000 --subdomain \"$(whoami)-postgres-api-web3-storage\"", "start": "wrangler dev --env $(whoami)", "dev": "wrangler dev --env $(whoami)", "publish": "wrangler publish --env $(whoami)", "build": "WEBPACK_CLI_FORCE_LOAD_ESM_CONFIG=true webpack", - "test": "npm-run-all -p -r mock:cluster mock:db mock:backup test:e2e -s test:size", + "test": "npm-run-all -s test:postgres test:fauna", + "test:postgres": "npm-run-all -p -r mock:cluster mock:pgrest mock:backup test:e2e -s test:size", + "test:fauna": "npm-run-all -p -r mock:cluster mock:db mock:backup test:e2e:fauna -s test:size", "test:size": "bundlesize", "test:e2e": "playwright-test \"test/**/*.spec.js\" --sw src/index.js -b webkit", + "test:e2e:fauna": "playwright-test \"test/**/*.spec.js\" --sw src/index.js -b webkit --config ./pw-test-fauna.config.cjs", "mock:cluster": "smoke -p 9094 test/mocks/cluster", "mock:db": "smoke -p 9086 test/mocks/db", + "mock:pgrest": "smoke -p 9087 test/mocks/pgrest", "mock:backup": "smoke -p 9096 test/mocks/backup" }, "devDependencies": { diff --git a/packages/api/pw-test-fauna.config.cjs b/packages/api/pw-test-fauna.config.cjs new file mode 100644 index 0000000000..8a092cf37a --- /dev/null +++ b/packages/api/pw-test-fauna.config.cjs @@ -0,0 +1,18 @@ +const path = require('path') + +module.exports = { + buildSWConfig: { + inject: [ + path.join(__dirname, 'test', 'scripts', 'node-globals.js'), + path.join(__dirname, 'test', 'scripts', 'worker-globals-fauna.js') + ], + plugins: [{ + name: 'node builtins', + setup (build) { + build.onResolve({ filter: /^stream$/ }, () => { + return { path: require.resolve('stream-browserify') } + }) + } + }] + } +} diff --git a/packages/api/pw-test.config.cjs b/packages/api/pw-test.config.cjs index eec4afca9a..b92761d8c7 100644 --- a/packages/api/pw-test.config.cjs +++ b/packages/api/pw-test.config.cjs @@ -12,6 +12,10 @@ module.exports = { build.onResolve({ filter: /^stream$/ }, () => { return { path: require.resolve('stream-browserify') } }) + + build.onResolve({ filter: /^cross-fetch$/ }, () => { + return { path: path.resolve(__dirname, 'src', 'utils', 'fetch.js') } + }) } }] } diff --git a/packages/api/src/auth.js b/packages/api/src/auth.js index c9e73d4a03..1e6974b65d 100644 --- a/packages/api/src/auth.js +++ b/packages/api/src/auth.js @@ -1,4 +1,3 @@ -import { gql } from '@web3-storage/db' import * as JWT from './utils/jwt.js' import { UserNotFoundError, @@ -125,32 +124,12 @@ async function tryWeb3ApiToken (token, env) { return apiToken } -async function findUserByIssuer (issuer, env) { - const res = await env.db.query(gql` - query FindUserByIssuer ($issuer: String!) { - findUserByIssuer(issuer: $issuer) { - _id - issuer - } - } - `, { issuer }) - return res.findUserByIssuer +function findUserByIssuer (issuer, env) { + return env.db.getUser(issuer) } -async function verifyAuthToken (token, decoded, env) { - const res = await env.db.query(gql` - query VerifyAuthToken ($issuer: String!, $secret: String!) { - verifyAuthToken(issuer: $issuer, secret: $secret) { - _id - name - user { - _id - issuer - } - } - } - `, { issuer: decoded.sub, secret: token }) - return res.verifyAuthToken +function verifyAuthToken (token, decoded, env) { + return env.db.getKey(decoded.sub, token) } function getTokenFromRequest (request, { magic }) { diff --git a/packages/api/src/car.js b/packages/api/src/car.js index 1e7d6c6324..34dd056edd 100644 --- a/packages/api/src/car.js +++ b/packages/api/src/car.js @@ -1,15 +1,16 @@ /* eslint-env serviceworker */ -import { gql } from '@web3-storage/db' import { PutObjectCommand } from '@aws-sdk/client-s3' import { CarBlockIterator } from '@ipld/car' import { toString } from 'uint8arrays' import { Block } from 'multiformats/block' +import { CID } from 'multiformats/cid' import { sha256 } from 'multiformats/hashes/sha2' import * as raw from 'multiformats/codecs/raw' import * as cbor from '@ipld/dag-cbor' import * as pb from '@ipld/dag-pb' import retry from 'p-retry' import { GATEWAY, LOCAL_ADD_THRESHOLD, MAX_BLOCK_SIZE } from './constants.js' +import { ErrorInvalidCid } from './errors.js' import { JSONResponse } from './utils/json-response.js' import { toPinStatusEnum } from './utils/pin.js' @@ -19,25 +20,6 @@ import { toPinStatusEnum } from './utils/pin.js' const decoders = [pb, raw, cbor] -const CREATE_UPLOAD = gql` - mutation CreateUpload($data: CreateUploadInput!) { - createUpload(data: $data) { - content { - _id - dagSize - } - } - } -` - -const CREATE_OR_UPDATE_PIN = gql` - mutation CreateOrUpdatePin($data: CreateOrUpdatePinInput!) { - createOrUpdatePin(data: $data) { - _id - } - } -` - // Duration between status check polls in ms. const PIN_STATUS_CHECK_INTERVAL = 5000 // Max time in ms to spend polling for an OK status. @@ -158,19 +140,18 @@ export async function handleCarUpload (request, env, ctx, car, uploadType = 'Car // Retried because it's possible to receive the error: // "Transaction was aborted due to detection of concurrent modification." const { createUpload: upload } = await retry(() => ( - env.db.query(CREATE_UPLOAD, { - data: { - user: user._id, - authToken: authToken?._id, - cid, - name, - type: uploadType, - backupUrls: backupKey - ? [`https://${env.s3BucketName}.s3.${env.s3BucketRegion}.amazonaws.com/${backupKey}`] - : [], - pins, - dagSize - } + env.db.createUpload({ + user: user._id, + authKey: authToken?._id, + contentCid: parseCid(cid), + sourceCid: cid, + name, + type: uploadType, + backupUrls: backupKey + ? [`https://${env.s3BucketName}.s3.${env.s3BucketRegion}.amazonaws.com/${backupKey}`] + : [], + pins, + dagSize }) ), { retries: CREATE_UPLOAD_RETRIES, @@ -198,9 +179,7 @@ export async function handleCarUpload (request, env, ctx, car, uploadType = 'Car if (!okPins.length) continue for (const pin of okPins) { - await env.db.query(CREATE_OR_UPDATE_PIN, { - data: { content: upload.content._id, ...pin } - }) + await env.db.upsertPin(upload.content._id, pin) } return } @@ -368,3 +347,17 @@ function toPins (peerMap) { location: { peerId, peerName } })) } + +/** + * Parse CID and return v1 and original + * + * @param {string} cid + */ +function parseCid (cid) { + try { + const c = CID.parse(cid) + return c.toV1().toString() + } catch (err) { + throw new ErrorInvalidCid(cid) + } +} diff --git a/packages/api/src/env.js b/packages/api/src/env.js index f54d4e00a9..1a0665ea0b 100644 --- a/packages/api/src/env.js +++ b/packages/api/src/env.js @@ -1,5 +1,6 @@ /* global MAGIC_SECRET_KEY FAUNA_ENDPOINT FAUNA_KEY SALT CLUSTER_BASIC_AUTH_TOKEN CLUSTER_API_URL SENTRY_DSN SENTRY_RELEASE DANGEROUSLY_BYPASS_MAGIC_AUTH */ /* global S3_BUCKET_ENDPOINT S3_BUCKET_NAME S3_BUCKET_REGION S3_ACCESS_KEY_ID S3_SECRET_ACCESS_KEY_ID ENV MAINTENANCE_MODE VERSION COMMITHASH BRANCH */ +/* global DATABASE PG_REST_URL PG_REST_JWT */ import Toucan from 'toucan-js' import { S3Client } from '@aws-sdk/client-s3' import { Magic } from '@magic-sdk/admin' @@ -49,10 +50,20 @@ export function envAll (_, env, event) { env.DANGEROUSLY_BYPASS_MAGIC_AUTH = DANGEROUSLY_BYPASS_MAGIC_AUTH } - env.db = new DBClient({ - endpoint: env.FAUNA_ENDPOINT || (typeof FAUNA_ENDPOINT === 'undefined' ? undefined : FAUNA_ENDPOINT), - token: env.FAUNA_KEY || FAUNA_KEY - }) + if (env.DATABSE === 'fauna' || + (typeof DATABASE !== 'undefined' && DATABASE === 'fauna') || + (!env.DATABASE && typeof DATABASE === 'undefined')) { + env.db = new DBClient({ + endpoint: env.FAUNA_ENDPOINT || (typeof FAUNA_ENDPOINT === 'undefined' ? undefined : FAUNA_ENDPOINT), + token: env.FAUNA_KEY || FAUNA_KEY + }) + } else { + env.db = new DBClient({ + endpoint: env.PG_REST_URL || (typeof PG_REST_URL === 'undefined' ? undefined : PG_REST_URL), + token: env.PG_REST_JWT || PG_REST_JWT, + postgres: true + }) + } env.SALT = env.SALT || SALT env.MODE = env.MAINTENANCE_MODE || (typeof MAINTENANCE_MODE === 'undefined' ? DEFAULT_MODE : MAINTENANCE_MODE) diff --git a/packages/api/src/errors.js b/packages/api/src/errors.js index f6a5dfb7ca..93ad76b44b 100644 --- a/packages/api/src/errors.js +++ b/packages/api/src/errors.js @@ -55,3 +55,16 @@ export class MagicTokenRequiredError extends HTTPError { } } MagicTokenRequiredError.CODE = 'ERROR_MAGIC_TOKEN_REQUIRED' + +export class ErrorInvalidCid extends Error { + /** + * @param {string} cid + */ + constructor (cid) { + super(`Invalid CID: ${cid}`) + this.name = 'InvalidCid' + this.status = 400 + this.code = ErrorInvalidCid.CODE + } +} +ErrorInvalidCid.CODE = 'ERROR_INVALID_CID' diff --git a/packages/api/src/metrics.js b/packages/api/src/metrics.js index 6094562002..0f97db832e 100644 --- a/packages/api/src/metrics.js +++ b/packages/api/src/metrics.js @@ -1,28 +1,7 @@ /* global Response caches */ -import retry from 'p-retry' -import { gql } from '@web3-storage/db' import { METRICS_CACHE_MAX_AGE } from './constants.js' -const FIND_METRIC = gql` - query FindMetric($key: String!) { - findMetricByKey(key: $key) { - key - value - updated - } - } -` - -/** - * @param {import('@web3-storage/db').DBClient} db - * @param {string} key - */ -async function getMetricValue (db, key) { - const { findMetricByKey } = await retry(() => db.query(FIND_METRIC, { key })) - return findMetricByKey ? findMetricByKey.value : 0 -} - /** * Retrieve metrics in prometheus exposition format. * https://prometheus.io/docs/instrumenting/exposition_formats/ @@ -50,15 +29,15 @@ export async function metricsGet (request, env, ctx) { pinsPinnedTotal, pinsFailedTotal ] = await Promise.all([ - getMetricValue(env.db, 'users_total'), - getMetricValue(env.db, 'uploads_total'), - getMetricValue(env.db, 'content_bytes_total'), - getMetricValue(env.db, 'pins_total'), - getMetricValue(env.db, 'pins_bytes_total'), - getMetricValue(env.db, 'pins_status_queued_total'), - getMetricValue(env.db, 'pins_status_pinning_total'), - getMetricValue(env.db, 'pins_status_pinned_total'), - getMetricValue(env.db, 'pins_status_failed_total') + env.db.getMetricsValue('users_total'), + env.db.getMetricsValue('uploads_total'), + env.db.getMetricsValue('content_bytes_total'), + env.db.getMetricsValue('pins_total'), + env.db.getMetricsValue('pins_bytes_total'), + env.db.getMetricsValue('pins_status_queued_total'), + env.db.getMetricsValue('pins_status_pinning_total'), + env.db.getMetricsValue('pins_status_pinned_total'), + env.db.getMetricsValue('pins_status_failed_total') ]) const metrics = [ diff --git a/packages/api/src/status.js b/packages/api/src/status.js index 96aa46f068..bb92ac0858 100644 --- a/packages/api/src/status.js +++ b/packages/api/src/status.js @@ -1,59 +1,5 @@ -import { gql } from '@web3-storage/db' import { JSONResponse, notFound } from './utils/json-response.js' -const DEAL_STATUS = new Set([ - 'Queued', - 'Published', - 'Active' -]) - -const PIN_STATUS = new Set([ - 'Pinned', - 'Pinning', - 'PinQueued' -]) - -export function convertRawContent (raw) { - const pins = raw.pins.data - .filter(({ status }) => PIN_STATUS.has(status)) - .map(({ status, updated, location }) => ({ status, updated, ...location })) - - const deals = raw.aggregateEntries.data.map(({ dataModelSelector, aggregate }) => { - const { pieceCid, dataCid, deals } = aggregate - if (deals.data.length === 0) { - return [{ - status: 'Queued', - pieceCid, - dataCid, - dataModelSelector - }] - } - return deals.data - .filter(({ status }) => DEAL_STATUS.has(status)) - .map(({ dealId, storageProvider, status, activation, created, updated }) => ({ - dealId, - storageProvider, - status, - pieceCid, - dataCid, - dataModelSelector, - activation, - created, - updated - })) - }).reduce((a, b) => a.concat(b), []) // flatten array of arrays. - - const { cid, dagSize, created } = raw - - return { - cid, - created, - dagSize, - pins, - deals - } -} - /** * Returns pin and deal status info for a given CID. * @@ -64,51 +10,11 @@ export function convertRawContent (raw) { */ export async function statusGet (request, env) { const cid = request.params.cid - const result = await env.db.query( - gql`query FindContentByCid($cid: String!) { - findContentByCid(cid: $cid) { - cid - created - dagSize - aggregateEntries { - data { - dataModelSelector - aggregate { - dataCid - pieceCid - deals { - data { - storageProvider - dealId - status - activation - created - updated - } - } - } - } - } - pins { - data { - status - updated - location { - peerId - peerName - region - } - } - } - } - } - `, { cid }) - - const { findContentByCid: raw } = result + const res = await env.db.getStatus(cid) - if (!raw) { + if (!res) { return notFound() } - return new JSONResponse(convertRawContent(raw)) + return new JSONResponse(res) } diff --git a/packages/api/src/user.js b/packages/api/src/user.js index 5e973ff582..0282f8b52a 100644 --- a/packages/api/src/user.js +++ b/packages/api/src/user.js @@ -1,8 +1,6 @@ -import { gql } from '@web3-storage/db' import * as JWT from './utils/jwt.js' import { JSONResponse } from './utils/json-response.js' import { JWT_ISSUER } from './constants.js' -import { convertRawContent } from './status.js' /** * @typedef { _id: string, issuer: string } User @@ -42,15 +40,8 @@ async function loginOrRegister (request, env) { ? parseGitHub(data.data, metadata) : parseMagic(metadata) - const res = await env.db.query(gql` - mutation CreateOrUpdateUser($data: CreateOrUpdateUserInput!) { - createOrUpdateUser(data: $data) { - issuer - } - } - `, { data: parsed }) - - return res.createOrUpdateUser + const user = await env.db.upsertUser(parsed) + return user } /** @@ -102,15 +93,13 @@ export async function userTokensPost (request, env) { const iss = JWT_ISSUER const secret = await JWT.sign({ sub, iss, iat: Date.now(), name }, env.SALT) - const res = await env.db.query(gql` - mutation CreateAuthToken($data: CreateAuthTokenInput!) { - createAuthToken(data: $data) { - _id - } - } - `, { data: { user: _id, name, secret } }) + const key = await env.db.createKey({ + user: _id, + name, + secret + }) - return new JSONResponse(res.createAuthToken, { status: 201 }) + return new JSONResponse(key, { status: 201 }) } /** @@ -120,15 +109,11 @@ export async function userTokensPost (request, env) { * @param {import('./env').Env} env */ export async function userAccountGet (request, env) { - const res = await env.db.query(gql` - query findUserByID($id: ID!) { - findUserByID(id: $id) { - usedStorage - } - } - `, { id: request.auth.user._id }) + const usedStorage = await env.db.getUsedStorage(request.auth.user._id) - return new JSONResponse(res.findUserByID) + return new JSONResponse({ + usedStorage + }) } /** @@ -138,33 +123,9 @@ export async function userAccountGet (request, env) { * @param {import('./env').Env} env */ export async function userTokensGet (request, env) { - const res = await env.db.query(gql` - query FindAuthTokensByUser($user: ID!) { - # Paginated but users are probably not going to have tons of these. - # Note: 100,000 is the max page size. - findAuthTokensByUser(user: $user, _size: 100000) { - data { - _id - name - secret - created - uploads(_size: 1) { - data { - _id - } - } - } - } - } - `, { user: request.auth.user._id }) + const tokens = await env.db.listKeys(request.auth.user._id) - res.findAuthTokensByUser.data = res.findAuthTokensByUser.data.map(t => { - t.hasUploads = Boolean(t.uploads.data.length) - delete t.uploads - return t - }) - - return new JSONResponse(res.findAuthTokensByUser.data) + return new JSONResponse(tokens) } /** @@ -175,15 +136,8 @@ export async function userTokensGet (request, env) { * @param {import('./env').Env} env */ export async function userTokensDelete (request, env) { - const res = await env.db.query(gql` - mutation DeleteAuthToken($user: ID!, $authToken: ID!) { - deleteAuthToken(user: $user, authToken: $authToken) { - _id - } - } - `, { user: request.auth.user._id, authToken: request.params.id }) - - return new JSONResponse(res.deleteAuthToken) + const res = await env.db.deleteKey(request.auth.user._id, request.params.id) + return new JSONResponse(res) } /** @@ -217,46 +171,13 @@ export async function userUploadsGet (request, env) { const sortBy = searchParams.get('sortBy') || 'Date' const sortOrder = searchParams.get('sortOrder') || 'Desc' - const res = await env.db.query(gql` - query FindUploadsByUser($where: FindUploadsByUserInput!, $sortBy: UploadListSortBy, $sortOrder: SortDirection, $size: Int!) { - findUploadsByUser(where: $where, sortBy: $sortBy, sortOrder: $sortOrder, _size: $size) { - data { - name - content { - cid - dagSize - aggregateEntries { - data { - aggregate { - deals { - data { - storageProvider - renewal - dealId - status - } - } - } - } - } - pins { - data { - status - } - } - } - created - } - } - } - `, { where: { createdBefore: before.toISOString(), user: request.auth.user._id }, size, sortBy, sortOrder }) + const uploads = await env.db.listUploads(request.auth.user._id, { + size, + before: before.toISOString(), + sortBy, + sortOrder + }) - const { data: raw } = res.findUploadsByUser - const uploads = raw.map(({ name, content, created }) => ({ - name, - ...convertRawContent(content), - created - })) const oldest = uploads[uploads.length - 1] const headers = uploads.length === size ? { Link: `<${requestUrl.pathname}?size=${size}&before=${oldest.created}>; rel="next"` } @@ -272,18 +193,11 @@ export async function userUploadsGet (request, env) { * @param {import('./env').Env} env */ export async function userUploadsDelete (request, env) { - const user = request.auth.user._id const cid = request.params.cid + const user = request.auth.user._id - const res = await env.db.query(gql` - mutation DeleteUserUpload($user: ID!, $cid: String!) { - deleteUserUpload(user: $user, cid: $cid) { - _id - } - } - `, { cid, user }) - - return new JSONResponse(res.deleteUserUpload) + const res = await env.db.deleteUpload(cid, user) + return new JSONResponse(res) } /** @@ -297,13 +211,6 @@ export async function userUploadsRename (request, env) { const { cid } = request.params const { name } = await request.json() - const res = await env.db.query(gql` - mutation RenameUserUpload($user: ID!, $cid: String!, $name: String!) { - renameUserUpload(user: $user, cid: $cid, name: $name) { - name - } - } - `, { cid, user, name }) - - return new JSONResponse(res.renameUserUpload) + const res = await env.db.renameUpload(cid, user, name) + return new JSONResponse(res) } diff --git a/packages/api/test/car.spec.js b/packages/api/test/car.spec.js index 3e9b5d2676..937ea89fac 100644 --- a/packages/api/test/car.spec.js +++ b/packages/api/test/car.spec.js @@ -12,7 +12,7 @@ import { createCar } from './scripts/car.js' import { JWT_ISSUER, MAX_BLOCK_SIZE } from '../src/constants.js' function getTestJWT (sub = 'test', name = 'test') { - return JWT.sign({ sub, iss: JWT_ISSUER, iat: Date.now(), name }, SALT) + return JWT.sign({ sub, iss: JWT_ISSUER, iat: 1633957389872, name }, SALT) } describe('POST /car', () => { diff --git a/packages/api/test/fixtures/find-content-by-cid-no-deal.json b/packages/api/test/fixtures/find-content-by-cid-no-deal.json index 27106926f7..cfe7d24474 100644 --- a/packages/api/test/fixtures/find-content-by-cid-no-deal.json +++ b/packages/api/test/fixtures/find-content-by-cid-no-deal.json @@ -7,7 +7,7 @@ "data": [{ "dataModelSelector": "Links/0/Links", "aggregate": { - "dataCid": "bafy", + "dataCid": "nodeal", "pieceCid": "baga", "deals": { "data" : [] diff --git a/packages/api/test/fixtures/find-content-by-cid.json b/packages/api/test/fixtures/find-content-by-cid.json index 2a4b171b36..5c83662b28 100644 --- a/packages/api/test/fixtures/find-content-by-cid.json +++ b/packages/api/test/fixtures/find-content-by-cid.json @@ -7,7 +7,7 @@ "data": [{ "dataModelSelector": "Links/0/Links", "aggregate": { - "dataCid": "bafy", + "dataCid": "testcid", "pieceCid": "baga", "deals": { "data" : [ { diff --git a/packages/api/test/fixtures/postgres/find-content-by-cid-no-aggregate.json b/packages/api/test/fixtures/postgres/find-content-by-cid-no-aggregate.json new file mode 100644 index 0000000000..9274e1f4d0 --- /dev/null +++ b/packages/api/test/fixtures/postgres/find-content-by-cid-no-aggregate.json @@ -0,0 +1,15 @@ +{ + "created": "2021-07-14T19:27:14.934572Z", + "dagSize": 101, + "pins": [ + { + "status": "Pinned", + "updated": "2021-07-14T19:27:14.934572Z", + "location": { + "peerId": "12D3KooWR1Js", + "peerName": "who?", + "region": "where?" + } + } + ] +} \ No newline at end of file diff --git a/packages/api/test/fixtures/postgres/find-content-by-cid-no-deal.json b/packages/api/test/fixtures/postgres/find-content-by-cid-no-deal.json new file mode 100644 index 0000000000..a1a1b5ed24 --- /dev/null +++ b/packages/api/test/fixtures/postgres/find-content-by-cid-no-deal.json @@ -0,0 +1,15 @@ +{ + "created": "2021-07-14T19:27:14.934572Z", + "dagSize": 101, + "pins": [ + { + "status": "Pinned", + "updated": "2021-07-14T19:27:14.934572Z", + "location": { + "peerId": "12D3KooWR1Js", + "peerName": "who?", + "region": "where?" + } + } + ] +} diff --git a/packages/api/test/fixtures/postgres/find-content-by-cid.json b/packages/api/test/fixtures/postgres/find-content-by-cid.json new file mode 100644 index 0000000000..a1a1b5ed24 --- /dev/null +++ b/packages/api/test/fixtures/postgres/find-content-by-cid.json @@ -0,0 +1,15 @@ +{ + "created": "2021-07-14T19:27:14.934572Z", + "dagSize": 101, + "pins": [ + { + "status": "Pinned", + "updated": "2021-07-14T19:27:14.934572Z", + "location": { + "peerId": "12D3KooWR1Js", + "peerName": "who?", + "region": "where?" + } + } + ] +} diff --git a/packages/api/test/mocks/pgrest/get_auth_key.json b/packages/api/test/mocks/pgrest/get_auth_key.json new file mode 100644 index 0000000000..fe92a01f86 --- /dev/null +++ b/packages/api/test/mocks/pgrest/get_auth_key.json @@ -0,0 +1,7 @@ +[{ + "id": 1, + "name": "test-key", + "secret": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ0ZXN0IiwiaXNzIjoid2ViMy1zdG9yYWdlIiwiaWF0IjoxNjMzOTU3Mzg5ODcyLCJuYW1lIjoidGVzdCJ9.KEH0jHUfJls44YWsj8uex_zj0dUIvdyqGalv2rhWnx8", + "inserted_at": "2021-07-14T19:27:14.934572Z", + "uploads": [] +}] \ No newline at end of file diff --git a/packages/api/test/mocks/pgrest/get_content.js b/packages/api/test/mocks/pgrest/get_content.js new file mode 100644 index 0000000000..bd2b9b8773 --- /dev/null +++ b/packages/api/test/mocks/pgrest/get_content.js @@ -0,0 +1,22 @@ +/** + * https://github.com/sinedied/smoke#javascript-mocks + * @param {Request} request + */ +module.exports = ({ query }) => { + const cid = query.cid && query.cid.split('eq.')[1] + let res + + if (cid === 'unknown') { + res = null + } else if (cid === 'noaggregate') { + res = require('../../fixtures/postgres/find-content-by-cid-no-aggregate.json') + } else if (cid === 'nodeal') { + res = require('../../fixtures/postgres/find-content-by-cid-no-deal.json') + } else { + res = require('../../fixtures/postgres/find-content-by-cid.json') + } + if (res) { + res.cid = cid + } + return res +} diff --git a/packages/api/test/mocks/pgrest/get_upload.js b/packages/api/test/mocks/pgrest/get_upload.js new file mode 100644 index 0000000000..099c6a7b32 --- /dev/null +++ b/packages/api/test/mocks/pgrest/get_upload.js @@ -0,0 +1,54 @@ +const userUploads = [ + { + name: 'Upload at 2021-07-09T16:20:32.658Z', + content: { + cid: 'bafkreigpimx5kl6thyfysh2witvbo5nexvu3q3uc3y65rj5sr5czcc7wae', + dagSize: null, + pins: [] + }, + created: '2021-07-09T16:20:33.946845Z' + }, + { + name: 'week-in-web3-2021-07-02.mov', + content: { + cid: 'bafybeigc4fntpegrqzgzhxyc7hzu25ykqqai7nzllov2jn55wvzjju7pwu', + dagSize: null, + pins: [] + }, + created: '2021-07-09T10:40:35.408884Z' + }, + { + name: 'pinpie.jpg', + content: { + cid: 'bafkreiajkbmpugz75eg2tmocmp3e33sg5kuyq2amzngslahgn6ltmqxxfa', + dagSize: null, + pins: [] + }, + created: '2021-07-09T10:36:05.862862Z' + } +] + +function compareNameDesc (a, b) { + if (a.name.toLowerCase() < b.name.toLowerCase()) { + return -1 + } + if (a.name.toLowerCase() > b.name.toLowerCase()) { + return 1 + } + return 0 +} + +/** + * https://github.com/sinedied/smoke#javascript-mocks + * @param {Request} request + */ +module.exports = ({ query }) => { + const [sortBy, sortOrder] = query.order.split('.') // inserted_at + let sortedUploads = userUploads + if (sortBy === 'name' && sortOrder === 'desc') { + sortedUploads = userUploads.sort(compareNameDesc) + } + + const a = sortedUploads.slice(0, query.limit) + return a +} diff --git a/packages/api/test/mocks/pgrest/get_user.json b/packages/api/test/mocks/pgrest/get_user.json new file mode 100644 index 0000000000..3e4fb93b31 --- /dev/null +++ b/packages/api/test/mocks/pgrest/get_user.json @@ -0,0 +1,11 @@ +{ + "id": 1, + "issuer": "issuer-str", + "keys": [ + { + "id": 1, + "name": "test-key", + "secret": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ0ZXN0IiwiaXNzIjoid2ViMy1zdG9yYWdlIiwiaWF0IjoxNjMzOTU3Mzg5ODcyLCJuYW1lIjoidGVzdCJ9.KEH0jHUfJls44YWsj8uex_zj0dUIvdyqGalv2rhWnx8" + } + ] +} \ No newline at end of file diff --git a/packages/api/test/mocks/pgrest/head_pin.js b/packages/api/test/mocks/pgrest/head_pin.js new file mode 100644 index 0000000000..2422629698 --- /dev/null +++ b/packages/api/test/mocks/pgrest/head_pin.js @@ -0,0 +1,9 @@ +/** + * https://github.com/sinedied/smoke#javascript-mocks + */ +module.exports = () => { + return { + statusCode: 200, + body: '30000' + } +} diff --git a/packages/api/test/mocks/pgrest/head_upload.js b/packages/api/test/mocks/pgrest/head_upload.js new file mode 100644 index 0000000000..2422629698 --- /dev/null +++ b/packages/api/test/mocks/pgrest/head_upload.js @@ -0,0 +1,9 @@ +/** + * https://github.com/sinedied/smoke#javascript-mocks + */ +module.exports = () => { + return { + statusCode: 200, + body: '30000' + } +} diff --git a/packages/api/test/mocks/pgrest/head_user.js b/packages/api/test/mocks/pgrest/head_user.js new file mode 100644 index 0000000000..2422629698 --- /dev/null +++ b/packages/api/test/mocks/pgrest/head_user.js @@ -0,0 +1,9 @@ +/** + * https://github.com/sinedied/smoke#javascript-mocks + */ +module.exports = () => { + return { + statusCode: 200, + body: '30000' + } +} diff --git a/packages/api/test/mocks/pgrest/patch_auth_key.json b/packages/api/test/mocks/pgrest/patch_auth_key.json new file mode 100644 index 0000000000..95fc8f9b9a --- /dev/null +++ b/packages/api/test/mocks/pgrest/patch_auth_key.json @@ -0,0 +1,3 @@ +{ + "id": 1 +} \ No newline at end of file diff --git a/packages/api/test/mocks/pgrest/patch_upload.json b/packages/api/test/mocks/pgrest/patch_upload.json new file mode 100644 index 0000000000..95fc8f9b9a --- /dev/null +++ b/packages/api/test/mocks/pgrest/patch_upload.json @@ -0,0 +1,3 @@ +{ + "id": 1 +} \ No newline at end of file diff --git a/packages/api/test/mocks/pgrest/post_auth_key.js b/packages/api/test/mocks/pgrest/post_auth_key.js new file mode 100644 index 0000000000..60b5bd531c --- /dev/null +++ b/packages/api/test/mocks/pgrest/post_auth_key.js @@ -0,0 +1,8 @@ +/** + * https://github.com/sinedied/smoke#javascript-mocks + */ +module.exports = ({ body }) => { + return { + id: 1 + } +} diff --git a/packages/api/test/mocks/pgrest/post_rpc#content_dag_size_total.js b/packages/api/test/mocks/pgrest/post_rpc#content_dag_size_total.js new file mode 100644 index 0000000000..2422629698 --- /dev/null +++ b/packages/api/test/mocks/pgrest/post_rpc#content_dag_size_total.js @@ -0,0 +1,9 @@ +/** + * https://github.com/sinedied/smoke#javascript-mocks + */ +module.exports = () => { + return { + statusCode: 200, + body: '30000' + } +} diff --git a/packages/api/test/mocks/pgrest/post_rpc#create_upload.js b/packages/api/test/mocks/pgrest/post_rpc#create_upload.js new file mode 100644 index 0000000000..4ac5cb4c9a --- /dev/null +++ b/packages/api/test/mocks/pgrest/post_rpc#create_upload.js @@ -0,0 +1,9 @@ +/** + * https://github.com/sinedied/smoke#javascript-mocks + */ +module.exports = () => { + return { + statusCode: 200, + body: '1' // upload ID + } +} diff --git a/packages/api/test/mocks/pgrest/post_rpc#find_deals_by_content_cids.js b/packages/api/test/mocks/pgrest/post_rpc#find_deals_by_content_cids.js new file mode 100644 index 0000000000..38f9383150 --- /dev/null +++ b/packages/api/test/mocks/pgrest/post_rpc#find_deals_by_content_cids.js @@ -0,0 +1,28 @@ +/** + * https://github.com/sinedied/smoke#javascript-mocks + * @param {{ body: Request }} request + */ +module.exports = ({ body }) => { + // main cid + if (body.cids.includes('testcid')) { + return [{ + dealId: 12345, + storageProvider: 'f99', + status: 'Active', + pieceCid: 'baga', + dataCid: 'testcid', + dataModelSelector: 'Links/0/Links', + activation: '', + created: '2021-07-14T19:27:14.934572Z', + updated: '2021-07-14T19:27:14.934572Z' + }] + } else if (body.cids.includes('nodeal')) { + return [{ + status: 'Queued', + pieceCid: 'baga', + dataCid: 'nodeal', + dataModelSelector: 'Links/0/Links' + }] + } + return [] +} diff --git a/packages/api/test/mocks/pgrest/post_rpc#pin_dag_size_total.js b/packages/api/test/mocks/pgrest/post_rpc#pin_dag_size_total.js new file mode 100644 index 0000000000..2422629698 --- /dev/null +++ b/packages/api/test/mocks/pgrest/post_rpc#pin_dag_size_total.js @@ -0,0 +1,9 @@ +/** + * https://github.com/sinedied/smoke#javascript-mocks + */ +module.exports = () => { + return { + statusCode: 200, + body: '30000' + } +} diff --git a/packages/api/test/mocks/pgrest/post_rpc#user_used_storage.js b/packages/api/test/mocks/pgrest/post_rpc#user_used_storage.js new file mode 100644 index 0000000000..2422629698 --- /dev/null +++ b/packages/api/test/mocks/pgrest/post_rpc#user_used_storage.js @@ -0,0 +1,9 @@ +/** + * https://github.com/sinedied/smoke#javascript-mocks + */ +module.exports = () => { + return { + statusCode: 200, + body: '30000' + } +} diff --git a/packages/api/test/scripts/worker-globals-fauna.js b/packages/api/test/scripts/worker-globals-fauna.js new file mode 100644 index 0000000000..868a0d2e7f --- /dev/null +++ b/packages/api/test/scripts/worker-globals-fauna.js @@ -0,0 +1,27 @@ +export const caches = { + default: { + match: () => null, + put: () => { } + } +} + +export const ENV = 'dev' +export const BRANCH = 'test' +export const VERSION = 'test' +export const COMMITHASH = 'test' +export const MAINTENANCE_MODE = 'rw' +export const SALT = 'test-salt' +export const FAUNA_ENDPOINT = 'http://localhost:9086/graphql' +export const FAUNA_KEY = 'test-fauna-key' +export const MAGIC_SECRET_KEY = 'test-magic-secret-key' +export const CLUSTER_API_URL = 'http://localhost:9094' +export const CLUSTER_BASIC_AUTH_TOKEN = 'test' +export const S3_BUCKET_ENDPOINT = 'http://localhost:9096' +export const S3_BUCKET_NAME = 'bucket' +export const S3_BUCKET_REGION = 'eu-central-1' +export const S3_ACCESS_KEY_ID = 'access-key-id' +export const S3_SECRET_ACCESS_KEY_ID = 'secret-access-key' +export const DATABASE = 'fauna' + +// Can be removed once we get a test mode for admin magic sdk. +export const DANGEROUSLY_BYPASS_MAGIC_AUTH = true diff --git a/packages/api/test/scripts/worker-globals.js b/packages/api/test/scripts/worker-globals.js index 76b2dff3c1..1ee3274020 100644 --- a/packages/api/test/scripts/worker-globals.js +++ b/packages/api/test/scripts/worker-globals.js @@ -21,6 +21,9 @@ export const S3_BUCKET_NAME = 'bucket' export const S3_BUCKET_REGION = 'eu-central-1' export const S3_ACCESS_KEY_ID = 'access-key-id' export const S3_SECRET_ACCESS_KEY_ID = 'secret-access-key' +export const DATABASE = 'postgres' +export const PG_REST_URL = 'http://localhost:9087' +export const PG_REST_JWT = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJzdXBhYmFzZSIsImlhdCI6MTYwMzk2ODgzNCwiZXhwIjoyNTUwNjUzNjM0LCJyb2xlIjoic2VydmljZV9yb2xlIn0.necIJaiP7X2T2QjGeV-FhpkizcNTX8HjDDBAxpgQTEI' // Can be removed once we get a test mode for admin magic sdk. export const DANGEROUSLY_BYPASS_MAGIC_AUTH = true diff --git a/packages/api/test/status.spec.js b/packages/api/test/status.spec.js index d455750204..cd9f1e9c2d 100644 --- a/packages/api/test/status.spec.js +++ b/packages/api/test/status.spec.js @@ -24,7 +24,7 @@ describe('GET /status/:cid', () => { storageProvider: 'f99', status: 'Active', pieceCid: 'baga', - dataCid: 'bafy', + dataCid: 'testcid', dataModelSelector: 'Links/0/Links', activation: '', created: '2021-07-14T19:27:14.934572Z', @@ -52,7 +52,7 @@ describe('GET /status/:cid', () => { deals: [{ status: 'Queued', pieceCid: 'baga', - dataCid: 'bafy', + dataCid: 'nodeal', dataModelSelector: 'Links/0/Links' }] }) diff --git a/packages/api/test/upload.spec.js b/packages/api/test/upload.spec.js index d1ba5dd295..9b8882f564 100644 --- a/packages/api/test/upload.spec.js +++ b/packages/api/test/upload.spec.js @@ -6,7 +6,7 @@ import { SALT } from './scripts/worker-globals.js' import { JWT_ISSUER } from '../src/constants.js' function getTestJWT (sub = 'test', name = 'test') { - return JWT.sign({ sub, iss: JWT_ISSUER, iat: Date.now(), name }, SALT) + return JWT.sign({ sub, iss: JWT_ISSUER, iat: 1633957389872, name }, SALT) } describe('POST /upload', () => { diff --git a/packages/api/test/user.spec.js b/packages/api/test/user.spec.js index 2d4d3cd56e..60606dbc6b 100644 --- a/packages/api/test/user.spec.js +++ b/packages/api/test/user.spec.js @@ -6,7 +6,7 @@ import { SALT } from './scripts/worker-globals.js' import { JWT_ISSUER } from '../src/constants.js' function getTestJWT (sub = 'test', name = 'test') { - return JWT.sign({ sub, iss: JWT_ISSUER, iat: Date.now(), name }, SALT) + return JWT.sign({ sub, iss: JWT_ISSUER, iat: 1633957389872, name }, SALT) } describe('GET /user/account', () => { diff --git a/packages/api/webpack.config.js b/packages/api/webpack.config.js index 16dbd2c944..7db487c595 100644 --- a/packages/api/webpack.config.js +++ b/packages/api/webpack.config.js @@ -79,8 +79,9 @@ export default { stream: require.resolve('stream-browserify') }, alias: { - // node-fetch causes TypeError: Illegal invocation in Cloudflare Workers - 'node-fetch': path.resolve(__dirname, 'src', 'utils', 'fetch.js') + // node-fetch and cross-fetch causes TypeError: Illegal invocation in Cloudflare Workers + 'node-fetch': path.resolve(__dirname, 'src', 'utils', 'fetch.js'), + 'cross-fetch': path.resolve(__dirname, 'src', 'utils', 'fetch.js') } }, optimization: { diff --git a/packages/api/wrangler.toml b/packages/api/wrangler.toml index b199dcfbfa..2963e91c20 100644 --- a/packages/api/wrangler.toml +++ b/packages/api/wrangler.toml @@ -26,14 +26,14 @@ format = "service-worker" account_id = "fffa4b4363a7e5250af8357087263b3a" # Protocol Labs CF account zone_id = "7eee3323c1b35b6650568604c65f441e" # web3.storage zone route = "https://api.web3.storage/*" -vars = { CLUSTER_API_URL = "https://web3.storage.ipfscluster.io/api/", ENV = "production", DATABASE_URL = "https://db.web3.storage" } +vars = { CLUSTER_API_URL = "https://web3.storage.ipfscluster.io/api/", ENV = "production", PG_REST_URL = "https://db.web3.storage" } [env.staging] # name = "web3-storage-staging" account_id = "fffa4b4363a7e5250af8357087263b3a" # Protocol Labs CF account zone_id = "7eee3323c1b35b6650568604c65f441e" # web3.storage zone route = "https://api-staging.web3.storage/*" -vars = { CLUSTER_API_URL = "https://web3.storage.ipfscluster.io/api/", ENV = "staging", DATABASE_URL = "https://db-staging.web3.storage" } +vars = { CLUSTER_API_URL = "https://web3.storage.ipfscluster.io/api/", ENV = "staging", PG_REST_URL = "https://db-staging.web3.storage" } [env.alan] workers_dev = true @@ -53,7 +53,7 @@ vars = { CLUSTER_API_URL = "https://yusef-cluster-api-web3-storage.loca.lt", ENV [env.vsantos] workers_dev = true account_id = "7ec0b7cf2ec201b2580374e53ba5f37b" -vars = { CLUSTER_API_URL = "https://vsantos-cluster-api-web3-storage.loca.lt", ENV = "dev" } +vars = { CLUSTER_API_URL = "https://vascosantos-cluster-api-web3-storage.loca.lt", PG_REST_URL = "https://vascosantos-postgres-api-web3-storage.loca.lt", ENV = "dev", DATABASE = "postgres" } [env.rafaelramalho] workers_dev = true diff --git a/packages/db/fauna/client.js b/packages/db/fauna/client.js new file mode 100644 index 0000000000..ef8bb7ffb1 --- /dev/null +++ b/packages/db/fauna/client.js @@ -0,0 +1,490 @@ +import { GraphQLClient, gql } from 'graphql-request' +import retry from 'p-retry' + +export class FaunaClient { + constructor ({ endpoint, token }) { + this._client = new GraphQLClient(endpoint, { + fetch: globalThis.fetch, + headers: { Authorization: `Bearer ${token}` } + }) + } + + /** + * Upsert user. + * + * @param {import('../db-client-types').UpsertUserInput} user + * @return {import('../db-client-types').UpsertUserOutput} + */ + async upsertUser (user) { + const res = await this.query(gql` + mutation CreateOrUpdateUser($data: CreateOrUpdateUserInput!) { + createOrUpdateUser(data: $data) { + issuer + } + } + `, { data: user }) + + return res.createOrUpdateUser + } + + /** + * Get user by its issuer. + * + * @param {string} issuer + * @return {Promise} + */ + async getUser (issuer) { + const res = await this.query(gql` + query FindUserByIssuer ($issuer: String!) { + findUserByIssuer(issuer: $issuer) { + _id + issuer + } + } + `, { issuer }) + return res.findUserByIssuer + } + + /** + * Get used storage in bytes. + * + * @param {number} userId + * @returns {Promise} + */ + async getUsedStorage (userId) { + const res = await this.query(gql` + query findUserByID($id: ID!) { + findUserByID(id: $id) { + usedStorage + } + } + `, { id: userId }) + + return res.findUserByID.usedStorage + } + + /** + * Create upload with content and pins. + * + * @param {import('../db-client-types').CreateUploadInput} data + * @returns {Promise} + */ + async createUpload (data) { + const res = await this.query(gql` + mutation CreateUpload($data: CreateUploadInput!) { + createUpload(data: $data) { + content { + _id + dagSize + } + } + } + `, { + data: { + user: data.user, + authToken: data.authKey, + cid: data.contentCid, + name: data.name, + type: data.type, + backupUrls: data.backupUrls, + pins: data.pins, + dagSize: data.dagSize + } // uniform data with fauna data model + }) + + return res + } + + /** + * Get upload with user, auth_keys, content and pins. + * + * @param {string} cid + * @param {number} userId + * @returns {Promise} + */ + async getUpload (cid, userId) { + throw new Error('not implemented in fauna') + } + + /** + * List uploads of a given user. + * + * @param {number} userId + * @param {import('../db-client-types').ListUploadsOptions} [opts] + * @returns {Promise>} + */ + async listUploads (userId, opts = {}) { + const res = await this.query(gql` + query FindUploadsByUser($where: FindUploadsByUserInput!, $sortBy: UploadListSortBy, $sortOrder: SortDirection, $size: Int!) { + findUploadsByUser(where: $where, sortBy: $sortBy, sortOrder: $sortOrder, _size: $size) { + data { + name + content { + cid + dagSize + aggregateEntries { + data { + aggregate { + deals { + data { + storageProvider + renewal + dealId + status + } + } + } + } + } + pins { + data { + status + } + } + } + created + } + } + } + `, { + where: { createdBefore: opts.before, user: userId }, + size: opts.size, + sortBy: opts.sortBy, + sortOrder: opts.sortOrder + }) + + const { data: raw } = res.findUploadsByUser + + return raw.map(({ name, content, created }) => ({ + name, + ...convertRawContent(content), + created + })) + } + + /** + * Rename an upload. + * + * @param {string} cid + * @param {number} user + * @param {string} name + */ + async renameUpload (cid, user, name) { + const res = await this.query(gql` + mutation RenameUserUpload($user: ID!, $cid: String!, $name: String!) { + renameUserUpload(user: $user, cid: $cid, name: $name) { + name + } + } + `, { cid, user, name }) + + return res.renameUserUpload + } + + /** + * Delete a user upload. + * + * @param {string} cid + * @param {number} userId + */ + async deleteUpload (cid, userId) { + const res = await this.query(gql` + mutation DeleteUserUpload($user: ID!, $cid: String!) { + deleteUserUpload(user: $user, cid: $cid) { + _id + } + } + `, { cid, user: userId }) + + return res.deleteUserUpload + } + + /** + * Get content status of a given cid. + * + * @param {string} cid + * @returns {Promise} + */ + async getStatus (cid) { + const result = await this.query( + gql`query FindContentByCid($cid: String!) { + findContentByCid(cid: $cid) { + cid + created + dagSize + aggregateEntries { + data { + dataModelSelector + aggregate { + dataCid + pieceCid + deals { + data { + storageProvider + dealId + status + activation + created + updated + } + } + } + } + } + pins { + data { + status + updated + location { + peerId + peerName + region + } + } + } + } + } + `, { cid }) + + const { findContentByCid: raw } = result + + return raw && convertRawContent(raw) + } + + /** + * Get backups for a given upload. + * + * @param {number} uploadId + * @return {Promise>} + */ + async getBackups (uploadId) { + throw new Error('not implemented in fauna') + } + + /** + * Upsert pin. + * + * @param {string} cid + * @param {import('../db-client-types').PinItemOutput} pin + * @return {Promise} + */ + async upsertPin (cid, pin) { + const res = await this.query(gql` + mutation CreateOrUpdatePin($data: CreateOrUpdatePinInput!) { + createOrUpdatePin(data: $data) { + _id + } + } + `, { data: { content: cid, ...pin } }) + + return res + } + + /** + * Get Pins for a cid + * + * @param {string} cid + * @return {Promise>} + */ + async getPins (cid) { + throw new Error('not implemented in fauna') + } + + /** + * Get deals for a cid + * + * @param {string} cid + * @return {Promise} + */ + async getDeals (cid) { + throw new Error('not implemented in fauna') + } + + /** + * Get deals for multiple cids + * + * @param {string[]} cids + * @return {Promise>} + */ + async getDealsForCids (cids = []) { + throw new Error('not implemented in fauna') + } + + /** + * Create a new auth key. + * + * @param {import('../db-client-types').CreateAuthKeyInput} key + * @return {Promise} + */ + async createKey ({ name, secret, user }) { + const res = await this.query(gql` + mutation CreateAuthToken($data: CreateAuthTokenInput!) { + createAuthToken(data: $data) { + _id + } + } + `, { data: { user, name, secret } }) + + return res.createAuthToken + } + + /** + * Get key with issuer and secret. + * + * @param {string} issuer + * @param {string} secret + * @return {Promise} + */ + async getKey (issuer, secret) { + const res = await this.query(gql` + query VerifyAuthToken ($issuer: String!, $secret: String!) { + verifyAuthToken(issuer: $issuer, secret: $secret) { + _id + name + user { + _id + issuer + } + } + } + `, { issuer, secret }) + return res.verifyAuthToken + } + + /** + * List auth keys of a given user. + * + * @param {number} userId + * @return {Promise>} + */ + async listKeys (userId) { + const res = await this.query(gql` + query FindAuthTokensByUser($user: ID!) { + # Paginated but users are probably not going to have tons of these. + # Note: 100,000 is the max page size. + findAuthTokensByUser(user: $user, _size: 100000) { + data { + _id + name + secret + created + uploads(_size: 1) { + data { + _id + } + } + } + } + } + `, { user: userId }) + + res.findAuthTokensByUser.data = res.findAuthTokensByUser.data.map(t => { + t.hasUploads = Boolean(t.uploads.data.length) + delete t.uploads + return t + }) + + return res.findAuthTokensByUser.data + } + + /** + * Delete auth key with given id. + * + * @param {number} userId + * @param {number} keyId + */ + async deleteKey (userId, keyId) { + const res = await this.query(gql` + mutation DeleteAuthToken($user: ID!, $authToken: ID!) { + deleteAuthToken(user: $user, authToken: $authToken) { + _id + } + } + `, { user: userId, authToken: keyId }) + + return res.deleteAuthToken + } + + /** + * Get metrics for a given key. + * + * @param {string} key + */ + async getMetricsValue (key) { + const { findMetricByKey } = await retry(() => this.query(gql` + query FindMetric($key: String!) { + findMetricByKey(key: $key) { + key + value + updated + } + } + `, { key })) + + return findMetricByKey ? findMetricByKey.value : 0 + } + + /** + * @template T + * @template V + * @param {import('graphql-request').RequestDocument} document + * @param {V} variables + * @returns {Promise} + */ + query (document, variables) { + return this._client.request(document, variables) + } +} + +const DEAL_STATUS = new Set([ + 'Queued', + 'Published', + 'Active' +]) + +const PIN_STATUS = new Set([ + 'Pinned', + 'Pinning', + 'PinQueued' +]) + +function convertRawContent (raw) { + const pins = raw.pins.data + .filter(({ status }) => PIN_STATUS.has(status)) + .map(({ status, updated, location }) => ({ status, updated, ...location })) + + const deals = raw.aggregateEntries.data.map(({ dataModelSelector, aggregate }) => { + const { pieceCid, dataCid, deals } = aggregate + if (deals.data.length === 0) { + return [{ + status: 'Queued', + pieceCid, + dataCid, + dataModelSelector + }] + } + return deals.data + .filter(({ status }) => DEAL_STATUS.has(status)) + .map(({ dealId, storageProvider, status, activation, created, updated }) => ({ + dealId, + storageProvider, + status, + pieceCid, + dataCid, + dataModelSelector, + activation, + created, + updated + })) + }).reduce((a, b) => a.concat(b), []) // flatten array of arrays. + + const { cid, dagSize, created } = raw + + return { + cid, + created, + dagSize, + pins, + deals + } +} diff --git a/packages/db/index.d.ts b/packages/db/index.d.ts index a44836ec99..63c3b640a2 100644 --- a/packages/db/index.d.ts +++ b/packages/db/index.d.ts @@ -22,7 +22,7 @@ import type { export { gql } export class DBClient { - constructor(config: { endpoint?: string; token: string }) + constructor(config: { endpoint?: string; token: string, postgres?: boolean }) upsertUser (user: UpsertUserInput): Promise getUser (issuer: string): Promise getUsedStorage (userId: number): Promise diff --git a/packages/db/index.js b/packages/db/index.js index d2b0a6140e..d43a8a5ebf 100644 --- a/packages/db/index.js +++ b/packages/db/index.js @@ -1,39 +1,20 @@ -import { PostgrestClient } from '@supabase/postgrest-js' -import { GraphQLClient, gql } from 'graphql-request' +import { gql } from 'graphql-request' -import { normalizeUpload, normalizeContent, normalizePins } from './utils.js' -import { DBError } from './errors.js' +import { FaunaClient } from './fauna/client.js' +import { PostgresClient } from './postgres/client.js' const ENDPOINT = 'https://graphql.fauna.com/graphql' // TODO: Deprecate with fauna export { gql } -const uploadQuery = ` - _id:id, - type, - name, - created:inserted_at, - updated:updated_at, - content(cid, dagSize:dag_size, pins:pin(status, updated:updated_at, location:pin_location(_id:id, peerId:peer_id, peerName:peer_name, region))) - ` -/** - * @typedef {import('./postgres/pg-rest-api-types').definitions} definitions - */ - export class DBClient { constructor ({ endpoint = ENDPOINT, token, postgres = false }) { if (postgres) { - this.client = new PostgrestClient(endpoint, { - headers: { - apikey: token - } - }) + this._client = new PostgresClient({ endpoint, token }) + this._isPostgres = true } else { - this._client = new GraphQLClient(endpoint, { - fetch: globalThis.fetch, - headers: { Authorization: `Bearer ${token}` } - }) + this._client = new FaunaClient({ endpoint, token }) } } @@ -43,28 +24,8 @@ export class DBClient { * @param {import('./db-client-types').UpsertUserInput} user * @return {import('./db-client-types').UpsertUserOutput} */ - async upsertUser (user) { - /** @type {{ data: definitions['user'], error: Error }} */ - const { data, error } = await this.client - .from('user') - .upsert({ - id: user.id, - name: user.name, - picture: user.picture, - email: user.email, - issuer: user.issuer, - github: user.github, - public_address: user.publicAddress - }) - .single() - - if (error) { - throw new DBError(error) - } - - return { - issuer: data.issuer - } + upsertUser (user) { + return this._client.upsertUser(user) } /** @@ -73,27 +34,8 @@ export class DBClient { * @param {string} issuer * @return {Promise} */ - async getUser (issuer) { - /** @type {{ data: import('./db-client-types').User, error: Error }} */ - const { data, error } = await this.client - .from('user') - .select(` - _id:id, - issuer, - name, - email, - publicAddress:public_address, - created:inserted_at, - updated:updated_at - `) - .eq('issuer', issuer) - .single() - - if (error) { - throw new DBError(error) - } - - return data + getUser (issuer) { + return this._client.getUser(issuer) } /** @@ -102,15 +44,8 @@ export class DBClient { * @param {number} userId * @returns {Promise} */ - async getUsedStorage (userId) { - /** @type {{ data: number, error: Error }} */ - const { data, error } = await this.client.rpc('user_used_storage', { query_user_id: userId }) - - if (error) { - throw new DBError(error) - } - - return data || 0 // No uploads for the user + getUsedStorage (userId) { + return this._client.getUsedStorage(userId) } /** @@ -119,40 +54,8 @@ export class DBClient { * @param {import('./db-client-types').CreateUploadInput} data * @returns {Promise} */ - async createUpload (data) { - const now = new Date().toISOString() - /** @type {{ data: number, error: Error }} */ - const { data: uploadResponse, error } = await this.client.rpc('create_upload', { - data: { - user_id: data.user, - auth_key_id: data.authKey, - content_cid: data.contentCid, - source_cid: data.sourceCid, - type: data.type, - name: data.name, - dag_size: data.dagSize, - inserted_at: data.created || now, - updated_at: data.updated || now, - pins: data.pins.map(pin => ({ - status: pin.status, - location: { - peer_id: pin.location.peerId, - peer_name: pin.location.peerName, - region: pin.location.region - } - })), - backup_urls: data.backupUrls - } - }).single() - - if (error) { - throw new DBError(error) - } - - return { - _id: uploadResponse, - cid: data.contentCid - } + createUpload (data) { + return this._client.createUpload(data) } /** @@ -162,26 +65,8 @@ export class DBClient { * @param {number} userId * @returns {Promise} */ - async getUpload (cid, userId) { - /** @type {{ data: import('./db-client-types').UploadItem, error: Error }} */ - const { data: upload, error } = await this.client - .from('upload') - .select(uploadQuery) - .eq('content_cid', cid) - .eq('user_id', userId) - .is('deleted_at', null) - .single() - - if (error) { - throw new DBError(error) - } - - const deals = await this.getDeals(cid) - - return { - ...normalizeUpload(upload), - deals - } + getUpload (cid, userId) { + return this._client.getUpload(cid, userId) } /** @@ -191,41 +76,8 @@ export class DBClient { * @param {import('./db-client-types').ListUploadsOptions} [opts] * @returns {Promise>} */ - async listUploads (userId, opts = {}) { - let query = this.client - .from('upload') - .select(uploadQuery) - .eq('user_id', userId) - .is('deleted_at', null) - .limit(opts.size || 10) - .order( - opts.sortBy === 'Name' ? 'name' : 'inserted_at', - { ascending: opts.sortOrder === 'Asc' } - ) - - if (opts.before) { - query = query.lt('inserted_at', opts.before) - } - - if (opts.after) { - query = query.gte('inserted_at', opts.after) - } - - /** @type {{ data: Array, error: Error }} */ - const { data: uploads, error } = await query - - if (error) { - throw new DBError(error) - } - - // Get deals - const cids = uploads?.map((u) => u.content_cid) - const deals = await this.getDealsForCids(cids) - - return uploads?.map((u) => ({ - ...normalizeUpload(u), - deals: deals[u.content_cid] || [] - })) + listUploads (userId, opts = {}) { + return this._client.listUploads(userId, opts) } /** @@ -233,26 +85,10 @@ export class DBClient { * * @param {string} cid * @param {number} userId + * @param {string} name */ - async renameUpload (cid, userId, name) { - /** @type {{ data: import('./db-client-types').UploadItem, error: Error }} */ - const { data, error } = await this.client - .from('upload') - .update({ name }) - .match({ - user_id: userId, - content_cid: cid - }) - .is('deleted_at', null) - .single() - - if (error) { - throw new DBError(error) - } - - return { - name: data.name - } + renameUpload (cid, userId, name) { + return this._client.renameUpload(cid, userId, name) } /** @@ -261,26 +97,8 @@ export class DBClient { * @param {string} cid * @param {number} userId */ - async deleteUpload (cid, userId) { - /** @type {{ data: import('./db-client-types').UploadItem, error: Error }} */ - const { data, error } = await this.client - .from('upload') - .update({ - deleted_at: new Date().toISOString() - }) - .match({ - content_cid: cid, - user_id: userId - }) - .single() - - if (error) { - throw new DBError(error) - } - - return { - _id: data.id - } + deleteUpload (cid, userId) { + return this._client.deleteUpload(cid, userId) } /** @@ -289,29 +107,8 @@ export class DBClient { * @param {string} cid * @returns {Promise} */ - async getStatus (cid) { - /** @type {{ data: import('./db-client-types').ContentItem, error: Error }} */ - const { data, error } = await this.client - .from('content') - .select(` - cid, - dagSize:dag_size, - created:inserted_at, - pins:pin(status, updated:updated_at, location:pin_location(peerId:peer_id, peerName:peer_name, region)) - `) - .match({ cid }) - .single() - - if (error) { - throw new DBError(error) - } - - const deals = await this.getDeals(cid) - - return { - ...normalizeContent(data), - deals - } + getStatus (cid) { + return this._client.getStatus(cid) } /** @@ -320,23 +117,8 @@ export class DBClient { * @param {number} uploadId * @return {Promise>} */ - async getBackups (uploadId) { - /** @type {{ data: Array, error: Error }} */ - const { data: backups, error } = await this.client - .from('backup') - .select('*') - .match({ upload_id: uploadId }) - - if (error) { - throw new DBError(error) - } - - return backups.map(b => ({ - _id: b.id, - created: b.inserted_at, - uploadId: b.upload_id, - url: b.url - })) + getBackups (uploadId) { + return this._client.getBackups(uploadId) } /** @@ -346,27 +128,8 @@ export class DBClient { * @param {import('./db-client-types').PinItemOutput} pin * @return {Promise} */ - async upsertPin (cid, pin) { - /** @type {{ data: number, error: Error }} */ - const { data: pinId, error } = await this.client.rpc('upsert_pin', { - data: { - content_cid: cid, - pin: { - status: pin.status, - location: { - peer_id: pin.location.peerId, - peer_name: pin.location.peerName, - region: pin.location.region - } - } - } - }) - - if (error) { - throw new DBError(error) - } - - return pinId + upsertPin (cid, pin) { + return this._client.upsertPin(cid, pin) } /** @@ -375,24 +138,8 @@ export class DBClient { * @param {string} cid * @return {Promise>} */ - async getPins (cid) { - /** @type {{ data: Array, error: Error }} */ - const { data: pins, error } = await this.client - .from('pin') - .select(` - _id:id, - status, - created:inserted_at, - updated:updated_at, - location:pin_location(id, peerId:peer_id, peerName:peer_name, region) - `) - .match({ content_cid: cid }) - - if (error) { - throw new DBError(error) - } - - return normalizePins(pins) + getPins (cid) { + return this._client.getPins(cid) } /** @@ -401,9 +148,8 @@ export class DBClient { * @param {string} cid * @return {Promise} */ - async getDeals (cid) { - const deals = await this.getDealsForCids([cid]) - return deals[cid] ? deals[cid] : [] + getDeals (cid) { + return this._client.getDeals(cid) } /** @@ -412,29 +158,8 @@ export class DBClient { * @param {string[]} cids * @return {Promise>} */ - async getDealsForCids (cids = []) { - /** @type {{ data: Array, error: Error }} */ - const { data, error } = await this.client - .rpc('find_deals_by_content_cids', { - cids - }) - - if (error) { - throw new DBError(error) - } - - // TODO: normalize deal by removing deal prefix on dealActivation and dealExpiration - const result = {} - for (const d of data) { - const { dataCid: cid, ...rest } = d - if (!Array.isArray(result[cid])) { - result[cid] = [rest] - } else { - result[cid].push(rest) - } - } - - return result + getDealsForCids (cids = []) { + return this._client.getDealsForCids(cids) } /** @@ -443,24 +168,8 @@ export class DBClient { * @param {import('./db-client-types').CreateAuthKeyInput} key * @return {Promise} */ - async createKey ({ name, secret, user }) { - /** @type {{ data: definitions['auth_key'], error: Error }} */ - const { data, error } = await this.client - .from('auth_key') - .insert({ - name: name, - secret: secret, - user_id: user - }) - .single() - - if (error) { - throw new DBError(error) - } - - return { - _id: data.id - } + createKey ({ name, secret, user }) { + return this._client.createKey({ name, secret, user }) } /** @@ -470,39 +179,8 @@ export class DBClient { * @param {string} secret * @return {Promise} */ - async getKey (issuer, secret) { - /** @type {{ error: Error } */ - const { data, error } = await this.client - .from('user') - .select(` - _id:id, - issuer, - keys:auth_key_user_id_fkey(_id:id, name,secret) - `) - .match({ - issuer - }) - .filter('keys.deleted_at', 'is', null) - .single() - - if (error) { - throw new DBError(error) - } - - const key = data.keys.find(k => k.secret === secret) - - if (!key) { - throw new Error('user has no key with given secret') - } - - return { - _id: key._id, - name: key.name, - user: { - _id: data._id, - issuer: data.issuer - } - } + getKey (issuer, secret) { + return this._client.getKey(issuer, secret) } /** @@ -511,31 +189,8 @@ export class DBClient { * @param {number} userId * @return {Promise>} */ - async listKeys (userId) { - /** @type {{ error: Error, data: Array }} */ - const { data, error } = await this.client - .from('auth_key') - .select(` - id, - name, - secret, - inserted_at, - uploads:upload(id) - `) - .match({ user_id: userId }) - .is('deleted_at', null) - - if (error) { - throw new DBError(error) - } - - return data.map(k => ({ - _id: k.id, - name: k.name, - secret: k.secret, - created: k.inserted_at, - hasUploads: Boolean(k.uploads.length) - })) + listKeys (userId) { + return this._client.listKeys(userId) } /** @@ -544,21 +199,17 @@ export class DBClient { * @param {number} userId * @param {number} keyId */ - async deleteKey (userId, keyId) { - /** @type {{ error: Error }} */ - const { error } = await this.client - .from('auth_key') - .update({ - deleted_at: new Date().toISOString() - }) - .match({ - id: keyId, - user_id: userId - }) + deleteKey (userId, keyId) { + return this._client.deleteKey(userId, keyId) + } - if (error) { - throw new DBError(error) - } + /** + * Get metrics for a given key. + * + * @param {string} key + */ + getMetricsValue (key) { + return this._client.getMetricsValue(key) } /** @@ -569,9 +220,9 @@ export class DBClient { * @returns {Promise} */ query (document, variables) { - if (!this._client) { - throw new Error('fauna database not setup') + if (this._isPostgres) { + throw new Error('query is only compatible with fauna') } - return this._client.request(document, variables) + return this._client.query(document, variables) } } diff --git a/packages/db/package.json b/packages/db/package.json index b36130ed9b..e57253366b 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -21,7 +21,8 @@ "license": "(Apache-2.0 AND MIT)", "dependencies": { "@supabase/postgrest-js": "^0.34.0", - "graphql-request": "^3.4.0" + "graphql-request": "^3.4.0", + "p-retry": "^4.6.1" }, "devDependencies": { "@web-std/fetch": "^2.0.1", @@ -31,7 +32,6 @@ "execa": "^5.1.1", "faunadb": "^4.3.0", "openapi-typescript": "^4.0.2", - "p-retry": "^4.6.1", "pg": "^8.7.1", "playwright-test": "^7.0.1", "sade": "^1.7.4", diff --git a/packages/db/postgres/client.js b/packages/db/postgres/client.js new file mode 100644 index 0000000000..0b21f92849 --- /dev/null +++ b/packages/db/postgres/client.js @@ -0,0 +1,602 @@ +import { PostgrestClient } from '@supabase/postgrest-js' + +import { normalizeUpload, normalizeContent, normalizePins } from './utils.js' +import { DBError } from './errors.js' +import { + getUserMetrics, + getUploadMetrics, + getPinMetrics, + getPinStatusMetrics, + getContentMetrics, + getPinBytesMetrics +} from './metrics.js' + +const uploadQuery = ` + _id:id, + type, + name, + created:inserted_at, + updated:updated_at, + content(cid, dagSize:dag_size, pins:pin(status, updated:updated_at, location:pin_location(_id:id, peerId:peer_id, peerName:peer_name, region))) + ` +/** + * @typedef {import('./postgres/pg-rest-api-types').definitions} definitions + */ + +export class PostgresClient { + constructor ({ endpoint, token }) { + this._client = new PostgrestClient(endpoint, { + headers: { + apikey: token, + accept: '*/*' + } + }) + } + + /** + * Upsert user. + * + * @param {import('../db-client-types').UpsertUserInput} user + * @return {import('../db-client-types').UpsertUserOutput} + */ + async upsertUser (user) { + /** @type {{ data: definitions['user'], error: Error }} */ + const { data, error } = await this._client + .from('user') + .upsert({ + id: user.id, + name: user.name, + picture: user.picture, + email: user.email, + issuer: user.issuer, + github: user.github, + public_address: user.publicAddress + }, { + onConflict: 'issuer' + }) + .single() + + if (error) { + throw new DBError(error) + } + + return { + issuer: data.issuer + } + } + + /** + * Get user by its issuer. + * + * @param {string} issuer + * @return {Promise} + */ + async getUser (issuer) { + /** @type {{ data: import('../db-client-types').User, error: Error }} */ + const { data, error } = await this._client + .from('user') + .select(` + _id:id, + issuer, + name, + email, + publicAddress:public_address, + created:inserted_at, + updated:updated_at + `) + .eq('issuer', issuer) + .single() + + if (error) { + throw new DBError(error) + } + + return data + } + + /** + * Get used storage in bytes. + * + * @param {number} userId + * @returns {Promise} + */ + async getUsedStorage (userId) { + /** @type {{ data: number, error: Error }} */ + const { data, error } = await this._client.rpc('user_used_storage', { query_user_id: userId }) + + if (error) { + throw new DBError(error) + } + + return data || 0 // No uploads for the user + } + + /** + * Create upload with content and pins. + * + * @param {import('../db-client-types').CreateUploadInput} data + * @returns {Promise} + */ + async createUpload (data) { + const now = new Date().toISOString() + /** @type {{ data: number, error: Error }} */ + const { data: uploadResponse, error } = await this._client.rpc('create_upload', { + data: { + user_id: data.user, + auth_key_id: data.authKey, + content_cid: data.contentCid, + source_cid: data.sourceCid, + type: data.type, + name: data.name, + dag_size: data.dagSize, + inserted_at: data.created || now, + updated_at: data.updated || now, + pins: data.pins.map(pin => ({ + status: pin.status, + location: { + peer_id: pin.location.peerId, + peer_name: pin.location.peerName, + region: pin.location.region + } + })), + backup_urls: data.backupUrls + } + }).single() + + if (error) { + throw new DBError(error) + } + + return { + _id: uploadResponse, + cid: data.contentCid + } + } + + /** + * Get upload with user, auth_keys, content and pins. + * + * @param {string} cid + * @param {number} userId + * @returns {Promise} + */ + async getUpload (cid, userId) { + /** @type {{ data: import('../db-client-types').UploadItem, error: Error }} */ + const { data: upload, error } = await this._client + .from('upload') + .select(uploadQuery) + .eq('content_cid', cid) + .eq('user_id', userId) + .is('deleted_at', null) + .single() + + if (error) { + throw new DBError(error) + } + + const deals = await this.getDeals(cid) + + return { + ...normalizeUpload(upload), + deals + } + } + + /** + * List uploads of a given user. + * + * @param {number} userId + * @param {import('../db-client-types').ListUploadsOptions} [opts] + * @returns {Promise>} + */ + async listUploads (userId, opts = {}) { + let query = this._client + .from('upload') + .select(uploadQuery) + .eq('user_id', userId) + .is('deleted_at', null) + .limit(opts.size || 10) + .order( + opts.sortBy === 'Name' ? 'name' : 'inserted_at', + { ascending: opts.sortOrder === 'Asc' } + ) + + if (opts.before) { + query = query.lt('inserted_at', opts.before) + } + + if (opts.after) { + query = query.gte('inserted_at', opts.after) + } + + /** @type {{ data: Array, error: Error }} */ + const { data: uploads, error } = await query + + if (error) { + throw new DBError(error) + } + + // Get deals + const cids = uploads?.map((u) => u.content_cid) + const deals = await this.getDealsForCids(cids) + + return uploads?.map((u) => ({ + ...normalizeUpload(u), + deals: deals[u.content_cid] || [] + })) + } + + /** + * Rename an upload. + * + * @param {string} cid + * @param {number} userId + * @param {string} name + */ + async renameUpload (cid, userId, name) { + /** @type {{ data: import('../db-client-types').UploadItem, error: Error }} */ + const { data, error } = await this._client + .from('upload') + .update({ name }) + .match({ + user_id: userId, + content_cid: cid + }) + .is('deleted_at', null) + .single() + + if (error) { + throw new DBError(error) + } + + return { + name: data.name + } + } + + /** + * Delete a user upload. + * + * @param {string} cid + * @param {number} userId + */ + async deleteUpload (cid, userId) { + /** @type {{ data: import('../db-client-types').UploadItem, error: Error }} */ + const { data, error } = await this._client + .from('upload') + .update({ + deleted_at: new Date().toISOString() + }) + .match({ + content_cid: cid, + user_id: userId + }) + .single() + + if (error) { + throw new DBError(error) + } + + return { + _id: data.id + } + } + + /** + * Get content status of a given cid. + * + * @param {string} cid + * @returns {Promise} + */ + async getStatus (cid) { + /** @type {{ data: import('../db-client-types').ContentItem, error: Error }} */ + const { data, error } = await this._client + .from('content') + .select(` + cid, + dagSize:dag_size, + created:inserted_at, + pins:pin(status, updated:updated_at, location:pin_location(peerId:peer_id, peerName:peer_name, region)) + `) + .match({ cid }) + .single() + + if (error) { + throw new DBError(error) + } + + if (!data) { + return + } + + const deals = await this.getDeals(cid) + return { + ...normalizeContent(data), + deals + } + } + + /** + * Get backups for a given upload. + * + * @param {number} uploadId + * @return {Promise>} + */ + async getBackups (uploadId) { + /** @type {{ data: Array, error: Error }} */ + const { data: backups, error } = await this._client + .from('backup') + .select('*') + .match({ upload_id: uploadId }) + + if (error) { + throw new DBError(error) + } + + return backups.map(b => ({ + _id: b.id, + created: b.inserted_at, + uploadId: b.upload_id, + url: b.url + })) + } + + /** + * Upsert pin. + * + * @param {string} cid + * @param {import('../db-client-types').PinItemOutput} pin + * @return {Promise} + */ + async upsertPin (cid, pin) { + /** @type {{ data: number, error: Error }} */ + const { data: pinId, error } = await this._client.rpc('upsert_pin', { + data: { + content_cid: cid, + pin: { + status: pin.status, + location: { + peer_id: pin.location.peerId, + peer_name: pin.location.peerName, + region: pin.location.region + } + } + } + }) + + if (error) { + throw new DBError(error) + } + + return pinId + } + + /** + * Get Pins for a cid + * + * @param {string} cid + * @return {Promise>} + */ + async getPins (cid) { + /** @type {{ data: Array, error: Error }} */ + const { data: pins, error } = await this._client + .from('pin') + .select(` + _id:id, + status, + created:inserted_at, + updated:updated_at, + location:pin_location(id, peerId:peer_id, peerName:peer_name, region) + `) + .match({ content_cid: cid }) + + if (error) { + throw new DBError(error) + } + + return normalizePins(pins) + } + + /** + * Get deals for a cid + * + * @param {string} cid + * @return {Promise} + */ + async getDeals (cid) { + const deals = await this.getDealsForCids([cid]) + return deals[cid] ? deals[cid] : [] + } + + /** + * Get deals for multiple cids + * + * @param {string[]} cids + * @return {Promise>} + */ + async getDealsForCids (cids = []) { + /** @type {{ data: Array, error: Error }} */ + const { data, error } = await this._client + .rpc('find_deals_by_content_cids', { + cids + }) + + if (error) { + throw new DBError(error) + } + + // TODO: normalize deal by removing deal prefix on dealActivation and dealExpiration + const result = {} + for (const d of data) { + const cid = d.dataCid + if (!Array.isArray(result[cid])) { + result[cid] = [d] + } else { + result[cid].push(d) + } + } + + return result + } + + /** + * Create a new auth key. + * + * @param {import('../db-client-types').CreateAuthKeyInput} key + * @return {Promise} + */ + async createKey ({ name, secret, user }) { + /** @type {{ data: definitions['auth_key'], error: Error }} */ + const { data, error } = await this._client + .from('auth_key') + .insert({ + name: name, + secret: secret, + user_id: user + }) + .single() + + if (error) { + throw new DBError(error) + } + + return { + _id: data.id + } + } + + /** + * Get key with issuer and secret. + * + * @param {string} issuer + * @param {string} secret + * @return {Promise} + */ + async getKey (issuer, secret) { + /** @type {{ error: Error } */ + const { data, error } = await this._client + .from('user') + .select(` + _id:id, + issuer, + keys:auth_key_user_id_fkey(_id:id, name,secret) + `) + .match({ + issuer + }) + .filter('keys.deleted_at', 'is', null) + .single() + + if (error) { + throw new DBError(error) + } + const key = data.keys.find(k => k.secret === secret) + + if (!key) { + throw new Error('user has no key with given secret') + } + + return { + _id: key._id, + name: key.name, + user: { + _id: data._id, + issuer: data.issuer + } + } + } + + /** + * List auth keys of a given user. + * + * @param {number} userId + * @return {Promise>} + */ + async listKeys (userId) { + /** @type {{ error: Error, data: Array }} */ + const { data, error } = await this._client + .from('auth_key') + .select(` + id, + name, + secret, + inserted_at, + uploads:upload(id) + `) + .match({ user_id: userId }) + .is('deleted_at', null) + + if (error) { + throw new DBError(error) + } + + return data.map(k => ({ + _id: k.id, + name: k.name, + secret: k.secret, + created: k.inserted_at, + hasUploads: Boolean(k.uploads.length) + })) + } + + /** + * Delete auth key with given id. + * + * @param {number} userId + * @param {number} keyId + */ + async deleteKey (userId, keyId) { + /** @type {{ error: Error }} */ + const { data, error } = await this._client + .from('auth_key') + .update({ + deleted_at: new Date().toISOString() + }) + .match({ + id: keyId, + user_id: userId + }) + + if (error) { + throw new DBError(error) + } + + return { + _id: data.id + } + } + + /** + * Get metrics for a given key. + * + * @param {string} key + */ + async getMetricsValue (key) { + let res + switch (key) { + case 'users_total': + res = await getUserMetrics(this._client) + return res.total + case 'uploads_total': + res = await getUploadMetrics(this._client) + return res.total + case 'content_bytes_total': + res = await getContentMetrics(this._client) + return res.totalBytes + case 'pins_total': + res = await getPinMetrics(this._client) + return res.total + case 'pins_bytes_total': + res = await getPinBytesMetrics(this._client) + return res.totalBytes + case 'pins_status_queued_total': + case 'pins_status_pinning_total': + case 'pins_status_pinned_total': + case 'pins_status_failed_total': + res = await getPinStatusMetrics(this._client, key) + return res.total + default: + throw new Error('unknown metric requested') + } + } +} diff --git a/packages/db/errors.js b/packages/db/postgres/errors.js similarity index 100% rename from packages/db/errors.js rename to packages/db/postgres/errors.js diff --git a/packages/db/postgres/functions.sql b/packages/db/postgres/functions.sql index 4c414d0141..bc7503a0bd 100644 --- a/packages/db/postgres/functions.sql +++ b/packages/db/postgres/functions.sql @@ -144,6 +144,31 @@ BEGIN END $$; +CREATE OR REPLACE FUNCTION content_dag_size_total() RETURNS BIGINT + LANGUAGE plpgsql +AS +$$ +BEGIN + return( + select sum(c.dag_size) + from content c + ); +END +$$; + +CREATE OR REPLACE FUNCTION pin_dag_size_total() RETURNS BIGINT + LANGUAGE plpgsql +AS +$$ +BEGIN + return( + select sum(c.dag_size) + from pin p + join content c on c.cid = p.content_cid + ); +END +$$; + CREATE OR REPLACE FUNCTION find_deals_by_content_cids(cids text[]) RETURNS TABLE ( diff --git a/packages/db/postgres/metrics.js b/packages/db/postgres/metrics.js new file mode 100644 index 0000000000..43b3201ab0 --- /dev/null +++ b/packages/db/postgres/metrics.js @@ -0,0 +1,92 @@ +import { DBError } from './errors.js' + +export async function getUserMetrics (client) { + const { count, error } = await client + .from('user') + .select('*', { head: true, count: 'exact' }) + .range(0, 1) + + if (error) { + throw new DBError(error) + } + + return { + total: count + } +} + +export async function getUploadMetrics (client) { + const { count, error } = await client + .from('upload') + .select('*', { head: true, count: 'exact' }) + .range(0, 1) + + if (error) { + throw new DBError(error) + } + + return { + total: count + } +} + +export async function getContentMetrics (client) { + const { data, error } = await client.rpc('content_dag_size_total') + if (error) { + throw new DBError(error) + } + + return { + totalBytes: data || 0 + } +} + +export async function getPinBytesMetrics (client) { + const { data, error } = await client.rpc('pin_dag_size_total') + if (error) { + throw new DBError(error) + } + + return { + totalBytes: data || 0 + } +} + +export async function getPinMetrics (client) { + const { count, error } = await client + .from('pin') + .select('*', { head: true, count: 'exact' }) + .range(0, 1) + + if (error) { + throw new DBError(error) + } + + return { + total: count + } +} + +const pinStatusMapping = { + pins_status_queued_total: 'PinQueued', + pins_status_pinning_total: 'Pinning', + pins_status_pinned_total: 'Pinned', + pins_status_failed_total: 'PinError' +} + +export async function getPinStatusMetrics (client, key) { + const pinStatus = pinStatusMapping[key] + const { count, error } = await client + .from('pin') + .select('*', { head: true, count: 'exact' }) + .filter('status', 'eq', pinStatus) + .range(0, 1) + + if (error) { + throw new DBError(error) + } + + return { + total: count + } +} diff --git a/packages/db/utils.js b/packages/db/postgres/utils.js similarity index 58% rename from packages/db/utils.js rename to packages/db/postgres/utils.js index 7b24c33849..d6d3897039 100644 --- a/packages/db/utils.js +++ b/packages/db/postgres/utils.js @@ -1,12 +1,15 @@ /** * Normalize upload item. * - * @param {import('./db-client-types').UploadItem} upload - * @return {import('./db-client-types').UploadItemOutput} + * @param {import('../db-client-types').UploadItem} upload + * @return {import('../db-client-types').UploadItemOutput} */ export function normalizeUpload (upload) { + const nUpload = { ...upload } + delete nUpload.content + return { - ...upload, + ...nUpload, ...upload.content, pins: normalizePins(upload.content.pins) } @@ -15,8 +18,8 @@ export function normalizeUpload (upload) { /** * Normalize content item. * - * @param {import('./db-client-types').ContentItem} content - * @return {import('./db-client-types').ContentItemOutput} + * @param {import('../db-client-types').ContentItem} content + * @return {import('../db-client-types').ContentItemOutput} */ export function normalizeContent (content) { return { @@ -28,8 +31,8 @@ export function normalizeContent (content) { /** * Normalize pin items. * - * @param {Array} pins - * @return {Array} + * @param {Array} pins + * @return {Array} */ export function normalizePins (pins) { return pins.map(pin => ({ diff --git a/packages/db/test/index.spec.js b/packages/db/test/index.spec.js index ead5fc72c0..fccaf35b24 100644 --- a/packages/db/test/index.spec.js +++ b/packages/db/test/index.spec.js @@ -10,7 +10,8 @@ describe('db', () => { postgres: true }) - assert(dbClient.client, 'postgres client created') + assert(dbClient._client, 'postgres client created') + assert.strictEqual(dbClient._isPostgres, true, 'postgres running') }) it('can create fauna client', () => { @@ -19,5 +20,6 @@ describe('db', () => { }) assert(dbClient._client, 'fauna client created') + assert.notStrictEqual(dbClient._isPostgres, true, 'fauna running') }) }) diff --git a/packages/db/test/user.spec.js b/packages/db/test/user.spec.js index f847ce87b7..5c91552688 100644 --- a/packages/db/test/user.spec.js +++ b/packages/db/test/user.spec.js @@ -51,24 +51,19 @@ describe('user operations', () => { throw new Error('should fail to get a non existing user') }) - it('should fail to create user with same issuer', async () => { - try { - const name = 'test-name-different' - const email = 'test-different@email.com' - const issuer = user.issuer // same issuer as previously created - const publicAddress = `public_address-different${Math.random()}` - - await client.upsertUser({ - name, - email, - issuer, - publicAddress - }) - } catch (err) { - assert(err, 'errored to create user with the same issuer') - return - } - throw new Error('should fail to create user with the same issuer') + it('should update user with same issuer (login)', async () => { + const name = 'test-name-different' + const email = 'test-different@email.com' + const issuer = user.issuer // same issuer as previously created + const publicAddress = `public_address-different${Math.random()}` + + const upsertUser = await client.upsertUser({ + name, + email, + issuer, + publicAddress + }) + assert(upsertUser, 'user updated') }) it('can update previously created user', async () => { diff --git a/packages/website/package.json b/packages/website/package.json index eb4dd03e83..46f256980c 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -4,7 +4,7 @@ "description": "web3.storage website", "private": true, "scripts": { - "start": "next dev", + "start": "next dev -p 4000", "build": "next build && next-sitemap && next export", "test": "eslint './**/*.js' && tsc --build" },