@astrojs/markdown-remark 0.6.1 → 0.6.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 +18 -0
- package/dist/rehype-escape.js +2 -2
- package/dist/remark-prism.js +2 -2
- package/dist/remark-shiki.d.ts +1 -1
- package/dist/remark-shiki.js +10 -4
- package/package.json +1 -1
- package/src/rehype-escape.ts +1 -1
- package/src/remark-prism.ts +1 -1
- package/src/remark-shiki.ts +17 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @astrojs/markdown-remark
|
|
2
2
|
|
|
3
|
+
## 0.6.4
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#2706](https://github.com/withastro/astro/pull/2706) [`b2c37385`](https://github.com/withastro/astro/commit/b2c37385f94614232d9a378ef2ef3264d5405cc8) Thanks [@JuanM04](https://github.com/JuanM04)! - Changed `data-astro-raw` to `is:raw` internally
|
|
8
|
+
|
|
9
|
+
## 0.6.3
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [#2697](https://github.com/withastro/astro/pull/2697) [`91765d79`](https://github.com/withastro/astro/commit/91765d79b1ec1181417fb6a4604a9e20564bb10e) Thanks [@FredKSchott](https://github.com/FredKSchott)! - Improve performance by optimizing calls to `getHighlighter`
|
|
14
|
+
|
|
15
|
+
## 0.6.2
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- [#2628](https://github.com/withastro/astro/pull/2628) [`9b7e2ab2`](https://github.com/withastro/astro/commit/9b7e2ab2516cd36520364490df8e3482008292e3) Thanks [@JuanM04](https://github.com/JuanM04)! - Fixed shiki to work with `{ "type": "module" }`
|
|
20
|
+
|
|
3
21
|
## 0.6.1
|
|
4
22
|
|
|
5
23
|
### Patch Changes
|
package/dist/rehype-escape.js
CHANGED
|
@@ -3,7 +3,7 @@ function rehypeEscape() {
|
|
|
3
3
|
return function(node) {
|
|
4
4
|
return visit(node, "element", (el) => {
|
|
5
5
|
if (el.tagName === "code" || el.tagName === "pre") {
|
|
6
|
-
el.properties["
|
|
6
|
+
el.properties["is:raw"] = true;
|
|
7
7
|
}
|
|
8
8
|
return el;
|
|
9
9
|
});
|
|
@@ -12,4 +12,4 @@ function rehypeEscape() {
|
|
|
12
12
|
export {
|
|
13
13
|
rehypeEscape as default
|
|
14
14
|
};
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlaHlwZS1lc2NhcGUudHMiXSwKICAibWFwcGluZ3MiOiAiQUFBQTtBQUVlLHdCQUE2QjtBQUMzQyxTQUFPLFNBQVUsTUFBZ0I7QUFDaEMsV0FBTyxNQUFNLE1BQU0sV0FBVyxDQUFDLE9BQU87QUFDckMsVUFBSSxHQUFHLFlBQVksVUFBVSxHQUFHLFlBQVksT0FBTztBQUNsRCxXQUFHLFdBQVcsWUFBWTtBQUFBO0FBRTNCLGFBQU87QUFBQTtBQUFBO0FBQUE7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
package/dist/remark-prism.js
CHANGED
|
@@ -43,7 +43,7 @@ function transformer(className) {
|
|
|
43
43
|
if (className) {
|
|
44
44
|
classes.push(className);
|
|
45
45
|
}
|
|
46
|
-
node.value = `<pre class="${classes.join(" ")}"><code
|
|
46
|
+
node.value = `<pre class="${classes.join(" ")}"><code is:raw class="${classLanguage}">${html}</code></pre>`;
|
|
47
47
|
return node;
|
|
48
48
|
};
|
|
49
49
|
return visit(tree, "code", visitor);
|
|
@@ -56,4 +56,4 @@ var remark_prism_default = plugin;
|
|
|
56
56
|
export {
|
|
57
57
|
remark_prism_default as default
|
|
58
58
|
};
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlbWFyay1wcmlzbS50cyJdLAogICJtYXBwaW5ncyI6ICJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxVQUFVLElBQUksSUFBSSxDQUFDLFFBQVEsUUFBUTtBQUV6QyxNQUFNLGNBQWMsSUFBSSxJQUFJLENBQUMsQ0FBQyxNQUFNO0FBRXBDLHdCQUF3QixNQUFjLE1BQWM7QUFDbkQsTUFBSSxnQkFBZ0IsWUFBWTtBQUVoQyxNQUFJLFFBQVEsTUFBTTtBQUNqQixXQUFPO0FBQUE7QUFHUixRQUFNLGVBQWUsQ0FBQyxVQUFpQjtBQUN0QyxRQUFJLFNBQVEsQ0FBQyxNQUFNLFVBQVUsUUFBTztBQUNuQyxvQkFBYyxDQUFDO0FBQUE7QUFBQTtBQUlqQixNQUFJLFlBQVksSUFBSSxPQUFPO0FBQzFCLGlCQUFhLFlBQVksSUFBSTtBQUFBLGFBQ25CLFNBQVMsU0FBUztBQUM1QixpQkFBYTtBQUNiLGFBQVM7QUFBQSxTQUNIO0FBQ04saUJBQWE7QUFDYixpQkFBYTtBQUFBO0FBR2QsTUFBSSxRQUFRLENBQUMsTUFBTSxVQUFVLE9BQU87QUFDbkMsWUFBUSxLQUFLLGdDQUFnQztBQUFBO0FBRzlDLFFBQU0sVUFBVSxNQUFNLFVBQVU7QUFDaEMsTUFBSSxPQUFPO0FBQ1gsTUFBSSxTQUFTO0FBQ1osV0FBTyxNQUFNLFVBQVUsTUFBTSxTQUFTO0FBQUE7QUFHdkMsU0FBTyxFQUFFLGVBQWU7QUFBQTtBQU16QixxQkFBcUIsV0FBd0I7QUFDNUMsU0FBTyxTQUFVLE1BQVc7QUFDM0IsVUFBTSxVQUFVLENBQUMsU0FBYztBQUM5QixVQUFJLEVBQUUsTUFBTSxVQUFVO0FBQ3RCLFdBQUssT0FBTztBQUVaLFVBQUksRUFBRSxNQUFNLGtCQUFrQixlQUFlLE1BQU07QUFDbkQsVUFBSSxVQUFVLENBQUM7QUFDZixVQUFJLFdBQVc7QUFDZCxnQkFBUSxLQUFLO0FBQUE7QUFFZCxXQUFLLFFBQVEsZUFBZSxRQUFRLEtBQUssNkJBQTZCLGtCQUFrQjtBQUN4RixhQUFPO0FBQUE7QUFFUixXQUFPLE1BQU0sTUFBTSxRQUFRO0FBQUE7QUFBQTtBQUk3QixnQkFBZ0IsV0FBd0I7QUFDdkMsU0FBTyxZQUFZLEtBQUssTUFBTTtBQUFBO0FBRy9CLElBQU8sdUJBQVE7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
package/dist/remark-shiki.d.ts
CHANGED
package/dist/remark-shiki.js
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { getHighlighter } from "shiki";
|
|
2
2
|
import { visit } from "unist-util-visit";
|
|
3
|
+
const highlighterCache = new Map();
|
|
3
4
|
const remarkShiki = async ({ langs = [], theme = "github-dark", wrap = false }) => {
|
|
4
|
-
const
|
|
5
|
+
const cacheID = typeof theme === "string" ? theme : theme.name;
|
|
6
|
+
let highlighter = highlighterCache.get(cacheID);
|
|
7
|
+
if (!highlighter) {
|
|
8
|
+
highlighter = await getHighlighter({ theme });
|
|
9
|
+
highlighterCache.set(cacheID, highlighter);
|
|
10
|
+
}
|
|
5
11
|
for (const lang of langs) {
|
|
6
12
|
await highlighter.loadLanguage(lang);
|
|
7
13
|
}
|
|
@@ -9,7 +15,7 @@ const remarkShiki = async ({ langs = [], theme = "github-dark", wrap = false })
|
|
|
9
15
|
visit(tree, "code", (node) => {
|
|
10
16
|
var _a;
|
|
11
17
|
let html = highlighter.codeToHtml(node.value, { lang: (_a = node.lang) != null ? _a : "plaintext" });
|
|
12
|
-
html = html.replace('<pre class="shiki"', '<pre
|
|
18
|
+
html = html.replace('<pre class="shiki"', '<pre is:raw class="astro-code"');
|
|
13
19
|
html = html.replace(/style="(background-)?color: var\(--shiki-/g, 'style="$1color: var(--astro-code-');
|
|
14
20
|
if (wrap === false) {
|
|
15
21
|
html = html.replace(/style="(.*?)"/, 'style="$1; overflow-x: auto;"');
|
|
@@ -26,4 +32,4 @@ var remark_shiki_default = remarkShiki;
|
|
|
26
32
|
export {
|
|
27
33
|
remark_shiki_default as default
|
|
28
34
|
};
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlbWFyay1zaGlraS50cyJdLAogICJtYXBwaW5ncyI6ICJBQUNBO0FBQ0E7QUFrQ0EsTUFBTSxtQkFBbUIsSUFBSTtBQUU3QixNQUFNLGNBQWMsT0FBTyxFQUFFLFFBQVEsSUFBSSxRQUFRLGVBQWUsT0FBTyxZQUF5QjtBQUMvRixRQUFNLFVBQWtCLE9BQU8sVUFBVSxXQUFXLFFBQVEsTUFBTTtBQUNsRSxNQUFJLGNBQWMsaUJBQWlCLElBQUk7QUFDdkMsTUFBSSxDQUFDLGFBQWE7QUFDakIsa0JBQWMsTUFBTSxlQUFlLEVBQUU7QUFDckMscUJBQWlCLElBQUksU0FBUztBQUFBO0FBRS9CLGFBQVcsUUFBUSxPQUFPO0FBQ3pCLFVBQU0sWUFBWSxhQUFhO0FBQUE7QUFFaEMsU0FBTyxNQUFNLENBQUMsU0FBYztBQUMzQixVQUFNLE1BQU0sUUFBUSxDQUFDLFNBQVM7QUFqRGhDO0FBa0RHLFVBQUksT0FBTyxZQUFhLFdBQVcsS0FBSyxPQUFPLEVBQUUsTUFBTSxXQUFLLFNBQUwsWUFBYTtBQUdwRSxhQUFPLEtBQUssUUFBUSxzQkFBc0I7QUFFMUMsYUFBTyxLQUFLLFFBQVEsOENBQThDO0FBR2xFLFVBQUksU0FBUyxPQUFPO0FBQ25CLGVBQU8sS0FBSyxRQUFRLGlCQUFpQjtBQUFBLGlCQUMzQixTQUFTLE1BQU07QUFDekIsZUFBTyxLQUFLLFFBQVEsaUJBQWlCO0FBQUE7QUFHdEMsV0FBSyxPQUFPO0FBQ1osV0FBSyxRQUFRO0FBQ2IsV0FBSyxXQUFXO0FBQUE7QUFBQTtBQUFBO0FBS25CLElBQU8sdUJBQVE7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
package/package.json
CHANGED
package/src/rehype-escape.ts
CHANGED
|
@@ -4,7 +4,7 @@ export default function rehypeEscape(): any {
|
|
|
4
4
|
return function (node: any): any {
|
|
5
5
|
return visit(node, 'element', (el) => {
|
|
6
6
|
if (el.tagName === 'code' || el.tagName === 'pre') {
|
|
7
|
-
el.properties['
|
|
7
|
+
el.properties['is:raw'] = true;
|
|
8
8
|
}
|
|
9
9
|
return el;
|
|
10
10
|
});
|
package/src/remark-prism.ts
CHANGED
|
@@ -56,7 +56,7 @@ function transformer(className: MaybeString) {
|
|
|
56
56
|
if (className) {
|
|
57
57
|
classes.push(className);
|
|
58
58
|
}
|
|
59
|
-
node.value = `<pre class="${classes.join(' ')}"><code
|
|
59
|
+
node.value = `<pre class="${classes.join(' ')}"><code is:raw class="${classLanguage}">${html}</code></pre>`;
|
|
60
60
|
return node;
|
|
61
61
|
};
|
|
62
62
|
return visit(tree, 'code', visitor);
|
package/src/remark-shiki.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import shiki from 'shiki';
|
|
1
|
+
import type * as shiki from 'shiki';
|
|
2
|
+
import { getHighlighter } from 'shiki';
|
|
2
3
|
import { visit } from 'unist-util-visit';
|
|
3
4
|
|
|
4
5
|
export interface ShikiConfig {
|
|
@@ -29,19 +30,28 @@ export interface ShikiConfig {
|
|
|
29
30
|
wrap?: boolean | null;
|
|
30
31
|
}
|
|
31
32
|
|
|
32
|
-
|
|
33
|
-
|
|
33
|
+
/**
|
|
34
|
+
* getHighlighter() is the most expensive step of Shiki. Instead of calling it on every page,
|
|
35
|
+
* cache it here as much as possible. Make sure that your highlighters can be cached, state-free.
|
|
36
|
+
*/
|
|
37
|
+
const highlighterCache = new Map<string, shiki.Highlighter>();
|
|
34
38
|
|
|
39
|
+
const remarkShiki = async ({ langs = [], theme = 'github-dark', wrap = false }: ShikiConfig) => {
|
|
40
|
+
const cacheID: string = typeof theme === 'string' ? theme : theme.name;
|
|
41
|
+
let highlighter = highlighterCache.get(cacheID);
|
|
42
|
+
if (!highlighter) {
|
|
43
|
+
highlighter = await getHighlighter({ theme });
|
|
44
|
+
highlighterCache.set(cacheID, highlighter);
|
|
45
|
+
}
|
|
35
46
|
for (const lang of langs) {
|
|
36
47
|
await highlighter.loadLanguage(lang);
|
|
37
48
|
}
|
|
38
|
-
|
|
39
49
|
return () => (tree: any) => {
|
|
40
50
|
visit(tree, 'code', (node) => {
|
|
41
|
-
let html = highlighter
|
|
51
|
+
let html = highlighter!.codeToHtml(node.value, { lang: node.lang ?? 'plaintext' });
|
|
42
52
|
|
|
43
|
-
// Replace "shiki" class naming with "astro" and add "
|
|
44
|
-
html = html.replace('<pre class="shiki"', '<pre
|
|
53
|
+
// Replace "shiki" class naming with "astro" and add "is:raw".
|
|
54
|
+
html = html.replace('<pre class="shiki"', '<pre is:raw class="astro-code"');
|
|
45
55
|
// Replace "shiki" css variable naming with "astro".
|
|
46
56
|
html = html.replace(/style="(background-)?color: var\(--shiki-/g, 'style="$1color: var(--astro-code-');
|
|
47
57
|
// Handle code wrapping
|