UNPKG

@sidekick-coder/db

Version:

Cli Tool to manipulate data from diferent sources

136 lines (129 loc) 3.84 kB
'use strict'; var cp = require('child_process'); var fs = require('fs'); var os = require('os'); var path = require('path'); function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; } var cp__default = /*#__PURE__*/_interopDefault(cp); var fs__default = /*#__PURE__*/_interopDefault(fs); var os__default = /*#__PURE__*/_interopDefault(os); // src/core/filesystem/createFsNode.ts // src/utils/tryCatch.ts async function tryCatch(tryer) { try { const result = await tryer(); return [result, null]; } catch (error) { return [null, error]; } } tryCatch.sync = function(tryer) { try { const result = tryer(); return [result, null]; } catch (error) { return [null, error]; } }; function createFsNode() { const exists = async (path) => { const [, error] = await tryCatch(() => fs__default.default.promises.access(path)); return error ? false : true; }; const existsSync = (path) => { const [, error] = tryCatch.sync(() => fs__default.default.accessSync(path)); return error ? false : true; }; const read = async (path) => { const [content, error] = await tryCatch(() => fs__default.default.promises.readFile(path)); if (error) { return null; } return new Uint8Array(content); }; const readSync = (path) => { const [content, error] = tryCatch.sync(() => fs__default.default.readFileSync(path)); if (error) { return null; } return new Uint8Array(content); }; const readdir = async (path) => { const [files, error] = await tryCatch(() => fs__default.default.promises.readdir(path)); return error ? [] : files; }; const readdirSync = (path) => { const [files, error] = tryCatch.sync(() => fs__default.default.readdirSync(path)); return error ? [] : files; }; const write = async (path, content) => { const [, error] = await tryCatch(() => fs__default.default.promises.writeFile(path, content)); if (error) { throw error; } }; const writeSync = (path, content) => { const [, error] = tryCatch.sync(() => fs__default.default.writeFileSync(path, content)); if (error) { throw error; } }; const mkdir = async (path) => { const [, error] = await tryCatch(() => fs__default.default.promises.mkdir(path)); if (error) { throw error; } }; const mkdirSync = (path) => { const [, error] = tryCatch.sync(() => fs__default.default.mkdirSync(path)); if (error) { throw error; } }; const remove = async (path) => { const [, error] = await tryCatch(() => fs__default.default.promises.rm(path, { recursive: true })); if (error) { throw error; } }; const removeSync = (path) => { const [, error] = tryCatch.sync(() => fs__default.default.rmSync(path, { recursive: true })); if (error) { throw error; } }; const removeAt = async (path$1, milliseconds) => { if (os__default.default.platform() === "win32") { const script = ` Set objShell = CreateObject("WScript.Shell") objShell.Run "cmd /c timeout /t ${milliseconds / 1e3} && del /f /q ${path$1}", 0, True `; const key = Math.random().toString(36).substring(7); const tempScriptPath = path.join(os__default.default.tmpdir(), `db-delete-file-${key}.vbs`); fs__default.default.writeFileSync(tempScriptPath, script); const child = cp__default.default.spawn("cscript.exe", [tempScriptPath], { detached: true, stdio: "ignore" }); child.unref(); return true; } return false; }; return { exists, existsSync, read, readSync, readdir, readdirSync, write, writeSync, mkdir, mkdirSync, remove, removeSync, removeAt }; } exports.createFsNode = createFsNode;