@spotable/attio-sdk
Version:
Client for Attio REST API
45 lines (34 loc) • 1.15 kB
text/typescript
import { writeGeneratedFile } from "../../helpers/fs";
import logger from "../../helpers/logger";
import { generateFileHeader } from "./fileHeader";
const FILE_NAME = "base.ts";
export function generateBaseTypes(outputDir: string): void {
logger.debug(`Generating base types file: ${FILE_NAME}`);
const baseContent = `
${generateFileHeader(FILE_NAME)}
export interface WebhookPayload<T> {
event_id: string;
event_type: 'created' | 'updated' | 'deleted' | 'merged';
entity_type: string;
entity: T;
timestamp: string;
workspace_id: string;
}
export type WebhookHandler<T> = (payload: T) => Promise<void> | void;
export type EntityCreatedHandler<T> = (entity: T) => Promise<void> | void;
export type EntityUpdatedHandler<T> = (
entity: T,
updateInfo: {
event: any;
attributeId?: string;
actor?: {
type: string;
id: string;
}
}
) => Promise<void> | void;
export type EntityDeletedHandler<T> = (entity: T | null, event: any) => Promise<void> | void;
export type EntityMergedHandler<T> = (entity: T, event: any) => Promise<void> | void;
`;
writeGeneratedFile(outputDir, FILE_NAME, baseContent);
}