UNPKG

json-schema-typescript-generator

Version:
66 lines 3.36 kB
#!/usr/bin/env node "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const commander_1 = require("commander"); const options_1 = require("../options"); const generateFiles_1 = require("../generateFiles"); const validEncodings = ['ascii', 'utf8', 'utf-8', 'utf16le', 'ucs2', 'ucs-2', 'base64', 'base64url', 'latin1', 'binary', 'hex']; const validPatternNames = Object.keys(options_1.OptionalFieldPattern); const validTypeNames = Object.keys(options_1.UntypedType); const validateEncoding = (encoding) => { if (validEncodings.includes(encoding)) { return encoding; } throw Error(`Invalid source file encoding: '${encoding}'. Valid options are: ${arrayToString(validEncodings)}`); }; const validatePattern = (patternName) => { if (validPatternNames.includes(patternName)) { return patternName; } throw Error(`Invalid optional field pattern: '${patternName}'. Valid options are: ${arrayToString(validPatternNames)}`); }; const validateType = (typeName) => { if (validTypeNames.includes(typeName)) { return typeName; } throw Error(`Invalid untyped type: '${typeName}'. Valid options are: ${arrayToString(validTypeNames)}`); }; const arrayToString = (array) => `['${array.join('\', \'')}']`; const program = new commander_1.Command(); program .option('-c, --cwd <DIRECTORY>', 'Working directory', process.cwd()) .option('-s, --source <DIRECTORY>', 'Source directory of schema files, relative to working directory', 'src/schemas') .option('-d, --destination <DIRECTORY>', 'Destination directory of generated .ts files, relative to working directory', 'src/generated') .option('-e, --encoding <ENCODING>', `Encoding of source files, one of: ${arrayToString(validEncodings)}`, validateEncoding, 'utf-8') .option('-r, --recursive', 'Recurse into source directory and generate from nested files', true) .option('-R, --no-recursive', 'Only generate from schema files directly in source directory, do not recurse deeper') .option('-p, --pre-clean', 'Delete destination directory before generating files', false) .option('-P, --no-pre-clean', 'Overwrite destination directory when generating files') .option('-i, --index-files', 'Add index files', true) .option('-I, --no-index-files', 'Do not add index files') .option('-o, --optional-field-pattern <PATTERN>', `The pattern to use for optional fields, one of: ${arrayToString(validPatternNames)}`, validatePattern, 'QUESTION') .option('-u, --untyped-type <TYPE>', `The untyped field type, one of: ${arrayToString(validTypeNames)}`, validateType, 'UNKNOWN') .action(async (opts) => { const options = { files: { cwd: opts.cwd, destination: { dir: opts.destination, indexFiles: opts.indexFiles, preClean: opts.preClean }, source: { dir: opts.source, encoding: opts.encoding, recursive: opts.recursive } }, ts: { optionalFields: options_1.OptionalFieldPattern[opts.optionalFieldPattern], untyped: options_1.UntypedType[opts.untypedType] } }; await (0, generateFiles_1.generateFiles)(options); }); program.parse(process.argv); //# sourceMappingURL=generate.js.map