From dac7fa3a144df518a9d651b8f22f8c2288b09b55 Mon Sep 17 00:00:00 2001 From: Niraj Nandish Date: Tue, 18 Feb 2025 13:24:54 +0400 Subject: [PATCH] feat(api): exam screenshot service (#56940) Co-authored-by: Shaun Hamilton --- api/package.json | 1 + api/src/app.ts | 2 + .../routes/exam-environment.test.ts | 94 +- .../routes/exam-environment.ts | 107 +- .../exam-environment/schemas/screenshot.ts | 9 +- api/src/exam-environment/utils/errors.ts | 6 +- api/src/utils/env.ts | 6 + docker/screenshot-service/Dockerfile | 49 + eslint.config.mjs | 1 + pnpm-lock.yaml | 1593 ++++++++++++++++- pnpm-workspace.yaml | 1 + sample.env | 3 + tools/screenshot-service/.gitignore | 3 + tools/screenshot-service/README.md | 29 + tools/screenshot-service/index.ts | 59 + tools/screenshot-service/package.json | 17 + tools/screenshot-service/sample.env | 5 + tools/screenshot-service/tsconfig.json | 13 + 18 files changed, 1901 insertions(+), 97 deletions(-) create mode 100644 docker/screenshot-service/Dockerfile create mode 100644 tools/screenshot-service/.gitignore create mode 100644 tools/screenshot-service/README.md create mode 100644 tools/screenshot-service/index.ts create mode 100644 tools/screenshot-service/package.json create mode 100644 tools/screenshot-service/sample.env create mode 100644 tools/screenshot-service/tsconfig.json diff --git a/api/package.json b/api/package.json index 912a36cd848..3ab4cb970c0 100644 --- a/api/package.json +++ b/api/package.json @@ -8,6 +8,7 @@ "@fastify/accepts": "4.3.0", "@fastify/cookie": "9.4.0", "@fastify/csrf-protection": "6.4.1", + "@fastify/multipart": "^8.3.0", "@fastify/oauth2": "7.8.1", "@fastify/swagger": "8.14.0", "@fastify/swagger-ui": "1.10.2", diff --git a/api/src/app.ts b/api/src/app.ts index 5185efbf964..28eae4a1457 100644 --- a/api/src/app.ts +++ b/api/src/app.ts @@ -47,6 +47,7 @@ import { } from './utils/env'; import { isObjectID } from './utils/validation'; import { + examEnvironmentMultipartRoutes, examEnvironmentOpenRoutes, examEnvironmentValidatedTokenRoutes } from './exam-environment/routes/exam-environment'; @@ -209,6 +210,7 @@ export const build = async ( fastify.addHook('onRequest', fastify.authorizeExamEnvironmentToken); void fastify.register(examEnvironmentValidatedTokenRoutes); + void fastify.register(examEnvironmentMultipartRoutes); done(); }); void fastify.register(examEnvironmentOpenRoutes); diff --git a/api/src/exam-environment/routes/exam-environment.test.ts b/api/src/exam-environment/routes/exam-environment.test.ts index 1b755e85215..772ad7c8cbc 100644 --- a/api/src/exam-environment/routes/exam-environment.test.ts +++ b/api/src/exam-environment/routes/exam-environment.test.ts @@ -2,6 +2,7 @@ import { Static } from '@fastify/type-provider-typebox'; import jwt from 'jsonwebtoken'; import { + createFetchMock, createSuperRequest, defaultUserId, devLogin, @@ -562,7 +563,98 @@ describe('/exam-environment/', () => { }); }); - xdescribe('POST /exam-environment/screenshot', () => {}); + describe('POST /exam-environment/screenshot', () => { + afterEach(async () => { + await fastifyTestInstance.prisma.envExamAttempt.deleteMany(); + }); + + it('should return 400 if request is not multipart form data', async () => { + const res = await superPost('/exam-environment/screenshot').set( + 'exam-environment-authorization-token', + examEnvironmentAuthorizationToken + ); + + expect(res.status).toBe(400); + expect(res.body).toStrictEqual({ + code: 'FCC_EINVAL_EXAM_ENVIRONMENT_SCREENSHOT', + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + message: expect.any(String) + }); + }); + + it('should return 400 if image is missing', async () => { + const res = await superPost('/exam-environment/screenshot') + .set( + 'exam-environment-authorization-token', + examEnvironmentAuthorizationToken + ) + .attach('file', ''); + + expect(res.status).toBe(400); + expect(res.body).toStrictEqual({ + code: 'FCC_EINVAL_EXAM_ENVIRONMENT_SCREENSHOT', + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + message: expect.any(String) + }); + }); + + it('should return 404 if there is no ongoing exam attempt', async () => { + const res = await superPost('/exam-environment/screenshot') + .set( + 'exam-environment-authorization-token', + examEnvironmentAuthorizationToken + ) + .attach('file', Buffer.from([])); + + expect(res.status).toBe(404); + expect(res.body).toStrictEqual({ + code: 'FCC_ERR_EXAM_ENVIRONMENT_EXAM_ATTEMPT', + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + message: expect.any(String) + }); + }); + + it('should return 400 if image is of wrong format', async () => { + await fastifyTestInstance.prisma.envExamAttempt.create({ + data: mock.examAttempt + }); + + const res = await superPost('/exam-environment/screenshot') + .set( + 'exam-environment-authorization-token', + examEnvironmentAuthorizationToken + ) + .attach('file', Buffer.from([])); + + expect(res.status).toBe(400); + expect(res.body).toStrictEqual({ + code: 'FCC_EINVAL_EXAM_ENVIRONMENT_SCREENSHOT', + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + message: expect.any(String) + }); + }); + + it('should return 200 if request is valid and send image to screenshot upload service', async () => { + // Mock image upload service response + const imageUploadRes = createFetchMock({ ok: true }); + jest.spyOn(globalThis, 'fetch').mockImplementation(imageUploadRes); + + await fastifyTestInstance.prisma.envExamAttempt.create({ + data: mock.examAttempt + }); + + const res = await superPost('/exam-environment/screenshot') + .set( + 'exam-environment-authorization-token', + examEnvironmentAuthorizationToken + ) + .attach('file', Buffer.from([0xff, 0xd8, 0xff, 0xff])); + + expect(res.status).toBe(200); + expect(res.body).toStrictEqual({}); + expect(globalThis.fetch).toHaveBeenCalled(); + }); + }); describe('GET /exam-environment/exams', () => { it('should return 200', async () => { diff --git a/api/src/exam-environment/routes/exam-environment.ts b/api/src/exam-environment/routes/exam-environment.ts index 4d820a9c5a8..1f4ad646b81 100644 --- a/api/src/exam-environment/routes/exam-environment.ts +++ b/api/src/exam-environment/routes/exam-environment.ts @@ -1,12 +1,13 @@ /* eslint-disable jsdoc/require-returns, jsdoc/require-param */ import { type FastifyPluginCallbackTypebox } from '@fastify/type-provider-typebox'; +import fastifyMultipart from '@fastify/multipart'; import { PrismaClientValidationError } from '@prisma/client/runtime/library'; import { type FastifyInstance, type FastifyReply } from 'fastify'; import jwt from 'jsonwebtoken'; import * as schemas from '../schemas'; import { mapErr, syncMapErr, UpdateReqType } from '../../utils'; -import { JWT_SECRET } from '../../utils/env'; +import { JWT_SECRET, SCREENSHOT_SERVICE_LOCATION } from '../../utils/env'; import { checkPrerequisites, constructUserExam, @@ -44,16 +45,32 @@ export const examEnvironmentValidatedTokenRoutes: FastifyPluginCallbackTypebox = }, postExamAttemptHandler ); - fastify.post( - '/exam-environment/screenshot', - { - schema: schemas.examEnvironmentPostScreenshot - }, - postScreenshotHandler - ); done(); }; +/** + * Wrapper for endpoints related to the exam environment desktop app. + * + * Requires multipart form data to be supported. + */ +export const examEnvironmentMultipartRoutes: FastifyPluginCallbackTypebox = ( + fastify, + _options, + done +) => { + void fastify.register(fastifyMultipart); + + fastify.post( + '/exam-environment/screenshot', + { + schema: schemas.examEnvironmentPostScreenshot + // bodyLimit: 1024 * 1024 * 5 // 5MiB + }, + postScreenshotHandler + ); + done(); +}; + /** * Wrapper for endpoints related to the exam environment desktop app. * @@ -544,10 +561,80 @@ async function postExamAttemptHandler( */ async function postScreenshotHandler( this: FastifyInstance, - _req: UpdateReqType, + req: UpdateReqType, reply: FastifyReply ) { - return reply.code(418); + const isMultipart = req.isMultipart(); + + if (!isMultipart) { + void reply.code(400); + return reply.send( + ERRORS.FCC_EINVAL_EXAM_ENVIRONMENT_SCREENSHOT( + 'Request is not multipart form data.' + ) + ); + } + + const user = req.user!; + const imgData = await req.file(); + + if (!imgData) { + void reply.code(400); + return reply.send( + ERRORS.FCC_EINVAL_EXAM_ENVIRONMENT_SCREENSHOT('No image provided.') + ); + } + + const maybeAttempt = await mapErr( + this.prisma.envExamAttempt.findMany({ + where: { + userId: user.id + } + }) + ); + + if (maybeAttempt.hasError) { + void reply.code(500); + return reply.send( + ERRORS.FCC_ERR_EXAM_ENVIRONMENT(JSON.stringify(maybeAttempt.error)) + ); + } + + const attempt = maybeAttempt.data; + + if (attempt.length === 0) { + void reply.code(404); + return reply.send( + ERRORS.FCC_ERR_EXAM_ENVIRONMENT_EXAM_ATTEMPT( + `No exam attempts found for user '${user.id}'.` + ) + ); + } + + const imgBinary = await imgData.toBuffer(); + + // Verify image is JPG using magic number + if (imgBinary[0] !== 0xff || imgBinary[1] !== 0xd8 || imgBinary[2] !== 0xff) { + void reply.code(400); + return reply.send( + ERRORS.FCC_EINVAL_EXAM_ENVIRONMENT_SCREENSHOT('Invalid image format.') + ); + } + + void reply.code(200).send(); + + const uploadData = { + image: imgBinary.toString('base64'), + examAttemptId: attempt[0]?.id + }; + + await fetch(`${SCREENSHOT_SERVICE_LOCATION}/upload`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify(uploadData) + }); } async function getExams( diff --git a/api/src/exam-environment/schemas/screenshot.ts b/api/src/exam-environment/schemas/screenshot.ts index ddb60f3d9ec..4d8f247a317 100644 --- a/api/src/exam-environment/schemas/screenshot.ts +++ b/api/src/exam-environment/schemas/screenshot.ts @@ -1,7 +1,12 @@ -// import { Type } from '@fastify/type-provider-typebox'; +import { Type } from '@fastify/type-provider-typebox'; +import { STANDARD_ERROR } from '../utils/errors'; export const examEnvironmentPostScreenshot = { + headers: Type.Object({ + 'exam-environment-authorization-token': Type.String() + }), response: { - // 200: Type.Object({}) + 400: STANDARD_ERROR, + 500: STANDARD_ERROR } }; diff --git a/api/src/exam-environment/utils/errors.ts b/api/src/exam-environment/utils/errors.ts index ec1cf60bc8c..eba25a749b3 100644 --- a/api/src/exam-environment/utils/errors.ts +++ b/api/src/exam-environment/utils/errors.ts @@ -35,7 +35,11 @@ export const ERRORS = { 'FCC_ENOENT_EXAM_ENVIRONMENT_GENERATED_EXAM', '%s' ), - FCC_EINVAL_EXAM_ID: createError('FCC_EINVAL_EXAM_ID', '%s') + FCC_EINVAL_EXAM_ID: createError('FCC_EINVAL_EXAM_ID', '%s'), + FCC_EINVAL_EXAM_ENVIRONMENT_SCREENSHOT: createError( + 'FCC_EINVAL_EXAM_ENVIRONMENT_SCREENSHOT', + '%s' + ) }; /** diff --git a/api/src/utils/env.ts b/api/src/utils/env.ts index 9c6aa02d0d8..89a7d6b2c31 100644 --- a/api/src/utils/env.ts +++ b/api/src/utils/env.ts @@ -138,6 +138,10 @@ if (process.env.FREECODECAMP_NODE_ENV !== 'development') { ); } +if (process.env.FCC_ENABLE_EXAM_ENVIRONMENT === 'true') { + assert.ok(process.env.SCREENSHOT_SERVICE_LOCATION); +} + export const HOME_LOCATION = process.env.HOME_LOCATION; // Mailhog is used in development and test environments, hence the localhost // default. @@ -204,3 +208,5 @@ function undefinedOrBool(val: string | undefined): undefined | boolean { return val === 'true'; } +export const SCREENSHOT_SERVICE_LOCATION = + process.env.SCREENSHOT_SERVICE_LOCATION; diff --git a/docker/screenshot-service/Dockerfile b/docker/screenshot-service/Dockerfile new file mode 100644 index 00000000000..477a18a87e8 --- /dev/null +++ b/docker/screenshot-service/Dockerfile @@ -0,0 +1,49 @@ +# Define project root argument +ARG PROJECT_DIR=tools/screenshot-service + +# Build the app +FROM node:20-alpine AS builder +ARG PROJECT_DIR + +RUN npm i -g pnpm@9 +USER node +WORKDIR /home/node/build + +COPY --chown=node:node *.* . +COPY --chown=node:node ${PROJECT_DIR} ${PROJECT_DIR} + +RUN pnpm install --frozen-lockfile --ignore-scripts -F=./${PROJECT_DIR} + +RUN pnpm -F=./${PROJECT_DIR} build + +# Install production dependencies +FROM node:20-alpine AS deps +ARG PROJECT_DIR + +RUN npm i -g pnpm@9 +USER node +WORKDIR /home/node/build + +COPY --chown=node:node pnpm*.yaml . +COPY --chown=node:node ${PROJECT_DIR} ${PROJECT_DIR} + +RUN pnpm install --prod --ignore-scripts --frozen-lockfile -F=./${PROJECT_DIR} + +# App runner instance +FROM node:20-alpine AS runner +ARG PROJECT_DIR + +USER node +WORKDIR /home/node/fcc + +# Copy the built app +COPY --from=builder --chown=node:node /home/node/build/${PROJECT_DIR}/dist ./ + +# Copy the production dependencies +COPY --from=deps --chown=node:node /home/node/build/node_modules/ node_modules/ +COPY --from=deps --chown=node:node /home/node/build/${PROJECT_DIR}/node_modules ${PROJECT_DIR}/node_modules/ + +ENV PORT 3003 + +# Run the app +CMD [ "node", "./tools/screenshot-service/index.js" ] diff --git a/eslint.config.mjs b/eslint.config.mjs index 2001c29d835..82f9862f808 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -160,6 +160,7 @@ export default tseslint.config( 'tools/scripts/**/*.ts', 'tools/challenge-helper-scripts/**/*.ts', 'tools/challenge-auditor/**/*.ts', + 'tools/screenshot-service/**/*.ts', 'e2e/**/*.ts' ], extends: [tseslint.configs.recommendedTypeChecked] diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 67a8a4df16d..fac665240d5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -167,6 +167,9 @@ importers: '@fastify/csrf-protection': specifier: 6.4.1 version: 6.4.1 + '@fastify/multipart': + specifier: ^8.3.0 + version: 8.3.1 '@fastify/oauth2': specifier: 7.8.1 version: 7.8.1(patch_hash=fjqma2r6xxjavghcsvyjlkhmyy) @@ -329,7 +332,7 @@ importers: version: 0.0.2 express-rate-limit: specifier: ^6.7.0 - version: 6.7.0(express@4.18.2) + version: 6.7.0(express@5.0.0-beta.3) express-session: specifier: 1.17.3 version: 1.17.3 @@ -1209,6 +1212,25 @@ importers: specifier: 3.6.0 version: 3.6.0 + tools/screenshot-service: + dependencies: + '@aws-sdk/client-s3': + specifier: ^3.632.0 + version: 3.705.0 + express: + specifier: 5.0.0-beta.3 + version: 5.0.0-beta.3 + devDependencies: + '@types/express': + specifier: ^5.0.0 + version: 5.0.0 + nodemon: + specifier: ^3.1.7 + version: 3.1.7 + typescript: + specifier: ^5.7.2 + version: 5.7.2 + tools/scripts/build: devDependencies: '@total-typescript/ts-reset': @@ -1231,7 +1253,7 @@ importers: devDependencies: debug: specifier: 4.3.4 - version: 4.3.4(supports-color@8.1.1) + version: 4.3.4(supports-color@5.5.0) dotenv: specifier: 16.4.5 version: 16.4.5 @@ -1243,7 +1265,7 @@ importers: devDependencies: debug: specifier: 4.3.4 - version: 4.3.4(supports-color@8.1.1) + version: 4.3.4(supports-color@5.5.0) dotenv: specifier: 16.4.5 version: 16.4.5 @@ -1328,25 +1350,52 @@ packages: '@aws-crypto/crc32@3.0.0': resolution: {integrity: sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==} + '@aws-crypto/crc32@5.2.0': + resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} + engines: {node: '>=16.0.0'} + + '@aws-crypto/crc32c@5.2.0': + resolution: {integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==} + '@aws-crypto/ie11-detection@3.0.0': resolution: {integrity: sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==} + '@aws-crypto/sha1-browser@5.2.0': + resolution: {integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==} + '@aws-crypto/sha256-browser@3.0.0': resolution: {integrity: sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==} + '@aws-crypto/sha256-browser@5.2.0': + resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} + '@aws-crypto/sha256-js@3.0.0': resolution: {integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==} + '@aws-crypto/sha256-js@5.2.0': + resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} + engines: {node: '>=16.0.0'} + '@aws-crypto/supports-web-crypto@3.0.0': resolution: {integrity: sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==} + '@aws-crypto/supports-web-crypto@5.2.0': + resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} + '@aws-crypto/util@3.0.0': resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==} + '@aws-crypto/util@5.2.0': + resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} + '@aws-sdk/client-cognito-identity@3.521.0': resolution: {integrity: sha512-UomYWcCpM7OZUt1BDlY3guO6mnA4VXzMkNjFbVtWibKQkk4LhcIUXb6SxWSw/gujIrlOZywldjyj8bL6V374IQ==} engines: {node: '>=14.0.0'} + '@aws-sdk/client-s3@3.705.0': + resolution: {integrity: sha512-Fm0Cbc4zr0yG0DnNycz7ywlL5tQFdLSb7xCIPfzrxJb3YQiTXWxH5eu61SSsP/Z6RBNRolmRPvst/iNgX0fWvA==} + engines: {node: '>=16.0.0'} + '@aws-sdk/client-ses@3.521.0': resolution: {integrity: sha512-rQRmiMOh6v80sMNK2xx46ZL7z7B6VuTUwzggimOkgwUMLYEGWndKojKnkTrt0kPRB4Mx+WHKDIOLx6bDI82oKw==} engines: {node: '>=14.0.0'} @@ -1357,20 +1406,38 @@ packages: peerDependencies: '@aws-sdk/credential-provider-node': ^3.521.0 + '@aws-sdk/client-sso-oidc@3.699.0': + resolution: {integrity: sha512-u8a1GorY5D1l+4FQAf4XBUC1T10/t7neuwT21r0ymrtMFSK2a9QqVHKMoLkvavAwyhJnARSBM9/UQC797PFOFw==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sts': ^3.699.0 + '@aws-sdk/client-sso@3.521.0': resolution: {integrity: sha512-aEx8kEvWmTwCja6hvIZd5PvxHsI1HQZkckXhw1UrkDPnfcAwQoQAgselI7D+PVT5qQDIjXRm0NpsvBLaLj6jZw==} engines: {node: '>=14.0.0'} + '@aws-sdk/client-sso@3.696.0': + resolution: {integrity: sha512-q5TTkd08JS0DOkHfUL853tuArf7NrPeqoS5UOvqJho8ibV9Ak/a/HO4kNvy9Nj3cib/toHYHsQIEtecUPSUUrQ==} + engines: {node: '>=16.0.0'} + '@aws-sdk/client-sts@3.521.0': resolution: {integrity: sha512-f1J5NDbntcwIHJqhks89sQvk7UXPmN0X0BZ2mgpj6pWP+NlPqy+1t1bia8qRhEuNITaEigoq6rqe9xaf4FdY9A==} engines: {node: '>=14.0.0'} peerDependencies: '@aws-sdk/credential-provider-node': ^3.521.0 + '@aws-sdk/client-sts@3.699.0': + resolution: {integrity: sha512-++lsn4x2YXsZPIzFVwv3fSUVM55ZT0WRFmPeNilYIhZClxHLmVAWKH4I55cY9ry60/aTKYjzOXkWwyBKGsGvQg==} + engines: {node: '>=16.0.0'} + '@aws-sdk/core@3.521.0': resolution: {integrity: sha512-KovKmW7yg/P2HVG2dhV2DAJLyoeGelgsnSGHaktXo/josJ3vDGRNqqRSgVaqKFxnD98dPEMLrjkzZumNUNGvLw==} engines: {node: '>=14.0.0'} + '@aws-sdk/core@3.696.0': + resolution: {integrity: sha512-3c9III1k03DgvRZWg8vhVmfIXPG6hAciN9MzQTzqGngzWAELZF/WONRTRQuDFixVtarQatmLHYVw/atGeA2Byw==} + engines: {node: '>=16.0.0'} + '@aws-sdk/credential-provider-cognito-identity@3.521.0': resolution: {integrity: sha512-HsLKT0MOQ1/3qM2smxgafuf7B9sbie/gsKEgQi9De7UhA8N9yGaXdo3HQFbyRbv4eZ0fj9Ja++UgFypUk4c3Kw==} engines: {node: '>=14.0.0'} @@ -1379,66 +1446,164 @@ packages: resolution: {integrity: sha512-OwblTJNdDAoqYVwcNfhlKDp5z+DINrjBfC6ZjNdlJpTXgxT3IqzuilTJTlydQ+2eG7aXfV9OwTVRQWdCmzFuKA==} engines: {node: '>=14.0.0'} + '@aws-sdk/credential-provider-env@3.696.0': + resolution: {integrity: sha512-T9iMFnJL7YTlESLpVFT3fg1Lkb1lD+oiaIC8KMpepb01gDUBIpj9+Y+pA/cgRWW0yRxmkDXNazAE2qQTVFGJzA==} + engines: {node: '>=16.0.0'} + '@aws-sdk/credential-provider-http@3.521.0': resolution: {integrity: sha512-yJM1yNGj2XFH8v6/ffWrFY5nC3/2+8qZ8c4mMMwZru8bYXeuSV4+NNfE59HUWvkAF7xP76u4gr4I8kNrMPTlfg==} engines: {node: '>=14.0.0'} + '@aws-sdk/credential-provider-http@3.696.0': + resolution: {integrity: sha512-GV6EbvPi2eq1+WgY/o2RFA3P7HGmnkIzCNmhwtALFlqMroLYWKE7PSeHw66Uh1dFQeVESn0/+hiUNhu1mB0emA==} + engines: {node: '>=16.0.0'} + '@aws-sdk/credential-provider-ini@3.521.0': resolution: {integrity: sha512-HuhP1AlKgvBBxUIwxL/2DsDemiuwgbz1APUNSeJhDBF6JyZuxR0NU8zEZkvH9b4ukTcmcKGABpY0Wex4rAh3xw==} engines: {node: '>=14.0.0'} + '@aws-sdk/credential-provider-ini@3.699.0': + resolution: {integrity: sha512-dXmCqjJnKmG37Q+nLjPVu22mNkrGHY8hYoOt3Jo9R2zr5MYV7s/NHsCHr+7E+BZ+tfZYLRPeB1wkpTeHiEcdRw==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sts': ^3.699.0 + '@aws-sdk/credential-provider-node@3.521.0': resolution: {integrity: sha512-N9SR4gWI10qh4V2myBcTw8IlX3QpsMMxa4Q8d/FHiAX6eNV7e6irXkXX8o7+J1gtCRy1AtBMqAdGsve4GVqYMQ==} engines: {node: '>=14.0.0'} + '@aws-sdk/credential-provider-node@3.699.0': + resolution: {integrity: sha512-MmEmNDo1bBtTgRmdNfdQksXu4uXe66s0p1hi1YPrn1h59Q605eq/xiWbGL6/3KdkViH6eGUuABeV2ODld86ylg==} + engines: {node: '>=16.0.0'} + '@aws-sdk/credential-provider-process@3.521.0': resolution: {integrity: sha512-EcJjcrpdklxbRAFFgSLk6QGVtvnfZ80ItfZ47VL9LkhWcDAkQ1Oi0esHq+zOgvjb7VkCyD3Q9CyEwT6MlJsriA==} engines: {node: '>=14.0.0'} + '@aws-sdk/credential-provider-process@3.696.0': + resolution: {integrity: sha512-mL1RcFDe9sfmyU5K1nuFkO8UiJXXxLX4JO1gVaDIOvPqwStpUAwi3A1BoeZhWZZNQsiKI810RnYGo0E0WB/hUA==} + engines: {node: '>=16.0.0'} + '@aws-sdk/credential-provider-sso@3.521.0': resolution: {integrity: sha512-GAfc0ji+fC2k9VngYM3zsS1J5ojfWg0WUOBzavvHzkhx/O3CqOt82Vfikg3PvemAp9yOgKPMaasTHVeipNLBBQ==} engines: {node: '>=14.0.0'} + '@aws-sdk/credential-provider-sso@3.699.0': + resolution: {integrity: sha512-Ekp2cZG4pl9D8+uKWm4qO1xcm8/MeiI8f+dnlZm8aQzizeC+aXYy9GyoclSf6daK8KfRPiRfM7ZHBBL5dAfdMA==} + engines: {node: '>=16.0.0'} + '@aws-sdk/credential-provider-web-identity@3.521.0': resolution: {integrity: sha512-ZPPJqdbPOE4BkdrPrYBtsWg0Zy5b+GY1sbMWLQt0tcISgN5EIoePCS2pGNWnBUmBT+mibMQCVv9fOQpqzRkvAw==} engines: {node: '>=14.0.0'} + '@aws-sdk/credential-provider-web-identity@3.696.0': + resolution: {integrity: sha512-XJ/CVlWChM0VCoc259vWguFUjJDn/QwDqHwbx+K9cg3v6yrqXfK5ai+p/6lx0nQpnk4JzPVeYYxWRpaTsGC9rg==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sts': ^3.696.0 + '@aws-sdk/credential-providers@3.521.0': resolution: {integrity: sha512-PYd93rIF99TtRYwFCKr/3G/eEMjQzEVFuX3lUoKWrNgDCd+Jeor/ol4HlDoeiSX/Y37HcFnvAFCKJwDGHOPsLw==} engines: {node: '>=14.0.0'} + '@aws-sdk/middleware-bucket-endpoint@3.696.0': + resolution: {integrity: sha512-V07jishKHUS5heRNGFpCWCSTjRJyQLynS/ncUeE8ZYtG66StOOQWftTwDfFOSoXlIqrXgb4oT9atryzXq7Z4LQ==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-expect-continue@3.696.0': + resolution: {integrity: sha512-vpVukqY3U2pb+ULeX0shs6L0aadNep6kKzjme/MyulPjtUDJpD3AekHsXRrCCGLmOqSKqRgQn5zhV9pQhHsb6Q==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-flexible-checksums@3.701.0': + resolution: {integrity: sha512-adNaPCyTT+CiVM0ufDiO1Fe7nlRmJdI9Hcgj0M9S6zR7Dw70Ra5z8Lslkd7syAccYvZaqxLklGjPQH/7GNxwTA==} + engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-host-header@3.521.0': resolution: {integrity: sha512-Bc4stnMtVAdqosYI1wedFK9tffclCuwpOK/JA4bxbnvSyP1kz4s1HBVT9OOMzdLRLWLwVj/RslXKfSbzOUP7ug==} engines: {node: '>=14.0.0'} + '@aws-sdk/middleware-host-header@3.696.0': + resolution: {integrity: sha512-zELJp9Ta2zkX7ELggMN9qMCgekqZhFC5V2rOr4hJDEb/Tte7gpfKSObAnw/3AYiVqt36sjHKfdkoTsuwGdEoDg==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-location-constraint@3.696.0': + resolution: {integrity: sha512-FgH12OB0q+DtTrP2aiDBddDKwL4BPOrm7w3VV9BJrSdkqQCNBPz8S1lb0y5eVH4tBG+2j7gKPlOv1wde4jF/iw==} + engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-logger@3.521.0': resolution: {integrity: sha512-JJ4nyYvLu3RyyNHo74Rlx6WKxJsAixWCEnnFb6IGRUHvsG+xBGU7HF5koY2log8BqlDLrt4ZUaV/CGy5Dp8Mfg==} engines: {node: '>=14.0.0'} + '@aws-sdk/middleware-logger@3.696.0': + resolution: {integrity: sha512-KhkHt+8AjCxcR/5Zp3++YPJPpFQzxpr+jmONiT/Jw2yqnSngZ0Yspm5wGoRx2hS1HJbyZNuaOWEGuJoxLeBKfA==} + engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-recursion-detection@3.521.0': resolution: {integrity: sha512-1m5AsC55liTlaYMjc4pIQfjfBHG9LpWgubSl4uUxJSdI++zdA/SRBwXl40p7Ac/y5esweluhWabyiv1g/W4+Xg==} engines: {node: '>=14.0.0'} + '@aws-sdk/middleware-recursion-detection@3.696.0': + resolution: {integrity: sha512-si/maV3Z0hH7qa99f9ru2xpS5HlfSVcasRlNUXKSDm611i7jFMWwGNLUOXFAOLhXotPX5G3Z6BLwL34oDeBMug==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-sdk-s3@3.696.0': + resolution: {integrity: sha512-M7fEiAiN7DBMHflzOFzh1I2MNSlLpbiH2ubs87bdRc2wZsDPSbs4l3v6h3WLhxoQK0bq6vcfroudrLBgvCuX3Q==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/middleware-ssec@3.696.0': + resolution: {integrity: sha512-w/d6O7AOZ7Pg3w2d3BxnX5RmGNWb5X4RNxF19rJqcgu/xqxxE/QwZTNd5a7eTsqLXAUIfbbR8hh0czVfC1pJLA==} + engines: {node: '>=16.0.0'} + '@aws-sdk/middleware-user-agent@3.521.0': resolution: {integrity: sha512-+hmQjWDG93wCcJn5QY2MkzAL1aG5wl3FJ/ud2nQOu/Gx7d4QVT/B6VJwoG6GSPVuVPZwzne5n9zPVst6RmWJGA==} engines: {node: '>=14.0.0'} + '@aws-sdk/middleware-user-agent@3.696.0': + resolution: {integrity: sha512-Lvyj8CTyxrHI6GHd2YVZKIRI5Fmnugt3cpJo0VrKKEgK5zMySwEZ1n4dqPK6czYRWKd5+WnYHYAuU+Wdk6Jsjw==} + engines: {node: '>=16.0.0'} + '@aws-sdk/region-config-resolver@3.521.0': resolution: {integrity: sha512-eC2T62nFgQva9Q0Sqoc9xsYyyH9EN2rJtmUKkWsBMf77atpmajAYRl5B/DzLwGHlXGsgVK2tJdU5wnmpQCEwEQ==} engines: {node: '>=14.0.0'} + '@aws-sdk/region-config-resolver@3.696.0': + resolution: {integrity: sha512-7EuH142lBXjI8yH6dVS/CZeiK/WZsmb/8zP6bQbVYpMrppSTgB3MzZZdxVZGzL5r8zPQOU10wLC4kIMy0qdBVQ==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/signature-v4-multi-region@3.696.0': + resolution: {integrity: sha512-ijPkoLjXuPtgxAYlDoYls8UaG/VKigROn9ebbvPL/orEY5umedd3iZTcS9T+uAf4Ur3GELLxMQiERZpfDKaz3g==} + engines: {node: '>=16.0.0'} + '@aws-sdk/token-providers@3.521.0': resolution: {integrity: sha512-63XxPOn13j87yPWKm6UXOPdMZIMyEyCDJzmlxnIACP8m20S/c6b8xLJ4fE/PUlD0MTKxpFeQbandq5OhnLsWSQ==} engines: {node: '>=14.0.0'} + '@aws-sdk/token-providers@3.699.0': + resolution: {integrity: sha512-kuiEW9DWs7fNos/SM+y58HCPhcIzm1nEZLhe2/7/6+TvAYLuEWURYsbK48gzsxXlaJ2k/jGY3nIsA7RptbMOwA==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sso-oidc': ^3.699.0 + '@aws-sdk/types@3.521.0': resolution: {integrity: sha512-H9I3Lut0F9d+kTibrhnTRqDRzhxf/vrDu12FUdTXVZEvVAQ7w9yrVHAZx8j2e8GWegetsQsNitO3KMrj4dA4pw==} engines: {node: '>=14.0.0'} + '@aws-sdk/types@3.696.0': + resolution: {integrity: sha512-9rTvUJIAj5d3//U5FDPWGJ1nFJLuWb30vugGOrWk7aNZ6y9tuA3PI7Cc9dP8WEXKVyK1vuuk8rSFP2iqXnlgrw==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/util-arn-parser@3.693.0': + resolution: {integrity: sha512-WC8x6ca+NRrtpAH64rWu+ryDZI3HuLwlEr8EU6/dbC/pt+r/zC0PBoC15VEygUaBA+isppCikQpGyEDu0Yj7gQ==} + engines: {node: '>=16.0.0'} + '@aws-sdk/util-endpoints@3.521.0': resolution: {integrity: sha512-lO5+1LeAZycDqgNjQyZdPSdXFQKXaW5bRuQ3UIT3bOCcUAbDI0BYXlPm1huPNTCEkI9ItnDCbISbV0uF901VXw==} engines: {node: '>=14.0.0'} + '@aws-sdk/util-endpoints@3.696.0': + resolution: {integrity: sha512-T5s0IlBVX+gkb9g/I6CLt4yAZVzMSiGnbUqWihWsHvQR1WOoIcndQy/Oz/IJXT9T2ipoy7a80gzV6a5mglrioA==} + engines: {node: '>=16.0.0'} + '@aws-sdk/util-locate-window@3.310.0': resolution: {integrity: sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w==} engines: {node: '>=14.0.0'} @@ -1446,6 +1611,9 @@ packages: '@aws-sdk/util-user-agent-browser@3.521.0': resolution: {integrity: sha512-2t3uW6AXOvJ5iiI1JG9zPqKQDc/TRFa+v13aqT5KKw9h3WHFyRUpd4sFQL6Ul0urrq2Zg9cG4NHBkei3k9lsHA==} + '@aws-sdk/util-user-agent-browser@3.696.0': + resolution: {integrity: sha512-Z5rVNDdmPOe6ELoM5AhF/ja5tSjbe6ctSctDPb0JdDf4dT0v2MfwhJKzXju2RzX8Es/77Glh7MlaXLE0kCB9+Q==} + '@aws-sdk/util-user-agent-node@3.521.0': resolution: {integrity: sha512-g4KMEiyLc8DG21eMrp6fJUdfQ9F0fxfCNMDRgf0SE/pWI/u4vuWR2n8obLwq1pMVx7Ksva1NO3dc+a3Rgr0hag==} engines: {node: '>=14.0.0'} @@ -1455,9 +1623,22 @@ packages: aws-crt: optional: true + '@aws-sdk/util-user-agent-node@3.696.0': + resolution: {integrity: sha512-KhKqcfyXIB0SCCt+qsu4eJjsfiOrNzK5dCV7RAW2YIpp+msxGUUX0NdRE9rkzjiv+3EMktgJm3eEIS+yxtlVdQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true + '@aws-sdk/util-utf8-browser@3.259.0': resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} + '@aws-sdk/xml-builder@3.696.0': + resolution: {integrity: sha512-dn1mX+EeqivoLYnY7p2qLrir0waPnCgS/0YdRCAVU2x14FgfUYCH6Im3w3oi2dMwhxfKY5lYVB5NKvZu7uI9lQ==} + engines: {node: '>=16.0.0'} + '@babel/cli@7.17.10': resolution: {integrity: sha512-OygVO1M2J4yPMNOW9pb+I6kFGpQK77HmG44Oz3hg8xQIl5L/2zq+ZohwAdSaqYgVwM0SfmPHZHphH4wR8qzVYw==} engines: {node: '>=6.9.0'} @@ -3130,6 +3311,9 @@ packages: '@fastify/ajv-compiler@3.5.0': resolution: {integrity: sha512-ebbEtlI7dxXF5ziNdr05mOY8NnDiPB1XvAlLHctRt/Rc+C3LCOVW5imUVX+mhvUhnNzmPBHewUkOFgGlCxgdAA==} + '@fastify/busboy@3.1.1': + resolution: {integrity: sha512-5DGmA8FTdB2XbDeEwc/5ZXBl6UbBAyBOOLlPuBnZ/N1SwdH9Ii+cOX3tBROlDgcTXxjOYnLMVoKk9+FXAw0CJw==} + '@fastify/cookie@9.4.0': resolution: {integrity: sha512-Th+pt3kEkh4MQD/Q2q1bMuJIB5NX/D5SwSpOKu3G/tjoGbwfpurIMJsWSPS0SJJ4eyjtmQ8OipDQspf8RbUOlg==} @@ -3142,12 +3326,21 @@ packages: '@fastify/deepmerge@1.3.0': resolution: {integrity: sha512-J8TOSBq3SoZbDhM9+R/u77hP93gz/rajSA+K2kGyijPpORPWUXHUpTaleoj+92As0S9uPRP7Oi8IqMf0u+ro6A==} + '@fastify/deepmerge@2.0.2': + resolution: {integrity: sha512-3wuLdX5iiiYeZWP6bQrjqhrcvBIf0NHbQH1Ur1WbHvoiuTYUEItgygea3zs8aHpiitn0lOB8gX20u1qO+FDm7Q==} + '@fastify/error@3.4.1': resolution: {integrity: sha512-wWSvph+29GR783IhmvdwWnN4bUxTD01Vm5Xad4i7i1VuAOItLvbPAb69sb0IQ2N57yprvhNIwAP5B6xfKTmjmQ==} + '@fastify/error@4.0.0': + resolution: {integrity: sha512-OO/SA8As24JtT1usTUTKgGH7uLvhfwZPwlptRi2Dp5P4KKmJI3gvsZ8MIHnNwDs4sLf/aai5LzTyl66xr7qMxA==} + '@fastify/fast-json-stringify-compiler@4.3.0': resolution: {integrity: sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA==} + '@fastify/multipart@8.3.1': + resolution: {integrity: sha512-pncbnG28S6MIskFSVRtzTKE9dK+GrKAJl0NbaQ/CG8ded80okWFsYKzSlP9haaLNQhNRDOoHqmGQNvgbiPVpWQ==} + '@fastify/oauth2@7.8.1': resolution: {integrity: sha512-PBIMizzgEOcUcttyfX1hC6CR9vESoI1lfNucBywgcqrxvknVg+zvBCgH2+oU8NvrpSDMtlY6nyuEYYZtVhDT7Q==} @@ -3929,161 +4122,352 @@ packages: resolution: {integrity: sha512-iwUxrFm/ZFCXhzhtZ6JnoJzAsqUrVfBAZUTQj8ypXGtIjwXZpKqmgYiuqrDERiydDI5gesqvsC4Rqe57GGhbVg==} engines: {node: '>=14.0.0'} + '@smithy/abort-controller@3.1.9': + resolution: {integrity: sha512-yiW0WI30zj8ZKoSYNx90no7ugVn3khlyH/z5W8qtKBtVE6awRALbhSG+2SAHA1r6bO/6M9utxYKVZ3PCJ1rWxw==} + engines: {node: '>=16.0.0'} + + '@smithy/chunked-blob-reader-native@3.0.1': + resolution: {integrity: sha512-VEYtPvh5rs/xlyqpm5NRnfYLZn+q0SRPELbvBV+C/G7IQ+ouTuo+NKKa3ShG5OaFR8NYVMXls9hPYLTvIKKDrQ==} + + '@smithy/chunked-blob-reader@4.0.0': + resolution: {integrity: sha512-jSqRnZvkT4egkq/7b6/QRCNXmmYVcHwnJldqJ3IhVpQE2atObVJ137xmGeuGFhjFUr8gCEVAOKwSY79OvpbDaQ==} + '@smithy/config-resolver@2.1.2': resolution: {integrity: sha512-ZDMY63xJVsJl7ei/yIMv9nx8OiEOulwNnQOUDGpIvzoBrcbvYwiMjIMe5mP5J4fUmttKkpiTKwta/7IUriAn9w==} engines: {node: '>=14.0.0'} + '@smithy/config-resolver@3.0.13': + resolution: {integrity: sha512-Gr/qwzyPaTL1tZcq8WQyHhTZREER5R1Wytmz4WnVGL4onA3dNk6Btll55c8Vr58pLdvWZmtG8oZxJTw3t3q7Jg==} + engines: {node: '>=16.0.0'} + '@smithy/core@1.3.3': resolution: {integrity: sha512-8cT/swERvU1EUMuJF914+psSeVy4+NcNhbRe1WEKN1yIMPE5+Tq5EaPq1HWjKCodcdBIyU9ViTjd62XnebXMHA==} engines: {node: '>=14.0.0'} + '@smithy/core@2.5.5': + resolution: {integrity: sha512-G8G/sDDhXA7o0bOvkc7bgai6POuSld/+XhNnWAbpQTpLv2OZPvyqQ58tLPPlz0bSNsXktldDDREIv1LczFeNEw==} + engines: {node: '>=16.0.0'} + '@smithy/credential-provider-imds@2.2.2': resolution: {integrity: sha512-a2xpqWzhzcYwImGbFox5qJLf6i5HKdVeOVj7d6kVFElmbS2QW2T4HmefRc5z1huVArk9bh5Rk1NiFp9YBCXU3g==} engines: {node: '>=14.0.0'} + '@smithy/credential-provider-imds@3.2.8': + resolution: {integrity: sha512-ZCY2yD0BY+K9iMXkkbnjo+08T2h8/34oHd0Jmh6BZUSZwaaGlGCyBT/3wnS7u7Xl33/EEfN4B6nQr3Gx5bYxgw==} + engines: {node: '>=16.0.0'} + '@smithy/eventstream-codec@2.1.2': resolution: {integrity: sha512-2PHrVRixITHSOj3bxfZmY93apGf8/DFiyhRh9W0ukfi07cvlhlRonZ0fjgcqryJjUZ5vYHqqmfIE/Qe1HM9mlw==} + '@smithy/eventstream-codec@3.1.10': + resolution: {integrity: sha512-323B8YckSbUH0nMIpXn7HZsAVKHYHFUODa8gG9cHo0ySvA1fr5iWaNT+iIL0UCqUzG6QPHA3BSsBtRQou4mMqQ==} + + '@smithy/eventstream-serde-browser@3.0.14': + resolution: {integrity: sha512-kbrt0vjOIihW3V7Cqj1SXQvAI5BR8SnyQYsandva0AOR307cXAc+IhPngxIPslxTLfxwDpNu0HzCAq6g42kCPg==} + engines: {node: '>=16.0.0'} + + '@smithy/eventstream-serde-config-resolver@3.0.11': + resolution: {integrity: sha512-P2pnEp4n75O+QHjyO7cbw/vsw5l93K/8EWyjNCAAybYwUmj3M+hjSQZ9P5TVdUgEG08ueMAP5R4FkuSkElZ5tQ==} + engines: {node: '>=16.0.0'} + + '@smithy/eventstream-serde-node@3.0.13': + resolution: {integrity: sha512-zqy/9iwbj8Wysmvi7Lq7XFLeDgjRpTbCfwBhJa8WbrylTAHiAu6oQTwdY7iu2lxigbc9YYr9vPv5SzYny5tCXQ==} + engines: {node: '>=16.0.0'} + + '@smithy/eventstream-serde-universal@3.0.13': + resolution: {integrity: sha512-L1Ib66+gg9uTnqp/18Gz4MDpJPKRE44geOjOQ2SVc0eiaO5l255ADziATZgjQjqumC7yPtp1XnjHlF1srcwjKw==} + engines: {node: '>=16.0.0'} + '@smithy/fetch-http-handler@2.4.2': resolution: {integrity: sha512-sIGMVwa/8h6eqNjarI3F07gvML3mMXcqBe+BINNLuKsVKXMNBN6wRzeZbbx7lfiJDEHAP28qRns8flHEoBB7zw==} + '@smithy/fetch-http-handler@4.1.2': + resolution: {integrity: sha512-R7rU7Ae3ItU4rC0c5mB2sP5mJNbCfoDc8I5XlYjIZnquyUwec7fEo78F6DA3SmgJgkU1qTMcZJuGblxZsl10ZA==} + + '@smithy/hash-blob-browser@3.1.10': + resolution: {integrity: sha512-elwslXOoNunmfS0fh55jHggyhccobFkexLYC1ZeZ1xP2BTSrcIBaHV2b4xUQOdctrSNOpMqOZH1r2XzWTEhyfA==} + '@smithy/hash-node@2.1.2': resolution: {integrity: sha512-3Sgn4s0g4xud1M/j6hQwYCkz04lVJ24wvCAx4xI26frr3Ao6v0o2VZkBpUySTeQbMUBp2DhuzJ0fV1zybzkckw==} engines: {node: '>=14.0.0'} + '@smithy/hash-node@3.0.11': + resolution: {integrity: sha512-emP23rwYyZhQBvklqTtwetkQlqbNYirDiEEwXl2v0GYWMnCzxst7ZaRAnWuy28njp5kAH54lvkdG37MblZzaHA==} + engines: {node: '>=16.0.0'} + + '@smithy/hash-stream-node@3.1.10': + resolution: {integrity: sha512-olomK/jZQ93OMayW1zfTHwcbwBdhcZOHsyWyiZ9h9IXvc1mCD/VuvzbLb3Gy/qNJwI4MANPLctTp2BucV2oU/Q==} + engines: {node: '>=16.0.0'} + '@smithy/invalid-dependency@2.1.2': resolution: {integrity: sha512-qdgKhkFYxDJnKecx2ANwz3JRkXjm0qDgEnAs5BIfb2z/XqA2l7s9BTH7GTC/RR4E8h6EDCeb5rM2rnARxviqIg==} + '@smithy/invalid-dependency@3.0.11': + resolution: {integrity: sha512-NuQmVPEJjUX6c+UELyVz8kUx8Q539EDeNwbRyu4IIF8MeV7hUtq1FB3SHVyki2u++5XLMFqngeMKk7ccspnNyQ==} + '@smithy/is-array-buffer@2.1.1': resolution: {integrity: sha512-xozSQrcUinPpNPNPds4S7z/FakDTh1MZWtRP/2vQtYB/u3HYrX2UXuZs+VhaKBd6Vc7g2XPr2ZtwGBNDN6fNKQ==} engines: {node: '>=14.0.0'} + '@smithy/is-array-buffer@3.0.0': + resolution: {integrity: sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==} + engines: {node: '>=16.0.0'} + + '@smithy/md5-js@3.0.11': + resolution: {integrity: sha512-3NM0L3i2Zm4bbgG6Ymi9NBcxXhryi3uE8fIfHJZIOfZVxOkGdjdgjR9A06SFIZCfnEIWKXZdm6Yq5/aPXFFhsQ==} + '@smithy/middleware-content-length@2.1.2': resolution: {integrity: sha512-XEWtul1tHP31EtUIobEyN499paUIbnCTRtjY+ciDCEXW81lZmpjrDG3aL0FxJDPnvatVQuMV1V5eg6MCqTFaLQ==} engines: {node: '>=14.0.0'} + '@smithy/middleware-content-length@3.0.13': + resolution: {integrity: sha512-zfMhzojhFpIX3P5ug7jxTjfUcIPcGjcQYzB9t+rv0g1TX7B0QdwONW+ATouaLoD7h7LOw/ZlXfkq4xJ/g2TrIw==} + engines: {node: '>=16.0.0'} + '@smithy/middleware-endpoint@2.4.2': resolution: {integrity: sha512-72qbmVwaWcLOd/OT52fszrrlXywPwciwpsRiIk/dIvpcwkpGE9qrYZ2bt/SYcA/ma8Rz9Ni2AbBuSXLDYISS+A==} engines: {node: '>=14.0.0'} + '@smithy/middleware-endpoint@3.2.5': + resolution: {integrity: sha512-VhJNs/s/lyx4weiZdXSloBgoLoS8osV0dKIain8nGmx7of3QFKu5BSdEuk1z/U8x9iwes1i+XCiNusEvuK1ijg==} + engines: {node: '>=16.0.0'} + '@smithy/middleware-retry@2.1.2': resolution: {integrity: sha512-tlvSK+v9bPHHb0dLWvEaFW2Iz0IeA57ISvSaso36I33u8F8wYqo5FCvenH7TgMVBx57jyJBXOmYCZa9n5gdJIg==} engines: {node: '>=14.0.0'} + '@smithy/middleware-retry@3.0.30': + resolution: {integrity: sha512-6323RL2BvAR3VQpTjHpa52kH/iSHyxd/G9ohb2MkBk2Ucu+oMtRXT8yi7KTSIS9nb58aupG6nO0OlXnQOAcvmQ==} + engines: {node: '>=16.0.0'} + '@smithy/middleware-serde@2.1.2': resolution: {integrity: sha512-XNU6aVIhlSbjuo2XsfZ7rd4HhjTXDlNWxAmhlBfViTW1TNK02CeWdeEntp5XtQKYD//pyTIbYi35EQvIidAkOw==} engines: {node: '>=14.0.0'} + '@smithy/middleware-serde@3.0.11': + resolution: {integrity: sha512-KzPAeySp/fOoQA82TpnwItvX8BBURecpx6ZMu75EZDkAcnPtO6vf7q4aH5QHs/F1s3/snQaSFbbUMcFFZ086Mw==} + engines: {node: '>=16.0.0'} + '@smithy/middleware-stack@2.1.2': resolution: {integrity: sha512-EPGaHGd4XmZcaRYjbhyqiqN/Q/ESxXu5e5TK24CTZUe99y8/XCxmiX8VLMM4H0DI7K3yfElR0wPAAvceoSkTgw==} engines: {node: '>=14.0.0'} + '@smithy/middleware-stack@3.0.11': + resolution: {integrity: sha512-1HGo9a6/ikgOMrTrWL/WiN9N8GSVYpuRQO5kjstAq4CvV59bjqnh7TbdXGQ4vxLD3xlSjfBjq5t1SOELePsLnA==} + engines: {node: '>=16.0.0'} + '@smithy/node-config-provider@2.2.2': resolution: {integrity: sha512-QXvpqHSijAm13ZsVkUo92b085UzDvYP1LblWTb3uWi9WilhDvYnVyPLXaryLhOWZ2YvdhK2170T3ZBqtg+quIQ==} engines: {node: '>=14.0.0'} + '@smithy/node-config-provider@3.1.12': + resolution: {integrity: sha512-O9LVEu5J/u/FuNlZs+L7Ikn3lz7VB9hb0GtPT9MQeiBmtK8RSY3ULmsZgXhe6VAlgTw0YO+paQx4p8xdbs43vQ==} + engines: {node: '>=16.0.0'} + '@smithy/node-http-handler@2.4.0': resolution: {integrity: sha512-Mf2f7MMy31W8LisJ9O+7J5cKiNwBwBBLU6biQ7/sFSFdhuOxPN7hOPoZ8vlaFjvrpfOUJw9YOpjGyNTKuvomOQ==} engines: {node: '>=14.0.0'} + '@smithy/node-http-handler@3.3.2': + resolution: {integrity: sha512-t4ng1DAd527vlxvOfKFYEe6/QFBcsj7WpNlWTyjorwXXcKw3XlltBGbyHfSJ24QT84nF+agDha9tNYpzmSRZPA==} + engines: {node: '>=16.0.0'} + '@smithy/property-provider@2.1.2': resolution: {integrity: sha512-yaXCVFKzxbSXqOoyA7AdAgXhwdjiLeui7n2P6XLjBCz/GZFdLUJgSY6KL1PevaxT4REMwUSs/bSHAe/0jdzEHw==} engines: {node: '>=14.0.0'} + '@smithy/property-provider@3.1.11': + resolution: {integrity: sha512-I/+TMc4XTQ3QAjXfOcUWbSS073oOEAxgx4aZy8jHaf8JQnRkq2SZWw8+PfDtBvLUjcGMdxl+YwtzWe6i5uhL/A==} + engines: {node: '>=16.0.0'} + '@smithy/protocol-http@3.2.0': resolution: {integrity: sha512-VRp0YITYIQum+rX4zeZ3cW1wl9r90IQzQN+VLS1NxdSMt6NLsJiJqR9czTxlaeWNrLHsFAETmjmdrS48Ug1liA==} engines: {node: '>=14.0.0'} + '@smithy/protocol-http@4.1.8': + resolution: {integrity: sha512-hmgIAVyxw1LySOwkgMIUN0kjN8TG9Nc85LJeEmEE/cNEe2rkHDUWhnJf2gxcSRFLWsyqWsrZGw40ROjUogg+Iw==} + engines: {node: '>=16.0.0'} + '@smithy/querystring-builder@2.1.2': resolution: {integrity: sha512-wk6QpuvBBLJF5w8aADsZOtxaHY9cF5MZe1Ry3hSqqBxARdUrMoXi/jukUz5W0ftXGlbA398IN8dIIUj3WXqJXg==} engines: {node: '>=14.0.0'} + '@smithy/querystring-builder@3.0.11': + resolution: {integrity: sha512-u+5HV/9uJaeLj5XTb6+IEF/dokWWkEqJ0XiaRRogyREmKGUgZnNecLucADLdauWFKUNbQfulHFEZEdjwEBjXRg==} + engines: {node: '>=16.0.0'} + '@smithy/querystring-parser@2.1.2': resolution: {integrity: sha512-z1yL5Iiagm/UxVy1tcuTFZdfOBK/QtYeK6wfClAJ7cOY7kIaYR6jn1cVXXJmhAQSh1b2ljP4xiZN4Ybj7Tbs5w==} engines: {node: '>=14.0.0'} + '@smithy/querystring-parser@3.0.11': + resolution: {integrity: sha512-Je3kFvCsFMnso1ilPwA7GtlbPaTixa3WwC+K21kmMZHsBEOZYQaqxcMqeFFoU7/slFjKDIpiiPydvdJm8Q/MCw==} + engines: {node: '>=16.0.0'} + '@smithy/service-error-classification@2.1.2': resolution: {integrity: sha512-R+gL1pAPuWkH6unFridk57wDH5PFY2IlVg2NUjSAjoaIaU+sxqKf/7AOWIcx9Bdn+xY0/4IRQ69urlC+F3I9gg==} engines: {node: '>=14.0.0'} + '@smithy/service-error-classification@3.0.11': + resolution: {integrity: sha512-QnYDPkyewrJzCyaeI2Rmp7pDwbUETe+hU8ADkXmgNusO1bgHBH7ovXJiYmba8t0fNfJx75fE8dlM6SEmZxheog==} + engines: {node: '>=16.0.0'} + '@smithy/shared-ini-file-loader@2.3.2': resolution: {integrity: sha512-idHGDJB+gBh+aaIjmWj6agmtNWftoyAenErky74hAtKyUaCvfocSBgEJ2pQ6o68svBluvGIj4NGFgJu0198mow==} engines: {node: '>=14.0.0'} + '@smithy/shared-ini-file-loader@3.1.12': + resolution: {integrity: sha512-1xKSGI+U9KKdbG2qDvIR9dGrw3CNx+baqJfyr0igKEpjbHL5stsqAesYBzHChYHlelWtb87VnLWlhvfCz13H8Q==} + engines: {node: '>=16.0.0'} + '@smithy/signature-v4@2.1.2': resolution: {integrity: sha512-DdPWaNGIbxzyocR3ncH8xlxQgsqteRADEdCPoivgBzwv17UzKy2obtdi2vwNc5lAJ955bGEkkWef9O7kc1Eocg==} engines: {node: '>=14.0.0'} + '@smithy/signature-v4@4.2.4': + resolution: {integrity: sha512-5JWeMQYg81TgU4cG+OexAWdvDTs5JDdbEZx+Qr1iPbvo91QFGzjy0IkXAKaXUHqmKUJgSHK0ZxnCkgZpzkeNTA==} + engines: {node: '>=16.0.0'} + '@smithy/smithy-client@2.4.0': resolution: {integrity: sha512-6/jxk0om9l2s9BcgHtrBn+Hd3xcFGDzxfEJ2FvGpZxIz0S7bgvZg1gyR66O1xf1w9WZBH+W7JClhfSn2gETINw==} engines: {node: '>=14.0.0'} + '@smithy/smithy-client@3.5.0': + resolution: {integrity: sha512-Y8FeOa7gbDfCWf7njrkoRATPa5eNLUEjlJS5z5rXatYuGkCb80LbHcu8AQR8qgAZZaNHCLyo2N+pxPsV7l+ivg==} + engines: {node: '>=16.0.0'} + '@smithy/types@2.10.0': resolution: {integrity: sha512-QYXQmpIebS8/jYXgyJjCanKZbI4Rr8tBVGBAIdDhA35f025TVjJNW69FJ0TGiDqt+lIGo037YIswq2t2Y1AYZQ==} engines: {node: '>=14.0.0'} + '@smithy/types@3.7.2': + resolution: {integrity: sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==} + engines: {node: '>=16.0.0'} + '@smithy/url-parser@2.1.2': resolution: {integrity: sha512-KBPi740ciTujUaY+RfQuPABD0QFmgSBN5qNVDCGTryfsbG4jkwC0YnElSzi72m24HegMyxzZDLG4Oh4/97mw2g==} + '@smithy/url-parser@3.0.11': + resolution: {integrity: sha512-TmlqXkSk8ZPhfc+SQutjmFr5FjC0av3GZP4B/10caK1SbRwe/v+Wzu/R6xEKxoNqL+8nY18s1byiy6HqPG37Aw==} + '@smithy/util-base64@2.1.1': resolution: {integrity: sha512-UfHVpY7qfF/MrgndI5PexSKVTxSZIdz9InghTFa49QOvuu9I52zLPLUHXvHpNuMb1iD2vmc6R+zbv/bdMipR/g==} engines: {node: '>=14.0.0'} + '@smithy/util-base64@3.0.0': + resolution: {integrity: sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==} + engines: {node: '>=16.0.0'} + '@smithy/util-body-length-browser@2.1.1': resolution: {integrity: sha512-ekOGBLvs1VS2d1zM2ER4JEeBWAvIOUKeaFch29UjjJsxmZ/f0L3K3x0dEETgh3Q9bkZNHgT+rkdl/J/VUqSRag==} + '@smithy/util-body-length-browser@3.0.0': + resolution: {integrity: sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==} + '@smithy/util-body-length-node@2.2.1': resolution: {integrity: sha512-/ggJG+ta3IDtpNVq4ktmEUtOkH1LW64RHB5B0hcr5ZaWBmo96UX2cIOVbjCqqDickTXqBWZ4ZO0APuaPrD7Abg==} engines: {node: '>=14.0.0'} + '@smithy/util-body-length-node@3.0.0': + resolution: {integrity: sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==} + engines: {node: '>=16.0.0'} + '@smithy/util-buffer-from@2.1.1': resolution: {integrity: sha512-clhNjbyfqIv9Md2Mg6FffGVrJxw7bgK7s3Iax36xnfVj6cg0fUG7I4RH0XgXJF8bxi+saY5HR21g2UPKSxVCXg==} engines: {node: '>=14.0.0'} + '@smithy/util-buffer-from@3.0.0': + resolution: {integrity: sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==} + engines: {node: '>=16.0.0'} + '@smithy/util-config-provider@2.2.1': resolution: {integrity: sha512-50VL/tx9oYYcjJn/qKqNy7sCtpD0+s8XEBamIFo4mFFTclKMNp+rsnymD796uybjiIquB7VCB/DeafduL0y2kw==} engines: {node: '>=14.0.0'} + '@smithy/util-config-provider@3.0.0': + resolution: {integrity: sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==} + engines: {node: '>=16.0.0'} + '@smithy/util-defaults-mode-browser@2.1.2': resolution: {integrity: sha512-YmojdmsE7VbvFGJ/8btn/5etLm1HOQkgVX6nMWlB0yBL/Vb//s3aTebUJ66zj2+LNrBS3B9S+18+LQU72Yj0AQ==} engines: {node: '>= 10.0.0'} + '@smithy/util-defaults-mode-browser@3.0.30': + resolution: {integrity: sha512-nLuGmgfcr0gzm64pqF2UT4SGWVG8UGviAdayDlVzJPNa6Z4lqvpDzdRXmLxtOdEjVlTOEdpZ9dd3ZMMu488mzg==} + engines: {node: '>= 10.0.0'} + '@smithy/util-defaults-mode-node@2.2.1': resolution: {integrity: sha512-kof7M9Q2qP5yaQn8hHJL3KwozyvIfLe+ys7feifSul6gBAAeoraibo/MWqotb/I0fVLMlCMDwn7WXFsGUwnsew==} engines: {node: '>= 10.0.0'} + '@smithy/util-defaults-mode-node@3.0.30': + resolution: {integrity: sha512-OD63eWoH68vp75mYcfYyuVH+p7Li/mY4sYOROnauDrtObo1cS4uWfsy/zhOTW8F8ZPxQC1ZXZKVxoxvMGUv2Ow==} + engines: {node: '>= 10.0.0'} + '@smithy/util-endpoints@1.1.2': resolution: {integrity: sha512-2/REfdcJ20y9iF+9kSBRBsaoGzjT5dZ3E6/TA45GHJuJAb/vZTj76VLTcrl2iN3fWXiDK1B8RxchaLGbr7RxxA==} engines: {node: '>= 14.0.0'} + '@smithy/util-endpoints@2.1.7': + resolution: {integrity: sha512-tSfcqKcN/Oo2STEYCABVuKgJ76nyyr6skGl9t15hs+YaiU06sgMkN7QYjo0BbVw+KT26zok3IzbdSOksQ4YzVw==} + engines: {node: '>=16.0.0'} + '@smithy/util-hex-encoding@2.1.1': resolution: {integrity: sha512-3UNdP2pkYUUBGEXzQI9ODTDK+Tcu1BlCyDBaRHwyxhA+8xLP8agEKQq4MGmpjqb4VQAjq9TwlCQX0kP6XDKYLg==} engines: {node: '>=14.0.0'} + '@smithy/util-hex-encoding@3.0.0': + resolution: {integrity: sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==} + engines: {node: '>=16.0.0'} + '@smithy/util-middleware@2.1.2': resolution: {integrity: sha512-lvSOnwQ7iAajtWb1nAyy0CkOIn8d+jGykQOtt2NXDsPzOTfejZM/Uph+O/TmVgWoXdcGuw5peUMG2f5xEIl6UQ==} engines: {node: '>=14.0.0'} + '@smithy/util-middleware@3.0.11': + resolution: {integrity: sha512-dWpyc1e1R6VoXrwLoLDd57U1z6CwNSdkM69Ie4+6uYh2GC7Vg51Qtan7ITzczuVpqezdDTKJGJB95fFvvjU/ow==} + engines: {node: '>=16.0.0'} + '@smithy/util-retry@2.1.2': resolution: {integrity: sha512-pqifOgRqwLfRu+ks3awEKKqPeYxrHLwo4Yu2EarGzeoarTd1LVEyyf5qLE6M7IiCsxnXRhn9FoWIdZOC+oC/VQ==} engines: {node: '>= 14.0.0'} + '@smithy/util-retry@3.0.11': + resolution: {integrity: sha512-hJUC6W7A3DQgaee3Hp9ZFcOxVDZzmBIRBPlUAk8/fSOEl7pE/aX7Dci0JycNOnm9Mfr0KV2XjIlUOcGWXQUdVQ==} + engines: {node: '>=16.0.0'} + '@smithy/util-stream@2.1.2': resolution: {integrity: sha512-AbGjvoSok7YeUKv9WRVRSChQfsufLR54YCAabTbaABRdIucywRQs29em0uAP6r4RLj+4aFZStWGYpFgT0P8UlQ==} engines: {node: '>=14.0.0'} + '@smithy/util-stream@3.3.2': + resolution: {integrity: sha512-sInAqdiVeisUGYAv/FrXpmJ0b4WTFmciTRqzhb7wVuem9BHvhIG7tpiYHLDWrl2stOokNZpTTGqz3mzB2qFwXg==} + engines: {node: '>=16.0.0'} + '@smithy/util-uri-escape@2.1.1': resolution: {integrity: sha512-saVzI1h6iRBUVSqtnlOnc9ssU09ypo7n+shdQ8hBTZno/9rZ3AuRYvoHInV57VF7Qn7B+pFJG7qTzFiHxWlWBw==} engines: {node: '>=14.0.0'} + '@smithy/util-uri-escape@3.0.0': + resolution: {integrity: sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==} + engines: {node: '>=16.0.0'} + '@smithy/util-utf8@2.1.1': resolution: {integrity: sha512-BqTpzYEcUMDwAKr7/mVRUtHDhs6ZoXDi9NypMvMfOr/+u1NW7JgqodPDECiiLboEm6bobcPcECxzjtQh865e9A==} engines: {node: '>=14.0.0'} + '@smithy/util-utf8@3.0.0': + resolution: {integrity: sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==} + engines: {node: '>=16.0.0'} + '@smithy/util-waiter@2.1.2': resolution: {integrity: sha512-yxLC57GBDmbDmrnH+vJxsrbV4/aYUucBONkSRLZyJIVFAl/QJH+O/h+phITHDaxVZCYZAcudYJw4ERE32BJM7g==} engines: {node: '>=14.0.0'} + '@smithy/util-waiter@3.2.0': + resolution: {integrity: sha512-PpjSboaDUE6yl+1qlg3Si57++e84oXdWGbuFUSAciXsVfEZJJJupR2Nb0QuXHiunt2vGR+1PTizOMvnUPaG2Qg==} + engines: {node: '>=16.0.0'} + '@stripe/react-stripe-js@1.16.5': resolution: {integrity: sha512-lVPW3IfwdacyS22pP+nBB6/GNFRRhT/4jfgAK6T2guQmtzPwJV1DogiGGaBNhiKtSY18+yS8KlHSu+PvZNclvQ==} peerDependencies: @@ -4282,12 +4666,15 @@ packages: '@types/express-serve-static-core@4.17.37': resolution: {integrity: sha512-ZohaCYTgGFcOP7u6aJOhY9uIZQgZ2vxC2yWoArY+FeDXlqeH66ZVBjgvg+RLVAS/DWNq4Ap9ZXu1+SUQiiWYMg==} - '@types/express@4.17.18': - resolution: {integrity: sha512-Sxv8BSLLgsBYmcnGdGjjEjqET2U+AKAdCRODmMiq02FgjwuV75Ut85DRpvFjyw/Mk0vgUOliGRU0UUmuuZHByQ==} + '@types/express-serve-static-core@5.0.2': + resolution: {integrity: sha512-vluaspfvWEtE4vcSDlKRNer52DvOGrB2xv6diXy6UKyKW0lqZiWHGNApSyxOv+8DE5Z27IzVvE7hNkxg7EXIcg==} '@types/express@4.17.21': resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} + '@types/express@5.0.0': + resolution: {integrity: sha512-DvZriSMehGHL1ZNLzi6MidnsDhUZM/x2pRdDIKdwbUNqqwHxMlRdkxtn6/EPKyqKpHqTl/4nRZsRNLpZxZRpPQ==} + '@types/gatsbyjs__reach-router@1.3.0': resolution: {integrity: sha512-7dfI9peaJk7TuIIaW8r6r8UaobvR+zqyc/x8pQpqwOFHCiLXl49TUxMoapFv1BQFAbT9UKrvlsijJk7X5r18lQ==} @@ -5100,6 +5487,9 @@ packages: array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + array-flatten@3.0.0: + resolution: {integrity: sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==} + array-includes@3.1.8: resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} engines: {node: '>= 0.4'} @@ -5541,6 +5931,10 @@ packages: resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + body-parser@2.0.0-beta.2: + resolution: {integrity: sha512-oxdqeGYQcO5ovwwkC1A89R0Mf0v3+7smTVh0chGfzDeiK37bg5bYNtXDy3Nmzn6CShoIYk5+nHTyBoSZIWwnCA==} + engines: {node: '>= 0.10'} + boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} @@ -6160,6 +6554,10 @@ packages: resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} engines: {node: '>= 0.6'} + cookie@0.6.0: + resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} + engines: {node: '>= 0.6'} + cookiejar@2.1.4: resolution: {integrity: sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==} @@ -7436,6 +7834,10 @@ packages: resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} engines: {node: '>= 0.10.0'} + express@5.0.0-beta.3: + resolution: {integrity: sha512-e7Qizw4gMBVe1Ky2oNi5C1h6oS8aWDcY2yYxvRMy5aMc6t2aqobuHpQRfR3LRC9NAW/c6081SeGWMGBorLXePg==} + engines: {node: '>= 4'} + ext@1.7.0: resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} @@ -7530,6 +7932,10 @@ packages: resolution: {integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==} hasBin: true + fast-xml-parser@4.4.1: + resolution: {integrity: sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==} + hasBin: true + fastest-levenshtein@1.0.16: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} engines: {node: '>= 4.9.1'} @@ -8508,6 +8914,10 @@ packages: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} + iconv-lite@0.5.2: + resolution: {integrity: sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag==} + engines: {node: '>=0.10.0'} + iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} @@ -10668,6 +11078,11 @@ packages: engines: {node: '>=8.10.0'} hasBin: true + nodemon@3.1.7: + resolution: {integrity: sha512-hLj7fuMow6f0lbB0cD14Lz2xNjwsyruH251Pk4t/yIitCFJbmY1myuLlHm/q06aST4jg6EgAh74PIBBrRqpVAQ==} + engines: {node: '>=10'} + hasBin: true + nopt@1.0.10: resolution: {integrity: sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==} hasBin: true @@ -11114,6 +11529,9 @@ packages: path-to-regexp@2.2.1: resolution: {integrity: sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==} + path-to-regexp@3.2.0: + resolution: {integrity: sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==} + path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -11724,6 +12142,10 @@ packages: resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} engines: {node: '>= 0.8'} + raw-body@3.0.0-beta.1: + resolution: {integrity: sha512-XlSTHr67bCjSo5aOfAnN3x507zGvi3unF65BW57limYkc2ws/XB0mLUtJvvP7JGFeSPsYrlCv1ZrPGh0cwDxPQ==} + engines: {node: '>= 0.8'} + raw-loader@4.0.2: resolution: {integrity: sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==} engines: {node: '>= 10.13.0'} @@ -12272,6 +12694,10 @@ packages: engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true + router@2.0.0-beta.2: + resolution: {integrity: sha512-ascmzrv4IAB64SpWzFwYOA+jz6PaUbrzHLPsQrPjQ3uQTL2qlhwY9S2sRvvBMgUISQptQG457jcWWcWqtwrbag==} + engines: {node: '>= 0.10'} + rst-selector-parser@2.2.3: resolution: {integrity: sha512-nDG1rZeP6oFTLN6yNDV/uiAvs1+FS/KlrEwh7+y7dpuApDBy6bI2HTBcc0/V8lv9OTqfyD34eF7au2pm8aBbhA==} @@ -12422,6 +12848,10 @@ packages: resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} engines: {node: '>= 0.8.0'} + send@1.0.0-beta.2: + resolution: {integrity: sha512-k1yHu/FNK745PULKdsGpQ+bVSXYNwSk+bWnYzbxGZbt5obZc0JKDVANsCRuJD1X/EG15JtP9eZpwxkhUxIYEcg==} + engines: {node: '>= 0.10'} + send@1.1.0: resolution: {integrity: sha512-v67WcEouB5GxbTWL/4NeToqcZiAWEq90N888fczVArY8A79J0L4FD7vj5hm3eUMua5EpoQ59wa/oovY6TLvRUA==} engines: {node: '>= 18'} @@ -12450,6 +12880,10 @@ packages: resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} engines: {node: '>= 0.8.0'} + serve-static@2.0.0-beta.2: + resolution: {integrity: sha512-Ge718g4UJjzYoXFEGLY/VLSuTHp0kQcUV65QA98J8d3XREsVIHu53GBh9NWjDy4u2xwsSwRzu9nu7Q+b4o6Xyw==} + engines: {node: '>= 0.10'} + serve@13.0.4: resolution: {integrity: sha512-Lj8rhXmphJCRQVv5qwu0NQZ2h+0MrRyRJxDZu5y3qLH2i/XY6a0FPj/VmjMUdkJb672MBfE8hJ274PU6JzBd0Q==} hasBin: true @@ -12592,6 +13026,10 @@ packages: resolution: {integrity: sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==} engines: {node: '>=8.10.0'} + simple-update-notifier@2.0.0: + resolution: {integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==} + engines: {node: '>=10'} + single-trailing-newline@1.0.0: resolution: {integrity: sha512-92j7GTWZUsnzRgU3NTJ6l9InTLJLMFugk/3k2FGIBEfcFj8HZnPZwu59OXzzlIr5a5lV3bVO4R1jvFO4gp6clA==} @@ -12837,6 +13275,10 @@ packages: stream-splicer@2.0.1: resolution: {integrity: sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==} + stream-wormhole@1.1.0: + resolution: {integrity: sha512-gHFfL3px0Kctd6Po0M8TzEvt3De/xu6cnRrjlfYNhwbhLPLwigI2t1nc6jrzNuaYg5C4YF78PPFuQPzRiqn9ew==} + engines: {node: '>=4.0.0'} + streamsearch@0.1.2: resolution: {integrity: sha512-jos8u++JKm0ARcSUTAZXOVC0mSox7Bhn6sBgty73P1f3JGf7yG2clTbBNHUdde/kdvP2FESam+vM6l8jBrNxHA==} engines: {node: '>=0.8.0'} @@ -13524,6 +13966,11 @@ packages: engines: {node: '>=14.17'} hasBin: true + typescript@5.7.2: + resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} + engines: {node: '>=14.17'} + hasBin: true + typescript@5.7.3: resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} engines: {node: '>=14.17'} @@ -14456,10 +14903,31 @@ snapshots: '@aws-sdk/types': 3.521.0 tslib: 1.14.1 + '@aws-crypto/crc32@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.696.0 + tslib: 2.6.2 + + '@aws-crypto/crc32c@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.696.0 + tslib: 2.6.2 + '@aws-crypto/ie11-detection@3.0.0': dependencies: tslib: 1.14.1 + '@aws-crypto/sha1-browser@5.2.0': + dependencies: + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.696.0 + '@aws-sdk/util-locate-window': 3.310.0 + '@smithy/util-utf8': 2.1.1 + tslib: 2.6.2 + '@aws-crypto/sha256-browser@3.0.0': dependencies: '@aws-crypto/ie11-detection': 3.0.0 @@ -14471,22 +14939,48 @@ snapshots: '@aws-sdk/util-utf8-browser': 3.259.0 tslib: 1.14.1 + '@aws-crypto/sha256-browser@5.2.0': + dependencies: + '@aws-crypto/sha256-js': 5.2.0 + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.696.0 + '@aws-sdk/util-locate-window': 3.310.0 + '@smithy/util-utf8': 2.1.1 + tslib: 2.6.2 + '@aws-crypto/sha256-js@3.0.0': dependencies: '@aws-crypto/util': 3.0.0 '@aws-sdk/types': 3.521.0 tslib: 1.14.1 + '@aws-crypto/sha256-js@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.696.0 + tslib: 2.6.2 + '@aws-crypto/supports-web-crypto@3.0.0': dependencies: tslib: 1.14.1 + '@aws-crypto/supports-web-crypto@5.2.0': + dependencies: + tslib: 2.6.2 + '@aws-crypto/util@3.0.0': dependencies: '@aws-sdk/types': 3.521.0 '@aws-sdk/util-utf8-browser': 3.259.0 tslib: 1.14.1 + '@aws-crypto/util@5.2.0': + dependencies: + '@aws-sdk/types': 3.696.0 + '@smithy/util-utf8': 2.1.1 + tslib: 2.6.2 + '@aws-sdk/client-cognito-identity@3.521.0': dependencies: '@aws-crypto/sha256-browser': 3.0.0 @@ -14533,6 +15027,69 @@ snapshots: - aws-crt optional: true + '@aws-sdk/client-s3@3.705.0': + dependencies: + '@aws-crypto/sha1-browser': 5.2.0 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sso-oidc': 3.699.0(@aws-sdk/client-sts@3.699.0) + '@aws-sdk/client-sts': 3.699.0 + '@aws-sdk/core': 3.696.0 + '@aws-sdk/credential-provider-node': 3.699.0(@aws-sdk/client-sso-oidc@3.699.0(@aws-sdk/client-sts@3.699.0))(@aws-sdk/client-sts@3.699.0) + '@aws-sdk/middleware-bucket-endpoint': 3.696.0 + '@aws-sdk/middleware-expect-continue': 3.696.0 + '@aws-sdk/middleware-flexible-checksums': 3.701.0 + '@aws-sdk/middleware-host-header': 3.696.0 + '@aws-sdk/middleware-location-constraint': 3.696.0 + '@aws-sdk/middleware-logger': 3.696.0 + '@aws-sdk/middleware-recursion-detection': 3.696.0 + '@aws-sdk/middleware-sdk-s3': 3.696.0 + '@aws-sdk/middleware-ssec': 3.696.0 + '@aws-sdk/middleware-user-agent': 3.696.0 + '@aws-sdk/region-config-resolver': 3.696.0 + '@aws-sdk/signature-v4-multi-region': 3.696.0 + '@aws-sdk/types': 3.696.0 + '@aws-sdk/util-endpoints': 3.696.0 + '@aws-sdk/util-user-agent-browser': 3.696.0 + '@aws-sdk/util-user-agent-node': 3.696.0 + '@aws-sdk/xml-builder': 3.696.0 + '@smithy/config-resolver': 3.0.13 + '@smithy/core': 2.5.5 + '@smithy/eventstream-serde-browser': 3.0.14 + '@smithy/eventstream-serde-config-resolver': 3.0.11 + '@smithy/eventstream-serde-node': 3.0.13 + '@smithy/fetch-http-handler': 4.1.2 + '@smithy/hash-blob-browser': 3.1.10 + '@smithy/hash-node': 3.0.11 + '@smithy/hash-stream-node': 3.1.10 + '@smithy/invalid-dependency': 3.0.11 + '@smithy/md5-js': 3.0.11 + '@smithy/middleware-content-length': 3.0.13 + '@smithy/middleware-endpoint': 3.2.5 + '@smithy/middleware-retry': 3.0.30 + '@smithy/middleware-serde': 3.0.11 + '@smithy/middleware-stack': 3.0.11 + '@smithy/node-config-provider': 3.1.12 + '@smithy/node-http-handler': 3.3.2 + '@smithy/protocol-http': 4.1.8 + '@smithy/smithy-client': 3.5.0 + '@smithy/types': 3.7.2 + '@smithy/url-parser': 3.0.11 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.30 + '@smithy/util-defaults-mode-node': 3.0.30 + '@smithy/util-endpoints': 2.1.7 + '@smithy/util-middleware': 3.0.11 + '@smithy/util-retry': 3.0.11 + '@smithy/util-stream': 3.3.2 + '@smithy/util-utf8': 3.0.0 + '@smithy/util-waiter': 3.2.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/client-ses@3.521.0': dependencies: '@aws-crypto/sha256-browser': 3.0.0 @@ -14625,6 +15182,51 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/client-sso-oidc@3.699.0(@aws-sdk/client-sts@3.699.0)': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sts': 3.699.0 + '@aws-sdk/core': 3.696.0 + '@aws-sdk/credential-provider-node': 3.699.0(@aws-sdk/client-sso-oidc@3.699.0(@aws-sdk/client-sts@3.699.0))(@aws-sdk/client-sts@3.699.0) + '@aws-sdk/middleware-host-header': 3.696.0 + '@aws-sdk/middleware-logger': 3.696.0 + '@aws-sdk/middleware-recursion-detection': 3.696.0 + '@aws-sdk/middleware-user-agent': 3.696.0 + '@aws-sdk/region-config-resolver': 3.696.0 + '@aws-sdk/types': 3.696.0 + '@aws-sdk/util-endpoints': 3.696.0 + '@aws-sdk/util-user-agent-browser': 3.696.0 + '@aws-sdk/util-user-agent-node': 3.696.0 + '@smithy/config-resolver': 3.0.13 + '@smithy/core': 2.5.5 + '@smithy/fetch-http-handler': 4.1.2 + '@smithy/hash-node': 3.0.11 + '@smithy/invalid-dependency': 3.0.11 + '@smithy/middleware-content-length': 3.0.13 + '@smithy/middleware-endpoint': 3.2.5 + '@smithy/middleware-retry': 3.0.30 + '@smithy/middleware-serde': 3.0.11 + '@smithy/middleware-stack': 3.0.11 + '@smithy/node-config-provider': 3.1.12 + '@smithy/node-http-handler': 3.3.2 + '@smithy/protocol-http': 4.1.8 + '@smithy/smithy-client': 3.5.0 + '@smithy/types': 3.7.2 + '@smithy/url-parser': 3.0.11 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.30 + '@smithy/util-defaults-mode-node': 3.0.30 + '@smithy/util-endpoints': 2.1.7 + '@smithy/util-middleware': 3.0.11 + '@smithy/util-retry': 3.0.11 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/client-sso@3.521.0': dependencies: '@aws-crypto/sha256-browser': 3.0.0 @@ -14668,6 +15270,49 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/client-sso@3.696.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.696.0 + '@aws-sdk/middleware-host-header': 3.696.0 + '@aws-sdk/middleware-logger': 3.696.0 + '@aws-sdk/middleware-recursion-detection': 3.696.0 + '@aws-sdk/middleware-user-agent': 3.696.0 + '@aws-sdk/region-config-resolver': 3.696.0 + '@aws-sdk/types': 3.696.0 + '@aws-sdk/util-endpoints': 3.696.0 + '@aws-sdk/util-user-agent-browser': 3.696.0 + '@aws-sdk/util-user-agent-node': 3.696.0 + '@smithy/config-resolver': 3.0.13 + '@smithy/core': 2.5.5 + '@smithy/fetch-http-handler': 4.1.2 + '@smithy/hash-node': 3.0.11 + '@smithy/invalid-dependency': 3.0.11 + '@smithy/middleware-content-length': 3.0.13 + '@smithy/middleware-endpoint': 3.2.5 + '@smithy/middleware-retry': 3.0.30 + '@smithy/middleware-serde': 3.0.11 + '@smithy/middleware-stack': 3.0.11 + '@smithy/node-config-provider': 3.1.12 + '@smithy/node-http-handler': 3.3.2 + '@smithy/protocol-http': 4.1.8 + '@smithy/smithy-client': 3.5.0 + '@smithy/types': 3.7.2 + '@smithy/url-parser': 3.0.11 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.30 + '@smithy/util-defaults-mode-node': 3.0.30 + '@smithy/util-endpoints': 2.1.7 + '@smithy/util-middleware': 3.0.11 + '@smithy/util-retry': 3.0.11 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/client-sts@3.521.0(@aws-sdk/credential-provider-node@3.521.0)': dependencies: '@aws-crypto/sha256-browser': 3.0.0 @@ -14713,6 +15358,51 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/client-sts@3.699.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sso-oidc': 3.699.0(@aws-sdk/client-sts@3.699.0) + '@aws-sdk/core': 3.696.0 + '@aws-sdk/credential-provider-node': 3.699.0(@aws-sdk/client-sso-oidc@3.699.0(@aws-sdk/client-sts@3.699.0))(@aws-sdk/client-sts@3.699.0) + '@aws-sdk/middleware-host-header': 3.696.0 + '@aws-sdk/middleware-logger': 3.696.0 + '@aws-sdk/middleware-recursion-detection': 3.696.0 + '@aws-sdk/middleware-user-agent': 3.696.0 + '@aws-sdk/region-config-resolver': 3.696.0 + '@aws-sdk/types': 3.696.0 + '@aws-sdk/util-endpoints': 3.696.0 + '@aws-sdk/util-user-agent-browser': 3.696.0 + '@aws-sdk/util-user-agent-node': 3.696.0 + '@smithy/config-resolver': 3.0.13 + '@smithy/core': 2.5.5 + '@smithy/fetch-http-handler': 4.1.2 + '@smithy/hash-node': 3.0.11 + '@smithy/invalid-dependency': 3.0.11 + '@smithy/middleware-content-length': 3.0.13 + '@smithy/middleware-endpoint': 3.2.5 + '@smithy/middleware-retry': 3.0.30 + '@smithy/middleware-serde': 3.0.11 + '@smithy/middleware-stack': 3.0.11 + '@smithy/node-config-provider': 3.1.12 + '@smithy/node-http-handler': 3.3.2 + '@smithy/protocol-http': 4.1.8 + '@smithy/smithy-client': 3.5.0 + '@smithy/types': 3.7.2 + '@smithy/url-parser': 3.0.11 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.30 + '@smithy/util-defaults-mode-node': 3.0.30 + '@smithy/util-endpoints': 2.1.7 + '@smithy/util-middleware': 3.0.11 + '@smithy/util-retry': 3.0.11 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/core@3.521.0': dependencies: '@smithy/core': 1.3.3 @@ -14722,6 +15412,20 @@ snapshots: '@smithy/types': 2.10.0 tslib: 2.6.2 + '@aws-sdk/core@3.696.0': + dependencies: + '@aws-sdk/types': 3.696.0 + '@smithy/core': 2.5.5 + '@smithy/node-config-provider': 3.1.12 + '@smithy/property-provider': 3.1.11 + '@smithy/protocol-http': 4.1.8 + '@smithy/signature-v4': 4.2.4 + '@smithy/smithy-client': 3.5.0 + '@smithy/types': 3.7.2 + '@smithy/util-middleware': 3.0.11 + fast-xml-parser: 4.4.1 + tslib: 2.6.2 + '@aws-sdk/credential-provider-cognito-identity@3.521.0': dependencies: '@aws-sdk/client-cognito-identity': 3.521.0 @@ -14740,6 +15444,14 @@ snapshots: '@smithy/types': 2.10.0 tslib: 2.6.2 + '@aws-sdk/credential-provider-env@3.696.0': + dependencies: + '@aws-sdk/core': 3.696.0 + '@aws-sdk/types': 3.696.0 + '@smithy/property-provider': 3.1.11 + '@smithy/types': 3.7.2 + tslib: 2.6.2 + '@aws-sdk/credential-provider-http@3.521.0': dependencies: '@aws-sdk/types': 3.521.0 @@ -14752,6 +15464,19 @@ snapshots: '@smithy/util-stream': 2.1.2 tslib: 2.6.2 + '@aws-sdk/credential-provider-http@3.696.0': + dependencies: + '@aws-sdk/core': 3.696.0 + '@aws-sdk/types': 3.696.0 + '@smithy/fetch-http-handler': 4.1.2 + '@smithy/node-http-handler': 3.3.2 + '@smithy/property-provider': 3.1.11 + '@smithy/protocol-http': 4.1.8 + '@smithy/smithy-client': 3.5.0 + '@smithy/types': 3.7.2 + '@smithy/util-stream': 3.3.2 + tslib: 2.6.2 + '@aws-sdk/credential-provider-ini@3.521.0(@aws-sdk/credential-provider-node@3.521.0)': dependencies: '@aws-sdk/client-sts': 3.521.0(@aws-sdk/credential-provider-node@3.521.0) @@ -14769,6 +15494,25 @@ snapshots: - '@aws-sdk/credential-provider-node' - aws-crt + '@aws-sdk/credential-provider-ini@3.699.0(@aws-sdk/client-sso-oidc@3.699.0(@aws-sdk/client-sts@3.699.0))(@aws-sdk/client-sts@3.699.0)': + dependencies: + '@aws-sdk/client-sts': 3.699.0 + '@aws-sdk/core': 3.696.0 + '@aws-sdk/credential-provider-env': 3.696.0 + '@aws-sdk/credential-provider-http': 3.696.0 + '@aws-sdk/credential-provider-process': 3.696.0 + '@aws-sdk/credential-provider-sso': 3.699.0(@aws-sdk/client-sso-oidc@3.699.0(@aws-sdk/client-sts@3.699.0)) + '@aws-sdk/credential-provider-web-identity': 3.696.0(@aws-sdk/client-sts@3.699.0) + '@aws-sdk/types': 3.696.0 + '@smithy/credential-provider-imds': 3.2.8 + '@smithy/property-provider': 3.1.11 + '@smithy/shared-ini-file-loader': 3.1.12 + '@smithy/types': 3.7.2 + tslib: 2.6.2 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - aws-crt + '@aws-sdk/credential-provider-node@3.521.0': dependencies: '@aws-sdk/credential-provider-env': 3.521.0 @@ -14786,6 +15530,25 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/credential-provider-node@3.699.0(@aws-sdk/client-sso-oidc@3.699.0(@aws-sdk/client-sts@3.699.0))(@aws-sdk/client-sts@3.699.0)': + dependencies: + '@aws-sdk/credential-provider-env': 3.696.0 + '@aws-sdk/credential-provider-http': 3.696.0 + '@aws-sdk/credential-provider-ini': 3.699.0(@aws-sdk/client-sso-oidc@3.699.0(@aws-sdk/client-sts@3.699.0))(@aws-sdk/client-sts@3.699.0) + '@aws-sdk/credential-provider-process': 3.696.0 + '@aws-sdk/credential-provider-sso': 3.699.0(@aws-sdk/client-sso-oidc@3.699.0(@aws-sdk/client-sts@3.699.0)) + '@aws-sdk/credential-provider-web-identity': 3.696.0(@aws-sdk/client-sts@3.699.0) + '@aws-sdk/types': 3.696.0 + '@smithy/credential-provider-imds': 3.2.8 + '@smithy/property-provider': 3.1.11 + '@smithy/shared-ini-file-loader': 3.1.12 + '@smithy/types': 3.7.2 + tslib: 2.6.2 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - '@aws-sdk/client-sts' + - aws-crt + '@aws-sdk/credential-provider-process@3.521.0': dependencies: '@aws-sdk/types': 3.521.0 @@ -14794,6 +15557,15 @@ snapshots: '@smithy/types': 2.10.0 tslib: 2.6.2 + '@aws-sdk/credential-provider-process@3.696.0': + dependencies: + '@aws-sdk/core': 3.696.0 + '@aws-sdk/types': 3.696.0 + '@smithy/property-provider': 3.1.11 + '@smithy/shared-ini-file-loader': 3.1.12 + '@smithy/types': 3.7.2 + tslib: 2.6.2 + '@aws-sdk/credential-provider-sso@3.521.0(@aws-sdk/credential-provider-node@3.521.0)': dependencies: '@aws-sdk/client-sso': 3.521.0 @@ -14807,6 +15579,20 @@ snapshots: - '@aws-sdk/credential-provider-node' - aws-crt + '@aws-sdk/credential-provider-sso@3.699.0(@aws-sdk/client-sso-oidc@3.699.0(@aws-sdk/client-sts@3.699.0))': + dependencies: + '@aws-sdk/client-sso': 3.696.0 + '@aws-sdk/core': 3.696.0 + '@aws-sdk/token-providers': 3.699.0(@aws-sdk/client-sso-oidc@3.699.0(@aws-sdk/client-sts@3.699.0)) + '@aws-sdk/types': 3.696.0 + '@smithy/property-provider': 3.1.11 + '@smithy/shared-ini-file-loader': 3.1.12 + '@smithy/types': 3.7.2 + tslib: 2.6.2 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - aws-crt + '@aws-sdk/credential-provider-web-identity@3.521.0(@aws-sdk/credential-provider-node@3.521.0)': dependencies: '@aws-sdk/client-sts': 3.521.0(@aws-sdk/credential-provider-node@3.521.0) @@ -14818,6 +15604,15 @@ snapshots: - '@aws-sdk/credential-provider-node' - aws-crt + '@aws-sdk/credential-provider-web-identity@3.696.0(@aws-sdk/client-sts@3.699.0)': + dependencies: + '@aws-sdk/client-sts': 3.699.0 + '@aws-sdk/core': 3.696.0 + '@aws-sdk/types': 3.696.0 + '@smithy/property-provider': 3.1.11 + '@smithy/types': 3.7.2 + tslib: 2.6.2 + '@aws-sdk/credential-providers@3.521.0': dependencies: '@aws-sdk/client-cognito-identity': 3.521.0 @@ -14840,6 +15635,39 @@ snapshots: - aws-crt optional: true + '@aws-sdk/middleware-bucket-endpoint@3.696.0': + dependencies: + '@aws-sdk/types': 3.696.0 + '@aws-sdk/util-arn-parser': 3.693.0 + '@smithy/node-config-provider': 3.1.12 + '@smithy/protocol-http': 4.1.8 + '@smithy/types': 3.7.2 + '@smithy/util-config-provider': 3.0.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-expect-continue@3.696.0': + dependencies: + '@aws-sdk/types': 3.696.0 + '@smithy/protocol-http': 4.1.8 + '@smithy/types': 3.7.2 + tslib: 2.6.2 + + '@aws-sdk/middleware-flexible-checksums@3.701.0': + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@aws-crypto/crc32c': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/core': 3.696.0 + '@aws-sdk/types': 3.696.0 + '@smithy/is-array-buffer': 3.0.0 + '@smithy/node-config-provider': 3.1.12 + '@smithy/protocol-http': 4.1.8 + '@smithy/types': 3.7.2 + '@smithy/util-middleware': 3.0.11 + '@smithy/util-stream': 3.3.2 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + '@aws-sdk/middleware-host-header@3.521.0': dependencies: '@aws-sdk/types': 3.521.0 @@ -14847,12 +15675,31 @@ snapshots: '@smithy/types': 2.10.0 tslib: 2.6.2 + '@aws-sdk/middleware-host-header@3.696.0': + dependencies: + '@aws-sdk/types': 3.696.0 + '@smithy/protocol-http': 4.1.8 + '@smithy/types': 3.7.2 + tslib: 2.6.2 + + '@aws-sdk/middleware-location-constraint@3.696.0': + dependencies: + '@aws-sdk/types': 3.696.0 + '@smithy/types': 3.7.2 + tslib: 2.6.2 + '@aws-sdk/middleware-logger@3.521.0': dependencies: '@aws-sdk/types': 3.521.0 '@smithy/types': 2.10.0 tslib: 2.6.2 + '@aws-sdk/middleware-logger@3.696.0': + dependencies: + '@aws-sdk/types': 3.696.0 + '@smithy/types': 3.7.2 + tslib: 2.6.2 + '@aws-sdk/middleware-recursion-detection@3.521.0': dependencies: '@aws-sdk/types': 3.521.0 @@ -14860,6 +15707,36 @@ snapshots: '@smithy/types': 2.10.0 tslib: 2.6.2 + '@aws-sdk/middleware-recursion-detection@3.696.0': + dependencies: + '@aws-sdk/types': 3.696.0 + '@smithy/protocol-http': 4.1.8 + '@smithy/types': 3.7.2 + tslib: 2.6.2 + + '@aws-sdk/middleware-sdk-s3@3.696.0': + dependencies: + '@aws-sdk/core': 3.696.0 + '@aws-sdk/types': 3.696.0 + '@aws-sdk/util-arn-parser': 3.693.0 + '@smithy/core': 2.5.5 + '@smithy/node-config-provider': 3.1.12 + '@smithy/protocol-http': 4.1.8 + '@smithy/signature-v4': 4.2.4 + '@smithy/smithy-client': 3.5.0 + '@smithy/types': 3.7.2 + '@smithy/util-config-provider': 3.0.0 + '@smithy/util-middleware': 3.0.11 + '@smithy/util-stream': 3.3.2 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + + '@aws-sdk/middleware-ssec@3.696.0': + dependencies: + '@aws-sdk/types': 3.696.0 + '@smithy/types': 3.7.2 + tslib: 2.6.2 + '@aws-sdk/middleware-user-agent@3.521.0': dependencies: '@aws-sdk/types': 3.521.0 @@ -14868,6 +15745,16 @@ snapshots: '@smithy/types': 2.10.0 tslib: 2.6.2 + '@aws-sdk/middleware-user-agent@3.696.0': + dependencies: + '@aws-sdk/core': 3.696.0 + '@aws-sdk/types': 3.696.0 + '@aws-sdk/util-endpoints': 3.696.0 + '@smithy/core': 2.5.5 + '@smithy/protocol-http': 4.1.8 + '@smithy/types': 3.7.2 + tslib: 2.6.2 + '@aws-sdk/region-config-resolver@3.521.0': dependencies: '@aws-sdk/types': 3.521.0 @@ -14877,6 +15764,24 @@ snapshots: '@smithy/util-middleware': 2.1.2 tslib: 2.6.2 + '@aws-sdk/region-config-resolver@3.696.0': + dependencies: + '@aws-sdk/types': 3.696.0 + '@smithy/node-config-provider': 3.1.12 + '@smithy/types': 3.7.2 + '@smithy/util-config-provider': 3.0.0 + '@smithy/util-middleware': 3.0.11 + tslib: 2.6.2 + + '@aws-sdk/signature-v4-multi-region@3.696.0': + dependencies: + '@aws-sdk/middleware-sdk-s3': 3.696.0 + '@aws-sdk/types': 3.696.0 + '@smithy/protocol-http': 4.1.8 + '@smithy/signature-v4': 4.2.4 + '@smithy/types': 3.7.2 + tslib: 2.6.2 + '@aws-sdk/token-providers@3.521.0(@aws-sdk/credential-provider-node@3.521.0)': dependencies: '@aws-sdk/client-sso-oidc': 3.521.0(@aws-sdk/credential-provider-node@3.521.0) @@ -14889,11 +15794,29 @@ snapshots: - '@aws-sdk/credential-provider-node' - aws-crt + '@aws-sdk/token-providers@3.699.0(@aws-sdk/client-sso-oidc@3.699.0(@aws-sdk/client-sts@3.699.0))': + dependencies: + '@aws-sdk/client-sso-oidc': 3.699.0(@aws-sdk/client-sts@3.699.0) + '@aws-sdk/types': 3.696.0 + '@smithy/property-provider': 3.1.11 + '@smithy/shared-ini-file-loader': 3.1.12 + '@smithy/types': 3.7.2 + tslib: 2.6.2 + '@aws-sdk/types@3.521.0': dependencies: '@smithy/types': 2.10.0 tslib: 2.6.2 + '@aws-sdk/types@3.696.0': + dependencies: + '@smithy/types': 3.7.2 + tslib: 2.6.2 + + '@aws-sdk/util-arn-parser@3.693.0': + dependencies: + tslib: 2.6.2 + '@aws-sdk/util-endpoints@3.521.0': dependencies: '@aws-sdk/types': 3.521.0 @@ -14901,6 +15824,13 @@ snapshots: '@smithy/util-endpoints': 1.1.2 tslib: 2.6.2 + '@aws-sdk/util-endpoints@3.696.0': + dependencies: + '@aws-sdk/types': 3.696.0 + '@smithy/types': 3.7.2 + '@smithy/util-endpoints': 2.1.7 + tslib: 2.6.2 + '@aws-sdk/util-locate-window@3.310.0': dependencies: tslib: 2.6.2 @@ -14912,6 +15842,13 @@ snapshots: bowser: 2.11.0 tslib: 2.6.2 + '@aws-sdk/util-user-agent-browser@3.696.0': + dependencies: + '@aws-sdk/types': 3.696.0 + '@smithy/types': 3.7.2 + bowser: 2.11.0 + tslib: 2.6.2 + '@aws-sdk/util-user-agent-node@3.521.0': dependencies: '@aws-sdk/types': 3.521.0 @@ -14919,10 +15856,23 @@ snapshots: '@smithy/types': 2.10.0 tslib: 2.6.2 + '@aws-sdk/util-user-agent-node@3.696.0': + dependencies: + '@aws-sdk/middleware-user-agent': 3.696.0 + '@aws-sdk/types': 3.696.0 + '@smithy/node-config-provider': 3.1.12 + '@smithy/types': 3.7.2 + tslib: 2.6.2 + '@aws-sdk/util-utf8-browser@3.259.0': dependencies: tslib: 2.6.2 + '@aws-sdk/xml-builder@3.696.0': + dependencies: + '@smithy/types': 3.7.2 + tslib: 2.6.2 + '@babel/cli@7.17.10(@babel/core@7.18.0)': dependencies: '@babel/core': 7.18.0 @@ -14983,7 +15933,7 @@ snapshots: '@babel/traverse': 7.25.6 '@babel/types': 7.25.6 convert-source-map: 1.9.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) gensync: 1.0.0-beta.2 json5: 2.2.3 lodash: 4.17.21 @@ -15006,7 +15956,7 @@ snapshots: '@babel/traverse': 7.23.0 '@babel/types': 7.23.0 convert-source-map: 1.9.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -15026,7 +15976,7 @@ snapshots: '@babel/traverse': 7.25.6 '@babel/types': 7.25.6 convert-source-map: 2.0.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -15046,7 +15996,7 @@ snapshots: '@babel/traverse': 7.23.7 '@babel/types': 7.23.9 convert-source-map: 2.0.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -15191,7 +16141,7 @@ snapshots: '@babel/core': 7.18.0 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) lodash.debounce: 4.0.8 resolve: 1.22.8 semver: 6.3.1 @@ -15203,7 +16153,7 @@ snapshots: '@babel/core': 7.23.0 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: @@ -15214,7 +16164,7 @@ snapshots: '@babel/core': 7.23.7 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: @@ -15225,7 +16175,7 @@ snapshots: '@babel/core': 7.23.0 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: @@ -15236,7 +16186,7 @@ snapshots: '@babel/core': 7.23.7 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: @@ -17297,7 +18247,7 @@ snapshots: '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.25.6 '@babel/types': 7.25.6 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -17312,7 +18262,7 @@ snapshots: '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.23.9 '@babel/types': 7.23.9 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -17327,7 +18277,7 @@ snapshots: '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.25.6 '@babel/types': 7.25.6 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -17339,7 +18289,7 @@ snapshots: '@babel/parser': 7.25.6 '@babel/template': 7.25.0 '@babel/types': 7.25.6 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -17351,7 +18301,7 @@ snapshots: '@babel/parser': 7.26.8 '@babel/template': 7.26.8 '@babel/types': 7.26.8 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -17597,7 +18547,7 @@ snapshots: '@eslint/config-array@0.19.2': dependencies: '@eslint/object-schema': 2.1.6 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -17609,7 +18559,7 @@ snapshots: '@eslint/eslintrc@0.4.3': dependencies: ajv: 6.12.6 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) espree: 7.3.1 globals: 13.22.0 ignore: 4.0.6 @@ -17623,7 +18573,7 @@ snapshots: '@eslint/eslintrc@3.2.0': dependencies: ajv: 6.12.6 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) espree: 10.3.0 globals: 14.0.0 ignore: 5.2.4 @@ -17658,6 +18608,8 @@ snapshots: ajv-formats: 2.1.1(ajv@8.12.0) fast-uri: 2.3.0 + '@fastify/busboy@3.1.1': {} + '@fastify/cookie@9.4.0': dependencies: cookie-signature: 1.2.1 @@ -17673,12 +18625,25 @@ snapshots: '@fastify/deepmerge@1.3.0': {} + '@fastify/deepmerge@2.0.2': {} + '@fastify/error@3.4.1': {} + '@fastify/error@4.0.0': {} + '@fastify/fast-json-stringify-compiler@4.3.0': dependencies: fast-json-stringify: 5.8.0 + '@fastify/multipart@8.3.1': + dependencies: + '@fastify/busboy': 3.1.1 + '@fastify/deepmerge': 2.0.2 + '@fastify/error': 4.0.0 + fastify-plugin: 4.5.1 + secure-json-parse: 2.7.0 + stream-wormhole: 1.1.0 + '@fastify/oauth2@7.8.1(patch_hash=fjqma2r6xxjavghcsvyjlkhmyy)': dependencies: '@fastify/cookie': 9.4.0 @@ -17977,7 +18942,7 @@ snapshots: '@humanwhocodes/config-array@0.5.0': dependencies: '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -18352,7 +19317,7 @@ snapshots: '@puppeteer/browsers@2.2.3': dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) extract-zip: 2.0.1 progress: 2.0.3 proxy-agent: 6.4.0 @@ -18634,6 +19599,20 @@ snapshots: '@smithy/types': 2.10.0 tslib: 2.6.2 + '@smithy/abort-controller@3.1.9': + dependencies: + '@smithy/types': 3.7.2 + tslib: 2.6.2 + + '@smithy/chunked-blob-reader-native@3.0.1': + dependencies: + '@smithy/util-base64': 3.0.0 + tslib: 2.6.2 + + '@smithy/chunked-blob-reader@4.0.0': + dependencies: + tslib: 2.6.2 + '@smithy/config-resolver@2.1.2': dependencies: '@smithy/node-config-provider': 2.2.2 @@ -18642,6 +19621,14 @@ snapshots: '@smithy/util-middleware': 2.1.2 tslib: 2.6.2 + '@smithy/config-resolver@3.0.13': + dependencies: + '@smithy/node-config-provider': 3.1.12 + '@smithy/types': 3.7.2 + '@smithy/util-config-provider': 3.0.0 + '@smithy/util-middleware': 3.0.11 + tslib: 2.6.2 + '@smithy/core@1.3.3': dependencies: '@smithy/middleware-endpoint': 2.4.2 @@ -18653,6 +19640,17 @@ snapshots: '@smithy/util-middleware': 2.1.2 tslib: 2.6.2 + '@smithy/core@2.5.5': + dependencies: + '@smithy/middleware-serde': 3.0.11 + '@smithy/protocol-http': 4.1.8 + '@smithy/types': 3.7.2 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-middleware': 3.0.11 + '@smithy/util-stream': 3.3.2 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + '@smithy/credential-provider-imds@2.2.2': dependencies: '@smithy/node-config-provider': 2.2.2 @@ -18661,6 +19659,14 @@ snapshots: '@smithy/url-parser': 2.1.2 tslib: 2.6.2 + '@smithy/credential-provider-imds@3.2.8': + dependencies: + '@smithy/node-config-provider': 3.1.12 + '@smithy/property-provider': 3.1.11 + '@smithy/types': 3.7.2 + '@smithy/url-parser': 3.0.11 + tslib: 2.6.2 + '@smithy/eventstream-codec@2.1.2': dependencies: '@aws-crypto/crc32': 3.0.0 @@ -18668,6 +19674,36 @@ snapshots: '@smithy/util-hex-encoding': 2.1.1 tslib: 2.6.2 + '@smithy/eventstream-codec@3.1.10': + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@smithy/types': 3.7.2 + '@smithy/util-hex-encoding': 3.0.0 + tslib: 2.6.2 + + '@smithy/eventstream-serde-browser@3.0.14': + dependencies: + '@smithy/eventstream-serde-universal': 3.0.13 + '@smithy/types': 3.7.2 + tslib: 2.6.2 + + '@smithy/eventstream-serde-config-resolver@3.0.11': + dependencies: + '@smithy/types': 3.7.2 + tslib: 2.6.2 + + '@smithy/eventstream-serde-node@3.0.13': + dependencies: + '@smithy/eventstream-serde-universal': 3.0.13 + '@smithy/types': 3.7.2 + tslib: 2.6.2 + + '@smithy/eventstream-serde-universal@3.0.13': + dependencies: + '@smithy/eventstream-codec': 3.1.10 + '@smithy/types': 3.7.2 + tslib: 2.6.2 + '@smithy/fetch-http-handler@2.4.2': dependencies: '@smithy/protocol-http': 3.2.0 @@ -18676,6 +19712,21 @@ snapshots: '@smithy/util-base64': 2.1.1 tslib: 2.6.2 + '@smithy/fetch-http-handler@4.1.2': + dependencies: + '@smithy/protocol-http': 4.1.8 + '@smithy/querystring-builder': 3.0.11 + '@smithy/types': 3.7.2 + '@smithy/util-base64': 3.0.0 + tslib: 2.6.2 + + '@smithy/hash-blob-browser@3.1.10': + dependencies: + '@smithy/chunked-blob-reader': 4.0.0 + '@smithy/chunked-blob-reader-native': 3.0.1 + '@smithy/types': 3.7.2 + tslib: 2.6.2 + '@smithy/hash-node@2.1.2': dependencies: '@smithy/types': 2.10.0 @@ -18683,21 +19734,55 @@ snapshots: '@smithy/util-utf8': 2.1.1 tslib: 2.6.2 + '@smithy/hash-node@3.0.11': + dependencies: + '@smithy/types': 3.7.2 + '@smithy/util-buffer-from': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + + '@smithy/hash-stream-node@3.1.10': + dependencies: + '@smithy/types': 3.7.2 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + '@smithy/invalid-dependency@2.1.2': dependencies: '@smithy/types': 2.10.0 tslib: 2.6.2 + '@smithy/invalid-dependency@3.0.11': + dependencies: + '@smithy/types': 3.7.2 + tslib: 2.6.2 + '@smithy/is-array-buffer@2.1.1': dependencies: tslib: 2.6.2 + '@smithy/is-array-buffer@3.0.0': + dependencies: + tslib: 2.6.2 + + '@smithy/md5-js@3.0.11': + dependencies: + '@smithy/types': 3.7.2 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + '@smithy/middleware-content-length@2.1.2': dependencies: '@smithy/protocol-http': 3.2.0 '@smithy/types': 2.10.0 tslib: 2.6.2 + '@smithy/middleware-content-length@3.0.13': + dependencies: + '@smithy/protocol-http': 4.1.8 + '@smithy/types': 3.7.2 + tslib: 2.6.2 + '@smithy/middleware-endpoint@2.4.2': dependencies: '@smithy/middleware-serde': 2.1.2 @@ -18708,6 +19793,17 @@ snapshots: '@smithy/util-middleware': 2.1.2 tslib: 2.6.2 + '@smithy/middleware-endpoint@3.2.5': + dependencies: + '@smithy/core': 2.5.5 + '@smithy/middleware-serde': 3.0.11 + '@smithy/node-config-provider': 3.1.12 + '@smithy/shared-ini-file-loader': 3.1.12 + '@smithy/types': 3.7.2 + '@smithy/url-parser': 3.0.11 + '@smithy/util-middleware': 3.0.11 + tslib: 2.6.2 + '@smithy/middleware-retry@2.1.2': dependencies: '@smithy/node-config-provider': 2.2.2 @@ -18720,16 +19816,38 @@ snapshots: tslib: 2.6.2 uuid: 8.3.2 + '@smithy/middleware-retry@3.0.30': + dependencies: + '@smithy/node-config-provider': 3.1.12 + '@smithy/protocol-http': 4.1.8 + '@smithy/service-error-classification': 3.0.11 + '@smithy/smithy-client': 3.5.0 + '@smithy/types': 3.7.2 + '@smithy/util-middleware': 3.0.11 + '@smithy/util-retry': 3.0.11 + tslib: 2.6.2 + uuid: 9.0.1 + '@smithy/middleware-serde@2.1.2': dependencies: '@smithy/types': 2.10.0 tslib: 2.6.2 + '@smithy/middleware-serde@3.0.11': + dependencies: + '@smithy/types': 3.7.2 + tslib: 2.6.2 + '@smithy/middleware-stack@2.1.2': dependencies: '@smithy/types': 2.10.0 tslib: 2.6.2 + '@smithy/middleware-stack@3.0.11': + dependencies: + '@smithy/types': 3.7.2 + tslib: 2.6.2 + '@smithy/node-config-provider@2.2.2': dependencies: '@smithy/property-provider': 2.1.2 @@ -18737,6 +19855,13 @@ snapshots: '@smithy/types': 2.10.0 tslib: 2.6.2 + '@smithy/node-config-provider@3.1.12': + dependencies: + '@smithy/property-provider': 3.1.11 + '@smithy/shared-ini-file-loader': 3.1.12 + '@smithy/types': 3.7.2 + tslib: 2.6.2 + '@smithy/node-http-handler@2.4.0': dependencies: '@smithy/abort-controller': 2.1.2 @@ -18745,36 +19870,74 @@ snapshots: '@smithy/types': 2.10.0 tslib: 2.6.2 + '@smithy/node-http-handler@3.3.2': + dependencies: + '@smithy/abort-controller': 3.1.9 + '@smithy/protocol-http': 4.1.8 + '@smithy/querystring-builder': 3.0.11 + '@smithy/types': 3.7.2 + tslib: 2.6.2 + '@smithy/property-provider@2.1.2': dependencies: '@smithy/types': 2.10.0 tslib: 2.6.2 + '@smithy/property-provider@3.1.11': + dependencies: + '@smithy/types': 3.7.2 + tslib: 2.6.2 + '@smithy/protocol-http@3.2.0': dependencies: '@smithy/types': 2.10.0 tslib: 2.6.2 + '@smithy/protocol-http@4.1.8': + dependencies: + '@smithy/types': 3.7.2 + tslib: 2.6.2 + '@smithy/querystring-builder@2.1.2': dependencies: '@smithy/types': 2.10.0 '@smithy/util-uri-escape': 2.1.1 tslib: 2.6.2 + '@smithy/querystring-builder@3.0.11': + dependencies: + '@smithy/types': 3.7.2 + '@smithy/util-uri-escape': 3.0.0 + tslib: 2.6.2 + '@smithy/querystring-parser@2.1.2': dependencies: '@smithy/types': 2.10.0 tslib: 2.6.2 + '@smithy/querystring-parser@3.0.11': + dependencies: + '@smithy/types': 3.7.2 + tslib: 2.6.2 + '@smithy/service-error-classification@2.1.2': dependencies: '@smithy/types': 2.10.0 + '@smithy/service-error-classification@3.0.11': + dependencies: + '@smithy/types': 3.7.2 + '@smithy/shared-ini-file-loader@2.3.2': dependencies: '@smithy/types': 2.10.0 tslib: 2.6.2 + '@smithy/shared-ini-file-loader@3.1.12': + dependencies: + '@smithy/types': 3.7.2 + tslib: 2.6.2 + '@smithy/signature-v4@2.1.2': dependencies: '@smithy/eventstream-codec': 2.1.2 @@ -18786,6 +19949,17 @@ snapshots: '@smithy/util-utf8': 2.1.1 tslib: 2.6.2 + '@smithy/signature-v4@4.2.4': + dependencies: + '@smithy/is-array-buffer': 3.0.0 + '@smithy/protocol-http': 4.1.8 + '@smithy/types': 3.7.2 + '@smithy/util-hex-encoding': 3.0.0 + '@smithy/util-middleware': 3.0.11 + '@smithy/util-uri-escape': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + '@smithy/smithy-client@2.4.0': dependencies: '@smithy/middleware-endpoint': 2.4.2 @@ -18795,38 +19969,81 @@ snapshots: '@smithy/util-stream': 2.1.2 tslib: 2.6.2 + '@smithy/smithy-client@3.5.0': + dependencies: + '@smithy/core': 2.5.5 + '@smithy/middleware-endpoint': 3.2.5 + '@smithy/middleware-stack': 3.0.11 + '@smithy/protocol-http': 4.1.8 + '@smithy/types': 3.7.2 + '@smithy/util-stream': 3.3.2 + tslib: 2.6.2 + '@smithy/types@2.10.0': dependencies: tslib: 2.6.2 + '@smithy/types@3.7.2': + dependencies: + tslib: 2.6.2 + '@smithy/url-parser@2.1.2': dependencies: '@smithy/querystring-parser': 2.1.2 '@smithy/types': 2.10.0 tslib: 2.6.2 + '@smithy/url-parser@3.0.11': + dependencies: + '@smithy/querystring-parser': 3.0.11 + '@smithy/types': 3.7.2 + tslib: 2.6.2 + '@smithy/util-base64@2.1.1': dependencies: '@smithy/util-buffer-from': 2.1.1 tslib: 2.6.2 + '@smithy/util-base64@3.0.0': + dependencies: + '@smithy/util-buffer-from': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + '@smithy/util-body-length-browser@2.1.1': dependencies: tslib: 2.6.2 + '@smithy/util-body-length-browser@3.0.0': + dependencies: + tslib: 2.6.2 + '@smithy/util-body-length-node@2.2.1': dependencies: tslib: 2.6.2 + '@smithy/util-body-length-node@3.0.0': + dependencies: + tslib: 2.6.2 + '@smithy/util-buffer-from@2.1.1': dependencies: '@smithy/is-array-buffer': 2.1.1 tslib: 2.6.2 + '@smithy/util-buffer-from@3.0.0': + dependencies: + '@smithy/is-array-buffer': 3.0.0 + tslib: 2.6.2 + '@smithy/util-config-provider@2.2.1': dependencies: tslib: 2.6.2 + '@smithy/util-config-provider@3.0.0': + dependencies: + tslib: 2.6.2 + '@smithy/util-defaults-mode-browser@2.1.2': dependencies: '@smithy/property-provider': 2.1.2 @@ -18835,6 +20052,14 @@ snapshots: bowser: 2.11.0 tslib: 2.6.2 + '@smithy/util-defaults-mode-browser@3.0.30': + dependencies: + '@smithy/property-provider': 3.1.11 + '@smithy/smithy-client': 3.5.0 + '@smithy/types': 3.7.2 + bowser: 2.11.0 + tslib: 2.6.2 + '@smithy/util-defaults-mode-node@2.2.1': dependencies: '@smithy/config-resolver': 2.1.2 @@ -18845,27 +20070,58 @@ snapshots: '@smithy/types': 2.10.0 tslib: 2.6.2 + '@smithy/util-defaults-mode-node@3.0.30': + dependencies: + '@smithy/config-resolver': 3.0.13 + '@smithy/credential-provider-imds': 3.2.8 + '@smithy/node-config-provider': 3.1.12 + '@smithy/property-provider': 3.1.11 + '@smithy/smithy-client': 3.5.0 + '@smithy/types': 3.7.2 + tslib: 2.6.2 + '@smithy/util-endpoints@1.1.2': dependencies: '@smithy/node-config-provider': 2.2.2 '@smithy/types': 2.10.0 tslib: 2.6.2 + '@smithy/util-endpoints@2.1.7': + dependencies: + '@smithy/node-config-provider': 3.1.12 + '@smithy/types': 3.7.2 + tslib: 2.6.2 + '@smithy/util-hex-encoding@2.1.1': dependencies: tslib: 2.6.2 + '@smithy/util-hex-encoding@3.0.0': + dependencies: + tslib: 2.6.2 + '@smithy/util-middleware@2.1.2': dependencies: '@smithy/types': 2.10.0 tslib: 2.6.2 + '@smithy/util-middleware@3.0.11': + dependencies: + '@smithy/types': 3.7.2 + tslib: 2.6.2 + '@smithy/util-retry@2.1.2': dependencies: '@smithy/service-error-classification': 2.1.2 '@smithy/types': 2.10.0 tslib: 2.6.2 + '@smithy/util-retry@3.0.11': + dependencies: + '@smithy/service-error-classification': 3.0.11 + '@smithy/types': 3.7.2 + tslib: 2.6.2 + '@smithy/util-stream@2.1.2': dependencies: '@smithy/fetch-http-handler': 2.4.2 @@ -18877,21 +20133,47 @@ snapshots: '@smithy/util-utf8': 2.1.1 tslib: 2.6.2 + '@smithy/util-stream@3.3.2': + dependencies: + '@smithy/fetch-http-handler': 4.1.2 + '@smithy/node-http-handler': 3.3.2 + '@smithy/types': 3.7.2 + '@smithy/util-base64': 3.0.0 + '@smithy/util-buffer-from': 3.0.0 + '@smithy/util-hex-encoding': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + '@smithy/util-uri-escape@2.1.1': dependencies: tslib: 2.6.2 + '@smithy/util-uri-escape@3.0.0': + dependencies: + tslib: 2.6.2 + '@smithy/util-utf8@2.1.1': dependencies: '@smithy/util-buffer-from': 2.1.1 tslib: 2.6.2 + '@smithy/util-utf8@3.0.0': + dependencies: + '@smithy/util-buffer-from': 3.0.0 + tslib: 2.6.2 + '@smithy/util-waiter@2.1.2': dependencies: '@smithy/abort-controller': 2.1.2 '@smithy/types': 2.10.0 tslib: 2.6.2 + '@smithy/util-waiter@3.2.0': + dependencies: + '@smithy/abort-controller': 3.1.9 + '@smithy/types': 3.7.2 + tslib: 2.6.2 + '@stripe/react-stripe-js@1.16.5(@stripe/stripe-js@1.54.2)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': dependencies: '@stripe/stripe-js': 1.54.2 @@ -19138,17 +20420,24 @@ snapshots: '@types/range-parser': 1.2.5 '@types/send': 0.17.2 - '@types/express@4.17.18': + '@types/express-serve-static-core@5.0.2': + dependencies: + '@types/node': 20.12.8 + '@types/qs': 6.9.8 + '@types/range-parser': 1.2.5 + '@types/send': 0.17.2 + + '@types/express@4.17.21': dependencies: '@types/body-parser': 1.19.3 '@types/express-serve-static-core': 4.17.37 '@types/qs': 6.9.8 '@types/serve-static': 1.15.3 - '@types/express@4.17.21': + '@types/express@5.0.0': dependencies: '@types/body-parser': 1.19.3 - '@types/express-serve-static-core': 4.17.37 + '@types/express-serve-static-core': 5.0.2 '@types/qs': 6.9.8 '@types/serve-static': 1.15.3 @@ -19324,7 +20613,7 @@ snapshots: '@types/passport@1.0.13': dependencies: - '@types/express': 4.17.21 + '@types/express': 5.0.0 '@types/prismjs@1.26.0': {} @@ -19496,7 +20785,7 @@ snapshots: '@typescript-eslint/experimental-utils': 4.33.0(eslint@7.32.0)(typescript@5.2.2) '@typescript-eslint/parser': 4.33.0(eslint@7.32.0)(typescript@5.2.2) '@typescript-eslint/scope-manager': 4.33.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) eslint: 7.32.0 functional-red-black-tree: 1.0.1 ignore: 5.2.4 @@ -19573,7 +20862,7 @@ snapshots: '@typescript-eslint/scope-manager': 4.33.0 '@typescript-eslint/types': 4.33.0 '@typescript-eslint/typescript-estree': 4.33.0(typescript@5.2.2) - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) eslint: 7.32.0 optionalDependencies: typescript: 5.2.2 @@ -19586,7 +20875,7 @@ snapshots: '@typescript-eslint/types': 8.23.0 '@typescript-eslint/typescript-estree': 8.23.0(typescript@5.7.3) '@typescript-eslint/visitor-keys': 8.23.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) eslint: 9.19.0 typescript: 5.7.3 transitivePeerDependencies: @@ -19611,7 +20900,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 8.23.0(typescript@5.7.3) '@typescript-eslint/utils': 8.23.0(eslint@9.19.0)(typescript@5.7.3) - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) eslint: 9.19.0 ts-api-utils: 2.0.1(typescript@5.7.3) typescript: 5.7.3 @@ -19622,7 +20911,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 8.24.0(typescript@5.7.3) '@typescript-eslint/utils': 8.24.0(eslint@9.19.0)(typescript@5.7.3) - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) eslint: 9.19.0 ts-api-utils: 2.0.1(typescript@5.7.3) typescript: 5.7.3 @@ -19642,7 +20931,7 @@ snapshots: dependencies: '@typescript-eslint/types': 3.10.1 '@typescript-eslint/visitor-keys': 3.10.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) glob: 7.2.3 is-glob: 4.0.3 lodash: 4.17.21 @@ -19658,7 +20947,7 @@ snapshots: dependencies: '@typescript-eslint/types': 4.33.0 '@typescript-eslint/visitor-keys': 4.33.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) globby: 11.1.0 is-glob: 4.0.3 semver: 7.6.0 @@ -19672,7 +20961,7 @@ snapshots: dependencies: '@typescript-eslint/types': 8.23.0 '@typescript-eslint/visitor-keys': 8.23.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 @@ -19686,7 +20975,7 @@ snapshots: dependencies: '@typescript-eslint/types': 8.24.0 '@typescript-eslint/visitor-keys': 8.24.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 @@ -19740,7 +21029,7 @@ snapshots: '@typescript/vfs@1.6.0(typescript@5.7.3)': dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) typescript: 5.7.3 transitivePeerDependencies: - supports-color @@ -19936,13 +21225,13 @@ snapshots: agent-base@6.0.2: dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) transitivePeerDependencies: - supports-color agent-base@7.1.1: dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -20105,6 +21394,8 @@ snapshots: array-flatten@1.1.1: {} + array-flatten@3.0.0: {} + array-includes@3.1.8: dependencies: call-bind: 1.0.8 @@ -20312,7 +21603,7 @@ snapshots: dependencies: '@fastify/error': 3.4.1 archy: 1.0.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) fastq: 1.17.1 transitivePeerDependencies: - supports-color @@ -20763,6 +22054,22 @@ snapshots: transitivePeerDependencies: - supports-color + body-parser@2.0.0-beta.2: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 3.1.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.5.2 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 3.0.0-beta.1 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + boolbase@1.0.0: {} bops@0.0.7: @@ -21543,6 +22850,8 @@ snapshots: cookie@0.5.0: {} + cookie@0.6.0: {} + cookiejar@2.1.4: {} copy-descriptor@0.1.1: {} @@ -21924,6 +23233,12 @@ snapshots: optionalDependencies: supports-color: 5.5.0 + debug@4.3.4(supports-color@5.5.0): + dependencies: + ms: 2.1.2 + optionalDependencies: + supports-color: 5.5.0 + debug@4.3.4(supports-color@8.1.1): dependencies: ms: 2.1.2 @@ -22104,7 +23419,7 @@ snapshots: detect-port@1.5.1: dependencies: address: 1.1.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -22343,7 +23658,7 @@ snapshots: dependencies: base64-arraybuffer: 0.1.4 component-emitter: 1.3.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) engine.io-parser: 4.0.3 has-cors: 1.1.0 parseqs: 0.0.6 @@ -22366,7 +23681,7 @@ snapshots: base64id: 2.0.0 cookie: 0.4.2 cors: 2.8.5 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) engine.io-parser: 4.0.3 ws: 7.4.6 transitivePeerDependencies: @@ -22792,7 +24107,7 @@ snapshots: eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@8.23.0(eslint@9.19.0)(typescript@5.7.3))(eslint-plugin-import@2.31.0)(eslint@9.19.0): dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) enhanced-resolve: 5.15.0 eslint: 9.19.0 eslint-module-utils: 2.8.0(@typescript-eslint/parser@8.23.0(eslint@9.19.0)(typescript@5.7.3))(eslint-import-resolver-typescript@3.5.5)(eslint@9.19.0) @@ -22936,7 +24251,7 @@ snapshots: '@es-joy/jsdoccomment': 0.42.0 are-docs-informative: 0.0.2 comment-parser: 1.4.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) escape-string-regexp: 4.0.0 eslint: 9.19.0 esquery: 1.5.0 @@ -23101,7 +24416,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) doctrine: 3.0.0 enquirer: 2.4.1 escape-string-regexp: 4.0.0 @@ -23155,7 +24470,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) escape-string-regexp: 4.0.0 eslint-scope: 8.2.0 eslint-visitor-keys: 4.2.0 @@ -23342,9 +24657,9 @@ snapshots: http-errors: 1.8.0 raw-body: 2.5.2 - express-rate-limit@6.7.0(express@4.18.2): + express-rate-limit@6.7.0(express@5.0.0-beta.3): dependencies: - express: 4.18.2 + express: 5.0.0-beta.3 express-session@1.17.3: dependencies: @@ -23400,6 +24715,44 @@ snapshots: transitivePeerDependencies: - supports-color + express@5.0.0-beta.3: + dependencies: + accepts: 1.3.8 + array-flatten: 3.0.0 + body-parser: 2.0.0-beta.2 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.6.0 + cookie-signature: 1.0.6 + debug: 3.1.0 + depd: 2.0.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.2.0 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.1 + methods: 1.1.2 + mime-types: 2.1.35 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-is-absolute: 1.0.1 + proxy-addr: 2.0.7 + qs: 6.11.0 + range-parser: 1.2.1 + router: 2.0.0-beta.2 + safe-buffer: 5.2.1 + send: 1.0.0-beta.2 + serve-static: 2.0.0-beta.2 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + ext@1.7.0: dependencies: type: 2.7.2 @@ -23438,7 +24791,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -23509,6 +24862,10 @@ snapshots: dependencies: strnum: 1.0.5 + fast-xml-parser@4.4.1: + dependencies: + strnum: 1.0.5 + fastest-levenshtein@1.0.16: {} fastify-plugin@4.5.1: {} @@ -23700,7 +25057,7 @@ snapshots: follow-redirects@1.15.3(debug@4.3.4): optionalDependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) for-each@0.3.3: dependencies: @@ -24040,7 +25397,7 @@ snapshots: chokidar: 3.6.0 contentful-management: 7.54.2(debug@4.3.4) cors: 2.8.5 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) detect-port: 1.5.1 dotenv: 8.6.0 execa: 5.1.1 @@ -24413,7 +25770,7 @@ snapshots: dependencies: basic-ftp: 5.0.5 data-uri-to-buffer: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) fs-extra: 11.2.0 transitivePeerDependencies: - supports-color @@ -24986,7 +26343,7 @@ snapshots: dependencies: '@tootallnate/once': 1.1.2 agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -24994,14 +26351,14 @@ snapshots: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) transitivePeerDependencies: - supports-color http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -25038,14 +26395,14 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) transitivePeerDependencies: - supports-color https-proxy-agent@7.0.5: dependencies: agent-base: 7.1.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -25071,6 +26428,10 @@ snapshots: dependencies: safer-buffer: 2.1.2 + iconv-lite@0.5.2: + dependencies: + safer-buffer: 2.1.2 + iconv-lite@0.6.3: dependencies: safer-buffer: 2.1.2 @@ -25668,7 +27029,7 @@ snapshots: istanbul-lib-source-maps@4.0.1: dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: @@ -26225,7 +27586,7 @@ snapshots: json-schema-resolver@2.0.0: dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) rfdc: 1.3.0 uri-js: 4.4.1 transitivePeerDependencies: @@ -26397,7 +27758,7 @@ snapshots: cli-truncate: 3.1.0 colorette: 2.0.20 commander: 9.5.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) execa: 6.1.0 lilconfig: 2.0.6 listr2: 5.0.8(enquirer@2.4.1) @@ -26580,7 +27941,7 @@ snapshots: dependencies: async: 3.2.4 bson: 1.1.6 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) loopback-connector: 5.3.3 mongodb: 3.6.9 strong-globalize: 6.0.6 @@ -26604,7 +27965,7 @@ snapshots: dependencies: async: 3.2.4 bluebird: 3.7.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) msgpack5: 4.5.1 strong-globalize: 5.1.0 uuid: 7.0.3 @@ -26615,7 +27976,7 @@ snapshots: dependencies: async: 3.2.4 bluebird: 3.7.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) msgpack5: 4.5.1 strong-globalize: 6.0.6 uuid: 9.0.1 @@ -27449,7 +28810,7 @@ snapshots: micromark@2.11.4: dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) parse-entities: 2.0.0 transitivePeerDependencies: - supports-color @@ -27457,7 +28818,7 @@ snapshots: micromark@3.2.0: dependencies: '@types/debug': 4.1.9 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) decode-named-character-reference: 1.0.2 micromark-core-commonmark: 1.1.0 micromark-factory-space: 1.1.0 @@ -27479,7 +28840,7 @@ snapshots: micromark@4.0.0: dependencies: '@types/debug': 4.1.9 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) decode-named-character-reference: 1.0.2 devlop: 1.1.0 micromark-core-commonmark: 2.0.0 @@ -27918,6 +29279,19 @@ snapshots: touch: 3.1.0 undefsafe: 2.0.5 + nodemon@3.1.7: + dependencies: + chokidar: 3.6.0 + debug: 4.3.4(supports-color@5.5.0) + ignore-by-default: 1.0.1 + minimatch: 3.1.2 + pstree.remy: 1.1.8 + semver: 7.6.0 + simple-update-notifier: 2.0.0 + supports-color: 5.5.0 + touch: 3.1.0 + undefsafe: 2.0.5 + nopt@1.0.10: dependencies: abbrev: 1.1.1 @@ -28224,7 +29598,7 @@ snapshots: dependencies: '@tootallnate/quickjs-emscripten': 0.23.0 agent-base: 7.1.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) get-uri: 6.0.3 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.5 @@ -28368,7 +29742,7 @@ snapshots: passport-mock-strategy@2.0.0: dependencies: - '@types/express': 4.17.18 + '@types/express': 4.17.21 '@types/passport': 1.0.13 es6-promise: 4.2.8 passport: 0.4.1 @@ -28428,6 +29802,8 @@ snapshots: path-to-regexp@2.2.1: {} + path-to-regexp@3.2.0: {} + path-type@4.0.0: {} pathval@1.1.1: {} @@ -28880,7 +30256,7 @@ snapshots: proxy-agent@6.4.0: dependencies: agent-base: 7.1.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.5 lru-cache: 7.18.3 @@ -29063,6 +30439,13 @@ snapshots: iconv-lite: 0.4.24 unpipe: 1.0.0 + raw-body@3.0.0-beta.1: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.5.2 + unpipe: 1.0.0 + raw-loader@4.0.2(webpack@5.90.3): dependencies: loader-utils: 2.0.4 @@ -29773,6 +31156,16 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + router@2.0.0-beta.2: + dependencies: + array-flatten: 3.0.0 + is-promise: 4.0.0 + methods: 1.1.2 + parseurl: 1.3.3 + path-to-regexp: 3.2.0 + setprototypeof: 1.2.0 + utils-merge: 1.0.1 + rst-selector-parser@2.2.3: dependencies: lodash.flattendeep: 4.4.0 @@ -29954,6 +31347,23 @@ snapshots: transitivePeerDependencies: - supports-color + send@1.0.0-beta.2: + dependencies: + debug: 3.1.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime-types: 2.1.35 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + send@1.1.0: dependencies: debug: 4.3.7 @@ -30023,6 +31433,15 @@ snapshots: transitivePeerDependencies: - supports-color + serve-static@2.0.0-beta.2: + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 1.1.0 + transitivePeerDependencies: + - supports-color + serve@13.0.4: dependencies: '@zeit/schemas': 2.6.0 @@ -30200,7 +31619,7 @@ snapshots: dependencies: '@hapi/hoek': 11.0.4 '@hapi/wreck': 18.1.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) joi: 17.12.2 transitivePeerDependencies: - supports-color @@ -30213,6 +31632,10 @@ snapshots: dependencies: semver: 7.0.0 + simple-update-notifier@2.0.0: + dependencies: + semver: 7.6.0 + single-trailing-newline@1.0.0: dependencies: detect-newline: 1.0.3 @@ -30289,7 +31712,7 @@ snapshots: '@types/component-emitter': 1.2.12 backo2: 1.0.2 component-emitter: 1.3.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) engine.io-client: 4.1.4 parseuri: 0.0.6 socket.io-parser: 4.0.5 @@ -30302,7 +31725,7 @@ snapshots: dependencies: '@types/component-emitter': 1.2.12 component-emitter: 1.3.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -30313,7 +31736,7 @@ snapshots: '@types/node': 14.18.63 accepts: 1.3.8 base64id: 2.0.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) engine.io: 4.1.2 socket.io-adapter: 2.1.0 socket.io-parser: 4.0.5 @@ -30325,7 +31748,7 @@ snapshots: socks-proxy-agent@8.0.4: dependencies: agent-base: 7.1.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) socks: 2.8.3 transitivePeerDependencies: - supports-color @@ -30510,6 +31933,8 @@ snapshots: inherits: 2.0.4 readable-stream: 2.3.8 + stream-wormhole@1.1.0: {} + streamsearch@0.1.2: {} streamx@2.18.0: @@ -30704,9 +32129,9 @@ snapshots: strong-error-handler@3.5.0: dependencies: - '@types/express': 4.17.18 + '@types/express': 4.17.21 accepts: 1.3.8 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) ejs: 3.1.9 fast-safe-stringify: 2.1.1 http-status: 1.7.0 @@ -30718,7 +32143,7 @@ snapshots: strong-globalize@4.1.3: dependencies: accept-language: 3.0.18 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) globalize: 1.7.0 lodash: 4.17.21 md5: 2.3.0 @@ -30731,7 +32156,7 @@ snapshots: strong-globalize@5.1.0: dependencies: accept-language: 3.0.18 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) globalize: 1.7.0 lodash: 4.17.21 md5: 2.3.0 @@ -30744,7 +32169,7 @@ snapshots: strong-globalize@6.0.6: dependencies: accept-language: 3.0.18 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) globalize: 1.7.0 lodash: 4.17.21 md5: 2.3.0 @@ -30758,7 +32183,7 @@ snapshots: dependencies: async: 3.2.4 body-parser: 1.20.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) depd: 2.0.0 escape-string-regexp: 2.0.0 eventemitter2: 5.0.1 @@ -30866,7 +32291,7 @@ snapshots: dependencies: component-emitter: 1.3.0 cookiejar: 2.1.4 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) fast-safe-stringify: 2.1.1 form-data: 4.0.0 formidable: 2.1.2 @@ -31382,6 +32807,8 @@ snapshots: typescript@5.2.2: {} + typescript@5.7.2: {} + typescript@5.7.3: {} uc.micro@2.0.0: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index d6cd0078a1e..bfae73248bd 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -10,6 +10,7 @@ packages: - 'tools/challenge-parser' - 'tools/client-plugins/*' - 'tools/crowdin' + - 'tools/screenshot-service' - 'tools/scripts/build' - 'tools/scripts/seed' - 'tools/scripts/seed-exams' diff --git a/sample.env b/sample.env index d572bd1970f..40614fe7b0c 100644 --- a/sample.env +++ b/sample.env @@ -42,6 +42,9 @@ FORUM_LOCATION=https://forum.freecodecamp.org NEWS_LOCATION=https://www.freecodecamp.org/news RADIO_LOCATION=https://coderadio.freecodecamp.org +# Exam Env application paths +SCREENSHOT_SERVICE_LOCATION=http://localhost:3003 + # --------------------- # Build variants # --------------------- diff --git a/tools/screenshot-service/.gitignore b/tools/screenshot-service/.gitignore new file mode 100644 index 00000000000..a884d38f180 --- /dev/null +++ b/tools/screenshot-service/.gitignore @@ -0,0 +1,3 @@ +node_modules/ +.env +dist/ diff --git a/tools/screenshot-service/README.md b/tools/screenshot-service/README.md new file mode 100644 index 00000000000..3c3c2f0d91d --- /dev/null +++ b/tools/screenshot-service/README.md @@ -0,0 +1,29 @@ +# Screenshot Service + +## Development + +To install dependencies: + +```bash +pnpm install +``` + +To run: + +```bash +npm run dev +``` + +## Deployment + +Build the Docker image: + +```bash +docker build -t screenshot-service -f ./docker/screenshot-service/Dockerfile . +``` + +Run the Docker container: + +```bash +docker run -d -p 3003:3003 screenshot-service +``` diff --git a/tools/screenshot-service/index.ts b/tools/screenshot-service/index.ts new file mode 100644 index 00000000000..9907cf117fb --- /dev/null +++ b/tools/screenshot-service/index.ts @@ -0,0 +1,59 @@ +import { + PutObjectCommand, + S3Client, + type PutObjectCommandInput, + type PutObjectCommandOutput +} from '@aws-sdk/client-s3'; +import express, { type Request, type Response } from 'express'; + +interface ImageUploadRequest { + image: string; + examAttemptId: string; +} + +const app = express(); + +// Parse JSON bodies (in case images are sent as Base64 strings) +app.use(express.json({ limit: '5mb' })); + +// Configure S3 +const s3 = new S3Client({ + region: process.env.AWS_REGION, + credentials: { + accessKeyId: process.env.AWS_ACCESS_KEY_ID ?? '', + secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY ?? '' + } +}); + +const uploadToS3 = ( + image: string, + examAttemptId: string +): Promise => { + const params: PutObjectCommandInput = { + Bucket: process.env.S3_BUCKET_NAME as string, + Key: `${examAttemptId}/${Date.now()}`, + Body: Buffer.from(image, 'base64'), + ContentType: 'image/jpeg' + }; + + return s3.send(new PutObjectCommand(params)); +}; + +// Route to handle image uploads from another backend +app.post( + '/upload', + async (req: Request, res: Response) => { + try { + await uploadToS3(req.body.image, req.body.examAttemptId); + res.status(200).json({ message: 'Image uploaded successfully' }); + } catch (err) { + console.error('Error uploading image:', err); + res.status(500).json({ error: (err as Error).message }); + } + } +); + +const port = process.env.PORT || 3003; +app.listen(port, () => { + console.log(`Server running on port ${port}`); +}); diff --git a/tools/screenshot-service/package.json b/tools/screenshot-service/package.json new file mode 100644 index 00000000000..c21f0e45461 --- /dev/null +++ b/tools/screenshot-service/package.json @@ -0,0 +1,17 @@ +{ + "name": "@freecodecamp/exam-screenshot-service", + "version": "1.0.0", + "devDependencies": { + "@types/express": "^5.0.0", + "nodemon": "^3.1.7", + "typescript": "^5.7.2" + }, + "dependencies": { + "@aws-sdk/client-s3": "^3.632.0", + "express": "5.0.0-beta.3" + }, + "scripts": { + "build": "tsc", + "dev": "nodemon index.ts" + } +} diff --git a/tools/screenshot-service/sample.env b/tools/screenshot-service/sample.env new file mode 100644 index 00000000000..acaa91508fa --- /dev/null +++ b/tools/screenshot-service/sample.env @@ -0,0 +1,5 @@ +AWS_REGION= +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +S3_BUCKET_NAME= +PORT=3003 diff --git a/tools/screenshot-service/tsconfig.json b/tools/screenshot-service/tsconfig.json new file mode 100644 index 00000000000..38fb61c53ad --- /dev/null +++ b/tools/screenshot-service/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "target": "es2022", + "module": "Node16", + "moduleResolution": "nodenext", + "allowJs": false, + "strict": true, + "forceConsistentCasingInFileNames": true, + "outDir": "./dist", + "rootDir": "../../" + }, + "include": ["**/*.ts"] +}