type-graphql
Version:
Create GraphQL schema and resolvers with TypeScript, using classes and decorators!
74 lines (73 loc) • 2.57 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.outputFileSync = exports.outputFile = exports.mkdirRecursiveSync = exports.mkdirRecursive = exports.parsePath = exports.fsWriteFile = exports.fsMkdir = void 0;
const tslib_1 = require("tslib");
const node_fs_1 = tslib_1.__importDefault(require("node:fs"));
const node_path_1 = tslib_1.__importDefault(require("node:path"));
const node_util_1 = require("node:util");
exports.fsMkdir = (0, node_util_1.promisify)(node_fs_1.default.mkdir);
exports.fsWriteFile = (0, node_util_1.promisify)(node_fs_1.default.writeFile);
function parsePath(targetPath) {
const directories = [];
const parsedPath = node_path_1.default.parse(node_path_1.default.resolve(targetPath));
const splitPath = parsedPath.dir.split(node_path_1.default.sep);
if (parsedPath.root === "/") {
splitPath[0] = `/${splitPath[0]}`;
}
splitPath.reduce((previous, next) => {
const directory = node_path_1.default.join(previous, next);
directories.push(directory);
return node_path_1.default.join(directory);
});
return directories;
}
exports.parsePath = parsePath;
async function mkdirRecursive(filePath) {
const directories = parsePath(filePath);
for (const directory of directories) {
try {
await (0, exports.fsMkdir)(directory);
}
catch (err) {
if (err.code !== "EEXIST") {
throw err;
}
}
}
}
exports.mkdirRecursive = mkdirRecursive;
function mkdirRecursiveSync(filePath) {
const directories = parsePath(filePath);
for (const directory of directories) {
if (!node_fs_1.default.existsSync(directory)) {
node_fs_1.default.mkdirSync(directory);
}
}
}
exports.mkdirRecursiveSync = mkdirRecursiveSync;
async function outputFile(filePath, fileContent) {
try {
await (0, exports.fsWriteFile)(filePath, fileContent);
}
catch (err) {
if (err.code !== "ENOENT") {
throw err;
}
await mkdirRecursive(filePath);
await (0, exports.fsWriteFile)(filePath, fileContent);
}
}
exports.outputFile = outputFile;
function outputFileSync(filePath, fileContent) {
try {
node_fs_1.default.writeFileSync(filePath, fileContent);
}
catch (err) {
if (err.code !== "ENOENT") {
throw err;
}
mkdirRecursiveSync(filePath);
node_fs_1.default.writeFileSync(filePath, fileContent);
}
}
exports.outputFileSync = outputFileSync;