@sidekick-coder/db
Version:
Cli Tool to manipulate data from diferent sources
111 lines (105 loc) • 3.51 kB
JavaScript
;
var path = require('path');
var fs = require('fs');
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
var fs__default = /*#__PURE__*/_interopDefault(fs);
// src/core/drive/index.ts
var drive = {
exists: async (path) => {
try {
await fs__default.default.promises.stat(path);
return true;
} catch (error) {
return false;
}
},
existsSync: (path) => {
try {
fs__default.default.statSync(path);
return true;
} catch (error) {
return false;
}
},
list: async (path, options) => {
if (!await drive.exists(path)) {
return [];
}
const all = await fs__default.default.promises.readdir(path, { withFileTypes: true });
if (options == null ? void 0 : options.onlyFiles) {
return all.filter((item) => item.isFile()).map((item) => item.name);
}
if (options == null ? void 0 : options.onlyDirs) {
return all.filter((item) => item.isDirectory()).map((item) => item.name);
}
return all.map((item) => item.name);
},
listSync: (path, options) => {
if (!drive.existsSync(path)) {
return [];
}
const all = fs__default.default.readdirSync(path, { withFileTypes: true });
if (options == null ? void 0 : options.onlyFiles) {
return all.filter((item) => item.isFile()).map((item) => item.name);
}
if (options == null ? void 0 : options.onlyDirs) {
return all.filter((item) => item.isDirectory()).map((item) => item.name);
}
return all.map((item) => item.name);
},
read: async (path) => {
if (!await drive.exists(path)) {
throw new Error(`entry not found ${path}`);
}
const stat = await fs__default.default.promises.stat(path);
if (!stat.isFile()) {
throw new Error(`entry not file ${path}`);
}
return fs__default.default.promises.readFile(path, "utf-8");
},
readSync: (path) => {
if (!drive.existsSync(path)) {
throw new Error(`entry not found ${path}`);
}
const stat = fs__default.default.statSync(path);
if (!stat.isFile()) {
throw new Error(`entry not file ${path}`);
}
return fs__default.default.readFileSync(path, "utf-8");
},
write: async (path$1, content, options) => {
if (options == null ? void 0 : options.recursive) {
await drive.mkdir(path.dirname(path$1), { recursive: true });
}
return fs__default.default.promises.writeFile(path$1, content, "utf-8");
},
writeSync: (path$1, content, options) => {
if (options == null ? void 0 : options.recursive) {
const parent = path.dirname(path$1);
drive.mkdirSync(parent, { recursive: true });
}
return fs__default.default.writeFileSync(path$1, content, "utf-8");
},
mkdir: async (path$1, options) => {
if (await drive.exists(path$1)) return;
if (options == null ? void 0 : options.recursive) {
await drive.mkdir(path.dirname(path$1));
}
return fs__default.default.promises.mkdir(path$1);
},
mkdirSync: (path$1, options) => {
if (drive.existsSync(path$1)) return;
if (options == null ? void 0 : options.recursive) {
const parent = path.dirname(path$1);
drive.mkdirSync(parent, { recursive: true });
}
return fs__default.default.mkdirSync(path$1);
},
destroy: (path) => {
return fs__default.default.promises.rm(path, { recursive: true });
},
destroySync: (path) => {
return fs__default.default.rmSync(path, { recursive: true });
}
};
exports.drive = drive;