rasengan 1.0.0-beta.61 → 1.0.0-beta.62
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 +2 -0
- package/lib/esm/core/config/vite/defaults.js +0 -1
- package/lib/esm/core/plugins/index.js +4 -3
- package/lib/esm/routing/index.js +1 -1
- package/lib/esm/routing/providers/metadata.js +42 -0
- package/lib/esm/routing/utils/generate-metadata.js +15 -15
- package/lib/esm/routing/utils/generate-routes.js +53 -0
- package/lib/esm/server/node/index.js +12 -6
- package/lib/esm/server.js +3 -1
- package/lib/tsconfig.esm.tsbuildinfo +1 -1
- package/lib/tsconfig.types.tsbuildinfo +1 -1
- package/lib/types/core/config/type.d.ts +6 -0
- package/lib/types/index.d.ts +1 -1
- package/lib/types/routing/index.d.ts +1 -1
- package/lib/types/routing/providers/metadata.d.ts +5 -0
- package/lib/types/routing/utils/generate-routes.d.ts +7 -1
- package/lib/types/server.d.ts +3 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -147,10 +147,12 @@ export function rasengan({ adapter = { name: Adapters.DEFAULT, prepare: async ()
|
|
|
147
147
|
});
|
|
148
148
|
}
|
|
149
149
|
// Generate a config.json file into the dist/client/assets or dist/assets
|
|
150
|
-
|
|
150
|
+
const minimizedConfig = {
|
|
151
151
|
buildOptions,
|
|
152
152
|
ssr: config.ssr,
|
|
153
|
-
|
|
153
|
+
redirects: await config.redirects(),
|
|
154
|
+
};
|
|
155
|
+
fs.writeFileSync(path.posix.join(process.cwd(), buildOptions.buildDirectory, config.ssr ? buildOptions.clientPathDirectory : '', buildOptions.assetPathDirectory, 'config.json'), JSON.stringify(minimizedConfig), 'utf-8');
|
|
154
156
|
// Prepare the app for deployment
|
|
155
157
|
await prepareToDeploy(adapter);
|
|
156
158
|
}
|
|
@@ -162,7 +164,6 @@ const prepareToDeploy = async (adapter) => {
|
|
|
162
164
|
// Preparing app for deployment
|
|
163
165
|
switch (adapter.name) {
|
|
164
166
|
case Adapters.VERCEL: {
|
|
165
|
-
console.log('Preparing app for deployment to Vercel');
|
|
166
167
|
await adapter.prepare();
|
|
167
168
|
break;
|
|
168
169
|
}
|
package/lib/esm/routing/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CustomLink } from './components/index.js';
|
|
2
2
|
export { defineRouter, defineRoutesGroup } from './utils/index.js';
|
|
3
3
|
export { RouterComponent } from './interfaces.js';
|
|
4
|
-
export { Outlet, useLocation, useNavigate, useNavigation, useParams, useSearchParams, useFetcher, useMatch, useRoutes, useResolvedPath, matchRoutes, generatePath, matchPath, createRoutesFromChildren, Navigate, } from 'react-router';
|
|
4
|
+
export { Outlet, ScrollRestoration, useLocation, useNavigate, useNavigation, useParams, useSearchParams, useFetcher, useMatch, useRoutes, useResolvedPath, matchRoutes, generatePath, matchPath, createRoutesFromChildren, Navigate, } from 'react-router';
|
|
5
5
|
export { CustomLink as Link };
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useLocation } from 'react-router';
|
|
3
|
+
import { useEffect } from 'react';
|
|
4
|
+
import { generateMetadata } from '../utils/generate-metadata.js';
|
|
5
|
+
import ReactDOMServer from 'react-dom/server';
|
|
6
|
+
export default function MetadataProvider({ children, metadataMapping, }) {
|
|
7
|
+
const { pathname } = useLocation();
|
|
8
|
+
useEffect(() => {
|
|
9
|
+
const metadata = metadataMapping[pathname];
|
|
10
|
+
if (!metadata)
|
|
11
|
+
return;
|
|
12
|
+
handleInjectMetadata(metadata);
|
|
13
|
+
}, [pathname]);
|
|
14
|
+
const handleInjectMetadata = (metadata) => {
|
|
15
|
+
if (!metadata)
|
|
16
|
+
return;
|
|
17
|
+
// Check if we are on the browser
|
|
18
|
+
if (typeof window !== 'undefined') {
|
|
19
|
+
const metaTags = generateMetadata([metadata]);
|
|
20
|
+
// Find all meta tags with data-rg attribute and remove them
|
|
21
|
+
const metaTagsToRemove = document.querySelectorAll('meta[data-rg="true"]');
|
|
22
|
+
metaTagsToRemove.forEach((metaTag) => {
|
|
23
|
+
metaTag.remove();
|
|
24
|
+
});
|
|
25
|
+
// Inject the meta tags
|
|
26
|
+
metaTags.forEach((metaTag) => {
|
|
27
|
+
// Convert React element to string
|
|
28
|
+
const metaTagString = ReactDOMServer.renderToStaticMarkup(metaTag);
|
|
29
|
+
document.head.insertAdjacentHTML('beforeend', metaTagString);
|
|
30
|
+
});
|
|
31
|
+
// Change the title of the page
|
|
32
|
+
document.title = metadata.title;
|
|
33
|
+
// Change the description of the page
|
|
34
|
+
const metaDescription = document.createElement('meta');
|
|
35
|
+
metaDescription.setAttribute('name', 'description');
|
|
36
|
+
metaDescription.setAttribute('content', metadata.description);
|
|
37
|
+
metaDescription.setAttribute('data-rg', 'true');
|
|
38
|
+
document.head.appendChild(metaDescription);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
return _jsx(_Fragment, { children: children });
|
|
42
|
+
}
|
|
@@ -11,43 +11,43 @@ export const generateMetadata = (metadatas) => {
|
|
|
11
11
|
if (openGraph) {
|
|
12
12
|
const { title, description, url, image, width, height, type } = openGraph;
|
|
13
13
|
if (title) {
|
|
14
|
-
metadataElements.push(_jsx("meta", { property: "og:title", content: title }, "og:title"));
|
|
14
|
+
metadataElements.push(_jsx("meta", { property: "og:title", content: title, "data-rg": "true" }, "og:title"));
|
|
15
15
|
}
|
|
16
16
|
if (description) {
|
|
17
|
-
metadataElements.push(_jsx("meta", { property: "og:description", content: description }, "og:description"));
|
|
17
|
+
metadataElements.push(_jsx("meta", { property: "og:description", content: description, "data-rg": "true" }, "og:description"));
|
|
18
18
|
}
|
|
19
19
|
if (url) {
|
|
20
|
-
metadataElements.push(_jsx("meta", { property: "og:url", content: url }, "og:url"));
|
|
20
|
+
metadataElements.push(_jsx("meta", { property: "og:url", content: url, "data-rg": "true" }, "og:url"));
|
|
21
21
|
}
|
|
22
22
|
if (image) {
|
|
23
|
-
metadataElements.push(_jsx("meta", { property: "og:image", content: image }, "og:image"));
|
|
23
|
+
metadataElements.push(_jsx("meta", { property: "og:image", content: image, "data-rg": "true" }, "og:image"));
|
|
24
24
|
}
|
|
25
25
|
if (width) {
|
|
26
|
-
metadataElements.push(_jsx("meta", { property: "og:image:width", content: width }, "og:image:width"));
|
|
26
|
+
metadataElements.push(_jsx("meta", { property: "og:image:width", content: width, "data-rg": "true" }, "og:image:width"));
|
|
27
27
|
}
|
|
28
28
|
if (height) {
|
|
29
|
-
metadataElements.push(_jsx("meta", { property: "og:image:height", content: height }, "og:image:height"));
|
|
29
|
+
metadataElements.push(_jsx("meta", { property: "og:image:height", content: height, "data-rg": "true" }, "og:image:height"));
|
|
30
30
|
}
|
|
31
|
-
metadataElements.push(_jsx("meta", { property: "og:type", content: type || 'website' }, "og:type"));
|
|
31
|
+
metadataElements.push(_jsx("meta", { property: "og:type", content: type || 'website', "data-rg": "true" }, "og:type"));
|
|
32
32
|
}
|
|
33
33
|
// Handling twitter
|
|
34
34
|
if (twitter) {
|
|
35
35
|
const { card, site, creator, image, title, description } = twitter;
|
|
36
|
-
metadataElements.push(_jsx("meta", { name: "twitter:card", content: card || 'summary_large_image' }, "twitter:card"));
|
|
36
|
+
metadataElements.push(_jsx("meta", { name: "twitter:card", content: card || 'summary_large_image', "data-rg": "true" }, "twitter:card"));
|
|
37
37
|
if (site) {
|
|
38
|
-
metadataElements.push(_jsx("meta", { name: "twitter:site", content: site }, "twitter:site"));
|
|
38
|
+
metadataElements.push(_jsx("meta", { name: "twitter:site", content: site, "data-rg": "true" }, "twitter:site"));
|
|
39
39
|
}
|
|
40
40
|
if (creator) {
|
|
41
|
-
metadataElements.push(_jsx("meta", { name: "twitter:creator", content: creator }, "twitter:creator"));
|
|
41
|
+
metadataElements.push(_jsx("meta", { name: "twitter:creator", content: creator, "data-rg": "true" }, "twitter:creator"));
|
|
42
42
|
}
|
|
43
43
|
if (image) {
|
|
44
|
-
metadataElements.push(_jsx("meta", { name: "twitter:image", content: image }, "twitter:image"));
|
|
44
|
+
metadataElements.push(_jsx("meta", { name: "twitter:image", content: image, "data-rg": "true" }, "twitter:image"));
|
|
45
45
|
}
|
|
46
46
|
if (title) {
|
|
47
|
-
metadataElements.push(_jsx("meta", { name: "twitter:title", content: title }, "twitter:title"));
|
|
47
|
+
metadataElements.push(_jsx("meta", { name: "twitter:title", content: title, "data-rg": "true" }, "twitter:title"));
|
|
48
48
|
}
|
|
49
49
|
if (description) {
|
|
50
|
-
metadataElements.push(_jsx("meta", { name: "twitter:description", content: description }, "twitter:description"));
|
|
50
|
+
metadataElements.push(_jsx("meta", { name: "twitter:description", content: description, "data-rg": "true" }, "twitter:description"));
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
// Handling links
|
|
@@ -67,7 +67,7 @@ export const generateMetadata = (metadatas) => {
|
|
|
67
67
|
const generateLinks = (links) => {
|
|
68
68
|
return links.map((link) => {
|
|
69
69
|
const { rel, sizes, type, href } = link;
|
|
70
|
-
return (_jsx("link", { rel: rel, sizes: sizes || '32x32', type: type || 'image/png', href: href }, rel));
|
|
70
|
+
return (_jsx("link", { rel: rel, sizes: sizes || '32x32', type: type || 'image/png', href: href, "data-rg": "true" }, rel));
|
|
71
71
|
});
|
|
72
72
|
};
|
|
73
73
|
/**
|
|
@@ -78,6 +78,6 @@ const generateLinks = (links) => {
|
|
|
78
78
|
const generateMetaTags = (metaTags) => {
|
|
79
79
|
return metaTags.map((metaTag) => {
|
|
80
80
|
const { content, name, property } = metaTag;
|
|
81
|
-
return (_jsx("meta", { property: property ?? name, content: content }, property ?? name));
|
|
81
|
+
return (_jsx("meta", { property: property ?? name, content: content, "data-rg": "true" }, property ?? name));
|
|
82
82
|
});
|
|
83
83
|
};
|
|
@@ -2,6 +2,7 @@ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
|
2
2
|
import { RouterProvider, createBrowserRouter, useLoaderData, useParams, } from 'react-router';
|
|
3
3
|
import { ErrorBoundary, NotFoundPageComponent, RasenganPageComponent, } from '../components/index.js';
|
|
4
4
|
import { Suspense } from 'react';
|
|
5
|
+
import MetadataProvider from '../providers/metadata.js';
|
|
5
6
|
const defaultMetadata = {
|
|
6
7
|
title: 'Not Found',
|
|
7
8
|
description: 'Page not found',
|
|
@@ -190,6 +191,12 @@ export const generateRoutes = (router, isRoot = true, parentLayout = undefined)
|
|
|
190
191
|
...props,
|
|
191
192
|
params,
|
|
192
193
|
};
|
|
194
|
+
// Check if the layout is the root layout and wrap it in a MetadataProvider
|
|
195
|
+
if (isRoot || !router.useParentLayout) {
|
|
196
|
+
// Generate metadata mapping
|
|
197
|
+
const metadataMapping = generateMetadataMapping(router);
|
|
198
|
+
return (_jsx(MetadataProvider, { metadataMapping: metadataMapping, children: _jsx(Layout, { ...layoutProps }) }));
|
|
199
|
+
}
|
|
193
200
|
return _jsx(Layout, { ...layoutProps });
|
|
194
201
|
},
|
|
195
202
|
async loader({ params, request }) {
|
|
@@ -299,3 +306,49 @@ export const generateRoutes = (router, isRoot = true, parentLayout = undefined)
|
|
|
299
306
|
// Return the formated router
|
|
300
307
|
return routes;
|
|
301
308
|
};
|
|
309
|
+
/**
|
|
310
|
+
* This function receives a router component and return a mapping from path to metadata
|
|
311
|
+
* @param router Represents the router component
|
|
312
|
+
* @returns
|
|
313
|
+
*/
|
|
314
|
+
export const generateMetadataMapping = (router, isRoot = true, parentLayout = undefined) => {
|
|
315
|
+
const metadataMapping = {};
|
|
316
|
+
// Get information about the layout and the path
|
|
317
|
+
const Layout = router.layout;
|
|
318
|
+
const layoutPath = !isRoot
|
|
319
|
+
? router.useParentLayout
|
|
320
|
+
? parentLayout.path + (Layout.path === '/' ? '' : Layout.path)
|
|
321
|
+
: Layout.path
|
|
322
|
+
: Layout.path;
|
|
323
|
+
// Get informations about pages
|
|
324
|
+
router.pages.forEach((Page) => {
|
|
325
|
+
const pagePathFormated = Page.path.startsWith('/') && Page.path !== '/'
|
|
326
|
+
? Page.path.slice(1)
|
|
327
|
+
: Page.path;
|
|
328
|
+
// Get the path of the page
|
|
329
|
+
const path = Page.path === '/' ? layoutPath : layoutPath + pagePathFormated;
|
|
330
|
+
// Get metadata
|
|
331
|
+
metadataMapping[path] = {
|
|
332
|
+
openGraph: {
|
|
333
|
+
url: '',
|
|
334
|
+
image: '',
|
|
335
|
+
},
|
|
336
|
+
twitter: {
|
|
337
|
+
card: 'summary_large_image',
|
|
338
|
+
image: '',
|
|
339
|
+
title: '',
|
|
340
|
+
},
|
|
341
|
+
...Page.metadata,
|
|
342
|
+
};
|
|
343
|
+
});
|
|
344
|
+
// Loop through imported routers in order to apply the same logic like above.
|
|
345
|
+
for (const importedRouter of router.routers) {
|
|
346
|
+
const importedMetadataMapping = generateMetadataMapping(importedRouter, false, Layout);
|
|
347
|
+
Object.assign(metadataMapping, importedMetadataMapping);
|
|
348
|
+
// Add the metadata of the imported router's pages to the metadata mapping
|
|
349
|
+
for (const [path, metadata] of Object.entries(importedMetadataMapping)) {
|
|
350
|
+
metadataMapping[path] = metadata;
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
return metadataMapping;
|
|
354
|
+
};
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { ManifestManager } from '../build/manifest.js';
|
|
3
|
+
import fs from 'node:fs';
|
|
3
4
|
import path from 'node:path';
|
|
4
5
|
import { generateRoutes } from '../../routing/utils/index.js';
|
|
5
6
|
import { createStaticHandler, createStaticRouter, StaticRouterProvider, } from 'react-router';
|
|
6
7
|
import createRasenganRequest from './utils.js';
|
|
7
8
|
import { extractHeadersFromRRContext, extractMetaFromRRContext, isRedirectResponse, isStaticRedirectFromConfig, } from '../dev/utils.js';
|
|
8
9
|
import { handleRedirectRequest } from '../dev/handlers.js';
|
|
9
|
-
import { loadModuleSSR } from '../../core/config/utils/load-modules.js';
|
|
10
10
|
import { resolvePath } from '../../core/config/utils/path.js';
|
|
11
11
|
export function createRequestHandler(options) {
|
|
12
12
|
const { build: buildOptions } = options;
|
|
@@ -18,8 +18,15 @@ export function createRequestHandler(options) {
|
|
|
18
18
|
// Get AppRouter
|
|
19
19
|
const AppRouter = await (await import(resolvePath(path.posix.join(buildOptions.buildDirectory, buildOptions.serverPathDirectory, 'app.router.js')))).default;
|
|
20
20
|
// Get Config
|
|
21
|
-
const
|
|
22
|
-
const
|
|
21
|
+
const configPath = path.posix.join(buildOptions.buildDirectory, buildOptions.clientPathDirectory, buildOptions.assetPathDirectory, 'config.json');
|
|
22
|
+
const configPathExist = fs.existsSync(configPath);
|
|
23
|
+
if (!configPathExist) {
|
|
24
|
+
throw new Error('No config.json file found in dist/client/assets, please make a build again');
|
|
25
|
+
}
|
|
26
|
+
// Read the config.json file
|
|
27
|
+
const configData = fs.readFileSync(configPath, 'utf-8').toString();
|
|
28
|
+
// Parse the config.json file
|
|
29
|
+
const config = JSON.parse(configData);
|
|
23
30
|
// extract render function
|
|
24
31
|
const { render, } = entry;
|
|
25
32
|
// Get static routes
|
|
@@ -29,12 +36,11 @@ export function createRequestHandler(options) {
|
|
|
29
36
|
// Create rasengan request for static routing
|
|
30
37
|
let request = createRasenganRequest(req, res);
|
|
31
38
|
let context = await handler.query(request);
|
|
32
|
-
const
|
|
33
|
-
const redirectFound = await isStaticRedirectFromConfig(req, redirects);
|
|
39
|
+
const redirectFound = await isStaticRedirectFromConfig(req, config.redirects);
|
|
34
40
|
if (isRedirectResponse(context) || redirectFound) {
|
|
35
41
|
return await handleRedirectRequest(req, res, {
|
|
36
42
|
context,
|
|
37
|
-
redirects,
|
|
43
|
+
redirects: config.redirects,
|
|
38
44
|
});
|
|
39
45
|
}
|
|
40
46
|
if (!(context instanceof Response)) {
|
package/lib/esm/server.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { createRequestHandler } from './server/node/index.js';
|
|
2
2
|
import { resolveBuildOptions } from './server/build/index.js';
|
|
3
|
+
import compression from 'compression';
|
|
4
|
+
import express from 'express';
|
|
3
5
|
export * from './server/build/manifest.js';
|
|
4
|
-
export { createRequestHandler, resolveBuildOptions };
|
|
6
|
+
export { createRequestHandler, resolveBuildOptions, express, compression };
|
|
@@ -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/build/rendering.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/runtime/utils.ts","../src/server/virtual/index.ts","../types/client.d.ts"],"version":"5.8.2"}
|
|
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/providers/metadata.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/build/rendering.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/runtime/utils.ts","../src/server/virtual/index.ts","../types/client.d.ts"],"version":"5.8.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/build/rendering.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/runtime/utils.ts","../src/server/virtual/index.ts","../types/client.d.ts"],"version":"5.8.2"}
|
|
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/providers/metadata.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/build/rendering.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/runtime/utils.ts","../src/server/virtual/index.ts","../types/client.d.ts"],"version":"5.8.2"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type * as Vite from 'vite';
|
|
2
|
+
import { BuildOptions } from '../../server/build';
|
|
2
3
|
export interface ServerConfig {
|
|
3
4
|
/**
|
|
4
5
|
* Configure server in development
|
|
@@ -45,6 +46,11 @@ export type AppConfig = {
|
|
|
45
46
|
*/
|
|
46
47
|
redirects?: () => Promise<Redirect[]>;
|
|
47
48
|
};
|
|
49
|
+
export type OptimizedAppConfig = {
|
|
50
|
+
ssr?: AppConfig['ssr'];
|
|
51
|
+
redirects: Redirect[];
|
|
52
|
+
buildOptions: BuildOptions;
|
|
53
|
+
};
|
|
48
54
|
export type AppConfigFunction = () => AppConfig;
|
|
49
55
|
export type AppConfigFunctionAsync = () => Promise<AppConfig>;
|
|
50
56
|
/**
|
package/lib/types/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineConfig } from './core/config/utils/define-config.js';
|
|
2
2
|
export * from './routing/index.js';
|
|
3
3
|
export { defineConfig };
|
|
4
|
-
export type { AppConfig, AppConfigFunction, AppConfigFunctionAsync, } from './core/config/type.js';
|
|
4
|
+
export type { AppConfig, AppConfigFunction, AppConfigFunctionAsync, OptimizedAppConfig, } from './core/config/type.js';
|
|
5
5
|
export type { AppProps } from './core/index.js';
|
|
6
6
|
export type * from './server/build/manifest.js';
|
|
@@ -2,5 +2,5 @@ import { CustomLink } from './components/index.js';
|
|
|
2
2
|
export type { Metadata, MetadataWithoutTitleAndDescription, LayoutComponent, PageComponent, MDXPageComponent, LoaderOptions, LoaderResponse, ReactComponentProps, TemplateProps, } from './types.js';
|
|
3
3
|
export { defineRouter, defineRoutesGroup } from './utils/index.js';
|
|
4
4
|
export { RouterComponent } from './interfaces.js';
|
|
5
|
-
export { Outlet, useLocation, useNavigate, useNavigation, useParams, useSearchParams, useFetcher, useMatch, useRoutes, useResolvedPath, matchRoutes, generatePath, matchPath, createRoutesFromChildren, Navigate, } from 'react-router';
|
|
5
|
+
export { Outlet, ScrollRestoration, useLocation, useNavigate, useNavigation, useParams, useSearchParams, useFetcher, useMatch, useRoutes, useResolvedPath, matchRoutes, generatePath, matchPath, createRoutesFromChildren, Navigate, } from 'react-router';
|
|
6
6
|
export { CustomLink as Link };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { RouterComponent } from '../interfaces.js';
|
|
2
|
-
import { RouteObject, LayoutComponent } from '../types.js';
|
|
2
|
+
import { RouteObject, LayoutComponent, Metadata } from '../types.js';
|
|
3
3
|
/**
|
|
4
4
|
* This function receives a router component and get a formated router first
|
|
5
5
|
* and then return a router.
|
|
@@ -11,3 +11,9 @@ export declare const getRouter: (routerInstance: RouterComponent) => () => impor
|
|
|
11
11
|
* @returns
|
|
12
12
|
*/
|
|
13
13
|
export declare const generateRoutes: (router: RouterComponent, isRoot?: boolean, parentLayout?: LayoutComponent | undefined) => RouteObject[];
|
|
14
|
+
/**
|
|
15
|
+
* This function receives a router component and return a mapping from path to metadata
|
|
16
|
+
* @param router Represents the router component
|
|
17
|
+
* @returns
|
|
18
|
+
*/
|
|
19
|
+
export declare const generateMetadataMapping: (router: RouterComponent, isRoot?: boolean, parentLayout?: LayoutComponent | undefined) => Record<string, Metadata>;
|
package/lib/types/server.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { createRequestHandler } from './server/node/index.js';
|
|
2
2
|
import { resolveBuildOptions } from './server/build/index.js';
|
|
3
|
+
import compression from 'compression';
|
|
4
|
+
import express from 'express';
|
|
3
5
|
export * from './server/build/manifest.js';
|
|
4
|
-
export { createRequestHandler, resolveBuildOptions };
|
|
6
|
+
export { createRequestHandler, resolveBuildOptions, express, compression };
|
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.62",
|
|
5
5
|
"description": "The modern React Framework",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "lib/esm/index.js",
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
"inquirer": "^9.2.12",
|
|
70
70
|
"open": "^10.1.0",
|
|
71
71
|
"ora": "^7.0.1",
|
|
72
|
-
"react-router": "^7.
|
|
72
|
+
"react-router": "^7.5.2"
|
|
73
73
|
},
|
|
74
74
|
"peerDependencies": {
|
|
75
75
|
"@types/node": "^18.0.0 || >=20.0.0",
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
"sass": "*",
|
|
80
80
|
"stylus": "*",
|
|
81
81
|
"vite": "^6.0.0",
|
|
82
|
-
"@rasenganjs/mdx": "^1.1.
|
|
82
|
+
"@rasenganjs/mdx": "^1.1.1"
|
|
83
83
|
},
|
|
84
84
|
"peerDependenciesMeta": {
|
|
85
85
|
"@types/node": {
|