UNPKG

@exceptionless/node

Version:
61 lines 1.76 kB
import { mkdirSync } from "fs"; import { readdir, readFile, unlink, writeFile } from "fs/promises"; import { dirname, join, resolve } from "path"; import { argv } from "process"; export class NodeDirectoryStorage { directory; constructor(directory) { if (!directory) { this.directory = argv && argv.length > 1 ? join(dirname(argv[1]), ".exceptionless") : ".exceptionless"; } else { this.directory = resolve(directory); } mkdirSync(this.directory, { recursive: true }); } async length() { const keys = await this.keys(); return keys.length; } async clear() { for (const key of await this.keys()) { await this.removeItem(key); } return Promise.resolve(); } async getItem(key) { try { return await readFile(join(this.directory, key), "utf8"); } catch (ex) { if (this.isNodeError(ex) && ex.code === "ENOENT") { return null; } throw ex; } } async key(index) { const keys = await this.keys(); return Promise.resolve(index < keys.length ? keys[index] : null); } async keys() { return await readdir(this.directory); } async removeItem(key) { try { await unlink(join(this.directory, key)); } catch (ex) { if (this.isNodeError(ex) && ex.code !== "ENOENT") { throw ex; } } } async setItem(key, value) { await writeFile(join(this.directory, key), value); } isNodeError(error) { return typeof error === "object"; } } //# sourceMappingURL=NodeDirectoryStorage.js.map