All files / api/src/ai-providers/recraft-ai image-generate.ts

0% Statements 0/57
0% Branches 0/1
0% Functions 0/1
0% Lines 0/57

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72                                                                                                                                               
import { generateErrorResponse } from '@api/utils/ai-provider';
import type {
  AIProviderFunctionConfig,
  ResponseTransformFunction,
} from '@shared/types/ai-providers/config';
import type { ErrorResponseBody } from '@shared/types/api/response';
import type { GenerateImageResponseBody } from '@shared/types/api/routes/images-api';
import { AIProvider } from '@shared/types/constants';
 
// Define the interface here instead of importing from server
export interface recraftAIImageObject {
  b64_json?: string;
  url?: string;
}
 
export const recraftAIImageGenerateConfig: AIProviderFunctionConfig = {
  prompt: {
    param: 'prompt',
    required: true,
  },
  style: {
    param: 'style',
    default: 'realistic_image',
  },
  style_id: {
    param: 'style_id',
  },
  n: {
    param: 'n',
    default: 1,
    min: 1,
    max: 2,
  },
  size: {
    param: 'size',
    default: '1024x1024',
  },
  response_format: {
    param: 'response_format',
    default: 'url',
  },
  controls: {
    param: 'controls',
  },
  model: {
    param: 'model',
  },
  artistic_level: {
    param: 'artistic_level',
  },
  substyle: {
    param: 'substyle',
  },
};
 
export const recraftAIImageGenerateResponseTransform: ResponseTransformFunction =
  (aiProviderResponseBody, aiProviderResponseStatus) => {
    if (aiProviderResponseStatus !== 200 || 'error' in aiProviderResponseBody) {
      const errorResponse = aiProviderResponseBody as ErrorResponseBody;
      return generateErrorResponse(
        {
          message: errorResponse.error?.message || 'Unknown error occurred',
          type: errorResponse.error?.type || undefined,
          param: errorResponse.error?.param || undefined,
          code: errorResponse.error?.code || undefined,
        },
        AIProvider.RECRFT_AI,
      );
    }
    return aiProviderResponseBody as GenerateImageResponseBody;
  };