Odoo GraphQL Subscription using Node, Express JS for Sample
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

49 lines
2.3 KiB

import { __assign } from "tslib";
import * as React from "rehackt";
import { getApolloContext } from "../context/index.js";
import { RenderPromises } from "./RenderPromises.js";
import { renderToStaticMarkup } from "react-dom/server";
export function getDataFromTree(tree, context) {
if (context === void 0) { context = {}; }
return getMarkupFromTree({
tree: tree,
context: context,
// If you need to configure this renderFunction, call getMarkupFromTree
// directly instead of getDataFromTree.
renderFunction: renderToStaticMarkup,
});
}
export function getMarkupFromTree(_a) {
var tree = _a.tree, _b = _a.context, context = _b === void 0 ? {} : _b,
// The rendering function is configurable! We use renderToStaticMarkup as
// the default, because it's a little less expensive than renderToString,
// and legacy usage of getDataFromTree ignores the return value anyway.
_c = _a.renderFunction,
// The rendering function is configurable! We use renderToStaticMarkup as
// the default, because it's a little less expensive than renderToString,
// and legacy usage of getDataFromTree ignores the return value anyway.
renderFunction = _c === void 0 ? renderToStaticMarkup : _c;
var renderPromises = new RenderPromises();
function process() {
// Always re-render from the rootElement, even though it might seem
// better to render the children of the component responsible for the
// promise, because it is not possible to reconstruct the full context
// of the original rendering (including all unknown context provider
// elements) for a subtree of the original component tree.
var ApolloContext = getApolloContext();
return new Promise(function (resolve) {
var element = React.createElement(ApolloContext.Provider, { value: __assign(__assign({}, context), { renderPromises: renderPromises }) }, tree);
resolve(renderFunction(element));
})
.then(function (html) {
return renderPromises.hasPromises() ?
renderPromises.consumeAndAwaitPromises().then(process)
: html;
})
.finally(function () {
renderPromises.stop();
});
}
return Promise.resolve().then(process);
}
//# sourceMappingURL=getDataFromTree.js.map