@sidekick-coder/db
Version:
Cli Tool to manipulate data from diferent sources
136 lines (129 loc) • 3.84 kB
JavaScript
;
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;