@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 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
@@ -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["data-astro-raw"] = true;
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,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlaHlwZS1lc2NhcGUudHMiXSwKICAibWFwcGluZ3MiOiAiQUFBQTtBQUVlLHdCQUE2QjtBQUMzQyxTQUFPLFNBQVUsTUFBZ0I7QUFDaEMsV0FBTyxNQUFNLE1BQU0sV0FBVyxDQUFDLE9BQU87QUFDckMsVUFBSSxHQUFHLFlBQVksVUFBVSxHQUFHLFlBQVksT0FBTztBQUNsRCxXQUFHLFdBQVcsb0JBQW9CO0FBQUE7QUFFbkMsYUFBTztBQUFBO0FBQUE7QUFBQTsiLAogICJuYW1lcyI6IFtdCn0K
15
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlaHlwZS1lc2NhcGUudHMiXSwKICAibWFwcGluZ3MiOiAiQUFBQTtBQUVlLHdCQUE2QjtBQUMzQyxTQUFPLFNBQVUsTUFBZ0I7QUFDaEMsV0FBTyxNQUFNLE1BQU0sV0FBVyxDQUFDLE9BQU87QUFDckMsVUFBSSxHQUFHLFlBQVksVUFBVSxHQUFHLFlBQVksT0FBTztBQUNsRCxXQUFHLFdBQVcsWUFBWTtBQUFBO0FBRTNCLGFBQU87QUFBQTtBQUFBO0FBQUE7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -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 data-astro-raw class="${classLanguage}">${html}</code></pre>`;
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,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlbWFyay1wcmlzbS50cyJdLAogICJtYXBwaW5ncyI6ICJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxVQUFVLElBQUksSUFBSSxDQUFDLFFBQVEsUUFBUTtBQUV6QyxNQUFNLGNBQWMsSUFBSSxJQUFJLENBQUMsQ0FBQyxNQUFNO0FBRXBDLHdCQUF3QixNQUFjLE1BQWM7QUFDbkQsTUFBSSxnQkFBZ0IsWUFBWTtBQUVoQyxNQUFJLFFBQVEsTUFBTTtBQUNqQixXQUFPO0FBQUE7QUFHUixRQUFNLGVBQWUsQ0FBQyxVQUFpQjtBQUN0QyxRQUFJLFNBQVEsQ0FBQyxNQUFNLFVBQVUsUUFBTztBQUNuQyxvQkFBYyxDQUFDO0FBQUE7QUFBQTtBQUlqQixNQUFJLFlBQVksSUFBSSxPQUFPO0FBQzFCLGlCQUFhLFlBQVksSUFBSTtBQUFBLGFBQ25CLFNBQVMsU0FBUztBQUM1QixpQkFBYTtBQUNiLGFBQVM7QUFBQSxTQUNIO0FBQ04saUJBQWE7QUFDYixpQkFBYTtBQUFBO0FBR2QsTUFBSSxRQUFRLENBQUMsTUFBTSxVQUFVLE9BQU87QUFDbkMsWUFBUSxLQUFLLGdDQUFnQztBQUFBO0FBRzlDLFFBQU0sVUFBVSxNQUFNLFVBQVU7QUFDaEMsTUFBSSxPQUFPO0FBQ1gsTUFBSSxTQUFTO0FBQ1osV0FBTyxNQUFNLFVBQVUsTUFBTSxTQUFTO0FBQUE7QUFHdkMsU0FBTyxFQUFFLGVBQWU7QUFBQTtBQU16QixxQkFBcUIsV0FBd0I7QUFDNUMsU0FBTyxTQUFVLE1BQVc7QUFDM0IsVUFBTSxVQUFVLENBQUMsU0FBYztBQUM5QixVQUFJLEVBQUUsTUFBTSxVQUFVO0FBQ3RCLFdBQUssT0FBTztBQUVaLFVBQUksRUFBRSxNQUFNLGtCQUFrQixlQUFlLE1BQU07QUFDbkQsVUFBSSxVQUFVLENBQUM7QUFDZixVQUFJLFdBQVc7QUFDZCxnQkFBUSxLQUFLO0FBQUE7QUFFZCxXQUFLLFFBQVEsZUFBZSxRQUFRLEtBQUsscUNBQXFDLGtCQUFrQjtBQUNoRyxhQUFPO0FBQUE7QUFFUixXQUFPLE1BQU0sTUFBTSxRQUFRO0FBQUE7QUFBQTtBQUk3QixnQkFBZ0IsV0FBd0I7QUFDdkMsU0FBTyxZQUFZLEtBQUssTUFBTTtBQUFBO0FBRy9CLElBQU8sdUJBQVE7IiwKICAibmFtZXMiOiBbXQp9Cg==
59
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlbWFyay1wcmlzbS50cyJdLAogICJtYXBwaW5ncyI6ICJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxVQUFVLElBQUksSUFBSSxDQUFDLFFBQVEsUUFBUTtBQUV6QyxNQUFNLGNBQWMsSUFBSSxJQUFJLENBQUMsQ0FBQyxNQUFNO0FBRXBDLHdCQUF3QixNQUFjLE1BQWM7QUFDbkQsTUFBSSxnQkFBZ0IsWUFBWTtBQUVoQyxNQUFJLFFBQVEsTUFBTTtBQUNqQixXQUFPO0FBQUE7QUFHUixRQUFNLGVBQWUsQ0FBQyxVQUFpQjtBQUN0QyxRQUFJLFNBQVEsQ0FBQyxNQUFNLFVBQVUsUUFBTztBQUNuQyxvQkFBYyxDQUFDO0FBQUE7QUFBQTtBQUlqQixNQUFJLFlBQVksSUFBSSxPQUFPO0FBQzFCLGlCQUFhLFlBQVksSUFBSTtBQUFBLGFBQ25CLFNBQVMsU0FBUztBQUM1QixpQkFBYTtBQUNiLGFBQVM7QUFBQSxTQUNIO0FBQ04saUJBQWE7QUFDYixpQkFBYTtBQUFBO0FBR2QsTUFBSSxRQUFRLENBQUMsTUFBTSxVQUFVLE9BQU87QUFDbkMsWUFBUSxLQUFLLGdDQUFnQztBQUFBO0FBRzlDLFFBQU0sVUFBVSxNQUFNLFVBQVU7QUFDaEMsTUFBSSxPQUFPO0FBQ1gsTUFBSSxTQUFTO0FBQ1osV0FBTyxNQUFNLFVBQVUsTUFBTSxTQUFTO0FBQUE7QUFHdkMsU0FBTyxFQUFFLGVBQWU7QUFBQTtBQU16QixxQkFBcUIsV0FBd0I7QUFDNUMsU0FBTyxTQUFVLE1BQVc7QUFDM0IsVUFBTSxVQUFVLENBQUMsU0FBYztBQUM5QixVQUFJLEVBQUUsTUFBTSxVQUFVO0FBQ3RCLFdBQUssT0FBTztBQUVaLFVBQUksRUFBRSxNQUFNLGtCQUFrQixlQUFlLE1BQU07QUFDbkQsVUFBSSxVQUFVLENBQUM7QUFDZixVQUFJLFdBQVc7QUFDZCxnQkFBUSxLQUFLO0FBQUE7QUFFZCxXQUFLLFFBQVEsZUFBZSxRQUFRLEtBQUssNkJBQTZCLGtCQUFrQjtBQUN4RixhQUFPO0FBQUE7QUFFUixXQUFPLE1BQU0sTUFBTSxRQUFRO0FBQUE7QUFBQTtBQUk3QixnQkFBZ0IsV0FBd0I7QUFDdkMsU0FBTyxZQUFZLEtBQUssTUFBTTtBQUFBO0FBRy9CLElBQU8sdUJBQVE7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -1,4 +1,4 @@
1
- import shiki from 'shiki';
1
+ import type * as shiki from 'shiki';
2
2
  export interface ShikiConfig {
3
3
  /**
4
4
  * The languages loaded to Shiki.
@@ -1,7 +1,13 @@
1
- import shiki from "shiki";
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 highlighter = await shiki.getHighlighter({ theme });
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 data-astro-raw class="astro-code"');
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,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlbWFyay1zaGlraS50cyJdLAogICJtYXBwaW5ncyI6ICJBQUFBO0FBQ0E7QUE4QkEsTUFBTSxjQUFjLE9BQU8sRUFBRSxRQUFRLElBQUksUUFBUSxlQUFlLE9BQU8sWUFBeUI7QUFDL0YsUUFBTSxjQUFjLE1BQU0sTUFBTSxlQUFlLEVBQUU7QUFFakQsYUFBVyxRQUFRLE9BQU87QUFDekIsVUFBTSxZQUFZLGFBQWE7QUFBQTtBQUdoQyxTQUFPLE1BQU0sQ0FBQyxTQUFjO0FBQzNCLFVBQU0sTUFBTSxRQUFRLENBQUMsU0FBUztBQXZDaEM7QUF3Q0csVUFBSSxPQUFPLFlBQVksV0FBVyxLQUFLLE9BQU8sRUFBRSxNQUFNLFdBQUssU0FBTCxZQUFhO0FBR25FLGFBQU8sS0FBSyxRQUFRLHNCQUFzQjtBQUUxQyxhQUFPLEtBQUssUUFBUSw4Q0FBOEM7QUFHbEUsVUFBSSxTQUFTLE9BQU87QUFDbkIsZUFBTyxLQUFLLFFBQVEsaUJBQWlCO0FBQUEsaUJBQzNCLFNBQVMsTUFBTTtBQUN6QixlQUFPLEtBQUssUUFBUSxpQkFBaUI7QUFBQTtBQUd0QyxXQUFLLE9BQU87QUFDWixXQUFLLFFBQVE7QUFDYixXQUFLLFdBQVc7QUFBQTtBQUFBO0FBQUE7QUFLbkIsSUFBTyx1QkFBUTsiLAogICJuYW1lcyI6IFtdCn0K
35
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlbWFyay1zaGlraS50cyJdLAogICJtYXBwaW5ncyI6ICJBQUNBO0FBQ0E7QUFrQ0EsTUFBTSxtQkFBbUIsSUFBSTtBQUU3QixNQUFNLGNBQWMsT0FBTyxFQUFFLFFBQVEsSUFBSSxRQUFRLGVBQWUsT0FBTyxZQUF5QjtBQUMvRixRQUFNLFVBQWtCLE9BQU8sVUFBVSxXQUFXLFFBQVEsTUFBTTtBQUNsRSxNQUFJLGNBQWMsaUJBQWlCLElBQUk7QUFDdkMsTUFBSSxDQUFDLGFBQWE7QUFDakIsa0JBQWMsTUFBTSxlQUFlLEVBQUU7QUFDckMscUJBQWlCLElBQUksU0FBUztBQUFBO0FBRS9CLGFBQVcsUUFBUSxPQUFPO0FBQ3pCLFVBQU0sWUFBWSxhQUFhO0FBQUE7QUFFaEMsU0FBTyxNQUFNLENBQUMsU0FBYztBQUMzQixVQUFNLE1BQU0sUUFBUSxDQUFDLFNBQVM7QUFqRGhDO0FBa0RHLFVBQUksT0FBTyxZQUFhLFdBQVcsS0FBSyxPQUFPLEVBQUUsTUFBTSxXQUFLLFNBQUwsWUFBYTtBQUdwRSxhQUFPLEtBQUssUUFBUSxzQkFBc0I7QUFFMUMsYUFBTyxLQUFLLFFBQVEsOENBQThDO0FBR2xFLFVBQUksU0FBUyxPQUFPO0FBQ25CLGVBQU8sS0FBSyxRQUFRLGlCQUFpQjtBQUFBLGlCQUMzQixTQUFTLE1BQU07QUFDekIsZUFBTyxLQUFLLFFBQVEsaUJBQWlCO0FBQUE7QUFHdEMsV0FBSyxPQUFPO0FBQ1osV0FBSyxRQUFRO0FBQ2IsV0FBSyxXQUFXO0FBQUE7QUFBQTtBQUFBO0FBS25CLElBQU8sdUJBQVE7IiwKICAibmFtZXMiOiBbXQp9Cg==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@astrojs/markdown-remark",
3
- "version": "0.6.1",
3
+ "version": "0.6.4",
4
4
  "type": "module",
5
5
  "author": "withastro",
6
6
  "license": "MIT",
@@ -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['data-astro-raw'] = true;
7
+ el.properties['is:raw'] = true;
8
8
  }
9
9
  return el;
10
10
  });
@@ -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 data-astro-raw class="${classLanguage}">${html}</code></pre>`;
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);
@@ -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
- const remarkShiki = async ({ langs = [], theme = 'github-dark', wrap = false }: ShikiConfig) => {
33
- const highlighter = await shiki.getHighlighter({ theme });
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.codeToHtml(node.value, { lang: node.lang ?? 'plaintext' });
51
+ let html = highlighter!.codeToHtml(node.value, { lang: node.lang ?? 'plaintext' });
42
52
 
43
- // Replace "shiki" class naming with "astro" and add "data-astro-raw".
44
- html = html.replace('<pre class="shiki"', '<pre data-astro-raw class="astro-code"');
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