rasengan 1.2.1-beta.0 → 1.2.1-beta.4
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
CHANGED
|
@@ -20,6 +20,8 @@ export const defineRouter = (option) => {
|
|
|
20
20
|
pageComponentList.push(page);
|
|
21
21
|
continue;
|
|
22
22
|
}
|
|
23
|
+
// When p is a MDXPageComponent
|
|
24
|
+
// type property holds the "MDXPageComponent" value, coming from @rasenganjs/mdx plugin
|
|
23
25
|
if (isMDXPage(page)) {
|
|
24
26
|
const Page = await convertMDXPageToPageComponent(page);
|
|
25
27
|
pageComponentList.push(Page);
|
|
@@ -35,6 +37,7 @@ export const defineRouter = (option) => {
|
|
|
35
37
|
continue;
|
|
36
38
|
}
|
|
37
39
|
// When p is a MDXPageComponent
|
|
40
|
+
// type property holds the "MDXPageComponent" value, coming from @rasenganjs/mdx plugin
|
|
38
41
|
if (isMDXPage(p)) {
|
|
39
42
|
const Page = await convertMDXPageToPageComponent(p);
|
|
40
43
|
pageComponentList.push(Page);
|
|
@@ -55,10 +58,8 @@ export const defineRouter = (option) => {
|
|
|
55
58
|
};
|
|
56
59
|
};
|
|
57
60
|
export const convertMDXPageToPageComponent = async (MDXPage) => {
|
|
58
|
-
// Load MDXRenderer from @rasenganjs/mdx
|
|
59
|
-
const { MDXRenderer, mdxConfig } = await loadMDXRenderer();
|
|
60
61
|
const Page = () => {
|
|
61
|
-
return (_jsx(
|
|
62
|
+
return (_jsx(MDXPage.Renderer, { config: MDXPage.config, toc: MDXPage.toc, children: MDXPage.Content }));
|
|
62
63
|
};
|
|
63
64
|
Page.path = MDXPage.metadata.path;
|
|
64
65
|
Page.metadata = MDXPage.metadata.metadata;
|
|
@@ -71,32 +72,3 @@ export const isMDXPage = (page) => {
|
|
|
71
72
|
}
|
|
72
73
|
return false;
|
|
73
74
|
};
|
|
74
|
-
/**
|
|
75
|
-
* Load thr MDXRenderer is the dedicated package is installed
|
|
76
|
-
* @returns
|
|
77
|
-
*/
|
|
78
|
-
const loadMDXRenderer = async () => {
|
|
79
|
-
try {
|
|
80
|
-
// Dynamically import only if the package exists
|
|
81
|
-
const mod = await import('@rasenganjs/mdx');
|
|
82
|
-
//@ts-ignore
|
|
83
|
-
const mdxConfig = await import('virtual:rasengan/mdx-components');
|
|
84
|
-
return {
|
|
85
|
-
MDXRenderer: mod.MDXRenderer,
|
|
86
|
-
mdxConfig: mdxConfig.default,
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
catch (error) {
|
|
90
|
-
// Handle the case when the package is not installed
|
|
91
|
-
if (error.code === 'MODULE_NOT_FOUND' ||
|
|
92
|
-
/Cannot find module '@rasenganjs\/mdx'/.test(error.message)) {
|
|
93
|
-
if (process.env.NODE_ENV === 'development') {
|
|
94
|
-
console.warn('[Rasengan.js] MDX package not found — skipping MDX rendering.');
|
|
95
|
-
}
|
|
96
|
-
return null;
|
|
97
|
-
}
|
|
98
|
-
// Other unexpected errors (e.g. runtime bug in the module)
|
|
99
|
-
console.error('[Rasengan.js] Unexpected error while loading MDX module:', error);
|
|
100
|
-
throw error;
|
|
101
|
-
}
|
|
102
|
-
};
|
|
@@ -349,6 +349,8 @@ export const generateRoutes = (router, isRoot = true, parentLayoutPath = undefin
|
|
|
349
349
|
};
|
|
350
350
|
}
|
|
351
351
|
// Detech if the page is a MDXPageComponent or not
|
|
352
|
+
// When Page is a MDXPageComponent
|
|
353
|
+
// type property holds the "MDXPageComponent" value, coming from @rasenganjs/mdx plugin
|
|
352
354
|
if (isMDXPage(Page)) {
|
|
353
355
|
// Convert PageComponent to MDXPageComponent (to make ts happy)
|
|
354
356
|
const mdxPage = Page;
|
|
@@ -101,7 +101,6 @@ export function createRasenganHeaders(requestHeaders) {
|
|
|
101
101
|
*/
|
|
102
102
|
export function createFakeRasenganRequest(pathname, options) {
|
|
103
103
|
const { host = 'localhost:5320', protocol = 'http', method = 'GET', headers = {}, body, } = options ?? {};
|
|
104
|
-
// --- Fake Request ---
|
|
105
104
|
const req = {
|
|
106
105
|
originalUrl: pathname.startsWith('/') ? pathname : `/${pathname}`,
|
|
107
106
|
method,
|
|
@@ -117,22 +116,17 @@ export function createFakeRasenganRequest(pathname, options) {
|
|
|
117
116
|
return headers[key];
|
|
118
117
|
},
|
|
119
118
|
};
|
|
120
|
-
// If a body exists, attach it as a readable stream (like Express req)
|
|
121
119
|
if (body) {
|
|
122
120
|
const readable = Readable.from([body]);
|
|
123
121
|
Object.assign(req, readable);
|
|
124
122
|
}
|
|
125
|
-
// --- Fake Response ---
|
|
126
123
|
const res = new EventEmitter();
|
|
127
|
-
res.on = res.addListener;
|
|
124
|
+
res.on = res.addListener;
|
|
128
125
|
res.write = () => true;
|
|
129
126
|
res.end = () => {
|
|
130
127
|
res.emit('finish');
|
|
128
|
+
// DO NOT emit "close"
|
|
131
129
|
};
|
|
132
|
-
// Utility to simulate stream end
|
|
133
|
-
process.nextTick(() => {
|
|
134
|
-
res.emit('close');
|
|
135
|
-
});
|
|
136
130
|
return { req, res };
|
|
137
131
|
}
|
|
138
132
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { RouterProps, PageComponent
|
|
1
|
+
import { RouterProps, PageComponent } from '../types.js';
|
|
2
2
|
import { RouterComponent } from '../interfaces.js';
|
|
3
3
|
/**
|
|
4
4
|
* This function adds metadata to a router
|
|
@@ -6,5 +6,11 @@ import { RouterComponent } from '../interfaces.js';
|
|
|
6
6
|
* @returns
|
|
7
7
|
*/
|
|
8
8
|
export declare const defineRouter: (option: RouterProps) => (Router: new () => RouterComponent) => Promise<RouterComponent>;
|
|
9
|
-
export declare const convertMDXPageToPageComponent: (MDXPage:
|
|
10
|
-
|
|
9
|
+
export declare const convertMDXPageToPageComponent: (MDXPage: {
|
|
10
|
+
type: string;
|
|
11
|
+
[key: string]: any;
|
|
12
|
+
}) => Promise<PageComponent>;
|
|
13
|
+
export declare const isMDXPage: (page: {
|
|
14
|
+
type: string;
|
|
15
|
+
[key: string]: any;
|
|
16
|
+
} | PageComponent<any>) => boolean;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rasengan",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "1.2.1-beta.
|
|
4
|
+
"version": "1.2.1-beta.4",
|
|
5
5
|
"description": "The modern React Framework",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "lib/esm/index.js",
|
|
@@ -78,8 +78,7 @@
|
|
|
78
78
|
"react-dom": "^19.2.0",
|
|
79
79
|
"sass": "*",
|
|
80
80
|
"stylus": "*",
|
|
81
|
-
"vite": "^6.3.0 || ^7.0.0"
|
|
82
|
-
"@rasenganjs/mdx": "^1.2.0-beta.1"
|
|
81
|
+
"vite": "^6.3.0 || ^7.0.0"
|
|
83
82
|
},
|
|
84
83
|
"peerDependenciesMeta": {
|
|
85
84
|
"@types/node": {
|