@spotable/attio-sdk
Version:
Client for Attio REST API
44 lines (37 loc) • 1.92 kB
text/typescript
import { join } from "node:path";
import { AttioObject } from "../../helpers/fetchAttioSchema";
import { generateAttioClient } from "./attioClient";
import { generateAttributeFetcher } from "./attributeFetcher";
import { generateBaseFetcher } from "./baseFetcher";
import { generateCommentFetcher } from "./commentFetcher";
import { generateListEntryFetcher } from "./listEntryFetcher";
import { generateListFetcher } from "./listFetcher";
import { generateNoteFetcher } from "./noteFetcher";
import { generateObjectFetcher } from "./objectFetcher";
import { generateRecordFetcher } from "./recordFetcher";
import { generateTaskFetcher } from "./taskFetcher";
import { generateWebhookFetcher } from "./webhookFetcher";
import { generateWorkspaceMemberFetcher } from "./workspaceMemberFetcher";
import { ensureDirectoryExists } from "../../helpers/fs";
import { generateIndexFile } from "../indexFile";
const FETCHERS_DIRECTORY = "fetchers";
export function generateClient(outputDir: string, objects: AttioObject[], includeStandardTypes: boolean): void {
const fetchersOutputDir = join(outputDir, FETCHERS_DIRECTORY);
ensureDirectoryExists(fetchersOutputDir);
generateBaseFetcher(fetchersOutputDir);
generateAttioClient(outputDir, objects, includeStandardTypes);
// The record fetcher is always included as it is used in the attioClient to fetch the given objects
generateRecordFetcher(fetchersOutputDir);
if (includeStandardTypes) {
generateObjectFetcher(fetchersOutputDir);
generateAttributeFetcher(fetchersOutputDir);
generateListFetcher(fetchersOutputDir);
generateListEntryFetcher(fetchersOutputDir);
generateNoteFetcher(fetchersOutputDir);
generateTaskFetcher(fetchersOutputDir);
generateWebhookFetcher(fetchersOutputDir);
generateCommentFetcher(fetchersOutputDir);
generateWorkspaceMemberFetcher(fetchersOutputDir);
}
generateIndexFile(fetchersOutputDir);
}