UNPKG

@spotable/attio-sdk

Version:
40 lines (38 loc) 1.94 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateCustomObjectTypes = generateCustomObjectTypes; const fileHeader_1 = require("./fileHeader"); const fs_1 = require("../../helpers/fs"); const logger_1 = require("../../helpers/logger"); function generateCustomObjectTypes(outputDir, { object, attributes, imports }) { logger_1.default.debug(`Generating object types file: ${object.api_slug.toLowerCase()}.ts`); const importLines = imports.length ? imports.map((importInfo) => `import { ${Array.from(importInfo.types).join(", ")} } from '${importInfo.file}';`).join("\n") : ""; const attributesLines = attributes .map((attribute) => ` /** ${attribute.title} (${attribute.is_multiselect ? "multi " : ""}${attribute.type}) */\n` + ` ${attribute.api_slug}${attribute.is_required ? "" : "?"}: ${attribute.tsOutputType}${attribute.isArray ? "[]" : ""};`) .join("\n") .trim(); const inputAttributesLines = attributes .map((attribute) => ` /** ${attribute.title} (${attribute.is_multiselect ? "multi " : ""}${attribute.type}) */\n` + ` ${attribute.api_slug}${attribute.is_required ? "" : "?"}: ${attribute.tsInputType}${attribute.isArray ? "[]" : ""};`) .join("\n") .trim(); const objectTypes = ` ${(0, fileHeader_1.generateFileHeader)(`${object.singular_noun.toLowerCase()}.ts`)} ${importLines ? importLines + "\n" : ""} export interface ${object.singular_noun}Attributes { ${attributesLines} } export interface ${object.singular_noun}InputAttributes { ${inputAttributesLines} } export interface ${object.singular_noun} extends ${object.singular_noun}Attributes { id: string; workspace_id: string; created_at: string; updated_at: string | null; } `.trim(); (0, fs_1.writeGeneratedFile)(outputDir, `${object.api_slug.toLowerCase()}.ts`, objectTypes); } //# sourceMappingURL=customObjectTypes.js.map