@message-queue-toolkit/core
Version:
Useful utilities, interfaces and base classes for message queue handling. Supports AMQP and SQS with a common abstraction on top currently
25 lines • 1.1 kB
JavaScript
import { FsReadableProvider } from '@lokalise/node-core';
import { JsonStreamStringify } from 'json-stream-stringify';
import { tmpNameSync } from 'tmp';
export const defaultTemporaryFilePathResolver = () => tmpNameSync();
export class JsonStreamStringifySerializer {
temporaryFilePathResolver;
constructor(temporaryFilePathResolver = defaultTemporaryFilePathResolver) {
this.temporaryFilePathResolver = temporaryFilePathResolver;
}
async serialize(payload) {
const fsReadableProvider = await FsReadableProvider.persistReadableToFs({
sourceReadable: new JsonStreamStringify(payload),
targetFile: this.temporaryFilePathResolver(),
});
return {
value: await fsReadableProvider.createStream(),
size: await fsReadableProvider.getContentLength(),
destroy: async () => {
await fsReadableProvider.destroy();
},
};
}
}
export const jsonStreamStringifySerializer = new JsonStreamStringifySerializer();
//# sourceMappingURL=JsonStreamStringifySerializer.js.map