graphql-typed-client
Version:
A tool that generates a strongly typed client library for any GraphQL endpoint. The client allows writing GraphQL queries as plain JS objects (with type safety, awesome code completion experience, custom scalar type mapping, type guards and more)
35 lines (27 loc) • 1.06 kB
text/typescript
import { readFile, writeFile } from 'fs'
import mkdirp from 'mkdirp'
import { resolve } from 'path'
import rimraf from 'rimraf'
import { promisify } from 'util'
const readFileAsync = promisify(readFile)
const writeFileAsync = promisify(writeFile)
export const ensurePath = async (path: string[], clear: boolean = false) => {
if (clear)
await new Promise((rs, rj) => {
rimraf(resolve(...path), err => {
if (err) rj(err)
else rs()
})
})
await new Promise((rs, rj) => {
mkdirp(resolve(...path), err => {
if (err) rj(err)
else rs()
})
})
}
export const requireModuleFromPath = (path: string[]) => require(resolve(...path))
export const readFileFromPath = (path: string[]) => readFileAsync(resolve(...path)).then(b => b.toString())
export const writeFileToPath = (path: string[], content: string) => writeFileAsync(resolve(...path), content)
export const readFilesAndConcat = (files: string[]) =>
Promise.all(files.map(file => readFileFromPath([file]))).then(contents => contents.join('\n'))