rasengan 1.0.0-beta.51 → 1.0.0-beta.55
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.
- package/CHANGELOG.md +9 -0
- package/lib/esm/core/plugins/index.js +1 -1
- package/lib/esm/routing/utils/generate-routes.js +83 -2
- package/lib/esm/server/dev/utils.js +2 -0
- package/lib/tsconfig.esm.tsbuildinfo +1 -1
- package/lib/tsconfig.types.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/lib/esm/server/utils/handleError.js +0 -23
- package/lib/esm/server/utils/handleRequest.js +0 -185
- package/lib/esm/server/utils/index.js +0 -4
- package/lib/types/server/utils/handleError.d.ts +0 -2
- package/lib/types/server/utils/handleRequest.d.ts +0 -1
- package/lib/types/server/utils/index.d.ts +0 -2
package/CHANGELOG.md
ADDED
|
@@ -96,7 +96,7 @@ export function rasengan({ adapter = { name: Adapters.DEFAULT, prepare: async ()
|
|
|
96
96
|
config = resolvedConfig;
|
|
97
97
|
},
|
|
98
98
|
async closeBundle() {
|
|
99
|
-
// We check here if the environment is client has been built because it's the
|
|
99
|
+
// We check here if the environment is client has been built because it's the
|
|
100
100
|
// last environment to be built in the Vite build process
|
|
101
101
|
if (this.environment.name === 'client') {
|
|
102
102
|
// Preparing app for deployment
|
|
@@ -17,6 +17,86 @@ export const getRouter = (routerInstance) => {
|
|
|
17
17
|
});
|
|
18
18
|
return () => _jsx(RouterProvider, { router: router });
|
|
19
19
|
};
|
|
20
|
+
/**
|
|
21
|
+
* This function merge the metadata, giving priority to the ones comming from loader
|
|
22
|
+
*/
|
|
23
|
+
const mergeMetaData = (responseMeta, meta) => {
|
|
24
|
+
let mergedMetaData = {
|
|
25
|
+
metaTags: [],
|
|
26
|
+
links: [],
|
|
27
|
+
};
|
|
28
|
+
// merge title and description
|
|
29
|
+
mergedMetaData['title'] =
|
|
30
|
+
responseMeta.title ?? meta.title;
|
|
31
|
+
mergedMetaData['description'] =
|
|
32
|
+
responseMeta.description ?? meta.description;
|
|
33
|
+
// merge openGraph datas
|
|
34
|
+
mergedMetaData['openGraph'] = {
|
|
35
|
+
...meta.openGraph,
|
|
36
|
+
...responseMeta.openGraph,
|
|
37
|
+
};
|
|
38
|
+
// merge twitter data
|
|
39
|
+
mergedMetaData['twitter'] = {
|
|
40
|
+
...meta.twitter,
|
|
41
|
+
...responseMeta.twitter,
|
|
42
|
+
};
|
|
43
|
+
// merge elements of type <array> eg. metaTags and links
|
|
44
|
+
const metaSet = new Set();
|
|
45
|
+
const linkSet = new Set();
|
|
46
|
+
if (meta['metaTags'] && Array.isArray(meta.metaTags)) {
|
|
47
|
+
// Loop through the metaTags and add every key to the set
|
|
48
|
+
for (const element of meta.metaTags) {
|
|
49
|
+
metaSet.add(element.name ?? element.property);
|
|
50
|
+
}
|
|
51
|
+
if (responseMeta['metaTags'] && Array.isArray(responseMeta.metaTags)) {
|
|
52
|
+
// Loop through the responseMeta and check if the key is already in the set
|
|
53
|
+
for (const element of responseMeta.metaTags) {
|
|
54
|
+
if (metaSet.has(element.name ?? element.property)) {
|
|
55
|
+
// remove the element from the set
|
|
56
|
+
metaSet.delete(element.name ?? element.property);
|
|
57
|
+
}
|
|
58
|
+
mergedMetaData.metaTags.push(element);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// Loop through the remaining elements in the set
|
|
62
|
+
for (const element of metaSet) {
|
|
63
|
+
const metaElement = meta.metaTags.find((el) => el.name === element);
|
|
64
|
+
if (metaElement) {
|
|
65
|
+
mergedMetaData.metaTags.push(metaElement);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
mergedMetaData.metaTags = responseMeta.metaTags ?? [];
|
|
71
|
+
}
|
|
72
|
+
if (meta['links'] && Array.isArray(meta.links)) {
|
|
73
|
+
// Loop through the links and add every key to the set
|
|
74
|
+
for (const element of meta.links) {
|
|
75
|
+
linkSet.add(element.rel);
|
|
76
|
+
}
|
|
77
|
+
if (responseMeta['links'] && Array.isArray(responseMeta.links)) {
|
|
78
|
+
// Loop through the responseMeta and check if the key is already in the set
|
|
79
|
+
for (const element of responseMeta.links) {
|
|
80
|
+
if (linkSet.has(element.rel)) {
|
|
81
|
+
// remove the element from the set
|
|
82
|
+
linkSet.delete(element.rel);
|
|
83
|
+
}
|
|
84
|
+
mergedMetaData.links.push(element);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// Loop through the remaining elements in the set
|
|
88
|
+
for (const element of linkSet) {
|
|
89
|
+
const linkElement = meta.links.find((el) => el.rel === element);
|
|
90
|
+
if (linkElement) {
|
|
91
|
+
mergedMetaData.links.push(linkElement);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
mergedMetaData.links = responseMeta.links ?? [];
|
|
97
|
+
}
|
|
98
|
+
return mergedMetaData;
|
|
99
|
+
};
|
|
20
100
|
/**
|
|
21
101
|
* This function create a loader function
|
|
22
102
|
*/
|
|
@@ -44,11 +124,12 @@ const createLoaderFunction = ({ loader, metadata, }) => {
|
|
|
44
124
|
});
|
|
45
125
|
}
|
|
46
126
|
return {
|
|
47
|
-
|
|
48
|
-
meta: metadata,
|
|
127
|
+
props: response.props,
|
|
128
|
+
meta: mergeMetaData(response.meta, metadata),
|
|
49
129
|
};
|
|
50
130
|
}
|
|
51
131
|
catch (error) {
|
|
132
|
+
console.error(error);
|
|
52
133
|
return {
|
|
53
134
|
props: {},
|
|
54
135
|
meta: {},
|
|
@@ -3,6 +3,7 @@ import ora from 'ora';
|
|
|
3
3
|
import fs from 'fs/promises';
|
|
4
4
|
import openBrowser from 'open';
|
|
5
5
|
import os from 'node:os';
|
|
6
|
+
import readline from 'node:readline';
|
|
6
7
|
// Get local IP
|
|
7
8
|
export default function getIPAddress() {
|
|
8
9
|
// Get network interfaces
|
|
@@ -69,6 +70,7 @@ export async function logServerInfo(port, mode, open = false) {
|
|
|
69
70
|
if (open) {
|
|
70
71
|
openBrowser(`http://localhost:${port}`);
|
|
71
72
|
}
|
|
73
|
+
readline.emitKeypressEvents(process.stdin);
|
|
72
74
|
// Listen on user keyboard input on the terminal
|
|
73
75
|
process.stdin.on('keypress', (_, key) => {
|
|
74
76
|
// Check if the key pressed is 'c'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../src/client.ts","../src/index.ts","../src/plugin.ts","../src/server.ts","../src/cli/index.ts","../src/core/index.ts","../src/core/types.ts","../src/core/config/index.ts","../src/core/config/type.ts","../src/core/config/utils/define-config.ts","../src/core/config/utils/load-modules.ts","../src/core/config/utils/path.ts","../src/core/config/vite/defaults.ts","../src/core/dynamic/index.tsx","../src/core/middlewares/index.ts","../src/core/middlewares/logger.ts","../src/core/plugins/index.ts","../src/core/utils/log.ts","../src/entries/client/render.tsx","../src/entries/server/entry.server.tsx","../src/entries/server/index.tsx","../src/routing/index.ts","../src/routing/interfaces.tsx","../src/routing/types.ts","../src/routing/components/index.tsx","../src/routing/components/template.tsx","../src/routing/utils/define-router.tsx","../src/routing/utils/define-routes-group.tsx","../src/routing/utils/generate-metadata.tsx","../src/routing/utils/generate-routes.tsx","../src/routing/utils/index.tsx","../src/scripts/build-command.js","../src/scripts/generate-package-json.js","../src/scripts/utils/check-os.js","../src/scripts/utils/copy.js","../src/server/build/index.ts","../src/server/build/manifest.tsx","../src/server/dev/handlers.tsx","../src/server/dev/server.ts","../src/server/dev/utils.ts","../src/server/node/index.tsx","../src/server/node/rendering.ts","../src/server/node/stream.ts","../src/server/node/utils.ts","../src/server/runtime/mode.ts","../src/server/
|
|
1
|
+
{"root":["../src/client.ts","../src/index.ts","../src/plugin.ts","../src/server.ts","../src/cli/index.ts","../src/core/index.ts","../src/core/types.ts","../src/core/config/index.ts","../src/core/config/type.ts","../src/core/config/utils/define-config.ts","../src/core/config/utils/load-modules.ts","../src/core/config/utils/path.ts","../src/core/config/vite/defaults.ts","../src/core/dynamic/index.tsx","../src/core/middlewares/index.ts","../src/core/middlewares/logger.ts","../src/core/plugins/index.ts","../src/core/utils/log.ts","../src/entries/client/render.tsx","../src/entries/server/entry.server.tsx","../src/entries/server/index.tsx","../src/routing/index.ts","../src/routing/interfaces.tsx","../src/routing/types.ts","../src/routing/components/index.tsx","../src/routing/components/template.tsx","../src/routing/utils/define-router.tsx","../src/routing/utils/define-routes-group.tsx","../src/routing/utils/generate-metadata.tsx","../src/routing/utils/generate-routes.tsx","../src/routing/utils/index.tsx","../src/scripts/build-command.js","../src/scripts/generate-package-json.js","../src/scripts/utils/check-os.js","../src/scripts/utils/copy.js","../src/server/build/index.ts","../src/server/build/manifest.tsx","../src/server/dev/handlers.tsx","../src/server/dev/server.ts","../src/server/dev/utils.ts","../src/server/node/index.tsx","../src/server/node/rendering.ts","../src/server/node/stream.ts","../src/server/node/utils.ts","../src/server/runtime/mode.ts","../src/server/virtual/index.ts","../types/client.d.ts"],"version":"5.7.2"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../src/client.ts","../src/index.ts","../src/plugin.ts","../src/server.ts","../src/cli/index.ts","../src/core/index.ts","../src/core/types.ts","../src/core/config/index.ts","../src/core/config/type.ts","../src/core/config/utils/define-config.ts","../src/core/config/utils/load-modules.ts","../src/core/config/utils/path.ts","../src/core/config/vite/defaults.ts","../src/core/dynamic/index.tsx","../src/core/middlewares/index.ts","../src/core/middlewares/logger.ts","../src/core/plugins/index.ts","../src/core/utils/log.ts","../src/entries/client/render.tsx","../src/entries/server/entry.server.tsx","../src/entries/server/index.tsx","../src/routing/index.ts","../src/routing/interfaces.tsx","../src/routing/types.ts","../src/routing/components/index.tsx","../src/routing/components/template.tsx","../src/routing/utils/define-router.tsx","../src/routing/utils/define-routes-group.tsx","../src/routing/utils/generate-metadata.tsx","../src/routing/utils/generate-routes.tsx","../src/routing/utils/index.tsx","../src/scripts/build-command.js","../src/scripts/generate-package-json.js","../src/scripts/utils/check-os.js","../src/scripts/utils/copy.js","../src/server/build/index.ts","../src/server/build/manifest.tsx","../src/server/dev/handlers.tsx","../src/server/dev/server.ts","../src/server/dev/utils.ts","../src/server/node/index.tsx","../src/server/node/rendering.ts","../src/server/node/stream.ts","../src/server/node/utils.ts","../src/server/runtime/mode.ts","../src/server/
|
|
1
|
+
{"root":["../src/client.ts","../src/index.ts","../src/plugin.ts","../src/server.ts","../src/cli/index.ts","../src/core/index.ts","../src/core/types.ts","../src/core/config/index.ts","../src/core/config/type.ts","../src/core/config/utils/define-config.ts","../src/core/config/utils/load-modules.ts","../src/core/config/utils/path.ts","../src/core/config/vite/defaults.ts","../src/core/dynamic/index.tsx","../src/core/middlewares/index.ts","../src/core/middlewares/logger.ts","../src/core/plugins/index.ts","../src/core/utils/log.ts","../src/entries/client/render.tsx","../src/entries/server/entry.server.tsx","../src/entries/server/index.tsx","../src/routing/index.ts","../src/routing/interfaces.tsx","../src/routing/types.ts","../src/routing/components/index.tsx","../src/routing/components/template.tsx","../src/routing/utils/define-router.tsx","../src/routing/utils/define-routes-group.tsx","../src/routing/utils/generate-metadata.tsx","../src/routing/utils/generate-routes.tsx","../src/routing/utils/index.tsx","../src/scripts/build-command.js","../src/scripts/generate-package-json.js","../src/scripts/utils/check-os.js","../src/scripts/utils/copy.js","../src/server/build/index.ts","../src/server/build/manifest.tsx","../src/server/dev/handlers.tsx","../src/server/dev/server.ts","../src/server/dev/utils.ts","../src/server/node/index.tsx","../src/server/node/rendering.ts","../src/server/node/stream.ts","../src/server/node/utils.ts","../src/server/runtime/mode.ts","../src/server/virtual/index.ts","../types/client.d.ts"],"version":"5.7.2"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rasengan",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "1.0.0-beta.
|
|
4
|
+
"version": "1.0.0-beta.55",
|
|
5
5
|
"description": "The modern React Framework",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "lib/esm/index.js",
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
"sass": "*",
|
|
80
80
|
"stylus": "*",
|
|
81
81
|
"vite": "^6.0.0",
|
|
82
|
-
"@rasenganjs/mdx": "1.0.
|
|
82
|
+
"@rasenganjs/mdx": "^1.0.6"
|
|
83
83
|
},
|
|
84
84
|
"peerDependenciesMeta": {
|
|
85
85
|
"@types/node": {
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import path, { join } from 'node:path';
|
|
2
|
-
export function fix404(url, res, appPath) {
|
|
3
|
-
// ! Robots Fix
|
|
4
|
-
if (url === '/robots.txt') {
|
|
5
|
-
return res.send(`
|
|
6
|
-
user-agent: *
|
|
7
|
-
disallow: /downloads/
|
|
8
|
-
disallow: /private/
|
|
9
|
-
allow: /
|
|
10
|
-
|
|
11
|
-
user-agent: magicsearchbot
|
|
12
|
-
disallow: /uploads/
|
|
13
|
-
`);
|
|
14
|
-
}
|
|
15
|
-
// ! Sitemap Fix
|
|
16
|
-
if (url === '/sitemap.xml') {
|
|
17
|
-
return res.sendFile(path.resolve(join(appPath, 'dist/client/sitemap.xml')));
|
|
18
|
-
}
|
|
19
|
-
// ! Manifest Fix
|
|
20
|
-
if (url === '/manifest.json') {
|
|
21
|
-
return res.sendFile(path.resolve(join(appPath, 'dist/client/manifest.json')));
|
|
22
|
-
}
|
|
23
|
-
}
|
|
@@ -1,185 +0,0 @@
|
|
|
1
|
-
import fs from 'node:fs/promises';
|
|
2
|
-
import fsSync from 'node:fs';
|
|
3
|
-
import path, { join } from 'node:path';
|
|
4
|
-
import { createStaticHandler, createStaticRouter, } from 'react-router';
|
|
5
|
-
// @ts-ignore
|
|
6
|
-
import { createFetchRequest } from 'rasengan';
|
|
7
|
-
// Create server for production only
|
|
8
|
-
export async function handleRequest(req, res) {
|
|
9
|
-
try {
|
|
10
|
-
// Get URL
|
|
11
|
-
const url = req.url;
|
|
12
|
-
const host = req.headers.host
|
|
13
|
-
? req.headers.host
|
|
14
|
-
: req.headers.get('host') || '';
|
|
15
|
-
// Get app path
|
|
16
|
-
const appPath = process.cwd();
|
|
17
|
-
// ! Robots Fix
|
|
18
|
-
if (url === '/robots.txt') {
|
|
19
|
-
// Check if robots.txt exists using fs
|
|
20
|
-
// If it does, return it
|
|
21
|
-
try {
|
|
22
|
-
await fs.access(path.resolve(join(appPath, 'dist/client/robots.txt')));
|
|
23
|
-
if (res)
|
|
24
|
-
return res.send(path.resolve(join(appPath, 'dist/client/robots.txt')));
|
|
25
|
-
return new Response(path.resolve(join(appPath, 'dist/client/robots.txt')), {
|
|
26
|
-
status: 200,
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
catch (err) {
|
|
30
|
-
if (res)
|
|
31
|
-
return res.send(`
|
|
32
|
-
user-agent: *
|
|
33
|
-
disallow: /downloads/
|
|
34
|
-
disallow: /private/
|
|
35
|
-
allow: /
|
|
36
|
-
|
|
37
|
-
user-agent: magicsearchbot
|
|
38
|
-
disallow: /uploads/
|
|
39
|
-
`);
|
|
40
|
-
return new Response(`
|
|
41
|
-
user-agent: *
|
|
42
|
-
disallow: /downloads/
|
|
43
|
-
disallow: /private/
|
|
44
|
-
allow: /
|
|
45
|
-
|
|
46
|
-
user-agent: magicsearchbot
|
|
47
|
-
disallow: /uploads/
|
|
48
|
-
`, {
|
|
49
|
-
status: 200,
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
// ! Sitemap Fix
|
|
54
|
-
if (url === '/sitemap.xml') {
|
|
55
|
-
if (res)
|
|
56
|
-
return res.send(path.resolve(join(appPath, 'dist/client/sitemap.xml')));
|
|
57
|
-
return new Response(path.resolve(join(appPath, 'dist/client/sitemap.xml')), {
|
|
58
|
-
status: 200,
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
// ! Manifest Fix
|
|
62
|
-
if (url === '/manifest.json') {
|
|
63
|
-
if (res)
|
|
64
|
-
return res.send(path.resolve(join(appPath, 'dist/client/manifest.json')));
|
|
65
|
-
return new Response(path.resolve(join(appPath, 'dist/client/manifest.json')), {
|
|
66
|
-
status: 200,
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
// ! Handle assets
|
|
70
|
-
if (url.includes('/assets')) {
|
|
71
|
-
// get segments from /assets to the end
|
|
72
|
-
const segments = url.split('/');
|
|
73
|
-
const segmentsWithoutOrigin = [...segments];
|
|
74
|
-
for (let segment of segments) {
|
|
75
|
-
if (segment === 'assets') {
|
|
76
|
-
break;
|
|
77
|
-
}
|
|
78
|
-
segmentsWithoutOrigin.shift();
|
|
79
|
-
}
|
|
80
|
-
// replace assets by client/assets
|
|
81
|
-
const filePath = join(appPath, 'dist/client', segmentsWithoutOrigin.join('/'));
|
|
82
|
-
const file = await fs.readFile(filePath, 'utf-8');
|
|
83
|
-
if (res) {
|
|
84
|
-
return res
|
|
85
|
-
.status(200)
|
|
86
|
-
.setHeader('Content-Type', url.endsWith('.js') ? 'text/javascript' : 'text/css')
|
|
87
|
-
.setHeader('Cache-Control', 'max-age=31536000')
|
|
88
|
-
.end(file);
|
|
89
|
-
}
|
|
90
|
-
return new Response(file, {
|
|
91
|
-
headers: {
|
|
92
|
-
'Content-Type': url.endsWith('.js') ? 'text/javascript' : 'text/css',
|
|
93
|
-
'Cache-Control': 'max-age=31536000',
|
|
94
|
-
},
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
// Handle js and css files
|
|
98
|
-
if (url.endsWith('.js') || url.endsWith('.css')) {
|
|
99
|
-
const file = await fs.readFile(url, 'utf-8');
|
|
100
|
-
if (res) {
|
|
101
|
-
return res
|
|
102
|
-
.status(200)
|
|
103
|
-
.setHeader('Content-Type', url.endsWith('.js') ? 'text/javascript' : 'text/css')
|
|
104
|
-
.setHeader('Cache-Control', 'max-age=31536000')
|
|
105
|
-
.end(file);
|
|
106
|
-
}
|
|
107
|
-
return new Response(file, {
|
|
108
|
-
headers: {
|
|
109
|
-
'Content-Type': url.endsWith('.js') ? 'text/javascript' : 'text/css',
|
|
110
|
-
'Cache-Control': 'max-age=31536000',
|
|
111
|
-
},
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
// Template html
|
|
115
|
-
let templateHtml = '';
|
|
116
|
-
// Always read fresh template in development
|
|
117
|
-
const serverFilePath = join(appPath, 'dist/server/entry-server.js');
|
|
118
|
-
const bootstrapDirPath = join(appPath, 'dist/client/assets');
|
|
119
|
-
// Read the entry sever file
|
|
120
|
-
let entry = await import(serverFilePath);
|
|
121
|
-
// replace bootstrap script with compiled scripts
|
|
122
|
-
let bootstrap = '/assets/' +
|
|
123
|
-
fsSync
|
|
124
|
-
.readdirSync(bootstrapDirPath)
|
|
125
|
-
.filter((fn) => fn.includes('entry-client') && fn.endsWith('.js'))[0];
|
|
126
|
-
// replace styles with compiled styles
|
|
127
|
-
let styles = '/assets/' +
|
|
128
|
-
fsSync
|
|
129
|
-
.readdirSync(join(appPath, 'dist/client/assets'))
|
|
130
|
-
.filter((fn) => fn.includes('entry-client') && fn.endsWith('.css'))[0];
|
|
131
|
-
// Extract render and staticRoutes from entry
|
|
132
|
-
const { render, staticRoutes, loadTemplateHtml } = entry;
|
|
133
|
-
// Create static handler
|
|
134
|
-
let handler = createStaticHandler(staticRoutes);
|
|
135
|
-
// Create fetch request for static routing
|
|
136
|
-
// @ts-ignore
|
|
137
|
-
let fetchRequest = createFetchRequest(req, host);
|
|
138
|
-
let context = await handler.query(fetchRequest);
|
|
139
|
-
// Handle redirects
|
|
140
|
-
const status = context.status;
|
|
141
|
-
if (status === 302) {
|
|
142
|
-
const redirect = context.headers.get('Location');
|
|
143
|
-
if (redirect) {
|
|
144
|
-
if (res)
|
|
145
|
-
return res.redirect(redirect);
|
|
146
|
-
return Response.redirect(redirect);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
// Helmet context
|
|
150
|
-
const helmetContext = {};
|
|
151
|
-
// Create static router
|
|
152
|
-
let router = createStaticRouter(handler.dataRoutes, context);
|
|
153
|
-
const rendered = await render(router, context, helmetContext);
|
|
154
|
-
// Load template html
|
|
155
|
-
if (!templateHtml) {
|
|
156
|
-
templateHtml = loadTemplateHtml(helmetContext, bootstrap, styles);
|
|
157
|
-
}
|
|
158
|
-
// Replacing the app-html placeholder with the rendered html
|
|
159
|
-
let html = templateHtml.replace(`rasengan-body-app`, rendered.html ?? '');
|
|
160
|
-
// Send the rendered html page
|
|
161
|
-
if (res) {
|
|
162
|
-
return res
|
|
163
|
-
.status(200)
|
|
164
|
-
.setHeader('Content-Type', 'text/html')
|
|
165
|
-
.setHeader('Cache-Control', 'max-age=31536000')
|
|
166
|
-
.end(html);
|
|
167
|
-
}
|
|
168
|
-
return new Response(html, {
|
|
169
|
-
status: 200,
|
|
170
|
-
headers: {
|
|
171
|
-
'Content-Type': 'text/html',
|
|
172
|
-
'Cache-Control': 'max-age=31536000',
|
|
173
|
-
},
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
catch (e) {
|
|
177
|
-
console.log(e.stack);
|
|
178
|
-
if (res) {
|
|
179
|
-
return res.status(500).end(e.stack);
|
|
180
|
-
}
|
|
181
|
-
return new Response(e.stack, {
|
|
182
|
-
status: 500,
|
|
183
|
-
});
|
|
184
|
-
}
|
|
185
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function handleRequest(req: any, res?: any): Promise<any>;
|