@cedarjs/prerender 7.0.0-canary.2989 → 7.0.0-canary.2994

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/dist/build-and-import/buildAndImport.d.ts +1 -1
  2. package/dist/build-and-import/buildAndImport.d.ts.map +1 -1
  3. package/dist/{cjs/index.d.ts.map → index.d.ts.map} +1 -1
  4. package/dist/index.js +1 -0
  5. package/dist/runPrerender.d.ts.map +1 -0
  6. package/dist/{runPrerenderEsm.js → runPrerender.js} +47 -41
  7. package/package.json +18 -40
  8. package/dist/babelPlugins/babel-plugin-redwood-cell.d.ts +0 -5
  9. package/dist/babelPlugins/babel-plugin-redwood-cell.d.ts.map +0 -1
  10. package/dist/babelPlugins/babel-plugin-redwood-cell.js +0 -98
  11. package/dist/babelPlugins/babel-plugin-redwood-prerender-media-imports.d.ts +0 -5
  12. package/dist/babelPlugins/babel-plugin-redwood-prerender-media-imports.d.ts.map +0 -1
  13. package/dist/babelPlugins/babel-plugin-redwood-prerender-media-imports.js +0 -77
  14. package/dist/babelPlugins/utils.d.ts +0 -2
  15. package/dist/babelPlugins/utils.d.ts.map +0 -1
  16. package/dist/babelPlugins/utils.js +0 -15
  17. package/dist/cjs/apolloState.d.ts +0 -13
  18. package/dist/cjs/apolloState.d.ts.map +0 -1
  19. package/dist/cjs/apolloState.js +0 -30
  20. package/dist/cjs/babelPlugins/babel-plugin-redwood-cell.d.ts +0 -5
  21. package/dist/cjs/babelPlugins/babel-plugin-redwood-cell.d.ts.map +0 -1
  22. package/dist/cjs/babelPlugins/babel-plugin-redwood-cell.js +0 -122
  23. package/dist/cjs/babelPlugins/babel-plugin-redwood-prerender-media-imports.d.ts +0 -5
  24. package/dist/cjs/babelPlugins/babel-plugin-redwood-prerender-media-imports.d.ts.map +0 -1
  25. package/dist/cjs/babelPlugins/babel-plugin-redwood-prerender-media-imports.js +0 -101
  26. package/dist/cjs/babelPlugins/utils.d.ts +0 -2
  27. package/dist/cjs/babelPlugins/utils.d.ts.map +0 -1
  28. package/dist/cjs/babelPlugins/utils.js +0 -49
  29. package/dist/cjs/browserUtils/index.d.ts +0 -8
  30. package/dist/cjs/browserUtils/index.d.ts.map +0 -1
  31. package/dist/cjs/browserUtils/index.js +0 -47
  32. package/dist/cjs/build-and-import/buildAndImport.js +0 -186
  33. package/dist/cjs/build-and-import/load-tsconfig.d.js +0 -1
  34. package/dist/cjs/build-and-import/rollupPlugins/rollup-plugin-cedar-remove-dev-fatal-error-page.js +0 -53
  35. package/dist/cjs/build-and-import/rollupPlugins/rollup-plugin-cedarjs-cell.js +0 -184
  36. package/dist/cjs/build-and-import/rollupPlugins/rollup-plugin-cedarjs-directory-named-imports.js +0 -83
  37. package/dist/cjs/build-and-import/rollupPlugins/rollup-plugin-cedarjs-external.js +0 -125
  38. package/dist/cjs/build-and-import/rollupPlugins/rollup-plugin-cedarjs-ignore-html-and-css-imports.js +0 -48
  39. package/dist/cjs/build-and-import/rollupPlugins/rollup-plugin-cedarjs-inject-file-globals.js +0 -66
  40. package/dist/cjs/build-and-import/rollupPlugins/rollup-plugin-cedarjs-prerender-media-imports.js +0 -118
  41. package/dist/cjs/build-and-import/rollupPlugins/rollup-plugin-cedarjs-routes-auto-loader.js +0 -146
  42. package/dist/cjs/build-and-import/rollupPlugins/utils.js +0 -78
  43. package/dist/cjs/build-and-import/utils.js +0 -68
  44. package/dist/cjs/detection/detection.d.ts +0 -11
  45. package/dist/cjs/detection/detection.d.ts.map +0 -1
  46. package/dist/cjs/detection/detection.js +0 -46
  47. package/dist/cjs/errors.d.ts +0 -19
  48. package/dist/cjs/errors.d.ts.map +0 -1
  49. package/dist/cjs/errors.js +0 -52
  50. package/dist/cjs/graphql/graphql.d.ts +0 -19
  51. package/dist/cjs/graphql/graphql.d.ts.map +0 -1
  52. package/dist/cjs/graphql/graphql.js +0 -152
  53. package/dist/cjs/graphql/node-runner.js +0 -97
  54. package/dist/cjs/graphql/vite-plugin-cedar-auto-import.js +0 -107
  55. package/dist/cjs/index.js +0 -22
  56. package/dist/cjs/internal.d.ts +0 -28
  57. package/dist/cjs/internal.d.ts.map +0 -1
  58. package/dist/cjs/internal.js +0 -135
  59. package/dist/cjs/package.json +0 -1
  60. package/dist/cjs/runPrerender.d.ts.map +0 -1
  61. package/dist/cjs/runPrerender.js +0 -313
  62. package/dist/cjs/runPrerenderEsm.js +0 -310
  63. package/dist/runPrerenderEsm.d.ts +0 -9
  64. package/dist/runPrerenderEsm.d.ts.map +0 -1
  65. /package/dist/{cjs/index.d.ts → index.d.ts} +0 -0
  66. /package/dist/{cjs/runPrerender.d.ts → runPrerender.d.ts} +0 -0
@@ -1,135 +0,0 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var internal_exports = {};
30
- __export(internal_exports, {
31
- getPathsFromTypeScriptConfig: () => getPathsFromTypeScriptConfig,
32
- getRootHtmlPath: () => getRootHtmlPath,
33
- parseTypeScriptConfigFiles: () => parseTypeScriptConfigFiles,
34
- registerShims: () => registerShims,
35
- writeToDist: () => writeToDist
36
- });
37
- module.exports = __toCommonJS(internal_exports);
38
- var import_node_fs = __toESM(require("node:fs"), 1);
39
- var import_path = __toESM(require("path"), 1);
40
- var import_fetch = require("@whatwg-node/fetch");
41
- var import_typescript = require("typescript");
42
- var import_project_config = require("@cedarjs/project-config");
43
- const INDEX_FILE = import_path.default.join((0, import_project_config.getPaths)().web.dist, "index.html");
44
- const DEFAULT_INDEX = import_path.default.join((0, import_project_config.getPaths)().web.dist, "200.html");
45
- const getRootHtmlPath = () => {
46
- if (import_node_fs.default.existsSync(DEFAULT_INDEX)) {
47
- return DEFAULT_INDEX;
48
- } else {
49
- return INDEX_FILE;
50
- }
51
- };
52
- const registerShims = (routerPath) => {
53
- const rwjsConfig = (0, import_project_config.getConfig)();
54
- globalThis.RWJS_ENV = {
55
- RWJS_API_GRAPHQL_URL: rwjsConfig.web.apiGraphQLUrl ?? rwjsConfig.web.apiUrl + "/graphql",
56
- RWJS_API_URL: rwjsConfig.web.apiUrl,
57
- __REDWOOD__APP_TITLE: rwjsConfig.web.title
58
- };
59
- globalThis.RWJS_DEBUG_ENV = {
60
- RWJS_SRC_ROOT: (0, import_project_config.getPaths)().web.src
61
- };
62
- globalThis.__REDWOOD__PRERENDERING = true;
63
- globalThis.__REDWOOD__HELMET_CONTEXT = {};
64
- process.env.__REDWOOD__PRERENDERING = "1";
65
- globalThis.location = {
66
- ...globalThis.location,
67
- pathname: routerPath
68
- };
69
- if (!globalThis.fetch) {
70
- globalThis.fetch = import_fetch.fetch;
71
- }
72
- };
73
- const writeToDist = (outputHtmlPath, renderOutput) => {
74
- const dirName = import_path.default.dirname(outputHtmlPath);
75
- const exist = import_node_fs.default.existsSync(dirName);
76
- if (!exist) {
77
- import_node_fs.default.mkdirSync(dirName, { recursive: true });
78
- }
79
- import_node_fs.default.writeFileSync(outputHtmlPath, renderOutput);
80
- };
81
- const parseTypeScriptConfigFiles = () => {
82
- const rwPaths = (0, import_project_config.getPaths)();
83
- const parseConfigFile = (basePath) => {
84
- let configPath = import_path.default.join(basePath, "tsconfig.json");
85
- if (!import_node_fs.default.existsSync(configPath)) {
86
- configPath = import_path.default.join(basePath, "jsconfig.json");
87
- if (!import_node_fs.default.existsSync(configPath)) {
88
- return null;
89
- }
90
- }
91
- return (0, import_typescript.parseConfigFileTextToJson)(
92
- configPath,
93
- import_node_fs.default.readFileSync(configPath, "utf-8")
94
- );
95
- };
96
- const apiConfig = parseConfigFile(rwPaths.api.base);
97
- const webConfig = parseConfigFile(rwPaths.web.base);
98
- return {
99
- api: apiConfig?.config ?? null,
100
- web: webConfig?.config ?? null
101
- };
102
- };
103
- function getPathsFromTypeScriptConfig(config, rootDir) {
104
- if (!config) {
105
- return [];
106
- }
107
- if (!config.compilerOptions?.paths) {
108
- return [];
109
- }
110
- const { baseUrl, paths } = config.compilerOptions;
111
- let absoluteBase;
112
- if (baseUrl) {
113
- absoluteBase = import_path.default.isAbsolute(baseUrl) ? baseUrl : import_path.default.join(rootDir, baseUrl);
114
- } else {
115
- absoluteBase = rootDir;
116
- }
117
- const aliases = [];
118
- for (const [key, value] of Object.entries(paths)) {
119
- if (key.match(/src\/|\$api\/\*|types\/\*|\@cedarjs\/.*/g)) {
120
- continue;
121
- }
122
- const aliasKey = key.replace("/*", "");
123
- const aliasValue = import_path.default.join(absoluteBase, value[0].replace("/*", ""));
124
- aliases.push({ find: aliasKey, replacement: aliasValue });
125
- }
126
- return aliases;
127
- }
128
- // Annotate the CommonJS export names for ESM import in node:
129
- 0 && (module.exports = {
130
- getPathsFromTypeScriptConfig,
131
- getRootHtmlPath,
132
- parseTypeScriptConfigFiles,
133
- registerShims,
134
- writeToDist
135
- });
@@ -1 +0,0 @@
1
- {"type":"commonjs"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"runPrerender.d.ts","sourceRoot":"","sources":["../../src/runPrerender.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AA6O7C,UAAU,eAAe;IACvB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IACrC,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,eAAO,MAAM,YAAY,GAAU,6BAGhC,eAAe,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAuIzC,CAAA;AAGD,eAAO,MAAM,wBAAwB,GACnC,gBAAgB,MAAM,EACtB,SAAS,MAAM,SAchB,CAAA"}
@@ -1,313 +0,0 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var runPrerender_exports = {};
30
- __export(runPrerender_exports, {
31
- runPrerender: () => runPrerender,
32
- writePrerenderedHtmlFile: () => writePrerenderedHtmlFile
33
- });
34
- module.exports = __toCommonJS(runPrerender_exports);
35
- var import_node_fs = __toESM(require("node:fs"), 1);
36
- var import_node_path = __toESM(require("node:path"), 1);
37
- var import_react = __toESM(require("react"), 1);
38
- var import_client = require("@apollo/client");
39
- var import_cheerio = require("cheerio");
40
- var import_server = __toESM(require("react-dom/server"), 1);
41
- var import_babel_config = require("@cedarjs/babel-config");
42
- var import_project_config = require("@cedarjs/project-config");
43
- var import_apolloState = require("./apolloState.js");
44
- var import_babel_plugin_redwood_cell = require("./babelPlugins/babel-plugin-redwood-cell.js");
45
- var import_babel_plugin_redwood_prerender_media_imports = require("./babelPlugins/babel-plugin-redwood-prerender-media-imports.js");
46
- var import_detection = require("./detection/detection.js");
47
- var import_errors = require("./errors.js");
48
- var import_graphql = require("./graphql/graphql.js");
49
- var import_internal = require("./internal.js");
50
- const prerenderApolloClient = new import_client.ApolloClient({
51
- cache: new import_client.InMemoryCache(),
52
- link: import_client.ApolloLink.empty()
53
- });
54
- async function recursivelyRender(App, Routes, renderPath, fileImporter, gqlHandler, queryCache) {
55
- const { CellCacheContextProvider, getOperationName } = require("@cedarjs/web");
56
- const { LocationProvider } = require("@cedarjs/router");
57
- let shouldShowGraphqlHandlerNotFoundWarn = false;
58
- await Promise.all(
59
- Object.entries(queryCache).map(async ([cacheKey, value]) => {
60
- if (value.hasProcessed) {
61
- return Promise.resolve("");
62
- }
63
- try {
64
- const resultString = await (0, import_graphql.executeQuery)(
65
- fileImporter,
66
- gqlHandler,
67
- value.query,
68
- value.variables
69
- );
70
- let result;
71
- try {
72
- result = JSON.parse(resultString);
73
- } catch (e) {
74
- if (e instanceof SyntaxError) {
75
- throw new import_errors.JSONParseError({
76
- query: value.query,
77
- variables: value.variables,
78
- result: resultString
79
- });
80
- }
81
- }
82
- if (result.errors) {
83
- const message = result.errors[0].message ?? JSON.stringify(result.errors, null, 4);
84
- if (result.errors[0]?.extensions?.code === "UNAUTHENTICATED") {
85
- const queryName = getOperationName(value.query);
86
- console.error(
87
- `
88
-
89
- \u{1F6D1} Cannot prerender the query ${queryName} as it requires auth.
90
- `
91
- );
92
- }
93
- throw new import_errors.PrerenderGqlError(message);
94
- }
95
- queryCache[cacheKey] = {
96
- ...value,
97
- data: result.data,
98
- hasProcessed: true
99
- };
100
- return result;
101
- } catch (e) {
102
- if (e instanceof import_errors.GqlHandlerImportError) {
103
- shouldShowGraphqlHandlerNotFoundWarn = true;
104
- queryCache[cacheKey] = {
105
- ...value,
106
- // tried to fetch, but failed
107
- renderLoading: true,
108
- hasProcessed: true
109
- };
110
- return;
111
- } else {
112
- throw e;
113
- }
114
- }
115
- })
116
- );
117
- const prerenderUrl = process.env.RWJS_PRERENDER_ORIGIN || "http://localhost" + renderPath;
118
- const componentAsHtml = import_server.default.renderToString(
119
- /* @__PURE__ */ import_react.default.createElement(LocationProvider, { location: new URL(prerenderUrl) }, /* @__PURE__ */ import_react.default.createElement(CellCacheContextProvider, { queryCache }, /* @__PURE__ */ import_react.default.createElement(App, null, /* @__PURE__ */ import_react.default.createElement(Routes, null))))
120
- );
121
- if (Object.values(queryCache).some((value) => !value.hasProcessed)) {
122
- return recursivelyRender(
123
- App,
124
- Routes,
125
- renderPath,
126
- fileImporter,
127
- gqlHandler,
128
- queryCache
129
- );
130
- } else {
131
- if (shouldShowGraphqlHandlerNotFoundWarn) {
132
- console.warn(
133
- '\n \u26A0\uFE0F Could not load your GraphQL handler. \n Your Cells have been prerendered in the "Loading" state. \n'
134
- );
135
- }
136
- return Promise.resolve(componentAsHtml);
137
- }
138
- }
139
- function insertChunkLoadingScript(indexHtmlTree, renderPath) {
140
- const { matchPath } = require("@cedarjs/router/dist/util");
141
- const prerenderRoutes = (0, import_detection.detectPrerenderRoutes)();
142
- const route = prerenderRoutes.find((route2) => {
143
- if (!route2.routePath) {
144
- return false;
145
- }
146
- return matchPath(route2.routePath, renderPath).match;
147
- });
148
- if (!route) {
149
- throw new Error("Could not find a Route matching " + renderPath);
150
- }
151
- if (!route.pageIdentifier) {
152
- throw new Error(`Route for ${renderPath} has no pageIdentifier`);
153
- }
154
- const buildManifest = JSON.parse(
155
- import_node_fs.default.readFileSync(
156
- import_node_path.default.join((0, import_project_config.getPaths)().web.dist, "client-build-manifest.json"),
157
- "utf-8"
158
- )
159
- );
160
- const chunkPaths = [];
161
- if (route?.filePath) {
162
- const pagesIndex = route.filePath.indexOf(import_node_path.default.join("web", "src", "pages")) + 4;
163
- const pagePath = (0, import_project_config.ensurePosixPath)(route.filePath.slice(pagesIndex));
164
- const pageChunkPath = buildManifest[pagePath]?.file;
165
- if (pageChunkPath) {
166
- chunkPaths.push("/" + pageChunkPath);
167
- }
168
- }
169
- if (chunkPaths.length === 0) {
170
- return;
171
- }
172
- chunkPaths.forEach((chunkPath) => {
173
- indexHtmlTree("head").prepend(
174
- `<script defer="defer" src="${chunkPath}" type="module"></script>`
175
- );
176
- });
177
- chunkPaths.forEach((chunkPath) => {
178
- const fullChunkPath = import_node_path.default.join((0, import_project_config.getPaths)().web.dist, chunkPath);
179
- const jsChunk = import_node_fs.default.readFileSync(fullChunkPath, "utf-8");
180
- const matches = jsChunk.match(/export\s*\{\s*\w+ as default\s*\}/g) || [];
181
- const lastIndex = jsChunk.lastIndexOf(matches[matches.length - 1]);
182
- const varNameMatch = jsChunk.slice(lastIndex).match(/export\s*\{\s*(\w+) as default\s*\}/);
183
- import_node_fs.default.writeFileSync(
184
- fullChunkPath,
185
- jsChunk + `globalThis.__REDWOOD__PRERENDER_PAGES = globalThis.__REDWOOD__PRERENDER_PAGES || {};
186
- globalThis.__REDWOOD__PRERENDER_PAGES.${route?.pageIdentifier}=${varNameMatch?.[1]};
187
- `
188
- );
189
- });
190
- }
191
- const runPrerender = async ({
192
- queryCache,
193
- renderPath
194
- }) => {
195
- (0, import_internal.registerShims)(renderPath);
196
- (0, import_babel_config.registerApiSideBabelHook)({
197
- plugins: [
198
- [
199
- "babel-plugin-module-resolver",
200
- {
201
- alias: {
202
- api: (0, import_project_config.getPaths)().api.base,
203
- web: (0, import_project_config.getPaths)().web.base
204
- },
205
- loglevel: "silent"
206
- // to silence the unnecessary warnings
207
- }
208
- ]
209
- ],
210
- overrides: [
211
- {
212
- test: ["./api/"],
213
- plugins: [
214
- [
215
- "babel-plugin-module-resolver",
216
- {
217
- alias: {
218
- src: (0, import_project_config.getPaths)().api.src
219
- },
220
- loglevel: "silent"
221
- },
222
- "exec-api-src-module-resolver"
223
- ]
224
- ]
225
- }
226
- ]
227
- });
228
- const gqlHandler = await (0, import_graphql.getGqlHandler)(require);
229
- (0, import_babel_config.registerWebSideBabelHook)({
230
- overrides: [
231
- {
232
- plugins: [
233
- // Vite handles CSS imports for the browser build
234
- ["ignore-html-and-css-imports"],
235
- [import_babel_plugin_redwood_prerender_media_imports.babelPluginRedwoodPrerenderMediaImports]
236
- ]
237
- },
238
- {
239
- test: /.+Cell.(js|tsx|jsx)$/,
240
- plugins: [import_babel_plugin_redwood_cell.babelPluginRedwoodCell]
241
- }
242
- ],
243
- options: {
244
- forPrerender: true
245
- }
246
- });
247
- const indexContent = import_node_fs.default.readFileSync((0, import_internal.getRootHtmlPath)()).toString();
248
- const { default: App } = require((0, import_project_config.getPaths)().web.app);
249
- const { default: Routes } = require((0, import_project_config.getPaths)().web.routes);
250
- const componentAsHtml = await recursivelyRender(
251
- App,
252
- Routes,
253
- renderPath,
254
- require,
255
- gqlHandler,
256
- queryCache
257
- );
258
- const { helmet } = globalThis.__REDWOOD__HELMET_CONTEXT;
259
- Object.keys(queryCache).forEach((queryKey) => {
260
- const { query, variables, data } = queryCache[queryKey];
261
- prerenderApolloClient.writeQuery({
262
- query,
263
- variables,
264
- data
265
- });
266
- });
267
- const indexHtmlTree = (0, import_cheerio.load)(indexContent);
268
- if (helmet) {
269
- const helmetElements = `
270
- ${helmet?.link.toString()}
271
- ${helmet?.meta.toString()}
272
- ${helmet?.script.toString()}
273
- ${helmet?.noscript.toString()}
274
- `;
275
- indexHtmlTree("head").prepend(helmetElements);
276
- const titleHtmlTag = helmet.title.toString();
277
- if ((0, import_cheerio.load)(titleHtmlTag)("title").text() !== "") {
278
- if (indexHtmlTree("title").text().length === 0) {
279
- indexHtmlTree("head").prepend(titleHtmlTag);
280
- } else {
281
- indexHtmlTree("title").replaceWith(titleHtmlTag);
282
- }
283
- }
284
- }
285
- const apolloState = prerenderApolloClient.extract();
286
- if ((0, import_apolloState.hasApolloState)(apolloState)) {
287
- indexHtmlTree("head").append(
288
- `<script> globalThis.__CEDAR__APOLLO_STATE = ${JSON.stringify(
289
- apolloState
290
- )}</script>`
291
- );
292
- }
293
- prerenderApolloClient.resetStore();
294
- insertChunkLoadingScript(indexHtmlTree, renderPath);
295
- indexHtmlTree("#cedar-app, #redwood-app").append(componentAsHtml);
296
- const renderOutput = indexHtmlTree.html();
297
- return renderOutput;
298
- };
299
- const writePrerenderedHtmlFile = (outputHtmlPath, content) => {
300
- const outputHtmlAbsPath = import_node_path.default.join((0, import_project_config.getPaths)().base, outputHtmlPath);
301
- if (outputHtmlPath === "web/dist/index.html") {
302
- const html200Path = import_node_path.default.join((0, import_project_config.getPaths)().web.dist, "200.html");
303
- if (!import_node_fs.default.existsSync(html200Path)) {
304
- import_node_fs.default.copyFileSync(outputHtmlAbsPath, html200Path);
305
- }
306
- }
307
- (0, import_internal.writeToDist)(outputHtmlAbsPath, content);
308
- };
309
- // Annotate the CommonJS export names for ESM import in node:
310
- 0 && (module.exports = {
311
- runPrerender,
312
- writePrerenderedHtmlFile
313
- });