@prodbirdy/mockup-generator
Version:
Serverless-optimized TypeScript SDK for generating high-quality product mockups from PSD templates
145 lines (128 loc) • 3.44 kB
text/typescript
/**
* Mockup Generator SDK
* Clean, serverless-optimized library for PSD mockup generation
*/
// Main SDK class
export { MockupSDK } from "./MockupSDK";
// Types for TypeScript users
export type {
MockupSDKConfig,
MockupSDKMode,
MockupGenerationConfig,
BatchMockupConfig,
SmartObjectReplacement,
ExportOptions,
MockupResult,
BatchMockupResult,
BatchMockupResultItem,
UploadOptions,
UploadResult,
ExportResult,
StorageConfig,
ExportFormat,
FillMode,
} from "./types";
// Error classes for catch blocks
export {
MockupSDKError,
ValidationError,
StorageError,
ExportError,
} from "./types";
// Utility functions for advanced users
export {
validateGenerationConfig,
validateBatchConfig,
validateUploadOptions,
validateSmartObjects,
validateExportOptions,
} from "./validation";
// Re-export some utility types from constants for backward compatibility
export type { PrintArea } from "../constants";
/**
* Quick start examples and factory functions
*/
import { MockupSDK } from "./MockupSDK";
import type { MockupSDKConfig, MockupGenerationConfig } from "./types";
/**
* Create a quick SDK instance for serverless environments
* Uses mode='serverless' with optional environment variable loading
*/
export async function createServerlessSDK(
config: Omit<MockupSDKConfig, "mode"> = {}
): Promise<MockupSDK> {
return MockupSDK.create({ mode: "serverless", ...config });
}
/**
* Create a development SDK with debugging enabled
* Uses mode='development' with optional environment variable loading
*/
export async function createDevelopmentSDK(
config: Omit<MockupSDKConfig, "mode"> = {}
): Promise<MockupSDK> {
return MockupSDK.create({ mode: "development", ...config });
}
/**
* Create a production SDK with optimal settings
* Uses mode='production' with optional environment variable loading
*/
export async function createProductionSDK(
config: Omit<MockupSDKConfig, "mode"> = {}
): Promise<MockupSDK> {
return MockupSDK.create({ mode: "production", ...config });
}
/**
* Create an auto-detecting SDK that configures itself based on the environment
* Uses mode='auto' and automatically loads storage from environment variables
*/
export async function createAutoSDK(
config: Omit<MockupSDKConfig, "mode"> = {}
): Promise<MockupSDK> {
return MockupSDK.create({ mode: "auto", ...config });
}
/**
* Quick mockup generation function for simple use cases
*/
export async function generateQuickMockup(
psd: string | Buffer,
smartObjectName: string,
image: string | Buffer,
exportFormats: string[] = ["png"]
): Promise<{
psd: Buffer;
exports: Array<{ format: string; buffer: Buffer; size: number }>;
}> {
const sdk = await createServerlessSDK();
try {
const config: MockupGenerationConfig = {
psd,
replacements: [
{
name: smartObjectName,
image,
fillMode: "fit",
},
],
exports: exportFormats.map((format) => ({
format: format as any,
quality: 90,
})),
};
const result = await sdk.generate(config);
return {
psd: result.psd,
exports: result.exports.map((exp) => ({
format: exp.format,
buffer: exp.buffer,
size: exp.size,
})),
};
} finally {
await sdk.cleanup();
}
}
/**
* Version information
*/
export const VERSION = "1.0.0";
export const SDK_NAME = "Mockup Generator SDK";