UNPKG

type-graphql

Version:

Create GraphQL schema and resolvers with TypeScript, using classes and decorators!

65 lines (64 loc) 1.83 kB
import fs from "node:fs"; import path from "node:path"; import { promisify } from "node:util"; export const fsMkdir = promisify(fs.mkdir); export const fsWriteFile = promisify(fs.writeFile); export function parsePath(targetPath) { const directories = []; const parsedPath = path.parse(path.resolve(targetPath)); const splitPath = parsedPath.dir.split(path.sep); if (parsedPath.root === "/") { splitPath[0] = `/${splitPath[0]}`; } splitPath.reduce((previous, next) => { const directory = path.join(previous, next); directories.push(directory); return path.join(directory); }); return directories; } export async function mkdirRecursive(filePath) { const directories = parsePath(filePath); for (const directory of directories) { try { await fsMkdir(directory); } catch (err) { if (err.code !== "EEXIST") { throw err; } } } } export function mkdirRecursiveSync(filePath) { const directories = parsePath(filePath); for (const directory of directories) { if (!fs.existsSync(directory)) { fs.mkdirSync(directory); } } } export async function outputFile(filePath, fileContent) { try { await fsWriteFile(filePath, fileContent); } catch (err) { if (err.code !== "ENOENT") { throw err; } await mkdirRecursive(filePath); await fsWriteFile(filePath, fileContent); } } export function outputFileSync(filePath, fileContent) { try { fs.writeFileSync(filePath, fileContent); } catch (err) { if (err.code !== "ENOENT") { throw err; } mkdirRecursiveSync(filePath); fs.writeFileSync(filePath, fileContent); } }