@spotable/attio-sdk
Version:
Client for Attio REST API
40 lines (38 loc) • 1.94 kB
JavaScript
;
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