diff --git a/package.json b/package.json index 41e07aab..b469c9d4 100644 --- a/package.json +++ b/package.json @@ -49,21 +49,19 @@ "homepage": "https://github.com/bcherny/json-schema-to-typescript#readme", "dependencies": { "@apidevtools/json-schema-ref-parser": "^11.5.5", - "@types/json-schema": "^7.0.11", - "@types/lodash": "^4.14.182", - "@types/prettier": "^2.6.1", - "cli-color": "^2.0.2", - "get-stdin": "^8.0.0", - "glob": "^7.1.6", - "glob-promise": "^4.2.2", + "@types/json-schema": "^7.0.15", + "@types/lodash": "^4.17.0", + "@types/prettier": "^3.0.0", + "cli-color": "^2.0.4", + "glob": "^10.3.12", "is-glob": "^4.0.3", "js-yaml": "^4.1.0", "lodash": "^4.17.21", - "minimist": "^1.2.6", - "mkdirp": "^1.0.4", + "minimist": "^1.2.8", + "mkdirp": "^3.0.1", "mz": "^2.7.0", "node-fetch": "^3.3.2", - "prettier": "^2.6.2" + "prettier": "^3.2.5" }, "devDependencies": { "@types/cli-color": "^2.0.2", diff --git a/src/cli.ts b/src/cli.ts index a2ed0f9e..4953c892 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -1,10 +1,9 @@ #!/usr/bin/env node import minimist = require('minimist') -import getStdin from 'get-stdin' import {readFile, writeFile, existsSync, lstatSync, readdirSync} from 'mz/fs' import * as mkdirp from 'mkdirp' -import glob from 'glob-promise' +import {glob} from 'glob' import isGlob = require('is-glob') import {join, resolve, dirname, basename} from 'path' import {compile, DEFAULT_OPTIONS, Options} from './index' @@ -141,13 +140,19 @@ function getPaths(path: string, paths: string[] = []) { return paths } -function readInput(argIn?: string) { +async function readInput(argIn?: string): Promise { if (!argIn) { - return getStdin() + return readStream(process.stdin) } return readFile(resolve(process.cwd(), argIn), 'utf-8') } +async function readStream(stream: NodeJS.ReadStream): Promise { + const chunks = [] + for await (const chunk of stream) chunks.push(chunk) + return Buffer.concat(chunks).toString('utf8') +} + function printHelp() { const pkg = require('../../package.json') diff --git a/src/formatter.ts b/src/formatter.ts index 4b7564b7..05f33628 100644 --- a/src/formatter.ts +++ b/src/formatter.ts @@ -1,7 +1,7 @@ import {format as prettify} from 'prettier' import {Options} from './' -export function format(code: string, options: Options): string { +export async function format(code: string, options: Options): Promise { if (!options.format) { return code } diff --git a/src/index.ts b/src/index.ts index 4c2a9703..1943b17d 100644 --- a/src/index.ts +++ b/src/index.ts @@ -176,7 +176,7 @@ export async function compile(schema: JSONSchema4, name: string, options: Partia const generated = generate(optimized, _options) log('magenta', 'generator', time(), '✅ Result:', generated) - const formatted = format(generated, _options) + const formatted = await format(generated, _options) log('white', 'formatter', time(), '✅ Result:', formatted) return formatted diff --git a/test/__snapshots__/test/test.ts.md b/test/__snapshots__/test/test.ts.md index 43fcff5a..49aa6fac 100644 --- a/test/__snapshots__/test/test.ts.md +++ b/test/__snapshots__/test/test.ts.md @@ -393,8 +393,7 @@ Generated by [AVA](https://avajs.dev). */␊ export interface UnrelatedTitle {␊ name?: string;␊ - }␊ - /**␊ + } /**␊ * Definition has no title and produces no duplicate Interface␊ */␊ export interface ThirdDefinition {␊ @@ -449495,9 +449494,10 @@ Generated by [AVA](https://avajs.dev). * and run json-schema-to-typescript to regenerate this file.␊ */␊ ␊ - export interface ASchema {␊ - f: string;␊ - g?: number;␊ + export interface BSchema {␊ + x?: string;␊ + y: number;␊ + [k: string]: unknown;␊ }␊ /* eslint-disable */␊ /**␊ @@ -449506,10 +449506,9 @@ Generated by [AVA](https://avajs.dev). * and run json-schema-to-typescript to regenerate this file.␊ */␊ ␊ - export interface BSchema {␊ - x?: string;␊ - y: number;␊ - [k: string]: unknown;␊ + export interface ASchema {␊ + f: string;␊ + g?: number;␊ }␊ ` diff --git a/test/__snapshots__/test/test.ts.snap b/test/__snapshots__/test/test.ts.snap index cae91b34..f05a3bd4 100644 Binary files a/test/__snapshots__/test/test.ts.snap and b/test/__snapshots__/test/test.ts.snap differ