pomljs
Version:
Prompt Orchestration Markup Language
48 lines (45 loc) • 1.35 kB
JavaScript
import { renderToPipeableStream } from 'react-dom/server';
import { Writable } from 'stream';
const pipeableStreamToString = async (stream) => {
return new Promise((resolve, reject) => {
const chunks = [];
const writable = new Writable({
write(chunk, encoding, callback) {
chunks.push(chunk);
callback();
},
final(callback) {
resolve(Buffer.concat(chunks).toString());
callback();
},
destroy(err, callback) {
reject(err);
callback(err);
}
});
stream(writable);
});
};
const reactRender = (element, shellOnly) => {
const promise = new Promise((resolve, reject) => {
const { pipe } = renderToPipeableStream(element, {
onAllReady: () => {
{
resolve(pipeableStreamToString(pipe));
}
},
onError: (error, errorInfo) => {
console.error(errorInfo);
reject(error);
},
onShellError: error => {
reject(error);
},
onShellReady: () => {
}
});
});
return promise;
};
export { reactRender };
//# sourceMappingURL=reactRender.js.map