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
@@ -1,5 +1,13 @@
1
1
  ## Unreleased
2
2
 
3
+ ## 1.2.1-beta.4 (2026-01-11)
4
+
5
+ ## 1.2.1-beta.3 (2026-01-11)
6
+
7
+ ## 1.2.1-beta.2 (2026-01-11)
8
+
9
+ ## 1.2.1-beta.1 (2026-01-11)
10
+
3
11
  ## 1.2.1-beta.0 (2026-01-09)
4
12
 
5
13
  ## 1.2.0 (2026-01-03)
@@ -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(MDXRenderer, { className: '', config: mdxConfig, children: MDXPage }));
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; // mimic Express style
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, MDXPageComponent } from '../types.js';
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: MDXPageComponent) => Promise<PageComponent>;
10
- export declare const isMDXPage: (page: MDXPageComponent | PageComponent<any>) => boolean;
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.0",
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": {