You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
3.4 KiB
JavaScript
73 lines
3.4 KiB
JavaScript
|
9 months ago
|
"use strict";
|
||
|
|
Object.defineProperty(exports, "__esModule", {
|
||
|
|
value: true
|
||
|
|
});
|
||
|
|
Object.defineProperty(exports, "makeGetServerInsertedHTML", {
|
||
|
|
enumerable: true,
|
||
|
|
get: function() {
|
||
|
|
return makeGetServerInsertedHTML;
|
||
|
|
}
|
||
|
|
});
|
||
|
|
const _jsxruntime = require("react/jsx-runtime");
|
||
|
|
const _react = /*#__PURE__*/ _interop_require_default(require("react"));
|
||
|
|
const _notfound = require("../../client/components/not-found");
|
||
|
|
const _redirect = require("../../client/components/redirect");
|
||
|
|
const _serveredge = require("react-dom/server.edge");
|
||
|
|
const _nodewebstreamshelper = require("../stream-utils/node-web-streams-helper");
|
||
|
|
const _redirectstatuscode = require("../../client/components/redirect-status-code");
|
||
|
|
function _interop_require_default(obj) {
|
||
|
|
return obj && obj.__esModule ? obj : {
|
||
|
|
default: obj
|
||
|
|
};
|
||
|
|
}
|
||
|
|
function makeGetServerInsertedHTML({ polyfills, renderServerInsertedHTML, hasPostponed }) {
|
||
|
|
let flushedErrorMetaTagsUntilIndex = 0;
|
||
|
|
// If the render had postponed, then we have already flushed the polyfills.
|
||
|
|
let polyfillsFlushed = hasPostponed;
|
||
|
|
return async function getServerInsertedHTML(serverCapturedErrors) {
|
||
|
|
// Loop through all the errors that have been captured but not yet
|
||
|
|
// flushed.
|
||
|
|
const errorMetaTags = [];
|
||
|
|
while(flushedErrorMetaTagsUntilIndex < serverCapturedErrors.length){
|
||
|
|
const error = serverCapturedErrors[flushedErrorMetaTagsUntilIndex];
|
||
|
|
flushedErrorMetaTagsUntilIndex++;
|
||
|
|
if ((0, _notfound.isNotFoundError)(error)) {
|
||
|
|
errorMetaTags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)("meta", {
|
||
|
|
name: "robots",
|
||
|
|
content: "noindex"
|
||
|
|
}, error.digest), process.env.NODE_ENV === "development" ? /*#__PURE__*/ (0, _jsxruntime.jsx)("meta", {
|
||
|
|
name: "next-error",
|
||
|
|
content: "not-found"
|
||
|
|
}, "next-error") : null);
|
||
|
|
} else if ((0, _redirect.isRedirectError)(error)) {
|
||
|
|
const redirectUrl = (0, _redirect.getURLFromRedirectError)(error);
|
||
|
|
const statusCode = (0, _redirect.getRedirectStatusCodeFromError)(error);
|
||
|
|
const isPermanent = statusCode === _redirectstatuscode.RedirectStatusCode.PermanentRedirect ? true : false;
|
||
|
|
if (redirectUrl) {
|
||
|
|
errorMetaTags.push(/*#__PURE__*/ (0, _jsxruntime.jsx)("meta", {
|
||
|
|
httpEquiv: "refresh",
|
||
|
|
content: `${isPermanent ? 0 : 1};url=${redirectUrl}`
|
||
|
|
}, error.digest));
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
const stream = await (0, _serveredge.renderToReadableStream)(/*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
|
||
|
|
children: [
|
||
|
|
!polyfillsFlushed && (polyfills == null ? void 0 : polyfills.map((polyfill)=>{
|
||
|
|
return /*#__PURE__*/ (0, _jsxruntime.jsx)("script", {
|
||
|
|
...polyfill
|
||
|
|
}, polyfill.src);
|
||
|
|
})),
|
||
|
|
renderServerInsertedHTML(),
|
||
|
|
errorMetaTags
|
||
|
|
]
|
||
|
|
}));
|
||
|
|
// Mark polyfills as flushed so they don't get flushed again.
|
||
|
|
if (!polyfillsFlushed) polyfillsFlushed = true;
|
||
|
|
// Wait for the stream to be ready.
|
||
|
|
await stream.allReady;
|
||
|
|
return (0, _nodewebstreamshelper.streamToString)(stream);
|
||
|
|
};
|
||
|
|
}
|
||
|
|
|
||
|
|
//# sourceMappingURL=make-get-server-inserted-html.js.map
|