UNPKG

@kontent-ai/model-generator

Version:

This utility generates strongly-typed models for Delivery JS SDK, Migration toolkit or just general scripting to improve the experience when referencing Kontent.ai related objects.

45 lines 2.18 kB
import { parse } from "node:path"; import { coreConfig } from "../config.js"; import { getFileNameWithoutExtension, sortAlphabetically } from "./core.utils.js"; export function getImporter(moduleFileExtension) { const importExtension = moduleFileExtension === "none" ? "" : `.${moduleFileExtension}`; const getFilenameAndExtension = (filename) => { const extension = filename.split(".").pop(); if (!extension) { throw new Error(`File ${filename} has no extension`); } return { filenameWithoutExtension: filename.slice(0, -extension.length - 1), extension }; }; const getGeneratedFilename = (filename) => { if (filename.toLowerCase() === coreConfig.barrelExportFilename.toLowerCase()) { // do not add .generated to barrel export filename return filename; } const { filenameWithoutExtension, extension } = getFilenameAndExtension(filename); return `${filenameWithoutExtension}.generated.${extension}`; }; return { getGeneratedFilename, importType: (data) => { if (!data.importValue.length) { return ""; } const isExternalLib = !(data.filePathOrPackage.endsWith(".js") || data.filePathOrPackage.endsWith(".ts")); const resolvedFilePath = isExternalLib ? data.filePathOrPackage : `${getFileNameWithoutExtension(getGeneratedFilename(data.filePathOrPackage))}${importExtension}`; const importValues = Array.isArray(data.importValue) ? data.importValue : [data.importValue]; return `import type { ${importValues.join(", ")} } from '${resolvedFilePath}';`; }, getBarrelExportCode(filenames) { if (!filenames.length) { return "export {}"; } return sortAlphabetically(filenames, (filename) => filename).reduce((barrelCode, filename) => { const path = parse(filename); return `${barrelCode} export * from '${path.dir}/${path.name}${importExtension}';`; }, ""); }, }; } //# sourceMappingURL=importer.js.map