@logtape/file
Version:
File sink and rotating file sink for LogTape
68 lines (66 loc) • 1.42 kB
JavaScript
import { getBaseFileSink, getBaseRotatingFileSink } from "./filesink.base.js";
//#region filesink.deno.ts
/**
* A Deno-specific file sink driver.
*/
const denoDriver = {
openSync(path) {
return Deno.openSync(path, {
create: true,
append: true
});
},
writeSync(fd, chunk) {
fd.writeSync(chunk);
},
writeManySync(fd, chunks) {
for (const chunk of chunks) fd.writeSync(chunk);
},
flushSync(fd) {
fd.syncSync();
},
closeSync(fd) {
fd.close();
},
statSync: globalThis?.Deno.statSync,
renameSync: globalThis?.Deno.renameSync
};
/**
* A Deno-specific async file sink driver.
* @since 1.0.0
*/
const denoAsyncDriver = {
...denoDriver,
async writeMany(fd, chunks) {
for (const chunk of chunks) await fd.write(chunk);
},
async flush(fd) {
await fd.sync();
},
close(fd) {
return Promise.resolve(fd.close());
}
};
function getFileSink(path, options = {}) {
if (options.nonBlocking) return getBaseFileSink(path, {
...options,
...denoAsyncDriver
});
return getBaseFileSink(path, {
...options,
...denoDriver
});
}
function getRotatingFileSink(path, options = {}) {
if (options.nonBlocking) return getBaseRotatingFileSink(path, {
...options,
...denoAsyncDriver
});
return getBaseRotatingFileSink(path, {
...options,
...denoDriver
});
}
//#endregion
export { denoAsyncDriver, denoDriver, getFileSink, getRotatingFileSink };
//# sourceMappingURL=filesink.deno.js.map