UNPKG

@borduhh/avro-typescript-generator

Version:
41 lines (40 loc) 1.61 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.convertAvroCli = void 0; const file_1 = require("./utils/file"); const cli_1 = require("./utils/cli"); const promises_1 = require("fs/promises"); const avro_ts_1 = require("@ovotech/avro-ts"); const convertAvroCli = async () => { const cliArguments = (0, cli_1.retrieveCLIArguments)(); const config = { inputs: cliArguments.input, outputDir: (0, cli_1.validateOutputDir)(cliArguments.outputDir), }; try { const schemaFilepaths = (await Promise.all(config.inputs.map((inputGlob) => (0, file_1.retrieveFilesFromGlob)(inputGlob)))).reduce((all, files) => all.concat(files), []); const typeOutput = await Promise.all(schemaFilepaths.map((filepath) => new Promise(async (resolve, reject) => { try { const data = await (0, promises_1.readFile)(filepath); resolve({ path: filepath, types: (0, avro_ts_1.toTypeScript)(JSON.parse(data.toString())), }); } catch (err) { reject(err); } }))); typeOutput.forEach(async (typeData) => { await (0, promises_1.mkdir)(config.outputDir, { recursive: true, }); await (0, promises_1.writeFile)(`${config.outputDir}/${(0, file_1.retrieveFileNameFromPath)(typeData.path)}.d.ts`, typeData.types); }); } catch (err) { console.error(err); return; } }; exports.convertAvroCli = convertAvroCli;