@scalar/code-highlight 0.0.28 → 0.0.29

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.
Files changed (42) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/code/highlight.js +37 -59
  3. package/dist/code/highlight.js.map +7 -0
  4. package/dist/code/highlight.test.js +64 -0
  5. package/dist/code/highlight.test.js.map +7 -0
  6. package/dist/code/index.js +5 -1
  7. package/dist/code/index.js.map +7 -0
  8. package/dist/code/line-numbers.js +54 -75
  9. package/dist/code/line-numbers.js.map +7 -0
  10. package/dist/constants.js +11 -11
  11. package/dist/constants.js.map +7 -0
  12. package/dist/index.js +12 -7
  13. package/dist/index.js.map +7 -0
  14. package/dist/languages/basic.js +31 -30
  15. package/dist/languages/basic.js.map +7 -0
  16. package/dist/languages/index.js +9 -3
  17. package/dist/languages/index.js.map +7 -0
  18. package/dist/languages/json-yaml.js +10 -9
  19. package/dist/languages/json-yaml.js.map +7 -0
  20. package/dist/languages/standard.js +77 -76
  21. package/dist/languages/standard.js.map +7 -0
  22. package/dist/markdown/getHeadings.test.js +45 -0
  23. package/dist/markdown/getHeadings.test.js.map +7 -0
  24. package/dist/markdown/htmlFromMarkdown.test.js +41 -0
  25. package/dist/markdown/htmlFromMarkdown.test.js.map +7 -0
  26. package/dist/markdown/index.js +2 -1
  27. package/dist/markdown/index.js.map +7 -0
  28. package/dist/markdown/markdown.js +94 -142
  29. package/dist/markdown/markdown.js.map +7 -0
  30. package/dist/markdown/splitContent.test.js +17 -0
  31. package/dist/markdown/splitContent.test.js.map +7 -0
  32. package/dist/rehype-alert/index.js +5 -1
  33. package/dist/rehype-alert/index.js.map +7 -0
  34. package/dist/rehype-alert/rehype-alert.js +84 -95
  35. package/dist/rehype-alert/rehype-alert.js.map +7 -0
  36. package/dist/rehype-alert/rehype-alert.test.js +74 -0
  37. package/dist/rehype-alert/rehype-alert.test.js.map +7 -0
  38. package/dist/rehype-highlight/index.js +5 -1
  39. package/dist/rehype-highlight/index.js.map +7 -0
  40. package/dist/rehype-highlight/rehype-highlight.js +84 -95
  41. package/dist/rehype-highlight/rehype-highlight.js.map +7 -0
  42. package/package.json +4 -4
@@ -1,78 +1,79 @@
1
- import bash from 'highlight.js/lib/languages/bash';
2
- import c from 'highlight.js/lib/languages/c';
3
- import clojure from 'highlight.js/lib/languages/clojure';
4
- import cpp from 'highlight.js/lib/languages/cpp';
5
- import csharp from 'highlight.js/lib/languages/csharp';
6
- import css from 'highlight.js/lib/languages/css';
7
- import dart from 'highlight.js/lib/languages/dart';
8
- import elixir from 'highlight.js/lib/languages/elixir';
9
- import go from 'highlight.js/lib/languages/go';
10
- import graphql from 'highlight.js/lib/languages/graphql';
11
- import java from 'highlight.js/lib/languages/java';
12
- import javascript from 'highlight.js/lib/languages/javascript';
13
- import json from 'highlight.js/lib/languages/json';
14
- import kotlin from 'highlight.js/lib/languages/kotlin';
15
- import less from 'highlight.js/lib/languages/less';
16
- import makefile from 'highlight.js/lib/languages/makefile';
17
- import markdown from 'highlight.js/lib/languages/markdown';
18
- import matlab from 'highlight.js/lib/languages/matlab';
19
- import nginx from 'highlight.js/lib/languages/nginx';
20
- import objectivec from 'highlight.js/lib/languages/objectivec';
21
- import ocaml from 'highlight.js/lib/languages/ocaml';
22
- import php from 'highlight.js/lib/languages/php';
23
- import plaintext from 'highlight.js/lib/languages/plaintext';
24
- import powershell from 'highlight.js/lib/languages/powershell';
25
- import python from 'highlight.js/lib/languages/python';
26
- import r from 'highlight.js/lib/languages/r';
27
- import ruby from 'highlight.js/lib/languages/ruby';
28
- import rust from 'highlight.js/lib/languages/rust';
29
- import scss from 'highlight.js/lib/languages/scss';
30
- import shell from 'highlight.js/lib/languages/shell';
31
- import sql from 'highlight.js/lib/languages/sql';
32
- import swift from 'highlight.js/lib/languages/swift';
33
- import typescript from 'highlight.js/lib/languages/typescript';
34
- import xml from 'highlight.js/lib/languages/xml';
35
- import yaml from 'highlight.js/lib/languages/yaml';
36
- import curl from 'highlightjs-curl';
37
-
1
+ import bash from "highlight.js/lib/languages/bash";
2
+ import c from "highlight.js/lib/languages/c";
3
+ import clojure from "highlight.js/lib/languages/clojure";
4
+ import cpp from "highlight.js/lib/languages/cpp";
5
+ import csharp from "highlight.js/lib/languages/csharp";
6
+ import css from "highlight.js/lib/languages/css";
7
+ import dart from "highlight.js/lib/languages/dart";
8
+ import elixir from "highlight.js/lib/languages/elixir";
9
+ import go from "highlight.js/lib/languages/go";
10
+ import graphql from "highlight.js/lib/languages/graphql";
11
+ import java from "highlight.js/lib/languages/java";
12
+ import javascript from "highlight.js/lib/languages/javascript";
13
+ import json from "highlight.js/lib/languages/json";
14
+ import kotlin from "highlight.js/lib/languages/kotlin";
15
+ import less from "highlight.js/lib/languages/less";
16
+ import makefile from "highlight.js/lib/languages/makefile";
17
+ import markdown from "highlight.js/lib/languages/markdown";
18
+ import matlab from "highlight.js/lib/languages/matlab";
19
+ import nginx from "highlight.js/lib/languages/nginx";
20
+ import objectivec from "highlight.js/lib/languages/objectivec";
21
+ import ocaml from "highlight.js/lib/languages/ocaml";
22
+ import php from "highlight.js/lib/languages/php";
23
+ import plaintext from "highlight.js/lib/languages/plaintext";
24
+ import powershell from "highlight.js/lib/languages/powershell";
25
+ import python from "highlight.js/lib/languages/python";
26
+ import r from "highlight.js/lib/languages/r";
27
+ import ruby from "highlight.js/lib/languages/ruby";
28
+ import rust from "highlight.js/lib/languages/rust";
29
+ import scss from "highlight.js/lib/languages/scss";
30
+ import shell from "highlight.js/lib/languages/shell";
31
+ import sql from "highlight.js/lib/languages/sql";
32
+ import swift from "highlight.js/lib/languages/swift";
33
+ import typescript from "highlight.js/lib/languages/typescript";
34
+ import xml from "highlight.js/lib/languages/xml";
35
+ import yaml from "highlight.js/lib/languages/yaml";
36
+ import curl from "highlightjs-curl";
38
37
  const standardLanguages = {
39
- bash,
40
- c,
41
- clojure,
42
- cpp,
43
- csharp,
44
- css,
45
- curl,
46
- dart,
47
- elixir,
48
- go,
49
- graphql,
50
- html: xml,
51
- java,
52
- javascript,
53
- json,
54
- kotlin,
55
- less,
56
- makefile,
57
- markdown,
58
- matlab,
59
- nginx,
60
- objectivec,
61
- ocaml,
62
- php,
63
- plaintext,
64
- powershell,
65
- python,
66
- r,
67
- ruby,
68
- rust,
69
- scss,
70
- shell,
71
- sql,
72
- swift,
73
- typescript,
74
- xml,
75
- yaml,
38
+ bash,
39
+ c,
40
+ clojure,
41
+ cpp,
42
+ csharp,
43
+ css,
44
+ curl,
45
+ dart,
46
+ elixir,
47
+ go,
48
+ graphql,
49
+ html: xml,
50
+ java,
51
+ javascript,
52
+ json,
53
+ kotlin,
54
+ less,
55
+ makefile,
56
+ markdown,
57
+ matlab,
58
+ nginx,
59
+ objectivec,
60
+ ocaml,
61
+ php,
62
+ plaintext,
63
+ powershell,
64
+ python,
65
+ r,
66
+ ruby,
67
+ rust,
68
+ scss,
69
+ shell,
70
+ sql,
71
+ swift,
72
+ typescript,
73
+ xml,
74
+ yaml
76
75
  };
77
-
78
- export { standardLanguages };
76
+ export {
77
+ standardLanguages
78
+ };
79
+ //# sourceMappingURL=standard.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/languages/standard.ts"],
4
+ "sourcesContent": ["import type { LanguageFn } from 'highlight.js'\nimport bash from 'highlight.js/lib/languages/bash'\nimport c from 'highlight.js/lib/languages/c'\nimport clojure from 'highlight.js/lib/languages/clojure'\nimport cpp from 'highlight.js/lib/languages/cpp'\nimport csharp from 'highlight.js/lib/languages/csharp'\nimport css from 'highlight.js/lib/languages/css'\nimport dart from 'highlight.js/lib/languages/dart'\nimport elixir from 'highlight.js/lib/languages/elixir'\nimport go from 'highlight.js/lib/languages/go'\nimport graphql from 'highlight.js/lib/languages/graphql'\nimport java from 'highlight.js/lib/languages/java'\nimport javascript from 'highlight.js/lib/languages/javascript'\nimport json from 'highlight.js/lib/languages/json'\nimport kotlin from 'highlight.js/lib/languages/kotlin'\nimport less from 'highlight.js/lib/languages/less'\nimport makefile from 'highlight.js/lib/languages/makefile'\nimport markdown from 'highlight.js/lib/languages/markdown'\nimport matlab from 'highlight.js/lib/languages/matlab'\nimport nginx from 'highlight.js/lib/languages/nginx'\nimport objectivec from 'highlight.js/lib/languages/objectivec'\nimport ocaml from 'highlight.js/lib/languages/ocaml'\nimport php from 'highlight.js/lib/languages/php'\nimport plaintext from 'highlight.js/lib/languages/plaintext'\nimport powershell from 'highlight.js/lib/languages/powershell'\nimport python from 'highlight.js/lib/languages/python'\nimport r from 'highlight.js/lib/languages/r'\nimport ruby from 'highlight.js/lib/languages/ruby'\nimport rust from 'highlight.js/lib/languages/rust'\nimport scss from 'highlight.js/lib/languages/scss'\nimport shell from 'highlight.js/lib/languages/shell'\nimport sql from 'highlight.js/lib/languages/sql'\nimport swift from 'highlight.js/lib/languages/swift'\nimport typescript from 'highlight.js/lib/languages/typescript'\nimport xml from 'highlight.js/lib/languages/xml'\nimport yaml from 'highlight.js/lib/languages/yaml'\n// @ts-expect-error No types available\nimport curl from 'highlightjs-curl'\n\nconst standardLanguages: Record<string, LanguageFn> = {\n bash,\n c,\n clojure,\n cpp,\n csharp,\n css,\n curl,\n dart,\n elixir,\n go,\n graphql,\n html: xml,\n java,\n javascript,\n json,\n kotlin,\n less,\n makefile,\n markdown,\n matlab,\n nginx,\n objectivec,\n ocaml,\n php,\n plaintext,\n powershell,\n python,\n r,\n ruby,\n rust,\n scss,\n shell,\n sql,\n swift,\n typescript,\n xml,\n yaml,\n}\n\nexport { standardLanguages }\n"],
5
+ "mappings": "AACA,OAAO,UAAU;AACjB,OAAO,OAAO;AACd,OAAO,aAAa;AACpB,OAAO,SAAS;AAChB,OAAO,YAAY;AACnB,OAAO,SAAS;AAChB,OAAO,UAAU;AACjB,OAAO,YAAY;AACnB,OAAO,QAAQ;AACf,OAAO,aAAa;AACpB,OAAO,UAAU;AACjB,OAAO,gBAAgB;AACvB,OAAO,UAAU;AACjB,OAAO,YAAY;AACnB,OAAO,UAAU;AACjB,OAAO,cAAc;AACrB,OAAO,cAAc;AACrB,OAAO,YAAY;AACnB,OAAO,WAAW;AAClB,OAAO,gBAAgB;AACvB,OAAO,WAAW;AAClB,OAAO,SAAS;AAChB,OAAO,eAAe;AACtB,OAAO,gBAAgB;AACvB,OAAO,YAAY;AACnB,OAAO,OAAO;AACd,OAAO,UAAU;AACjB,OAAO,UAAU;AACjB,OAAO,UAAU;AACjB,OAAO,WAAW;AAClB,OAAO,SAAS;AAChB,OAAO,WAAW;AAClB,OAAO,gBAAgB;AACvB,OAAO,SAAS;AAChB,OAAO,UAAU;AAEjB,OAAO,UAAU;AAEjB,MAAM,oBAAgD;AAAA,EACpD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,MAAM;AAAA,EACN;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,45 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { getHeadings } from "./markdown.js";
3
+ describe("getHeadings", () => {
4
+ it("gets a heading", () => {
5
+ const markdown = "# Example Heading";
6
+ const headings = getHeadings(markdown);
7
+ expect(headings).toStrictEqual([{ depth: 1, value: "Example Heading" }]);
8
+ });
9
+ it("gets nested headings", () => {
10
+ const markdown = `
11
+ # Example Heading
12
+
13
+ ## Nested Heading
14
+ `;
15
+ const headings = getHeadings(markdown);
16
+ expect(headings).toStrictEqual([
17
+ { depth: 1, value: "Example Heading" },
18
+ { depth: 2, value: "Nested Heading" }
19
+ ]);
20
+ });
21
+ it("ignores Markdown in code blocks", () => {
22
+ const markdown = `
23
+ # Example Heading
24
+
25
+ ## Not a heading
26
+
27
+ ## Nested Heading
28
+
29
+ \`\`\`
30
+ ## Not a heading
31
+ \`\`\`
32
+ `;
33
+ const headings = getHeadings(markdown);
34
+ expect(headings).toStrictEqual([
35
+ { depth: 1, value: "Example Heading" },
36
+ { depth: 2, value: "Nested Heading" }
37
+ ]);
38
+ });
39
+ it("works with links in headings", () => {
40
+ const markdown = "# [Example Heading](#example-heading)";
41
+ const headings = getHeadings(markdown);
42
+ expect(headings).toStrictEqual([{ depth: 1, value: "Example Heading" }]);
43
+ });
44
+ });
45
+ //# sourceMappingURL=getHeadings.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/markdown/getHeadings.test.ts"],
4
+ "sourcesContent": ["import { describe, expect, it } from 'vitest'\n\nimport { getHeadings } from './markdown'\n\ndescribe('getHeadings', () => {\n it('gets a heading', () => {\n const markdown = '# Example Heading'\n\n const headings = getHeadings(markdown)\n\n expect(headings).toStrictEqual([{ depth: 1, value: 'Example Heading' }])\n })\n\n it('gets nested headings', () => {\n const markdown = `\n# Example Heading\n\n## Nested Heading\n`\n\n const headings = getHeadings(markdown)\n\n expect(headings).toStrictEqual([\n { depth: 1, value: 'Example Heading' },\n { depth: 2, value: 'Nested Heading' },\n ])\n })\n\n it('ignores Markdown in code blocks', () => {\n const markdown = `\n# Example Heading\n\n ## Not a heading\n\n## Nested Heading\n\n\\`\\`\\`\n## Not a heading\n\\`\\`\\`\n`\n\n const headings = getHeadings(markdown)\n\n expect(headings).toStrictEqual([\n { depth: 1, value: 'Example Heading' },\n { depth: 2, value: 'Nested Heading' },\n ])\n })\n\n it('works with links in headings', () => {\n const markdown = '# [Example Heading](#example-heading)'\n\n const headings = getHeadings(markdown)\n\n expect(headings).toStrictEqual([{ depth: 1, value: 'Example Heading' }])\n })\n})\n"],
5
+ "mappings": "AAAA,SAAS,UAAU,QAAQ,UAAU;AAErC,SAAS,mBAAmB;AAE5B,SAAS,eAAe,MAAM;AAC5B,KAAG,kBAAkB,MAAM;AACzB,UAAM,WAAW;AAEjB,UAAM,WAAW,YAAY,QAAQ;AAErC,WAAO,QAAQ,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,OAAO,kBAAkB,CAAC,CAAC;AAAA,EACzE,CAAC;AAED,KAAG,wBAAwB,MAAM;AAC/B,UAAM,WAAW;AAAA;AAAA;AAAA;AAAA;AAMjB,UAAM,WAAW,YAAY,QAAQ;AAErC,WAAO,QAAQ,EAAE,cAAc;AAAA,MAC7B,EAAE,OAAO,GAAG,OAAO,kBAAkB;AAAA,MACrC,EAAE,OAAO,GAAG,OAAO,iBAAiB;AAAA,IACtC,CAAC;AAAA,EACH,CAAC;AAED,KAAG,mCAAmC,MAAM;AAC1C,UAAM,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYjB,UAAM,WAAW,YAAY,QAAQ;AAErC,WAAO,QAAQ,EAAE,cAAc;AAAA,MAC7B,EAAE,OAAO,GAAG,OAAO,kBAAkB;AAAA,MACrC,EAAE,OAAO,GAAG,OAAO,iBAAiB;AAAA,IACtC,CAAC;AAAA,EACH,CAAC;AAED,KAAG,gCAAgC,MAAM;AACvC,UAAM,WAAW;AAEjB,UAAM,WAAW,YAAY,QAAQ;AAErC,WAAO,QAAQ,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,OAAO,kBAAkB,CAAC,CAAC;AAAA,EACzE,CAAC;AACH,CAAC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,41 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { htmlFromMarkdown } from "./markdown.js";
3
+ describe("htmlFromMarkdown", () => {
4
+ it("returns HTML", () => {
5
+ const html = htmlFromMarkdown("# Example Heading");
6
+ expect(html.trim()).toEqual("<h1>Example Heading</h1>");
7
+ });
8
+ it("removes tags", () => {
9
+ const html = htmlFromMarkdown("# <i>Example</i> <em>Heading</em>", {
10
+ removeTags: ["i"]
11
+ });
12
+ expect(html.trim()).toEqual("<h1>Example <em>Heading</em></h1>");
13
+ });
14
+ it("removes script tags", () => {
15
+ const html = htmlFromMarkdown(`# Example Heading<script>alert('foobar');<\/script>`);
16
+ expect(html.trim()).toEqual("<h1>Example Heading</h1>");
17
+ });
18
+ it("allows given tags", () => {
19
+ const html = htmlFromMarkdown(`# Example Heading<script>alert('foobar');<\/script>`, {
20
+ allowTags: ["script"]
21
+ });
22
+ expect(html.trim()).toEqual(`<h1>Example Heading
23
+ <script>alert('foobar');<\/script>
24
+ </h1>`);
25
+ });
26
+ it("allows to add ids", () => {
27
+ const html = htmlFromMarkdown("# Example Heading", {
28
+ transformType: "heading",
29
+ transform: (node) => {
30
+ node.data = {
31
+ hProperties: {
32
+ id: "example-heading"
33
+ }
34
+ };
35
+ return node;
36
+ }
37
+ });
38
+ expect(html.trim()).toEqual('<h1 id="example-heading">Example Heading</h1>');
39
+ });
40
+ });
41
+ //# sourceMappingURL=htmlFromMarkdown.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/markdown/htmlFromMarkdown.test.ts"],
4
+ "sourcesContent": ["import { describe, expect, it } from 'vitest'\n\nimport { htmlFromMarkdown } from './markdown'\n\ndescribe('htmlFromMarkdown', () => {\n it('returns HTML', () => {\n const html = htmlFromMarkdown('# Example Heading')\n\n expect(html.trim()).toEqual('<h1>Example Heading</h1>')\n })\n\n it('removes tags', () => {\n const html = htmlFromMarkdown('# <i>Example</i> <em>Heading</em>', {\n removeTags: ['i'],\n })\n\n expect(html.trim()).toEqual('<h1>Example <em>Heading</em></h1>')\n })\n\n it('removes script tags', () => {\n const html = htmlFromMarkdown(`# Example Heading<script>alert('foobar');</script>`)\n\n expect(html.trim()).toEqual('<h1>Example Heading</h1>')\n })\n\n it('allows given tags', () => {\n const html = htmlFromMarkdown(`# Example Heading<script>alert('foobar');</script>`, {\n allowTags: ['script'],\n })\n\n expect(html.trim()).toEqual(`<h1>Example Heading\\n <script>alert('foobar');</script>\\n</h1>`)\n })\n\n it('allows to add ids', () => {\n const html = htmlFromMarkdown('# Example Heading', {\n transformType: 'heading',\n transform: (node) => {\n node.data = {\n hProperties: {\n id: 'example-heading',\n },\n }\n\n return node\n },\n })\n\n expect(html.trim()).toEqual('<h1 id=\"example-heading\">Example Heading</h1>')\n })\n})\n"],
5
+ "mappings": "AAAA,SAAS,UAAU,QAAQ,UAAU;AAErC,SAAS,wBAAwB;AAEjC,SAAS,oBAAoB,MAAM;AACjC,KAAG,gBAAgB,MAAM;AACvB,UAAM,OAAO,iBAAiB,mBAAmB;AAEjD,WAAO,KAAK,KAAK,CAAC,EAAE,QAAQ,0BAA0B;AAAA,EACxD,CAAC;AAED,KAAG,gBAAgB,MAAM;AACvB,UAAM,OAAO,iBAAiB,qCAAqC;AAAA,MACjE,YAAY,CAAC,GAAG;AAAA,IAClB,CAAC;AAED,WAAO,KAAK,KAAK,CAAC,EAAE,QAAQ,mCAAmC;AAAA,EACjE,CAAC;AAED,KAAG,uBAAuB,MAAM;AAC9B,UAAM,OAAO,iBAAiB,qDAAoD;AAElF,WAAO,KAAK,KAAK,CAAC,EAAE,QAAQ,0BAA0B;AAAA,EACxD,CAAC;AAED,KAAG,qBAAqB,MAAM;AAC5B,UAAM,OAAO,iBAAiB,uDAAsD;AAAA,MAClF,WAAW,CAAC,QAAQ;AAAA,IACtB,CAAC;AAED,WAAO,KAAK,KAAK,CAAC,EAAE,QAAQ;AAAA;AAAA,MAAiE;AAAA,EAC/F,CAAC;AAED,KAAG,qBAAqB,MAAM;AAC5B,UAAM,OAAO,iBAAiB,qBAAqB;AAAA,MACjD,eAAe;AAAA,MACf,WAAW,CAAC,SAAS;AACnB,aAAK,OAAO;AAAA,UACV,aAAa;AAAA,YACX,IAAI;AAAA,UACN;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAAA,IACF,CAAC;AAED,WAAO,KAAK,KAAK,CAAC,EAAE,QAAQ,+CAA+C;AAAA,EAC7E,CAAC;AACH,CAAC;",
6
+ "names": []
7
+ }
@@ -1 +1,2 @@
1
- export { getHeadings, htmlFromMarkdown, splitContent } from './markdown.js';
1
+ export * from "./markdown.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/markdown/index.ts"],
4
+ "sourcesContent": ["export * from './markdown'\n"],
5
+ "mappings": "AAAA,cAAc;",
6
+ "names": []
7
+ }
@@ -1,160 +1,112 @@
1
- import rehypeExternalLinks from 'rehype-external-links';
2
- import rehypeFormat from 'rehype-format';
3
- import rehypeRaw from 'rehype-raw';
4
- import rehypeSanitize, { defaultSchema } from 'rehype-sanitize';
5
- import rehypeStringify from 'rehype-stringify';
6
- import remarkGfm from 'remark-gfm';
7
- import remarkParse from 'remark-parse';
8
- import remarkRehype from 'remark-rehype';
9
- import remarkStringify from 'remark-stringify';
10
- import { unified } from 'unified';
11
- import { visit, SKIP } from 'unist-util-visit';
12
- import { rehypeAlert } from '../rehype-alert/rehype-alert.js';
13
- import { rehypeHighlight } from '../rehype-highlight/rehype-highlight.js';
14
- import { standardLanguages } from '../languages/standard.js';
15
-
16
- /**
17
- * Plugin to transform nodes in a Markdown AST
18
- */
1
+ import rehypeExternalLinks from "rehype-external-links";
2
+ import rehypeFormat from "rehype-format";
3
+ import rehypeRaw from "rehype-raw";
4
+ import rehypeSanitize, { defaultSchema } from "rehype-sanitize";
5
+ import rehypeStringify from "rehype-stringify";
6
+ import remarkGfm from "remark-gfm";
7
+ import remarkParse from "remark-parse";
8
+ import remarkRehype from "remark-rehype";
9
+ import remarkStringify from "remark-stringify";
10
+ import { unified } from "unified";
11
+ import { SKIP, visit } from "unist-util-visit";
12
+ import { standardLanguages } from "../languages/index.js";
13
+ import { rehypeHighlight } from "../rehype-highlight/index.js";
14
+ import { rehypeAlert } from "../rehype-alert/index.js";
19
15
  const transformNodes = (options, ..._ignored) => (tree) => {
20
- if (!options?.transform || !options?.type) {
21
- return;
22
- }
23
- visit(tree, options?.type, (node) => {
24
- options?.transform ? options?.transform(node) : node;
25
- return SKIP;
26
- });
16
+ if (!options?.transform || !options?.type) {
27
17
  return;
18
+ }
19
+ visit(tree, options?.type, (node) => {
20
+ options?.transform ? options?.transform(node) : node;
21
+ return SKIP;
22
+ });
23
+ return;
28
24
  };
29
- /**
30
- * Take a Markdown string and generate HTML from it
31
- */
32
25
  function htmlFromMarkdown(markdown, options) {
33
- // Add permitted tags and remove stripped ones
34
- const removeTags = options?.removeTags ?? [];
35
- const tagNames = [...(defaultSchema.tagNames ?? []), ...(options?.allowTags ?? [])].filter((t) => !removeTags.includes(t));
36
- const html = unified()
37
- // Parses markdown
38
- .use(remarkParse)
39
- // Support autolink literals, footnotes, strikethrough, tables and tasklists
40
- .use(remarkGfm)
41
- .use(transformNodes, {
42
- transform: options?.transform,
43
- type: options?.transformType,
44
- })
45
- // Allows any HTML tags
46
- .use(remarkRehype, { allowDangerousHtml: true })
47
- // Adds GitHub alerts
48
- .use(rehypeAlert)
49
- // Creates a HTML AST
50
- .use(rehypeRaw)
51
- // Removes disallowed tags
52
- .use(rehypeSanitize, {
53
- ...defaultSchema,
54
- // Don’t prefix the heading ids
55
- clobberPrefix: '',
56
- // Makes it even more strict
57
- tagNames,
58
- attributes: {
59
- ...defaultSchema.attributes,
60
- abbr: ['title'],
61
- // Allow alert classes
62
- div: ['class', ['className', /^markdown-alert(-.*)?$/]],
63
- },
64
- })
65
- // Syntax highlighting
66
- .use(rehypeHighlight, {
67
- languages: standardLanguages,
68
- // Enable auto detection
69
- detect: true,
70
- })
71
- // Adds target="_blank" to external links
72
- .use(rehypeExternalLinks, { target: '_blank' })
73
- // Formats the HTML
74
- .use(rehypeFormat)
75
- // Converts the HTML AST to a string
76
- .use(rehypeStringify)
77
- // Run the pipeline
78
- .processSync(markdown);
79
- return html.toString();
26
+ const removeTags = options?.removeTags ?? [];
27
+ const tagNames = [...defaultSchema.tagNames ?? [], ...options?.allowTags ?? []].filter(
28
+ (t) => !removeTags.includes(t)
29
+ );
30
+ const html = unified().use(remarkParse).use(remarkGfm).use(transformNodes, {
31
+ transform: options?.transform,
32
+ type: options?.transformType
33
+ }).use(remarkRehype, { allowDangerousHtml: true }).use(rehypeAlert).use(rehypeRaw).use(rehypeSanitize, {
34
+ ...defaultSchema,
35
+ // Don’t prefix the heading ids
36
+ clobberPrefix: "",
37
+ // Makes it even more strict
38
+ tagNames,
39
+ attributes: {
40
+ ...defaultSchema.attributes,
41
+ abbr: ["title"],
42
+ // Allow alert classes
43
+ div: ["class", ["className", /^markdown-alert(-.*)?$/]]
44
+ }
45
+ }).use(rehypeHighlight, {
46
+ languages: standardLanguages,
47
+ // Enable auto detection
48
+ detect: true
49
+ }).use(rehypeExternalLinks, { target: "_blank" }).use(rehypeFormat).use(rehypeStringify).processSync(markdown);
50
+ return html.toString();
80
51
  }
81
- /**
82
- * Create a Markdown AST from a string.
83
- */
84
52
  function getMarkdownAst(markdown) {
85
- return unified().use(remarkParse).use(remarkGfm).parse(markdown);
53
+ return unified().use(remarkParse).use(remarkGfm).parse(markdown);
86
54
  }
87
- /**
88
- * Find all headings of a specific type in a Markdown AST.
89
- */
90
55
  function getHeadings(markdown, depth = 1) {
91
- const tree = getMarkdownAst(markdown);
92
- const nodes = [];
93
- visit(tree, 'heading', (node) => {
94
- const text = findTextInHeading(node);
95
- if (text) {
96
- nodes.push({ depth: node.depth ?? depth, value: text.value });
97
- }
98
- });
99
- return nodes;
56
+ const tree = getMarkdownAst(markdown);
57
+ const nodes = [];
58
+ visit(tree, "heading", (node) => {
59
+ const text = findTextInHeading(node);
60
+ if (text) {
61
+ nodes.push({ depth: node.depth ?? depth, value: text.value });
62
+ }
63
+ });
64
+ return nodes;
100
65
  }
101
- /**
102
- * Find the text in a Markdown node (recursively).
103
- */
104
66
  function findTextInHeading(node) {
105
- if (node.type === 'text') {
106
- return node;
67
+ if (node.type === "text") {
68
+ return node;
69
+ }
70
+ if ("children" in node && node.children) {
71
+ for (const child of node.children) {
72
+ const text = findTextInHeading(child);
73
+ if (text) {
74
+ return text;
75
+ }
107
76
  }
108
- if ('children' in node && node.children) {
109
- for (const child of node.children) {
110
- const text = findTextInHeading(child);
111
- if (text) {
112
- return text;
113
- }
114
- }
115
- }
116
- return null;
77
+ }
78
+ return null;
117
79
  }
118
- /**
119
- * Return multiple Markdown documents. Every heading should be its own document.
120
- */
121
80
  function splitContent(markdown) {
122
- const tree = getMarkdownAst(markdown);
123
- /** Sections */
124
- const sections = [];
125
- /** Nodes inside a section */
126
- let nodes = [];
127
- tree.children?.forEach((node) => {
128
- // If the node is a heading, start a new section
129
- if (node.type === 'heading') {
130
- if (nodes.length) {
131
- sections.push(nodes);
132
- }
133
- sections.push([node]);
134
- nodes = [];
135
- }
136
- // Otherwise, add the node to the current section
137
- else {
138
- nodes.push(node);
139
- }
140
- });
141
- // Add any remaining nodes
142
- if (nodes.length) {
81
+ const tree = getMarkdownAst(markdown);
82
+ const sections = [];
83
+ let nodes = [];
84
+ tree.children?.forEach((node) => {
85
+ if (node.type === "heading") {
86
+ if (nodes.length) {
143
87
  sections.push(nodes);
88
+ }
89
+ sections.push([node]);
90
+ nodes = [];
91
+ } else {
92
+ nodes.push(node);
144
93
  }
145
- return sections.map((section) => createDocument(section));
94
+ });
95
+ if (nodes.length) {
96
+ sections.push(nodes);
97
+ }
98
+ return sections.map((section) => createDocument(section));
146
99
  }
147
- /**
148
- * Use remark to create a Markdown document from a list of nodes.
149
- */
150
100
  function createDocument(nodes) {
151
- // Create the Markdown string
152
- const markdown = unified().use(remarkStringify).use(remarkGfm).stringify({
153
- type: 'root',
154
- children: nodes,
155
- });
156
- // Remove the whitespace
157
- return markdown.trim();
101
+ const markdown = unified().use(remarkStringify).use(remarkGfm).stringify({
102
+ type: "root",
103
+ children: nodes
104
+ });
105
+ return markdown.trim();
158
106
  }
159
-
160
- export { getHeadings, htmlFromMarkdown, splitContent };
107
+ export {
108
+ getHeadings,
109
+ htmlFromMarkdown,
110
+ splitContent
111
+ };
112
+ //# sourceMappingURL=markdown.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/markdown/markdown.ts"],
4
+ "sourcesContent": ["import type { Heading, PhrasingContent, Root, RootContent, Text } from 'mdast'\nimport rehypeExternalLinks from 'rehype-external-links'\nimport rehypeFormat from 'rehype-format'\nimport rehypeRaw from 'rehype-raw'\nimport rehypeSanitize, { defaultSchema } from 'rehype-sanitize'\nimport rehypeStringify from 'rehype-stringify'\nimport remarkGfm from 'remark-gfm'\nimport remarkParse from 'remark-parse'\nimport remarkRehype from 'remark-rehype'\nimport remarkStringify from 'remark-stringify'\nimport { unified } from 'unified'\nimport type { Node } from 'unist'\nimport { SKIP, visit } from 'unist-util-visit'\n\nimport { standardLanguages } from '@/languages'\nimport { rehypeHighlight } from '@/rehype-highlight'\nimport { rehypeAlert } from '@/rehype-alert'\ntype Options = {\n transform?: (node: Record<string, any>) => Record<string, any>\n type?: string\n}\n\n/**\n * Plugin to transform nodes in a Markdown AST\n */\nconst transformNodes =\n (options?: Readonly<Options> | null | undefined, ..._ignored: any[]) =>\n (tree: Node) => {\n if (!options?.transform || !options?.type) {\n return\n }\n\n visit(tree, options?.type, (node) => {\n options?.transform ? options?.transform(node) : node\n\n return SKIP\n })\n\n return\n }\n\n/**\n * Take a Markdown string and generate HTML from it\n */\nexport function htmlFromMarkdown(\n markdown: string,\n options?: {\n removeTags?: string[]\n allowTags?: string[]\n transform?: (node: Record<string, any>) => Record<string, any>\n transformType?: string\n },\n) {\n // Add permitted tags and remove stripped ones\n const removeTags = options?.removeTags ?? []\n const tagNames = [...(defaultSchema.tagNames ?? []), ...(options?.allowTags ?? [])].filter(\n (t) => !removeTags.includes(t),\n )\n\n const html = unified()\n // Parses markdown\n .use(remarkParse)\n // Support autolink literals, footnotes, strikethrough, tables and tasklists\n .use(remarkGfm)\n .use(transformNodes, {\n transform: options?.transform,\n type: options?.transformType,\n })\n // Allows any HTML tags\n .use(remarkRehype, { allowDangerousHtml: true })\n // Adds GitHub alerts\n .use(rehypeAlert)\n // Creates a HTML AST\n .use(rehypeRaw)\n // Removes disallowed tags\n .use(rehypeSanitize, {\n ...defaultSchema,\n // Don\u2019t prefix the heading ids\n clobberPrefix: '',\n // Makes it even more strict\n tagNames,\n attributes: {\n ...defaultSchema.attributes,\n abbr: ['title'],\n // Allow alert classes\n div: ['class', ['className', /^markdown-alert(-.*)?$/]],\n },\n })\n // Syntax highlighting\n .use(rehypeHighlight, {\n languages: standardLanguages,\n // Enable auto detection\n detect: true,\n })\n // Adds target=\"_blank\" to external links\n .use(rehypeExternalLinks, { target: '_blank' })\n // Formats the HTML\n .use(rehypeFormat)\n // Converts the HTML AST to a string\n .use(rehypeStringify)\n // Run the pipeline\n .processSync(markdown)\n\n return html.toString()\n}\n\n/**\n * Create a Markdown AST from a string.\n */\nfunction getMarkdownAst(markdown: string): Root {\n return unified().use(remarkParse).use(remarkGfm).parse(markdown)\n}\n\n/**\n * Find all headings of a specific type in a Markdown AST.\n */\nexport function getHeadings(\n markdown: string,\n depth: number = 1,\n): {\n depth: number\n value: string\n}[] {\n const tree = getMarkdownAst(markdown)\n\n const nodes: {\n depth: number\n value: string\n }[] = []\n\n visit(tree, 'heading', (node) => {\n const text = findTextInHeading(node)\n\n if (text) {\n nodes.push({ depth: node.depth ?? depth, value: text.value })\n }\n })\n\n return nodes\n}\n\n/**\n * Find the text in a Markdown node (recursively).\n */\nfunction findTextInHeading(node: Heading | PhrasingContent): Text | null {\n if (node.type === 'text') {\n return node as Text\n }\n\n if ('children' in node && node.children) {\n for (const child of node.children) {\n const text = findTextInHeading(child)\n\n if (text) {\n return text\n }\n }\n }\n\n return null\n}\n\n/**\n * Return multiple Markdown documents. Every heading should be its own document.\n */\nexport function splitContent(markdown: string) {\n const tree = getMarkdownAst(markdown)\n\n /** Sections */\n const sections: RootContent[][] = []\n\n /** Nodes inside a section */\n let nodes: RootContent[] = []\n\n tree.children?.forEach((node) => {\n // If the node is a heading, start a new section\n if (node.type === 'heading') {\n if (nodes.length) {\n sections.push(nodes)\n }\n\n sections.push([node])\n\n nodes = []\n }\n // Otherwise, add the node to the current section\n else {\n nodes.push(node)\n }\n })\n\n // Add any remaining nodes\n if (nodes.length) {\n sections.push(nodes)\n }\n\n return sections.map((section) => createDocument(section))\n}\n\n/**\n * Use remark to create a Markdown document from a list of nodes.\n */\nfunction createDocument(nodes: RootContent[]) {\n // Create the Markdown string\n const markdown = unified().use(remarkStringify).use(remarkGfm).stringify({\n type: 'root',\n children: nodes,\n })\n\n // Remove the whitespace\n return markdown.trim()\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,17 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { splitContent } from "./markdown.js";
3
+ describe("splitContent", () => {
4
+ it("returns a single document if there\u2019s no heading", () => {
5
+ const sections = splitContent("Foobar");
6
+ expect(sections).toMatchObject(["Foobar"]);
7
+ });
8
+ it("splits the markdown document", () => {
9
+ const sections = splitContent("# Example Heading\n\nFoobar");
10
+ expect(sections).toMatchObject(["# Example Heading", "Foobar"]);
11
+ });
12
+ it("splits multiple headings", () => {
13
+ const sections = splitContent("# Example Heading\n\n## Other Heading\n\nFoobar");
14
+ expect(sections).toMatchObject(["# Example Heading", "## Other Heading", "Foobar"]);
15
+ });
16
+ });
17
+ //# sourceMappingURL=splitContent.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/markdown/splitContent.test.ts"],
4
+ "sourcesContent": ["import { describe, expect, it } from 'vitest'\n\nimport { splitContent } from './markdown'\n\ndescribe('splitContent', () => {\n it('returns a single document if there\u2019s no heading', () => {\n const sections = splitContent('Foobar')\n\n expect(sections).toMatchObject(['Foobar'])\n })\n\n it('splits the markdown document', () => {\n const sections = splitContent('# Example Heading\\n\\nFoobar')\n\n expect(sections).toMatchObject(['# Example Heading', 'Foobar'])\n })\n\n it('splits multiple headings', () => {\n const sections = splitContent('# Example Heading\\n\\n## Other Heading\\n\\nFoobar')\n\n expect(sections).toMatchObject(['# Example Heading', '## Other Heading', 'Foobar'])\n })\n})\n"],
5
+ "mappings": "AAAA,SAAS,UAAU,QAAQ,UAAU;AAErC,SAAS,oBAAoB;AAE7B,SAAS,gBAAgB,MAAM;AAC7B,KAAG,wDAAmD,MAAM;AAC1D,UAAM,WAAW,aAAa,QAAQ;AAEtC,WAAO,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC;AAAA,EAC3C,CAAC;AAED,KAAG,gCAAgC,MAAM;AACvC,UAAM,WAAW,aAAa,6BAA6B;AAE3D,WAAO,QAAQ,EAAE,cAAc,CAAC,qBAAqB,QAAQ,CAAC;AAAA,EAChE,CAAC;AAED,KAAG,4BAA4B,MAAM;AACnC,UAAM,WAAW,aAAa,iDAAiD;AAE/E,WAAO,QAAQ,EAAE,cAAc,CAAC,qBAAqB,oBAAoB,QAAQ,CAAC;AAAA,EACpF,CAAC;AACH,CAAC;",
6
+ "names": []
7
+ }
@@ -1 +1,5 @@
1
- export { rehypeAlert } from './rehype-alert.js';
1
+ import { rehypeAlert } from "./rehype-alert.js";
2
+ export {
3
+ rehypeAlert
4
+ };
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/rehype-alert/index.ts"],
4
+ "sourcesContent": ["export { rehypeAlert } from './rehype-alert'\n"],
5
+ "mappings": "AAAA,SAAS,mBAAmB;",
6
+ "names": []
7
+ }