swc/crates/swc_bundler/tests/.cache/deno/b142aa2060fb12d396785890a64e6b3b3d7b7994.ts
2021-11-09 20:42:49 +09:00

26 lines
787 B
TypeScript

// Loaded from https://deno.land/x/dndb@0.2.4/src/methods/removeOne.js
import { matches } from '../../deps.ts';
import { ReadFileStream, WriteFileStream } from '../storage.ts';
export default async (filename, query) => {
const readStream = new ReadFileStream(filename);
const writeStream = new WriteFileStream(filename);
let removed = [];
query = query || {};
return new Promise((resolve, reject) => {
readStream.on('document', obj => {
if (matches(query, obj) && removed.length == 0)
removed.push(obj)
else if (obj._id !== removed[0]?._id)
writeStream.emit("write", obj)
})
readStream.on("end", () => {
writeStream.emit("end");
})
writeStream.on("close", () => {
return resolve(removed[0] || null)
})
})
}