ravendb
Version:
RavenDB client for Node.js
46 lines • 2.07 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getDocumentResultsAsObjects = getDocumentResultsAsObjects;
exports.getDocumentStreamResultsIntoStreamPipeline = getDocumentStreamResultsIntoStreamPipeline;
exports.streamResultsIntoStream = streamResultsIntoStream;
const node_stream_1 = require("node:stream");
const RavenCommandResponsePipeline_js_1 = require("../../../Http/RavenCommandResponsePipeline.js");
const ObjectUtil_js_1 = require("../../../Utility/ObjectUtil.js");
const Stringer_js_1 = require("../../../ext/stream-json/jsonl/Stringer.js");
function getDocumentResultsAsObjects(conventions, queryStream) {
const pipeline = RavenCommandResponsePipeline_js_1.RavenCommandResponsePipeline.create();
const keysTransform = new node_stream_1.Transform({
objectMode: true,
transform(chunk, encoding, callback) {
let value = chunk["value"];
if (!value) {
return callback();
}
if (conventions) {
value = ObjectUtil_js_1.ObjectUtil.transformDocumentKeys(value, conventions);
}
callback(null, { ...chunk, value });
}
});
return pipeline.parseJsonlAsync(queryStream ? x => x["Item"] : x => x, {
transforms: [keysTransform]
});
}
async function getDocumentStreamResultsIntoStreamPipeline(conventions) {
const pipeline = RavenCommandResponsePipeline_js_1.RavenCommandResponsePipeline.create();
return pipeline.parseJsonlAsync(x => x["Item"], {
transforms: [
new Stringer_js_1.JsonlStringer({ replacer: (key, value) => key === '' ? value.value : value }),
]
});
}
async function streamResultsIntoStream(bodyStream, conventions, writable) {
const pipeline = await getDocumentStreamResultsIntoStreamPipeline(conventions);
return new Promise((resolve, reject) => {
pipeline
.stream(bodyStream, writable, (err) => {
err ? reject(err) : resolve();
});
});
}
//# sourceMappingURL=Pipelines.js.map