fix: feedback

This commit is contained in:
pandeymangg
2025-08-21 21:53:03 +05:30
parent f25f257f24
commit 7154f6fe74
5 changed files with 34 additions and 28 deletions

View File

@@ -1,4 +0,0 @@
node_modules
dist
coverage
.turbo

View File

@@ -1,5 +1,6 @@
import { S3Client } from "@aws-sdk/client-s3";
import { logger } from "@formbricks/logger";
import { ErrorCode, type Result, type S3CredentialsError, type UnknownError, err, ok } from "../types/error";
import {
S3_ACCESS_KEY,
S3_BUCKET_NAME,
@@ -8,7 +9,6 @@ import {
S3_REGION,
S3_SECRET_KEY,
} from "./constants";
import { type Result, type S3CredentialsError, type UnknownError, err, ok } from "./types/error";
/**
* Create an S3 client from environment variables
@@ -19,7 +19,7 @@ export const createS3ClientFromEnv = (): Result<S3Client, S3CredentialsError | U
if (!S3_ACCESS_KEY || !S3_SECRET_KEY || !S3_BUCKET_NAME || !S3_REGION) {
logger.error("S3 Client: S3 credentials are not set");
return err({
code: "s3_credentials_error",
code: ErrorCode.S3CredentialsError,
message: "S3 credentials are not set",
});
}
@@ -35,7 +35,7 @@ export const createS3ClientFromEnv = (): Result<S3Client, S3CredentialsError | U
} catch (error) {
logger.error("Error creating S3 client from environment variables", { error });
return err({
code: "unknown",
code: ErrorCode.Unknown,
message: "Error creating S3 client from environment variables",
});
}

View File

@@ -2,9 +2,8 @@ import { DeleteObjectCommand, GetObjectCommand, HeadObjectCommand } from "@aws-s
import { type PresignedPostOptions, createPresignedPost } from "@aws-sdk/s3-presigned-post";
import { getSignedUrl } from "@aws-sdk/s3-request-presigner";
import { logger } from "@formbricks/logger";
import { createS3Client } from "./client";
import { S3_BUCKET_NAME } from "./constants";
import {
ErrorCode,
type FileNotFoundError,
type Result,
type S3ClientError,
@@ -12,7 +11,9 @@ import {
type UnknownError,
err,
ok,
} from "./types/error";
} from "../types/error";
import { createS3Client } from "./client";
import { S3_BUCKET_NAME } from "./constants";
const s3Client = createS3Client();
@@ -42,7 +43,7 @@ export const getSignedUploadUrl = async (
if (!s3Client) {
logger.error("Failed to get signed upload URL: S3 client is not set");
return err({
code: "s3_client_error",
code: ErrorCode.S3ClientError,
message: "S3 client is not set",
});
}
@@ -54,7 +55,7 @@ export const getSignedUploadUrl = async (
if (!S3_BUCKET_NAME) {
logger.error("Failed to get signed upload URL: S3 bucket name is not set");
return err({
code: "s3_credentials_error",
code: ErrorCode.S3CredentialsError,
message: "S3 bucket name is not set",
});
}
@@ -77,7 +78,7 @@ export const getSignedUploadUrl = async (
} catch (error) {
logger.error("Failed to get signed upload URL", { error });
const unknownError: UnknownError = {
code: "unknown",
code: ErrorCode.Unknown,
message: "Failed to get signed upload URL",
};
@@ -96,14 +97,14 @@ export const getSignedDownloadUrl = async (
try {
if (!s3Client) {
return err({
code: "s3_client_error",
code: ErrorCode.S3ClientError,
message: "S3 client is not set",
});
}
if (!S3_BUCKET_NAME) {
return err({
code: "s3_credentials_error",
code: ErrorCode.S3CredentialsError,
message: "S3 bucket name is not set",
});
}
@@ -123,15 +124,12 @@ export const getSignedDownloadUrl = async (
(headError as { $metadata?: { httpStatusCode?: number } }).$metadata?.httpStatusCode === 404
) {
return err({
code: "file_not_found_error",
code: ErrorCode.FileNotFoundError,
message: `File not found: ${fileKey}`,
});
}
return err({
code: "unknown",
message: `Failed to get signed download URL for file: ${fileKey}`,
});
logger.warn("HeadObject check failed; proceeding to sign download URL", { error: headError, fileKey });
}
const getObjectCommand = new GetObjectCommand({
@@ -143,7 +141,7 @@ export const getSignedDownloadUrl = async (
} catch (error) {
logger.error("Failed to get signed download URL", { error });
const unknownError: UnknownError = {
code: "unknown",
code: ErrorCode.Unknown,
message: "Failed to get signed download URL",
};
@@ -162,14 +160,14 @@ export const deleteFile = async (
try {
if (!s3Client) {
return err({
code: "s3_client_error",
code: ErrorCode.S3ClientError,
message: "S3 client is not set",
});
}
if (!S3_BUCKET_NAME) {
return err({
code: "s3_credentials_error",
code: ErrorCode.S3CredentialsError,
message: "S3 bucket name is not set",
});
}
@@ -186,7 +184,7 @@ export const deleteFile = async (
logger.error("Failed to delete file", { error });
const unknownError: UnknownError = {
code: "unknown",
code: ErrorCode.Unknown,
message: "Failed to delete file",
};

View File

@@ -19,22 +19,29 @@ export const err = <E = Error>(error: E): ResultError<E> => ({
error,
});
export enum ErrorCode {
Unknown = "unknown",
S3CredentialsError = "s3_credentials_error",
S3ClientError = "s3_client_error",
FileNotFoundError = "file_not_found_error",
}
export interface UnknownError {
code: "unknown";
code: ErrorCode.Unknown;
message: string;
}
export interface S3CredentialsError {
code: "s3_credentials_error";
code: ErrorCode.S3CredentialsError;
message: string;
}
export interface S3ClientError {
code: "s3_client_error";
code: ErrorCode.S3ClientError;
message: string;
}
export interface FileNotFoundError {
code: "file_not_found_error";
code: ErrorCode.FileNotFoundError;
message: string;
}

View File

@@ -45,6 +45,11 @@
"@formbricks/storage#build": {
"dependsOn": ["@formbricks/logger#build"]
},
"@formbricks/storage#go": {
"cache": false,
"dependsOn": ["@formbricks/storage#build"],
"persistent": true
},
"@formbricks/storage#lint": {
"dependsOn": ["@formbricks/logger#build"]
},