@astrojs/markdown-remark 0.5.0 → 0.6.1-next.2

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,38 @@
1
1
  # @astrojs/markdown-remark
2
2
 
3
+ ## 0.6.1-next.2
4
+
5
+ ### Patch Changes
6
+
7
+ - [#2564](https://github.com/withastro/astro/pull/2564) [`d71c4620`](https://github.com/withastro/astro/commit/d71c46207af40de6811596ca4f5e10aa9006377b) Thanks [@JuanM04](https://github.com/JuanM04)! - Fixed curly braces inside Shiki codeblocks
8
+
9
+ ## 0.6.1-next.1
10
+
11
+ ### Patch Changes
12
+
13
+ - [#2534](https://github.com/withastro/astro/pull/2534) [`cfeaa941`](https://github.com/withastro/astro/commit/cfeaa9414acdecec6f5d66ee0e33fe4fde574eee) Thanks [@JuanM04](https://github.com/JuanM04)! - Now you can use local plugins by passing a function instead of an `import`
14
+
15
+ * [#2518](https://github.com/withastro/astro/pull/2518) [`2bc91543`](https://github.com/withastro/astro/commit/2bc91543ceeb5f3dd45e201bf75d79f186e85141) Thanks [@JuanM04](https://github.com/JuanM04)! - Added the ability to use custom themes and langs with Shiki (`<Code />` and `@astrojs/markdown-remark`)
16
+
17
+ - [#2518](https://github.com/withastro/astro/pull/2518) [`2bc91543`](https://github.com/withastro/astro/commit/2bc91543ceeb5f3dd45e201bf75d79f186e85141) Thanks [@JuanM04](https://github.com/JuanM04)! - Added `wrap` to Shiki config
18
+
19
+ ## 0.6.1-next.0
20
+
21
+ ### Patch Changes
22
+
23
+ - [#2497](https://github.com/withastro/astro/pull/2497) [`6fe1b027`](https://github.com/withastro/astro/commit/6fe1b0279fce5a7a0e90ff79746ea0b641da3e21) Thanks [@JuanM04](https://github.com/JuanM04)! - Add Shiki as an alternative to Prism
24
+
25
+ ## 0.6.0
26
+
27
+ ### Minor Changes
28
+
29
+ - [#2202](https://github.com/withastro/astro/pull/2202) [`45cea6ae`](https://github.com/withastro/astro/commit/45cea6aec5a310fed4cb8da0d96670d6b99a2539) Thanks [@jonathantneal](https://github.com/jonathantneal)! - Officially drop support for Node v12. The minimum supported version is now Node v14.15+,
30
+
31
+ ### Patch Changes
32
+
33
+ - Updated dependencies [[`45cea6ae`](https://github.com/withastro/astro/commit/45cea6aec5a310fed4cb8da0d96670d6b99a2539)]:
34
+ - @astrojs/prism@0.4.0
35
+
3
36
  ## 0.5.0
4
37
 
5
38
  ### Minor Changes
@@ -94,10 +127,10 @@
94
127
 
95
128
  ```js
96
129
  export default {
97
- markdownOptions: {
98
- remarkPlugins: ['remark-slug', ['remark-autolink-headings', { behavior: 'prepend' }]],
99
- rehypePlugins: ['rehype-slug', ['rehype-autolink-headings', { behavior: 'prepend' }]],
100
- },
130
+ markdownOptions: {
131
+ remarkPlugins: ['remark-slug', ['remark-autolink-headings', { behavior: 'prepend' }]],
132
+ rehypePlugins: ['rehype-slug', ['rehype-autolink-headings', { behavior: 'prepend' }]],
133
+ },
101
134
  };
102
135
  ```
103
136
 
package/dist/index.js CHANGED
@@ -26,6 +26,7 @@ import { remarkJsx, loadRemarkJsx } from "./remark-jsx.js";
26
26
  import rehypeJsx from "./rehype-jsx.js";
27
27
  import rehypeEscape from "./rehype-escape.js";
28
28
  import remarkPrism from "./remark-prism.js";
29
+ import remarkShiki from "./remark-shiki.js";
29
30
  import remarkUnwrap from "./remark-unwrap.js";
30
31
  import { loadPlugins } from "./load-plugins.js";
31
32
  import { unified } from "unified";
@@ -42,10 +43,12 @@ async function renderMarkdownWithFrontmatter(contents, opts) {
42
43
  const DEFAULT_REMARK_PLUGINS = ["remark-gfm", "remark-smartypants"];
43
44
  const DEFAULT_REHYPE_PLUGINS = ["rehype-slug"];
44
45
  async function renderMarkdown(content, opts) {
45
- var _a, _b;
46
+ var _a, _b, _c, _d;
46
47
  let { remarkPlugins = [], rehypePlugins = [] } = opts != null ? opts : {};
47
48
  const scopedClassName = (_a = opts == null ? void 0 : opts.$) == null ? void 0 : _a.scopedClassName;
48
49
  const mode = (_b = opts == null ? void 0 : opts.mode) != null ? _b : "mdx";
50
+ const syntaxHighlight = (_c = opts == null ? void 0 : opts.syntaxHighlight) != null ? _c : "prism";
51
+ const shikiConfig = (_d = opts == null ? void 0 : opts.shikiConfig) != null ? _d : {};
49
52
  const isMDX = mode === "mdx";
50
53
  const { headers, rehypeCollectHeaders } = createCollectHeaders();
51
54
  await Promise.all([loadRemarkExpressions(), loadRemarkJsx()]);
@@ -62,7 +65,11 @@ async function renderMarkdown(content, opts) {
62
65
  if (scopedClassName) {
63
66
  parser.use([scopedStyles(scopedClassName)]);
64
67
  }
65
- parser.use([remarkPrism(scopedClassName)]);
68
+ if (syntaxHighlight === "prism") {
69
+ parser.use([remarkPrism(scopedClassName)]);
70
+ } else if (syntaxHighlight === "shiki") {
71
+ parser.use([await remarkShiki(shikiConfig)]);
72
+ }
66
73
  parser.use([[markdownToHtml, { allowDangerousHtml: true, passThrough: ["raw", "mdxTextExpression", "mdxJsxTextElement", "mdxJsxFlowElement"] }]]);
67
74
  loadedRehypePlugins.forEach(([plugin, opts2]) => {
68
75
  parser.use([[plugin, opts2]]);
@@ -89,4 +96,4 @@ export {
89
96
  renderMarkdown,
90
97
  renderMarkdownWithFrontmatter
91
98
  };
92
- //# sourceMappingURL=data:application/json;base64,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
99
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBLDZDQUFvRCxVQUFrQixNQUF3QztBQUM3RyxRQUFNLEVBQUUsTUFBTSxhQUFhLFlBQVksT0FBTztBQUM5QyxRQUFNLFFBQVEsTUFBTSxlQUFlLFNBQVM7QUFDNUMsU0FBTyxpQ0FBSyxRQUFMLEVBQVk7QUFBQTtBQUdiLE1BQU0seUJBQXlCLENBQUMsY0FBYztBQUU5QyxNQUFNLHlCQUF5QixDQUFDO0FBR3ZDLDhCQUFxQyxTQUFpQixNQUF3QztBQXBDOUY7QUFxQ0MsTUFBSSxFQUFFLGdCQUFnQixJQUFJLGdCQUFnQixPQUFPLHNCQUFRO0FBQ3pELFFBQU0sa0JBQWtCLG1DQUFNLE1BQU4sbUJBQVM7QUFDakMsUUFBTSxPQUFPLG1DQUFNLFNBQU4sWUFBYztBQUMzQixRQUFNLGtCQUFrQixtQ0FBTSxvQkFBTixZQUF5QjtBQUNqRCxRQUFNLGNBQWMsbUNBQU0sZ0JBQU4sWUFBcUI7QUFDekMsUUFBTSxRQUFRLFNBQVM7QUFDdkIsUUFBTSxFQUFFLFNBQVMseUJBQXlCO0FBRTFDLFFBQU0sUUFBUSxJQUFJLENBQUMseUJBQXlCO0FBRTVDLE1BQUksU0FBUyxVQUNYLElBQUksVUFDSixJQUFJLFFBQVEsQ0FBQyxhQUFhLElBQzFCLElBQUksUUFBUSxDQUFDLHFCQUFxQixJQUNsQyxJQUFJLENBQUM7QUFFUCxNQUFJLGNBQWMsV0FBVyxLQUFLLGNBQWMsV0FBVyxHQUFHO0FBQzdELG9CQUFnQixDQUFDLEdBQUc7QUFDcEIsb0JBQWdCLENBQUMsR0FBRztBQUFBO0FBR3JCLFFBQU0sc0JBQXNCLE1BQU0sUUFBUSxJQUFJLFlBQVk7QUFDMUQsUUFBTSxzQkFBc0IsTUFBTSxRQUFRLElBQUksWUFBWTtBQUUxRCxzQkFBb0IsUUFBUSxDQUFDLENBQUMsUUFBUSxXQUFVO0FBQy9DLFdBQU8sSUFBSSxDQUFDLENBQUMsUUFBUTtBQUFBO0FBR3RCLE1BQUksaUJBQWlCO0FBQ3BCLFdBQU8sSUFBSSxDQUFDLGFBQWE7QUFBQTtBQUcxQixNQUFJLG9CQUFvQixTQUFTO0FBQ2hDLFdBQU8sSUFBSSxDQUFDLFlBQVk7QUFBQSxhQUNkLG9CQUFvQixTQUFTO0FBQ3ZDLFdBQU8sSUFBSSxDQUFDLE1BQU0sWUFBWTtBQUFBO0FBRy9CLFNBQU8sSUFBSSxDQUFDLENBQUMsZ0JBQXVCLEVBQUUsb0JBQW9CLE1BQU0sYUFBYSxDQUFDLE9BQU8scUJBQXFCLHFCQUFxQjtBQUUvSCxzQkFBb0IsUUFBUSxDQUFDLENBQUMsUUFBUSxXQUFVO0FBQy9DLFdBQU8sSUFBSSxDQUFDLENBQUMsUUFBUTtBQUFBO0FBR3RCLFNBQ0UsSUFBSSxRQUFRLENBQUMsYUFBYSxJQUMxQixJQUFJLFFBQVEsQ0FBQyxxQkFBcUIsSUFDbEMsSUFBSSxRQUFRLEtBQUssQ0FBQyxZQUNsQixJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsSUFDN0IsSUFBSTtBQUVOLE1BQUk7QUFDSixNQUFJO0FBQ0gsVUFBTSxRQUFRLE1BQU0sT0FBTyxJQUFJLENBQUMsdUJBQXVCLElBQUksaUJBQWlCLEVBQUUsb0JBQW9CLFFBQVEsUUFBUTtBQUNsSCxhQUFTLE1BQU07QUFBQSxXQUNQLEtBQVA7QUFDRCxZQUFRLE1BQU07QUFDZCxVQUFNO0FBQUE7QUFHUCxTQUFPO0FBQUEsSUFDTixVQUFVLEVBQUUsU0FBUyxRQUFRLFNBQVMsTUFBTSxPQUFPO0FBQUEsSUFDbkQsTUFBTSxPQUFPO0FBQUE7QUFBQTtBQUlmLElBQU8sY0FBUTsiLAogICJuYW1lcyI6IFtdCn0K
@@ -1,3 +1,3 @@
1
1
  import * as unified from 'unified';
2
2
  import type { Plugin } from './types';
3
- export declare function loadPlugins(items: Plugin[]): Promise<[unified.Plugin] | [unified.Plugin, any]>[];
3
+ export declare function loadPlugins(items: Plugin[]): Promise<[unified.Plugin, any?]>[];
@@ -1,21 +1,22 @@
1
1
  async function importPlugin(p) {
2
2
  if (typeof p === "string") {
3
- return await import(p);
3
+ const importResult = await import(p);
4
+ return importResult.default;
4
5
  }
5
- return await p;
6
+ return p;
6
7
  }
7
8
  function loadPlugins(items) {
8
9
  return items.map((p) => {
9
10
  return new Promise((resolve, reject) => {
10
11
  if (Array.isArray(p)) {
11
12
  const [plugin, opts] = p;
12
- return importPlugin(plugin).then((m) => resolve([m.default, opts])).catch((e) => reject(e));
13
+ return importPlugin(plugin).then((m) => resolve([m, opts])).catch((e) => reject(e));
13
14
  }
14
- return importPlugin(p).then((m) => resolve([m.default])).catch((e) => reject(e));
15
+ return importPlugin(p).then((m) => resolve([m])).catch((e) => reject(e));
15
16
  });
16
17
  });
17
18
  }
18
19
  export {
19
20
  loadPlugins
20
21
  };
21
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2xvYWQtcGx1Z2lucy50cyJdLAogICJtYXBwaW5ncyI6ICJBQUdBLDRCQUE0QixHQUFzRDtBQUNoRixNQUFJLE9BQU8sTUFBTSxVQUFVO0FBQ3pCLFdBQU8sTUFBTSxPQUFPO0FBQUE7QUFHdEIsU0FBTyxNQUFNO0FBQUE7QUFHUixxQkFBcUIsT0FBc0U7QUFDaEcsU0FBTyxNQUFNLElBQUksQ0FBQyxNQUFNO0FBQ3RCLFdBQU8sSUFBSSxRQUFRLENBQUMsU0FBUyxXQUFXO0FBQ3RDLFVBQUksTUFBTSxRQUFRLElBQUk7QUFDcEIsY0FBTSxDQUFDLFFBQVEsUUFBUTtBQUN2QixlQUFPLGFBQWEsUUFDakIsS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDLEVBQUUsU0FBUyxRQUNoQyxNQUFNLENBQUMsTUFBTSxPQUFPO0FBQUE7QUFHekIsYUFBTyxhQUFhLEdBQ2pCLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQyxFQUFFLFdBQ3ZCLE1BQU0sQ0FBQyxNQUFNLE9BQU87QUFBQTtBQUFBO0FBQUE7IiwKICAibmFtZXMiOiBbXQp9Cg==
22
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2xvYWQtcGx1Z2lucy50cyJdLAogICJtYXBwaW5ncyI6ICJBQUdBLDRCQUE0QixHQUFxRDtBQUNoRixNQUFJLE9BQU8sTUFBTSxVQUFVO0FBQzFCLFVBQU0sZUFBZSxNQUFNLE9BQU87QUFDbEMsV0FBTyxhQUFhO0FBQUE7QUFHckIsU0FBTztBQUFBO0FBR0QscUJBQXFCLE9BQW9EO0FBQy9FLFNBQU8sTUFBTSxJQUFJLENBQUMsTUFBTTtBQUN2QixXQUFPLElBQUksUUFBUSxDQUFDLFNBQVMsV0FBVztBQUN2QyxVQUFJLE1BQU0sUUFBUSxJQUFJO0FBQ3JCLGNBQU0sQ0FBQyxRQUFRLFFBQVE7QUFDdkIsZUFBTyxhQUFhLFFBQ2xCLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQyxHQUFHLFFBQ3hCLE1BQU0sQ0FBQyxNQUFNLE9BQU87QUFBQTtBQUd2QixhQUFPLGFBQWEsR0FDbEIsS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDLEtBQ3JCLE1BQU0sQ0FBQyxNQUFNLE9BQU87QUFBQTtBQUFBO0FBQUE7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -34,4 +34,4 @@ function createCollectHeaders() {
34
34
  export {
35
35
  createCollectHeaders as default
36
36
  };
37
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlaHlwZS1jb2xsZWN0LWhlYWRlcnMudHMiXSwKICAibWFwcGluZ3MiOiAiQUFBQTtBQUVBO0FBR2UsZ0NBQWdDO0FBQzdDLFFBQU0sVUFBaUI7QUFFdkIsa0NBQWdDO0FBQzlCLFdBQU8sU0FBVSxNQUFZO0FBQzNCLFlBQU0sTUFBTSxDQUFDLFNBQVM7QUFWNUI7QUFXUSxZQUFJLEtBQUssU0FBUztBQUFXO0FBQzdCLGNBQU0sRUFBRSxZQUFZO0FBQ3BCLFlBQUksUUFBUSxPQUFPO0FBQUs7QUFDeEIsY0FBTSxDQUFDLEdBQUcsU0FBUyxjQUFRLE1BQU0sZ0JBQWQsWUFBNkI7QUFDaEQsWUFBSSxDQUFDO0FBQU87QUFDWixjQUFNLFFBQVEsT0FBTyxTQUFTO0FBRTlCLFlBQUksT0FBTztBQUVYLGNBQU0sTUFBTSxRQUFRLENBQUMsVUFBVTtBQUM3QixrQkFBUSxNQUFNO0FBQUE7QUFHaEIsWUFBSSxPQUFPLG9DQUFNLGVBQU4sbUJBQWtCLE9BQU0sUUFBUSxLQUFLO0FBRWhELGFBQUssYUFBYSxLQUFLLGNBQWM7QUFDckMsYUFBSyxXQUFXLEtBQUs7QUFDckIsZ0JBQVEsS0FBSyxFQUFFLE9BQU8sTUFBTTtBQUFBO0FBQUE7QUFBQTtBQUtsQyxTQUFPO0FBQUEsSUFDTDtBQUFBLElBQ0E7QUFBQTtBQUFBOyIsCiAgIm5hbWVzIjogW10KfQo=
37
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlaHlwZS1jb2xsZWN0LWhlYWRlcnMudHMiXSwKICAibWFwcGluZ3MiOiAiQUFBQTtBQUVBO0FBR2UsZ0NBQWdDO0FBQzlDLFFBQU0sVUFBaUI7QUFFdkIsa0NBQWdDO0FBQy9CLFdBQU8sU0FBVSxNQUFZO0FBQzVCLFlBQU0sTUFBTSxDQUFDLFNBQVM7QUFWekI7QUFXSSxZQUFJLEtBQUssU0FBUztBQUFXO0FBQzdCLGNBQU0sRUFBRSxZQUFZO0FBQ3BCLFlBQUksUUFBUSxPQUFPO0FBQUs7QUFDeEIsY0FBTSxDQUFDLEdBQUcsU0FBUyxjQUFRLE1BQU0sZ0JBQWQsWUFBNkI7QUFDaEQsWUFBSSxDQUFDO0FBQU87QUFDWixjQUFNLFFBQVEsT0FBTyxTQUFTO0FBRTlCLFlBQUksT0FBTztBQUVYLGNBQU0sTUFBTSxRQUFRLENBQUMsVUFBVTtBQUM5QixrQkFBUSxNQUFNO0FBQUE7QUFHZixZQUFJLE9BQU8sb0NBQU0sZUFBTixtQkFBa0IsT0FBTSxRQUFRLEtBQUs7QUFFaEQsYUFBSyxhQUFhLEtBQUssY0FBYztBQUNyQyxhQUFLLFdBQVcsS0FBSztBQUNyQixnQkFBUSxLQUFLLEVBQUUsT0FBTyxNQUFNO0FBQUE7QUFBQTtBQUFBO0FBSy9CLFNBQU87QUFBQSxJQUNOO0FBQUEsSUFDQTtBQUFBO0FBQUE7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -12,4 +12,4 @@ function rehypeEscape() {
12
12
  export {
13
13
  rehypeEscape as default
14
14
  };
15
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlaHlwZS1lc2NhcGUudHMiXSwKICAibWFwcGluZ3MiOiAiQUFBQTtBQUVlLHdCQUE2QjtBQUMxQyxTQUFPLFNBQVUsTUFBZ0I7QUFDL0IsV0FBTyxNQUFNLE1BQU0sV0FBVyxDQUFDLE9BQU87QUFDcEMsVUFBSSxHQUFHLFlBQVksVUFBVSxHQUFHLFlBQVksT0FBTztBQUNqRCxXQUFHLFdBQVcsb0JBQW9CO0FBQUE7QUFFcEMsYUFBTztBQUFBO0FBQUE7QUFBQTsiLAogICJuYW1lcyI6IFtdCn0K
15
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlaHlwZS1lc2NhcGUudHMiXSwKICAibWFwcGluZ3MiOiAiQUFBQTtBQUVlLHdCQUE2QjtBQUMzQyxTQUFPLFNBQVUsTUFBZ0I7QUFDaEMsV0FBTyxNQUFNLE1BQU0sV0FBVyxDQUFDLE9BQU87QUFDckMsVUFBSSxHQUFHLFlBQVksVUFBVSxHQUFHLFlBQVksT0FBTztBQUNsRCxXQUFHLFdBQVcsb0JBQW9CO0FBQUE7QUFFbkMsYUFBTztBQUFBO0FBQUE7QUFBQTsiLAogICJuYW1lcyI6IFtdCn0K
@@ -12,4 +12,4 @@ function rehypeExpressions() {
12
12
  export {
13
13
  rehypeExpressions as default
14
14
  };
15
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlaHlwZS1leHByZXNzaW9ucy50cyJdLAogICJtYXBwaW5ncyI6ICJBQUFBO0FBRWUsNkJBQWtDO0FBQy9DLFNBQU8sU0FBVSxNQUFnQjtBQUMvQixXQUFPLElBQUksTUFBTSxDQUFDLFVBQVU7QUFDMUIsVUFBSSxNQUFNLFNBQVMscUJBQXFCO0FBQ3RDLGVBQU8sRUFBRSxNQUFNLFFBQVEsT0FBTyxJQUFLLE1BQWM7QUFBQTtBQUVuRCxhQUFPO0FBQUE7QUFBQTtBQUFBOyIsCiAgIm5hbWVzIjogW10KfQo=
15
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlaHlwZS1leHByZXNzaW9ucy50cyJdLAogICJtYXBwaW5ncyI6ICJBQUFBO0FBRWUsNkJBQWtDO0FBQ2hELFNBQU8sU0FBVSxNQUFnQjtBQUNoQyxXQUFPLElBQUksTUFBTSxDQUFDLFVBQVU7QUFDM0IsVUFBSSxNQUFNLFNBQVMscUJBQXFCO0FBQ3ZDLGVBQU8sRUFBRSxNQUFNLFFBQVEsT0FBTyxJQUFLLE1BQWM7QUFBQTtBQUVsRCxhQUFPO0FBQUE7QUFBQTtBQUFBOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -17,7 +17,8 @@ var __spreadValues = (a, b) => {
17
17
  return a;
18
18
  };
19
19
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
- import { SKIP, visit } from "unist-util-visit";
20
+ import { SKIP, visit as _visit } from "unist-util-visit";
21
+ const visit = _visit;
21
22
  function rehypeIslands() {
22
23
  return function(node) {
23
24
  return visit(node, "element", (el) => {
@@ -39,4 +40,4 @@ function rehypeIslands() {
39
40
  export {
40
41
  rehypeIslands as default
41
42
  };
42
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlaHlwZS1pc2xhbmRzLnRzIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBTWUseUJBQThCO0FBQzNDLFNBQU8sU0FBVSxNQUFnQjtBQUMvQixXQUFPLE1BQU0sTUFBTSxXQUFXLENBQUMsT0FBTztBQUVwQyxVQUFJLEdBQUcsV0FBVyxjQUFjO0FBQzlCLGNBQU0sSUFBSSxRQUFRLENBQUMsT0FBTyxPQUFPLFdBQVc7QUFDMUMsY0FBSSxNQUFNLFNBQVMsUUFBUTtBQUd6QixnQkFBSSxVQUFVLE1BQU0sTUFBTSxRQUFRLFVBQVUsTUFBTSxTQUFTLE1BQU07QUFDL0QscUJBQU8sU0FBUyxPQUFPLE9BQU8sR0FBRyxpQ0FBSyxRQUFMLEVBQVksTUFBTSxXQUFXLE9BQU8sTUFBTSxNQUFNLFFBQVEsUUFBUSxJQUFJLFFBQVEsT0FBTyxJQUFJO0FBQ3hILHFCQUFPLENBQUMsTUFBTTtBQUFBO0FBTWhCLGtCQUFNLFFBQVEsTUFBTSxNQUFNLFFBQVEsUUFBUTtBQUMxQyxtQkFBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTsiLAogICJuYW1lcyI6IFtdCn0K
43
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlaHlwZS1pc2xhbmRzLnRzIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBSUEsTUFBTSxRQUFRO0FBTUMseUJBQThCO0FBQzVDLFNBQU8sU0FBVSxNQUFnQjtBQUNoQyxXQUFPLE1BQU0sTUFBTSxXQUFXLENBQUMsT0FBTztBQUVyQyxVQUFJLEdBQUcsV0FBVyxjQUFjO0FBQy9CLGNBQU0sSUFBSSxRQUFRLENBQUMsT0FBTyxPQUFPLFdBQVc7QUFDM0MsY0FBSSxNQUFNLFNBQVMsUUFBUTtBQUcxQixnQkFBSSxVQUFVLE1BQU0sTUFBTSxRQUFRLFVBQVUsTUFBTSxTQUFTLE1BQU07QUFDaEUscUJBQU8sU0FBUyxPQUFPLE9BQU8sR0FBRyxpQ0FBSyxRQUFMLEVBQVksTUFBTSxXQUFXLE9BQU8sTUFBTSxNQUFNLFFBQVEsUUFBUSxJQUFJLFFBQVEsT0FBTyxJQUFJO0FBQ3hILHFCQUFPLENBQUMsTUFBTTtBQUFBO0FBTWYsa0JBQU0sUUFBUSxNQUFNLE1BQU0sUUFBUSxRQUFRO0FBQzFDLG1CQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -47,4 +47,4 @@ function rehypeJsx() {
47
47
  export {
48
48
  rehypeJsx as default
49
49
  };
50
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlaHlwZS1qc3gudHMiXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFFQSxNQUFNLGVBQWUsSUFBSSxJQUFJLENBQUMscUJBQXFCO0FBQ3BDLHFCQUEwQjtBQUN2QyxTQUFPLFNBQVUsTUFBZ0I7QUFDL0IsV0FBTyxJQUFJLE1BQU0sQ0FBQyxVQUFlO0FBQy9CLFVBQUksTUFBTSxTQUFTLFdBQVc7QUFDNUIsZUFBTyxpQ0FBSyxRQUFMLEVBQVksU0FBUyxHQUFHLE1BQU07QUFBQTtBQUV2QyxVQUFJLGFBQWEsSUFBSSxNQUFNLE9BQU87QUFDaEMsZUFBTyxpQ0FDRixRQURFO0FBQUEsVUFFTCxNQUFNO0FBQUEsVUFDTixTQUFTLEdBQUcsTUFBTTtBQUFBLFVBQ2xCLFlBQVksTUFBTSxXQUFXLE9BQU8sQ0FBQyxLQUFZLFVBQWU7QUFDOUQsZ0JBQUksT0FBTyxNQUFNO0FBQ2pCLGdCQUFJLFFBQVEsT0FBTyxTQUFTLFVBQVU7QUFDcEMscUJBQU8sSUFBSSxLQUFLO0FBQUEsdUJBQ1AsU0FBUyxNQUFNO0FBQ3hCLHFCQUFPO0FBQUE7QUFFVCxtQkFBTyxPQUFPLE9BQU8sS0FBSyxHQUFHLE1BQU0sT0FBTztBQUFBLGFBQ3pDO0FBQUE7QUFBQTtBQUdQLGFBQU87QUFBQTtBQUFBO0FBQUE7IiwKICAibmFtZXMiOiBbXQp9Cg==
50
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlaHlwZS1qc3gudHMiXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFFQSxNQUFNLGVBQWUsSUFBSSxJQUFJLENBQUMscUJBQXFCO0FBQ3BDLHFCQUEwQjtBQUN4QyxTQUFPLFNBQVUsTUFBZ0I7QUFDaEMsV0FBTyxJQUFJLE1BQU0sQ0FBQyxVQUFlO0FBQ2hDLFVBQUksTUFBTSxTQUFTLFdBQVc7QUFDN0IsZUFBTyxpQ0FBSyxRQUFMLEVBQVksU0FBUyxHQUFHLE1BQU07QUFBQTtBQUV0QyxVQUFJLGFBQWEsSUFBSSxNQUFNLE9BQU87QUFDakMsZUFBTyxpQ0FDSCxRQURHO0FBQUEsVUFFTixNQUFNO0FBQUEsVUFDTixTQUFTLEdBQUcsTUFBTTtBQUFBLFVBQ2xCLFlBQVksTUFBTSxXQUFXLE9BQU8sQ0FBQyxLQUFZLFVBQWU7QUFDL0QsZ0JBQUksT0FBTyxNQUFNO0FBQ2pCLGdCQUFJLFFBQVEsT0FBTyxTQUFTLFVBQVU7QUFDckMscUJBQU8sSUFBSSxLQUFLO0FBQUEsdUJBQ04sU0FBUyxNQUFNO0FBQ3pCLHFCQUFPO0FBQUE7QUFFUixtQkFBTyxPQUFPLE9BQU8sS0FBSyxHQUFHLE1BQU0sT0FBTztBQUFBLGFBQ3hDO0FBQUE7QUFBQTtBQUdMLGFBQU87QUFBQTtBQUFBO0FBQUE7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -29,4 +29,4 @@ export {
29
29
  loadRemarkExpressions,
30
30
  remarkExpressions
31
31
  };
32
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlbWFyay1leHByZXNzaW9ucy50cyJdLAogICJtYXBwaW5ncyI6ICJBQUNBLElBQUk7QUFDSixJQUFJO0FBQ0osSUFBSTtBQUVHLDJCQUFzQyxTQUFjO0FBQ3pELE1BQUksV0FBVyxXQUFXO0FBQzFCLE1BQUksT0FBTyxLQUFLO0FBRWhCLE1BQUksdUJBQXVCLGNBQWM7QUFDekMsTUFBSSwwQkFBMEI7QUFDOUIsTUFBSSx3QkFBd0I7QUFFNUIsZUFBYSxPQUFZLE9BQVk7QUFFbkMsUUFBSSxLQUFLO0FBQVEsV0FBSyxPQUFPLEtBQUs7QUFBQTtBQUM3QixXQUFLLFNBQVMsQ0FBQztBQUFBO0FBQUE7QUFJeEIsdUNBQThDO0FBQzVDLE1BQUksQ0FBQyxlQUFlO0FBQ2xCLFVBQU0seUJBQXlCLE1BQU0sT0FBTztBQUM1QyxvQkFBZ0IsdUJBQXVCO0FBQUE7QUFFekMsTUFBSSxDQUFDLDZCQUE2QixDQUFDLHlCQUF5QjtBQUMxRCxVQUFNLHlCQUF5QixNQUFNLE9BQU87QUFDNUMsZ0NBQTRCLHVCQUF1QjtBQUNuRCw4QkFBMEIsdUJBQXVCO0FBQUE7QUFBQTsiLAogICJuYW1lcyI6IFtdCn0K
32
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlbWFyay1leHByZXNzaW9ucy50cyJdLAogICJtYXBwaW5ncyI6ICJBQUNBLElBQUk7QUFDSixJQUFJO0FBQ0osSUFBSTtBQUVHLDJCQUFzQyxTQUFjO0FBQzFELE1BQUksV0FBVyxXQUFXO0FBQzFCLE1BQUksT0FBTyxLQUFLO0FBRWhCLE1BQUksdUJBQXVCLGNBQWM7QUFDekMsTUFBSSwwQkFBMEI7QUFDOUIsTUFBSSx3QkFBd0I7QUFFNUIsZUFBYSxPQUFZLE9BQVk7QUFFcEMsUUFBSSxLQUFLO0FBQVEsV0FBSyxPQUFPLEtBQUs7QUFBQTtBQUM3QixXQUFLLFNBQVMsQ0FBQztBQUFBO0FBQUE7QUFJdEIsdUNBQThDO0FBQzdDLE1BQUksQ0FBQyxlQUFlO0FBQ25CLFVBQU0seUJBQXlCLE1BQU0sT0FBTztBQUM1QyxvQkFBZ0IsdUJBQXVCO0FBQUE7QUFFeEMsTUFBSSxDQUFDLDZCQUE2QixDQUFDLHlCQUF5QjtBQUMzRCxVQUFNLHlCQUF5QixNQUFNLE9BQU87QUFDNUMsZ0NBQTRCLHVCQUF1QjtBQUNuRCw4QkFBMEIsdUJBQXVCO0FBQUE7QUFBQTsiLAogICJuYW1lcyI6IFtdCn0K
@@ -28,4 +28,4 @@ export {
28
28
  loadRemarkJsx,
29
29
  remarkJsx
30
30
  };
31
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlbWFyay1qc3gudHMiXSwKICAibWFwcGluZ3MiOiAiQUFDQSxJQUFJO0FBQ0osSUFBSTtBQUNKLElBQUk7QUFFRyxtQkFBOEIsU0FBYztBQUNqRCxNQUFJLFdBQVcsV0FBVztBQUMxQixNQUFJLE9BQU8sS0FBSztBQUdoQixNQUFJLDBCQUEwQjtBQUM5QixNQUFJLHdCQUF3QjtBQUU1QixlQUFhLE9BQVksT0FBWTtBQUVuQyxRQUFJLEtBQUs7QUFBUSxXQUFLLE9BQU8sS0FBSztBQUFBO0FBQzdCLFdBQUssU0FBUyxDQUFDO0FBQUE7QUFBQTtBQUl4QiwrQkFBc0M7QUFDcEMsTUFBSSxDQUFDLFFBQVE7QUFDWCxVQUFNLGtCQUFrQixNQUFNLE9BQU87QUFDckMsYUFBUyxnQkFBZ0I7QUFBQTtBQUUzQixNQUFJLENBQUMsc0JBQXNCLENBQUMsa0JBQWtCO0FBQzVDLFVBQU0sa0JBQWtCLE1BQU0sT0FBTztBQUNyQyx5QkFBcUIsZ0JBQWdCO0FBQ3JDLHVCQUFtQixnQkFBZ0I7QUFBQTtBQUFBOyIsCiAgIm5hbWVzIjogW10KfQo=
31
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlbWFyay1qc3gudHMiXSwKICAibWFwcGluZ3MiOiAiQUFDQSxJQUFJO0FBQ0osSUFBSTtBQUNKLElBQUk7QUFFRyxtQkFBOEIsU0FBYztBQUNsRCxNQUFJLFdBQVcsV0FBVztBQUMxQixNQUFJLE9BQU8sS0FBSztBQUdoQixNQUFJLDBCQUEwQjtBQUM5QixNQUFJLHdCQUF3QjtBQUU1QixlQUFhLE9BQVksT0FBWTtBQUVwQyxRQUFJLEtBQUs7QUFBUSxXQUFLLE9BQU8sS0FBSztBQUFBO0FBQzdCLFdBQUssU0FBUyxDQUFDO0FBQUE7QUFBQTtBQUl0QiwrQkFBc0M7QUFDckMsTUFBSSxDQUFDLFFBQVE7QUFDWixVQUFNLGtCQUFrQixNQUFNLE9BQU87QUFDckMsYUFBUyxnQkFBZ0I7QUFBQTtBQUUxQixNQUFJLENBQUMsc0JBQXNCLENBQUMsa0JBQWtCO0FBQzdDLFVBQU0sa0JBQWtCLE1BQU0sT0FBTztBQUNyQyx5QkFBcUIsZ0JBQWdCO0FBQ3JDLHVCQUFtQixnQkFBZ0I7QUFBQTtBQUFBOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -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,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlbWFyay1wcmlzbS50cyJdLAogICJtYXBwaW5ncyI6ICJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxVQUFVLElBQUksSUFBSSxDQUFDLFFBQVEsUUFBUTtBQUV6QyxNQUFNLGNBQWMsSUFBSSxJQUFJLENBQUMsQ0FBQyxNQUFNO0FBRXBDLHdCQUF3QixNQUFjLE1BQWM7QUFDbEQsTUFBSSxnQkFBZ0IsWUFBWTtBQUVoQyxNQUFJLFFBQVEsTUFBTTtBQUNoQixXQUFPO0FBQUE7QUFHVCxRQUFNLGVBQWUsQ0FBQyxVQUFpQjtBQUNyQyxRQUFJLFNBQVEsQ0FBQyxNQUFNLFVBQVUsUUFBTztBQUNsQyxvQkFBYyxDQUFDO0FBQUE7QUFBQTtBQUluQixNQUFJLFlBQVksSUFBSSxPQUFPO0FBQ3pCLGlCQUFhLFlBQVksSUFBSTtBQUFBLGFBQ3BCLFNBQVMsU0FBUztBQUMzQixpQkFBYTtBQUNiLGFBQVM7QUFBQSxTQUNKO0FBQ0wsaUJBQWE7QUFDYixpQkFBYTtBQUFBO0FBR2YsTUFBSSxRQUFRLENBQUMsTUFBTSxVQUFVLE9BQU87QUFDbEMsWUFBUSxLQUFLLGdDQUFnQztBQUFBO0FBRy9DLFFBQU0sVUFBVSxNQUFNLFVBQVU7QUFDaEMsTUFBSSxPQUFPO0FBQ1gsTUFBSSxTQUFTO0FBQ1gsV0FBTyxNQUFNLFVBQVUsTUFBTSxTQUFTO0FBQUE7QUFHeEMsU0FBTyxFQUFFLGVBQWU7QUFBQTtBQU0xQixxQkFBcUIsV0FBd0I7QUFDM0MsU0FBTyxTQUFVLE1BQVc7QUFDMUIsVUFBTSxVQUFVLENBQUMsU0FBYztBQUM3QixVQUFJLEVBQUUsTUFBTSxVQUFVO0FBQ3RCLFdBQUssT0FBTztBQUVaLFVBQUksRUFBRSxNQUFNLGtCQUFrQixlQUFlLE1BQU07QUFDbkQsVUFBSSxVQUFVLENBQUM7QUFDZixVQUFJLFdBQVc7QUFDYixnQkFBUSxLQUFLO0FBQUE7QUFFZixXQUFLLFFBQVEsZUFBZSxRQUFRLEtBQUsscUNBQXFDLGtCQUFrQjtBQUNoRyxhQUFPO0FBQUE7QUFFVCxXQUFPLE1BQU0sTUFBTSxRQUFRO0FBQUE7QUFBQTtBQUkvQixnQkFBZ0IsV0FBd0I7QUFDdEMsU0FBTyxZQUFZLEtBQUssTUFBTTtBQUFBO0FBR2hDLElBQU8sdUJBQVE7IiwKICAibmFtZXMiOiBbXQp9Cg==
59
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlbWFyay1wcmlzbS50cyJdLAogICJtYXBwaW5ncyI6ICJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxVQUFVLElBQUksSUFBSSxDQUFDLFFBQVEsUUFBUTtBQUV6QyxNQUFNLGNBQWMsSUFBSSxJQUFJLENBQUMsQ0FBQyxNQUFNO0FBRXBDLHdCQUF3QixNQUFjLE1BQWM7QUFDbkQsTUFBSSxnQkFBZ0IsWUFBWTtBQUVoQyxNQUFJLFFBQVEsTUFBTTtBQUNqQixXQUFPO0FBQUE7QUFHUixRQUFNLGVBQWUsQ0FBQyxVQUFpQjtBQUN0QyxRQUFJLFNBQVEsQ0FBQyxNQUFNLFVBQVUsUUFBTztBQUNuQyxvQkFBYyxDQUFDO0FBQUE7QUFBQTtBQUlqQixNQUFJLFlBQVksSUFBSSxPQUFPO0FBQzFCLGlCQUFhLFlBQVksSUFBSTtBQUFBLGFBQ25CLFNBQVMsU0FBUztBQUM1QixpQkFBYTtBQUNiLGFBQVM7QUFBQSxTQUNIO0FBQ04saUJBQWE7QUFDYixpQkFBYTtBQUFBO0FBR2QsTUFBSSxRQUFRLENBQUMsTUFBTSxVQUFVLE9BQU87QUFDbkMsWUFBUSxLQUFLLGdDQUFnQztBQUFBO0FBRzlDLFFBQU0sVUFBVSxNQUFNLFVBQVU7QUFDaEMsTUFBSSxPQUFPO0FBQ1gsTUFBSSxTQUFTO0FBQ1osV0FBTyxNQUFNLFVBQVUsTUFBTSxTQUFTO0FBQUE7QUFHdkMsU0FBTyxFQUFFLGVBQWU7QUFBQTtBQU16QixxQkFBcUIsV0FBd0I7QUFDNUMsU0FBTyxTQUFVLE1BQVc7QUFDM0IsVUFBTSxVQUFVLENBQUMsU0FBYztBQUM5QixVQUFJLEVBQUUsTUFBTSxVQUFVO0FBQ3RCLFdBQUssT0FBTztBQUVaLFVBQUksRUFBRSxNQUFNLGtCQUFrQixlQUFlLE1BQU07QUFDbkQsVUFBSSxVQUFVLENBQUM7QUFDZixVQUFJLFdBQVc7QUFDZCxnQkFBUSxLQUFLO0FBQUE7QUFFZCxXQUFLLFFBQVEsZUFBZSxRQUFRLEtBQUsscUNBQXFDLGtCQUFrQjtBQUNoRyxhQUFPO0FBQUE7QUFFUixXQUFPLE1BQU0sTUFBTSxRQUFRO0FBQUE7QUFBQTtBQUk3QixnQkFBZ0IsV0FBd0I7QUFDdkMsU0FBTyxZQUFZLEtBQUssTUFBTTtBQUFBO0FBRy9CLElBQU8sdUJBQVE7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -17,4 +17,4 @@ function scopedStyles(className) {
17
17
  export {
18
18
  scopedStyles as default
19
19
  };
20
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlbWFyay1zY29wZWQtc3R5bGVzLnRzIl0sCiAgIm1hcHBpbmdzIjogIkFBQUE7QUFDQSxNQUFNLFVBQVUsSUFBSSxJQUFJLENBQUMsUUFBUSxRQUFRO0FBRzFCLHNCQUFzQixXQUFtQjtBQUN0RCxRQUFNLFVBQVUsQ0FBQyxTQUFjO0FBTGpDO0FBTUksUUFBSSxRQUFRLElBQUksS0FBSztBQUFPO0FBRTVCLFVBQU0sRUFBRSxTQUFTO0FBQ2pCLFFBQUksbUJBQW1CLHlDQUFNLGdCQUFOLG1CQUFtQixVQUFuQixZQUE0QjtBQUNuRCxTQUFLLE9BQU8sS0FBSyxRQUFRO0FBQ3pCLFNBQUssS0FBSyxjQUFjLEtBQUssS0FBSyxlQUFlO0FBQ2pELFNBQUssS0FBSyxZQUFZLFFBQVEsR0FBRyxhQUFhLG1CQUFtQjtBQUVqRSxXQUFPO0FBQUE7QUFFVCxTQUFPLE1BQU0sQ0FBQyxTQUFjLE1BQU0sTUFBTTtBQUFBOyIsCiAgIm5hbWVzIjogW10KfQo=
20
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlbWFyay1zY29wZWQtc3R5bGVzLnRzIl0sCiAgIm1hcHBpbmdzIjogIkFBQUE7QUFDQSxNQUFNLFVBQVUsSUFBSSxJQUFJLENBQUMsUUFBUSxRQUFRO0FBRzFCLHNCQUFzQixXQUFtQjtBQUN2RCxRQUFNLFVBQVUsQ0FBQyxTQUFjO0FBTGhDO0FBTUUsUUFBSSxRQUFRLElBQUksS0FBSztBQUFPO0FBRTVCLFVBQU0sRUFBRSxTQUFTO0FBQ2pCLFFBQUksbUJBQW1CLHlDQUFNLGdCQUFOLG1CQUFtQixVQUFuQixZQUE0QjtBQUNuRCxTQUFLLE9BQU8sS0FBSyxRQUFRO0FBQ3pCLFNBQUssS0FBSyxjQUFjLEtBQUssS0FBSyxlQUFlO0FBQ2pELFNBQUssS0FBSyxZQUFZLFFBQVEsR0FBRyxhQUFhLG1CQUFtQjtBQUVqRSxXQUFPO0FBQUE7QUFFUixTQUFPLE1BQU0sQ0FBQyxTQUFjLE1BQU0sTUFBTTtBQUFBOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -0,0 +1,30 @@
1
+ import shiki from 'shiki';
2
+ export interface ShikiConfig {
3
+ /**
4
+ * The languages loaded to Shiki.
5
+ * Supports all languages listed here: https://github.com/shikijs/shiki/blob/main/docs/languages.md#all-languages
6
+ * Instructions for loading a custom language: https://github.com/shikijs/shiki/blob/main/docs/languages.md#supporting-your-own-languages-with-shiki
7
+ *
8
+ * @default []
9
+ */
10
+ langs?: shiki.ILanguageRegistration[];
11
+ /**
12
+ * The styling theme.
13
+ * Supports all themes listed here: https://github.com/shikijs/shiki/blob/main/docs/themes.md#all-themes
14
+ * Instructions for loading a custom theme: https://github.com/shikijs/shiki/blob/main/docs/themes.md#loading-theme
15
+ *
16
+ * @default "github-dark"
17
+ */
18
+ theme?: shiki.IThemeRegistration;
19
+ /**
20
+ * Enable word wrapping.
21
+ * - true: enabled.
22
+ * - false: enabled.
23
+ * - null: All overflow styling removed. Code will overflow the element by default.
24
+ *
25
+ * @default false
26
+ */
27
+ wrap?: boolean | null;
28
+ }
29
+ declare const remarkShiki: ({ langs, theme, wrap }: ShikiConfig) => Promise<() => (tree: any) => void>;
30
+ export default remarkShiki;
@@ -0,0 +1,29 @@
1
+ import shiki from "shiki";
2
+ import { visit } from "unist-util-visit";
3
+ const remarkShiki = async ({ langs = [], theme = "github-dark", wrap = false }) => {
4
+ const highlighter = await shiki.getHighlighter({ theme });
5
+ for (const lang of langs) {
6
+ await highlighter.loadLanguage(lang);
7
+ }
8
+ return () => (tree) => {
9
+ visit(tree, "code", (node) => {
10
+ var _a;
11
+ 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"');
13
+ html = html.replace(/style="(background-)?color: var\(--shiki-/g, 'style="$1color: var(--astro-code-');
14
+ if (wrap === false) {
15
+ html = html.replace(/style="(.*?)"/, 'style="$1; overflow-x: auto;"');
16
+ } else if (wrap === true) {
17
+ html = html.replace(/style="(.*?)"/, 'style="$1; overflow-x: auto; white-space: pre-wrap; word-wrap: break-word;"');
18
+ }
19
+ node.type = "html";
20
+ node.value = html;
21
+ node.children = [];
22
+ });
23
+ };
24
+ };
25
+ var remark_shiki_default = remarkShiki;
26
+ export {
27
+ remark_shiki_default as default
28
+ };
29
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlbWFyay1zaGlraS50cyJdLAogICJtYXBwaW5ncyI6ICJBQUFBO0FBQ0E7QUE4QkEsTUFBTSxjQUFjLE9BQU8sRUFBRSxRQUFRLElBQUksUUFBUSxlQUFlLE9BQU8sWUFBeUI7QUFDL0YsUUFBTSxjQUFjLE1BQU0sTUFBTSxlQUFlLEVBQUU7QUFFakQsYUFBVyxRQUFRLE9BQU87QUFDekIsVUFBTSxZQUFZLGFBQWE7QUFBQTtBQUdoQyxTQUFPLE1BQU0sQ0FBQyxTQUFjO0FBQzNCLFVBQU0sTUFBTSxRQUFRLENBQUMsU0FBUztBQXZDaEM7QUF3Q0csVUFBSSxPQUFPLFlBQVksV0FBVyxLQUFLLE9BQU8sRUFBRSxNQUFNLFdBQUssU0FBTCxZQUFhO0FBR25FLGFBQU8sS0FBSyxRQUFRLHNCQUFzQjtBQUUxQyxhQUFPLEtBQUssUUFBUSw4Q0FBOEM7QUFHbEUsVUFBSSxTQUFTLE9BQU87QUFDbkIsZUFBTyxLQUFLLFFBQVEsaUJBQWlCO0FBQUEsaUJBQzNCLFNBQVMsTUFBTTtBQUN6QixlQUFPLEtBQUssUUFBUSxpQkFBaUI7QUFBQTtBQUd0QyxXQUFLLE9BQU87QUFDWixXQUFLLFFBQVE7QUFDYixXQUFLLFdBQVc7QUFBQTtBQUFBO0FBQUE7QUFLbkIsSUFBTyx1QkFBUTsiLAogICJuYW1lcyI6IFtdCn0K
@@ -21,4 +21,4 @@ function remarkSlug() {
21
21
  export {
22
22
  remarkSlug as default
23
23
  };
24
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlbWFyay1zbHVnLnRzIl0sCiAgIm1hcHBpbmdzIjogIkFBS0E7QUFDQTtBQUNBO0FBRUEsTUFBTSxRQUFRLElBQUk7QUFPSCxzQkFBc0I7QUFDbkMsU0FBTyxDQUFDLFNBQWM7QUFDcEIsVUFBTTtBQUNOLFVBQU0sTUFBTSxDQUFDLFNBQVM7QUFDcEIsY0FBUSxJQUFJO0FBQUE7QUFFZCxVQUFNLE1BQU0sV0FBVyxDQUFDLFNBQVM7QUFDL0IsWUFBTSxPQUFPLEtBQUssUUFBUyxNQUFLLE9BQU87QUFDdkMsWUFBTSxRQUFrQyxLQUFLLGVBQWdCLE1BQUssY0FBYztBQUNoRixVQUFJLEtBQUssTUFBTTtBQUNmLFdBQUssS0FBSyxNQUFNLEtBQUssT0FBTyxLQUFLLFFBQVEsTUFBTSxLQUFLLFNBQVM7QUFDN0QsV0FBSyxLQUFLO0FBQ1YsWUFBTSxLQUFLO0FBQUE7QUFBQTtBQUFBOyIsCiAgIm5hbWVzIjogW10KfQo=
24
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlbWFyay1zbHVnLnRzIl0sCiAgIm1hcHBpbmdzIjogIkFBS0E7QUFDQTtBQUNBO0FBRUEsTUFBTSxRQUFRLElBQUk7QUFPSCxzQkFBc0I7QUFDcEMsU0FBTyxDQUFDLFNBQWM7QUFDckIsVUFBTTtBQUNOLFVBQU0sTUFBTSxDQUFDLFNBQVM7QUFDckIsY0FBUSxJQUFJO0FBQUE7QUFFYixVQUFNLE1BQU0sV0FBVyxDQUFDLFNBQVM7QUFDaEMsWUFBTSxPQUFPLEtBQUssUUFBUyxNQUFLLE9BQU87QUFDdkMsWUFBTSxRQUFrQyxLQUFLLGVBQWdCLE1BQUssY0FBYztBQUNoRixVQUFJLEtBQUssTUFBTTtBQUNmLFdBQUssS0FBSyxNQUFNLEtBQUssT0FBTyxLQUFLLFFBQVEsTUFBTSxLQUFLLFNBQVM7QUFDN0QsV0FBSyxLQUFLO0FBQ1YsWUFBTSxLQUFLO0FBQUE7QUFBQTtBQUFBOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -1,4 +1,5 @@
1
- import { visit, SKIP } from "unist-util-visit";
1
+ import { visit as _visit, SKIP } from "unist-util-visit";
2
+ const visit = _visit;
2
3
  function remarkUnwrap() {
3
4
  const astroRootNodes = new Set();
4
5
  let insideAstroRoot = false;
@@ -28,4 +29,4 @@ function remarkUnwrap() {
28
29
  export {
29
30
  remarkUnwrap as default
30
31
  };
31
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlbWFyay11bndyYXAudHMiXSwKICAibWFwcGluZ3MiOiAiQUFBQTtBQUdlLHdCQUF3QjtBQUNyQyxRQUFNLGlCQUFpQixJQUFJO0FBQzNCLE1BQUksa0JBQWtCO0FBRXRCLFNBQU8sQ0FBQyxTQUFjO0FBRXBCLHNCQUFrQjtBQUNsQixtQkFBZTtBQUVmLFVBQU0sTUFBTSxRQUFRLENBQUMsU0FBUztBQUM1QixVQUFJLEtBQUssTUFBTSxRQUFRLGlCQUFpQixNQUFNLENBQUMsaUJBQWlCO0FBQzlELDBCQUFrQjtBQUFBO0FBRXBCLFVBQUksS0FBSyxNQUFNLFFBQVEsa0JBQWtCLE1BQU0saUJBQWlCO0FBQzlELDBCQUFrQjtBQUFBO0FBRXBCLHFCQUFlLElBQUk7QUFBQTtBQUdyQixVQUFNLE1BQU0sYUFBYSxDQUFDLE1BQU0sT0FBTyxXQUFXO0FBQ2hELFVBQUksVUFBVSxPQUFPLFVBQVUsWUFBWSxzQkFBc0IsT0FBTztBQUN0RSxlQUFPLFNBQVMsT0FBTyxPQUFPLEdBQUcsR0FBRyxLQUFLO0FBQ3pDLGVBQU8sQ0FBQyxNQUFNO0FBQUE7QUFBQTtBQUFBO0FBS3BCLGlDQUErQixNQUFXO0FBQ3hDLFdBQU8sS0FBSyxTQUFTLElBQUksQ0FBQyxVQUFlLGVBQWUsSUFBSSxRQUFRLE9BQU8sQ0FBQyxLQUFjLE1BQWdCLE1BQU0sTUFBTSxHQUFJO0FBQUE7QUFBQTsiLAogICJuYW1lcyI6IFtdCn0K
32
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JlbWFyay11bndyYXAudHMiXSwKICAibWFwcGluZ3MiOiAiQUFBQTtBQUlBLE1BQU0sUUFBUTtBQUdDLHdCQUF3QjtBQUN0QyxRQUFNLGlCQUFpQixJQUFJO0FBQzNCLE1BQUksa0JBQWtCO0FBRXRCLFNBQU8sQ0FBQyxTQUFjO0FBRXJCLHNCQUFrQjtBQUNsQixtQkFBZTtBQUVmLFVBQU0sTUFBTSxRQUFRLENBQUMsU0FBUztBQUM3QixVQUFJLEtBQUssTUFBTSxRQUFRLGlCQUFpQixNQUFNLENBQUMsaUJBQWlCO0FBQy9ELDBCQUFrQjtBQUFBO0FBRW5CLFVBQUksS0FBSyxNQUFNLFFBQVEsa0JBQWtCLE1BQU0saUJBQWlCO0FBQy9ELDBCQUFrQjtBQUFBO0FBRW5CLHFCQUFlLElBQUk7QUFBQTtBQUdwQixVQUFNLE1BQU0sYUFBYSxDQUFDLE1BQU0sT0FBTyxXQUFXO0FBQ2pELFVBQUksVUFBVSxPQUFPLFVBQVUsWUFBWSxzQkFBc0IsT0FBTztBQUN2RSxlQUFPLFNBQVMsT0FBTyxPQUFPLEdBQUcsR0FBRyxLQUFLO0FBQ3pDLGVBQU8sQ0FBQyxNQUFNO0FBQUE7QUFBQTtBQUFBO0FBS2pCLGlDQUErQixNQUFXO0FBQ3pDLFdBQU8sS0FBSyxTQUFTLElBQUksQ0FBQyxVQUFlLGVBQWUsSUFBSSxRQUFRLE9BQU8sQ0FBQyxLQUFjLE1BQWdCLE1BQU0sTUFBTSxHQUFJO0FBQUE7QUFBQTsiLAogICJuYW1lcyI6IFtdCn0K
package/dist/types.d.ts CHANGED
@@ -1,10 +1,10 @@
1
- import * as unified from 'unified';
2
- export declare type UnifiedPluginImport = Promise<{
3
- default: unified.Plugin;
4
- }>;
5
- export declare type Plugin = string | [string, any] | UnifiedPluginImport | [UnifiedPluginImport, any];
1
+ import type * as unified from 'unified';
2
+ import type { ShikiConfig } from './remark-shiki';
3
+ export declare type Plugin = string | [string, any] | unified.Plugin | [unified.Plugin, any];
6
4
  export interface AstroMarkdownOptions {
7
5
  mode?: 'md' | 'mdx';
6
+ syntaxHighlight?: 'prism' | 'shiki' | false;
7
+ shikiConfig?: ShikiConfig;
8
8
  remarkPlugins?: Plugin[];
9
9
  rehypePlugins?: Plugin[];
10
10
  }
package/package.json CHANGED
@@ -1,13 +1,17 @@
1
1
  {
2
2
  "name": "@astrojs/markdown-remark",
3
- "version": "0.5.0",
4
- "main": "./dist/index.js",
3
+ "version": "0.6.1-next.2",
5
4
  "type": "module",
5
+ "author": "withastro",
6
+ "license": "MIT",
6
7
  "repository": {
7
8
  "type": "git",
8
- "url": "https://github.com/snowpackjs/astro.git",
9
+ "url": "https://github.com/withastro/astro.git",
9
10
  "directory": "packages/markdown/remark"
10
11
  },
12
+ "bugs": "https://github.com/withastro/astro/issues",
13
+ "homepage": "https://astro.build",
14
+ "main": "./dist/index.js",
11
15
  "exports": {
12
16
  ".": "./dist/index.js"
13
17
  },
@@ -18,7 +22,7 @@
18
22
  "dev": "astro-scripts dev \"src/**/*.ts\""
19
23
  },
20
24
  "dependencies": {
21
- "@astrojs/prism": "^0.3.0",
25
+ "@astrojs/prism": "^0.4.0",
22
26
  "assert": "^2.0.0",
23
27
  "github-slugger": "^1.4.0",
24
28
  "gray-matter": "^4.0.3",
@@ -34,6 +38,7 @@
34
38
  "remark-parse": "^10.0.1",
35
39
  "remark-rehype": "^10.0.1",
36
40
  "remark-smartypants": "^2.0.0",
41
+ "shiki": "^0.10.0",
37
42
  "unified": "^10.1.1",
38
43
  "unist-util-map": "^3.0.0",
39
44
  "unist-util-visit": "^4.1.0"
package/src/index.ts CHANGED
@@ -9,6 +9,7 @@ import { remarkJsx, loadRemarkJsx } from './remark-jsx.js';
9
9
  import rehypeJsx from './rehype-jsx.js';
10
10
  import rehypeEscape from './rehype-escape.js';
11
11
  import remarkPrism from './remark-prism.js';
12
+ import remarkShiki from './remark-shiki.js';
12
13
  import remarkUnwrap from './remark-unwrap.js';
13
14
  import { loadPlugins } from './load-plugins.js';
14
15
 
@@ -23,9 +24,9 @@ export { AstroMarkdownOptions, MarkdownRenderingOptions };
23
24
 
24
25
  /** Internal utility for rendering a full markdown file and extracting Frontmatter data */
25
26
  export async function renderMarkdownWithFrontmatter(contents: string, opts?: MarkdownRenderingOptions | null) {
26
- const { data: frontmatter, content } = matter(contents);
27
- const value = await renderMarkdown(content, opts);
28
- return { ...value, frontmatter };
27
+ const { data: frontmatter, content } = matter(contents);
28
+ const value = await renderMarkdown(content, opts);
29
+ return { ...value, frontmatter };
29
30
  }
30
31
 
31
32
  export const DEFAULT_REMARK_PLUGINS = ['remark-gfm', 'remark-smartypants'];
@@ -34,63 +35,70 @@ export const DEFAULT_REHYPE_PLUGINS = ['rehype-slug'];
34
35
 
35
36
  /** Shared utility for rendering markdown */
36
37
  export async function renderMarkdown(content: string, opts?: MarkdownRenderingOptions | null) {
37
- let { remarkPlugins = [], rehypePlugins = [] } = opts ?? {};
38
- const scopedClassName = opts?.$?.scopedClassName;
39
- const mode = opts?.mode ?? 'mdx';
40
- const isMDX = mode === 'mdx';
41
- const { headers, rehypeCollectHeaders } = createCollectHeaders();
42
-
43
- await Promise.all([loadRemarkExpressions(), loadRemarkJsx()]); // Vite bug: dynamically import() these because of CJS interop (this will cache)
44
-
45
- let parser = unified()
46
- .use(markdown)
47
- .use(isMDX ? [remarkJsx] : [])
48
- .use(isMDX ? [remarkExpressions] : [])
49
- .use([remarkUnwrap]);
50
-
51
- if (remarkPlugins.length === 0 && rehypePlugins.length === 0) {
52
- remarkPlugins = [...DEFAULT_REMARK_PLUGINS];
53
- rehypePlugins = [...DEFAULT_REHYPE_PLUGINS];
54
- }
55
-
56
- const loadedRemarkPlugins = await Promise.all(loadPlugins(remarkPlugins));
57
- const loadedRehypePlugins = await Promise.all(loadPlugins(rehypePlugins));
58
-
59
- loadedRemarkPlugins.forEach(([plugin, opts]) => {
60
- parser.use([[plugin, opts]]);
61
- });
62
-
63
- if (scopedClassName) {
64
- parser.use([scopedStyles(scopedClassName)]);
65
- }
66
-
67
- parser.use([remarkPrism(scopedClassName)]);
68
- parser.use([[markdownToHtml as any, { allowDangerousHtml: true, passThrough: ['raw', 'mdxTextExpression', 'mdxJsxTextElement', 'mdxJsxFlowElement'] }]]);
69
-
70
- loadedRehypePlugins.forEach(([plugin, opts]) => {
71
- parser.use([[plugin, opts]]);
72
- });
73
-
74
- parser
75
- .use(isMDX ? [rehypeJsx] : [])
76
- .use(isMDX ? [rehypeExpressions] : [])
77
- .use(isMDX ? [] : [rehypeRaw])
78
- .use(isMDX ? [rehypeEscape] : [])
79
- .use(rehypeIslands);
80
-
81
- let result: string;
82
- try {
83
- const vfile = await parser.use([rehypeCollectHeaders]).use(rehypeStringify, { allowDangerousHtml: true }).process(content);
84
- result = vfile.toString();
85
- } catch (err) {
86
- console.error(err);
87
- throw err;
88
- }
89
-
90
- return {
91
- metadata: { headers, source: content, html: result.toString() },
92
- code: result.toString(),
93
- };
38
+ let { remarkPlugins = [], rehypePlugins = [] } = opts ?? {};
39
+ const scopedClassName = opts?.$?.scopedClassName;
40
+ const mode = opts?.mode ?? 'mdx';
41
+ const syntaxHighlight = opts?.syntaxHighlight ?? 'prism';
42
+ const shikiConfig = opts?.shikiConfig ?? {};
43
+ const isMDX = mode === 'mdx';
44
+ const { headers, rehypeCollectHeaders } = createCollectHeaders();
45
+
46
+ await Promise.all([loadRemarkExpressions(), loadRemarkJsx()]); // Vite bug: dynamically import() these because of CJS interop (this will cache)
47
+
48
+ let parser = unified()
49
+ .use(markdown)
50
+ .use(isMDX ? [remarkJsx] : [])
51
+ .use(isMDX ? [remarkExpressions] : [])
52
+ .use([remarkUnwrap]);
53
+
54
+ if (remarkPlugins.length === 0 && rehypePlugins.length === 0) {
55
+ remarkPlugins = [...DEFAULT_REMARK_PLUGINS];
56
+ rehypePlugins = [...DEFAULT_REHYPE_PLUGINS];
57
+ }
58
+
59
+ const loadedRemarkPlugins = await Promise.all(loadPlugins(remarkPlugins));
60
+ const loadedRehypePlugins = await Promise.all(loadPlugins(rehypePlugins));
61
+
62
+ loadedRemarkPlugins.forEach(([plugin, opts]) => {
63
+ parser.use([[plugin, opts]]);
64
+ });
65
+
66
+ if (scopedClassName) {
67
+ parser.use([scopedStyles(scopedClassName)]);
68
+ }
69
+
70
+ if (syntaxHighlight === 'prism') {
71
+ parser.use([remarkPrism(scopedClassName)]);
72
+ } else if (syntaxHighlight === 'shiki') {
73
+ parser.use([await remarkShiki(shikiConfig)]);
74
+ }
75
+
76
+ parser.use([[markdownToHtml as any, { allowDangerousHtml: true, passThrough: ['raw', 'mdxTextExpression', 'mdxJsxTextElement', 'mdxJsxFlowElement'] }]]);
77
+
78
+ loadedRehypePlugins.forEach(([plugin, opts]) => {
79
+ parser.use([[plugin, opts]]);
80
+ });
81
+
82
+ parser
83
+ .use(isMDX ? [rehypeJsx] : [])
84
+ .use(isMDX ? [rehypeExpressions] : [])
85
+ .use(isMDX ? [] : [rehypeRaw])
86
+ .use(isMDX ? [rehypeEscape] : [])
87
+ .use(rehypeIslands);
88
+
89
+ let result: string;
90
+ try {
91
+ const vfile = await parser.use([rehypeCollectHeaders]).use(rehypeStringify, { allowDangerousHtml: true }).process(content);
92
+ result = vfile.toString();
93
+ } catch (err) {
94
+ console.error(err);
95
+ throw err;
96
+ }
97
+
98
+ return {
99
+ metadata: { headers, source: content, html: result.toString() },
100
+ code: result.toString(),
101
+ };
94
102
  }
95
103
 
96
104
  export default renderMarkdownWithFrontmatter;
@@ -1,27 +1,28 @@
1
1
  import * as unified from 'unified';
2
- import type { Plugin, UnifiedPluginImport } from './types';
2
+ import type { Plugin } from './types';
3
3
 
4
- async function importPlugin(p: string | UnifiedPluginImport): UnifiedPluginImport {
5
- if (typeof p === 'string') {
6
- return await import(p);
7
- }
4
+ async function importPlugin(p: string | unified.Plugin): Promise<unified.Plugin> {
5
+ if (typeof p === 'string') {
6
+ const importResult = await import(p);
7
+ return importResult.default;
8
+ }
8
9
 
9
- return await p;
10
+ return p;
10
11
  }
11
12
 
12
- export function loadPlugins(items: Plugin[]): Promise<[unified.Plugin] | [unified.Plugin, any]>[] {
13
- return items.map((p) => {
14
- return new Promise((resolve, reject) => {
15
- if (Array.isArray(p)) {
16
- const [plugin, opts] = p;
17
- return importPlugin(plugin)
18
- .then((m) => resolve([m.default, opts]))
19
- .catch((e) => reject(e));
20
- }
13
+ export function loadPlugins(items: Plugin[]): Promise<[unified.Plugin, any?]>[] {
14
+ return items.map((p) => {
15
+ return new Promise((resolve, reject) => {
16
+ if (Array.isArray(p)) {
17
+ const [plugin, opts] = p;
18
+ return importPlugin(plugin)
19
+ .then((m) => resolve([m, opts]))
20
+ .catch((e) => reject(e));
21
+ }
21
22
 
22
- return importPlugin(p)
23
- .then((m) => resolve([m.default]))
24
- .catch((e) => reject(e));
25
- });
26
- });
23
+ return importPlugin(p)
24
+ .then((m) => resolve([m]))
25
+ .catch((e) => reject(e));
26
+ });
27
+ });
27
28
  }