diff --git a/README.md b/README.md
index c808514cb1..45abcb2c09 100644
--- a/README.md
+++ b/README.md
@@ -117,12 +117,18 @@ We are very happy if you are interested in contributing to Formbricks 🤗
Here are a few options:
-- Star this repo
-- Create issues every time you feel something is missing or goes wrong
-- Upvote issues with 👍 reaction so we know what's the demand for particular issue to prioritize it within roadmap
+- Star this repo.
+- Create issues every time you feel something is missing or goes wrong.
+- Upvote issues with 👍 reaction so we know what's the demand for a particular issue to prioritize it within the roadmap.
Please check out [our contribution guide](https://formbricks.com/docs/contributing/introduction) and our [list of open issues](https://github.com/formbricks/formbricks/issues) for more information.
+## All Thanks To Our Contributors
+
+
+
+
+
## 📆 Contact us
Let's have a chat about your survey needs and get you started.
diff --git a/apps/web/.gitignore b/apps/web/.gitignore
index 994a16b76e..08e5e4f92d 100644
--- a/apps/web/.gitignore
+++ b/apps/web/.gitignore
@@ -40,3 +40,6 @@ next-env.d.ts
# Google Sheets Token File
token.json
+
+# Local Uploads
+uploads/
\ No newline at end of file
diff --git a/apps/web/app/(app)/environments/[environmentId]/people/[personId]/(responseSection)/ResponsesFeed.tsx b/apps/web/app/(app)/environments/[environmentId]/people/[personId]/(responseSection)/ResponsesFeed.tsx
index 2e73a97846..b6d82d226a 100644
--- a/apps/web/app/(app)/environments/[environmentId]/people/[personId]/(responseSection)/ResponsesFeed.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/people/[personId]/(responseSection)/ResponsesFeed.tsx
@@ -61,6 +61,7 @@ export default function ResponseFeed({
diff --git a/apps/web/app/(app)/environments/[environmentId]/surveys/SurveyList.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/SurveyList.tsx
index 14a0efb90b..b3ffd27db7 100644
--- a/apps/web/app/(app)/environments/[environmentId]/surveys/SurveyList.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/surveys/SurveyList.tsx
@@ -81,7 +81,12 @@ export default async function SurveysList({ environmentId }: { environmentId: st
{survey.status !== "draft" && (
<>
-
+
>
)}
{survey.status === "draft" && (
diff --git a/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/SummaryHeader.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/SummaryHeader.tsx
index 3038c16e84..d16797ba38 100644
--- a/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/SummaryHeader.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/SummaryHeader.tsx
@@ -105,7 +105,11 @@ const SummaryHeader = ({
disabled={isStatusChangeDisabled}
style={isStatusChangeDisabled ? { pointerEvents: "none", opacity: 0.5 } : {}}>
-
+
{survey.status === "inProgress" && "In-progress"}
{survey.status === "paused" && "Paused"}
diff --git a/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/QuestionCard.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/QuestionCard.tsx
index 7b2b177bf1..5a389b2eaa 100644
--- a/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/QuestionCard.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/QuestionCard.tsx
@@ -244,24 +244,9 @@ export default function QuestionCard({
{
- const trimmedValue = e.target.value.trim(); // Remove spaces from the start and end
- const hasInternalSpaces = /\S\s\S/.test(trimmedValue); // Test if there are spaces between words
-
- if (
- !trimmedValue.includes(" ") &&
- (trimmedValue === "" || hasInternalSpaces || !/\s/.test(trimmedValue))
- ) {
- updateQuestion(questionIdx, { backButtonLabel: trimmedValue });
- }
- }}
+ onChange={(e) => updateQuestion(questionIdx, { buttonLabel: e.target.value })}
/>
@@ -269,11 +254,6 @@ export default function QuestionCard({
updateQuestion(questionIdx, { backButtonLabel: e.target.value })}
- className={cn(
- isInValid &&
- question.backButtonLabel?.trim() === "" &&
- "border border-red-600 focus:border-red-600"
- )}
/>
)}
@@ -284,11 +264,6 @@ export default function QuestionCard({
updateQuestion(questionIdx, { backButtonLabel: e.target.value })}
- className={cn(
- isInValid &&
- question.backButtonLabel?.trim() === "" &&
- "border border-red-600 focus:border-red-600"
- )}
/>
)}
diff --git a/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/Validation.ts b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/Validation.ts
index ea9fb1c2af..125098f640 100644
--- a/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/Validation.ts
+++ b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/Validation.ts
@@ -18,11 +18,7 @@ const validationRules = {
return question.label.trim() !== "";
},
defaultValidation: (question: TSurveyQuestion) => {
- return (
- question.headline.trim() !== "" &&
- question.buttonLabel?.trim() !== "" &&
- question.backButtonLabel?.trim() !== ""
- );
+ return question.headline.trim() !== "";
},
};
diff --git a/apps/web/app/api/v1/client/storage/route.ts b/apps/web/app/api/v1/client/storage/route.ts
new file mode 100644
index 0000000000..e99b9dea71
--- /dev/null
+++ b/apps/web/app/api/v1/client/storage/route.ts
@@ -0,0 +1,95 @@
+import { env } from "@/env.mjs";
+import { responses } from "@/lib/api/response";
+import { UPLOADS_DIR, WEBAPP_URL } from "@formbricks/lib/constants";
+import { putFileToLocalStorage, putFileToS3 } from "@formbricks/lib/storage/service";
+import { getSurvey } from "@formbricks/lib/survey/service";
+import { getTeamByEnvironmentId } from "@formbricks/lib/team/service";
+import { NextRequest, NextResponse } from "next/server";
+
+export async function POST(req: NextRequest): Promise {
+ const accessType = "private"; // private files are only accessible by the user who has access to the environment
+ const { fileName, contentType, fileBuffer, surveyId } = await req.json();
+
+ if (!surveyId) {
+ return responses.badRequestResponse("surveyId ID is required");
+ }
+
+ if (!fileName) {
+ return responses.badRequestResponse("fileName is required");
+ }
+
+ if (!contentType) {
+ return responses.badRequestResponse("contentType is required");
+ }
+
+ if (!fileBuffer) {
+ return responses.badRequestResponse("no file provided, fileBuffer is required");
+ }
+
+ const survey = await getSurvey(surveyId);
+
+ if (!survey) {
+ return responses.notFoundResponse("Survey", surveyId);
+ }
+
+ const { environmentId } = survey;
+
+ const team = await getTeamByEnvironmentId(environmentId);
+
+ if (!team) {
+ return responses.notFoundResponse("TeamByEnvironmentId", environmentId);
+ }
+
+ const { plan } = team;
+
+ const buffer = Buffer.from(fileBuffer);
+
+ const bufferBytes = buffer.byteLength;
+ const bufferKB = bufferBytes / 1024;
+
+ if (plan === "free" && bufferKB > 10240) {
+ return responses.badRequestResponse("Maximum file size for free plan is 10MB, please upgrade your plan");
+ }
+
+ if (plan === "pro" && bufferKB > 1024 * 1024) {
+ return responses.badRequestResponse("Maximum file size for pro plan is 1GB");
+ }
+
+ const uploadPrivateFile = async () => {
+ // if s3 is not configured, we'll upload to a local folder named uploads
+
+ if (!env.AWS_ACCESS_KEY || !env.AWS_SECRET_KEY || !env.S3_REGION || !env.S3_BUCKET_NAME) {
+ try {
+ await putFileToLocalStorage(fileName, fileBuffer, accessType, environmentId, UPLOADS_DIR);
+
+ return responses.successResponse({
+ uploaded: true,
+ url: `${WEBAPP_URL}/storage/${environmentId}/${accessType}/${fileName}`,
+ });
+ } catch (err) {
+ if (err.name === "FileTooLargeError") {
+ return responses.badRequestResponse(err.message);
+ }
+
+ return responses.internalServerErrorResponse(err.message);
+ }
+ }
+
+ try {
+ await putFileToS3(fileName, contentType, fileBuffer, accessType, environmentId);
+
+ return responses.successResponse({
+ uploaded: true,
+ url: `${WEBAPP_URL}/storage/${environmentId}/${accessType}/${fileName}`,
+ });
+ } catch (err) {
+ if (err.name === "FileTooLargeError") {
+ return responses.badRequestResponse(err.message);
+ }
+
+ return responses.internalServerErrorResponse(err.message);
+ }
+ };
+
+ return await uploadPrivateFile();
+}
diff --git a/apps/web/app/api/v1/management/storage/route.ts b/apps/web/app/api/v1/management/storage/route.ts
new file mode 100644
index 0000000000..0ab2f59233
--- /dev/null
+++ b/apps/web/app/api/v1/management/storage/route.ts
@@ -0,0 +1,104 @@
+import { responses } from "@/lib/api/response";
+import { NextRequest, NextResponse } from "next/server";
+import { env } from "@/env.mjs";
+import { putFileToLocalStorage, putFileToS3 } from "@formbricks/lib/storage/service";
+import { getServerSession } from "next-auth";
+import { authOptions } from "@/app/api/auth/[...nextauth]/authOptions";
+import { UPLOADS_DIR, WEBAPP_URL } from "@formbricks/lib/constants";
+import { hasUserEnvironmentAccess } from "@formbricks/lib/environment/auth";
+
+// api endpoint for uploading public files
+// uploaded files will be public, anyone can access the file
+// uploading public files requires authentication
+// use this to upload files for a specific resource, e.g. a user profile picture or a survey
+
+export async function POST(req: NextRequest): Promise {
+ const accessType = "public"; // public files are accessible by anyone
+ const { fileName, contentType, environmentId, fileBuffer, allowedFileExtensions } = await req.json();
+
+ if (!fileName) {
+ return responses.badRequestResponse("fileName is required");
+ }
+
+ if (!contentType) {
+ return responses.badRequestResponse("contentType is required");
+ }
+
+ if (!fileBuffer) {
+ return responses.badRequestResponse("no file provided, fileBuffer is required");
+ }
+
+ if (!environmentId) {
+ return responses.badRequestResponse("environmentId is required");
+ }
+
+ if (allowedFileExtensions?.length) {
+ const fileExtension = fileName.split(".").pop();
+ if (!fileExtension || !allowedFileExtensions.includes(fileExtension)) {
+ return responses.badRequestResponse(
+ `File extension is not allowed, allowed extensions are: ${allowedFileExtensions.join(", ")}`
+ );
+ }
+ }
+
+ // auth and upload private file
+ const session = await getServerSession(authOptions);
+
+ if (!session || !session.user) {
+ return responses.notAuthenticatedResponse();
+ }
+
+ const isUserAuthorized = await hasUserEnvironmentAccess(session.user.id, environmentId);
+
+ if (!isUserAuthorized) {
+ return responses.unauthorizedResponse();
+ }
+
+ return await uploadPublicFile(fileName, fileBuffer, accessType, environmentId, contentType);
+}
+
+const uploadPublicFile = async (
+ fileName: string,
+ fileBuffer: Buffer,
+ accessType: "public" | "private",
+ environmentId,
+ contentType?: string
+) => {
+ // if s3 is not configured, we'll upload to a local folder named uploads
+
+ if (!env.AWS_ACCESS_KEY || !env.AWS_SECRET_KEY || !env.S3_REGION || !env.S3_BUCKET_NAME) {
+ try {
+ await putFileToLocalStorage(fileName, fileBuffer, accessType, environmentId, UPLOADS_DIR, true);
+
+ return responses.successResponse({
+ uploaded: true,
+ url: `${WEBAPP_URL}/storage/${environmentId}/${accessType}/${fileName}`,
+ });
+ } catch (err) {
+ if (err.name === "FileTooLargeError") {
+ return responses.badRequestResponse(err.message);
+ }
+
+ return responses.internalServerErrorResponse("Internal server error");
+ }
+ }
+
+ try {
+ if (!contentType) {
+ return responses.badRequestResponse("contentType is required");
+ }
+
+ await putFileToS3(fileName, contentType, fileBuffer, accessType, environmentId, true);
+
+ return responses.successResponse({
+ uploaded: true,
+ url: `${WEBAPP_URL}/storage/${environmentId}/${accessType}/${fileName}`,
+ });
+ } catch (err) {
+ if (err.name === "FileTooLargeError") {
+ return responses.badRequestResponse(err.message);
+ }
+
+ return responses.internalServerErrorResponse("Internal server error");
+ }
+};
diff --git a/apps/web/app/storage/[environmentId]/[accessType]/[fileName]/route.ts b/apps/web/app/storage/[environmentId]/[accessType]/[fileName]/route.ts
new file mode 100644
index 0000000000..ce3508afbc
--- /dev/null
+++ b/apps/web/app/storage/[environmentId]/[accessType]/[fileName]/route.ts
@@ -0,0 +1,85 @@
+import { authOptions } from "@/app/api/auth/[...nextauth]/authOptions";
+import { env } from "@/env.mjs";
+import { responses } from "@/lib/api/response";
+import { transformErrorToDetails } from "@/lib/api/validator";
+import { UPLOADS_DIR } from "@formbricks/lib/constants";
+import { hasUserEnvironmentAccess } from "@formbricks/lib/environment/auth";
+import { getFileFromLocalStorage, getFileFromS3 } from "@formbricks/lib/storage/service";
+import { ZStorageRetrievalParams } from "@formbricks/types/v1/storage";
+import { getServerSession } from "next-auth";
+import { notFound } from "next/navigation";
+import { NextRequest } from "next/server";
+import path from "path";
+
+export async function GET(
+ _: NextRequest,
+ { params }: { params: { environmentId: string; accessType: string; fileName: string } }
+) {
+ const paramValidation = ZStorageRetrievalParams.safeParse(params);
+
+ if (!paramValidation.success) {
+ return responses.badRequestResponse(
+ "Fields are missing or incorrectly formatted",
+ transformErrorToDetails(paramValidation.error),
+ true
+ );
+ }
+
+ const { environmentId, accessType, fileName } = params;
+
+ const getFile = async () => {
+ if (!env.AWS_ACCESS_KEY || !env.AWS_SECRET_KEY || !env.S3_REGION || !env.S3_BUCKET_NAME) {
+ try {
+ const { fileBuffer, metaData } = await getFileFromLocalStorage(
+ path.join(UPLOADS_DIR, environmentId, accessType, fileName)
+ );
+
+ return new Response(fileBuffer, {
+ headers: {
+ "Content-Type": metaData.contentType,
+ "Content-Disposition": "inline",
+ },
+ });
+ } catch (err) {
+ notFound();
+ }
+ }
+
+ try {
+ const { fileBuffer, metaData } = await getFileFromS3(fileName);
+
+ return new Response(fileBuffer, {
+ headers: {
+ "Content-Type": metaData.contentType,
+ "Content-Disposition": "inline",
+ },
+ });
+ } catch (err) {
+ if (err.name === "NoSuchKey") {
+ return responses.notFoundResponse("File not found", fileName);
+ } else {
+ return responses.internalServerErrorResponse("Internal server error");
+ }
+ }
+ };
+
+ if (accessType === "public") {
+ return await getFile();
+ }
+
+ // auth and download private file
+
+ const session = await getServerSession(authOptions);
+
+ if (!session || !session.user) {
+ return responses.notAuthenticatedResponse();
+ }
+
+ const isUserAuthorized = await hasUserEnvironmentAccess(session.user.id, environmentId);
+
+ if (!isUserAuthorized) {
+ return responses.unauthorizedResponse();
+ }
+
+ return await getFile();
+}
diff --git a/apps/web/components/shared/SurveyStatusDropdown.tsx b/apps/web/components/shared/SurveyStatusDropdown.tsx
index 74941fa02a..d639df310d 100644
--- a/apps/web/components/shared/SurveyStatusDropdown.tsx
+++ b/apps/web/components/shared/SurveyStatusDropdown.tsx
@@ -35,7 +35,7 @@ export default function SurveyStatusDropdown({
<>
{survey.status === "draft" ? (
-
+
{survey.status === "draft" &&
Draft
}
) : (
@@ -69,7 +69,11 @@ export default function SurveyStatusDropdown({
-
+
{survey.status === "inProgress" && "In-progress"}
{survey.status === "paused" && "Paused"}
diff --git a/apps/web/components/shared/SurveyStatusIndicator.tsx b/apps/web/components/shared/SurveyStatusIndicator.tsx
index c9a6011b52..e1053ad55b 100644
--- a/apps/web/components/shared/SurveyStatusIndicator.tsx
+++ b/apps/web/components/shared/SurveyStatusIndicator.tsx
@@ -2,16 +2,32 @@
import { TEnvironment } from "@formbricks/types/v1/environment";
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@formbricks/ui";
-import { ArchiveBoxIcon, CheckIcon, PauseIcon } from "@heroicons/react/24/solid";
+import { ArchiveBoxIcon, CheckIcon, PauseIcon, ExclamationTriangleIcon } from "@heroicons/react/24/solid";
interface SurveyStatusIndicatorProps {
status: string;
tooltip?: boolean;
environment: TEnvironment;
+ type: string;
}
-export default function SurveyStatusIndicator({ status, tooltip, environment }: SurveyStatusIndicatorProps) {
- if (!environment.widgetSetupCompleted) return null;
+export default function SurveyStatusIndicator({
+ status,
+ tooltip,
+ environment,
+ type,
+}: SurveyStatusIndicatorProps) {
+ if (!environment.widgetSetupCompleted) {
+ if (type === "web") {
+ return (
+
+
+
+ );
+ } else {
+ return null;
+ }
+ }
if (tooltip) {
return (
diff --git a/apps/web/env.mjs b/apps/web/env.mjs
index bed57c7429..5d5083285f 100644
--- a/apps/web/env.mjs
+++ b/apps/web/env.mjs
@@ -52,6 +52,10 @@ export const env = createEnv({
GOOGLE_SHEETS_CLIENT_ID: z.string().optional(),
GOOGLE_SHEETS_CLIENT_SECRET: z.string().optional(),
GOOGLE_SHEETS_REDIRECT_URL: z.string().optional(),
+ AWS_ACCESS_KEY: z.string().optional(),
+ AWS_SECRET_KEY: z.string().optional(),
+ S3_REGION: z.string().optional(),
+ S3_BUCKET_NAME: z.string().optional(),
},
/*
@@ -108,6 +112,10 @@ export const env = createEnv({
GOOGLE_SHEETS_CLIENT_ID: process.env.GOOGLE_SHEETS_CLIENT_ID,
GOOGLE_SHEETS_CLIENT_SECRET: process.env.GOOGLE_SHEETS_CLIENT_SECRET,
GOOGLE_SHEETS_REDIRECT_URL: process.env.GOOGLE_SHEETS_REDIRECT_URL,
+ AWS_ACCESS_KEY: process.env.AWS_ACCESS_KEY,
+ AWS_SECRET_KEY: process.env.AWS_SECRET_KEY,
+ S3_REGION: process.env.S3_REGION,
+ S3_BUCKET_NAME: process.env.S3_BUCKET_NAME,
NEXT_PUBLIC_FORMBRICKS_API_HOST: process.env.NEXT_PUBLIC_FORMBRICKS_API_HOST,
NEXT_PUBLIC_FORMBRICKS_ENVIRONMENT_ID: process.env.NEXT_PUBLIC_FORMBRICKS_ENVIRONMENT_ID,
NEXT_PUBLIC_FORMBRICKS_ONBOARDING_SURVEY_ID: process.env.NEXT_PUBLIC_FORMBRICKS_ONBOARDING_SURVEY_ID,
diff --git a/apps/web/package.json b/apps/web/package.json
index ed461ca138..0bbbd7166e 100644
--- a/apps/web/package.json
+++ b/apps/web/package.json
@@ -11,6 +11,8 @@
"lint": "next lint"
},
"dependencies": {
+ "@aws-sdk/client-s3": "^3.418.0",
+ "@aws-sdk/s3-request-presigner": "^3.418.0",
"@formbricks/api": "workspace:*",
"@formbricks/database": "workspace:*",
"@formbricks/ee": "workspace:*",
@@ -34,6 +36,7 @@
"googleapis": "^126.0.1",
"jsonwebtoken": "^9.0.2",
"lodash": "^4.17.21",
+ "mime": "^3.0.0",
"lucide-react": "^0.284.0",
"next": "13.5.4",
"next-auth": "^4.23.2",
diff --git a/apps/web/uploads/cln2o8ist000g19nh5zqpze7e/public/WallPaper 19.png b/apps/web/uploads/cln2o8ist000g19nh5zqpze7e/public/WallPaper 19.png
deleted file mode 100644
index 4265c54486..0000000000
Binary files a/apps/web/uploads/cln2o8ist000g19nh5zqpze7e/public/WallPaper 19.png and /dev/null differ
diff --git a/apps/web/uploads/cln2o8ist000g19nh5zqpze7e/public/cpTree.png b/apps/web/uploads/cln2o8ist000g19nh5zqpze7e/public/cpTree.png
deleted file mode 100644
index 44471ed920..0000000000
Binary files a/apps/web/uploads/cln2o8ist000g19nh5zqpze7e/public/cpTree.png and /dev/null differ
diff --git a/packages/lib/constants.ts b/packages/lib/constants.ts
index dda34a8948..785b9cf37a 100644
--- a/packages/lib/constants.ts
+++ b/packages/lib/constants.ts
@@ -1,4 +1,5 @@
import "server-only";
+import path from "path";
import { env } from "@/env.mjs";
export const RESPONSES_LIMIT_FREE = 100;
@@ -54,3 +55,6 @@ export const MAIL_FROM = env.MAIL_FROM;
export const NEXTAUTH_SECRET = env.NEXTAUTH_SECRET;
export const NEXTAUTH_URL = env.NEXTAUTH_URL;
export const PEOPLE_PER_PAGE = 50;
+
+// Storage constants
+export const UPLOADS_DIR = path.resolve("./uploads");
diff --git a/packages/lib/response/service.ts b/packages/lib/response/service.ts
index 852fa06a3e..bfb071b4bc 100644
--- a/packages/lib/response/service.ts
+++ b/packages/lib/response/service.ts
@@ -11,7 +11,6 @@ import {
import { DatabaseError, ResourceNotFoundError } from "@formbricks/types/v1/errors";
import { TPerson } from "@formbricks/types/v1/people";
import { TTag } from "@formbricks/types/v1/tags";
-import { Prisma } from "@prisma/client";
import { z } from "zod";
import { cache } from "react";
import { getPerson, transformPrismaPerson } from "../person/service";
@@ -19,6 +18,7 @@ import { captureTelemetry } from "../telemetry";
import { validateInputs } from "../utils/validate";
import { ZId } from "@formbricks/types/v1/environment";
import { revalidateTag } from "next/cache";
+import { Prisma } from "@prisma/client";
const responseSelection = {
id: true,
diff --git a/packages/lib/storage/service.ts b/packages/lib/storage/service.ts
new file mode 100644
index 0000000000..5e58b954cb
--- /dev/null
+++ b/packages/lib/storage/service.ts
@@ -0,0 +1,157 @@
+import { PutObjectCommand, S3Client, GetObjectCommand } from "@aws-sdk/client-s3";
+import { access, mkdir, writeFile, readFile } from "fs/promises";
+import mime from "mime";
+import { env } from "@/env.mjs";
+
+// global variables
+
+const AWS_BUCKET_NAME = env.S3_BUCKET_NAME!;
+const AWS_REGION = env.S3_REGION!;
+const AWS_ACCESS_KEY = env.AWS_ACCESS_KEY!;
+const AWS_SECRET_KEY = env.AWS_SECRET_KEY!;
+
+// S3Client Singleton
+
+const s3Client = new S3Client({
+ credentials: {
+ accessKeyId: AWS_ACCESS_KEY,
+ secretAccessKey: AWS_SECRET_KEY!,
+ },
+ region: AWS_REGION!,
+});
+
+const ensureDirectoryExists = async (dirPath: string) => {
+ try {
+ await access(dirPath);
+ } catch (error: any) {
+ if (error.code === "ENOENT") {
+ await mkdir(dirPath, { recursive: true });
+ } else {
+ throw error;
+ }
+ }
+};
+
+type TGetFileResponse = {
+ fileBuffer: Buffer;
+ metaData: {
+ contentType: string;
+ };
+};
+
+export const getFileFromS3 = async (fileKey: string): Promise => {
+ const getObjectCommand = new GetObjectCommand({
+ Bucket: AWS_BUCKET_NAME,
+ Key: fileKey,
+ });
+
+ try {
+ const data = await s3Client.send(getObjectCommand);
+ const byteArray = await data.Body?.transformToByteArray();
+ const buffer = Buffer.from(byteArray as Uint8Array);
+
+ return {
+ fileBuffer: buffer,
+ metaData: {
+ contentType: data.ContentType ?? "",
+ },
+ };
+ } catch (err) {
+ throw err;
+ }
+};
+
+export const getFileFromLocalStorage = async (filePath: string): Promise => {
+ try {
+ const file = await readFile(filePath);
+ let contentType = "";
+
+ try {
+ contentType = mime.getType(filePath) ?? "";
+ } catch (err) {
+ throw err;
+ }
+
+ return {
+ fileBuffer: file,
+ metaData: {
+ contentType: contentType ?? "",
+ },
+ };
+ } catch (err) {
+ throw err;
+ }
+};
+
+export const putFileToS3 = async (
+ fileName: string,
+ contentType: string,
+ fileBuffer: Buffer,
+ accessType: string,
+ environmentId: string,
+ isPublic: boolean = false
+) => {
+ try {
+ const buffer = Buffer.from(fileBuffer);
+
+ if (isPublic) {
+ //check the size of buffer and if it is greater than 10MB, return error
+
+ const bufferBytes = buffer.byteLength;
+ const bufferKB = bufferBytes / 1024;
+
+ if (bufferKB > 10240) {
+ const err = new Error("File size is greater than 10MB");
+ err.name = "FileTooLargeError";
+
+ throw err;
+ }
+ }
+
+ const putObjectCommand = new PutObjectCommand({
+ Bucket: AWS_BUCKET_NAME,
+ Key: `${environmentId}/${accessType}/${fileName}`,
+ Body: buffer,
+ ContentType: contentType,
+ });
+
+ await s3Client.send(putObjectCommand);
+ } catch (err) {
+ throw err;
+ }
+};
+
+export const putFileToLocalStorage = async (
+ fileName: string,
+ fileBuffer: Buffer,
+ accessType: string,
+ environmentId: string,
+ rootDir: string,
+ isPublic: boolean = false
+) => {
+ try {
+ await ensureDirectoryExists(`${rootDir}/${environmentId}/${accessType}`);
+
+ const uploadPath = `${rootDir}/${environmentId}/${accessType}/${fileName}`;
+
+ const buffer = Buffer.from(fileBuffer);
+
+ if (isPublic) {
+ //check the size of buffer and if it is greater than 10MB, return error
+
+ const bufferBytes = buffer.byteLength;
+ const bufferKB = bufferBytes / 1024;
+
+ if (bufferKB > 10240) {
+ const err = new Error("File size is greater than 10MB");
+ err.name = "FileTooLargeError";
+
+ throw err;
+ }
+ }
+
+ await writeFile(uploadPath, buffer);
+ } catch (err) {
+ throw err;
+ }
+};
diff --git a/packages/types/v1/storage.ts b/packages/types/v1/storage.ts
new file mode 100644
index 0000000000..b3a7acbc86
--- /dev/null
+++ b/packages/types/v1/storage.ts
@@ -0,0 +1,9 @@
+import { z } from "zod";
+
+export const ZAccessType = z.enum(["public", "private"]);
+
+export const ZStorageRetrievalParams = z.object({
+ fileName: z.string(),
+ environmentId: z.string().cuid(),
+ accessType: ZAccessType,
+});
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index d730a53372..d0a7334d5d 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -28,7 +28,7 @@ importers:
version: 3.12.7
turbo:
specifier: latest
- version: 1.10.13
+ version: 1.10.15
apps/demo:
dependencies:
@@ -223,6 +223,12 @@ importers:
apps/web:
dependencies:
+ '@aws-sdk/client-s3':
+ specifier: ^3.418.0
+ version: 3.418.0
+ '@aws-sdk/s3-request-presigner':
+ specifier: ^3.418.0
+ version: 3.418.0
'@formbricks/api':
specifier: workspace:*
version: link:../../packages/api
@@ -295,6 +301,9 @@ importers:
lucide-react:
specifier: ^0.284.0
version: 0.284.0(react@18.2.0)
+ mime:
+ specifier: ^3.0.0
+ version: 3.0.0
next:
specifier: 13.5.4
version: 13.5.4(react-dom@18.2.0)(react@18.2.0)
@@ -306,7 +315,7 @@ importers:
version: 6.9.5
posthog-js:
specifier: ^1.82.1
- version: 1.82.1
+ version: 1.82.2
prismjs:
specifier: ^1.29.0
version: 1.29.0
@@ -422,7 +431,7 @@ importers:
version: link:../database
stripe:
specifier: ^13.8.0
- version: 13.8.0
+ version: 13.9.0
devDependencies:
'@formbricks/tsconfig':
specifier: '*'
@@ -447,7 +456,7 @@ importers:
version: 9.0.0(eslint@8.50.0)
eslint-config-turbo:
specifier: latest
- version: 1.8.8(eslint@8.50.0)
+ version: 1.10.15(eslint@8.50.0)
eslint-plugin-react:
specifier: 7.33.2
version: 7.33.2(eslint@8.50.0)
@@ -592,7 +601,7 @@ importers:
version: 1.0.19
'@typescript-eslint/parser':
specifier: ~6.7
- version: 6.7.0(eslint@8.50.0)(typescript@5.2.2)
+ version: 6.7.3(eslint@8.50.0)(typescript@5.2.2)
eslint-plugin-n8n-nodes-base:
specifier: ^1.16.0
version: 1.16.0(eslint@8.50.0)(typescript@5.2.2)
@@ -1000,6 +1009,595 @@ packages:
leven: 3.1.0
dev: true
+ /@aws-crypto/crc32@3.0.0:
+ resolution: {integrity: sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==}
+ dependencies:
+ '@aws-crypto/util': 3.0.0
+ '@aws-sdk/types': 3.418.0
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-crypto/crc32c@3.0.0:
+ resolution: {integrity: sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w==}
+ dependencies:
+ '@aws-crypto/util': 3.0.0
+ '@aws-sdk/types': 3.418.0
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-crypto/ie11-detection@3.0.0:
+ resolution: {integrity: sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==}
+ dependencies:
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-crypto/sha1-browser@3.0.0:
+ resolution: {integrity: sha512-NJth5c997GLHs6nOYTzFKTbYdMNA6/1XlKVgnZoaZcQ7z7UJlOgj2JdbHE8tiYLS3fzXNCguct77SPGat2raSw==}
+ dependencies:
+ '@aws-crypto/ie11-detection': 3.0.0
+ '@aws-crypto/supports-web-crypto': 3.0.0
+ '@aws-crypto/util': 3.0.0
+ '@aws-sdk/types': 3.418.0
+ '@aws-sdk/util-locate-window': 3.310.0
+ '@aws-sdk/util-utf8-browser': 3.259.0
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-crypto/sha256-browser@3.0.0:
+ resolution: {integrity: sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==}
+ dependencies:
+ '@aws-crypto/ie11-detection': 3.0.0
+ '@aws-crypto/sha256-js': 3.0.0
+ '@aws-crypto/supports-web-crypto': 3.0.0
+ '@aws-crypto/util': 3.0.0
+ '@aws-sdk/types': 3.418.0
+ '@aws-sdk/util-locate-window': 3.310.0
+ '@aws-sdk/util-utf8-browser': 3.259.0
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-crypto/sha256-js@3.0.0:
+ resolution: {integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==}
+ dependencies:
+ '@aws-crypto/util': 3.0.0
+ '@aws-sdk/types': 3.418.0
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-crypto/supports-web-crypto@3.0.0:
+ resolution: {integrity: sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==}
+ dependencies:
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-crypto/util@3.0.0:
+ resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==}
+ dependencies:
+ '@aws-sdk/types': 3.418.0
+ '@aws-sdk/util-utf8-browser': 3.259.0
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-sdk/client-s3@3.418.0:
+ resolution: {integrity: sha512-VdDM9xS84t8W1B2/QJTK6mYVCnf7Hovg8Aum9NHm+bD7F0Ni2NTLVjm8+qq9STi4YSeXAy3Pe+FBUP9Wthw7Iw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-crypto/sha1-browser': 3.0.0
+ '@aws-crypto/sha256-browser': 3.0.0
+ '@aws-crypto/sha256-js': 3.0.0
+ '@aws-sdk/client-sts': 3.418.0
+ '@aws-sdk/credential-provider-node': 3.418.0
+ '@aws-sdk/middleware-bucket-endpoint': 3.418.0
+ '@aws-sdk/middleware-expect-continue': 3.418.0
+ '@aws-sdk/middleware-flexible-checksums': 3.418.0
+ '@aws-sdk/middleware-host-header': 3.418.0
+ '@aws-sdk/middleware-location-constraint': 3.418.0
+ '@aws-sdk/middleware-logger': 3.418.0
+ '@aws-sdk/middleware-recursion-detection': 3.418.0
+ '@aws-sdk/middleware-sdk-s3': 3.418.0
+ '@aws-sdk/middleware-signing': 3.418.0
+ '@aws-sdk/middleware-ssec': 3.418.0
+ '@aws-sdk/middleware-user-agent': 3.418.0
+ '@aws-sdk/region-config-resolver': 3.418.0
+ '@aws-sdk/signature-v4-multi-region': 3.418.0
+ '@aws-sdk/types': 3.418.0
+ '@aws-sdk/util-endpoints': 3.418.0
+ '@aws-sdk/util-user-agent-browser': 3.418.0
+ '@aws-sdk/util-user-agent-node': 3.418.0
+ '@aws-sdk/xml-builder': 3.310.0
+ '@smithy/config-resolver': 2.0.10
+ '@smithy/eventstream-serde-browser': 2.0.9
+ '@smithy/eventstream-serde-config-resolver': 2.0.9
+ '@smithy/eventstream-serde-node': 2.0.9
+ '@smithy/fetch-http-handler': 2.1.5
+ '@smithy/hash-blob-browser': 2.0.9
+ '@smithy/hash-node': 2.0.9
+ '@smithy/hash-stream-node': 2.0.9
+ '@smithy/invalid-dependency': 2.0.9
+ '@smithy/md5-js': 2.0.9
+ '@smithy/middleware-content-length': 2.0.11
+ '@smithy/middleware-endpoint': 2.0.9
+ '@smithy/middleware-retry': 2.0.12
+ '@smithy/middleware-serde': 2.0.9
+ '@smithy/middleware-stack': 2.0.3
+ '@smithy/node-config-provider': 2.0.12
+ '@smithy/node-http-handler': 2.1.5
+ '@smithy/protocol-http': 3.0.5
+ '@smithy/smithy-client': 2.1.7
+ '@smithy/types': 2.3.3
+ '@smithy/url-parser': 2.0.9
+ '@smithy/util-base64': 2.0.0
+ '@smithy/util-body-length-browser': 2.0.0
+ '@smithy/util-body-length-node': 2.1.0
+ '@smithy/util-defaults-mode-browser': 2.0.11
+ '@smithy/util-defaults-mode-node': 2.0.13
+ '@smithy/util-retry': 2.0.2
+ '@smithy/util-stream': 2.0.12
+ '@smithy/util-utf8': 2.0.0
+ '@smithy/util-waiter': 2.0.9
+ fast-xml-parser: 4.2.5
+ tslib: 2.6.2
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/client-sso@3.418.0:
+ resolution: {integrity: sha512-fakz3YeSW/kCAOJ5w4ObrrQBxsYO8sU8i6WHLv6iWAsYZKAws2Mqa8g89P61+GitSH4z9waksdLouS6ep78/5A==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-crypto/sha256-browser': 3.0.0
+ '@aws-crypto/sha256-js': 3.0.0
+ '@aws-sdk/middleware-host-header': 3.418.0
+ '@aws-sdk/middleware-logger': 3.418.0
+ '@aws-sdk/middleware-recursion-detection': 3.418.0
+ '@aws-sdk/middleware-user-agent': 3.418.0
+ '@aws-sdk/region-config-resolver': 3.418.0
+ '@aws-sdk/types': 3.418.0
+ '@aws-sdk/util-endpoints': 3.418.0
+ '@aws-sdk/util-user-agent-browser': 3.418.0
+ '@aws-sdk/util-user-agent-node': 3.418.0
+ '@smithy/config-resolver': 2.0.10
+ '@smithy/fetch-http-handler': 2.1.5
+ '@smithy/hash-node': 2.0.9
+ '@smithy/invalid-dependency': 2.0.9
+ '@smithy/middleware-content-length': 2.0.11
+ '@smithy/middleware-endpoint': 2.0.9
+ '@smithy/middleware-retry': 2.0.12
+ '@smithy/middleware-serde': 2.0.9
+ '@smithy/middleware-stack': 2.0.3
+ '@smithy/node-config-provider': 2.0.12
+ '@smithy/node-http-handler': 2.1.5
+ '@smithy/protocol-http': 3.0.5
+ '@smithy/smithy-client': 2.1.7
+ '@smithy/types': 2.3.3
+ '@smithy/url-parser': 2.0.9
+ '@smithy/util-base64': 2.0.0
+ '@smithy/util-body-length-browser': 2.0.0
+ '@smithy/util-body-length-node': 2.1.0
+ '@smithy/util-defaults-mode-browser': 2.0.11
+ '@smithy/util-defaults-mode-node': 2.0.13
+ '@smithy/util-retry': 2.0.2
+ '@smithy/util-utf8': 2.0.0
+ tslib: 2.6.2
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/client-sts@3.418.0:
+ resolution: {integrity: sha512-L0n0Hw+Pm+BhXTN1bYZ0y4JAMArYgazdHf1nUSlEHndgZicCCuQtlMLxfo3i/IbtWi0dzfZcZ9d/MdAM8p4Jyw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-crypto/sha256-browser': 3.0.0
+ '@aws-crypto/sha256-js': 3.0.0
+ '@aws-sdk/credential-provider-node': 3.418.0
+ '@aws-sdk/middleware-host-header': 3.418.0
+ '@aws-sdk/middleware-logger': 3.418.0
+ '@aws-sdk/middleware-recursion-detection': 3.418.0
+ '@aws-sdk/middleware-sdk-sts': 3.418.0
+ '@aws-sdk/middleware-signing': 3.418.0
+ '@aws-sdk/middleware-user-agent': 3.418.0
+ '@aws-sdk/region-config-resolver': 3.418.0
+ '@aws-sdk/types': 3.418.0
+ '@aws-sdk/util-endpoints': 3.418.0
+ '@aws-sdk/util-user-agent-browser': 3.418.0
+ '@aws-sdk/util-user-agent-node': 3.418.0
+ '@smithy/config-resolver': 2.0.10
+ '@smithy/fetch-http-handler': 2.1.5
+ '@smithy/hash-node': 2.0.9
+ '@smithy/invalid-dependency': 2.0.9
+ '@smithy/middleware-content-length': 2.0.11
+ '@smithy/middleware-endpoint': 2.0.9
+ '@smithy/middleware-retry': 2.0.12
+ '@smithy/middleware-serde': 2.0.9
+ '@smithy/middleware-stack': 2.0.3
+ '@smithy/node-config-provider': 2.0.12
+ '@smithy/node-http-handler': 2.1.5
+ '@smithy/protocol-http': 3.0.5
+ '@smithy/smithy-client': 2.1.7
+ '@smithy/types': 2.3.3
+ '@smithy/url-parser': 2.0.9
+ '@smithy/util-base64': 2.0.0
+ '@smithy/util-body-length-browser': 2.0.0
+ '@smithy/util-body-length-node': 2.1.0
+ '@smithy/util-defaults-mode-browser': 2.0.11
+ '@smithy/util-defaults-mode-node': 2.0.13
+ '@smithy/util-retry': 2.0.2
+ '@smithy/util-utf8': 2.0.0
+ fast-xml-parser: 4.2.5
+ tslib: 2.6.2
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/credential-provider-env@3.418.0:
+ resolution: {integrity: sha512-e74sS+x63EZUBO+HaI8zor886YdtmULzwKdctsZp5/37Xho1CVUNtEC+fYa69nigBD9afoiH33I4JggaHgrekQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.418.0
+ '@smithy/property-provider': 2.0.10
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/credential-provider-ini@3.418.0:
+ resolution: {integrity: sha512-LTAeKKV85unlSqGNIeqEZ4N9gufaSoH+670n5YTUEk564zHCkUQW0PJomzLF5jKBco6Yfzv6rPBTukd+x9XWqw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/credential-provider-env': 3.418.0
+ '@aws-sdk/credential-provider-process': 3.418.0
+ '@aws-sdk/credential-provider-sso': 3.418.0
+ '@aws-sdk/credential-provider-web-identity': 3.418.0
+ '@aws-sdk/types': 3.418.0
+ '@smithy/credential-provider-imds': 2.0.12
+ '@smithy/property-provider': 2.0.10
+ '@smithy/shared-ini-file-loader': 2.0.11
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/credential-provider-node@3.418.0:
+ resolution: {integrity: sha512-VveTjtSC6m8YXj3fQDkMKEZuHv+CR2Z4u/NAN51Fi4xOtIWUtOBj5rfZ8HmBYoBjRF0DtRlPXuMiNnXAzTctfQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/credential-provider-env': 3.418.0
+ '@aws-sdk/credential-provider-ini': 3.418.0
+ '@aws-sdk/credential-provider-process': 3.418.0
+ '@aws-sdk/credential-provider-sso': 3.418.0
+ '@aws-sdk/credential-provider-web-identity': 3.418.0
+ '@aws-sdk/types': 3.418.0
+ '@smithy/credential-provider-imds': 2.0.12
+ '@smithy/property-provider': 2.0.10
+ '@smithy/shared-ini-file-loader': 2.0.11
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/credential-provider-process@3.418.0:
+ resolution: {integrity: sha512-xPbdm2WKz1oH6pTkrJoUmr3OLuqvvcPYTQX0IIlc31tmDwDWPQjXGGFD/vwZGIZIkKaFpFxVMgAzfFScxox7dw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.418.0
+ '@smithy/property-provider': 2.0.10
+ '@smithy/shared-ini-file-loader': 2.0.11
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/credential-provider-sso@3.418.0:
+ resolution: {integrity: sha512-tUF5Hg/HfaU5t+E7IuvohYlodSIlBXa28xAJPPFxhKrUnvP6AIoW6JLazOtCIQjQgJYEUILV29XX+ojUuITcaw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/client-sso': 3.418.0
+ '@aws-sdk/token-providers': 3.418.0
+ '@aws-sdk/types': 3.418.0
+ '@smithy/property-provider': 2.0.10
+ '@smithy/shared-ini-file-loader': 2.0.11
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/credential-provider-web-identity@3.418.0:
+ resolution: {integrity: sha512-do7ang565n9p3dS1JdsQY01rUfRx8vkxQqz5M8OlcEHBNiCdi2PvSjNwcBdrv/FKkyIxZb0TImOfBSt40hVdxQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.418.0
+ '@smithy/property-provider': 2.0.10
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/middleware-bucket-endpoint@3.418.0:
+ resolution: {integrity: sha512-gj/mj1UfbKkGbQ1N4YUvjTTp8BVs5fO1QAL2AjFJ+jfJOToLReX72aNEkm7sPGbHML0TqOY4cQbJuWYy+zdD5g==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.418.0
+ '@aws-sdk/util-arn-parser': 3.310.0
+ '@smithy/node-config-provider': 2.0.12
+ '@smithy/protocol-http': 3.0.5
+ '@smithy/types': 2.3.3
+ '@smithy/util-config-provider': 2.0.0
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/middleware-expect-continue@3.418.0:
+ resolution: {integrity: sha512-6x4rcIj685EmqDLQkbWoCur3Dg5DRClHMen6nHXmD3CR5Xyt3z1Gk/+jmZICxyJo9c6M4AeZht8o95BopkmYAQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.418.0
+ '@smithy/protocol-http': 3.0.5
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/middleware-flexible-checksums@3.418.0:
+ resolution: {integrity: sha512-3O203dqS2JU5P1TAAbo7p1qplXQh59pevw9nqzPVb3EG8B+mSucVf2kKmF7kGHqKSk+nK/mB/4XGSsZBzGt6Wg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-crypto/crc32': 3.0.0
+ '@aws-crypto/crc32c': 3.0.0
+ '@aws-sdk/types': 3.418.0
+ '@smithy/is-array-buffer': 2.0.0
+ '@smithy/protocol-http': 3.0.5
+ '@smithy/types': 2.3.3
+ '@smithy/util-utf8': 2.0.0
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/middleware-host-header@3.418.0:
+ resolution: {integrity: sha512-LrMTdzalkPw/1ujLCKPLwCGvPMCmT4P+vOZQRbSEVZPnlZk+Aj++aL/RaHou0jL4kJH3zl8iQepriBt4a7UvXQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.418.0
+ '@smithy/protocol-http': 3.0.5
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/middleware-location-constraint@3.418.0:
+ resolution: {integrity: sha512-cc8M3VEaESHJhDsDV8tTpt2QYUprDWhvAVVSlcL43cTdZ54Quc0W+toDiaVOUlwrAZz2Y7g5NDj22ibJGFbOvw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.418.0
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/middleware-logger@3.418.0:
+ resolution: {integrity: sha512-StKGmyPVfoO/wdNTtKemYwoJsqIl4l7oqarQY7VSf2Mp3mqaa+njLViHsQbirYpyqpgUEusOnuTlH5utxJ1NsQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.418.0
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/middleware-recursion-detection@3.418.0:
+ resolution: {integrity: sha512-kKFrIQglBLUFPbHSDy1+bbe3Na2Kd70JSUC3QLMbUHmqipXN8KeXRfAj7vTv97zXl0WzG0buV++WcNwOm1rFjg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.418.0
+ '@smithy/protocol-http': 3.0.5
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/middleware-sdk-s3@3.418.0:
+ resolution: {integrity: sha512-rei32LF45SyqL3NlWDjEOfMwAca9A5F4QgUyXJqvASc43oWC1tJnLIhiCxNh8qkWAiRyRzFpcanTeqyaRSsZpA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.418.0
+ '@aws-sdk/util-arn-parser': 3.310.0
+ '@smithy/protocol-http': 3.0.5
+ '@smithy/smithy-client': 2.1.7
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/middleware-sdk-sts@3.418.0:
+ resolution: {integrity: sha512-cW8ijrCTP+mgihvcq4+TbhAcE/we5lFl4ydRqvTdtcSnYQAVQADg47rnTScQiFsPFEB3NKq7BGeyTJF9MKolPA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/middleware-signing': 3.418.0
+ '@aws-sdk/types': 3.418.0
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/middleware-signing@3.418.0:
+ resolution: {integrity: sha512-onvs5KoYQE8OlOE740RxWBGtsUyVIgAo0CzRKOQO63ZEYqpL1Os+MS1CGzdNhvQnJgJruE1WW+Ix8fjN30zKPA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.418.0
+ '@smithy/property-provider': 2.0.10
+ '@smithy/protocol-http': 3.0.5
+ '@smithy/signature-v4': 2.0.9
+ '@smithy/types': 2.3.3
+ '@smithy/util-middleware': 2.0.2
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/middleware-ssec@3.418.0:
+ resolution: {integrity: sha512-J7K+5h6aP7IYMlu/NwHEIjb0+WDu1eFvO8TCPo6j1H9xYRi8B/6h+6pa9Rk9IgRUzFnrdlDu9FazG8Tp0KKLyg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.418.0
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/middleware-user-agent@3.418.0:
+ resolution: {integrity: sha512-Jdcztg9Tal9SEAL0dKRrnpKrm6LFlWmAhvuwv0dQ7bNTJxIxyEFbpqdgy7mpQHsLVZgq1Aad/7gT/72c9igyZw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.418.0
+ '@aws-sdk/util-endpoints': 3.418.0
+ '@smithy/protocol-http': 3.0.5
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/region-config-resolver@3.418.0:
+ resolution: {integrity: sha512-lJRZ/9TjZU6yLz+mAwxJkcJZ6BmyYoIJVo1p5+BN//EFdEmC8/c0c9gXMRzfISV/mqWSttdtccpAyN4/goHTYA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/node-config-provider': 2.0.12
+ '@smithy/types': 2.3.3
+ '@smithy/util-config-provider': 2.0.0
+ '@smithy/util-middleware': 2.0.2
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/s3-request-presigner@3.418.0:
+ resolution: {integrity: sha512-fR/46jnNW2tpebUH5dSv0teZ1dXXgf/QjSxqnhmWFSs3CAxMNd6W54QqgbOMPdRBGFsVJH/OBu7bl7EhEBbY4w==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/signature-v4-multi-region': 3.418.0
+ '@aws-sdk/types': 3.418.0
+ '@aws-sdk/util-format-url': 3.418.0
+ '@smithy/middleware-endpoint': 2.0.9
+ '@smithy/protocol-http': 3.0.5
+ '@smithy/smithy-client': 2.1.7
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/signature-v4-multi-region@3.418.0:
+ resolution: {integrity: sha512-LeVYMZeUQUURFqDf4yZxTEv016g64hi0LqYBjU0mjwd8aPc0k6hckwvshezc80jCNbuLyjNfQclvlg3iFliItQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.418.0
+ '@smithy/protocol-http': 3.0.5
+ '@smithy/signature-v4': 2.0.9
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/token-providers@3.418.0:
+ resolution: {integrity: sha512-9P7Q0VN0hEzTngy3Sz5eya2qEOEf0Q8qf1vB3um0gE6ID6EVAdz/nc/DztfN32MFxk8FeVBrCP5vWdoOzmd72g==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-crypto/sha256-browser': 3.0.0
+ '@aws-crypto/sha256-js': 3.0.0
+ '@aws-sdk/middleware-host-header': 3.418.0
+ '@aws-sdk/middleware-logger': 3.418.0
+ '@aws-sdk/middleware-recursion-detection': 3.418.0
+ '@aws-sdk/middleware-user-agent': 3.418.0
+ '@aws-sdk/types': 3.418.0
+ '@aws-sdk/util-endpoints': 3.418.0
+ '@aws-sdk/util-user-agent-browser': 3.418.0
+ '@aws-sdk/util-user-agent-node': 3.418.0
+ '@smithy/config-resolver': 2.0.10
+ '@smithy/fetch-http-handler': 2.1.5
+ '@smithy/hash-node': 2.0.9
+ '@smithy/invalid-dependency': 2.0.9
+ '@smithy/middleware-content-length': 2.0.11
+ '@smithy/middleware-endpoint': 2.0.9
+ '@smithy/middleware-retry': 2.0.12
+ '@smithy/middleware-serde': 2.0.9
+ '@smithy/middleware-stack': 2.0.3
+ '@smithy/node-config-provider': 2.0.12
+ '@smithy/node-http-handler': 2.1.5
+ '@smithy/property-provider': 2.0.10
+ '@smithy/protocol-http': 3.0.5
+ '@smithy/shared-ini-file-loader': 2.0.11
+ '@smithy/smithy-client': 2.1.7
+ '@smithy/types': 2.3.3
+ '@smithy/url-parser': 2.0.9
+ '@smithy/util-base64': 2.0.0
+ '@smithy/util-body-length-browser': 2.0.0
+ '@smithy/util-body-length-node': 2.1.0
+ '@smithy/util-defaults-mode-browser': 2.0.11
+ '@smithy/util-defaults-mode-node': 2.0.13
+ '@smithy/util-retry': 2.0.2
+ '@smithy/util-utf8': 2.0.0
+ tslib: 2.6.2
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/types@3.418.0:
+ resolution: {integrity: sha512-y4PQSH+ulfFLY0+FYkaK4qbIaQI9IJNMO2xsxukW6/aNoApNymN1D2FSi2la8Qbp/iPjNDKsG8suNPm9NtsWXQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/util-arn-parser@3.310.0:
+ resolution: {integrity: sha512-jL8509owp/xB9+Or0pvn3Fe+b94qfklc2yPowZZIFAkFcCSIdkIglz18cPDWnYAcy9JGewpMS1COXKIUhZkJsA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/util-endpoints@3.418.0:
+ resolution: {integrity: sha512-sYSDwRTl7yE7LhHkPzemGzmIXFVHSsi3AQ1KeNEk84eBqxMHHcCc2kqklaBk2roXWe50QDgRMy1ikZUxvtzNHQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.418.0
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/util-format-url@3.418.0:
+ resolution: {integrity: sha512-7/Xy+8J1txuOYOKsez6vpKTIkHYIIX4c7anjp/aQgUQL23FDwkPisj56cIlevJ7useGugnYw1rUR6fMULGzQ/g==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.418.0
+ '@smithy/querystring-builder': 2.0.9
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/util-locate-window@3.310.0:
+ resolution: {integrity: sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/util-user-agent-browser@3.418.0:
+ resolution: {integrity: sha512-c4p4mc0VV/jIeNH0lsXzhJ1MpWRLuboGtNEpqE4s1Vl9ck2amv9VdUUZUmHbg+bVxlMgRQ4nmiovA4qIrqGuyg==}
+ dependencies:
+ '@aws-sdk/types': 3.418.0
+ '@smithy/types': 2.3.3
+ bowser: 2.11.0
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/util-user-agent-node@3.418.0:
+ resolution: {integrity: sha512-BXMskXFtg+dmzSCgmnWOffokxIbPr1lFqa1D9kvM3l3IFRiFGx2IyDg+8MAhq11aPDLvoa/BDuQ0Yqma5izOhg==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ aws-crt: '>=1.0.0'
+ peerDependenciesMeta:
+ aws-crt:
+ optional: true
+ dependencies:
+ '@aws-sdk/types': 3.418.0
+ '@smithy/node-config-provider': 2.0.12
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/util-utf8-browser@3.259.0:
+ resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@aws-sdk/xml-builder@3.310.0:
+ resolution: {integrity: sha512-TqELu4mOuSIKQCqj63fGVs86Yh+vBx5nHRpWKNUNhB2nPTpfbziTs5c1X358be3peVWA4wPxW7Nt53KIg1tnNw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
/@babel/code-frame@7.22.13:
resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==}
engines: {node: '>=6.9.0'}
@@ -1070,7 +1668,7 @@ packages:
resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/types': 7.22.5
+ '@babel/types': 7.23.0
dev: true
/@babel/helper-builder-binary-assignment-operator-visitor@7.22.5:
@@ -1229,7 +1827,7 @@ packages:
resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/types': 7.22.5
+ '@babel/types': 7.23.0
dev: true
/@babel/helper-module-transforms@7.23.0(@babel/core@7.23.0):
@@ -1322,14 +1920,9 @@ packages:
engines: {node: '>=6.9.0'}
dev: true
- /@babel/helper-validator-identifier@7.22.15:
- resolution: {integrity: sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==}
- engines: {node: '>=6.9.0'}
-
/@babel/helper-validator-identifier@7.22.20:
resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==}
engines: {node: '>=6.9.0'}
- dev: true
/@babel/helper-validator-option@7.22.15:
resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==}
@@ -1360,7 +1953,7 @@ packages:
resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/helper-validator-identifier': 7.22.15
+ '@babel/helper-validator-identifier': 7.22.20
chalk: 2.4.2
js-tokens: 4.0.0
@@ -2510,15 +3103,6 @@ packages:
- supports-color
dev: true
- /@babel/types@7.22.5:
- resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/helper-string-parser': 7.22.5
- '@babel/helper-validator-identifier': 7.22.15
- to-fast-properties: 2.0.0
- dev: true
-
/@babel/types@7.23.0:
resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==}
engines: {node: '>=6.9.0'}
@@ -4272,8 +4856,8 @@ packages:
- encoding
dev: false
- /@octokit/openapi-types@18.0.0:
- resolution: {integrity: sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==}
+ /@octokit/openapi-types@18.1.1:
+ resolution: {integrity: sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw==}
dev: false
/@octokit/plugin-paginate-rest@6.1.2(@octokit/core@4.2.4):
@@ -4347,13 +4931,13 @@ packages:
/@octokit/types@10.0.0:
resolution: {integrity: sha512-Vm8IddVmhCgU1fxC1eyinpwqzXPEYu0NrYzD3YZjlGjyftdLBTeqNblRC0jmJmgxbJIsQlyogVeGnrNaaMVzIg==}
dependencies:
- '@octokit/openapi-types': 18.0.0
+ '@octokit/openapi-types': 18.1.1
dev: false
/@octokit/types@9.3.2:
resolution: {integrity: sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==}
dependencies:
- '@octokit/openapi-types': 18.0.0
+ '@octokit/openapi-types': 18.1.1
dev: false
/@one-ini/wasm@0.1.1:
@@ -6223,6 +6807,433 @@ packages:
'@sinonjs/commons': 2.0.0
dev: true
+ /@smithy/abort-controller@2.0.9:
+ resolution: {integrity: sha512-8liHOEbx99xcy4VndeQNQhyA0LS+e7UqsuRnDTSIA26IKBv/7vA9w09KOd4fgNULrvX0r3WpA6cwsQTRJpSWkg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/chunked-blob-reader-native@2.0.0:
+ resolution: {integrity: sha512-HM8V2Rp1y8+1343tkZUKZllFhEQPNmpNdgFAncbTsxkZ18/gqjk23XXv3qGyXWp412f3o43ZZ1UZHVcHrpRnCQ==}
+ dependencies:
+ '@smithy/util-base64': 2.0.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/chunked-blob-reader@2.0.0:
+ resolution: {integrity: sha512-k+J4GHJsMSAIQPChGBrjEmGS+WbPonCXesoqP9fynIqjn7rdOThdH8FAeCmokP9mxTYKQAKoHCLPzNlm6gh7Wg==}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/config-resolver@2.0.10:
+ resolution: {integrity: sha512-MwToDsCltHjumkCuRn883qoNeJUawc2b8sX9caSn5vLz6J5crU1IklklNxWCaMO2z2nDL91Po4b/aI1eHv5PfA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/node-config-provider': 2.0.12
+ '@smithy/types': 2.3.3
+ '@smithy/util-config-provider': 2.0.0
+ '@smithy/util-middleware': 2.0.2
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/credential-provider-imds@2.0.12:
+ resolution: {integrity: sha512-S3lUNe+2fEFwKcmiQniXGPXt69vaHvQCw8kYQOBL4OvJsgwfpkIYDZdroHbTshYi0M6WaKL26Mw+hvgma6dZqA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/node-config-provider': 2.0.12
+ '@smithy/property-provider': 2.0.10
+ '@smithy/types': 2.3.3
+ '@smithy/url-parser': 2.0.9
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/eventstream-codec@2.0.9:
+ resolution: {integrity: sha512-sy0pcbKnawt1iu+qCoSFbs/h9PAaUgvlJEO3lqkE1HFFj4p5RgL98vH+9CyDoj6YY82cG5XsorFmcLqQJHTOYw==}
+ dependencies:
+ '@aws-crypto/crc32': 3.0.0
+ '@smithy/types': 2.3.3
+ '@smithy/util-hex-encoding': 2.0.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/eventstream-serde-browser@2.0.9:
+ resolution: {integrity: sha512-g70enHZau2hGj1Uxedrn8AAjH9E7RnpHdwkuPKapagah53ztbwI7xaNeA5SLD4MjSjdrjathyQBCQKIzwXrR1g==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/eventstream-serde-universal': 2.0.9
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/eventstream-serde-config-resolver@2.0.9:
+ resolution: {integrity: sha512-+15GzIMtdSuRPyuCeGZ7gzgD94Ejv6eM1vKcqvipdzS+i36KTZ2A9aZsJk+gDw//OCD1EMx9SqpV6bUvMS4PWg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/eventstream-serde-node@2.0.9:
+ resolution: {integrity: sha512-UEJcvN2WXXEjkewtFkj1S2HSZLbyCgzUnfoFPrTuKy4+xRfakO5dNx6ws2h1pvb8Vc7mTuBL+Webl1R5mnVsXA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/eventstream-serde-universal': 2.0.9
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/eventstream-serde-universal@2.0.9:
+ resolution: {integrity: sha512-dAHQEYlK/1tjjieBE7jjXwpLQFgKdkvC4HSQf+/Jj4t34XbUmXWHbw92/EuLp9+vjNB/JQPvkwpMtN31jxIDeg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/eventstream-codec': 2.0.9
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/fetch-http-handler@2.1.5:
+ resolution: {integrity: sha512-BIeCHGfr5JCGN+EMTwZK74ELvjPXOIrI7OLM5OhZJJ6AmZyRv2S9ANJk18AtLwht0TsSm+8WoXIEp8LuxNgUyA==}
+ dependencies:
+ '@smithy/protocol-http': 3.0.5
+ '@smithy/querystring-builder': 2.0.9
+ '@smithy/types': 2.3.3
+ '@smithy/util-base64': 2.0.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/hash-blob-browser@2.0.9:
+ resolution: {integrity: sha512-JNWOV1ci9vIg4U82klNr07bZXsA6OCumqHugpvZdvvn6cNGwTa4rvpS5FpPcqKeh3Rdg1rr4h8g+X6zyOamnZw==}
+ dependencies:
+ '@smithy/chunked-blob-reader': 2.0.0
+ '@smithy/chunked-blob-reader-native': 2.0.0
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/hash-node@2.0.9:
+ resolution: {integrity: sha512-XP3yWd5wyCtiVmsY5Nuq/FUwyCEQ6YG7DsvRh7ThldNukGpCzyFdP8eivZJVjn4Fx7oYrrOnVoYZ0WEgpW1AvQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.3.3
+ '@smithy/util-buffer-from': 2.0.0
+ '@smithy/util-utf8': 2.0.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/hash-stream-node@2.0.9:
+ resolution: {integrity: sha512-3nrkMpiOrhsJvJS6K4OkP0qvA3U5r8PpseXULeGd1ZD1EbfcZ30Lvl72FGaaHskwWZyTPR4czr1d/RwLRCVHNA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.3.3
+ '@smithy/util-utf8': 2.0.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/invalid-dependency@2.0.9:
+ resolution: {integrity: sha512-RuJqhYf8nViK96IIO9JbTtjDUuFItVfuuJhWw2yk7fv67yltQ7fZD6IQ2OsHHluoVmstnQJuCg5raXJR696Ubw==}
+ dependencies:
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/is-array-buffer@2.0.0:
+ resolution: {integrity: sha512-z3PjFjMyZNI98JFRJi/U0nGoLWMSJlDjAW4QUX2WNZLas5C0CmVV6LJ01JI0k90l7FvpmixjWxPFmENSClQ7ug==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/md5-js@2.0.9:
+ resolution: {integrity: sha512-ALHGoTZDgBXBbjCpQzVy6hpa6Rdr6e2jyEw51d6CQOUpHkUnFH7G96UWhVwUnkP0xozPCvmWy+3+j2QUX+oK9w==}
+ dependencies:
+ '@smithy/types': 2.3.3
+ '@smithy/util-utf8': 2.0.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/middleware-content-length@2.0.11:
+ resolution: {integrity: sha512-Malj4voNTL4+a5ZL3a6+Ij7JTUMTa2R7c3ZIBzMxN5OUUgAspU7uFi1Q97f4B0afVh2joQBAWH5IQJUG25nl8g==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/protocol-http': 3.0.5
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/middleware-endpoint@2.0.9:
+ resolution: {integrity: sha512-72/o8R6AAO4+nyTI6h4z6PYGTSA4dr1M7tZz29U8DEUHuh1YkhC77js0P6RyF9G0wDLuYqxb+Yh0crI5WG2pJg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/middleware-serde': 2.0.9
+ '@smithy/types': 2.3.3
+ '@smithy/url-parser': 2.0.9
+ '@smithy/util-middleware': 2.0.2
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/middleware-retry@2.0.12:
+ resolution: {integrity: sha512-YQ/ufXX4/d9/+Jf1QQ4J+CVeupC7BW52qldBTvRV33PDX9vxndlAwkFwzBcmnUFC3Hjf1//HW6I77EItcjNSCA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/node-config-provider': 2.0.12
+ '@smithy/protocol-http': 3.0.5
+ '@smithy/service-error-classification': 2.0.2
+ '@smithy/types': 2.3.3
+ '@smithy/util-middleware': 2.0.2
+ '@smithy/util-retry': 2.0.2
+ tslib: 2.6.2
+ uuid: 8.3.2
+ dev: false
+
+ /@smithy/middleware-serde@2.0.9:
+ resolution: {integrity: sha512-GVbauxrr6WmtCaesakktg3t5LR/yDbajpC7KkWc8rtCpddMI4ShAVO5Q6DqwX8MDFi4CLaY8H7eTGcxhl3jbLg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/middleware-stack@2.0.3:
+ resolution: {integrity: sha512-AlhPmbwpkC4lQBVaVHXczmjFvsAhDHhrakqLt038qFLotnJcvDLhmMzAtu23alBeOSkKxkTQq0LsAt2N0WpAbw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/node-config-provider@2.0.12:
+ resolution: {integrity: sha512-df9y9ywv+JmS40Y60ZqJ4jfZiTCmyHQffwzIqjBjLJLJl0imf9F6DWBd+jiEWHvlohR+sFhyY+KL/qzKgnAq1A==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/property-provider': 2.0.10
+ '@smithy/shared-ini-file-loader': 2.0.11
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/node-http-handler@2.1.5:
+ resolution: {integrity: sha512-52uF+BrZaFiBh+NT/bADiVDCQO91T+OwDRsuaAeWZC1mlCXFjAPPQdxeQohtuYOe9m7mPP/xIMNiqbe8jvndHA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/abort-controller': 2.0.9
+ '@smithy/protocol-http': 3.0.5
+ '@smithy/querystring-builder': 2.0.9
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/property-provider@2.0.10:
+ resolution: {integrity: sha512-YMBVfh0ZMmJtbsUn+WfSwR32iRljZPdRN0Tn2GAcdJ+ejX8WrBXD7Z0jIkQDrQZr8fEuuv5x8WxMIj+qVbsPQw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/protocol-http@3.0.5:
+ resolution: {integrity: sha512-3t3fxj+ip4EPHRC2fQ0JimMxR/qCQ1LSQJjZZVZFgROnFLYWPDgUZqpoi7chr+EzatxJVXF/Rtoi5yLHOWCoZQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/querystring-builder@2.0.9:
+ resolution: {integrity: sha512-Yt6CPF4j3j1cuwod/DRflbuXxBFjJm7gAjy6W1RE21Rz5/kfGFqiZBXWmmXwGtnnhiLThYwoHK4S6/TQtnx0Fg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.3.3
+ '@smithy/util-uri-escape': 2.0.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/querystring-parser@2.0.9:
+ resolution: {integrity: sha512-U6z4N743s4vrcxPW8p8+reLV0PjMCYEyb1/wtMVvv3VnbJ74gshdI8SR1sBnEh95cF8TxonmX5IxY25tS9qGfg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/service-error-classification@2.0.2:
+ resolution: {integrity: sha512-GTUd2j63gKy7A+ggvSdn2hc4sejG7LWfE+ZMF17vzWoNyqERWbRP7HTPS0d0Lwg1p6OQCAzvNigSrEIWVFt6iA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.3.3
+ dev: false
+
+ /@smithy/shared-ini-file-loader@2.0.11:
+ resolution: {integrity: sha512-Sf0u5C5px6eykXi6jImDTp+edvG3REtPjXnFWU/J+b7S2wkXwUqFXqBL5DdM4zC1F+M8u57ZT7NRqDwMOw7/Tw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/signature-v4@2.0.9:
+ resolution: {integrity: sha512-RkHP0joSI1j2EI+mU55sOi33/aMMkKdL9ZY+SWrPxsiCe1oyzzuy79Tpn8X7uT+t0ilNmQlwPpkP/jUy940pEA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/eventstream-codec': 2.0.9
+ '@smithy/is-array-buffer': 2.0.0
+ '@smithy/types': 2.3.3
+ '@smithy/util-hex-encoding': 2.0.0
+ '@smithy/util-middleware': 2.0.2
+ '@smithy/util-uri-escape': 2.0.0
+ '@smithy/util-utf8': 2.0.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/smithy-client@2.1.7:
+ resolution: {integrity: sha512-r6T/oiBQ8vCbGqObH4/h0YqD0jFB1hAS9KFRmuTfaNJueu/L2hjmjqFjv3PV5lkbNHTgUYraSv4cFQ1naxiELQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/middleware-stack': 2.0.3
+ '@smithy/types': 2.3.3
+ '@smithy/util-stream': 2.0.12
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/types@2.3.3:
+ resolution: {integrity: sha512-zTdIPR9PvFVNRdIKMQu4M5oyTaycIbUqLheQqaOi9rTWPkgjGO2wDBxMA1rBHQB81aqAEv+DbSS4jfKyQMnXRA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/url-parser@2.0.9:
+ resolution: {integrity: sha512-NBnJ0NiY8z6E82Xd5VYUFQfKwK/wA/+QkKmpYUYP+cpH3aCzE6g2gvixd9vQKYjsIdRfNPCf+SFAozt8ljozOw==}
+ dependencies:
+ '@smithy/querystring-parser': 2.0.9
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-base64@2.0.0:
+ resolution: {integrity: sha512-Zb1E4xx+m5Lud8bbeYi5FkcMJMnn+1WUnJF3qD7rAdXpaL7UjkFQLdmW5fHadoKbdHpwH9vSR8EyTJFHJs++tA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/util-buffer-from': 2.0.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-body-length-browser@2.0.0:
+ resolution: {integrity: sha512-JdDuS4ircJt+FDnaQj88TzZY3+njZ6O+D3uakS32f2VNnDo3vyEuNdBOh/oFd8Df1zSZOuH1HEChk2AOYDezZg==}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-body-length-node@2.1.0:
+ resolution: {integrity: sha512-/li0/kj/y3fQ3vyzn36NTLGmUwAICb7Jbe/CsWCktW363gh1MOcpEcSO3mJ344Gv2dqz8YJCLQpb6hju/0qOWw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-buffer-from@2.0.0:
+ resolution: {integrity: sha512-/YNnLoHsR+4W4Vf2wL5lGv0ksg8Bmk3GEGxn2vEQt52AQaPSCuaO5PM5VM7lP1K9qHRKHwrPGktqVoAHKWHxzw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/is-array-buffer': 2.0.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-config-provider@2.0.0:
+ resolution: {integrity: sha512-xCQ6UapcIWKxXHEU4Mcs2s7LcFQRiU3XEluM2WcCjjBtQkUN71Tb+ydGmJFPxMUrW/GWMgQEEGipLym4XG0jZg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-defaults-mode-browser@2.0.11:
+ resolution: {integrity: sha512-0syV1Mz/mCQ7CG/MHKQfH+w86xq59jpD0EOXv5oe0WBXLmq2lWPpVHl2Y6+jQ+/9fYzyZ5NF+NC/WEIuiv690A==}
+ engines: {node: '>= 10.0.0'}
+ dependencies:
+ '@smithy/property-provider': 2.0.10
+ '@smithy/smithy-client': 2.1.7
+ '@smithy/types': 2.3.3
+ bowser: 2.11.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-defaults-mode-node@2.0.13:
+ resolution: {integrity: sha512-6BtCHYdw5Z8r6KpW8tRCc3yURgvcQwfIEeHhR70BeSOfx8T/TXPPjb8A+K45+KASspa3fzrsSxeIwB0sAeMoHA==}
+ engines: {node: '>= 10.0.0'}
+ dependencies:
+ '@smithy/config-resolver': 2.0.10
+ '@smithy/credential-provider-imds': 2.0.12
+ '@smithy/node-config-provider': 2.0.12
+ '@smithy/property-provider': 2.0.10
+ '@smithy/smithy-client': 2.1.7
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-hex-encoding@2.0.0:
+ resolution: {integrity: sha512-c5xY+NUnFqG6d7HFh1IFfrm3mGl29lC+vF+geHv4ToiuJCBmIfzx6IeHLg+OgRdPFKDXIw6pvi+p3CsscaMcMA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-middleware@2.0.2:
+ resolution: {integrity: sha512-UGPZM+Ja/vke5pc/S8G0LNiHpVirtjppsXO+GK9m9wbzRGzPJTfnZA/gERUUN/AfxEy/8SL7U1kd7u4t2X8K1w==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-retry@2.0.2:
+ resolution: {integrity: sha512-ovWiayUB38moZcLhSFFfUgB2IMb7R1JfojU20qSahjxAgfOZvDWme3eOYUMtAVnouZ9kYJiFgHLy27qRH4NeeA==}
+ engines: {node: '>= 14.0.0'}
+ dependencies:
+ '@smithy/service-error-classification': 2.0.2
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-stream@2.0.12:
+ resolution: {integrity: sha512-FOCpRLaj6gvSyUC5mJAACT+sPMPmp9sD1o+hVbUH/QxwZfulypA3ZIFdAg/59/IY0d/1Q4CTztsiHEB5LgjN4g==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/fetch-http-handler': 2.1.5
+ '@smithy/node-http-handler': 2.1.5
+ '@smithy/types': 2.3.3
+ '@smithy/util-base64': 2.0.0
+ '@smithy/util-buffer-from': 2.0.0
+ '@smithy/util-hex-encoding': 2.0.0
+ '@smithy/util-utf8': 2.0.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-uri-escape@2.0.0:
+ resolution: {integrity: sha512-ebkxsqinSdEooQduuk9CbKcI+wheijxEb3utGXkCoYQkJnwTnLbH1JXGimJtUkQwNQbsbuYwG2+aFVyZf5TLaw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-utf8@2.0.0:
+ resolution: {integrity: sha512-rctU1VkziY84n5OXe3bPNpKR001ZCME2JCaBBFgtiM2hfKbHFudc/BkMuPab8hRbLd0j3vbnBTTZ1igBf0wgiQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/util-buffer-from': 2.0.0
+ tslib: 2.6.2
+ dev: false
+
+ /@smithy/util-waiter@2.0.9:
+ resolution: {integrity: sha512-Hy9Cs0FtIacC1aVFk98bm/7CYqim9fnHAPRnV/SB2mj02ExYs/9Dn5SrNQmtTBTLCn65KqYnNVBNS8GuGpZOOw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@smithy/abort-controller': 2.0.9
+ '@smithy/types': 2.3.3
+ tslib: 2.6.2
+ dev: false
+
/@streamparser/json@0.0.17:
resolution: {integrity: sha512-mW54K6CTVJVLwXRB6kSS1xGWPmtTuXAStWnlvtesmcySgtop+eFPWOywBFPpJO4UD173epYsPSP6HSW8kuqN8w==}
dev: false
@@ -6559,7 +7570,7 @@ packages:
/@types/mdast@3.0.10:
resolution: {integrity: sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==}
dependencies:
- '@types/unist': 2.0.6
+ '@types/unist': 3.0.0
dev: false
/@types/mdast@4.0.0:
@@ -6831,8 +7842,8 @@ packages:
- typescript
dev: true
- /@typescript-eslint/parser@6.7.0(eslint@8.50.0)(typescript@5.2.2):
- resolution: {integrity: sha512-jZKYwqNpNm5kzPVP5z1JXAuxjtl2uG+5NpaMocFPTNC2EdYIgbXIPImObOkhbONxtFTTdoZstLZefbaK+wXZng==}
+ /@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.2.2):
+ resolution: {integrity: sha512-TlutE+iep2o7R8Lf+yoer3zU6/0EAUc8QIBB3GYBc1KGz4c4TRm83xwXUZVPlZ6YCLss4r77jbu6j3sendJoiQ==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
eslint: ^7.0.0 || ^8.0.0
@@ -6841,10 +7852,10 @@ packages:
typescript:
optional: true
dependencies:
- '@typescript-eslint/scope-manager': 6.7.0
- '@typescript-eslint/types': 6.7.0
- '@typescript-eslint/typescript-estree': 6.7.0(typescript@5.2.2)
- '@typescript-eslint/visitor-keys': 6.7.0
+ '@typescript-eslint/scope-manager': 6.7.3
+ '@typescript-eslint/types': 6.7.3
+ '@typescript-eslint/typescript-estree': 6.7.3(typescript@5.2.2)
+ '@typescript-eslint/visitor-keys': 6.7.3
debug: 4.3.4
eslint: 8.50.0
typescript: 5.2.2
@@ -6880,20 +7891,20 @@ packages:
'@typescript-eslint/visitor-keys': 5.54.0
dev: true
- /@typescript-eslint/scope-manager@6.6.0:
- resolution: {integrity: sha512-pT08u5W/GT4KjPUmEtc2kSYvrH8x89cVzkA0Sy2aaOUIw6YxOIjA8ilwLr/1fLjOedX1QAuBpG9XggWqIIfERw==}
+ /@typescript-eslint/scope-manager@6.2.1:
+ resolution: {integrity: sha512-UCqBF9WFqv64xNsIEPfBtenbfodPXsJ3nPAr55mGPkQIkiQvgoWNo+astj9ZUfJfVKiYgAZDMnM6dIpsxUMp3Q==}
engines: {node: ^16.0.0 || >=18.0.0}
dependencies:
- '@typescript-eslint/types': 6.6.0
- '@typescript-eslint/visitor-keys': 6.6.0
+ '@typescript-eslint/types': 6.2.1
+ '@typescript-eslint/visitor-keys': 6.2.1
dev: true
- /@typescript-eslint/scope-manager@6.7.0:
- resolution: {integrity: sha512-lAT1Uau20lQyjoLUQ5FUMSX/dS07qux9rYd5FGzKz/Kf8W8ccuvMyldb8hadHdK/qOI7aikvQWqulnEq2nCEYA==}
+ /@typescript-eslint/scope-manager@6.7.3:
+ resolution: {integrity: sha512-wOlo0QnEou9cHO2TdkJmzF7DFGvAKEnB82PuPNHpT8ZKKaZu6Bm63ugOTn9fXNJtvuDPanBc78lGUGGytJoVzQ==}
engines: {node: ^16.0.0 || >=18.0.0}
dependencies:
- '@typescript-eslint/types': 6.7.0
- '@typescript-eslint/visitor-keys': 6.7.0
+ '@typescript-eslint/types': 6.7.3
+ '@typescript-eslint/visitor-keys': 6.7.3
dev: true
/@typescript-eslint/scope-manager@6.7.4:
@@ -6928,13 +7939,13 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
- /@typescript-eslint/types@6.6.0:
- resolution: {integrity: sha512-CB6QpJQ6BAHlJXdwUmiaXDBmTqIE2bzGTDLADgvqtHWuhfNP3rAOK7kAgRMAET5rDRr9Utt+qAzRBdu3AhR3sg==}
+ /@typescript-eslint/types@6.2.1:
+ resolution: {integrity: sha512-528bGcoelrpw+sETlyM91k51Arl2ajbNT9L4JwoXE2dvRe1yd8Q64E4OL7vHYw31mlnVsf+BeeLyAZUEQtqahQ==}
engines: {node: ^16.0.0 || >=18.0.0}
dev: true
- /@typescript-eslint/types@6.7.0:
- resolution: {integrity: sha512-ihPfvOp7pOcN/ysoj0RpBPOx3HQTJTrIN8UZK+WFd3/iDeFHHqeyYxa4hQk4rMhsz9H9mXpR61IzwlBVGXtl9Q==}
+ /@typescript-eslint/types@6.7.3:
+ resolution: {integrity: sha512-4g+de6roB2NFcfkZb439tigpAMnvEIg3rIjWQ+EM7IBaYt/CdJt6em9BJ4h4UpdgaBWdmx2iWsafHTrqmgIPNw==}
engines: {node: ^16.0.0 || >=18.0.0}
dev: true
@@ -6963,8 +7974,8 @@ packages:
- supports-color
dev: true
- /@typescript-eslint/typescript-estree@6.6.0(typescript@5.2.2):
- resolution: {integrity: sha512-hMcTQ6Al8MP2E6JKBAaSxSVw5bDhdmbCEhGW/V8QXkb9oNsFkA4SBuOMYVPxD3jbtQ4R/vSODBsr76R6fP3tbA==}
+ /@typescript-eslint/typescript-estree@6.2.1(typescript@5.2.2):
+ resolution: {integrity: sha512-G+UJeQx9AKBHRQBpmvr8T/3K5bJa485eu+4tQBxFq0KoT22+jJyzo1B50JDT9QdC1DEmWQfdKsa8ybiNWYsi0Q==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
typescript: '*'
@@ -6972,8 +7983,8 @@ packages:
typescript:
optional: true
dependencies:
- '@typescript-eslint/types': 6.6.0
- '@typescript-eslint/visitor-keys': 6.6.0
+ '@typescript-eslint/types': 6.2.1
+ '@typescript-eslint/visitor-keys': 6.2.1
debug: 4.3.4
globby: 11.1.0
is-glob: 4.0.3
@@ -6984,8 +7995,8 @@ packages:
- supports-color
dev: true
- /@typescript-eslint/typescript-estree@6.7.0(typescript@5.2.2):
- resolution: {integrity: sha512-dPvkXj3n6e9yd/0LfojNU8VMUGHWiLuBZvbM6V6QYD+2qxqInE7J+J/ieY2iGwR9ivf/R/haWGkIj04WVUeiSQ==}
+ /@typescript-eslint/typescript-estree@6.7.3(typescript@5.2.2):
+ resolution: {integrity: sha512-YLQ3tJoS4VxLFYHTw21oe1/vIZPRqAO91z6Uv0Ss2BKm/Ag7/RVQBcXTGcXhgJMdA4U+HrKuY5gWlJlvoaKZ5g==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
typescript: '*'
@@ -6993,8 +8004,8 @@ packages:
typescript:
optional: true
dependencies:
- '@typescript-eslint/types': 6.7.0
- '@typescript-eslint/visitor-keys': 6.7.0
+ '@typescript-eslint/types': 6.7.3
+ '@typescript-eslint/visitor-keys': 6.7.3
debug: 4.3.4
globby: 11.1.0
is-glob: 4.0.3
@@ -7045,8 +8056,8 @@ packages:
- typescript
dev: true
- /@typescript-eslint/utils@6.6.0(eslint@8.50.0)(typescript@5.2.2):
- resolution: {integrity: sha512-mPHFoNa2bPIWWglWYdR0QfY9GN0CfvvXX1Sv6DlSTive3jlMTUy+an67//Gysc+0Me9pjitrq0LJp0nGtLgftw==}
+ /@typescript-eslint/utils@6.2.1(eslint@8.50.0)(typescript@5.2.2):
+ resolution: {integrity: sha512-eBIXQeupYmxVB6S7x+B9SdBeB6qIdXKjgQBge2J+Ouv8h9Cxm5dHf/gfAZA6dkMaag+03HdbVInuXMmqFB/lKQ==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
eslint: ^7.0.0 || ^8.0.0
@@ -7054,9 +8065,9 @@ packages:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0)
'@types/json-schema': 7.0.12
'@types/semver': 7.5.0
- '@typescript-eslint/scope-manager': 6.6.0
- '@typescript-eslint/types': 6.6.0
- '@typescript-eslint/typescript-estree': 6.6.0(typescript@5.2.2)
+ '@typescript-eslint/scope-manager': 6.2.1
+ '@typescript-eslint/types': 6.2.1
+ '@typescript-eslint/typescript-estree': 6.2.1(typescript@5.2.2)
eslint: 8.50.0
semver: 7.5.4
transitivePeerDependencies:
@@ -7091,19 +8102,19 @@ packages:
eslint-visitor-keys: 3.4.3
dev: true
- /@typescript-eslint/visitor-keys@6.6.0:
- resolution: {integrity: sha512-L61uJT26cMOfFQ+lMZKoJNbAEckLe539VhTxiGHrWl5XSKQgA0RTBZJW2HFPy5T0ZvPVSD93QsrTKDkfNwJGyQ==}
+ /@typescript-eslint/visitor-keys@6.2.1:
+ resolution: {integrity: sha512-iTN6w3k2JEZ7cyVdZJTVJx2Lv7t6zFA8DCrJEHD2mwfc16AEvvBWVhbFh34XyG2NORCd0viIgQY1+u7kPI0WpA==}
engines: {node: ^16.0.0 || >=18.0.0}
dependencies:
- '@typescript-eslint/types': 6.6.0
+ '@typescript-eslint/types': 6.2.1
eslint-visitor-keys: 3.4.3
dev: true
- /@typescript-eslint/visitor-keys@6.7.0:
- resolution: {integrity: sha512-/C1RVgKFDmGMcVGeD8HjKv2bd72oI1KxQDeY8uc66gw9R0OK0eMq48cA+jv9/2Ag6cdrsUGySm1yzYmfz0hxwQ==}
+ /@typescript-eslint/visitor-keys@6.7.3:
+ resolution: {integrity: sha512-HEVXkU9IB+nk9o63CeICMHxFWbHWr3E1mpilIQBe9+7L/lH97rleFLVtYsfnWB+JVMaiFnEaxvknvmIzX+CqVg==}
engines: {node: ^16.0.0 || >=18.0.0}
dependencies:
- '@typescript-eslint/types': 6.7.0
+ '@typescript-eslint/types': 6.7.3
eslint-visitor-keys: 3.4.3
dev: true
@@ -7811,7 +8822,7 @@ packages:
dependencies:
call-bind: 1.0.2
define-properties: 1.2.0
- es-abstract: 1.20.4
+ es-abstract: 1.22.1
get-intrinsic: 1.2.1
is-string: 1.0.7
@@ -8368,8 +9379,8 @@ packages:
/big.js@5.2.2:
resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==}
- /bignumber.js@9.1.2:
- resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==}
+ /bignumber.js@9.1.1:
+ resolution: {integrity: sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==}
dev: false
/binary-extensions@1.13.1:
@@ -8457,6 +9468,10 @@ packages:
resolution: {integrity: sha512-WcgHDeLrazCR03CDPEvCchLsUecZAZvs4F6FnMiGlTEjyQQf15Q5TRl4EUaAQ1dacvhPq7lC9EOTWkCojQ6few==}
dev: false
+ /bowser@2.11.0:
+ resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==}
+ dev: false
+
/boxen@1.3.0:
resolution: {integrity: sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==}
engines: {node: '>=4'}
@@ -8625,8 +9640,8 @@ packages:
hasBin: true
dependencies:
caniuse-lite: 1.0.30001540
- electron-to-chromium: 1.4.450
- node-releases: 2.0.12
+ electron-to-chromium: 1.4.502
+ node-releases: 2.0.13
update-browserslist-db: 1.0.11(browserslist@4.21.9)
dev: true
@@ -10844,10 +11859,6 @@ packages:
jake: 10.8.5
dev: true
- /electron-to-chromium@1.4.450:
- resolution: {integrity: sha512-BLG5HxSELlrMx7dJ2s+8SFlsCtJp37Zpk2VAxyC6CZtbc+9AJeZHfYHbrlSgdXp6saQ8StMqOTEDaBKgA7u1sw==}
- dev: true
-
/electron-to-chromium@1.4.502:
resolution: {integrity: sha512-xqeGw3Gr6o3uyHy/yKjdnDQHY2RQvXcGC2cfHjccK1IGkH6cX1WQBN8EeC/YpwPhGkBaikDTecJ8+ssxSVRQlw==}
@@ -11519,13 +12530,13 @@ packages:
resolution: {integrity: sha512-NB/L/1Y30qyJcG5xZxCJKW/+bqyj+llbcCwo9DEz8bESIP0SLTOQ8T1DWCCFc+wJ61AMEstj4511PSScqMMfCw==}
dev: true
- /eslint-config-turbo@1.8.8(eslint@8.50.0):
- resolution: {integrity: sha512-+yT22sHOT5iC1sbBXfLIdXfbZuiv9bAyOXsxTxFCWelTeFFnANqmuKB3x274CFvf7WRuZ/vYP/VMjzU9xnFnxA==}
+ /eslint-config-turbo@1.10.15(eslint@8.50.0):
+ resolution: {integrity: sha512-76mpx2x818JZE26euen14utYcFDxOahZ9NaWA+6Xa4pY2ezVKVschuOxS96EQz3o3ZRSmcgBOapw/gHbN+EKxQ==}
peerDependencies:
eslint: '>6.6.0'
dependencies:
eslint: 8.50.0
- eslint-plugin-turbo: 1.8.8(eslint@8.50.0)
+ eslint-plugin-turbo: 1.10.15(eslint@8.50.0)
dev: true
/eslint-import-resolver-node@0.3.9:
@@ -11686,7 +12697,7 @@ packages:
engines: {node: '>=18.10', pnpm: '>=8.6'}
requiresBuild: true
dependencies:
- '@typescript-eslint/utils': 6.6.0(eslint@8.50.0)(typescript@5.2.2)
+ '@typescript-eslint/utils': 6.2.1(eslint@8.50.0)(typescript@5.2.2)
camel-case: 4.1.2
indefinite: 2.4.3
pascal-case: 3.1.2
@@ -11731,11 +12742,12 @@ packages:
semver: 6.3.1
string.prototype.matchall: 4.0.8
- /eslint-plugin-turbo@1.8.8(eslint@8.50.0):
- resolution: {integrity: sha512-zqyTIvveOY4YU5jviDWw9GXHd4RiKmfEgwsjBrV/a965w0PpDwJgEUoSMB/C/dU310Sv9mF3DSdEjxjJLaw6rA==}
+ /eslint-plugin-turbo@1.10.15(eslint@8.50.0):
+ resolution: {integrity: sha512-Tv4QSKV/U56qGcTqS/UgOvb9HcKFmWOQcVh3HEaj7of94lfaENgfrtK48E2CckQf7amhKs1i+imhCsNCKjkQyA==}
peerDependencies:
eslint: '>6.6.0'
dependencies:
+ dotenv: 16.0.3
eslint: 8.50.0
dev: true
@@ -12193,6 +13205,13 @@ packages:
resolution: {integrity: sha512-WvJe06IfNYlr+6cO3uQkdKdy3Cb1LlCJSF8zRs2eT8yuhdbSlR9nIt+TgQ92RUxiRrQm+/S7RARnMfCs5iuAjw==}
dev: true
+ /fast-xml-parser@4.2.5:
+ resolution: {integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==}
+ hasBin: true
+ dependencies:
+ strnum: 1.0.5
+ dev: false
+
/fastest-stable-stringify@2.0.2:
resolution: {integrity: sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q==}
dev: false
@@ -13111,7 +14130,7 @@ packages:
google-auth-library: 9.0.0(encoding@0.1.13)
qs: 6.11.0
url-template: 2.0.8
- uuid: 9.0.1
+ uuid: 9.0.0
transitivePeerDependencies:
- encoding
- supports-color
@@ -14089,11 +15108,6 @@ packages:
rgba-regex: 1.0.0
dev: true
- /is-core-module@2.11.0:
- resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==}
- dependencies:
- has: 1.0.3
-
/is-core-module@2.13.0:
resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==}
dependencies:
@@ -15361,7 +16375,7 @@ packages:
/json-bigint@1.0.0:
resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==}
dependencies:
- bignumber.js: 9.1.2
+ bignumber.js: 9.1.1
dev: false
/json-buffer@3.0.0:
@@ -15665,7 +16679,7 @@ packages:
is-plain-object: 2.0.4
object.map: 1.0.1
rechoir: 0.6.2
- resolve: 1.22.2
+ resolve: 1.22.6
transitivePeerDependencies:
- supports-color
dev: true
@@ -16091,7 +17105,7 @@ packages:
dependencies:
findup-sync: 2.0.0
micromatch: 3.1.10
- resolve: 1.22.2
+ resolve: 1.22.6
stack-trace: 0.0.10
transitivePeerDependencies:
- supports-color
@@ -16123,9 +17137,10 @@ packages:
unist-util-visit: 4.1.1
dev: false
- /mdast-util-find-and-replace@2.2.1:
- resolution: {integrity: sha512-SobxkQXFAdd4b5WmEakmkVoh18icjQRxGy5OWTCzgsLRm1Fu/KCtwD1HIQSsmq5ZRjVH0Ehwg6/Fn3xIUk+nKw==}
+ /mdast-util-find-and-replace@2.2.2:
+ resolution: {integrity: sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==}
dependencies:
+ '@types/mdast': 3.0.10
escape-string-regexp: 5.0.0
unist-util-is: 5.1.1
unist-util-visit-parents: 5.1.1
@@ -16150,32 +17165,32 @@ packages:
- supports-color
dev: false
- /mdast-util-gfm-autolink-literal@1.0.2:
- resolution: {integrity: sha512-FzopkOd4xTTBeGXhXSBU0OCDDh5lUj2rd+HQqG92Ld+jL4lpUfgX2AT2OHAVP9aEeDKp7G92fuooSZcYJA3cRg==}
+ /mdast-util-gfm-autolink-literal@1.0.3:
+ resolution: {integrity: sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==}
dependencies:
'@types/mdast': 3.0.10
ccount: 2.0.1
- mdast-util-find-and-replace: 2.2.1
+ mdast-util-find-and-replace: 2.2.2
micromark-util-character: 1.1.0
dev: false
- /mdast-util-gfm-footnote@1.0.1:
- resolution: {integrity: sha512-p+PrYlkw9DeCRkTVw1duWqPRHX6Ywh2BNKJQcZbCwAuP/59B0Lk9kakuAd7KbQprVO4GzdW8eS5++A9PUSqIyw==}
+ /mdast-util-gfm-footnote@1.0.2:
+ resolution: {integrity: sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ==}
dependencies:
'@types/mdast': 3.0.10
mdast-util-to-markdown: 1.3.0
micromark-util-normalize-identifier: 1.0.0
dev: false
- /mdast-util-gfm-strikethrough@1.0.2:
- resolution: {integrity: sha512-T/4DVHXcujH6jx1yqpcAYYwd+z5lAYMw4Ls6yhTfbMMtCt0PHY4gEfhW9+lKsLBtyhUGKRIzcUA2FATVqnvPDA==}
+ /mdast-util-gfm-strikethrough@1.0.3:
+ resolution: {integrity: sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ==}
dependencies:
'@types/mdast': 3.0.10
mdast-util-to-markdown: 1.3.0
dev: false
- /mdast-util-gfm-table@1.0.6:
- resolution: {integrity: sha512-uHR+fqFq3IvB3Rd4+kzXW8dmpxUhvgCQZep6KdjsLK4O6meK5dYZEayLtIxNus1XO3gfjfcIFe8a7L0HZRGgag==}
+ /mdast-util-gfm-table@1.0.7:
+ resolution: {integrity: sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==}
dependencies:
'@types/mdast': 3.0.10
markdown-table: 3.0.3
@@ -16185,22 +17200,22 @@ packages:
- supports-color
dev: false
- /mdast-util-gfm-task-list-item@1.0.1:
- resolution: {integrity: sha512-KZ4KLmPdABXOsfnM6JHUIjxEvcx2ulk656Z/4Balw071/5qgnhz+H1uGtf2zIGnrnvDC8xR4Fj9uKbjAFGNIeA==}
+ /mdast-util-gfm-task-list-item@1.0.2:
+ resolution: {integrity: sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==}
dependencies:
'@types/mdast': 3.0.10
mdast-util-to-markdown: 1.3.0
dev: false
- /mdast-util-gfm@2.0.1:
- resolution: {integrity: sha512-42yHBbfWIFisaAfV1eixlabbsa6q7vHeSPY+cg+BBjX51M8xhgMacqH9g6TftB/9+YkcI0ooV4ncfrJslzm/RQ==}
+ /mdast-util-gfm@2.0.2:
+ resolution: {integrity: sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg==}
dependencies:
mdast-util-from-markdown: 1.2.0
- mdast-util-gfm-autolink-literal: 1.0.2
- mdast-util-gfm-footnote: 1.0.1
- mdast-util-gfm-strikethrough: 1.0.2
- mdast-util-gfm-table: 1.0.6
- mdast-util-gfm-task-list-item: 1.0.1
+ mdast-util-gfm-autolink-literal: 1.0.3
+ mdast-util-gfm-footnote: 1.0.2
+ mdast-util-gfm-strikethrough: 1.0.3
+ mdast-util-gfm-table: 1.0.7
+ mdast-util-gfm-task-list-item: 1.0.2
mdast-util-to-markdown: 1.3.0
transitivePeerDependencies:
- supports-color
@@ -16457,18 +17472,17 @@ packages:
uvu: 0.5.6
dev: false
- /micromark-extension-gfm-autolink-literal@1.0.3:
- resolution: {integrity: sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg==}
+ /micromark-extension-gfm-autolink-literal@1.0.5:
+ resolution: {integrity: sha512-z3wJSLrDf8kRDOh2qBtoTRD53vJ+CWIyo7uyZuxf/JAbNJjiHsOpG1y5wxk8drtv3ETAHutCu6N3thkOOgueWg==}
dependencies:
micromark-util-character: 1.1.0
micromark-util-sanitize-uri: 1.1.0
micromark-util-symbol: 1.0.1
micromark-util-types: 1.0.2
- uvu: 0.5.6
dev: false
- /micromark-extension-gfm-footnote@1.0.4:
- resolution: {integrity: sha512-E/fmPmDqLiMUP8mLJ8NbJWJ4bTw6tS+FEQS8CcuDtZpILuOb2kjLqPEeAePF1djXROHXChM/wPJw0iS4kHCcIg==}
+ /micromark-extension-gfm-footnote@1.1.2:
+ resolution: {integrity: sha512-Yxn7z7SxgyGWRNa4wzf8AhYYWNrwl5q1Z8ii+CSTTIqVkmGZF1CElX2JI8g5yGoM3GAman9/PVCUFUSJ0kB/8Q==}
dependencies:
micromark-core-commonmark: 1.0.6
micromark-factory-space: 1.0.0
@@ -16480,8 +17494,8 @@ packages:
uvu: 0.5.6
dev: false
- /micromark-extension-gfm-strikethrough@1.0.4:
- resolution: {integrity: sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ==}
+ /micromark-extension-gfm-strikethrough@1.0.7:
+ resolution: {integrity: sha512-sX0FawVE1o3abGk3vRjOH50L5TTLr3b5XMqnP9YDRb34M0v5OoZhG+OHFz1OffZ9dlwgpTBKaT4XW/AsUVnSDw==}
dependencies:
micromark-util-chunked: 1.0.0
micromark-util-classify-character: 1.0.0
@@ -16491,8 +17505,8 @@ packages:
uvu: 0.5.6
dev: false
- /micromark-extension-gfm-table@1.0.5:
- resolution: {integrity: sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg==}
+ /micromark-extension-gfm-table@1.0.7:
+ resolution: {integrity: sha512-3ZORTHtcSnMQEKtAOsBQ9/oHp9096pI/UvdPtN7ehKvrmZZ2+bbWhi0ln+I9drmwXMt5boocn6OlwQzNXeVeqw==}
dependencies:
micromark-factory-space: 1.0.0
micromark-util-character: 1.1.0
@@ -16501,14 +17515,14 @@ packages:
uvu: 0.5.6
dev: false
- /micromark-extension-gfm-tagfilter@1.0.1:
- resolution: {integrity: sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA==}
+ /micromark-extension-gfm-tagfilter@1.0.2:
+ resolution: {integrity: sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g==}
dependencies:
micromark-util-types: 1.0.2
dev: false
- /micromark-extension-gfm-task-list-item@1.0.3:
- resolution: {integrity: sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q==}
+ /micromark-extension-gfm-task-list-item@1.0.5:
+ resolution: {integrity: sha512-RMFXl2uQ0pNQy6Lun2YBYT9g9INXtWJULgbt01D/x8/6yJ2qpKyzdZD3pi6UIkzF++Da49xAelVKUeUMqd5eIQ==}
dependencies:
micromark-factory-space: 1.0.0
micromark-util-character: 1.1.0
@@ -16517,15 +17531,15 @@ packages:
uvu: 0.5.6
dev: false
- /micromark-extension-gfm@2.0.1:
- resolution: {integrity: sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA==}
+ /micromark-extension-gfm@2.0.3:
+ resolution: {integrity: sha512-vb9OoHqrhCmbRidQv/2+Bc6pkP0FrtlhurxZofvOEy5o8RtuuvTq+RQ1Vw5ZDNrVraQZu3HixESqbG+0iKk/MQ==}
dependencies:
- micromark-extension-gfm-autolink-literal: 1.0.3
- micromark-extension-gfm-footnote: 1.0.4
- micromark-extension-gfm-strikethrough: 1.0.4
- micromark-extension-gfm-table: 1.0.5
- micromark-extension-gfm-tagfilter: 1.0.1
- micromark-extension-gfm-task-list-item: 1.0.3
+ micromark-extension-gfm-autolink-literal: 1.0.5
+ micromark-extension-gfm-footnote: 1.1.2
+ micromark-extension-gfm-strikethrough: 1.0.7
+ micromark-extension-gfm-table: 1.0.7
+ micromark-extension-gfm-tagfilter: 1.0.2
+ micromark-extension-gfm-task-list-item: 1.0.5
micromark-util-combine-extensions: 1.0.0
micromark-util-types: 1.0.2
dev: false
@@ -16826,6 +17840,12 @@ packages:
hasBin: true
dev: true
+ /mime@3.0.0:
+ resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==}
+ engines: {node: '>=10.0.0'}
+ hasBin: true
+ dev: false
+
/mimic-fn@2.1.0:
resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
engines: {node: '>=6'}
@@ -17499,10 +18519,6 @@ packages:
vm-browserify: 1.1.2
dev: true
- /node-releases@2.0.12:
- resolution: {integrity: sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==}
- dev: true
-
/node-releases@2.0.13:
resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==}
@@ -18616,7 +19632,7 @@ packages:
postcss: 8.4.27
postcss-value-parser: 4.2.0
read-cache: 1.0.0
- resolve: 1.22.2
+ resolve: 1.22.6
/postcss-js@4.0.1(postcss@8.4.21):
resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
@@ -18704,6 +19720,23 @@ packages:
postcss: 8.4.27
yaml: 2.3.1
+ /postcss-load-config@4.0.1(postcss@8.4.31):
+ resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==}
+ engines: {node: '>= 14'}
+ peerDependencies:
+ postcss: '>=8.0.9'
+ ts-node: '>=9.0.0'
+ peerDependenciesMeta:
+ postcss:
+ optional: true
+ ts-node:
+ optional: true
+ dependencies:
+ lilconfig: 2.1.0
+ postcss: 8.4.31
+ yaml: 2.3.1
+ dev: true
+
/postcss-loader@4.3.0(postcss@8.4.27)(webpack@4.46.0):
resolution: {integrity: sha512-M/dSoIiNDOo8Rk0mUqoj4kpGq91gcxCfb9PoyZVdZ76/AuhxylHDYZblNE8o+EQ9AMSASeMFEKxZf5aU6wlx1Q==}
engines: {node: '>= 10.13.0'}
@@ -19532,8 +20565,8 @@ packages:
picocolors: 1.0.0
source-map-js: 1.0.2
- /posthog-js@1.82.1:
- resolution: {integrity: sha512-VqOq11ztae7d8s3cwezct91aeklJGXKRwHw1799F99EzgI+SWtF2tZF2tBvA1Nid0hWBE/R1vUwlO1Qeeb16ng==}
+ /posthog-js@1.82.2:
+ resolution: {integrity: sha512-Tiry1zFEmcSi5o4Czgo3fX9m3tIjd0i+ap3tpoxS5Nl++Sh1KgrNAVPgi5mLa0Xyi4Vh1+fuxyIc8rq16gvpHQ==}
dependencies:
fflate: 0.4.8
dev: false
@@ -20754,8 +21787,8 @@ packages:
resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==}
dependencies:
'@types/mdast': 3.0.10
- mdast-util-gfm: 2.0.1
- micromark-extension-gfm: 2.0.1
+ mdast-util-gfm: 2.0.2
+ micromark-extension-gfm: 2.0.3
unified: 10.1.2
transitivePeerDependencies:
- supports-color
@@ -20999,7 +22032,7 @@ packages:
resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==}
hasBin: true
dependencies:
- is-core-module: 2.11.0
+ is-core-module: 2.13.0
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
dev: true
@@ -21008,7 +22041,7 @@ packages:
resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==}
hasBin: true
dependencies:
- is-core-module: 2.11.0
+ is-core-module: 2.13.0
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
@@ -21024,7 +22057,7 @@ packages:
resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==}
hasBin: true
dependencies:
- is-core-module: 2.11.0
+ is-core-module: 2.13.0
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
@@ -21199,16 +22232,8 @@ packages:
fsevents: 2.3.2
dev: true
- /rollup@3.28.1:
- resolution: {integrity: sha512-R9OMQmIHJm9znrU3m3cpE8uhN0fGdXiawME7aZIpQqvpS/85+Vt1Hq1/yVIcYfOmaQiHjvXkQAoJukvLpau6Yw==}
- engines: {node: '>=14.18.0', npm: '>=8.0.0'}
- hasBin: true
- optionalDependencies:
- fsevents: 2.3.2
- dev: true
-
- /rollup@3.5.1:
- resolution: {integrity: sha512-hdQWTvPeiAbM6SUkxV70HdGUVxsgsc+CLy5fuh4KdgUBJ0SowXiix8gANgXoG3wEuLwfoJhCT2V+WwxfWq9Ikw==}
+ /rollup@3.29.4:
+ resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==}
engines: {node: '>=14.18.0', npm: '>=8.0.0'}
hasBin: true
optionalDependencies:
@@ -22172,7 +23197,7 @@ packages:
dependencies:
call-bind: 1.0.2
define-properties: 1.2.0
- es-abstract: 1.22.1
+ es-abstract: 1.20.4
get-intrinsic: 1.2.1
has-symbols: 1.0.3
internal-slot: 1.0.5
@@ -22309,14 +23334,18 @@ packages:
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
engines: {node: '>=8'}
- /stripe@13.8.0:
- resolution: {integrity: sha512-QFOOeaEwNOAj4k/T9OtSb9sKx9oLVI5y9HrJJn3XN9RJYKGAuE+fMD+rHA5u9ILmf3FDx99jaEvVvykftJtBGA==}
+ /stripe@13.9.0:
+ resolution: {integrity: sha512-sQAqodCvaw/iYWauHHdOWlFGj0oZj/3A51zs4rG5PN3SUJUFSSjtnbc9q5Djpls0iz3nXz2UwjzAdKHVP4dVqQ==}
engines: {node: '>=12.*'}
dependencies:
'@types/node': 20.8.2
qs: 6.11.0
dev: false
+ /strnum@1.0.5:
+ resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==}
+ dev: false
+
/strtok3@6.3.0:
resolution: {integrity: sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==}
engines: {node: '>=10'}
@@ -23148,9 +24177,9 @@ packages:
execa: 5.1.1
globby: 11.1.0
joycon: 3.1.1
- postcss-load-config: 4.0.1(postcss@8.4.27)
+ postcss-load-config: 4.0.1(postcss@8.4.31)
resolve-from: 5.0.0
- rollup: 3.5.1
+ rollup: 3.29.4
source-map: 0.8.0-beta.0
sucrase: 3.32.0
tree-kill: 1.2.2
@@ -23204,64 +24233,64 @@ packages:
dependencies:
safe-buffer: 5.2.1
- /turbo-darwin-64@1.10.13:
- resolution: {integrity: sha512-vmngGfa2dlYvX7UFVncsNDMuT4X2KPyPJ2Jj+xvf5nvQnZR/3IeDEGleGVuMi/hRzdinoxwXqgk9flEmAYp0Xw==}
+ /turbo-darwin-64@1.10.15:
+ resolution: {integrity: sha512-Sik5uogjkRTe1XVP9TC2GryEMOJCaKE2pM/O9uLn4koQDnWKGcLQv+mDU+H+9DXvKLnJnKCD18OVRkwK5tdpoA==}
cpu: [x64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
- /turbo-darwin-arm64@1.10.13:
- resolution: {integrity: sha512-eMoJC+k7gIS4i2qL6rKmrIQGP6Wr9nN4odzzgHFngLTMimok2cGLK3qbJs5O5F/XAtEeRAmuxeRnzQwTl/iuAw==}
+ /turbo-darwin-arm64@1.10.15:
+ resolution: {integrity: sha512-xwqyFDYUcl2xwXyGPmHkmgnNm4Cy0oNzMpMOBGRr5x64SErS7QQLR4VHb0ubiR+VAb8M+ECPklU6vD1Gm+wekg==}
cpu: [arm64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
- /turbo-linux-64@1.10.13:
- resolution: {integrity: sha512-0CyYmnKTs6kcx7+JRH3nPEqCnzWduM0hj8GP/aodhaIkLNSAGAa+RiYZz6C7IXN+xUVh5rrWTnU2f1SkIy7Gdg==}
+ /turbo-linux-64@1.10.15:
+ resolution: {integrity: sha512-dM07SiO3RMAJ09Z+uB2LNUSkPp3I1IMF8goH5eLj+d8Kkwoxd/+qbUZOj9RvInyxU/IhlnO9w3PGd3Hp14m/nA==}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: true
optional: true
- /turbo-linux-arm64@1.10.13:
- resolution: {integrity: sha512-0iBKviSGQQlh2OjZgBsGjkPXoxvRIxrrLLbLObwJo3sOjIH0loGmVIimGS5E323soMfi/o+sidjk2wU1kFfD7Q==}
+ /turbo-linux-arm64@1.10.15:
+ resolution: {integrity: sha512-MkzKLkKYKyrz4lwfjNXH8aTny5+Hmiu4SFBZbx+5C0vOlyp6fV5jZANDBvLXWiDDL4DSEAuCEK/2cmN6FVH1ow==}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: true
optional: true
- /turbo-windows-64@1.10.13:
- resolution: {integrity: sha512-S5XySRfW2AmnTeY1IT+Jdr6Goq7mxWganVFfrmqU+qqq3Om/nr0GkcUX+KTIo9mPrN0D3p5QViBRzulwB5iuUQ==}
+ /turbo-windows-64@1.10.15:
+ resolution: {integrity: sha512-3TdVU+WEH9ThvQGwV3ieX/XHebtYNHv9HARHauPwmVj3kakoALkpGxLclkHFBLdLKkqDvmHmXtcsfs6cXXRHJg==}
cpu: [x64]
os: [win32]
requiresBuild: true
dev: true
optional: true
- /turbo-windows-arm64@1.10.13:
- resolution: {integrity: sha512-nKol6+CyiExJIuoIc3exUQPIBjP9nIq5SkMJgJuxsot2hkgGrafAg/izVDRDrRduQcXj2s8LdtxJHvvnbI8hEQ==}
+ /turbo-windows-arm64@1.10.15:
+ resolution: {integrity: sha512-l+7UOBCbfadvPMYsX08hyLD+UIoAkg6ojfH+E8aud3gcA1padpjCJTh9gMpm3QdMbKwZteT5uUM+wyi6Rbbyww==}
cpu: [arm64]
os: [win32]
requiresBuild: true
dev: true
optional: true
- /turbo@1.10.13:
- resolution: {integrity: sha512-vOF5IPytgQPIsgGtT0n2uGZizR2N3kKuPIn4b5p5DdeLoI0BV7uNiydT7eSzdkPRpdXNnO8UwS658VaI4+YSzQ==}
+ /turbo@1.10.15:
+ resolution: {integrity: sha512-mKKkqsuDAQy1wCCIjCdG+jOCwUflhckDMSRoeBPcIL/CnCl7c5yRDFe7SyaXloUUkt4tUR0rvNIhVCcT7YeQpg==}
hasBin: true
optionalDependencies:
- turbo-darwin-64: 1.10.13
- turbo-darwin-arm64: 1.10.13
- turbo-linux-64: 1.10.13
- turbo-linux-arm64: 1.10.13
- turbo-windows-64: 1.10.13
- turbo-windows-arm64: 1.10.13
+ turbo-darwin-64: 1.10.15
+ turbo-darwin-arm64: 1.10.15
+ turbo-linux-64: 1.10.15
+ turbo-linux-arm64: 1.10.15
+ turbo-windows-64: 1.10.15
+ turbo-windows-arm64: 1.10.15
dev: true
/tw-to-css@0.0.11:
@@ -23981,8 +25010,8 @@ packages:
resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
hasBin: true
- /uuid@9.0.1:
- resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==}
+ /uuid@9.0.0:
+ resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==}
hasBin: true
dev: false
@@ -24156,7 +25185,7 @@ packages:
dependencies:
esbuild: 0.18.10
postcss: 8.4.31
- rollup: 3.28.1
+ rollup: 3.29.4
terser: 5.21.0
optionalDependencies:
fsevents: 2.3.2
diff --git a/turbo.json b/turbo.json
index d9fa80f804..b651c8bedf 100644
--- a/turbo.json
+++ b/turbo.json
@@ -88,7 +88,11 @@
"STRIPE_WEBHOOK_SECRET",
"TELEMETRY_DISABLED",
"VERCEL_URL",
- "WEBAPP_URL"
+ "WEBAPP_URL",
+ "AWS_ACCESS_KEY",
+ "AWS_SECRET_KEY",
+ "S3_REGION",
+ "S3_BUCKET_NAME"
]
},
"post-install": {