qpace
Version:
📊 The Quant SDK for Python and Javascript. Written in Rust.
141 lines (140 loc) • 3.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: Object.getOwnPropertyDescriptor(all, name).get
});
}
_export(exports, {
get clearDir () {
return clearDir;
},
get createDir () {
return createDir;
},
get deleteFile () {
return deleteFile;
},
get exists () {
return exists;
},
get readJson () {
return readJson;
},
get tmpDir () {
return tmpDir;
},
get watchPaths () {
return watchPaths;
},
get writeJson () {
return writeJson;
}
});
function _promises() {
const data = require("fs/promises");
_promises = function() {
return data;
};
return data;
}
function _promises1() {
const data = require("node:fs/promises");
_promises1 = function() {
return data;
};
return data;
}
function _os() {
const data = require("os");
_os = function() {
return data;
};
return data;
}
function _path() {
const data = require("path");
_path = function() {
return data;
};
return data;
}
function _chokidar() {
const data = require("chokidar");
_chokidar = function() {
return data;
};
return data;
}
const exists = async (path)=>{
try {
await (0, _promises().stat)(path);
} catch (err) {
return false;
}
return true;
};
const readJson = async (path)=>{
try {
return await (0, _promises().readFile)(path, "utf8").then((r)=>JSON.parse(r));
} catch (e) {
console.trace(`Error reading json file: ${path}`);
throw e;
}
};
const maybeFmtJson = (data, format)=>{
if (format) return JSON.stringify(data, null, 2);
return JSON.stringify(data);
};
const writeJson = async (path, data, formatted = false)=>{
await (0, _promises().writeFile)(path, maybeFmtJson(data, formatted), "utf8");
};
const tmpDir = async (prefix)=>{
prefix = (0, _path().resolve)((0, _os().tmpdir)(), prefix ?? Date.now().toString());
return await (0, _promises().mkdtemp)(prefix);
};
const createDir = async (path)=>{
if (!await exists(path)) {
await (0, _promises1().mkdir)(path, {
recursive: true
});
}
};
const watchPaths = async ({ included, excluded = [], delay = 500 }, onChange)=>{
let watcher;
let runTimeout;
watcher?.close();
watcher = (0, _chokidar().watch)(included, {
ignored: excluded,
followSymlinks: true,
ignoreInitial: true
});
watcher.on("change", (filename, stats)=>{
clearTimeout(runTimeout);
runTimeout = setTimeout(()=>{
onChange(filename);
}, delay);
});
return {
cancel: ()=>watcher?.close()
};
};
const clearDir = async (path)=>{
if (!await exists(path)) {
return;
}
const files = await (0, _promises1().readdir)(path);
await Promise.all(files.map(async (file)=>await deleteFile((0, _path().resolve)(path, file))));
};
const deleteFile = async (path)=>{
try {
await (0, _promises1().unlink)(path);
} catch (err) {
if (err?.code !== "ENOENT") {
throw err;
}
}
};