magically-sdk
Version:
Official SDK for Magically - Build mobile apps with AI
51 lines (44 loc) • 1.74 kB
text/typescript
import { MagicallyAuth } from './MagicallyAuth';
import { MagicallyData } from './MagicallyData';
import { MagicallyLLM } from './MagicallyLLM';
import { MagicallyFiles } from './MagicallyFiles';
import { MagicallyFunctions } from './MagicallyFunctions';
import { SDKConfig } from './types';
import { Logger } from './Logger';
import { APIClient } from './APIClient';
export class MagicallySDK {
public auth: MagicallyAuth;
public data: MagicallyData;
public llm: MagicallyLLM;
public files: MagicallyFiles;
public functions: MagicallyFunctions;
private config: SDKConfig;
private logger: Logger;
private apiClient: APIClient;
constructor(config?: SDKConfig) {
// Validate config
if (!config || !config.projectId) {
throw new Error('MagicallySDK requires configuration. In Cloudflare Workers, pass env variables explicitly: new MagicallySDK({ projectId: env.MAGICALLY_PROJECT_ID, apiUrl: env.MAGICALLY_API_BASE_URL, apiKey: env.MAGICALLY_API_KEY })');
}
this.config = config;
this.logger = new Logger(config.debug || false, 'MagicallySDK');
this.apiClient = new APIClient(config, 'MagicallySDK');
this.auth = new MagicallyAuth(config);
this.data = new MagicallyData(config, this.auth);
this.llm = new MagicallyLLM(config, this.auth);
this.files = new MagicallyFiles(config, this.auth);
this.functions = new MagicallyFunctions(config, this.auth);
this.logger.info('SDK initialized', {
projectId: config.projectId,
debug: config.debug || false,
apiUrl: config.apiUrl || 'https://trymagically.com',
hasApiKey: !!config.apiKey
});
}
/**
* Get SDK configuration
*/
getConfig(): SDKConfig {
return { ...this.config };
}
}