@rasenganjs/mdx 1.2.0-beta.7 → 1.2.0
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 +4 -0
- package/dist/chunk-U2MZHTHK.js +89 -0
- package/dist/index.cjs +922 -0
- package/dist/index.d.cts +150 -0
- package/dist/index.d.ts +150 -0
- package/dist/index.js +798 -0
- package/dist/plugin.cjs +289 -0
- package/dist/plugin.d.cts +20 -0
- package/dist/plugin.d.ts +20 -0
- package/dist/plugin.js +174 -0
- package/package.json +15 -15
- package/tsup.config.ts +11 -0
- package/types/client.d.ts +1 -1
- package/lib/components/codeblock.d.ts +0 -15
- package/lib/components/codeblock.js +0 -62
- package/lib/components/codeblock.js.map +0 -1
- package/lib/components/codeblock2.d.ts +0 -14
- package/lib/components/codeblock2.js +0 -47
- package/lib/components/codeblock2.js.map +0 -1
- package/lib/components/heading.d.ts +0 -2
- package/lib/components/heading.js +0 -27
- package/lib/components/heading.js.map +0 -1
- package/lib/components/index.d.ts +0 -5
- package/lib/components/index.js +0 -8
- package/lib/components/index.js.map +0 -1
- package/lib/components/markdown.d.ts +0 -7
- package/lib/components/markdown.js +0 -28
- package/lib/components/markdown.js.map +0 -1
- package/lib/components/renderer.d.ts +0 -12
- package/lib/components/renderer.js +0 -45
- package/lib/components/renderer.js.map +0 -1
- package/lib/components/table.d.ts +0 -3
- package/lib/components/table.js +0 -5
- package/lib/components/table.js.map +0 -1
- package/lib/components/toc.d.ts +0 -7
- package/lib/components/toc.js +0 -26
- package/lib/components/toc.js.map +0 -1
- package/lib/hooks/use-toc-observer.d.ts +0 -8
- package/lib/hooks/use-toc-observer.js +0 -60
- package/lib/hooks/use-toc-observer.js.map +0 -1
- package/lib/index.d.ts +0 -13
- package/lib/index.js +0 -16
- package/lib/index.js.map +0 -1
- package/lib/styles/rasengan-mdx.min.css +0 -1
- package/lib/types/index.d.ts +0 -67
- package/lib/types/index.js +0 -2
- package/lib/types/index.js.map +0 -1
- package/lib/utils/create-filter.d.ts +0 -8
- package/lib/utils/create-filter.js +0 -23
- package/lib/utils/create-filter.js.map +0 -1
- package/lib/utils/create-heading.d.ts +0 -4
- package/lib/utils/create-heading.js +0 -19
- package/lib/utils/create-heading.js.map +0 -1
- package/lib/utils/define-mdx-config.d.ts +0 -2
- package/lib/utils/define-mdx-config.js +0 -4
- package/lib/utils/define-mdx-config.js.map +0 -1
- package/lib/utils/extract-toc.d.ts +0 -23
- package/lib/utils/extract-toc.js +0 -113
- package/lib/utils/extract-toc.js.map +0 -1
- package/lib/utils/generate-navigation.d.ts +0 -0
- package/lib/utils/generate-navigation.js +0 -75
- package/lib/utils/generate-navigation.js.map +0 -1
- package/lib/utils/index.d.ts +0 -15
- package/lib/utils/index.js +0 -4
- package/lib/utils/index.js.map +0 -1
- package/lib/utils/mark-to-html.d.ts +0 -1
- package/lib/utils/mark-to-html.js +0 -15
- package/lib/utils/mark-to-html.js.map +0 -1
- package/lib/utils/plugin.d.ts +0 -26
- package/lib/utils/plugin.js +0 -149
- package/lib/utils/plugin.js.map +0 -1
- package/lib/utils/polyfill.d.ts +0 -10
- package/lib/utils/polyfill.js +0 -15
- package/lib/utils/polyfill.js.map +0 -1
package/lib/utils/extract-toc.js
DELETED
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
/**
|
|
3
|
-
* This function is used to extract TOC (Table Of Content) from markdown text
|
|
4
|
-
* @param markdown
|
|
5
|
-
* @returns
|
|
6
|
-
*/
|
|
7
|
-
export function extractTOC(markdown) {
|
|
8
|
-
const lines = markdown.split('\n');
|
|
9
|
-
const toc = [];
|
|
10
|
-
lines.forEach((line) => {
|
|
11
|
-
const h2Match = line.match(/^## (.+)/); // Titres H2
|
|
12
|
-
const h3Match = line.match(/^### (.+)/); // Titres H3
|
|
13
|
-
if (h2Match) {
|
|
14
|
-
const title = h2Match[1].trim();
|
|
15
|
-
const anchor = generateAnchor(title);
|
|
16
|
-
toc.push({
|
|
17
|
-
title,
|
|
18
|
-
anchor,
|
|
19
|
-
level: 2,
|
|
20
|
-
children: [],
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
else if (h3Match && toc.length > 0) {
|
|
24
|
-
const title = h3Match[1].trim();
|
|
25
|
-
const anchor = generateAnchor(title);
|
|
26
|
-
toc[toc.length - 1].children.push({
|
|
27
|
-
title,
|
|
28
|
-
anchor,
|
|
29
|
-
level: 3,
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
return toc;
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* This function is used to extract the link from a heading text coming from a markdown
|
|
37
|
-
* @param title
|
|
38
|
-
* @returns
|
|
39
|
-
*/
|
|
40
|
-
export const generateAnchor = (title) => {
|
|
41
|
-
if (Array.isArray(title)) {
|
|
42
|
-
const text = title
|
|
43
|
-
.map((item) => {
|
|
44
|
-
if (React.isValidElement(item)) {
|
|
45
|
-
return item.props['children'].toString().trim();
|
|
46
|
-
}
|
|
47
|
-
return item.toString().trim();
|
|
48
|
-
})
|
|
49
|
-
.join(' ');
|
|
50
|
-
const lastItem = title[title.length - 1];
|
|
51
|
-
if (typeof lastItem === 'string') {
|
|
52
|
-
// Pattern to match a markdown anchor link at the end: [#something]
|
|
53
|
-
const match1 = text.match(/\s\[#([^\]]+)\]$/);
|
|
54
|
-
if (match1) {
|
|
55
|
-
return {
|
|
56
|
-
id: match1[1],
|
|
57
|
-
// remove the last element from title
|
|
58
|
-
text: title.slice(0, title.length - 1),
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
return {
|
|
63
|
-
id: text.replace(/\s+/g, '-').toLowerCase(),
|
|
64
|
-
text: title,
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
// If the title is a React element
|
|
68
|
-
if (React.isValidElement(title)) {
|
|
69
|
-
return {
|
|
70
|
-
id: title.props['children']
|
|
71
|
-
.toString()
|
|
72
|
-
.trim()
|
|
73
|
-
.replace(/\s+/g, '-')
|
|
74
|
-
.toLowerCase(),
|
|
75
|
-
text: title,
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
const strippedTitle = String(toText(title).trim());
|
|
79
|
-
// Pattern to match a markdown anchor link at the end: [#something]
|
|
80
|
-
const match = strippedTitle.match(/\s\[#([^\]]+)\]$/);
|
|
81
|
-
let id;
|
|
82
|
-
let text;
|
|
83
|
-
if (match) {
|
|
84
|
-
// match[1] is the content inside [#...]
|
|
85
|
-
id = match[1].trim().replace(/\s+/g, '-').toLowerCase();
|
|
86
|
-
// remove the matched anchor from the original text
|
|
87
|
-
text = strippedTitle.replace(match[0], '').trim();
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
// No markdown anchor found, generate id from the whole title
|
|
91
|
-
id = strippedTitle.replace(/\s+/g, '-').toLowerCase();
|
|
92
|
-
text = strippedTitle;
|
|
93
|
-
}
|
|
94
|
-
return { id, text };
|
|
95
|
-
};
|
|
96
|
-
function toText(input) {
|
|
97
|
-
if (input == null)
|
|
98
|
-
return ''; // null/undefined
|
|
99
|
-
if (typeof input === 'string')
|
|
100
|
-
return input; // already a string
|
|
101
|
-
if (Array.isArray(input))
|
|
102
|
-
return input.map(toText).join(' ');
|
|
103
|
-
if (input instanceof Uint8Array)
|
|
104
|
-
// Buffer/typed array
|
|
105
|
-
return new TextDecoder().decode(input);
|
|
106
|
-
try {
|
|
107
|
-
return String(input);
|
|
108
|
-
}
|
|
109
|
-
catch {
|
|
110
|
-
return '';
|
|
111
|
-
} // fallback
|
|
112
|
-
}
|
|
113
|
-
//# sourceMappingURL=extract-toc.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"extract-toc.js","sourceRoot":"","sources":["../../src/utils/extract-toc.ts"],"names":[],"mappings":"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"}
|
|
File without changes
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
// // @ts-ignore
|
|
2
|
-
// import { RouterComponent } from 'rasengan';
|
|
3
|
-
// import { NavigationStructure } from '../types/index.js';
|
|
4
|
-
// export const generateNavigation = (router: RouterComponent) => {
|
|
5
|
-
// const navigation: NavigationStructure[] = [];
|
|
6
|
-
// const { routers: subRouters, pages } = router;
|
|
7
|
-
// for (const page of pages) {
|
|
8
|
-
// // if (page.metadata?.hidden) {
|
|
9
|
-
// // continue;
|
|
10
|
-
// // }
|
|
11
|
-
// const { exists, isParent, route } = checkIfRouteExists(
|
|
12
|
-
// navigation,
|
|
13
|
-
// page.path
|
|
14
|
-
// );
|
|
15
|
-
// if (exists) {
|
|
16
|
-
// continue;
|
|
17
|
-
// }
|
|
18
|
-
// if (isParent) {
|
|
19
|
-
// route.children.push({
|
|
20
|
-
// title: page.metadata.title,
|
|
21
|
-
// link: page.path,
|
|
22
|
-
// level: route.level + 1,
|
|
23
|
-
// });
|
|
24
|
-
// continue;
|
|
25
|
-
// }
|
|
26
|
-
// navigation.push({
|
|
27
|
-
// title: page.metadata.title,
|
|
28
|
-
// link: page.path,
|
|
29
|
-
// level: 1,
|
|
30
|
-
// children: [],
|
|
31
|
-
// });
|
|
32
|
-
// }
|
|
33
|
-
// // for (const subRouter of subRouters) {
|
|
34
|
-
// // navigation.push({
|
|
35
|
-
// // title: subRouter.layout.title,
|
|
36
|
-
// // link: subRouter.layout.path,
|
|
37
|
-
// // level: 1,
|
|
38
|
-
// // children: generateNavigation(subRouter),
|
|
39
|
-
// // });
|
|
40
|
-
// // }
|
|
41
|
-
// return navigation;
|
|
42
|
-
// };
|
|
43
|
-
// const checkIfRouteExists = (
|
|
44
|
-
// navigation: NavigationStructure[],
|
|
45
|
-
// path: string
|
|
46
|
-
// ) => {
|
|
47
|
-
// for (const route of navigation) {
|
|
48
|
-
// if (route.link === path) {
|
|
49
|
-
// return {
|
|
50
|
-
// exists: true,
|
|
51
|
-
// isParent: false,
|
|
52
|
-
// route,
|
|
53
|
-
// };
|
|
54
|
-
// }
|
|
55
|
-
// if (path.startsWith(route.link)) {
|
|
56
|
-
// return {
|
|
57
|
-
// exists: false,
|
|
58
|
-
// isParent: true,
|
|
59
|
-
// route,
|
|
60
|
-
// };
|
|
61
|
-
// }
|
|
62
|
-
// if (route.children) {
|
|
63
|
-
// const result = checkIfRouteExists(route.children, path);
|
|
64
|
-
// if (result.exists) {
|
|
65
|
-
// return result;
|
|
66
|
-
// }
|
|
67
|
-
// }
|
|
68
|
-
// }
|
|
69
|
-
// return {
|
|
70
|
-
// exists: false,
|
|
71
|
-
// isParent: false,
|
|
72
|
-
// route: null,
|
|
73
|
-
// };
|
|
74
|
-
// };
|
|
75
|
-
//# sourceMappingURL=generate-navigation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generate-navigation.js","sourceRoot":"","sources":["../../src/utils/generate-navigation.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,8CAA8C;AAC9C,2DAA2D;AAE3D,mEAAmE;AACnE,kDAAkD;AAElD,mDAAmD;AAEnD,gCAAgC;AAChC,sCAAsC;AACtC,qBAAqB;AACrB,WAAW;AAEX,8DAA8D;AAC9D,oBAAoB;AACpB,kBAAkB;AAClB,SAAS;AAET,oBAAoB;AACpB,kBAAkB;AAClB,QAAQ;AAER,sBAAsB;AACtB,8BAA8B;AAC9B,sCAAsC;AACtC,2BAA2B;AAC3B,kCAAkC;AAClC,YAAY;AAEZ,kBAAkB;AAClB,QAAQ;AAER,wBAAwB;AACxB,oCAAoC;AACpC,yBAAyB;AACzB,kBAAkB;AAClB,sBAAsB;AACtB,UAAU;AACV,MAAM;AAEN,6CAA6C;AAC7C,2BAA2B;AAC3B,0CAA0C;AAC1C,wCAAwC;AACxC,qBAAqB;AACrB,oDAAoD;AACpD,aAAa;AACb,SAAS;AAET,uBAAuB;AACvB,KAAK;AAEL,+BAA+B;AAC/B,uCAAuC;AACvC,iBAAiB;AACjB,SAAS;AACT,sCAAsC;AACtC,iCAAiC;AACjC,iBAAiB;AACjB,wBAAwB;AACxB,2BAA2B;AAC3B,iBAAiB;AACjB,WAAW;AACX,QAAQ;AAER,yCAAyC;AACzC,iBAAiB;AACjB,yBAAyB;AACzB,0BAA0B;AAC1B,iBAAiB;AACjB,WAAW;AACX,QAAQ;AAER,4BAA4B;AAC5B,iEAAiE;AAEjE,6BAA6B;AAC7B,yBAAyB;AACzB,UAAU;AACV,QAAQ;AACR,MAAM;AAEN,aAAa;AACb,qBAAqB;AACrB,uBAAuB;AACvB,mBAAmB;AACnB,OAAO;AACP,KAAK"}
|
package/lib/utils/index.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
declare const plugin: () => (Promise<{
|
|
2
|
-
name: string;
|
|
3
|
-
enforce: string;
|
|
4
|
-
config(config: unknown, env: any): void;
|
|
5
|
-
configResolved(resolvedConfig: unknown): void;
|
|
6
|
-
transform(code: string, id: string): Promise<{
|
|
7
|
-
code: string;
|
|
8
|
-
map: any;
|
|
9
|
-
}>;
|
|
10
|
-
}> | {
|
|
11
|
-
name: string;
|
|
12
|
-
resolveId(id: string): string;
|
|
13
|
-
load(id: string): Promise<string>;
|
|
14
|
-
})[];
|
|
15
|
-
export default plugin;
|
package/lib/utils/index.js
DELETED
package/lib/utils/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,EAAE,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAEjE,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,uBAAuB,EAAE,CAAC,CAAC;AAE9D,eAAe,MAAM,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export default function markToHtml(markdown: string): Promise<string>;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import rehypeStringify from 'rehype-stringify';
|
|
2
|
-
import remarkGfm from 'remark-gfm';
|
|
3
|
-
import remarkParse from 'remark-parse';
|
|
4
|
-
import remarkRehype from 'remark-rehype';
|
|
5
|
-
import { unified } from 'unified';
|
|
6
|
-
export default async function markToHtml(markdown) {
|
|
7
|
-
const file = await unified()
|
|
8
|
-
.use(remarkParse)
|
|
9
|
-
.use(remarkGfm)
|
|
10
|
-
.use(remarkRehype)
|
|
11
|
-
.use(rehypeStringify)
|
|
12
|
-
.process(markdown);
|
|
13
|
-
return String(file);
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=mark-to-html.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mark-to-html.js","sourceRoot":"","sources":["../../src/utils/mark-to-html.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,kBAAkB,CAAC;AAC/C,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,WAAW,MAAM,cAAc,CAAC;AACvC,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,UAAU,CAAC,QAAgB;IACvD,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE;SACzB,GAAG,CAAC,WAAW,CAAC;SAChB,GAAG,CAAC,SAAS,CAAC;SACd,GAAG,CAAC,YAAY,CAAC;SACjB,GAAG,CAAC,eAAe,CAAC;SACpB,OAAO,CAAC,QAAQ,CAAC,CAAC;IAErB,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC"}
|
package/lib/utils/plugin.d.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A Vite plugin that transforms MDX files into a format that can be used in a RasenganJs application.
|
|
3
|
-
*
|
|
4
|
-
* The plugin performs the following tasks:
|
|
5
|
-
* - Resolves the Vite configuration and stores it for later use.
|
|
6
|
-
* - Transforms MDX files by applying the `@mdx-js/rollup` transformation.
|
|
7
|
-
* - Extracts frontmatter data from the MDX files and creates a `metadata` object.
|
|
8
|
-
* - Appends the `metadata` object to the transformed MDX content.
|
|
9
|
-
*
|
|
10
|
-
* The transformed MDX content can then be used in the RasenganJs application, with the `metadata` object providing additional information about the content.
|
|
11
|
-
*/
|
|
12
|
-
export default function plugin(): Promise<{
|
|
13
|
-
name: string;
|
|
14
|
-
enforce: string;
|
|
15
|
-
config(config: unknown, env: any): void;
|
|
16
|
-
configResolved(resolvedConfig: unknown): void;
|
|
17
|
-
transform(code: string, id: string): Promise<{
|
|
18
|
-
code: string;
|
|
19
|
-
map: any;
|
|
20
|
-
}>;
|
|
21
|
-
}>;
|
|
22
|
-
export declare function loadMDXComponentsPlugin(): {
|
|
23
|
-
name: string;
|
|
24
|
-
resolveId(id: string): string;
|
|
25
|
-
load(id: string): Promise<string>;
|
|
26
|
-
};
|
package/lib/utils/plugin.js
DELETED
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
import matter from 'gray-matter';
|
|
2
|
-
import createFilter from './create-filter.js';
|
|
3
|
-
import remarkGfm from 'remark-gfm';
|
|
4
|
-
import rehypeStringify from 'rehype-stringify';
|
|
5
|
-
import remarkParse from 'remark-parse';
|
|
6
|
-
import remarkRehype from 'remark-rehype';
|
|
7
|
-
import rehypePrettyCode from 'rehype-pretty-code';
|
|
8
|
-
import { extractTOC } from './extract-toc.js';
|
|
9
|
-
/**
|
|
10
|
-
* A Vite plugin that transforms MDX files into a format that can be used in a RasenganJs application.
|
|
11
|
-
*
|
|
12
|
-
* The plugin performs the following tasks:
|
|
13
|
-
* - Resolves the Vite configuration and stores it for later use.
|
|
14
|
-
* - Transforms MDX files by applying the `@mdx-js/rollup` transformation.
|
|
15
|
-
* - Extracts frontmatter data from the MDX files and creates a `metadata` object.
|
|
16
|
-
* - Appends the `metadata` object to the transformed MDX content.
|
|
17
|
-
*
|
|
18
|
-
* The transformed MDX content can then be used in the RasenganJs application, with the `metadata` object providing additional information about the content.
|
|
19
|
-
*/
|
|
20
|
-
export default async function plugin() {
|
|
21
|
-
const mdx = (await import('@mdx-js/rollup')).default;
|
|
22
|
-
let config;
|
|
23
|
-
const filter = createFilter('**/*.md?(x)');
|
|
24
|
-
const mdxInstance = mdx({
|
|
25
|
-
remarkPlugins: [remarkParse, remarkGfm],
|
|
26
|
-
rehypePlugins: [
|
|
27
|
-
remarkRehype,
|
|
28
|
-
rehypeStringify,
|
|
29
|
-
[
|
|
30
|
-
rehypePrettyCode,
|
|
31
|
-
{
|
|
32
|
-
themes: {
|
|
33
|
-
light: 'one-light',
|
|
34
|
-
dark: 'one-dark-pro',
|
|
35
|
-
},
|
|
36
|
-
},
|
|
37
|
-
],
|
|
38
|
-
],
|
|
39
|
-
});
|
|
40
|
-
return {
|
|
41
|
-
name: 'vite-plugin-rasengan-mdx',
|
|
42
|
-
// Apply transformation of the mdx file before other plugins
|
|
43
|
-
enforce: 'pre',
|
|
44
|
-
config(config, env) {
|
|
45
|
-
mdxInstance.config(config, env);
|
|
46
|
-
},
|
|
47
|
-
/**
|
|
48
|
-
* Stores the resolved Vite configuration for later use.
|
|
49
|
-
*
|
|
50
|
-
* @param resolvedConfig - The resolved Vite configuration object.
|
|
51
|
-
*/
|
|
52
|
-
configResolved(resolvedConfig) {
|
|
53
|
-
// store the resolved config
|
|
54
|
-
config = resolvedConfig;
|
|
55
|
-
},
|
|
56
|
-
/**
|
|
57
|
-
* Transforms an MDX file by applying the `@mdx-js/rollup` transformation, extracting frontmatter data, and appending a `metadata` object to the transformed content.
|
|
58
|
-
*
|
|
59
|
-
* @param code - The content of the MDX file.
|
|
60
|
-
* @param id - The ID of the MDX file.
|
|
61
|
-
* @returns An object containing the transformed MDX code and a source map, or `null` if the file is not an MDX file.
|
|
62
|
-
*/
|
|
63
|
-
async transform(code, id) {
|
|
64
|
-
if (!filter(id)) {
|
|
65
|
-
return null;
|
|
66
|
-
}
|
|
67
|
-
const { content, data: frontmatter } = matter(code);
|
|
68
|
-
// Extract the table of content
|
|
69
|
-
const isTocVisible = frontmatter.toc !== undefined ? frontmatter.toc : false;
|
|
70
|
-
const toc = extractTOC(content);
|
|
71
|
-
// Apply transformation of the mdx file
|
|
72
|
-
const result = await mdxInstance.transform(content, id);
|
|
73
|
-
// Extract the file name from the path
|
|
74
|
-
const fileName = id
|
|
75
|
-
.split('/')
|
|
76
|
-
.pop()
|
|
77
|
-
.replace(/.page.mdx?$/, '');
|
|
78
|
-
// TODO: Consider other params of metadata from frontmatter
|
|
79
|
-
const metadata = {
|
|
80
|
-
path: frontmatter.path || `/${fileName}`,
|
|
81
|
-
metadata: frontmatter.metadata || {
|
|
82
|
-
title: fileName,
|
|
83
|
-
},
|
|
84
|
-
};
|
|
85
|
-
let newCode = result.code;
|
|
86
|
-
newCode = newCode.replace(/export default\s+/, 'const MDXContent = ');
|
|
87
|
-
return {
|
|
88
|
-
code: `
|
|
89
|
-
import { MDXRenderer } from "@rasenganjs/mdx";
|
|
90
|
-
import mdxConfig from "virtual:rasengan/mdx-components";
|
|
91
|
-
|
|
92
|
-
${newCode}
|
|
93
|
-
|
|
94
|
-
const metadata = ${JSON.stringify(metadata)};
|
|
95
|
-
const toc = ${isTocVisible ? JSON.stringify(toc) : undefined};
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
const MDXWrapper = {
|
|
99
|
-
metadata,
|
|
100
|
-
toc,
|
|
101
|
-
type: "MDXPageComponent", // Helps to differentiate PageComponent from MDXPageComponent
|
|
102
|
-
Content: MDXContent, // The content of the MDX file
|
|
103
|
-
Renderer: MDXRenderer, // The renderer component
|
|
104
|
-
config: mdxConfig, // The MDX config coming from mdx-components virtual module
|
|
105
|
-
};
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
export default MDXWrapper;
|
|
109
|
-
`,
|
|
110
|
-
map: result.map,
|
|
111
|
-
};
|
|
112
|
-
},
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
export function loadMDXComponentsPlugin() {
|
|
116
|
-
const virtualModuleId = 'virtual:rasengan/mdx-components';
|
|
117
|
-
const resolvedVirtualModuleId = '\0' + virtualModuleId;
|
|
118
|
-
return {
|
|
119
|
-
name: 'vite-plugin-rasengan-mdx-components',
|
|
120
|
-
resolveId(id) {
|
|
121
|
-
if (id === virtualModuleId) {
|
|
122
|
-
return resolvedVirtualModuleId;
|
|
123
|
-
}
|
|
124
|
-
},
|
|
125
|
-
async load(id) {
|
|
126
|
-
if (id === resolvedVirtualModuleId) {
|
|
127
|
-
return `
|
|
128
|
-
const modules = import.meta.glob(
|
|
129
|
-
[
|
|
130
|
-
'/mdx-components.{js,jsx,ts,tsx}',
|
|
131
|
-
],
|
|
132
|
-
{ eager: true }
|
|
133
|
-
);
|
|
134
|
-
let config = {};
|
|
135
|
-
|
|
136
|
-
const modulesArray = Object.entries(modules);
|
|
137
|
-
|
|
138
|
-
if (modulesArray.length > 0) {
|
|
139
|
-
const [filePath, mod] = modulesArray[0];
|
|
140
|
-
config = mod.default;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
export default config;
|
|
144
|
-
`;
|
|
145
|
-
}
|
|
146
|
-
},
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
|
-
//# sourceMappingURL=plugin.js.map
|
package/lib/utils/plugin.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/utils/plugin.ts"],"names":[],"mappings":"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"}
|
package/lib/utils/polyfill.d.ts
DELETED
package/lib/utils/polyfill.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export default function polyfill() {
|
|
2
|
-
return {
|
|
3
|
-
name: 'vite-plugin-rasengan-mdx-polyfill',
|
|
4
|
-
config: () => {
|
|
5
|
-
return {
|
|
6
|
-
define: {
|
|
7
|
-
process: process,
|
|
8
|
-
},
|
|
9
|
-
};
|
|
10
|
-
},
|
|
11
|
-
enforce: 'pre',
|
|
12
|
-
apply: 'build',
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=polyfill.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"polyfill.js","sourceRoot":"","sources":["../../src/utils/polyfill.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,QAAQ;IAC9B,OAAO;QACL,IAAI,EAAE,mCAAmC;QAEzC,MAAM,EAAE,GAAG,EAAE;YACX,OAAO;gBACL,MAAM,EAAE;oBACN,OAAO,EAAE,OAAO;iBACjB;aACF,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,OAAO;KACf,CAAC;AACJ,CAAC"}
|