@docusaurus/mdx-loader 0.0.0-4620 → 0.0.0-4623

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/remark/toc/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAC,MAAM,EAAc,MAAM,SAAS,CAAC;AAajD,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAyCD,QAAA,MAAM,MAAM,EAAE,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC,CAgBpC,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/remark/toc/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH,OAAO,KAAK,EAAC,MAAM,EAAc,MAAM,SAAS,CAAC;AAWjD,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAyCD,QAAA,MAAM,MAAM,EAAE,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC,CA+BpC,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -10,7 +10,9 @@ const tslib_1 = require("tslib");
10
10
  const parser_1 = require("@babel/parser");
11
11
  const traverse_1 = (0, tslib_1.__importDefault)(require("@babel/traverse"));
12
12
  const stringify_object_1 = (0, tslib_1.__importDefault)(require("stringify-object"));
13
- const search_1 = (0, tslib_1.__importDefault)(require("./search"));
13
+ const mdast_util_to_string_1 = (0, tslib_1.__importDefault)(require("mdast-util-to-string"));
14
+ const unist_util_visit_1 = (0, tslib_1.__importDefault)(require("unist-util-visit"));
15
+ const utils_1 = require("../utils");
14
16
  const parseOptions = {
15
17
  plugins: ['jsx'],
16
18
  sourceType: 'module',
@@ -55,7 +57,19 @@ const getOrCreateExistingTargetIndex = (children, name) => {
55
57
  const plugin = (options = {}) => {
56
58
  const name = options.name || 'toc';
57
59
  const transformer = (node) => {
58
- const headings = (0, search_1.default)(node);
60
+ const headings = [];
61
+ (0, unist_util_visit_1.default)(node, 'heading', (child, _index, parent) => {
62
+ const value = (0, mdast_util_to_string_1.default)(child);
63
+ // depth:1 headings are titles and not included in the TOC
64
+ if (parent !== node || !value || child.depth < 2) {
65
+ return;
66
+ }
67
+ headings.push({
68
+ value: (0, utils_1.toValue)(child),
69
+ id: child.data.id,
70
+ level: child.depth,
71
+ });
72
+ });
59
73
  const { children } = node;
60
74
  const targetIndex = getOrCreateExistingTargetIndex(children, name);
61
75
  if (headings && headings.length) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/remark/toc/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,0CAAwD;AAExD,4EAAuC;AACvC,qFAA+C;AAC/C,mEAA8B;AAK9B,MAAM,YAAY,GAAkB;IAClC,OAAO,EAAE,CAAC,KAAK,CAAC;IAChB,UAAU,EAAE,QAAQ;CACrB,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,KAAW,EAAoB,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;AAC5E,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACjD,MAAM,QAAQ,GAAG,CAAC,KAAW,EAAoB,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;AAM5E,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAE,IAAY,EAAE,EAAE;IAChD,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,MAAM,GAAG,GAAG,IAAA,cAAK,EAAC,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IAC7C,IAAA,kBAAQ,EAAC,GAAG,EAAE;QACZ,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE;YAC3B,IAAK,IAAI,CAAC,IAAI,CAAC,EAAiB,CAAC,IAAI,KAAK,IAAI,EAAE;gBAC9C,KAAK,GAAG,IAAI,CAAC;aACd;QACH,CAAC;KACF,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,8BAA8B,GAAG,CAAC,QAAgB,EAAE,IAAY,EAAE,EAAE;IACxE,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;IACtB,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;IAErB,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAChC,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;YACnB,YAAY,GAAG,KAAK,CAAC;SACtB;aAAM,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE;YACnD,WAAW,GAAG,KAAK,CAAC;SACrB;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE;QACtB,MAAM,MAAM,GAAG;YACb,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,gBAAgB,IAAI,QAAQ;SACpC,CAAC;QAEF,WAAW,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;KACzC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,MAAM,GAA6B,CAAC,OAAO,GAAG,EAAE,EAAE,EAAE;IACxD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC;IAEnC,MAAM,WAAW,GAAgB,CAAC,IAAI,EAAE,EAAE;QACxC,MAAM,QAAQ,GAAG,IAAA,gBAAM,EAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,EAAC,QAAQ,EAAC,GAAG,IAAuB,CAAC;QAC3C,MAAM,WAAW,GAAG,8BAA8B,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAEnE,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,EAAE;YAC/B,QAAQ,CAAC,WAAW,CAAC,CAAC,KAAK,GAAG,gBAAgB,IAAI,MAAM,IAAA,0BAAe,EACrE,QAAQ,CACT,GAAG,CAAC;SACN;IACH,CAAC,CAAC;IAEF,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAEF,kBAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/remark/toc/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@docusaurus/mdx-loader",
3
- "version": "0.0.0-4620",
3
+ "version": "0.0.0-4623",
4
4
  "description": "Docusaurus Loader for MDX",
5
5
  "main": "lib/index.js",
6
6
  "types": "src/mdx-loader.d.ts",
@@ -20,8 +20,8 @@
20
20
  "dependencies": {
21
21
  "@babel/parser": "^7.17.3",
22
22
  "@babel/traverse": "^7.17.3",
23
- "@docusaurus/logger": "0.0.0-4620",
24
- "@docusaurus/utils": "0.0.0-4620",
23
+ "@docusaurus/logger": "0.0.0-4623",
24
+ "@docusaurus/utils": "0.0.0-4623",
25
25
  "@mdx-js/mdx": "^1.6.22",
26
26
  "escape-html": "^1.0.3",
27
27
  "file-loader": "^6.2.0",
@@ -36,7 +36,7 @@
36
36
  "webpack": "^5.69.1"
37
37
  },
38
38
  "devDependencies": {
39
- "@docusaurus/types": "0.0.0-4620",
39
+ "@docusaurus/types": "0.0.0-4623",
40
40
  "@types/escape-html": "^1.0.1",
41
41
  "@types/mdast": "^3.0.7",
42
42
  "@types/stringify-object": "^3.3.1",
@@ -54,5 +54,5 @@
54
54
  "engines": {
55
55
  "node": ">=14"
56
56
  },
57
- "gitHead": "21930f0c569b3c2fe2fc5d0ec67c544dc795d9c6"
57
+ "gitHead": "97710505efdb9fceea33bd2dbb8eaa2860e391a1"
58
58
  }
@@ -9,10 +9,14 @@ import {parse, type ParserOptions} from '@babel/parser';
9
9
  import type {Identifier} from '@babel/types';
10
10
  import traverse from '@babel/traverse';
11
11
  import stringifyObject from 'stringify-object';
12
- import search from './search';
13
- import type {Plugin, Transformer} from 'unified';
12
+ import toString from 'mdast-util-to-string';
13
+ import visit from 'unist-util-visit';
14
+ import {toValue} from '../utils';
15
+
16
+ import type {TOCItem} from '@docusaurus/types';
14
17
  import type {Node, Parent} from 'unist';
15
- import type {Literal} from 'mdast';
18
+ import type {Heading, Literal} from 'mdast';
19
+ import type {Plugin, Transformer} from 'unified';
16
20
 
17
21
  const parseOptions: ParserOptions = {
18
22
  plugins: ['jsx'],
@@ -70,7 +74,22 @@ const plugin: Plugin<[PluginOptions?]> = (options = {}) => {
70
74
  const name = options.name || 'toc';
71
75
 
72
76
  const transformer: Transformer = (node) => {
73
- const headings = search(node);
77
+ const headings: TOCItem[] = [];
78
+
79
+ visit(node, 'heading', (child: Heading, _index, parent) => {
80
+ const value = toString(child);
81
+
82
+ // depth:1 headings are titles and not included in the TOC
83
+ if (parent !== node || !value || child.depth < 2) {
84
+ return;
85
+ }
86
+
87
+ headings.push({
88
+ value: toValue(child),
89
+ id: child.data!.id as string,
90
+ level: child.depth,
91
+ });
92
+ });
74
93
  const {children} = node as Parent<Literal>;
75
94
  const targetIndex = getOrCreateExistingTargetIndex(children, name);
76
95
 
@@ -1,14 +0,0 @@
1
- /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
7
- import type { TOCItem } from '@docusaurus/types';
8
- import type { Node } from 'unist';
9
- /**
10
- *
11
- * Generate a TOC AST from the raw Markdown contents
12
- */
13
- export default function search(node: Node): TOCItem[];
14
- //# sourceMappingURL=search.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/remark/toc/search.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,OAAO,CAAC;AAUhC;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,EAAE,CAsDpD"}
@@ -1,66 +0,0 @@
1
- "use strict";
2
- /**
3
- * Copyright (c) Facebook, Inc. and its affiliates.
4
- *
5
- * This source code is licensed under the MIT license found in the
6
- * LICENSE file in the root directory of this source tree.
7
- */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- const tslib_1 = require("tslib");
10
- const mdast_util_to_string_1 = (0, tslib_1.__importDefault)(require("mdast-util-to-string"));
11
- const unist_util_visit_1 = (0, tslib_1.__importDefault)(require("unist-util-visit"));
12
- const utils_1 = require("../utils");
13
- /**
14
- *
15
- * Generate a TOC AST from the raw Markdown contents
16
- */
17
- function search(node) {
18
- const headings = [];
19
- (0, unist_util_visit_1.default)(node, 'heading', (child, _index, parent) => {
20
- const value = (0, mdast_util_to_string_1.default)(child);
21
- // depth:1 headings are titles and not included in the TOC
22
- if (parent !== node || !value || child.depth < 2) {
23
- return;
24
- }
25
- headings.push({
26
- node: {
27
- value: (0, utils_1.toValue)(child),
28
- id: child.data.id,
29
- children: [],
30
- level: child.depth,
31
- },
32
- level: child.depth,
33
- parentIndex: -1,
34
- });
35
- });
36
- // Keep track of which previous index would be the current heading's direct
37
- // parent. Each entry <i> is the last index of the `headings` array at heading
38
- // level <i>. We will modify these indices as we iterate through all headings.
39
- // e.g. if an ### H3 was last seen at index 2, then prevIndexForLevel[3] === 2
40
- // indices 0 and 1 will remain unused.
41
- const prevIndexForLevel = Array(7).fill(-1);
42
- headings.forEach((curr, currIndex) => {
43
- // take the last seen index for each ancestor level. the highest
44
- // index will be the direct ancestor of the current heading.
45
- const ancestorLevelIndexes = prevIndexForLevel.slice(2, curr.level);
46
- curr.parentIndex = Math.max(...ancestorLevelIndexes);
47
- // mark that curr.level was last seen at the current index
48
- prevIndexForLevel[curr.level] = currIndex;
49
- });
50
- const rootNodeIndexes = [];
51
- // For a given parentIndex, add each Node into that parent's `children` array
52
- headings.forEach((heading, i) => {
53
- if (heading.parentIndex >= 0) {
54
- headings[heading.parentIndex].node.children.push(heading.node);
55
- }
56
- else {
57
- rootNodeIndexes.push(i);
58
- }
59
- });
60
- const toc = headings
61
- .filter((_, k) => rootNodeIndexes.includes(k)) // only return root nodes
62
- .map((heading) => heading.node); // only return Node, no metadata
63
- return toc;
64
- }
65
- exports.default = search;
66
- //# sourceMappingURL=search.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/remark/toc/search.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,6FAA4C;AAC5C,qFAAqC;AACrC,oCAAiC;AAYjC;;;GAGG;AACH,SAAwB,MAAM,CAAC,IAAU;IACvC,MAAM,QAAQ,GAAiB,EAAE,CAAC;IAElC,IAAA,0BAAK,EAAC,IAAI,EAAE,SAAS,EAAE,CAAC,KAAc,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACxD,MAAM,KAAK,GAAG,IAAA,8BAAQ,EAAC,KAAK,CAAC,CAAC;QAE9B,0DAA0D;QAC1D,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE;YAChD,OAAO;SACR;QAED,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE;gBACJ,KAAK,EAAE,IAAA,eAAO,EAAC,KAAK,CAAC;gBACrB,EAAE,EAAE,KAAK,CAAC,IAAK,CAAC,EAAY;gBAC5B,QAAQ,EAAE,EAAE;gBACZ,KAAK,EAAE,KAAK,CAAC,KAAK;aACnB;YACD,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,WAAW,EAAE,CAAC,CAAC;SAChB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,2EAA2E;IAC3E,8EAA8E;IAC9E,8EAA8E;IAC9E,8EAA8E;IAC9E,sCAAsC;IACtC,MAAM,iBAAiB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5C,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;QACnC,gEAAgE;QAChE,4DAA4D;QAC5D,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACpE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,oBAAoB,CAAC,CAAC;QACrD,0DAA0D;QAC1D,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,MAAM,eAAe,GAAa,EAAE,CAAC;IAErC,6EAA6E;IAC7E,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE;QAC9B,IAAI,OAAO,CAAC,WAAW,IAAI,CAAC,EAAE;YAC5B,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SAChE;aAAM;YACL,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACzB;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,QAAQ;SACjB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB;SACvE,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,gCAAgC;IACnE,OAAO,GAAG,CAAC;AACb,CAAC;AAtDD,yBAsDC"}
@@ -1,80 +0,0 @@
1
- /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
7
-
8
- import toString from 'mdast-util-to-string';
9
- import visit from 'unist-util-visit';
10
- import {toValue} from '../utils';
11
- import type {TOCItem} from '@docusaurus/types';
12
- import type {Node} from 'unist';
13
- import type {Heading} from 'mdast';
14
-
15
- // Intermediate interface for TOC algorithm
16
- interface SearchItem {
17
- node: TOCItem;
18
- level: number;
19
- parentIndex: number;
20
- }
21
-
22
- /**
23
- *
24
- * Generate a TOC AST from the raw Markdown contents
25
- */
26
- export default function search(node: Node): TOCItem[] {
27
- const headings: SearchItem[] = [];
28
-
29
- visit(node, 'heading', (child: Heading, _index, parent) => {
30
- const value = toString(child);
31
-
32
- // depth:1 headings are titles and not included in the TOC
33
- if (parent !== node || !value || child.depth < 2) {
34
- return;
35
- }
36
-
37
- headings.push({
38
- node: {
39
- value: toValue(child),
40
- id: child.data!.id as string,
41
- children: [],
42
- level: child.depth,
43
- },
44
- level: child.depth,
45
- parentIndex: -1,
46
- });
47
- });
48
-
49
- // Keep track of which previous index would be the current heading's direct
50
- // parent. Each entry <i> is the last index of the `headings` array at heading
51
- // level <i>. We will modify these indices as we iterate through all headings.
52
- // e.g. if an ### H3 was last seen at index 2, then prevIndexForLevel[3] === 2
53
- // indices 0 and 1 will remain unused.
54
- const prevIndexForLevel = Array(7).fill(-1);
55
-
56
- headings.forEach((curr, currIndex) => {
57
- // take the last seen index for each ancestor level. the highest
58
- // index will be the direct ancestor of the current heading.
59
- const ancestorLevelIndexes = prevIndexForLevel.slice(2, curr.level);
60
- curr.parentIndex = Math.max(...ancestorLevelIndexes);
61
- // mark that curr.level was last seen at the current index
62
- prevIndexForLevel[curr.level] = currIndex;
63
- });
64
-
65
- const rootNodeIndexes: number[] = [];
66
-
67
- // For a given parentIndex, add each Node into that parent's `children` array
68
- headings.forEach((heading, i) => {
69
- if (heading.parentIndex >= 0) {
70
- headings[heading.parentIndex].node.children.push(heading.node);
71
- } else {
72
- rootNodeIndexes.push(i);
73
- }
74
- });
75
-
76
- const toc = headings
77
- .filter((_, k) => rootNodeIndexes.includes(k)) // only return root nodes
78
- .map((heading) => heading.node); // only return Node, no metadata
79
- return toc;
80
- }