From fa7955dc751d72e1881b54f8aa03f7dc9a011d50 Mon Sep 17 00:00:00 2001 From: Oliver Eyton-Williams Date: Tue, 14 Mar 2023 18:29:55 +0100 Subject: [PATCH] feat(api): add prisma as orm (#49413) --- api/README.md | 18 + api/db/index.ts | 14 - api/db/prisma.ts | 23 ++ api/index.ts | 7 +- api/package.json | 13 +- api/prisma/schema.prisma | 144 +++++++ api/routes/auth0.ts | 71 +++- api/routes/test.ts | 38 +- api/tools/docker-compose.yml | 25 ++ api/utils/env.ts | 3 +- pnpm-lock.yaml | 712 ++++++++++++++++++----------------- sample.env | 2 +- 12 files changed, 670 insertions(+), 400 deletions(-) create mode 100644 api/README.md delete mode 100644 api/db/index.ts create mode 100644 api/db/prisma.ts create mode 100644 api/prisma/schema.prisma create mode 100644 api/tools/docker-compose.yml diff --git a/api/README.md b/api/README.md new file mode 100644 index 00000000000..c0e8a92c6c0 --- /dev/null +++ b/api/README.md @@ -0,0 +1,18 @@ +# Connecting to local database + +The api uses the ORM Prisma and it needs the MongoDB instance to be a replica set. + +## Atlas + +If you use MongoDB Atlas, the set is managed for you. + +## Local + +The simplest way to run a replica set locally is to use the docker-compose file +in /tools. First disable any running MongoDB instance on your machin, then run +the docker-compose file. + +```bash +cd tools +docker compose up -d +``` diff --git a/api/db/index.ts b/api/db/index.ts deleted file mode 100644 index cfc364a88fb..00000000000 --- a/api/db/index.ts +++ /dev/null @@ -1,14 +0,0 @@ -import fastifyPlugin from 'fastify-plugin'; -import fastifyMongo from '@fastify/mongodb'; -import { FastifyInstance } from 'fastify'; - -import { MONGOHQ_URL } from '../utils/env'; - -async function connect(fastify: FastifyInstance) { - fastify.log.info(`Connecting to Mongodb`); - await fastify.register(fastifyMongo, { - url: MONGOHQ_URL - }); -} - -export const dbConnector = fastifyPlugin(connect); diff --git a/api/db/prisma.ts b/api/db/prisma.ts new file mode 100644 index 00000000000..8a2728abdcf --- /dev/null +++ b/api/db/prisma.ts @@ -0,0 +1,23 @@ +import fp from 'fastify-plugin'; +import { FastifyPluginAsync } from 'fastify'; +import { PrismaClient } from '@prisma/client'; + +declare module 'fastify' { + interface FastifyInstance { + prisma: PrismaClient; + } +} + +const prismaPlugin: FastifyPluginAsync = fp(async (server, _options) => { + const prisma = new PrismaClient(); + + await prisma.$connect(); + + server.decorate('prisma', prisma); + + server.addHook('onClose', async server => { + await server.prisma.$disconnect(); + }); +}); + +export default prismaPlugin; diff --git a/api/index.ts b/api/index.ts index 367e1b9ac7a..7a5b1d321c3 100644 --- a/api/index.ts +++ b/api/index.ts @@ -9,8 +9,8 @@ import jwtAuthz from './plugins/fastify-jwt-authz'; import sessionAuth from './plugins/session-auth'; import { testRoutes } from './routes/test'; import { auth0Routes } from './routes/auth0'; -import { dbConnector } from './db'; import { testMiddleware } from './middleware'; + import { AUTH0_AUDIENCE, AUTH0_DOMAIN, @@ -20,6 +20,8 @@ import { SESSION_SECRET } from './utils/env'; +import prismaPlugin from './db/prisma'; + const fastify = Fastify({ logger: { level: NODE_ENV === 'development' ? 'debug' : 'fatal' } }); @@ -55,7 +57,8 @@ const start = async () => { void fastify.use('/test', testMiddleware); - void fastify.register(dbConnector); + void fastify.register(prismaPlugin); + void fastify.register(testRoutes); void fastify.register(auth0Routes, { prefix: '/auth0' }); diff --git a/api/package.json b/api/package.json index 60cf87b17f9..344a6f4af43 100644 --- a/api/package.json +++ b/api/package.json @@ -6,9 +6,9 @@ "dependencies": { "@fastify/cookie": "^8.3.0", "@fastify/middie": "8.1", - "@fastify/mongodb": "6.2.0", "@fastify/session": "^10.1.1", - "connect-mongo": "^4.6.0", + "@prisma/client": "4.10.1", + "connect-mongo": "4.6.0", "fastify": "4.14.1", "fastify-auth0-verify": "^1.0.0", "fastify-plugin": "^4.3.0", @@ -40,7 +40,12 @@ "build": "tsc", "develop": "nodemon index.ts", "start": "NODE_ENV=production node index.js", - "test": "node --test -r ts-node/register **/*.test.ts" + "test": "node --test -r ts-node/register **/*.test.ts", + "prisma": "MONGOHQ_URL=mongodb://localhost:27017/freecodecamp?directConnection=true prisma", + "postinstall": "prisma generate" }, - "version": "0.0.1" + "version": "0.0.1", + "devDependencies": { + "prisma": "4.10.1" + } } diff --git a/api/prisma/schema.prisma b/api/prisma/schema.prisma new file mode 100644 index 00000000000..a2e5d6941e3 --- /dev/null +++ b/api/prisma/schema.prisma @@ -0,0 +1,144 @@ +generator client { + provider = "prisma-client-js" +} + +datasource db { + provider = "mongodb" + url = env("MONGOHQ_URL") +} + +type DonationStartDate { + date DateTime @map("_date") @db.Date + when String @map("_when") +} + +type UserBadges { + /// Could not determine type: the field only had null or empty values in the sample set. + coreTeam Json? +} + +type UserCompletedChallenges { + completedDate Float + id String +} + +type UserProfileUi { + isLocked Boolean + showAbout Boolean + showCerts Boolean + showDonation Boolean + showHeatMap Boolean + showLocation Boolean + showName Boolean + showPoints Boolean + showPortfolio Boolean + showTimeLine Boolean +} + +model AccessToken { + id String @id @map("_id") + created DateTime @db.Date + /// Multiple data types found: Float: 70.3%, Int: 29.7% out of 118 sampled entries + ttl Json + userId String @db.ObjectId +} + +model AuthToken { + id String @id @map("_id") + created DateTime @db.Date + ttl Int + userId String @db.ObjectId +} + +model Donation { + id String @id @default(auto()) @map("_id") @db.ObjectId + amount Int + customerId String + duration String + email String + provider String + startDate DonationStartDate + subscriptionId String + userId String @db.ObjectId +} + +model UserToken { + id String @id @map("_id") + created DateTime @db.Date + ttl Float + userId String @db.ObjectId +} + +model WebhookToken { + id String @id @map("_id") + created DateTime @db.Date + ttl Float + userId String @db.ObjectId +} + +model expressRateRecords { + id String @id @default(auto()) @map("_id") @db.ObjectId + /// Field referred in an index, but found no data to define the type. + expirationDate Json? + + @@index([expirationDate], map: "expirationDate_1") +} + +model sessions { + id String @id @map("_id") + expires DateTime @db.Date + session String + + @@index([expires], map: "expires_1") +} + +model user { + id String @id @default(auto()) @map("_id") @db.ObjectId + about String + acceptedPrivacyTerms Boolean + badges UserBadges + completedChallenges UserCompletedChallenges[] + currentChallengeId String + email String + /// Could not determine type: the field only had null or empty values in the sample set. + emailAuthLinkTTL Json? + emailVerified Boolean + /// Could not determine type: the field only had null or empty values in the sample set. + emailVerifyTTL Json? + is2018DataVisCert Boolean + is2018FullStackCert Boolean + isApisMicroservicesCert Boolean + isBackEndCert Boolean + isBanned Boolean + isCheater Boolean + isDataAnalysisPyCertV7 Boolean + isDataVisCert Boolean + isDonating Boolean + isFrontEndCert Boolean + isFrontEndLibsCert Boolean + isFullStackCert Boolean + isHonest Boolean + isInfosecCertV7 Boolean + isInfosecQaCert Boolean + isJsAlgoDataStructCert Boolean + isMachineLearningPyCertV7 Boolean + isQaCertV7 Boolean + isRelationalDatabaseCertV8 Boolean + isRespWebDesignCert Boolean + isSciCompPyCertV7 Boolean + keyboardShortcuts Boolean? + location String + name String + picture String + /// Could not determine type: the field only had null or empty values in the sample set. + portfolio Json? + profileUI UserProfileUi + progressTimestamps Float[] + rand Float + sendQuincyEmail Boolean + theme String + username String + usernameDisplay String? + /// Could not determine type: the field only had null or empty values in the sample set. + yearsTopContributor Json? +} diff --git a/api/routes/auth0.ts b/api/routes/auth0.ts index 1072b52a1df..f1f0c80ae64 100644 --- a/api/routes/auth0.ts +++ b/api/routes/auth0.ts @@ -10,9 +10,63 @@ declare module 'fastify' { } } +// TODO: this probably belongs in a separate file and may not be 100% correct. +// All it's doing is providing the properties required by the current schema. +const defaultUser = { + about: '', + acceptedPrivacyTerms: false, + badges: {}, + completedChallenges: [], + currentChallengeId: '', + emailVerified: false, + is2018DataVisCert: false, + is2018FullStackCert: false, + isApisMicroservicesCert: false, + isBackEndCert: false, + isBanned: false, + isCheater: false, + isDataAnalysisPyCertV7: false, + isDataVisCert: false, + isDonating: false, + isFrontEndCert: false, + isFrontEndLibsCert: false, + isFullStackCert: false, + isHonest: false, + isInfosecCertV7: false, + isInfosecQaCert: false, + isJsAlgoDataStructCert: false, + isMachineLearningPyCertV7: false, + isQaCertV7: false, + isRelationalDatabaseCertV8: false, + isRespWebDesignCert: false, + isSciCompPyCertV7: false, + keyboardShortcuts: false, + location: '', + name: '', + picture: '', + profileUI: { + isLocked: false, + showAbout: false, + showCerts: false, + showDonation: false, + showHeatMap: false, + showLocation: false, + showName: false, + showPoints: false, + showPortfolio: false, + showTimeLine: false + }, + progressTimestamps: [], + // TODO: check what this is used for in api-server and if we need it + rand: 0, + sendQuincyEmail: false, + theme: 'default', + // TODO: generate a UUID like in api-server + username: '' +}; + export const auth0Routes: FastifyPluginCallback = (fastify, _options, done) => { fastify.addHook('onRequest', fastify.authenticate); - const collection = fastify.mongo.db?.collection('user'); fastify.get('/callback', async (req, _res) => { const auth0Res = await fetch( @@ -31,12 +85,17 @@ export const auth0Routes: FastifyPluginCallback = (fastify, _options, done) => { } const { email } = (await auth0Res.json()) as { email: string }; - const user = await collection?.findOne({ email }); - if (user) { - req.session.user = { id: user._id.toString() }; + + const existingUser = await fastify.prisma.user.findFirst({ + where: { email } + }); + if (existingUser) { + req.session.user = { id: existingUser.id }; } else { - const DBRes = await collection?.insertOne({ email }); - req.session.user = { id: DBRes?.insertedId.toString() ?? '' }; + const newUser = await fastify.prisma.user.create({ + data: { ...defaultUser, email } + }); + req.session.user = { id: newUser.id }; } await req.session.save(); }); diff --git a/api/routes/test.ts b/api/routes/test.ts index 3a6a9f2817f..294645bc0bd 100644 --- a/api/routes/test.ts +++ b/api/routes/test.ts @@ -1,20 +1,8 @@ -import { ObjectId } from '@fastify/mongodb'; import { FastifyPluginCallback } from 'fastify'; export const testRoutes: FastifyPluginCallback = (fastify, _options, done) => { - const collection = fastify.mongo.db?.collection('user'); - fastify.addHook('onRequest', fastify.authenticateSession); - fastify.get('/test', async (request, _reply) => { - if (!collection) { - return { error: 'No collection' }; - } - const userId = new ObjectId(request.session.user.id); - const user = await collection?.findOne({ _id: userId }); - return { user }; - }); - fastify.put<{ Body: { quincyEmails: boolean } }>( '/update-privacy-terms', { @@ -28,27 +16,21 @@ export const testRoutes: FastifyPluginCallback = (fastify, _options, done) => { } } }, - (req, res) => { + async req => { const { body: { quincyEmails } } = req; - const update = { - acceptedPrivacyTerms: true, - sendQuincyEmail: !!quincyEmails - }; - - const userId = new ObjectId(req.session.user.id); - - return collection - ?.updateOne({ _id: userId }, { $set: update }) - .then(() => { - void res.code(200).send({ msg: 'Successfully updated' }); - }) - .catch(err => { - fastify.log.error(err); - void res.code(500).send({ msg: 'Something went wrong' }); + try { + await fastify.prisma.user.update({ + where: { id: req.session.user.id }, + data: { acceptedPrivacyTerms: true, sendQuincyEmail: quincyEmails } }); + return { msg: 'Successfully updated' }; + } catch (err) { + fastify.log.error(err); + throw { msg: 'Something went wrong' }; + } } ); done(); diff --git a/api/tools/docker-compose.yml b/api/tools/docker-compose.yml new file mode 100644 index 00000000000..83ac81edc1f --- /dev/null +++ b/api/tools/docker-compose.yml @@ -0,0 +1,25 @@ +version: '3.8' +services: + db: + image: mongo + container_name: mongodb + command: mongod --replSet rs0 + restart: unless-stopped + ports: + - 27018:27017 + volumes: + - db-data:/data + setup: + image: mongo + depends_on: + - db + restart: on-failure + entrypoint: [ + 'bash', + '-c', + # This will try to initiate the replica set, until it succeeds twice (i.e. until the replica set is already initialized) + 'mongosh --host db:27017 --eval ''try {rs.initiate();} catch (err) { if(err.codeName !== "AlreadyInitialized") throw err };''' + ] + +volumes: + db-data: diff --git a/api/utils/env.ts b/api/utils/env.ts index 2e4befebb0e..076b99d8f31 100644 --- a/api/utils/env.ts +++ b/api/utils/env.ts @@ -29,7 +29,8 @@ if (process.env.NODE_ENV !== 'development') { } export const MONGOHQ_URL = - process.env.MONGOHQ_URL || 'mongodb://localhost:27017/freecodecamp'; + process.env.MONGOHQ_URL ?? + 'mongodb://localhost:27017/freecodecamp?directConnection=true'; export const NODE_ENV = process.env.NODE_ENV; export const AUTH0_DOMAIN = process.env.AUTH0_DOMAIN; export const AUTH0_AUDIENCE = process.env.AUTH0_AUDIENCE; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 49833c97c1c..c7398a3b741 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -117,23 +117,26 @@ importers: specifiers: '@fastify/cookie': ^8.3.0 '@fastify/middie': '8.1' - '@fastify/mongodb': 6.2.0 '@fastify/session': ^10.1.1 - connect-mongo: ^4.6.0 + '@prisma/client': 4.10.1 + connect-mongo: 4.6.0 fastify: 4.14.1 fastify-auth0-verify: ^1.0.0 fastify-plugin: ^4.3.0 nodemon: 2.0.21 + prisma: 4.10.1 dependencies: '@fastify/cookie': 8.3.0 '@fastify/middie': 8.1.0 - '@fastify/mongodb': 6.2.0 '@fastify/session': 10.1.1 + '@prisma/client': 4.10.1_prisma@4.10.1 connect-mongo: 4.6.0_lw7oj3533zfvrhxigrep3g2fam fastify: 4.14.1 fastify-auth0-verify: 1.0.0 fastify-plugin: 4.5.0 nodemon: 2.0.21 + devDependencies: + prisma: 4.10.1 api-server: specifiers: @@ -1027,7 +1030,7 @@ packages: '@aws-crypto/sha256-js': 3.0.0 '@aws-crypto/supports-web-crypto': 3.0.0 '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.272.0 + '@aws-sdk/types': 3.289.0 '@aws-sdk/util-locate-window': 3.208.0 '@aws-sdk/util-utf8-browser': 3.259.0 tslib: 1.14.1 @@ -1038,7 +1041,7 @@ packages: resolution: {integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==} dependencies: '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.272.0 + '@aws-sdk/types': 3.289.0 tslib: 1.14.1 dev: false optional: true @@ -1053,58 +1056,58 @@ packages: /@aws-crypto/util/3.0.0: resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==} dependencies: - '@aws-sdk/types': 3.272.0 + '@aws-sdk/types': 3.289.0 '@aws-sdk/util-utf8-browser': 3.259.0 tslib: 1.14.1 dev: false optional: true - /@aws-sdk/abort-controller/3.272.0: - resolution: {integrity: sha512-s2TV3phapcTwZNr4qLxbfuQuE9ZMP4RoJdkvRRCkKdm6jslsWLJf2Zlcxti/23hOlINUMYv2iXE2pftIgWGdpg==} + /@aws-sdk/abort-controller/3.289.0: + resolution: {integrity: sha512-Xakz8EeTl0Q3KaWRdCaRQrrYxBAkQGj6eeT+DVmMLMz4gzTcSHwvfR5tVBIPHk4+IjboJJKM5l1xAZ90AGFPAQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.272.0 + '@aws-sdk/types': 3.289.0 tslib: 2.5.0 dev: false optional: true - /@aws-sdk/client-cognito-identity/3.282.0: - resolution: {integrity: sha512-OU9Wy50u31Mog4xmj9o+lLOb/y+yuQBTFwEVYApJtCkPsI2e3DtZFt36IcAy04fcjNUaSD3u6SGgfYo2vDQ2zA==} + /@aws-sdk/client-cognito-identity/3.289.0: + resolution: {integrity: sha512-rerSVZadAQu34Dxhsx+tpUdhru8Dpu/oW/ABJnVBZMbs5kXtl3wgWw8vRPiE0jFfjeA+dPZRXfuBzDulzsMcsg==} engines: {node: '>=14.0.0'} dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.282.0 - '@aws-sdk/config-resolver': 3.282.0 - '@aws-sdk/credential-provider-node': 3.282.0 - '@aws-sdk/fetch-http-handler': 3.282.0 - '@aws-sdk/hash-node': 3.272.0 - '@aws-sdk/invalid-dependency': 3.272.0 - '@aws-sdk/middleware-content-length': 3.282.0 - '@aws-sdk/middleware-endpoint': 3.282.0 - '@aws-sdk/middleware-host-header': 3.282.0 - '@aws-sdk/middleware-logger': 3.272.0 - '@aws-sdk/middleware-recursion-detection': 3.282.0 - '@aws-sdk/middleware-retry': 3.282.0 - '@aws-sdk/middleware-serde': 3.272.0 - '@aws-sdk/middleware-signing': 3.282.0 - '@aws-sdk/middleware-stack': 3.272.0 - '@aws-sdk/middleware-user-agent': 3.282.0 - '@aws-sdk/node-config-provider': 3.272.0 - '@aws-sdk/node-http-handler': 3.282.0 - '@aws-sdk/protocol-http': 3.282.0 - '@aws-sdk/smithy-client': 3.279.0 - '@aws-sdk/types': 3.272.0 - '@aws-sdk/url-parser': 3.272.0 + '@aws-sdk/client-sts': 3.289.0 + '@aws-sdk/config-resolver': 3.289.0 + '@aws-sdk/credential-provider-node': 3.289.0 + '@aws-sdk/fetch-http-handler': 3.289.0 + '@aws-sdk/hash-node': 3.289.0 + '@aws-sdk/invalid-dependency': 3.289.0 + '@aws-sdk/middleware-content-length': 3.289.0 + '@aws-sdk/middleware-endpoint': 3.289.0 + '@aws-sdk/middleware-host-header': 3.289.0 + '@aws-sdk/middleware-logger': 3.289.0 + '@aws-sdk/middleware-recursion-detection': 3.289.0 + '@aws-sdk/middleware-retry': 3.289.0 + '@aws-sdk/middleware-serde': 3.289.0 + '@aws-sdk/middleware-signing': 3.289.0 + '@aws-sdk/middleware-stack': 3.289.0 + '@aws-sdk/middleware-user-agent': 3.289.0 + '@aws-sdk/node-config-provider': 3.289.0 + '@aws-sdk/node-http-handler': 3.289.0 + '@aws-sdk/protocol-http': 3.289.0 + '@aws-sdk/smithy-client': 3.289.0 + '@aws-sdk/types': 3.289.0 + '@aws-sdk/url-parser': 3.289.0 '@aws-sdk/util-base64': 3.208.0 '@aws-sdk/util-body-length-browser': 3.188.0 '@aws-sdk/util-body-length-node': 3.208.0 - '@aws-sdk/util-defaults-mode-browser': 3.279.0 - '@aws-sdk/util-defaults-mode-node': 3.282.0 - '@aws-sdk/util-endpoints': 3.272.0 - '@aws-sdk/util-retry': 3.272.0 - '@aws-sdk/util-user-agent-browser': 3.282.0 - '@aws-sdk/util-user-agent-node': 3.282.0 + '@aws-sdk/util-defaults-mode-browser': 3.289.0 + '@aws-sdk/util-defaults-mode-node': 3.289.0 + '@aws-sdk/util-endpoints': 3.289.0 + '@aws-sdk/util-retry': 3.289.0 + '@aws-sdk/util-user-agent-browser': 3.289.0 + '@aws-sdk/util-user-agent-node': 3.289.0 '@aws-sdk/util-utf8': 3.254.0 tslib: 2.5.0 transitivePeerDependencies: @@ -1112,40 +1115,40 @@ packages: dev: false optional: true - /@aws-sdk/client-sso-oidc/3.282.0: - resolution: {integrity: sha512-upC4yBZllAXg5OVIuS8Lu9MI1aqfAObl2BBixj9fIYbDanQ02s0b1IwfZqlOqNNkGzMko1AWyiOSyOdVgyJ+xg==} + /@aws-sdk/client-sso-oidc/3.289.0: + resolution: {integrity: sha512-+09EK4aWdNjF+5+nK6Dmlwx3es8NTkyABTOj9H4eKB90rXQVX8PjoaFhK/b+NcNKDxgb1E6k6evZEpAb8dYQHg==} engines: {node: '>=14.0.0'} dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/config-resolver': 3.282.0 - '@aws-sdk/fetch-http-handler': 3.282.0 - '@aws-sdk/hash-node': 3.272.0 - '@aws-sdk/invalid-dependency': 3.272.0 - '@aws-sdk/middleware-content-length': 3.282.0 - '@aws-sdk/middleware-endpoint': 3.282.0 - '@aws-sdk/middleware-host-header': 3.282.0 - '@aws-sdk/middleware-logger': 3.272.0 - '@aws-sdk/middleware-recursion-detection': 3.282.0 - '@aws-sdk/middleware-retry': 3.282.0 - '@aws-sdk/middleware-serde': 3.272.0 - '@aws-sdk/middleware-stack': 3.272.0 - '@aws-sdk/middleware-user-agent': 3.282.0 - '@aws-sdk/node-config-provider': 3.272.0 - '@aws-sdk/node-http-handler': 3.282.0 - '@aws-sdk/protocol-http': 3.282.0 - '@aws-sdk/smithy-client': 3.279.0 - '@aws-sdk/types': 3.272.0 - '@aws-sdk/url-parser': 3.272.0 + '@aws-sdk/config-resolver': 3.289.0 + '@aws-sdk/fetch-http-handler': 3.289.0 + '@aws-sdk/hash-node': 3.289.0 + '@aws-sdk/invalid-dependency': 3.289.0 + '@aws-sdk/middleware-content-length': 3.289.0 + '@aws-sdk/middleware-endpoint': 3.289.0 + '@aws-sdk/middleware-host-header': 3.289.0 + '@aws-sdk/middleware-logger': 3.289.0 + '@aws-sdk/middleware-recursion-detection': 3.289.0 + '@aws-sdk/middleware-retry': 3.289.0 + '@aws-sdk/middleware-serde': 3.289.0 + '@aws-sdk/middleware-stack': 3.289.0 + '@aws-sdk/middleware-user-agent': 3.289.0 + '@aws-sdk/node-config-provider': 3.289.0 + '@aws-sdk/node-http-handler': 3.289.0 + '@aws-sdk/protocol-http': 3.289.0 + '@aws-sdk/smithy-client': 3.289.0 + '@aws-sdk/types': 3.289.0 + '@aws-sdk/url-parser': 3.289.0 '@aws-sdk/util-base64': 3.208.0 '@aws-sdk/util-body-length-browser': 3.188.0 '@aws-sdk/util-body-length-node': 3.208.0 - '@aws-sdk/util-defaults-mode-browser': 3.279.0 - '@aws-sdk/util-defaults-mode-node': 3.282.0 - '@aws-sdk/util-endpoints': 3.272.0 - '@aws-sdk/util-retry': 3.272.0 - '@aws-sdk/util-user-agent-browser': 3.282.0 - '@aws-sdk/util-user-agent-node': 3.282.0 + '@aws-sdk/util-defaults-mode-browser': 3.289.0 + '@aws-sdk/util-defaults-mode-node': 3.289.0 + '@aws-sdk/util-endpoints': 3.289.0 + '@aws-sdk/util-retry': 3.289.0 + '@aws-sdk/util-user-agent-browser': 3.289.0 + '@aws-sdk/util-user-agent-node': 3.289.0 '@aws-sdk/util-utf8': 3.254.0 tslib: 2.5.0 transitivePeerDependencies: @@ -1153,40 +1156,40 @@ packages: dev: false optional: true - /@aws-sdk/client-sso/3.282.0: - resolution: {integrity: sha512-VzdCCaxlDyU+7wvLDWh+uACQ6RPfaKLQ3yJ2UY0B0SkH4R0E4GLDJ2OJzqS5eyyOsnq1rxfY75S4WYzj8E2cvg==} + /@aws-sdk/client-sso/3.289.0: + resolution: {integrity: sha512-GIpxPaEwqXC+P8wH+G4mIDnxYFJ+2SyYTrnoxb4OUH+gAkU6tybgvsv0fy+jsVD6GAWPdfU1AYk2ZjofdFiHeA==} engines: {node: '>=14.0.0'} dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/config-resolver': 3.282.0 - '@aws-sdk/fetch-http-handler': 3.282.0 - '@aws-sdk/hash-node': 3.272.0 - '@aws-sdk/invalid-dependency': 3.272.0 - '@aws-sdk/middleware-content-length': 3.282.0 - '@aws-sdk/middleware-endpoint': 3.282.0 - '@aws-sdk/middleware-host-header': 3.282.0 - '@aws-sdk/middleware-logger': 3.272.0 - '@aws-sdk/middleware-recursion-detection': 3.282.0 - '@aws-sdk/middleware-retry': 3.282.0 - '@aws-sdk/middleware-serde': 3.272.0 - '@aws-sdk/middleware-stack': 3.272.0 - '@aws-sdk/middleware-user-agent': 3.282.0 - '@aws-sdk/node-config-provider': 3.272.0 - '@aws-sdk/node-http-handler': 3.282.0 - '@aws-sdk/protocol-http': 3.282.0 - '@aws-sdk/smithy-client': 3.279.0 - '@aws-sdk/types': 3.272.0 - '@aws-sdk/url-parser': 3.272.0 + '@aws-sdk/config-resolver': 3.289.0 + '@aws-sdk/fetch-http-handler': 3.289.0 + '@aws-sdk/hash-node': 3.289.0 + '@aws-sdk/invalid-dependency': 3.289.0 + '@aws-sdk/middleware-content-length': 3.289.0 + '@aws-sdk/middleware-endpoint': 3.289.0 + '@aws-sdk/middleware-host-header': 3.289.0 + '@aws-sdk/middleware-logger': 3.289.0 + '@aws-sdk/middleware-recursion-detection': 3.289.0 + '@aws-sdk/middleware-retry': 3.289.0 + '@aws-sdk/middleware-serde': 3.289.0 + '@aws-sdk/middleware-stack': 3.289.0 + '@aws-sdk/middleware-user-agent': 3.289.0 + '@aws-sdk/node-config-provider': 3.289.0 + '@aws-sdk/node-http-handler': 3.289.0 + '@aws-sdk/protocol-http': 3.289.0 + '@aws-sdk/smithy-client': 3.289.0 + '@aws-sdk/types': 3.289.0 + '@aws-sdk/url-parser': 3.289.0 '@aws-sdk/util-base64': 3.208.0 '@aws-sdk/util-body-length-browser': 3.188.0 '@aws-sdk/util-body-length-node': 3.208.0 - '@aws-sdk/util-defaults-mode-browser': 3.279.0 - '@aws-sdk/util-defaults-mode-node': 3.282.0 - '@aws-sdk/util-endpoints': 3.272.0 - '@aws-sdk/util-retry': 3.272.0 - '@aws-sdk/util-user-agent-browser': 3.282.0 - '@aws-sdk/util-user-agent-node': 3.282.0 + '@aws-sdk/util-defaults-mode-browser': 3.289.0 + '@aws-sdk/util-defaults-mode-node': 3.289.0 + '@aws-sdk/util-endpoints': 3.289.0 + '@aws-sdk/util-retry': 3.289.0 + '@aws-sdk/util-user-agent-browser': 3.289.0 + '@aws-sdk/util-user-agent-node': 3.289.0 '@aws-sdk/util-utf8': 3.254.0 tslib: 2.5.0 transitivePeerDependencies: @@ -1194,43 +1197,43 @@ packages: dev: false optional: true - /@aws-sdk/client-sts/3.282.0: - resolution: {integrity: sha512-JZybEaST0rloS9drlX/0yJAnKHuV7DlS1n1WZxgaM2DY704ydlGiviiPQvC/q/dItsX4017gscC0blGJcUjK1g==} + /@aws-sdk/client-sts/3.289.0: + resolution: {integrity: sha512-n+8zDCzk0NvCIXX3MGS8RV/+/MkJso0jkqkPOgPcS8Kf7Zbjlx8FyeGQ5LS7HjhCDk+jExH/s9h1kd3sL1pHQA==} engines: {node: '>=14.0.0'} dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/config-resolver': 3.282.0 - '@aws-sdk/credential-provider-node': 3.282.0 - '@aws-sdk/fetch-http-handler': 3.282.0 - '@aws-sdk/hash-node': 3.272.0 - '@aws-sdk/invalid-dependency': 3.272.0 - '@aws-sdk/middleware-content-length': 3.282.0 - '@aws-sdk/middleware-endpoint': 3.282.0 - '@aws-sdk/middleware-host-header': 3.282.0 - '@aws-sdk/middleware-logger': 3.272.0 - '@aws-sdk/middleware-recursion-detection': 3.282.0 - '@aws-sdk/middleware-retry': 3.282.0 - '@aws-sdk/middleware-sdk-sts': 3.282.0 - '@aws-sdk/middleware-serde': 3.272.0 - '@aws-sdk/middleware-signing': 3.282.0 - '@aws-sdk/middleware-stack': 3.272.0 - '@aws-sdk/middleware-user-agent': 3.282.0 - '@aws-sdk/node-config-provider': 3.272.0 - '@aws-sdk/node-http-handler': 3.282.0 - '@aws-sdk/protocol-http': 3.282.0 - '@aws-sdk/smithy-client': 3.279.0 - '@aws-sdk/types': 3.272.0 - '@aws-sdk/url-parser': 3.272.0 + '@aws-sdk/config-resolver': 3.289.0 + '@aws-sdk/credential-provider-node': 3.289.0 + '@aws-sdk/fetch-http-handler': 3.289.0 + '@aws-sdk/hash-node': 3.289.0 + '@aws-sdk/invalid-dependency': 3.289.0 + '@aws-sdk/middleware-content-length': 3.289.0 + '@aws-sdk/middleware-endpoint': 3.289.0 + '@aws-sdk/middleware-host-header': 3.289.0 + '@aws-sdk/middleware-logger': 3.289.0 + '@aws-sdk/middleware-recursion-detection': 3.289.0 + '@aws-sdk/middleware-retry': 3.289.0 + '@aws-sdk/middleware-sdk-sts': 3.289.0 + '@aws-sdk/middleware-serde': 3.289.0 + '@aws-sdk/middleware-signing': 3.289.0 + '@aws-sdk/middleware-stack': 3.289.0 + '@aws-sdk/middleware-user-agent': 3.289.0 + '@aws-sdk/node-config-provider': 3.289.0 + '@aws-sdk/node-http-handler': 3.289.0 + '@aws-sdk/protocol-http': 3.289.0 + '@aws-sdk/smithy-client': 3.289.0 + '@aws-sdk/types': 3.289.0 + '@aws-sdk/url-parser': 3.289.0 '@aws-sdk/util-base64': 3.208.0 '@aws-sdk/util-body-length-browser': 3.188.0 '@aws-sdk/util-body-length-node': 3.208.0 - '@aws-sdk/util-defaults-mode-browser': 3.279.0 - '@aws-sdk/util-defaults-mode-node': 3.282.0 - '@aws-sdk/util-endpoints': 3.272.0 - '@aws-sdk/util-retry': 3.272.0 - '@aws-sdk/util-user-agent-browser': 3.282.0 - '@aws-sdk/util-user-agent-node': 3.282.0 + '@aws-sdk/util-defaults-mode-browser': 3.289.0 + '@aws-sdk/util-defaults-mode-node': 3.289.0 + '@aws-sdk/util-endpoints': 3.289.0 + '@aws-sdk/util-retry': 3.289.0 + '@aws-sdk/util-user-agent-browser': 3.289.0 + '@aws-sdk/util-user-agent-node': 3.289.0 '@aws-sdk/util-utf8': 3.254.0 fast-xml-parser: 4.1.2 tslib: 2.5.0 @@ -1239,177 +1242,177 @@ packages: dev: false optional: true - /@aws-sdk/config-resolver/3.282.0: - resolution: {integrity: sha512-30qFLh2N4NXQ2EAook7NIFeu1K/nlrRLrdVb2BtGFi/F3cZnz+sy9o0XmL6x+sO9TznWjdNxD1RKQdqoAwGnCQ==} + /@aws-sdk/config-resolver/3.289.0: + resolution: {integrity: sha512-QYrBJeFJwx9wL73xMJgSTS6zY5SQh0tbZXpVlSZcNDuOufsu5zdcZZCOp0I20yGf8zxKX59u7O73OUlppkk+Wg==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/signature-v4': 3.282.0 - '@aws-sdk/types': 3.272.0 + '@aws-sdk/signature-v4': 3.289.0 + '@aws-sdk/types': 3.289.0 '@aws-sdk/util-config-provider': 3.208.0 - '@aws-sdk/util-middleware': 3.272.0 + '@aws-sdk/util-middleware': 3.289.0 tslib: 2.5.0 dev: false optional: true - /@aws-sdk/credential-provider-cognito-identity/3.282.0: - resolution: {integrity: sha512-GsLOt6GzckLQbMzgXOblKcRtXyMu3NcP0vFkYpy4r9oEzoxqPhy1yUpRNLeDv7r2qoa8naN81F5FwPwd17PrKg==} + /@aws-sdk/credential-provider-cognito-identity/3.289.0: + resolution: {integrity: sha512-RrK15OhL6UR8QKD415hggKfl8wcsMBqafcw/uYDESlvuAQVIi7hLgf5/2Onbhbc+m3huTBHY9e1D1n7u9hf9Bw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/client-cognito-identity': 3.282.0 - '@aws-sdk/property-provider': 3.272.0 - '@aws-sdk/types': 3.272.0 + '@aws-sdk/client-cognito-identity': 3.289.0 + '@aws-sdk/property-provider': 3.289.0 + '@aws-sdk/types': 3.289.0 tslib: 2.5.0 transitivePeerDependencies: - aws-crt dev: false optional: true - /@aws-sdk/credential-provider-env/3.272.0: - resolution: {integrity: sha512-QI65NbLnKLYHyTYhXaaUrq6eVsCCrMUb05WDA7+TJkWkjXesovpjc8vUKgFiLSxmgKmb2uOhHNcDyObKMrYQFw==} + /@aws-sdk/credential-provider-env/3.289.0: + resolution: {integrity: sha512-h4yNEW2ZJATKVxL0Bvz/WWXUmBr+AhsTyjUNge734306lXNG5/FM7zYp2v6dSQWt02WwBXyfkP3lr+A0n4rHyA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/property-provider': 3.272.0 - '@aws-sdk/types': 3.272.0 + '@aws-sdk/property-provider': 3.289.0 + '@aws-sdk/types': 3.289.0 tslib: 2.5.0 dev: false optional: true - /@aws-sdk/credential-provider-imds/3.272.0: - resolution: {integrity: sha512-wwAfVY1jTFQEfxVfdYD5r5ieYGl+0g4nhekVxNMqE8E1JeRDd18OqiwAflzpgBIqxfqvCUkf+vl5JYyacMkNAQ==} + /@aws-sdk/credential-provider-imds/3.289.0: + resolution: {integrity: sha512-SIl+iLQpDR6HA9CKTebui7NLop5GxnCkufbM3tbSqrQcPcEfYLOwXpu5gpKO2unQzRykCoyRVia1lr7Pc9Hgdg==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/node-config-provider': 3.272.0 - '@aws-sdk/property-provider': 3.272.0 - '@aws-sdk/types': 3.272.0 - '@aws-sdk/url-parser': 3.272.0 + '@aws-sdk/node-config-provider': 3.289.0 + '@aws-sdk/property-provider': 3.289.0 + '@aws-sdk/types': 3.289.0 + '@aws-sdk/url-parser': 3.289.0 tslib: 2.5.0 dev: false optional: true - /@aws-sdk/credential-provider-ini/3.282.0: - resolution: {integrity: sha512-2GKduXORcUgOigF1jZF7A1Wh4W/aJt3ynh7xb1vfx020nHx6YDljrEGpzgH6pOVzl7ZhgthpojicCuy2UumkMA==} + /@aws-sdk/credential-provider-ini/3.289.0: + resolution: {integrity: sha512-kvNUn3v4FTRRiqCOXl46v51VTGOM76j5Szcrhkk9qeFW6zt4iFodp6tQ4ynDtDxYxOvjuEfm3ii1YN5nkI1uKA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/credential-provider-env': 3.272.0 - '@aws-sdk/credential-provider-imds': 3.272.0 - '@aws-sdk/credential-provider-process': 3.272.0 - '@aws-sdk/credential-provider-sso': 3.282.0 - '@aws-sdk/credential-provider-web-identity': 3.272.0 - '@aws-sdk/property-provider': 3.272.0 - '@aws-sdk/shared-ini-file-loader': 3.272.0 - '@aws-sdk/types': 3.272.0 + '@aws-sdk/credential-provider-env': 3.289.0 + '@aws-sdk/credential-provider-imds': 3.289.0 + '@aws-sdk/credential-provider-process': 3.289.0 + '@aws-sdk/credential-provider-sso': 3.289.0 + '@aws-sdk/credential-provider-web-identity': 3.289.0 + '@aws-sdk/property-provider': 3.289.0 + '@aws-sdk/shared-ini-file-loader': 3.289.0 + '@aws-sdk/types': 3.289.0 tslib: 2.5.0 transitivePeerDependencies: - aws-crt dev: false optional: true - /@aws-sdk/credential-provider-node/3.282.0: - resolution: {integrity: sha512-qyHipZW0ep8STY+SO+Me8ObQ1Ee/aaZTmAK0Os/gB+EsiZhIE+mi6zRcScwdnpgJPLRYMEe4p/Cr6DOrA0G0GQ==} + /@aws-sdk/credential-provider-node/3.289.0: + resolution: {integrity: sha512-05CYPGnk5cDiOQDIaXNVibNOwQdI34MDiL17YkSfPv779A+uq4vqg/aBfL41BDJjr1gSGgyvVhlcUdBKnlp93Q==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/credential-provider-env': 3.272.0 - '@aws-sdk/credential-provider-imds': 3.272.0 - '@aws-sdk/credential-provider-ini': 3.282.0 - '@aws-sdk/credential-provider-process': 3.272.0 - '@aws-sdk/credential-provider-sso': 3.282.0 - '@aws-sdk/credential-provider-web-identity': 3.272.0 - '@aws-sdk/property-provider': 3.272.0 - '@aws-sdk/shared-ini-file-loader': 3.272.0 - '@aws-sdk/types': 3.272.0 + '@aws-sdk/credential-provider-env': 3.289.0 + '@aws-sdk/credential-provider-imds': 3.289.0 + '@aws-sdk/credential-provider-ini': 3.289.0 + '@aws-sdk/credential-provider-process': 3.289.0 + '@aws-sdk/credential-provider-sso': 3.289.0 + '@aws-sdk/credential-provider-web-identity': 3.289.0 + '@aws-sdk/property-provider': 3.289.0 + '@aws-sdk/shared-ini-file-loader': 3.289.0 + '@aws-sdk/types': 3.289.0 tslib: 2.5.0 transitivePeerDependencies: - aws-crt dev: false optional: true - /@aws-sdk/credential-provider-process/3.272.0: - resolution: {integrity: sha512-hiCAjWWm2PeBFp5cjkxqyam/XADjiS+e7GzwC34TbZn3LisS0uoweLojj9tD11NnnUhyhbLteUvu5+rotOLwrg==} + /@aws-sdk/credential-provider-process/3.289.0: + resolution: {integrity: sha512-t39CJHj1/f2DcRbEUSJ1ixwDsgaElDpJPynn59MOdNnrSh5bYuYmkrum/GYXYSsk+HoSK21JvwgvjnrkA9WZKQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/property-provider': 3.272.0 - '@aws-sdk/shared-ini-file-loader': 3.272.0 - '@aws-sdk/types': 3.272.0 + '@aws-sdk/property-provider': 3.289.0 + '@aws-sdk/shared-ini-file-loader': 3.289.0 + '@aws-sdk/types': 3.289.0 tslib: 2.5.0 dev: false optional: true - /@aws-sdk/credential-provider-sso/3.282.0: - resolution: {integrity: sha512-c4nibry7u0hkYRMi7+cWzdwYXfDDG+j3VYFxk2oOvU1VIJRyE6oeJqVaz3jgYLX9brHyrLJjuFCIJCUV/WXgIA==} + /@aws-sdk/credential-provider-sso/3.289.0: + resolution: {integrity: sha512-8+DjOqj5JCpVdT4EJtdfis6OioAdiDKM1mvgDTG8R43MSThc+RGfzqaDJQdM+8+hzkYhxYfyI9XB0H+X3rDNsA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/client-sso': 3.282.0 - '@aws-sdk/property-provider': 3.272.0 - '@aws-sdk/shared-ini-file-loader': 3.272.0 - '@aws-sdk/token-providers': 3.282.0 - '@aws-sdk/types': 3.272.0 + '@aws-sdk/client-sso': 3.289.0 + '@aws-sdk/property-provider': 3.289.0 + '@aws-sdk/shared-ini-file-loader': 3.289.0 + '@aws-sdk/token-providers': 3.289.0 + '@aws-sdk/types': 3.289.0 tslib: 2.5.0 transitivePeerDependencies: - aws-crt dev: false optional: true - /@aws-sdk/credential-provider-web-identity/3.272.0: - resolution: {integrity: sha512-ImrHMkcgneGa/HadHAQXPwOrX26sAKuB8qlMxZF/ZCM2B55u8deY+ZVkVuraeKb7YsahMGehPFOfRAF6mvFI5Q==} + /@aws-sdk/credential-provider-web-identity/3.289.0: + resolution: {integrity: sha512-jZ9hQvr0I7Z2DekDtZytViYn7zNNJG06N0CinAJzzvreAQ1I61rU7mhaWc05jhBSdeA3f82XoDAgxqY4xIh9pQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/property-provider': 3.272.0 - '@aws-sdk/types': 3.272.0 + '@aws-sdk/property-provider': 3.289.0 + '@aws-sdk/types': 3.289.0 tslib: 2.5.0 dev: false optional: true - /@aws-sdk/credential-providers/3.282.0: - resolution: {integrity: sha512-/Pau2Ht15j26ibTSTaJHbx6wA3suNT0Qgu+++6ZUoVCeHL5ZN/otcoebsR/lOZTw8Fji7K5kl8TW41UNAE8s2w==} + /@aws-sdk/credential-providers/3.289.0: + resolution: {integrity: sha512-kXNhi0s0oZ8k2cv3D5350glKutV4Lgg/hVBAAU/AnjFl5JFiZZKFpTs3N8p0MLCESipL2uCws7R0UU7uy8sKIQ==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@aws-sdk/client-cognito-identity': 3.282.0 - '@aws-sdk/client-sso': 3.282.0 - '@aws-sdk/client-sts': 3.282.0 - '@aws-sdk/credential-provider-cognito-identity': 3.282.0 - '@aws-sdk/credential-provider-env': 3.272.0 - '@aws-sdk/credential-provider-imds': 3.272.0 - '@aws-sdk/credential-provider-ini': 3.282.0 - '@aws-sdk/credential-provider-node': 3.282.0 - '@aws-sdk/credential-provider-process': 3.272.0 - '@aws-sdk/credential-provider-sso': 3.282.0 - '@aws-sdk/credential-provider-web-identity': 3.272.0 - '@aws-sdk/property-provider': 3.272.0 - '@aws-sdk/shared-ini-file-loader': 3.272.0 - '@aws-sdk/types': 3.272.0 + '@aws-sdk/client-cognito-identity': 3.289.0 + '@aws-sdk/client-sso': 3.289.0 + '@aws-sdk/client-sts': 3.289.0 + '@aws-sdk/credential-provider-cognito-identity': 3.289.0 + '@aws-sdk/credential-provider-env': 3.289.0 + '@aws-sdk/credential-provider-imds': 3.289.0 + '@aws-sdk/credential-provider-ini': 3.289.0 + '@aws-sdk/credential-provider-node': 3.289.0 + '@aws-sdk/credential-provider-process': 3.289.0 + '@aws-sdk/credential-provider-sso': 3.289.0 + '@aws-sdk/credential-provider-web-identity': 3.289.0 + '@aws-sdk/property-provider': 3.289.0 + '@aws-sdk/shared-ini-file-loader': 3.289.0 + '@aws-sdk/types': 3.289.0 tslib: 2.5.0 transitivePeerDependencies: - aws-crt dev: false optional: true - /@aws-sdk/fetch-http-handler/3.282.0: - resolution: {integrity: sha512-RTd53UzKtUucIEdVLGGgtlbVwp0QkOt3ZfHuA/A1lOH7meChSh1kz7B5z3p4HQDpXO+MQ1Y6Ble9Vg2fh1zwJQ==} + /@aws-sdk/fetch-http-handler/3.289.0: + resolution: {integrity: sha512-tksh2GnDV1JaI+NO9x+pgyB3VNwjnUdtoMcFGmTDm1TrcPNj0FLX2hLiunlVG7fFMfGLXC2aco0sUra5/5US9Q==} dependencies: - '@aws-sdk/protocol-http': 3.282.0 - '@aws-sdk/querystring-builder': 3.272.0 - '@aws-sdk/types': 3.272.0 + '@aws-sdk/protocol-http': 3.289.0 + '@aws-sdk/querystring-builder': 3.289.0 + '@aws-sdk/types': 3.289.0 '@aws-sdk/util-base64': 3.208.0 tslib: 2.5.0 dev: false optional: true - /@aws-sdk/hash-node/3.272.0: - resolution: {integrity: sha512-40dwND+iAm3VtPHPZu7/+CIdVJFk2s0cWZt1lOiMPMSXycSYJ45wMk7Lly3uoqRx0uWfFK5iT2OCv+fJi5jTng==} + /@aws-sdk/hash-node/3.289.0: + resolution: {integrity: sha512-fL7Pt4LU+tluHn0+BSIFVD2ZVJ5fuXvd1hQt4aTYrgkna1RR5v55Hdy2rNrp/syrkyE+Wv92S3hgZ7ZTBeXFZA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.272.0 + '@aws-sdk/types': 3.289.0 '@aws-sdk/util-buffer-from': 3.208.0 '@aws-sdk/util-utf8': 3.254.0 tslib: 2.5.0 dev: false optional: true - /@aws-sdk/invalid-dependency/3.272.0: - resolution: {integrity: sha512-ysW6wbjl1Y78txHUQ/Tldj2Rg1BI7rpMO9B9xAF6yAX3mQ7t6SUPQG/ewOGvH2208NBIl3qP5e/hDf0Q6r/1iw==} + /@aws-sdk/invalid-dependency/3.289.0: + resolution: {integrity: sha512-VpXadvpqXFUA8gBH6TAAJzsKfEQ4IvsiD7d9b2B+jw1YtaPFTqEEuDjN6ngpad8PCPCNWl8CI6oBCdMOK+L48A==} dependencies: - '@aws-sdk/types': 3.272.0 + '@aws-sdk/types': 3.289.0 tslib: 2.5.0 dev: false optional: true @@ -1422,253 +1425,253 @@ packages: dev: false optional: true - /@aws-sdk/middleware-content-length/3.282.0: - resolution: {integrity: sha512-SDgMLRRTMr9LlHSNk4bXUXynYnkT4oNMqE+FxhjsdbT8hK36eS4AadM58R7nPwgjR3EuWRW4ZRRawLWatpWspA==} + /@aws-sdk/middleware-content-length/3.289.0: + resolution: {integrity: sha512-D7vGeuaAzKiq0aFPwme1Xy4x69Jn4v0YJ3Xa4J+keNep0yZ9LfU5KSngqsxeTefCqS+2tdaArkBN2VdexmPagw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/protocol-http': 3.282.0 - '@aws-sdk/types': 3.272.0 + '@aws-sdk/protocol-http': 3.289.0 + '@aws-sdk/types': 3.289.0 tslib: 2.5.0 dev: false optional: true - /@aws-sdk/middleware-endpoint/3.282.0: - resolution: {integrity: sha512-8U9Mv/Sbdo1KI6/ip7IIUdBl5pgmalFbfkYAyO+AtmkEvawI9ipdWFs5HB0Dwd1BGVup5choY72Ik/7sCAAFTQ==} + /@aws-sdk/middleware-endpoint/3.289.0: + resolution: {integrity: sha512-nxaQFOG1IurwCHWP22RxgTFZdILsdBg6wbg4GeFpNBtE3bi0zIUYKrUhpdRr/pZyGAboD1oD9iQtxuGb/M6f+w==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/middleware-serde': 3.272.0 - '@aws-sdk/protocol-http': 3.282.0 - '@aws-sdk/signature-v4': 3.282.0 - '@aws-sdk/types': 3.272.0 - '@aws-sdk/url-parser': 3.272.0 + '@aws-sdk/middleware-serde': 3.289.0 + '@aws-sdk/protocol-http': 3.289.0 + '@aws-sdk/signature-v4': 3.289.0 + '@aws-sdk/types': 3.289.0 + '@aws-sdk/url-parser': 3.289.0 '@aws-sdk/util-config-provider': 3.208.0 - '@aws-sdk/util-middleware': 3.272.0 + '@aws-sdk/util-middleware': 3.289.0 tslib: 2.5.0 dev: false optional: true - /@aws-sdk/middleware-host-header/3.282.0: - resolution: {integrity: sha512-90dfYow4zh4tCatTOnqB3nE/dIAucQLZnMqwN/WBPu0fUqjymzpsNkPchqWBPnSWdNE8w3PiKMqqD9rjYwqw4Q==} + /@aws-sdk/middleware-host-header/3.289.0: + resolution: {integrity: sha512-yFBOKvKBnITO08JCx+65vXPe9Uo4gZuth/ka9v5swa4wtV8AP+kkOwFrNxSi2iAFLJ4Mg21vGQceeL0bErF6KQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/protocol-http': 3.282.0 - '@aws-sdk/types': 3.272.0 + '@aws-sdk/protocol-http': 3.289.0 + '@aws-sdk/types': 3.289.0 tslib: 2.5.0 dev: false optional: true - /@aws-sdk/middleware-logger/3.272.0: - resolution: {integrity: sha512-u2SQ0hWrFwxbxxYMG5uMEgf01pQY5jauK/LYWgGIvuCmFgiyRQQP3oN7kkmsxnS9MWmNmhbyQguX2NY02s5e9w==} + /@aws-sdk/middleware-logger/3.289.0: + resolution: {integrity: sha512-c5W7AlOdoyTXRoNl2yOVkhbTjp8tX0z65GDb3+/1yYcv+GRtz67WMZscWMQJwEfdCLdDE2GtBe+t2xyFGnmJvA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.272.0 + '@aws-sdk/types': 3.289.0 tslib: 2.5.0 dev: false optional: true - /@aws-sdk/middleware-recursion-detection/3.282.0: - resolution: {integrity: sha512-cSLq/daEaTEucbP/TgAXIOcpwLu7Bfw3VGzH1U56ngDjI4KWvUheF16JiB6OqKQXduPBPsdZ9dVmkDVKddmCRw==} + /@aws-sdk/middleware-recursion-detection/3.289.0: + resolution: {integrity: sha512-r2NrfnTG0UZRXeFjoyapAake7b1rUo6SC52/UV4Pdm8cHoYMmljnaGLjiAfzt6vWv6cSVCJq1r28Ne4slAoMAg==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/protocol-http': 3.282.0 - '@aws-sdk/types': 3.272.0 + '@aws-sdk/protocol-http': 3.289.0 + '@aws-sdk/types': 3.289.0 tslib: 2.5.0 dev: false optional: true - /@aws-sdk/middleware-retry/3.282.0: - resolution: {integrity: sha512-3+0M1GP9o480IdqHVZbkhTgge63uKhDFlS6cQznpNGj0eIuQPhXRnlEz2/rma0INUqFm6+7qJ5yzHR4WQbfHpw==} + /@aws-sdk/middleware-retry/3.289.0: + resolution: {integrity: sha512-Su+iGv5mrFjVCXJmjohX00o3HzkwnhY0TDhIltgolB6ZfOqy3Dfopjj21OWtqY9VYCUiLGC4KRfeb2feyrz5BA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/protocol-http': 3.282.0 - '@aws-sdk/service-error-classification': 3.272.0 - '@aws-sdk/types': 3.272.0 - '@aws-sdk/util-middleware': 3.272.0 - '@aws-sdk/util-retry': 3.272.0 + '@aws-sdk/protocol-http': 3.289.0 + '@aws-sdk/service-error-classification': 3.289.0 + '@aws-sdk/types': 3.289.0 + '@aws-sdk/util-middleware': 3.289.0 + '@aws-sdk/util-retry': 3.289.0 tslib: 2.5.0 uuid: 8.3.2 dev: false optional: true - /@aws-sdk/middleware-sdk-sts/3.282.0: - resolution: {integrity: sha512-Qe20mtJcF6lxt7280FhTFD2IpBDn39MEXmbm/zIkXR2/cAmvji8YhcxhNrq1l7XiuMM6SokBDC/f3dlF1oOC6g==} + /@aws-sdk/middleware-sdk-sts/3.289.0: + resolution: {integrity: sha512-9WzUVPEqJcvggGCk9JHXnwhj7fjuMXE/JM3gx7eMSStJCcK+3BARZ1RZnggUN4vN9iTSzdA+r0OpC1XnUGKB2g==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/middleware-signing': 3.282.0 - '@aws-sdk/property-provider': 3.272.0 - '@aws-sdk/protocol-http': 3.282.0 - '@aws-sdk/signature-v4': 3.282.0 - '@aws-sdk/types': 3.272.0 + '@aws-sdk/middleware-signing': 3.289.0 + '@aws-sdk/property-provider': 3.289.0 + '@aws-sdk/protocol-http': 3.289.0 + '@aws-sdk/signature-v4': 3.289.0 + '@aws-sdk/types': 3.289.0 tslib: 2.5.0 dev: false optional: true - /@aws-sdk/middleware-serde/3.272.0: - resolution: {integrity: sha512-kW1uOxgPSwtXPB5rm3QLdWomu42lkYpQL94tM1BjyFOWmBLO2lQhk5a7Dw6HkTozT9a+vxtscLChRa6KZe61Hw==} + /@aws-sdk/middleware-serde/3.289.0: + resolution: {integrity: sha512-pygC+LsEBVAxOzfoxA9jgvqfO1PLivh8s2Yr/aNQOwx49fmTHMvPwRYUGDV38Du6bRYcKI6nxYqkbJFkQkRESQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.272.0 + '@aws-sdk/types': 3.289.0 tslib: 2.5.0 dev: false optional: true - /@aws-sdk/middleware-signing/3.282.0: - resolution: {integrity: sha512-eE5qMDcqqxZPdSwybUEph/knrA2j2cHjW+B2ddROw3Ojg0XLjep5hOhithAudgBREQhYF9pdsBr6mUMynUIrKw==} + /@aws-sdk/middleware-signing/3.289.0: + resolution: {integrity: sha512-9SLATNvibxg4hpr4ldU18LwB6AVzovONWeJLt49FKISz7ZwGF6WVJYUMWeScj4+Z51Gozi7+pUIaFn7i6N3UbA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/property-provider': 3.272.0 - '@aws-sdk/protocol-http': 3.282.0 - '@aws-sdk/signature-v4': 3.282.0 - '@aws-sdk/types': 3.272.0 - '@aws-sdk/util-middleware': 3.272.0 + '@aws-sdk/property-provider': 3.289.0 + '@aws-sdk/protocol-http': 3.289.0 + '@aws-sdk/signature-v4': 3.289.0 + '@aws-sdk/types': 3.289.0 + '@aws-sdk/util-middleware': 3.289.0 tslib: 2.5.0 dev: false optional: true - /@aws-sdk/middleware-stack/3.272.0: - resolution: {integrity: sha512-jhwhknnPBGhfXAGV5GXUWfEhDFoP/DN8MPCO2yC5OAxyp6oVJ8lTPLkZYMTW5VL0c0eG44dXpF4Ib01V+PlDrQ==} + /@aws-sdk/middleware-stack/3.289.0: + resolution: {integrity: sha512-3rWx+UkV//dv/cLIrXmzIa+FZcn6n76JevGHYCTReiRpcvv+xECxgXH2crMYtzbu05WdxGYD6P0IP5tMwH0yXA==} engines: {node: '>=14.0.0'} dependencies: tslib: 2.5.0 dev: false optional: true - /@aws-sdk/middleware-user-agent/3.282.0: - resolution: {integrity: sha512-P1ealsSrUALo0w0Qu5nBKsNQwsmqIfsoNtFWpaznjIcXE5rRMlZL69zb0KnGbQCBfEXsgaMOWjeGT8I3/XbOHQ==} + /@aws-sdk/middleware-user-agent/3.289.0: + resolution: {integrity: sha512-XPhB9mgko66BouyxA+7z7SjUaNHyr58Xe/OB8GII5R/JiR3A/lpc8+jm9gEEpjEI/HpF8jLFDnTMbgabVAHOeA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/protocol-http': 3.282.0 - '@aws-sdk/types': 3.272.0 + '@aws-sdk/protocol-http': 3.289.0 + '@aws-sdk/types': 3.289.0 tslib: 2.5.0 dev: false optional: true - /@aws-sdk/node-config-provider/3.272.0: - resolution: {integrity: sha512-YYCIBh9g1EQo7hm2l22HX5Yr9RoPQ2RCvhzKvF1n1e8t1QH4iObQrYUtqHG4khcm64Cft8C5MwZmgzHbya5Z6Q==} + /@aws-sdk/node-config-provider/3.289.0: + resolution: {integrity: sha512-rR41c3Y7MYEP8TG9X1whHyrXEXOZzi4blSDqeJflwtNt3r3HvErGZiNBdVv368ycPPuu1YRSqTkgOYNCv02vlw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/property-provider': 3.272.0 - '@aws-sdk/shared-ini-file-loader': 3.272.0 - '@aws-sdk/types': 3.272.0 + '@aws-sdk/property-provider': 3.289.0 + '@aws-sdk/shared-ini-file-loader': 3.289.0 + '@aws-sdk/types': 3.289.0 tslib: 2.5.0 dev: false optional: true - /@aws-sdk/node-http-handler/3.282.0: - resolution: {integrity: sha512-LIA4lsSKA/l1kTR5ERkJG2gARveB7Y40MR6yDwtIuhXeVu7Xo9m4BJFanCYIbyc093W0T53x438bwoBR+R+/fw==} + /@aws-sdk/node-http-handler/3.289.0: + resolution: {integrity: sha512-zKknSaOY2GNmqH/eoZndmQWoEKhYPV0qRZtAMxuS3DVI5fipBipNzbVBaXrHRjxARx7/VLWnvNArchRoHfOlmw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/abort-controller': 3.272.0 - '@aws-sdk/protocol-http': 3.282.0 - '@aws-sdk/querystring-builder': 3.272.0 - '@aws-sdk/types': 3.272.0 + '@aws-sdk/abort-controller': 3.289.0 + '@aws-sdk/protocol-http': 3.289.0 + '@aws-sdk/querystring-builder': 3.289.0 + '@aws-sdk/types': 3.289.0 tslib: 2.5.0 dev: false optional: true - /@aws-sdk/property-provider/3.272.0: - resolution: {integrity: sha512-V1pZTaH5eqpAt8O8CzbItHhOtzIfFuWymvwZFkAtwKuaHpnl7jjrTouV482zoq8AD/fF+VVSshwBKYA7bhidIw==} + /@aws-sdk/property-provider/3.289.0: + resolution: {integrity: sha512-Raf4lTWPTmEGFV7Lkbfet2n/4Ybz5vQiiU45l56kgIQA88mLUuE4dshgNsM0Zb2rflsTaiN1JR2+RS/8lNtI8A==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.272.0 + '@aws-sdk/types': 3.289.0 tslib: 2.5.0 dev: false optional: true - /@aws-sdk/protocol-http/3.282.0: - resolution: {integrity: sha512-aOPv5DhsbG06WKfeh2g0H8RGnaeI8pLhaA+Mq1BvzXcghhlDu+FM9K/GjC/f1lWk1UNryfevOR7SdQm95ciHQg==} + /@aws-sdk/protocol-http/3.289.0: + resolution: {integrity: sha512-/2jOQ3MJZx1xk6BHEOW47ItGo1tgA9cP9a2saYneon05VIV6OuYefO5pG2G0nPnImTbff++N7aioXe5XKrnorw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.272.0 + '@aws-sdk/types': 3.289.0 tslib: 2.5.0 dev: false optional: true - /@aws-sdk/querystring-builder/3.272.0: - resolution: {integrity: sha512-ndo++7GkdCj5tBXE6rGcITpSpZS4PfyV38wntGYAlj9liL1omk3bLZRY6uzqqkJpVHqbg2fD7O2qHNItzZgqhw==} + /@aws-sdk/querystring-builder/3.289.0: + resolution: {integrity: sha512-llJCS8mAJfBYBjkKeriRmBuDr2jIozrMWhJOkz95SQGFsx1sKBPQMMOV6zunwhQux8bjtjf5wYiR1TM2jNUKqQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.272.0 + '@aws-sdk/types': 3.289.0 '@aws-sdk/util-uri-escape': 3.201.0 tslib: 2.5.0 dev: false optional: true - /@aws-sdk/querystring-parser/3.272.0: - resolution: {integrity: sha512-5oS4/9n6N1LZW9tI3qq/0GnCuWoOXRgcHVB+AJLRBvDbEe+GI+C/xK1tKLsfpDNgsQJHc4IPQoIt4megyZ/1+A==} + /@aws-sdk/querystring-parser/3.289.0: + resolution: {integrity: sha512-84zXKXIYtnTCrez/gGZIGuqfUJezzaOMm7BQwnOnq/sN21ou63jF3Q+tIMhLO/EvDcvmxEOlUXN1kfMQcjEjSw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.272.0 + '@aws-sdk/types': 3.289.0 tslib: 2.5.0 dev: false optional: true - /@aws-sdk/service-error-classification/3.272.0: - resolution: {integrity: sha512-REoltM1LK9byyIufLqx9znhSolPcHQgVHIA2S0zu5sdt5qER4OubkLAXuo4MBbisUTmh8VOOvIyUb5ijZCXq1w==} + /@aws-sdk/service-error-classification/3.289.0: + resolution: {integrity: sha512-+d1Vlb45Bs2gbTmXpRCGQrX4AQDETjA5sx1zLvq1NZGSnTX6LdroYPtXu3dRWJwDHHQpCMN/XfFN8jTw0IzBOg==} engines: {node: '>=14.0.0'} dev: false optional: true - /@aws-sdk/shared-ini-file-loader/3.272.0: - resolution: {integrity: sha512-lzFPohp5sy2XvwFjZIzLVCRpC0i5cwBiaXmFzXYQZJm6FSCszHO4ax+m9yrtlyVFF/2YPWl+/bzNthy4aJtseA==} + /@aws-sdk/shared-ini-file-loader/3.289.0: + resolution: {integrity: sha512-XG9Pfn3itf3Z0p6nY6UuMVMhzZb+oX7L28oyby8REl8BAwfPkcziLxXlZsBHf6KcgYDG1R6z945hvIwZhJbjvA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.272.0 + '@aws-sdk/types': 3.289.0 tslib: 2.5.0 dev: false optional: true - /@aws-sdk/signature-v4/3.282.0: - resolution: {integrity: sha512-rnSL3UyF/No7+O2EMtN1sTCiqL1a+odbfnfo3wCSl8DH5PEYINt2kZgVEvT1Fgaffk1pUggBBOZoR+arPIIDJA==} + /@aws-sdk/signature-v4/3.289.0: + resolution: {integrity: sha512-IQyYHx3zp7PHxFA17YDb6WVx8ejXDxrsnKspFXgZQyoZOPfReqWQs32dcJYXff/IdSzxjwOpwBFbmIt2vbdKnQ==} engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/is-array-buffer': 3.201.0 - '@aws-sdk/types': 3.272.0 + '@aws-sdk/types': 3.289.0 '@aws-sdk/util-hex-encoding': 3.201.0 - '@aws-sdk/util-middleware': 3.272.0 + '@aws-sdk/util-middleware': 3.289.0 '@aws-sdk/util-uri-escape': 3.201.0 '@aws-sdk/util-utf8': 3.254.0 tslib: 2.5.0 dev: false optional: true - /@aws-sdk/smithy-client/3.279.0: - resolution: {integrity: sha512-ZcYWUQDGAYN6NXRpJuSn46PetrpPCA6TrDVwP9+3pERzTXZ66npXoG2XhHjNrOXy/Ted5A3OxKrM4/zLu9tK3A==} + /@aws-sdk/smithy-client/3.289.0: + resolution: {integrity: sha512-miPMdnv4Ivv8RN65LJ9dxzkQNHn9Tp9wzZJXwBcPqGdXyRlkWSuIOIIhhAqQoV9R9ByeshnCWBpwqlITIjNPVw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/middleware-stack': 3.272.0 - '@aws-sdk/types': 3.272.0 + '@aws-sdk/middleware-stack': 3.289.0 + '@aws-sdk/types': 3.289.0 tslib: 2.5.0 dev: false optional: true - /@aws-sdk/token-providers/3.282.0: - resolution: {integrity: sha512-Qk/D6i+Hpc0fp/2SRHbfJeKPgUIugzsmye3NL0OV1bqd1Y40dW5LT4u67VcZHwqxzYDKe6Eo+7NHJu7qfvwhog==} + /@aws-sdk/token-providers/3.289.0: + resolution: {integrity: sha512-fzvGIfJNoLR5g24ok8cRwc9AMLXoEOyfi+eHocAF6eyfe0NWlQtpsmLe7XXx5I9yZ51lclzV49rEz9ynp243RA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/client-sso-oidc': 3.282.0 - '@aws-sdk/property-provider': 3.272.0 - '@aws-sdk/shared-ini-file-loader': 3.272.0 - '@aws-sdk/types': 3.272.0 + '@aws-sdk/client-sso-oidc': 3.289.0 + '@aws-sdk/property-provider': 3.289.0 + '@aws-sdk/shared-ini-file-loader': 3.289.0 + '@aws-sdk/types': 3.289.0 tslib: 2.5.0 transitivePeerDependencies: - aws-crt dev: false optional: true - /@aws-sdk/types/3.272.0: - resolution: {integrity: sha512-MmmL6vxMGP5Bsi+4wRx4mxYlU/LX6M0noOXrDh/x5FfG7/4ZOar/nDxqDadhJtNM88cuWVHZWY59P54JzkGWmA==} + /@aws-sdk/types/3.289.0: + resolution: {integrity: sha512-wwUC+VwoNlEkgDzK/aJG3+zeMcYRcYFQV4mbZaicYdp3v8hmkUkJUhyxuZYl/FmY46WG+DYv+/Y3NilgfsE+Wg==} engines: {node: '>=14.0.0'} dependencies: tslib: 2.5.0 dev: false optional: true - /@aws-sdk/url-parser/3.272.0: - resolution: {integrity: sha512-vX/Tx02PlnQ/Kgtf5TnrNDHPNbY+amLZjW0Z1d9vzAvSZhQ4i9Y18yxoRDIaDTCNVRDjdhV8iuctW+05PB5JtQ==} + /@aws-sdk/url-parser/3.289.0: + resolution: {integrity: sha512-rbtW3O6UBX+eWR/+UiCDNFUVwN8hp82JPy+NGv3NeOvRjBsxkKmcH4UJTHDIeT+suqTDNEdV5nz438u3dHdHrQ==} dependencies: - '@aws-sdk/querystring-parser': 3.272.0 - '@aws-sdk/types': 3.272.0 + '@aws-sdk/querystring-parser': 3.289.0 + '@aws-sdk/types': 3.289.0 tslib: 2.5.0 dev: false optional: true @@ -1714,35 +1717,35 @@ packages: dev: false optional: true - /@aws-sdk/util-defaults-mode-browser/3.279.0: - resolution: {integrity: sha512-RnchYRrpapTT5Hu23LOfk6e8RMVq0kUzho6xA6TJj1a4uGxkcRMvgzPipCq1P5uHu0mrkQBg9pGPEVNOUs38/Q==} + /@aws-sdk/util-defaults-mode-browser/3.289.0: + resolution: {integrity: sha512-sYrDwjX3s54cvGq69PJpP2vDpJ5BJXhg2KEHbK92Qr2AUqMUgidwZCw4oBaIqKDXcPIrjmhod31s3tTfYmtTMQ==} engines: {node: '>= 10.0.0'} dependencies: - '@aws-sdk/property-provider': 3.272.0 - '@aws-sdk/types': 3.272.0 + '@aws-sdk/property-provider': 3.289.0 + '@aws-sdk/types': 3.289.0 bowser: 2.11.0 tslib: 2.5.0 dev: false optional: true - /@aws-sdk/util-defaults-mode-node/3.282.0: - resolution: {integrity: sha512-D1BlFoA7ZMeK2diDUWFx1xBFrSaJuBZMRBuWbnbT9AnRYNCsASZ8DRU1KkZ8LuFQIwmZz94P9q683emYnZBhiw==} + /@aws-sdk/util-defaults-mode-node/3.289.0: + resolution: {integrity: sha512-PsP40+9peN7kpEmQ2GhEAGwUwD9F/R/BI/1kzjW0nbBsMrTnkUnlZlaitwpBX/OWNV/YZTdVAOvD50j/ACyXlg==} engines: {node: '>= 10.0.0'} dependencies: - '@aws-sdk/config-resolver': 3.282.0 - '@aws-sdk/credential-provider-imds': 3.272.0 - '@aws-sdk/node-config-provider': 3.272.0 - '@aws-sdk/property-provider': 3.272.0 - '@aws-sdk/types': 3.272.0 + '@aws-sdk/config-resolver': 3.289.0 + '@aws-sdk/credential-provider-imds': 3.289.0 + '@aws-sdk/node-config-provider': 3.289.0 + '@aws-sdk/property-provider': 3.289.0 + '@aws-sdk/types': 3.289.0 tslib: 2.5.0 dev: false optional: true - /@aws-sdk/util-endpoints/3.272.0: - resolution: {integrity: sha512-c4MPUaJt2G6gGpoiwIOqDfUa98c1J63RpYvf/spQEKOtC/tF5Gfqlxuq8FnAl5lHnrqj1B9ZXLLxFhHtDR0IiQ==} + /@aws-sdk/util-endpoints/3.289.0: + resolution: {integrity: sha512-PmsgqL9jdNTz3p0eW83nZZGcngAdoIWidXCc32G5tIIYvJutdgkiObAaydtXaMgk5CRvjenngFf6Zg9JyVHOLQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.272.0 + '@aws-sdk/types': 3.289.0 tslib: 2.5.0 dev: false optional: true @@ -1763,19 +1766,19 @@ packages: dev: false optional: true - /@aws-sdk/util-middleware/3.272.0: - resolution: {integrity: sha512-Abw8m30arbwxqmeMMha5J11ESpHUNmCeSqSzE8/C4B8jZQtHY4kq7f+upzcNIQ11lsd+uzBEzNG3+dDRi0XOJQ==} + /@aws-sdk/util-middleware/3.289.0: + resolution: {integrity: sha512-hw3WHQU9Wk7a1H3x+JhwMA4ECCleeuNlob3fXSYJmXgvZyuWfpMYZi4iSkqoWGFAXYpAtZZLIu45iIcd7F296g==} engines: {node: '>=14.0.0'} dependencies: tslib: 2.5.0 dev: false optional: true - /@aws-sdk/util-retry/3.272.0: - resolution: {integrity: sha512-Ngha5414LR4gRHURVKC9ZYXsEJhMkm+SJ+44wlzOhavglfdcKKPUsibz5cKY1jpUV7oKECwaxHWpBB8r6h+hOg==} + /@aws-sdk/util-retry/3.289.0: + resolution: {integrity: sha512-noFn++ZKH11ExTBqUU/b9wsOjqxYlDnN/8xq+9oCsyBnEZztVgM/AM3WP5qBPRskk1WzDprID5fb5V87113Uug==} engines: {node: '>= 14.0.0'} dependencies: - '@aws-sdk/service-error-classification': 3.272.0 + '@aws-sdk/service-error-classification': 3.289.0 tslib: 2.5.0 dev: false optional: true @@ -1788,17 +1791,17 @@ packages: dev: false optional: true - /@aws-sdk/util-user-agent-browser/3.282.0: - resolution: {integrity: sha512-Z639oyTa5fZfyi4Xr64+eiAwBCxfpe9Op4Vhnr1z/RwonQM/qywydv6Ttpeq1q5uQ0nG4wTkOMpfh39g+VqIgw==} + /@aws-sdk/util-user-agent-browser/3.289.0: + resolution: {integrity: sha512-BDXYgNzzz2iNPTkl9MQf7pT4G80V6O6ICwJyH93a5EEdljl7oPrt8i4MS5S0BDAWx58LqjWtVw98GOZfy5BYhw==} dependencies: - '@aws-sdk/types': 3.272.0 + '@aws-sdk/types': 3.289.0 bowser: 2.11.0 tslib: 2.5.0 dev: false optional: true - /@aws-sdk/util-user-agent-node/3.282.0: - resolution: {integrity: sha512-GSOdWNmzEd554wR9HBrgeYptKBOybveVwUkd6ws+YTdCOz4xD5Gga+I5JomKkcMEUVdBrJnYVUtq7ZsJy2f11w==} + /@aws-sdk/util-user-agent-node/3.289.0: + resolution: {integrity: sha512-f32g9KS7pwO6FQ9N1CtqQPIS6jhvwv/y0+NHNoo9zLTBH0jol3+C2ELIE3N1wB6xvwhsdPqR3WuOiNiCiv8YAQ==} engines: {node: '>=14.0.0'} peerDependencies: aws-crt: '>=1.0.0' @@ -1806,8 +1809,8 @@ packages: aws-crt: optional: true dependencies: - '@aws-sdk/node-config-provider': 3.272.0 - '@aws-sdk/types': 3.272.0 + '@aws-sdk/node-config-provider': 3.289.0 + '@aws-sdk/types': 3.289.0 tslib: 2.5.0 dev: false optional: true @@ -4713,15 +4716,6 @@ packages: reusify: 1.0.4 dev: false - /@fastify/mongodb/6.2.0: - resolution: {integrity: sha512-ed/kbWTd9TtDvg5IYHQ54g01twAlFlJRBcF31imVX4eQEhUNe9mvIQopVUHErqOjAtQRuF6uQeqTdpiJBx+4+A==} - dependencies: - fastify-plugin: 4.5.0 - mongodb: 4.14.0 - transitivePeerDependencies: - - aws-crt - dev: false - /@fastify/session/10.1.1: resolution: {integrity: sha512-8pKDTL9MuqU1FCTca6XNd1E4quZ/ipik69AHXqkANia9Z4xPFS5OSKIwmCClIdaMYD32/tPu4G/6wGgK5Buj5g==} dependencies: @@ -5836,6 +5830,28 @@ packages: resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} dev: true + /@prisma/client/4.10.1_prisma@4.10.1: + resolution: {integrity: sha512-VonXLJZybdt8e5XZH5vnIGCRNnIh6OMX1FS3H/yzMGLT3STj5TJ/OkMcednrvELgk8PK89Vo3aSh51MWNO0axA==} + engines: {node: '>=14.17'} + requiresBuild: true + peerDependencies: + prisma: '*' + peerDependenciesMeta: + prisma: + optional: true + dependencies: + '@prisma/engines-version': 4.10.1-2.aead147aa326ccb985dcfed5b065b4fdabd44b19 + prisma: 4.10.1 + dev: false + + /@prisma/engines-version/4.10.1-2.aead147aa326ccb985dcfed5b065b4fdabd44b19: + resolution: {integrity: sha512-tsjTho7laDhf9EJ9EnDxAPEf7yrigSMDhniXeU4YoWc7azHAs4GPxRi2P9LTFonmHkJLMOLjR77J1oIP8Ife1w==} + dev: false + + /@prisma/engines/4.10.1: + resolution: {integrity: sha512-B3tcTxjx196nuAu1GOTKO9cGPUgTFHYRdkPkTS4m5ptb2cejyBlH9X7GOfSt3xlI7p4zAJDshJP4JJivCg9ouA==} + requiresBuild: true + /@reach/router/1.3.4_wcqkhtmu7mswc6yz4uyexck3ty: resolution: {integrity: sha512-+mtn9wjlB9NN2CNnnC/BRYtwdKBfSyyasPYraNAyvaV1occr/5NnB4CVzjEZipNHwYebQwcndGUmpFzxAUoqSA==} peerDependencies: @@ -22044,7 +22060,7 @@ packages: mongodb-connection-string-url: 2.6.0 socks: 2.7.1 optionalDependencies: - '@aws-sdk/credential-providers': 3.282.0 + '@aws-sdk/credential-providers': 3.289.0 saslprep: 1.0.3 transitivePeerDependencies: - aws-crt @@ -24586,6 +24602,14 @@ packages: engines: {node: '>= 0.8'} dev: true + /prisma/4.10.1: + resolution: {integrity: sha512-0jDxgg+DruB1kHVNlcspXQB9au62IFfVg9drkhzXudszHNUAQn0lVuu+T8np0uC2z1nKD5S3qPeCyR8u5YFLnA==} + engines: {node: '>=14.17'} + hasBin: true + requiresBuild: true + dependencies: + '@prisma/engines': 4.10.1 + /prismjs/1.29.0: resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} engines: {node: '>=6'} diff --git a/sample.env b/sample.env index d5ab40b925d..c893bfe4869 100644 --- a/sample.env +++ b/sample.env @@ -1,5 +1,5 @@ # Database -MONGOHQ_URL=mongodb://127.0.0.1:27017/freecodecamp +MONGOHQ_URL=mongodb://127.0.0.1:27017/freecodecamp?directConnection=true # Logging SENTRY_DSN=dsn_from_sentry_dashboard