data-structure-typed 2.5.0 → 2.5.1

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 (222) hide show
  1. package/.vitepress/cache/deps_temp_51f5f1b0/chunk-7OIKW5WK.js +12984 -0
  2. package/.vitepress/cache/deps_temp_51f5f1b0/package.json +3 -0
  3. package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vue_devtools-api.js +4505 -0
  4. package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vueuse_core.js +9731 -0
  5. package/.vitepress/cache/deps_temp_51f5f1b0/vue.js +347 -0
  6. package/CHANGELOG.md +3 -1
  7. package/README.md +63 -26
  8. package/dist/cjs/binary-tree.cjs +23698 -0
  9. package/dist/cjs/graph.cjs +5236 -0
  10. package/dist/cjs/hash.cjs +1262 -0
  11. package/dist/cjs/heap.cjs +1540 -0
  12. package/dist/cjs/index.cjs +28244 -14795
  13. package/dist/cjs/linked-list.cjs +4370 -0
  14. package/dist/cjs/matrix.cjs +1042 -0
  15. package/dist/cjs/priority-queue.cjs +1314 -0
  16. package/dist/cjs/queue.cjs +4090 -0
  17. package/dist/cjs/stack.cjs +861 -0
  18. package/dist/cjs/trie.cjs +1173 -0
  19. package/dist/cjs-legacy/binary-tree.cjs +23730 -0
  20. package/dist/cjs-legacy/graph.cjs +5234 -0
  21. package/dist/cjs-legacy/hash.cjs +1262 -0
  22. package/dist/cjs-legacy/heap.cjs +1537 -0
  23. package/dist/cjs-legacy/index.cjs +28239 -14790
  24. package/dist/cjs-legacy/linked-list.cjs +4376 -0
  25. package/dist/cjs-legacy/matrix.cjs +1045 -0
  26. package/dist/cjs-legacy/priority-queue.cjs +1312 -0
  27. package/dist/cjs-legacy/queue.cjs +4088 -0
  28. package/dist/cjs-legacy/stack.cjs +861 -0
  29. package/dist/cjs-legacy/trie.cjs +1172 -0
  30. package/dist/esm/binary-tree.mjs +23683 -0
  31. package/dist/esm/graph.mjs +5223 -0
  32. package/dist/esm/hash.mjs +1259 -0
  33. package/dist/esm/heap.mjs +1534 -0
  34. package/dist/esm/index.mjs +28242 -14796
  35. package/dist/esm/linked-list.mjs +4363 -0
  36. package/dist/esm/matrix.mjs +1038 -0
  37. package/dist/esm/priority-queue.mjs +1310 -0
  38. package/dist/esm/queue.mjs +4086 -0
  39. package/dist/esm/stack.mjs +859 -0
  40. package/dist/esm/trie.mjs +1170 -0
  41. package/dist/esm-legacy/binary-tree.mjs +23715 -0
  42. package/dist/esm-legacy/graph.mjs +5221 -0
  43. package/dist/esm-legacy/hash.mjs +1259 -0
  44. package/dist/esm-legacy/heap.mjs +1531 -0
  45. package/dist/esm-legacy/index.mjs +28237 -14791
  46. package/dist/esm-legacy/linked-list.mjs +4369 -0
  47. package/dist/esm-legacy/matrix.mjs +1041 -0
  48. package/dist/esm-legacy/priority-queue.mjs +1308 -0
  49. package/dist/esm-legacy/queue.mjs +4084 -0
  50. package/dist/esm-legacy/stack.mjs +859 -0
  51. package/dist/esm-legacy/trie.mjs +1169 -0
  52. package/dist/types/data-structures/base/index.d.ts +1 -0
  53. package/dist/types/data-structures/base/iterable-entry-base.d.ts +8 -8
  54. package/dist/types/data-structures/base/linear-base.d.ts +3 -3
  55. package/dist/types/data-structures/binary-tree/avl-tree.d.ts +240 -0
  56. package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +280 -0
  57. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +502 -2
  58. package/dist/types/data-structures/binary-tree/bst.d.ts +481 -1
  59. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +380 -0
  60. package/dist/types/data-structures/binary-tree/segment-tree.d.ts +120 -1
  61. package/dist/types/data-structures/binary-tree/tree-map.d.ts +2764 -384
  62. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +2753 -353
  63. package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +2241 -321
  64. package/dist/types/data-structures/binary-tree/tree-set.d.ts +2554 -274
  65. package/dist/types/data-structures/graph/abstract-graph.d.ts +4 -4
  66. package/dist/types/data-structures/graph/directed-graph.d.ts +200 -0
  67. package/dist/types/data-structures/graph/undirected-graph.d.ts +180 -0
  68. package/dist/types/data-structures/hash/hash-map.d.ts +230 -10
  69. package/dist/types/data-structures/heap/heap.d.ts +280 -0
  70. package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +343 -3
  71. package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +303 -3
  72. package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +362 -2
  73. package/dist/types/data-structures/matrix/matrix.d.ts +160 -0
  74. package/dist/types/data-structures/queue/deque.d.ts +304 -4
  75. package/dist/types/data-structures/queue/queue.d.ts +240 -0
  76. package/dist/types/data-structures/stack/stack.d.ts +200 -0
  77. package/dist/types/data-structures/trie/trie.d.ts +244 -4
  78. package/dist/types/interfaces/graph.d.ts +1 -1
  79. package/dist/types/types/common.d.ts +2 -2
  80. package/dist/types/types/data-structures/heap/heap.d.ts +1 -0
  81. package/dist/types/types/data-structures/priority-queue/priority-queue.d.ts +1 -0
  82. package/dist/types/types/utils/validate-type.d.ts +4 -4
  83. package/dist/umd/data-structure-typed.js +28022 -14573
  84. package/dist/umd/data-structure-typed.min.js +9 -3
  85. package/docs-site-docusaurus/README.md +41 -0
  86. package/docs-site-docusaurus/docs/api/README.md +52 -0
  87. package/docs-site-docusaurus/docs/api/classes/AVLTree.md +6130 -0
  88. package/docs-site-docusaurus/docs/api/classes/AVLTreeNode.md +282 -0
  89. package/docs-site-docusaurus/docs/api/classes/AbstractGraph.md +2266 -0
  90. package/docs-site-docusaurus/docs/api/classes/BST.md +5831 -0
  91. package/docs-site-docusaurus/docs/api/classes/BSTNode.md +333 -0
  92. package/docs-site-docusaurus/docs/api/classes/BinaryIndexedTree.md +455 -0
  93. package/docs-site-docusaurus/docs/api/classes/BinaryTree.md +4647 -0
  94. package/docs-site-docusaurus/docs/api/classes/BinaryTreeNode.md +331 -0
  95. package/docs-site-docusaurus/docs/api/classes/Deque.md +2767 -0
  96. package/docs-site-docusaurus/docs/api/classes/DirectedGraph.md +2999 -0
  97. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedList.md +2685 -0
  98. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedListNode.md +221 -0
  99. package/docs-site-docusaurus/docs/api/classes/FibonacciHeap.md +253 -0
  100. package/docs-site-docusaurus/docs/api/classes/FibonacciHeapNode.md +21 -0
  101. package/docs-site-docusaurus/docs/api/classes/HashMap.md +1333 -0
  102. package/docs-site-docusaurus/docs/api/classes/Heap.md +1881 -0
  103. package/docs-site-docusaurus/docs/api/classes/IterableElementBase.md +800 -0
  104. package/docs-site-docusaurus/docs/api/classes/IterableEntryBase.md +644 -0
  105. package/docs-site-docusaurus/docs/api/classes/LinearBase.md +1632 -0
  106. package/docs-site-docusaurus/docs/api/classes/LinearLinkedBase.md +1853 -0
  107. package/docs-site-docusaurus/docs/api/classes/LinkedHashMap.md +1108 -0
  108. package/docs-site-docusaurus/docs/api/classes/LinkedListNode.md +156 -0
  109. package/docs-site-docusaurus/docs/api/classes/LinkedListQueue.md +2824 -0
  110. package/docs-site-docusaurus/docs/api/classes/MapGraph.md +2929 -0
  111. package/docs-site-docusaurus/docs/api/classes/Matrix.md +1026 -0
  112. package/docs-site-docusaurus/docs/api/classes/MaxHeap.md +1866 -0
  113. package/docs-site-docusaurus/docs/api/classes/MaxPriorityQueue.md +1883 -0
  114. package/docs-site-docusaurus/docs/api/classes/MinHeap.md +1879 -0
  115. package/docs-site-docusaurus/docs/api/classes/MinPriorityQueue.md +1882 -0
  116. package/docs-site-docusaurus/docs/api/classes/Navigator.md +109 -0
  117. package/docs-site-docusaurus/docs/api/classes/PriorityQueue.md +1839 -0
  118. package/docs-site-docusaurus/docs/api/classes/Queue.md +2244 -0
  119. package/docs-site-docusaurus/docs/api/classes/RedBlackTree.md +6374 -0
  120. package/docs-site-docusaurus/docs/api/classes/SegmentTree.md +372 -0
  121. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedList.md +2897 -0
  122. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedListNode.md +169 -0
  123. package/docs-site-docusaurus/docs/api/classes/SkipList.md +1229 -0
  124. package/docs-site-docusaurus/docs/api/classes/Stack.md +1573 -0
  125. package/docs-site-docusaurus/docs/api/classes/TreeMap.md +1257 -0
  126. package/docs-site-docusaurus/docs/api/classes/TreeMultiMap.md +1475 -0
  127. package/docs-site-docusaurus/docs/api/classes/TreeSet.md +1117 -0
  128. package/docs-site-docusaurus/docs/api/classes/Trie.md +1708 -0
  129. package/docs-site-docusaurus/docs/api/classes/TrieNode.md +199 -0
  130. package/docs-site-docusaurus/docs/api/classes/UndirectedGraph.md +2979 -0
  131. package/docs-site-docusaurus/docs/guide/_category_.json +6 -0
  132. package/docs-site-docusaurus/docs/guide/architecture.md +613 -0
  133. package/docs-site-docusaurus/docs/guide/concepts.md +420 -0
  134. package/docs-site-docusaurus/docs/guide/guides.md +611 -0
  135. package/docs-site-docusaurus/docs/guide/installation.md +60 -0
  136. package/docs-site-docusaurus/docs/guide/integrations.md +823 -0
  137. package/docs-site-docusaurus/docs/guide/overview.md +638 -0
  138. package/docs-site-docusaurus/docs/guide/performance.md +833 -0
  139. package/docs-site-docusaurus/docs/guide/quick-start.md +73 -0
  140. package/docs-site-docusaurus/docusaurus.config.ts +159 -0
  141. package/docs-site-docusaurus/fix-mdx-generics.mjs +75 -0
  142. package/docs-site-docusaurus/package-lock.json +18667 -0
  143. package/docs-site-docusaurus/package.json +50 -0
  144. package/docs-site-docusaurus/prefix-class-to-methods.mjs +48 -0
  145. package/docs-site-docusaurus/sidebars.ts +23 -0
  146. package/docs-site-docusaurus/sort-protected.mjs +87 -0
  147. package/docs-site-docusaurus/src/css/custom.css +96 -0
  148. package/docs-site-docusaurus/src/pages/index.module.css +13 -0
  149. package/docs-site-docusaurus/src/pages/index.tsx +71 -0
  150. package/docs-site-docusaurus/src/pages/markdown-page.md +7 -0
  151. package/docs-site-docusaurus/src/theme/TOCItems/index.tsx +34 -0
  152. package/docs-site-docusaurus/static/.nojekyll +0 -0
  153. package/docs-site-docusaurus/static/img/docusaurus-social-card.jpg +0 -0
  154. package/docs-site-docusaurus/static/img/docusaurus.png +0 -0
  155. package/docs-site-docusaurus/static/img/favicon.ico +0 -0
  156. package/docs-site-docusaurus/static/img/favicon.png +0 -0
  157. package/docs-site-docusaurus/static/img/logo-180.png +0 -0
  158. package/docs-site-docusaurus/static/img/logo.jpg +0 -0
  159. package/docs-site-docusaurus/static/img/logo.png +0 -0
  160. package/docs-site-docusaurus/static/img/logo.svg +1 -0
  161. package/docs-site-docusaurus/static/img/og-image.png +0 -0
  162. package/docs-site-docusaurus/static/img/undraw_docusaurus_mountain.svg +171 -0
  163. package/docs-site-docusaurus/static/img/undraw_docusaurus_react.svg +170 -0
  164. package/docs-site-docusaurus/static/img/undraw_docusaurus_tree.svg +40 -0
  165. package/docs-site-docusaurus/static/robots.txt +4 -0
  166. package/docs-site-docusaurus/typedoc.json +23 -0
  167. package/package.json +106 -10
  168. package/src/data-structures/base/index.ts +1 -0
  169. package/src/data-structures/base/iterable-entry-base.ts +8 -8
  170. package/src/data-structures/base/linear-base.ts +3 -3
  171. package/src/data-structures/binary-tree/avl-tree.ts +240 -0
  172. package/src/data-structures/binary-tree/binary-indexed-tree.ts +281 -1
  173. package/src/data-structures/binary-tree/binary-tree.ts +502 -2
  174. package/src/data-structures/binary-tree/bst.ts +481 -1
  175. package/src/data-structures/binary-tree/red-black-tree.ts +380 -0
  176. package/src/data-structures/binary-tree/segment-tree.ts +121 -2
  177. package/src/data-structures/binary-tree/tree-map.ts +2862 -482
  178. package/src/data-structures/binary-tree/tree-multi-map.ts +2963 -563
  179. package/src/data-structures/binary-tree/tree-multi-set.ts +2399 -479
  180. package/src/data-structures/binary-tree/tree-set.ts +2685 -405
  181. package/src/data-structures/graph/abstract-graph.ts +4 -4
  182. package/src/data-structures/graph/directed-graph.ts +200 -0
  183. package/src/data-structures/graph/undirected-graph.ts +180 -0
  184. package/src/data-structures/hash/hash-map.ts +235 -15
  185. package/src/data-structures/heap/heap.ts +280 -0
  186. package/src/data-structures/linked-list/doubly-linked-list.ts +343 -3
  187. package/src/data-structures/linked-list/singly-linked-list.ts +303 -3
  188. package/src/data-structures/linked-list/skip-linked-list.ts +362 -2
  189. package/src/data-structures/matrix/matrix.ts +161 -1
  190. package/src/data-structures/queue/deque.ts +305 -5
  191. package/src/data-structures/queue/queue.ts +240 -0
  192. package/src/data-structures/stack/stack.ts +200 -0
  193. package/src/data-structures/trie/trie.ts +245 -5
  194. package/src/interfaces/graph.ts +1 -1
  195. package/src/types/common.ts +2 -2
  196. package/src/types/data-structures/heap/heap.ts +1 -0
  197. package/src/types/data-structures/priority-queue/priority-queue.ts +1 -0
  198. package/src/types/utils/validate-type.ts +4 -4
  199. package/vercel.json +6 -0
  200. package/dist/leetcode/avl-tree-counter.mjs +0 -2957
  201. package/dist/leetcode/avl-tree-multi-map.mjs +0 -2889
  202. package/dist/leetcode/avl-tree.mjs +0 -2720
  203. package/dist/leetcode/binary-tree.mjs +0 -1594
  204. package/dist/leetcode/bst.mjs +0 -2398
  205. package/dist/leetcode/deque.mjs +0 -683
  206. package/dist/leetcode/directed-graph.mjs +0 -1733
  207. package/dist/leetcode/doubly-linked-list.mjs +0 -709
  208. package/dist/leetcode/hash-map.mjs +0 -493
  209. package/dist/leetcode/heap.mjs +0 -542
  210. package/dist/leetcode/max-heap.mjs +0 -375
  211. package/dist/leetcode/max-priority-queue.mjs +0 -383
  212. package/dist/leetcode/min-heap.mjs +0 -363
  213. package/dist/leetcode/min-priority-queue.mjs +0 -371
  214. package/dist/leetcode/priority-queue.mjs +0 -363
  215. package/dist/leetcode/queue.mjs +0 -943
  216. package/dist/leetcode/red-black-tree.mjs +0 -2765
  217. package/dist/leetcode/singly-linked-list.mjs +0 -754
  218. package/dist/leetcode/stack.mjs +0 -217
  219. package/dist/leetcode/tree-counter.mjs +0 -3039
  220. package/dist/leetcode/tree-multi-map.mjs +0 -2913
  221. package/dist/leetcode/trie.mjs +0 -413
  222. package/dist/leetcode/undirected-graph.mjs +0 -1650
@@ -0,0 +1,73 @@
1
+ ---
2
+ description: "Get started with data-structure-typed in 30 seconds. Create trees, queues, and maps with a familiar JavaScript API."
3
+ ---
4
+
5
+ # Quick Start
6
+
7
+ ## Leaderboard (Ranked Collections)
8
+
9
+ ```typescript
10
+ import { RedBlackTree } from 'data-structure-typed';
11
+
12
+ // Descending comparator — highest scores first
13
+ const leaderboard = new RedBlackTree<number, string>([
14
+ [100, 'Alice'],
15
+ [85, 'Bob'],
16
+ [92, 'Charlie']
17
+ ], { comparator: (a, b) => b - a });
18
+
19
+ // Top-2 via lazy iterator — O(2 log n), no full traversal
20
+ const iter = leaderboard.entries();
21
+ for (let i = 0; i < 2; i++) {
22
+ const { value: [score, player] } = iter.next();
23
+ console.log(`${score}: ${player}`);
24
+ }
25
+ // Output: 100: Alice → 92: Charlie
26
+
27
+ // Update score — O(log n)
28
+ leaderboard.delete(85);
29
+ leaderboard.set(95, 'Bob');
30
+
31
+ // Range query — players scoring 90~100, O(log n + k)
32
+ const scores90to100 = leaderboard.rangeSearch([90, 100]);
33
+ ```
34
+
35
+ ## Task Queue (Scheduling)
36
+
37
+ ```typescript
38
+ import { MinPriorityQueue } from 'data-structure-typed';
39
+
40
+ const tasks = new MinPriorityQueue<{ task: string; priority: number }>(
41
+ [], { comparator: (a, b) => a.priority - b.priority }
42
+ );
43
+
44
+ tasks.add({ task: 'Send email', priority: 3 });
45
+ tasks.add({ task: 'Fix critical bug', priority: 1 });
46
+ tasks.add({ task: 'Update docs', priority: 2 });
47
+
48
+ // Process in priority order
49
+ while (!tasks.isEmpty()) {
50
+ const next = tasks.poll();
51
+ console.log(next?.task);
52
+ }
53
+ // Fix critical bug → Update docs → Send email
54
+ ```
55
+
56
+ ## Fast Autocomplete (Trie)
57
+
58
+ ```typescript
59
+ import { Trie } from 'data-structure-typed';
60
+
61
+ const trie = new Trie();
62
+ trie.addMany(['apple', 'application', 'app', 'apex']);
63
+
64
+ console.log(trie.getWords('app')); // ['app', 'apple', 'application']
65
+ console.log(trie.hasPrefix('ap')); // true
66
+ ```
67
+
68
+ ## Next Steps
69
+
70
+ - 📖 [Core Concepts](/guide/concepts) — understand the Big Three
71
+ - 📋 [API Reference](/api/) — full method signatures and examples
72
+ - 💡 [Real-World Examples](/guide/guides) — patterns for production
73
+ - ⚡ [Performance](/guide/performance) — benchmarks and comparisons
@@ -0,0 +1,159 @@
1
+ import {themes as prismThemes} from 'prism-react-renderer';
2
+ import type {Config} from '@docusaurus/types';
3
+ import type * as Preset from '@docusaurus/preset-classic';
4
+
5
+ const config: Config = {
6
+ title: 'data-structure-typed',
7
+ tagline: 'Advanced JavaScript/TypeScript data structures that feel like arrays.',
8
+ favicon: 'img/favicon.png',
9
+ url: 'https://data-structure-typed-docs.vercel.app',
10
+ baseUrl: '/',
11
+ organizationName: 'zrwusa',
12
+ projectName: 'data-structure-typed',
13
+ onBrokenLinks: 'warn',
14
+ onBrokenMarkdownLinks: 'warn',
15
+
16
+ markdown: {
17
+ format: 'md',
18
+ },
19
+
20
+ i18n: {
21
+ defaultLocale: 'en',
22
+ locales: ['en'],
23
+ },
24
+
25
+ headTags: [
26
+ {
27
+ tagName: 'meta',
28
+ attributes: {
29
+ name: 'algolia-site-verification',
30
+ content: '3BBF0EECA7FC2D22',
31
+ },
32
+ },
33
+ {
34
+ tagName: 'meta',
35
+ attributes: {
36
+ name: 'google-site-verification',
37
+ content: 'w6GgmRPPZZtNCDgG46ooge-oljMn_cm4-FCaRHoSYrQ',
38
+ },
39
+ },
40
+ {
41
+ tagName: 'meta',
42
+ attributes: {
43
+ name: 'keywords',
44
+ content: 'data structures, TypeScript, JavaScript, RedBlackTree, HashMap, Trie, Heap, PriorityQueue, Deque, Graph, BST, AVL Tree, zero-dependency, tree-shaking',
45
+ },
46
+ },
47
+ {
48
+ tagName: 'script',
49
+ attributes: {
50
+ type: 'application/ld+json',
51
+ },
52
+ innerHTML: JSON.stringify({
53
+ '@context': 'https://schema.org',
54
+ '@type': 'SoftwareSourceCode',
55
+ name: 'data-structure-typed',
56
+ description: 'A comprehensive TypeScript and JavaScript data structures library featuring production-ready implementations, zero dependencies, and an intuitive Array-like API.',
57
+ url: 'https://data-structure-typed-docs.vercel.app',
58
+ codeRepository: 'https://github.com/zrwusa/data-structure-typed',
59
+ programmingLanguage: ['TypeScript', 'JavaScript'],
60
+ license: 'https://opensource.org/licenses/MIT',
61
+ author: {
62
+ '@type': 'Person',
63
+ name: 'Pablo Zeng',
64
+ url: 'https://github.com/zrwusa',
65
+ },
66
+ }),
67
+ },
68
+ ],
69
+
70
+ plugins: [],
71
+
72
+ presets: [
73
+ [
74
+ 'classic',
75
+ {
76
+ docs: {
77
+ sidebarPath: './sidebars.ts',
78
+ editUrl: 'https://github.com/zrwusa/data-structure-typed/edit/main/docs-site-docusaurus/',
79
+ remarkPlugins: [],
80
+ rehypePlugins: [],
81
+ },
82
+ theme: {
83
+ customCss: './src/css/custom.css',
84
+ },
85
+ } satisfies Preset.Options,
86
+ ],
87
+ ],
88
+
89
+ themeConfig: {
90
+ image: 'img/og-image.png',
91
+ metadata: [
92
+ {name: 'og:image:width', content: '1200'},
93
+ {name: 'og:image:height', content: '630'},
94
+ ],
95
+ navbar: {
96
+ title: 'data-structure-typed',
97
+ logo: {
98
+ alt: 'data-structure-typed logo',
99
+ src: 'img/logo.png',
100
+ width: 32,
101
+ height: 32,
102
+ },
103
+ items: [
104
+ {type: 'docSidebar', sidebarId: 'guideSidebar', position: 'left', label: 'Guide'},
105
+ {to: '/docs/api/', label: 'API', position: 'left'},
106
+ {
107
+ href: 'https://github.com/zrwusa/data-structure-typed',
108
+ label: 'GitHub',
109
+ position: 'right',
110
+ },
111
+ {
112
+ href: 'https://www.npmjs.com/package/data-structure-typed',
113
+ label: 'npm',
114
+ position: 'right',
115
+ },
116
+ ],
117
+ },
118
+ footer: {
119
+ style: 'dark',
120
+ links: [
121
+ {
122
+ title: 'Docs',
123
+ items: [
124
+ {label: 'Installation', to: '/docs/guide/installation'},
125
+ {label: 'Quick Start', to: '/docs/guide/quick-start'},
126
+ {label: 'API Reference', to: '/docs/api/'},
127
+ ],
128
+ },
129
+ {
130
+ title: 'More',
131
+ items: [
132
+ {label: 'GitHub', href: 'https://github.com/zrwusa/data-structure-typed'},
133
+ {label: 'npm', href: 'https://www.npmjs.com/package/data-structure-typed'},
134
+ {label: 'Changelog', href: 'https://github.com/zrwusa/data-structure-typed/blob/main/CHANGELOG.md'},
135
+ ],
136
+ },
137
+ ],
138
+ copyright: `Copyright © ${new Date().getFullYear()} Pablo Zeng. Built with Docusaurus.`,
139
+ },
140
+ prism: {
141
+ theme: prismThemes.github,
142
+ darkTheme: prismThemes.dracula,
143
+ },
144
+ algolia: {
145
+ appId: '2CK3V43PRR',
146
+ apiKey: 'ab7ce559e3114987b4f26430427409ae',
147
+ indexName: 'data-structure-typed-docs-crawler',
148
+ contextualSearch: false,
149
+ searchPagePath: 'search',
150
+ searchParameters: {
151
+ hitsPerPage: 30,
152
+ distinct: false,
153
+ },
154
+ maxResultsPerGroup: 20,
155
+ },
156
+ } satisfies Preset.ThemeConfig,
157
+ };
158
+
159
+ export default config;
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Fix TypeScript generics <T> in TypeDoc markdown for MDX compatibility.
3
+ * Converts bare < > in non-fenced-code, non-backtick content to HTML entities.
4
+ */
5
+ import { readFileSync, writeFileSync, readdirSync, statSync } from 'fs';
6
+ import { join } from 'path';
7
+
8
+ function walk(dir) {
9
+ const results = [];
10
+ for (const f of readdirSync(dir)) {
11
+ const full = join(dir, f);
12
+ if (statSync(full).isDirectory()) results.push(...walk(full));
13
+ else if (full.endsWith('.md')) results.push(full);
14
+ }
15
+ return results;
16
+ }
17
+
18
+ function fixFile(content) {
19
+ // Split into fenced code blocks vs non-code sections
20
+ // Use a state machine that properly tracks ``` fences
21
+ const result = [];
22
+ const lines = content.split('\n');
23
+ let inFence = false;
24
+ let fenceChar = '';
25
+ let changed = false;
26
+
27
+ for (const line of lines) {
28
+ const trimmed = line.trim();
29
+ // Detect fence start/end
30
+ const fenceMatch = trimmed.match(/^(`{3,}|~{3,})/);
31
+ if (fenceMatch) {
32
+ if (!inFence) {
33
+ inFence = true;
34
+ fenceChar = fenceMatch[1][0];
35
+ } else if (trimmed.startsWith(fenceChar.repeat(3))) {
36
+ inFence = false;
37
+ }
38
+ result.push(line);
39
+ continue;
40
+ }
41
+
42
+ if (inFence) {
43
+ result.push(line);
44
+ continue;
45
+ }
46
+
47
+ // Outside code blocks: escape generics outside of inline backticks
48
+ const parts = line.split(/(`[^`]*`)/);
49
+ const newParts = parts.map((part, i) => {
50
+ if (i % 2 !== 0) return part; // inside backtick
51
+ // Escape < ... > that look like TypeScript generics
52
+ return part.replace(/<([A-Za-z][^>]*)>/g, (m, inner) => {
53
+ changed = true;
54
+ return `&lt;${inner}&gt;`;
55
+ });
56
+ });
57
+ result.push(newParts.join(''));
58
+ }
59
+
60
+ return { content: result.join('\n'), changed };
61
+ }
62
+
63
+ const files = walk('docs/api');
64
+ let count = 0;
65
+
66
+ for (const f of files) {
67
+ const original = readFileSync(f, 'utf8');
68
+ const { content, changed } = fixFile(original);
69
+ if (changed) {
70
+ writeFileSync(f, content);
71
+ count++;
72
+ }
73
+ }
74
+
75
+ console.log(`✅ Fixed generics in ${count}/${files.length} files`);