fumadocs-core 16.4.5 → 16.4.7

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 (187) hide show
  1. package/dist/{advanced-DSlc7qa9.js → advanced-tbtFDsHU.js} +3 -3
  2. package/dist/advanced-tbtFDsHU.js.map +1 -0
  3. package/dist/{algolia-FqjcaTcD.d.ts → algolia-BFVpYDZ_.d.ts} +2 -2
  4. package/dist/{algolia-FqjcaTcD.d.ts.map → algolia-BFVpYDZ_.d.ts.map} +1 -1
  5. package/dist/{algolia-BGWM-DkQ.js → algolia-Dbt0kj8j.js} +2 -2
  6. package/dist/algolia-Dbt0kj8j.js.map +1 -0
  7. package/dist/breadcrumb.d.ts +1 -1
  8. package/dist/breadcrumb.js +2 -2
  9. package/dist/breadcrumb.js.map +1 -1
  10. package/dist/{codeblock-utils-Dh1w8ICD.d.ts → codeblock-utils-CdA7nXLP.d.ts} +1 -1
  11. package/dist/{codeblock-utils-Dh1w8ICD.d.ts.map → codeblock-utils-CdA7nXLP.d.ts.map} +1 -1
  12. package/dist/content/mdx/preset-bundler.d.ts +8 -8
  13. package/dist/content/mdx/preset-bundler.js +1 -1
  14. package/dist/content/mdx/preset-runtime.d.ts +8 -8
  15. package/dist/content/mdx/preset-runtime.js +1 -1
  16. package/dist/content/toc.js +1 -1
  17. package/dist/{definitions-DJAPG-2U.d.ts → definitions-Ca2P2viV.d.ts} +1 -1
  18. package/dist/{definitions-DJAPG-2U.d.ts.map → definitions-Ca2P2viV.d.ts.map} +1 -1
  19. package/dist/{fetch-B1nmMSyw.js → fetch-CiphcAUR.js} +1 -1
  20. package/dist/{fetch-B1nmMSyw.js.map → fetch-CiphcAUR.js.map} +1 -1
  21. package/dist/framework/index.d.ts +4 -4
  22. package/dist/framework/next.d.ts +2 -2
  23. package/dist/framework/react-router.d.ts +2 -2
  24. package/dist/framework/react-router.js.map +1 -1
  25. package/dist/framework/tanstack.d.ts +2 -2
  26. package/dist/framework/tanstack.js.map +1 -1
  27. package/dist/framework/waku.d.ts +2 -2
  28. package/dist/framework/waku.js.map +1 -1
  29. package/dist/highlight/client.d.ts +1 -1
  30. package/dist/highlight/client.js +1 -1
  31. package/dist/highlight/client.js.map +1 -1
  32. package/dist/highlight/index.d.ts +1 -1
  33. package/dist/highlight/index.js +1 -1
  34. package/dist/i18n/index.d.ts +1 -1
  35. package/dist/i18n/middleware.d.ts +1 -1
  36. package/dist/i18n/middleware.js.map +1 -1
  37. package/dist/{icon-5lVe3l-0.js → icon-CL3r1pNG.js} +1 -1
  38. package/dist/{icon-5lVe3l-0.js.map → icon-CL3r1pNG.js.map} +1 -1
  39. package/dist/index-BaMZ8PEK.d.ts +45 -0
  40. package/dist/index-BaMZ8PEK.d.ts.map +1 -0
  41. package/dist/index-CmGSoB4T.d.ts +18 -0
  42. package/dist/index-CmGSoB4T.d.ts.map +1 -0
  43. package/dist/{index-BhVrX5J1.d.ts → index-DxhhLscI.d.ts} +1 -1
  44. package/dist/{index-BhVrX5J1.d.ts.map → index-DxhhLscI.d.ts.map} +1 -1
  45. package/dist/{index-Co_C8NEi.d.ts → index-aE27-b16.d.ts} +5 -4
  46. package/dist/index-aE27-b16.d.ts.map +1 -0
  47. package/dist/{mdast-utils-ix4DsXJP.js → mdast-utils-B8O-41y4.js} +1 -1
  48. package/dist/{mdast-utils-ix4DsXJP.js.map → mdast-utils-B8O-41y4.js.map} +1 -1
  49. package/dist/mdx-plugins/codeblock-utils.d.ts +1 -1
  50. package/dist/mdx-plugins/codeblock-utils.js.map +1 -1
  51. package/dist/mdx-plugins/index.d.ts +16 -15
  52. package/dist/mdx-plugins/index.js +6 -5
  53. package/dist/mdx-plugins/rehype-code.d.ts +1 -1
  54. package/dist/mdx-plugins/rehype-code.js +2 -2
  55. package/dist/mdx-plugins/rehype-toc.d.ts +1 -1
  56. package/dist/mdx-plugins/rehype-toc.js +1 -1
  57. package/dist/mdx-plugins/remark-admonition.d.ts +1 -1
  58. package/dist/mdx-plugins/remark-admonition.js +1 -1
  59. package/dist/mdx-plugins/remark-code-tab.d.ts +1 -1
  60. package/dist/mdx-plugins/remark-code-tab.js.map +1 -1
  61. package/dist/mdx-plugins/remark-directive-admonition.d.ts +1 -1
  62. package/dist/mdx-plugins/remark-directive-admonition.js.map +1 -1
  63. package/dist/mdx-plugins/remark-feedback-block.d.ts +2 -0
  64. package/dist/mdx-plugins/remark-feedback-block.js +48 -0
  65. package/dist/mdx-plugins/remark-feedback-block.js.map +1 -0
  66. package/dist/mdx-plugins/remark-gfm.d.ts +1 -1
  67. package/dist/mdx-plugins/remark-heading.d.ts +1 -1
  68. package/dist/mdx-plugins/remark-heading.js +1 -1
  69. package/dist/mdx-plugins/remark-heading.js.map +1 -1
  70. package/dist/mdx-plugins/remark-image.d.ts +1 -1
  71. package/dist/mdx-plugins/remark-image.js.map +1 -1
  72. package/dist/mdx-plugins/remark-mdx-files.d.ts +1 -1
  73. package/dist/mdx-plugins/remark-mdx-files.js.map +1 -1
  74. package/dist/mdx-plugins/remark-mdx-mermaid.d.ts +1 -1
  75. package/dist/mdx-plugins/remark-npm.d.ts +1 -1
  76. package/dist/mdx-plugins/remark-npm.js.map +1 -1
  77. package/dist/mdx-plugins/remark-steps.d.ts +1 -1
  78. package/dist/mdx-plugins/remark-steps.js.map +1 -1
  79. package/dist/mdx-plugins/remark-structure.d.ts +1 -1
  80. package/dist/mdx-plugins/remark-structure.js +1 -1
  81. package/dist/mdx-plugins/remark-structure.js.map +1 -1
  82. package/dist/{mixedbread-DSiQfUnN.js → mixedbread-CPGJEgwq.js} +3 -3
  83. package/dist/mixedbread-CPGJEgwq.js.map +1 -0
  84. package/dist/negotiation/index.js.map +1 -1
  85. package/dist/{normalize-url-3WQZ_H_j.js → normalize-url-CEfNKxaE.js} +1 -1
  86. package/dist/{normalize-url-3WQZ_H_j.js.map → normalize-url-CEfNKxaE.js.map} +1 -1
  87. package/dist/{orama-cloud-legacy-CRZzZXWn.js → orama-cloud-legacy-NJTbB19B.js} +3 -3
  88. package/dist/orama-cloud-legacy-NJTbB19B.js.map +1 -0
  89. package/dist/{orama-cloud-BMDBfk05.js → orama-cloud-yicpgD0c.js} +3 -3
  90. package/dist/orama-cloud-yicpgD0c.js.map +1 -0
  91. package/dist/page-tree/index.d.ts +3 -45
  92. package/dist/page-tree/index.js +1 -1
  93. package/dist/{path-D6M0ZQvO.js → path-CECfI3nn.js} +2 -2
  94. package/dist/{path-D6M0ZQvO.js.map → path-CECfI3nn.js.map} +1 -1
  95. package/dist/{rehype-code-Bd52chOe.d.ts → rehype-code-BUrju-yF.d.ts} +1 -1
  96. package/dist/{rehype-code-Bd52chOe.d.ts.map → rehype-code-BUrju-yF.d.ts.map} +1 -1
  97. package/dist/{rehype-code-j8FAEnuU.js → rehype-code-Ct5Pb6BZ.js} +2 -2
  98. package/dist/rehype-code-Ct5Pb6BZ.js.map +1 -0
  99. package/dist/{rehype-toc-Dqgey2tW.js → rehype-toc-CTG0x7La.js} +1 -1
  100. package/dist/rehype-toc-CTG0x7La.js.map +1 -0
  101. package/dist/{rehype-toc-BJVsblvp.d.ts → rehype-toc-Dcgzd_Vy.d.ts} +1 -1
  102. package/dist/{rehype-toc-BJVsblvp.d.ts.map → rehype-toc-Dcgzd_Vy.d.ts.map} +1 -1
  103. package/dist/{remark-admonition-Chku_iWO.d.ts → remark-admonition-BvgS4oU1.d.ts} +1 -1
  104. package/dist/{remark-admonition-Chku_iWO.d.ts.map → remark-admonition-BvgS4oU1.d.ts.map} +1 -1
  105. package/dist/{remark-code-tab-C0f6BPcw.d.ts → remark-code-tab-Ds_BdYXz.d.ts} +1 -1
  106. package/dist/{remark-code-tab-C0f6BPcw.d.ts.map → remark-code-tab-Ds_BdYXz.d.ts.map} +1 -1
  107. package/dist/{remark-directive-admonition-CBwJdh9z.d.ts → remark-directive-admonition-02cR5K1L.d.ts} +1 -1
  108. package/dist/{remark-directive-admonition-CBwJdh9z.d.ts.map → remark-directive-admonition-02cR5K1L.d.ts.map} +1 -1
  109. package/dist/remark-feedback-block-fAyt4LdQ.d.ts +52 -0
  110. package/dist/remark-feedback-block-fAyt4LdQ.d.ts.map +1 -0
  111. package/dist/{remark-heading-CUAe4zIu.d.ts → remark-heading-CSButCYt.d.ts} +1 -1
  112. package/dist/{remark-heading-CUAe4zIu.d.ts.map → remark-heading-CSButCYt.d.ts.map} +1 -1
  113. package/dist/{remark-image-DMRnxsRO.d.ts → remark-image-C3MnP-3r.d.ts} +1 -1
  114. package/dist/{remark-image-DMRnxsRO.d.ts.map → remark-image-C3MnP-3r.d.ts.map} +1 -1
  115. package/dist/{remark-mdx-files-B5KMXnfh.d.ts → remark-mdx-files-BXUiiX3M.d.ts} +1 -1
  116. package/dist/{remark-mdx-files-B5KMXnfh.d.ts.map → remark-mdx-files-BXUiiX3M.d.ts.map} +1 -1
  117. package/dist/{remark-mdx-mermaid-C_4W5gfj.d.ts → remark-mdx-mermaid-C5ZBxx8x.d.ts} +1 -1
  118. package/dist/{remark-mdx-mermaid-C_4W5gfj.d.ts.map → remark-mdx-mermaid-C5ZBxx8x.d.ts.map} +1 -1
  119. package/dist/{remark-npm-CykFgJn2.d.ts → remark-npm-DADZg0pf.d.ts} +1 -1
  120. package/dist/{remark-npm-CykFgJn2.d.ts.map → remark-npm-DADZg0pf.d.ts.map} +1 -1
  121. package/dist/{remark-steps-5-DmLVv3.d.ts → remark-steps-CWEE34cT.d.ts} +1 -1
  122. package/dist/{remark-steps-5-DmLVv3.d.ts.map → remark-steps-CWEE34cT.d.ts.map} +1 -1
  123. package/dist/{remark-structure-CszwnaMR.d.ts → remark-structure-ChKxMXnK.d.ts} +1 -1
  124. package/dist/{remark-structure-CszwnaMR.d.ts.map → remark-structure-ChKxMXnK.d.ts.map} +1 -1
  125. package/dist/{remove-undefined-B7zJF-YS.js → remove-undefined-Buxsprgu.js} +1 -1
  126. package/dist/{remove-undefined-B7zJF-YS.js.map → remove-undefined-Buxsprgu.js.map} +1 -1
  127. package/dist/search/algolia.d.ts +2 -2
  128. package/dist/search/algolia.js.map +1 -1
  129. package/dist/search/client.d.ts +7 -5
  130. package/dist/search/client.d.ts.map +1 -1
  131. package/dist/search/client.js +6 -6
  132. package/dist/search/index.js +1 -1
  133. package/dist/search/orama-cloud-legacy.d.ts +5 -5
  134. package/dist/search/orama-cloud-legacy.js.map +1 -1
  135. package/dist/search/orama-cloud.d.ts +5 -5
  136. package/dist/search/orama-cloud.js.map +1 -1
  137. package/dist/search/server.d.ts +6 -4
  138. package/dist/search/server.js +4 -4
  139. package/dist/search/server.js.map +1 -1
  140. package/dist/{search-DcH54N2x.js → search-DzqmOjzV.js} +1 -1
  141. package/dist/search-DzqmOjzV.js.map +1 -0
  142. package/dist/{server-BzFuYBxW.d.ts → server-CLPpotS9.d.ts} +4 -4
  143. package/dist/{server-BzFuYBxW.d.ts.map → server-CLPpotS9.d.ts.map} +1 -1
  144. package/dist/{shiki-DoHr6fEj.js → shiki-B4NO99XD.js} +1 -1
  145. package/dist/shiki-B4NO99XD.js.map +1 -0
  146. package/dist/{shiki-Bdk0JGsB.d.ts → shiki-vKy7H_iw.d.ts} +1 -1
  147. package/dist/{shiki-Bdk0JGsB.d.ts.map → shiki-vKy7H_iw.d.ts.map} +1 -1
  148. package/dist/source/client/index.d.ts +4 -18
  149. package/dist/source/client/index.js +17 -10
  150. package/dist/source/client/index.js.map +1 -1
  151. package/dist/source/index.d.ts +4 -2
  152. package/dist/source/index.js +14 -11
  153. package/dist/source/index.js.map +1 -1
  154. package/dist/source/plugins/lucide-icons.d.ts +4 -2
  155. package/dist/source/plugins/lucide-icons.d.ts.map +1 -1
  156. package/dist/source/plugins/lucide-icons.js +1 -1
  157. package/dist/source/plugins/slugs.d.ts +4 -2
  158. package/dist/source/plugins/slugs.js +1 -1
  159. package/dist/source/plugins/slugs.js.map +1 -1
  160. package/dist/{static-DAjBQpus.js → static-C_WBOzek.js} +2 -2
  161. package/dist/static-C_WBOzek.js.map +1 -0
  162. package/dist/toc.js.map +1 -1
  163. package/dist/{util-92szu3Vf.js → util-Dn-wseQ5.js} +1 -1
  164. package/dist/{util-92szu3Vf.js.map → util-Dn-wseQ5.js.map} +1 -1
  165. package/dist/{util-ofJFdM-e.d.ts → util-d5FlPx1Z.d.ts} +1 -1
  166. package/dist/util-d5FlPx1Z.d.ts.map +1 -0
  167. package/dist/utils/use-effect-event.js.map +1 -1
  168. package/dist/{utils-bAoAH1Rh.js → utils-D10VxgVc.js} +1 -1
  169. package/dist/utils-D10VxgVc.js.map +1 -0
  170. package/package.json +12 -12
  171. package/dist/advanced-DSlc7qa9.js.map +0 -1
  172. package/dist/algolia-BGWM-DkQ.js.map +0 -1
  173. package/dist/index-Co_C8NEi.d.ts.map +0 -1
  174. package/dist/mixedbread-DSiQfUnN.js.map +0 -1
  175. package/dist/orama-cloud-BMDBfk05.js.map +0 -1
  176. package/dist/orama-cloud-legacy-CRZzZXWn.js.map +0 -1
  177. package/dist/page-tree/index.d.ts.map +0 -1
  178. package/dist/rehype-code-j8FAEnuU.js.map +0 -1
  179. package/dist/rehype-toc-Dqgey2tW.js.map +0 -1
  180. package/dist/search-DcH54N2x.js.map +0 -1
  181. package/dist/shiki-DoHr6fEj.js.map +0 -1
  182. package/dist/source/client/index.d.ts.map +0 -1
  183. package/dist/static-DAjBQpus.js.map +0 -1
  184. package/dist/util-ofJFdM-e.d.ts.map +0 -1
  185. package/dist/utils-bAoAH1Rh.js.map +0 -1
  186. /package/dist/{chunk-C1JLJEPO.js → chunk-C9UIFEcR.js} +0 -0
  187. /package/dist/{remark-gfm-B2aZXutO.d.ts → remark-gfm-jrvaEZw5.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"remark-structure.js","names":["data: StructuredData","lastHeading: string | undefined","content"],"sources":["../../src/mdx-plugins/remark-structure.ts"],"sourcesContent":["import Slugger from 'github-slugger';\nimport type { Nodes, Root } from 'mdast';\nimport { remark } from 'remark';\nimport remarkGfm from 'remark-gfm';\nimport type { PluggableList, Transformer } from 'unified';\nimport { visit } from 'unist-util-visit';\nimport { flattenNode, toMdxExport } from './mdast-utils';\nimport type {\n MdxJsxAttribute,\n MdxJsxExpressionAttribute,\n MdxJsxFlowElement,\n} from 'mdast-util-mdx-jsx';\n\ninterface Heading {\n id: string;\n content: string;\n}\n\ninterface Content {\n heading: string | undefined;\n content: string;\n}\n\nexport interface StructuredData {\n headings: Heading[];\n /**\n * Refer to paragraphs, a heading may contain multiple contents as well\n */\n contents: Content[];\n}\n\nexport interface StructureOptions {\n /**\n * Types to be scanned as content.\n *\n * @defaultValue ['heading', 'paragraph', 'blockquote', 'tableCell', 'mdxJsxFlowElement']\n */\n types?: string[] | ((node: Nodes) => boolean);\n\n /**\n * A list of indexable MDX attributes, either:\n *\n * - an array of attribute names.\n * - a function that determines if attribute should be indexed.\n */\n allowedMdxAttributes?:\n | string[]\n | ((\n node: MdxJsxFlowElement,\n attribute: MdxJsxAttribute | MdxJsxExpressionAttribute,\n ) => boolean);\n\n /**\n * export as `structuredData` or specified variable name.\n */\n exportAs?: string | boolean;\n}\n\ndeclare module 'mdast' {\n interface Data {\n /**\n * [Fumadocs] Get content of unserializable element, `remarkStructure` uses it to generate search index.\n */\n _string?: string[];\n }\n}\n\ndeclare module 'vfile' {\n interface DataMap {\n /**\n * [Fumadocs] injected by `remarkStructure`\n */\n structuredData: StructuredData;\n }\n}\n\nexport const remarkStructureDefaultOptions = {\n types: ['heading', 'paragraph', 'blockquote', 'tableCell', 'mdxJsxFlowElement'],\n allowedMdxAttributes: (node) => {\n if (!node.name) return false;\n\n return ['TypeTable', 'Callout'].includes(node.name);\n },\n exportAs: false,\n} satisfies Required<StructureOptions>;\n\n/**\n * Extract content into structured data.\n *\n * By default, the output is stored into VFile (`vfile.data.structuredData`), you can specify `exportAs` to export it.\n */\nexport function remarkStructure({\n types = remarkStructureDefaultOptions.types,\n allowedMdxAttributes = remarkStructureDefaultOptions.allowedMdxAttributes,\n exportAs = remarkStructureDefaultOptions.exportAs,\n}: StructureOptions = {}): Transformer<Root, Root> {\n const slugger = new Slugger();\n\n if (Array.isArray(allowedMdxAttributes)) {\n const arr = allowedMdxAttributes;\n allowedMdxAttributes = (_node, attribute) =>\n attribute.type === 'mdxJsxAttribute' && arr.includes(attribute.name);\n }\n\n if (Array.isArray(types)) {\n const arr = types;\n types = (node) => arr.includes(node.type);\n }\n\n return (tree, file) => {\n slugger.reset();\n const data: StructuredData = { contents: [], headings: [] };\n let lastHeading: string | undefined;\n\n // Fumadocs OpenAPI Generated Structured Data\n if (file.data.frontmatter) {\n const frontmatter = file.data.frontmatter as {\n _openapi?: {\n structuredData?: StructuredData;\n };\n };\n\n if (frontmatter._openapi?.structuredData) {\n data.headings.push(...frontmatter._openapi.structuredData.headings);\n data.contents.push(...frontmatter._openapi.structuredData.contents);\n }\n }\n\n visit(tree, (element) => {\n if (element.type === 'root' || !types(element)) return;\n\n if (element.type === 'heading') {\n element.data ||= {};\n element.data.hProperties ||= {};\n const properties = element.data.hProperties;\n const content = flattenNode(element).trim();\n const id = properties.id ?? slugger.slug(content);\n\n data.headings.push({\n id,\n content,\n });\n\n lastHeading = id;\n return 'skip';\n }\n\n if (element.data?._string) {\n for (const content of element.data._string) {\n data.contents.push({\n heading: lastHeading,\n content,\n });\n }\n\n return 'skip';\n }\n\n if (element.type === 'mdxJsxFlowElement' && element.name) {\n data.contents.push(\n ...element.attributes.flatMap((attribute) => {\n const value =\n typeof attribute.value === 'string' ? attribute.value : attribute.value?.value;\n if (!value || value.length === 0) return [];\n if (allowedMdxAttributes && !allowedMdxAttributes(element, attribute)) return [];\n\n return {\n heading: lastHeading,\n content: attribute.type === 'mdxJsxAttribute' ? `${attribute.name}: ${value}` : value,\n };\n }),\n );\n\n return;\n }\n\n const content = flattenNode(element).trim();\n if (content.length === 0) return;\n\n data.contents.push({\n heading: lastHeading,\n content,\n });\n\n return 'skip';\n });\n\n file.data.structuredData = data;\n if (exportAs) {\n tree.children.unshift(\n toMdxExport(typeof exportAs === 'string' ? exportAs : 'structuredData', data),\n );\n }\n };\n}\n\n/**\n * Extract data from markdown/mdx content\n */\nexport function structure(\n content: string,\n remarkPlugins: PluggableList = [],\n options: StructureOptions = {},\n): StructuredData {\n const result = remark()\n .use(remarkGfm)\n .use(remarkPlugins)\n .use(remarkStructure, options)\n .processSync(content);\n\n return result.data.structuredData!;\n}\n"],"mappings":";;;;;;;AA4EA,MAAa,gCAAgC;CAC3C,OAAO;EAAC;EAAW;EAAa;EAAc;EAAa;EAAoB;CAC/E,uBAAuB,SAAS;AAC9B,MAAI,CAAC,KAAK,KAAM,QAAO;AAEvB,SAAO,CAAC,aAAa,UAAU,CAAC,SAAS,KAAK,KAAK;;CAErD,UAAU;CACX;;;;;;AAOD,SAAgB,gBAAgB,EAC9B,QAAQ,8BAA8B,OACtC,uBAAuB,8BAA8B,sBACrD,WAAW,8BAA8B,aACrB,EAAE,EAA2B;CACjD,MAAM,UAAU,IAAI,SAAS;AAE7B,KAAI,MAAM,QAAQ,qBAAqB,EAAE;EACvC,MAAM,MAAM;AACZ,0BAAwB,OAAO,cAC7B,UAAU,SAAS,qBAAqB,IAAI,SAAS,UAAU,KAAK;;AAGxE,KAAI,MAAM,QAAQ,MAAM,EAAE;EACxB,MAAM,MAAM;AACZ,WAAS,SAAS,IAAI,SAAS,KAAK,KAAK;;AAG3C,SAAQ,MAAM,SAAS;AACrB,UAAQ,OAAO;EACf,MAAMA,OAAuB;GAAE,UAAU,EAAE;GAAE,UAAU,EAAE;GAAE;EAC3D,IAAIC;AAGJ,MAAI,KAAK,KAAK,aAAa;GACzB,MAAM,cAAc,KAAK,KAAK;AAM9B,OAAI,YAAY,UAAU,gBAAgB;AACxC,SAAK,SAAS,KAAK,GAAG,YAAY,SAAS,eAAe,SAAS;AACnE,SAAK,SAAS,KAAK,GAAG,YAAY,SAAS,eAAe,SAAS;;;AAIvE,QAAM,OAAO,YAAY;AACvB,OAAI,QAAQ,SAAS,UAAU,CAAC,MAAM,QAAQ,CAAE;AAEhD,OAAI,QAAQ,SAAS,WAAW;AAC9B,YAAQ,SAAS,EAAE;AACnB,YAAQ,KAAK,gBAAgB,EAAE;IAC/B,MAAM,aAAa,QAAQ,KAAK;IAChC,MAAMC,YAAU,YAAY,QAAQ,CAAC,MAAM;IAC3C,MAAM,KAAK,WAAW,MAAM,QAAQ,KAAKA,UAAQ;AAEjD,SAAK,SAAS,KAAK;KACjB;KACA;KACD,CAAC;AAEF,kBAAc;AACd,WAAO;;AAGT,OAAI,QAAQ,MAAM,SAAS;AACzB,SAAK,MAAMA,aAAW,QAAQ,KAAK,QACjC,MAAK,SAAS,KAAK;KACjB,SAAS;KACT;KACD,CAAC;AAGJ,WAAO;;AAGT,OAAI,QAAQ,SAAS,uBAAuB,QAAQ,MAAM;AACxD,SAAK,SAAS,KACZ,GAAG,QAAQ,WAAW,SAAS,cAAc;KAC3C,MAAM,QACJ,OAAO,UAAU,UAAU,WAAW,UAAU,QAAQ,UAAU,OAAO;AAC3E,SAAI,CAAC,SAAS,MAAM,WAAW,EAAG,QAAO,EAAE;AAC3C,SAAI,wBAAwB,CAAC,qBAAqB,SAAS,UAAU,CAAE,QAAO,EAAE;AAEhF,YAAO;MACL,SAAS;MACT,SAAS,UAAU,SAAS,oBAAoB,GAAG,UAAU,KAAK,IAAI,UAAU;MACjF;MACD,CACH;AAED;;GAGF,MAAM,UAAU,YAAY,QAAQ,CAAC,MAAM;AAC3C,OAAI,QAAQ,WAAW,EAAG;AAE1B,QAAK,SAAS,KAAK;IACjB,SAAS;IACT;IACD,CAAC;AAEF,UAAO;IACP;AAEF,OAAK,KAAK,iBAAiB;AAC3B,MAAI,SACF,MAAK,SAAS,QACZ,YAAY,OAAO,aAAa,WAAW,WAAW,kBAAkB,KAAK,CAC9E;;;;;;AAQP,SAAgB,UACd,SACA,gBAA+B,EAAE,EACjC,UAA4B,EAAE,EACd;AAOhB,QANe,QAAQ,CACpB,IAAI,UAAU,CACd,IAAI,cAAc,CAClB,IAAI,iBAAiB,QAAQ,CAC7B,YAAY,QAAQ,CAET,KAAK"}
1
+ {"version":3,"file":"remark-structure.js","names":["content"],"sources":["../../src/mdx-plugins/remark-structure.ts"],"sourcesContent":["import Slugger from 'github-slugger';\nimport type { Nodes, Root } from 'mdast';\nimport { remark } from 'remark';\nimport remarkGfm from 'remark-gfm';\nimport type { PluggableList, Transformer } from 'unified';\nimport { visit } from 'unist-util-visit';\nimport { flattenNode, toMdxExport } from './mdast-utils';\nimport type {\n MdxJsxAttribute,\n MdxJsxExpressionAttribute,\n MdxJsxFlowElement,\n} from 'mdast-util-mdx-jsx';\n\ninterface Heading {\n id: string;\n content: string;\n}\n\ninterface Content {\n heading: string | undefined;\n content: string;\n}\n\nexport interface StructuredData {\n headings: Heading[];\n /**\n * Refer to paragraphs, a heading may contain multiple contents as well\n */\n contents: Content[];\n}\n\nexport interface StructureOptions {\n /**\n * Types to be scanned as content.\n *\n * @defaultValue ['heading', 'paragraph', 'blockquote', 'tableCell', 'mdxJsxFlowElement']\n */\n types?: string[] | ((node: Nodes) => boolean);\n\n /**\n * A list of indexable MDX attributes, either:\n *\n * - an array of attribute names.\n * - a function that determines if attribute should be indexed.\n */\n allowedMdxAttributes?:\n | string[]\n | ((\n node: MdxJsxFlowElement,\n attribute: MdxJsxAttribute | MdxJsxExpressionAttribute,\n ) => boolean);\n\n /**\n * export as `structuredData` or specified variable name.\n */\n exportAs?: string | boolean;\n}\n\ndeclare module 'mdast' {\n interface Data {\n /**\n * [Fumadocs] Get content of unserializable element, `remarkStructure` uses it to generate search index.\n */\n _string?: string[];\n }\n}\n\ndeclare module 'vfile' {\n interface DataMap {\n /**\n * [Fumadocs] injected by `remarkStructure`\n */\n structuredData: StructuredData;\n }\n}\n\nexport const remarkStructureDefaultOptions = {\n types: ['heading', 'paragraph', 'blockquote', 'tableCell', 'mdxJsxFlowElement'],\n allowedMdxAttributes: (node) => {\n if (!node.name) return false;\n\n return ['TypeTable', 'Callout'].includes(node.name);\n },\n exportAs: false,\n} satisfies Required<StructureOptions>;\n\n/**\n * Extract content into structured data.\n *\n * By default, the output is stored into VFile (`vfile.data.structuredData`), you can specify `exportAs` to export it.\n */\nexport function remarkStructure({\n types = remarkStructureDefaultOptions.types,\n allowedMdxAttributes = remarkStructureDefaultOptions.allowedMdxAttributes,\n exportAs = remarkStructureDefaultOptions.exportAs,\n}: StructureOptions = {}): Transformer<Root, Root> {\n const slugger = new Slugger();\n\n if (Array.isArray(allowedMdxAttributes)) {\n const arr = allowedMdxAttributes;\n allowedMdxAttributes = (_node, attribute) =>\n attribute.type === 'mdxJsxAttribute' && arr.includes(attribute.name);\n }\n\n if (Array.isArray(types)) {\n const arr = types;\n types = (node) => arr.includes(node.type);\n }\n\n return (tree, file) => {\n slugger.reset();\n const data: StructuredData = { contents: [], headings: [] };\n let lastHeading: string | undefined;\n\n // Fumadocs OpenAPI Generated Structured Data\n if (file.data.frontmatter) {\n const frontmatter = file.data.frontmatter as {\n _openapi?: {\n structuredData?: StructuredData;\n };\n };\n\n if (frontmatter._openapi?.structuredData) {\n data.headings.push(...frontmatter._openapi.structuredData.headings);\n data.contents.push(...frontmatter._openapi.structuredData.contents);\n }\n }\n\n visit(tree, (element) => {\n if (element.type === 'root' || !types(element)) return;\n\n if (element.type === 'heading') {\n element.data ||= {};\n element.data.hProperties ||= {};\n const properties = element.data.hProperties;\n const content = flattenNode(element).trim();\n const id = properties.id ?? slugger.slug(content);\n\n data.headings.push({\n id,\n content,\n });\n\n lastHeading = id;\n return 'skip';\n }\n\n if (element.data?._string) {\n for (const content of element.data._string) {\n data.contents.push({\n heading: lastHeading,\n content,\n });\n }\n\n return 'skip';\n }\n\n if (element.type === 'mdxJsxFlowElement' && element.name) {\n data.contents.push(\n ...element.attributes.flatMap((attribute) => {\n const value =\n typeof attribute.value === 'string' ? attribute.value : attribute.value?.value;\n if (!value || value.length === 0) return [];\n if (allowedMdxAttributes && !allowedMdxAttributes(element, attribute)) return [];\n\n return {\n heading: lastHeading,\n content: attribute.type === 'mdxJsxAttribute' ? `${attribute.name}: ${value}` : value,\n };\n }),\n );\n\n return;\n }\n\n const content = flattenNode(element).trim();\n if (content.length === 0) return;\n\n data.contents.push({\n heading: lastHeading,\n content,\n });\n\n return 'skip';\n });\n\n file.data.structuredData = data;\n if (exportAs) {\n tree.children.unshift(\n toMdxExport(typeof exportAs === 'string' ? exportAs : 'structuredData', data),\n );\n }\n };\n}\n\n/**\n * Extract data from markdown/mdx content\n */\nexport function structure(\n content: string,\n remarkPlugins: PluggableList = [],\n options: StructureOptions = {},\n): StructuredData {\n const result = remark()\n .use(remarkGfm)\n .use(remarkPlugins)\n .use(remarkStructure, options)\n .processSync(content);\n\n return result.data.structuredData!;\n}\n"],"mappings":";;;;;;;AA4EA,MAAa,gCAAgC;CAC3C,OAAO;EAAC;EAAW;EAAa;EAAc;EAAa;EAAoB;CAC/E,uBAAuB,SAAS;AAC9B,MAAI,CAAC,KAAK,KAAM,QAAO;AAEvB,SAAO,CAAC,aAAa,UAAU,CAAC,SAAS,KAAK,KAAK;;CAErD,UAAU;CACX;;;;;;AAOD,SAAgB,gBAAgB,EAC9B,QAAQ,8BAA8B,OACtC,uBAAuB,8BAA8B,sBACrD,WAAW,8BAA8B,aACrB,EAAE,EAA2B;CACjD,MAAM,UAAU,IAAI,SAAS;AAE7B,KAAI,MAAM,QAAQ,qBAAqB,EAAE;EACvC,MAAM,MAAM;AACZ,0BAAwB,OAAO,cAC7B,UAAU,SAAS,qBAAqB,IAAI,SAAS,UAAU,KAAK;;AAGxE,KAAI,MAAM,QAAQ,MAAM,EAAE;EACxB,MAAM,MAAM;AACZ,WAAS,SAAS,IAAI,SAAS,KAAK,KAAK;;AAG3C,SAAQ,MAAM,SAAS;AACrB,UAAQ,OAAO;EACf,MAAM,OAAuB;GAAE,UAAU,EAAE;GAAE,UAAU,EAAE;GAAE;EAC3D,IAAI;AAGJ,MAAI,KAAK,KAAK,aAAa;GACzB,MAAM,cAAc,KAAK,KAAK;AAM9B,OAAI,YAAY,UAAU,gBAAgB;AACxC,SAAK,SAAS,KAAK,GAAG,YAAY,SAAS,eAAe,SAAS;AACnE,SAAK,SAAS,KAAK,GAAG,YAAY,SAAS,eAAe,SAAS;;;AAIvE,QAAM,OAAO,YAAY;AACvB,OAAI,QAAQ,SAAS,UAAU,CAAC,MAAM,QAAQ,CAAE;AAEhD,OAAI,QAAQ,SAAS,WAAW;AAC9B,YAAQ,SAAS,EAAE;AACnB,YAAQ,KAAK,gBAAgB,EAAE;IAC/B,MAAM,aAAa,QAAQ,KAAK;IAChC,MAAMA,YAAU,YAAY,QAAQ,CAAC,MAAM;IAC3C,MAAM,KAAK,WAAW,MAAM,QAAQ,KAAKA,UAAQ;AAEjD,SAAK,SAAS,KAAK;KACjB;KACA;KACD,CAAC;AAEF,kBAAc;AACd,WAAO;;AAGT,OAAI,QAAQ,MAAM,SAAS;AACzB,SAAK,MAAMA,aAAW,QAAQ,KAAK,QACjC,MAAK,SAAS,KAAK;KACjB,SAAS;KACT;KACD,CAAC;AAGJ,WAAO;;AAGT,OAAI,QAAQ,SAAS,uBAAuB,QAAQ,MAAM;AACxD,SAAK,SAAS,KACZ,GAAG,QAAQ,WAAW,SAAS,cAAc;KAC3C,MAAM,QACJ,OAAO,UAAU,UAAU,WAAW,UAAU,QAAQ,UAAU,OAAO;AAC3E,SAAI,CAAC,SAAS,MAAM,WAAW,EAAG,QAAO,EAAE;AAC3C,SAAI,wBAAwB,CAAC,qBAAqB,SAAS,UAAU,CAAE,QAAO,EAAE;AAEhF,YAAO;MACL,SAAS;MACT,SAAS,UAAU,SAAS,oBAAoB,GAAG,UAAU,KAAK,IAAI,UAAU;MACjF;MACD,CACH;AAED;;GAGF,MAAM,UAAU,YAAY,QAAQ,CAAC,MAAM;AAC3C,OAAI,QAAQ,WAAW,EAAG;AAE1B,QAAK,SAAS,KAAK;IACjB,SAAS;IACT;IACD,CAAC;AAEF,UAAO;IACP;AAEF,OAAK,KAAK,iBAAiB;AAC3B,MAAI,SACF,MAAK,SAAS,QACZ,YAAY,OAAO,aAAa,WAAW,WAAW,kBAAkB,KAAK,CAC9E;;;;;;AAQP,SAAgB,UACd,SACA,gBAA+B,EAAE,EACjC,UAA4B,EAAE,EACd;AAOhB,QANe,QAAQ,CACpB,IAAI,UAAU,CACd,IAAI,cAAc,CAClB,IAAI,iBAAiB,QAAQ,CAC7B,YAAY,QAAQ,CAET,KAAK"}
@@ -1,4 +1,4 @@
1
- import { r as __toESM, t as __commonJSMin } from "./chunk-C1JLJEPO.js";
1
+ import { r as __toESM, t as __commonJSMin } from "./chunk-C9UIFEcR.js";
2
2
  import Slugger from "github-slugger";
3
3
 
4
4
  //#region ../../node_modules/.pnpm/remove-markdown@0.6.2/node_modules/remove-markdown/index.js
@@ -37,7 +37,7 @@ var require_remove_markdown = /* @__PURE__ */ __commonJSMin(((exports, module) =
37
37
 
38
38
  //#endregion
39
39
  //#region src/search/client/mixedbread.ts
40
- var import_remove_markdown = /* @__PURE__ */ __toESM(require_remove_markdown());
40
+ var import_remove_markdown = /* @__PURE__ */ __toESM(require_remove_markdown(), 1);
41
41
  const slugger = new Slugger();
42
42
  function extractHeadingTitle(text) {
43
43
  const trimmedText = text.trim();
@@ -85,4 +85,4 @@ async function search(query, options) {
85
85
 
86
86
  //#endregion
87
87
  export { search };
88
- //# sourceMappingURL=mixedbread-DSiQfUnN.js.map
88
+ //# sourceMappingURL=mixedbread-CPGJEgwq.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mixedbread-CPGJEgwq.js","names":[],"sources":["../../../node_modules/.pnpm/remove-markdown@0.6.2/node_modules/remove-markdown/index.js","../src/search/client/mixedbread.ts"],"sourcesContent":["module.exports = function(md, options) {\n options = options || {};\n options.listUnicodeChar = options.hasOwnProperty('listUnicodeChar') ? options.listUnicodeChar : false;\n options.stripListLeaders = options.hasOwnProperty('stripListLeaders') ? options.stripListLeaders : true;\n options.gfm = options.hasOwnProperty('gfm') ? options.gfm : true;\n options.useImgAltText = options.hasOwnProperty('useImgAltText') ? options.useImgAltText : true;\n options.abbr = options.hasOwnProperty('abbr') ? options.abbr : false;\n options.replaceLinksWithURL = options.hasOwnProperty('replaceLinksWithURL') ? options.replaceLinksWithURL : false;\n options.htmlTagsToSkip = options.hasOwnProperty('htmlTagsToSkip') ? options.htmlTagsToSkip : [];\n options.throwError = options.hasOwnProperty('throwError') ? options.throwError : false;\n\n var output = md || '';\n\n // Remove horizontal rules (stripListHeaders conflict with this rule, which is why it has been moved to the top)\n output = output.replace(/^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/gm, '');\n\n try {\n if (options.stripListLeaders) {\n if (options.listUnicodeChar)\n output = output.replace(/^([\\s\\t]*)([\\*\\-\\+]|\\d+\\.)\\s+/gm, options.listUnicodeChar + ' $1');\n else\n output = output.replace(/^([\\s\\t]*)([\\*\\-\\+]|\\d+\\.)\\s+/gm, '$1');\n }\n if (options.gfm) {\n output = output\n // Header\n .replace(/\\n={2,}/g, '\\n')\n // Fenced codeblocks\n .replace(/~{3}.*\\n/g, '')\n // Strikethrough\n .replace(/~~/g, '')\n // Fenced codeblocks with backticks\n .replace(/```(?:.*)\\n([\\s\\S]*?)```/g, (_, code) => code.trim());\n }\n if (options.abbr) {\n // Remove abbreviations\n output = output.replace(/\\*\\[.*\\]:.*\\n/, '');\n }\n \n let htmlReplaceRegex = /<[^>]*>/g\n if (options.htmlTagsToSkip && options.htmlTagsToSkip.length > 0) {\n // Create a regex that matches tags not in htmlTagsToSkip\n const joinedHtmlTagsToSkip = options.htmlTagsToSkip.join('|')\n htmlReplaceRegex = new RegExp(\n `<(?!\\/?(${joinedHtmlTagsToSkip})(?=>|\\s[^>]*>))[^>]*>`,\n 'g',\n )\n }\n\n output = output\n // Remove HTML tags\n .replace(htmlReplaceRegex, '')\n // Remove setext-style headers\n .replace(/^[=\\-]{2,}\\s*$/g, '')\n // Remove footnotes?\n .replace(/\\[\\^.+?\\](\\: .*?$)?/g, '')\n .replace(/\\s{0,2}\\[.*?\\]: .*?$/g, '')\n // Remove images\n .replace(/\\!\\[(.*?)\\][\\[\\(].*?[\\]\\)]/g, options.useImgAltText ? '$1' : '')\n // Remove inline links\n .replace(/\\[([\\s\\S]*?)\\]\\s*[\\(\\[].*?[\\)\\]]/g, options.replaceLinksWithURL ? '$2' : '$1')\n // Remove blockquotes\n .replace(/^(\\n)?\\s{0,3}>\\s?/gm, '$1')\n // .replace(/(^|\\n)\\s{0,3}>\\s?/g, '\\n\\n')\n // Remove reference-style links?\n .replace(/^\\s{1,2}\\[(.*?)\\]: (\\S+)( \".*?\")?\\s*$/g, '')\n // Remove atx-style headers\n .replace(/^(\\n)?\\s{0,}#{1,6}\\s*( (.+))? +#+$|^(\\n)?\\s{0,}#{1,6}\\s*( (.+))?$/gm, '$1$3$4$6')\n // Remove * emphasis\n .replace(/([\\*]+)(\\S)(.*?\\S)??\\1/g, '$2$3')\n // Remove _ emphasis. Unlike *, _ emphasis gets rendered only if \n // 1. Either there is a whitespace character before opening _ and after closing _.\n // 2. Or _ is at the start/end of the string.\n .replace(/(^|\\W)([_]+)(\\S)(.*?\\S)??\\2($|\\W)/g, '$1$3$4$5')\n // Remove single-line code blocks (already handled multiline above in gfm section)\n .replace(/(`{3,})(.*?)\\1/gm, '$2')\n // Remove inline code\n .replace(/`(.+?)`/g, '$1')\n // // Replace two or more newlines with exactly two? Not entirely sure this belongs here...\n // .replace(/\\n{2,}/g, '\\n\\n')\n // // Remove newlines in a paragraph\n // .replace(/(\\S+)\\n\\s*(\\S+)/g, '$1 $2')\n // Replace strike through\n .replace(/~(.*?)~/g, '$1');\n } catch(e) {\n if (options.throwError) throw e;\n\n console.error(\"remove-markdown encountered error: %s\", e);\n return md;\n }\n return output;\n};\n","import type { SortedResult } from '@/search';\nimport type Mixedbread from '@mixedbread/sdk';\nimport removeMd from 'remove-markdown';\nimport Slugger from 'github-slugger';\nimport type { StoreSearchResponse } from '@mixedbread/sdk/resources/stores';\n\nexport interface MixedbreadOptions {\n /**\n * The identifier of the store to search in\n */\n storeIdentifier: string;\n\n /**\n * The Mixedbread SDK client instance\n */\n client: Mixedbread;\n\n /**\n * Filter results with specific tag.\n */\n tag?: string;\n\n /**\n * Filter by locale (unsupported at the moment)\n */\n locale?: string;\n}\n\nexport interface SearchMetadata {\n title?: string;\n description?: string;\n url?: string;\n tag?: string;\n}\n\ntype StoreSearchResult = StoreSearchResponse['data'][number] & {\n generated_metadata: SearchMetadata;\n};\n\nconst slugger = new Slugger();\n\nfunction extractHeadingTitle(text: string): string {\n const trimmedText = text.trim();\n\n if (!trimmedText.startsWith('#')) {\n return '';\n }\n\n const lines = trimmedText.split('\\n');\n const firstLine = lines[0]?.trim();\n\n if (firstLine) {\n // Use remove-markdown to convert to plain text and remove colons\n return removeMd(firstLine, {\n useImgAltText: false,\n });\n }\n\n return '';\n}\n\nexport async function search(query: string, options: MixedbreadOptions): Promise<SortedResult[]> {\n const { client, storeIdentifier, tag } = options;\n\n if (!query.trim()) {\n return [];\n }\n\n const res = await client.stores.search({\n query,\n store_identifiers: [storeIdentifier],\n top_k: 10,\n filters: {\n key: 'generated_metadata.tag',\n operator: 'eq',\n value: tag,\n },\n search_options: {\n return_metadata: true,\n },\n });\n\n return (res.data as StoreSearchResult[]).flatMap((item) => {\n const metadata = item.generated_metadata;\n\n const url = metadata.url || '#';\n const title = metadata.title || 'Untitled';\n\n const chunkResults: SortedResult[] = [\n {\n id: `${item.file_id}-${item.chunk_index}-page`,\n type: 'page',\n content: title,\n url,\n },\n ];\n\n const headingTitle = item.type === 'text' ? extractHeadingTitle(item.text) : '';\n\n if (headingTitle) {\n slugger.reset();\n\n chunkResults.push({\n id: `${item.file_id}-${item.chunk_index}-heading`,\n type: 'heading',\n content: headingTitle,\n url: `${url}#${slugger.slug(headingTitle)}`,\n });\n }\n\n return chunkResults;\n });\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["headers: Record<string, string>"],"sources":["../../src/negotiation/index.ts"],"sourcesContent":["import Negotiator from 'negotiator';\nimport { compile, match } from 'path-to-regexp';\n\nexport function getNegotiator(request: Request) {\n const headers: Record<string, string> = {};\n request.headers.forEach((value, key) => {\n headers[key] = value;\n });\n\n return new Negotiator({ headers });\n}\n\n/**\n * Rewrite incoming path matching the `source` pattern into the `destination` pattern.\n *\n * See [`path-to-regexp`](https://github.com/pillarjs/path-to-regexp) for accepted pattern formats.\n *\n * @param source - the original pattern of incoming paths\n * @param destination - the target pattern to convert into\n */\nexport function rewritePath(source: string, destination: string) {\n const matcher = match(source, { decode: false });\n const compiler = compile(destination, { encode: false });\n\n return {\n rewrite(pathname: string) {\n const result = matcher(pathname);\n if (!result) return false;\n\n return compiler(result.params);\n },\n };\n}\n\nexport function isMarkdownPreferred(\n request: Request,\n options?: {\n markdownMediaTypes?: string[];\n },\n) {\n const { markdownMediaTypes = ['text/plain', 'text/markdown', 'text/x-markdown'] } = options ?? {};\n\n const mediaTypes = getNegotiator(request).mediaTypes();\n return markdownMediaTypes.some((type) => mediaTypes.includes(type));\n}\n"],"mappings":";;;;AAGA,SAAgB,cAAc,SAAkB;CAC9C,MAAMA,UAAkC,EAAE;AAC1C,SAAQ,QAAQ,SAAS,OAAO,QAAQ;AACtC,UAAQ,OAAO;GACf;AAEF,QAAO,IAAI,WAAW,EAAE,SAAS,CAAC;;;;;;;;;;AAWpC,SAAgB,YAAY,QAAgB,aAAqB;CAC/D,MAAM,UAAU,MAAM,QAAQ,EAAE,QAAQ,OAAO,CAAC;CAChD,MAAM,WAAW,QAAQ,aAAa,EAAE,QAAQ,OAAO,CAAC;AAExD,QAAO,EACL,QAAQ,UAAkB;EACxB,MAAM,SAAS,QAAQ,SAAS;AAChC,MAAI,CAAC,OAAQ,QAAO;AAEpB,SAAO,SAAS,OAAO,OAAO;IAEjC;;AAGH,SAAgB,oBACd,SACA,SAGA;CACA,MAAM,EAAE,qBAAqB;EAAC;EAAc;EAAiB;EAAkB,KAAK,WAAW,EAAE;CAEjG,MAAM,aAAa,cAAc,QAAQ,CAAC,YAAY;AACtD,QAAO,mBAAmB,MAAM,SAAS,WAAW,SAAS,KAAK,CAAC"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/negotiation/index.ts"],"sourcesContent":["import Negotiator from 'negotiator';\nimport { compile, match } from 'path-to-regexp';\n\nexport function getNegotiator(request: Request) {\n const headers: Record<string, string> = {};\n request.headers.forEach((value, key) => {\n headers[key] = value;\n });\n\n return new Negotiator({ headers });\n}\n\n/**\n * Rewrite incoming path matching the `source` pattern into the `destination` pattern.\n *\n * See [`path-to-regexp`](https://github.com/pillarjs/path-to-regexp) for accepted pattern formats.\n *\n * @param source - the original pattern of incoming paths\n * @param destination - the target pattern to convert into\n */\nexport function rewritePath(source: string, destination: string) {\n const matcher = match(source, { decode: false });\n const compiler = compile(destination, { encode: false });\n\n return {\n rewrite(pathname: string) {\n const result = matcher(pathname);\n if (!result) return false;\n\n return compiler(result.params);\n },\n };\n}\n\nexport function isMarkdownPreferred(\n request: Request,\n options?: {\n markdownMediaTypes?: string[];\n },\n) {\n const { markdownMediaTypes = ['text/plain', 'text/markdown', 'text/x-markdown'] } = options ?? {};\n\n const mediaTypes = getNegotiator(request).mediaTypes();\n return markdownMediaTypes.some((type) => mediaTypes.includes(type));\n}\n"],"mappings":";;;;AAGA,SAAgB,cAAc,SAAkB;CAC9C,MAAM,UAAkC,EAAE;AAC1C,SAAQ,QAAQ,SAAS,OAAO,QAAQ;AACtC,UAAQ,OAAO;GACf;AAEF,QAAO,IAAI,WAAW,EAAE,SAAS,CAAC;;;;;;;;;;AAWpC,SAAgB,YAAY,QAAgB,aAAqB;CAC/D,MAAM,UAAU,MAAM,QAAQ,EAAE,QAAQ,OAAO,CAAC;CAChD,MAAM,WAAW,QAAQ,aAAa,EAAE,QAAQ,OAAO,CAAC;AAExD,QAAO,EACL,QAAQ,UAAkB;EACxB,MAAM,SAAS,QAAQ,SAAS;AAChC,MAAI,CAAC,OAAQ,QAAO;AAEpB,SAAO,SAAS,OAAO,OAAO;IAEjC;;AAGH,SAAgB,oBACd,SACA,SAGA;CACA,MAAM,EAAE,qBAAqB;EAAC;EAAc;EAAiB;EAAkB,KAAK,WAAW,EAAE;CAEjG,MAAM,aAAa,cAAc,QAAQ,CAAC,YAAY;AACtD,QAAO,mBAAmB,MAAM,SAAS,WAAW,SAAS,KAAK,CAAC"}
@@ -13,4 +13,4 @@ function normalizeUrl(url) {
13
13
 
14
14
  //#endregion
15
15
  export { normalizeUrl as t };
16
- //# sourceMappingURL=normalize-url-3WQZ_H_j.js.map
16
+ //# sourceMappingURL=normalize-url-CEfNKxaE.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"normalize-url-3WQZ_H_j.js","names":[],"sources":["../src/utils/normalize-url.tsx"],"sourcesContent":["/**\n * normalize URL into the Fumadocs standard form (`/slug-1/slug-2`).\n *\n * This includes URLs with trailing slashes.\n */\nexport function normalizeUrl(url: string) {\n if (url.startsWith('http://') || url.startsWith('https://')) return url;\n\n if (!url.startsWith('/')) url = '/' + url;\n if (url.length > 1 && url.endsWith('/')) url = url.slice(0, -1);\n return url;\n}\n"],"mappings":";;;;;;AAKA,SAAgB,aAAa,KAAa;AACxC,KAAI,IAAI,WAAW,UAAU,IAAI,IAAI,WAAW,WAAW,CAAE,QAAO;AAEpE,KAAI,CAAC,IAAI,WAAW,IAAI,CAAE,OAAM,MAAM;AACtC,KAAI,IAAI,SAAS,KAAK,IAAI,SAAS,IAAI,CAAE,OAAM,IAAI,MAAM,GAAG,GAAG;AAC/D,QAAO"}
1
+ {"version":3,"file":"normalize-url-CEfNKxaE.js","names":[],"sources":["../src/utils/normalize-url.tsx"],"sourcesContent":["/**\n * normalize URL into the Fumadocs standard form (`/slug-1/slug-2`).\n *\n * This includes URLs with trailing slashes.\n */\nexport function normalizeUrl(url: string) {\n if (url.startsWith('http://') || url.startsWith('https://')) return url;\n\n if (!url.startsWith('/')) url = '/' + url;\n if (url.length > 1 && url.endsWith('/')) url = url.slice(0, -1);\n return url;\n}\n"],"mappings":";;;;;;AAKA,SAAgB,aAAa,KAAa;AACxC,KAAI,IAAI,WAAW,UAAU,IAAI,IAAI,WAAW,WAAW,CAAE,QAAO;AAEpE,KAAI,CAAC,IAAI,WAAW,IAAI,CAAE,OAAM,MAAM;AACtC,KAAI,IAAI,SAAS,KAAK,IAAI,SAAS,IAAI,CAAE,OAAM,IAAI,MAAM,GAAG,GAAG;AAC/D,QAAO"}
@@ -1,5 +1,5 @@
1
- import { t as createContentHighlighter } from "./search-DcH54N2x.js";
2
- import { t as removeUndefined } from "./remove-undefined-B7zJF-YS.js";
1
+ import { t as createContentHighlighter } from "./search-DzqmOjzV.js";
2
+ import { t as removeUndefined } from "./remove-undefined-Buxsprgu.js";
3
3
 
4
4
  //#region src/search/client/orama-cloud-legacy.ts
5
5
  async function searchDocs(query, options) {
@@ -79,4 +79,4 @@ async function searchDocs(query, options) {
79
79
 
80
80
  //#endregion
81
81
  export { searchDocs };
82
- //# sourceMappingURL=orama-cloud-legacy-CRZzZXWn.js.map
82
+ //# sourceMappingURL=orama-cloud-legacy-NJTbB19B.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orama-cloud-legacy-NJTbB19B.js","names":["result"],"sources":["../src/search/client/orama-cloud-legacy.ts"],"sourcesContent":["import type { ClientSearchParams, OramaClient } from '@oramacloud/client';\nimport { removeUndefined } from '@/utils/remove-undefined';\nimport type { OramaIndex } from '@/search/orama-cloud-legacy';\nimport { createContentHighlighter, type SortedResult } from '@/search';\n\ninterface CrawlerIndex {\n path: string;\n title: string;\n content: string;\n section: string;\n category: string;\n}\n\nexport interface OramaCloudLegacyOptions {\n client: OramaClient;\n /**\n * The type of your index.\n *\n * You can set it to `crawler` if you use crawler instead of the JSON index with schema provided by Fumadocs\n */\n index?: 'default' | 'crawler';\n params?: ClientSearchParams;\n\n /**\n * Filter results with specific tag.\n */\n tag?: string;\n\n /**\n * Filter by locale (unsupported at the moment)\n */\n locale?: string;\n}\n\nexport async function searchDocs(\n query: string,\n options: OramaCloudLegacyOptions,\n): Promise<SortedResult[]> {\n const highlighter = createContentHighlighter(query);\n const list: SortedResult[] = [];\n const { index = 'default', client, params: extraParams = {}, tag } = options;\n\n if (index === 'crawler') {\n const result = await client.search({\n ...extraParams,\n term: query,\n where: {\n category: tag\n ? {\n eq: tag.slice(0, 1).toUpperCase() + tag.slice(1),\n }\n : undefined,\n ...extraParams.where,\n },\n limit: 10,\n });\n if (!result) return list;\n\n for (const hit of result.hits) {\n const doc = hit.document as unknown as CrawlerIndex;\n\n list.push(\n {\n id: hit.id,\n type: 'page',\n content: doc.title,\n contentWithHighlights: highlighter.highlight(doc.title),\n url: doc.path,\n },\n {\n id: 'page' + hit.id,\n type: 'text',\n content: doc.content,\n contentWithHighlights: highlighter.highlight(doc.content),\n url: doc.path,\n },\n );\n }\n\n return list;\n }\n\n const params: ClientSearchParams = {\n ...extraParams,\n term: query,\n where: removeUndefined({\n tag,\n ...extraParams.where,\n }),\n groupBy: {\n properties: ['page_id'],\n maxResult: 7,\n ...extraParams.groupBy,\n },\n };\n\n const result = await client.search(params);\n if (!result || !result.groups) return list;\n\n for (const item of result.groups) {\n let addedHead = false;\n\n for (const hit of item.result) {\n const doc = hit.document as unknown as OramaIndex;\n\n if (!addedHead) {\n list.push({\n id: doc.page_id,\n type: 'page',\n content: doc.title,\n breadcrumbs: doc.breadcrumbs,\n contentWithHighlights: highlighter.highlight(doc.title),\n url: doc.url,\n });\n addedHead = true;\n }\n\n list.push({\n id: doc.id,\n content: doc.content,\n contentWithHighlights: highlighter.highlight(doc.content),\n type: doc.content === doc.section ? 'heading' : 'text',\n url: doc.section_id ? `${doc.url}#${doc.section_id}` : doc.url,\n });\n }\n }\n\n return list;\n}\n"],"mappings":";;;;AAkCA,eAAsB,WACpB,OACA,SACyB;CACzB,MAAM,cAAc,yBAAyB,MAAM;CACnD,MAAM,OAAuB,EAAE;CAC/B,MAAM,EAAE,QAAQ,WAAW,QAAQ,QAAQ,cAAc,EAAE,EAAE,QAAQ;AAErE,KAAI,UAAU,WAAW;EACvB,MAAMA,WAAS,MAAM,OAAO,OAAO;GACjC,GAAG;GACH,MAAM;GACN,OAAO;IACL,UAAU,MACN,EACE,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC,aAAa,GAAG,IAAI,MAAM,EAAE,EACjD,GACD;IACJ,GAAG,YAAY;IAChB;GACD,OAAO;GACR,CAAC;AACF,MAAI,CAACA,SAAQ,QAAO;AAEpB,OAAK,MAAM,OAAOA,SAAO,MAAM;GAC7B,MAAM,MAAM,IAAI;AAEhB,QAAK,KACH;IACE,IAAI,IAAI;IACR,MAAM;IACN,SAAS,IAAI;IACb,uBAAuB,YAAY,UAAU,IAAI,MAAM;IACvD,KAAK,IAAI;IACV,EACD;IACE,IAAI,SAAS,IAAI;IACjB,MAAM;IACN,SAAS,IAAI;IACb,uBAAuB,YAAY,UAAU,IAAI,QAAQ;IACzD,KAAK,IAAI;IACV,CACF;;AAGH,SAAO;;CAGT,MAAM,SAA6B;EACjC,GAAG;EACH,MAAM;EACN,OAAO,gBAAgB;GACrB;GACA,GAAG,YAAY;GAChB,CAAC;EACF,SAAS;GACP,YAAY,CAAC,UAAU;GACvB,WAAW;GACX,GAAG,YAAY;GAChB;EACF;CAED,MAAM,SAAS,MAAM,OAAO,OAAO,OAAO;AAC1C,KAAI,CAAC,UAAU,CAAC,OAAO,OAAQ,QAAO;AAEtC,MAAK,MAAM,QAAQ,OAAO,QAAQ;EAChC,IAAI,YAAY;AAEhB,OAAK,MAAM,OAAO,KAAK,QAAQ;GAC7B,MAAM,MAAM,IAAI;AAEhB,OAAI,CAAC,WAAW;AACd,SAAK,KAAK;KACR,IAAI,IAAI;KACR,MAAM;KACN,SAAS,IAAI;KACb,aAAa,IAAI;KACjB,uBAAuB,YAAY,UAAU,IAAI,MAAM;KACvD,KAAK,IAAI;KACV,CAAC;AACF,gBAAY;;AAGd,QAAK,KAAK;IACR,IAAI,IAAI;IACR,SAAS,IAAI;IACb,uBAAuB,YAAY,UAAU,IAAI,QAAQ;IACzD,MAAM,IAAI,YAAY,IAAI,UAAU,YAAY;IAChD,KAAK,IAAI,aAAa,GAAG,IAAI,IAAI,GAAG,IAAI,eAAe,IAAI;IAC5D,CAAC;;;AAIN,QAAO"}
@@ -1,5 +1,5 @@
1
- import { t as createContentHighlighter } from "./search-DcH54N2x.js";
2
- import { t as removeUndefined } from "./remove-undefined-B7zJF-YS.js";
1
+ import { t as createContentHighlighter } from "./search-DzqmOjzV.js";
2
+ import { t as removeUndefined } from "./remove-undefined-Buxsprgu.js";
3
3
 
4
4
  //#region src/search/client/orama-cloud.ts
5
5
  async function searchDocs(query, options) {
@@ -81,4 +81,4 @@ async function searchDocs(query, options) {
81
81
 
82
82
  //#endregion
83
83
  export { searchDocs };
84
- //# sourceMappingURL=orama-cloud-BMDBfk05.js.map
84
+ //# sourceMappingURL=orama-cloud-yicpgD0c.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orama-cloud-yicpgD0c.js","names":["result"],"sources":["../src/search/client/orama-cloud.ts"],"sourcesContent":["import type { OramaCloud, OramaCloudSearchParams } from '@orama/core';\nimport { removeUndefined } from '@/utils/remove-undefined';\nimport type { OramaIndex } from '@/search/orama-cloud';\nimport { createContentHighlighter, type SortedResult } from '@/search';\n\ninterface CrawlerIndex {\n path: string;\n title: string;\n content: string;\n section: string;\n category: string;\n}\n\nexport interface OramaCloudOptions {\n client: OramaCloud;\n /**\n * The type of your index.\n *\n * You can set it to `crawler` if you use crawler instead of the JSON index with schema provided by Fumadocs\n */\n index?: 'default' | 'crawler';\n params?: Partial<OramaCloudSearchParams>;\n\n /**\n * Filter results with specific tag.\n */\n tag?: string;\n\n /**\n * Filter by locale (unsupported at the moment)\n */\n locale?: string;\n}\n\nexport async function searchDocs(\n query: string,\n options: OramaCloudOptions,\n): Promise<SortedResult[]> {\n const highlighter = createContentHighlighter(query);\n const list: SortedResult[] = [];\n const { index = 'default', client, params: extraParams, tag } = options;\n\n if (index === 'crawler') {\n const result = await client.search({\n datasources: [],\n ...extraParams,\n term: query,\n where: {\n category: tag\n ? {\n eq: tag.slice(0, 1).toUpperCase() + tag.slice(1),\n }\n : undefined,\n ...extraParams?.where,\n },\n limit: 10,\n });\n if (!result) return list;\n\n for (const hit of result.hits) {\n const doc = hit.document as unknown as CrawlerIndex;\n\n list.push(\n {\n id: hit.id,\n type: 'page',\n content: doc.title,\n contentWithHighlights: highlighter.highlight(doc.title),\n url: doc.path,\n },\n {\n id: 'page' + hit.id,\n type: 'text',\n content: doc.content,\n contentWithHighlights: highlighter.highlight(doc.content),\n url: doc.path,\n },\n );\n }\n\n return list;\n }\n\n const params: OramaCloudSearchParams = {\n datasources: [],\n ...extraParams,\n term: query,\n where: removeUndefined({\n tag,\n ...extraParams?.where,\n }),\n groupBy: {\n properties: ['page_id'],\n max_results: 7,\n ...extraParams?.groupBy,\n },\n };\n\n const result = await client.search(params);\n if (!result || !result.groups) return list;\n\n for (const item of result.groups) {\n let addedHead = false;\n\n for (const hit of item.result) {\n const doc = hit.document as unknown as OramaIndex;\n\n if (!addedHead) {\n list.push({\n id: doc.page_id,\n type: 'page',\n content: doc.title,\n breadcrumbs: doc.breadcrumbs,\n contentWithHighlights: highlighter.highlight(doc.title),\n url: doc.url,\n });\n addedHead = true;\n }\n\n list.push({\n id: doc.id,\n content: doc.content,\n contentWithHighlights: highlighter.highlight(doc.content),\n type: doc.content === doc.section ? 'heading' : 'text',\n url: doc.section_id ? `${doc.url}#${doc.section_id}` : doc.url,\n });\n }\n }\n\n return list;\n}\n"],"mappings":";;;;AAkCA,eAAsB,WACpB,OACA,SACyB;CACzB,MAAM,cAAc,yBAAyB,MAAM;CACnD,MAAM,OAAuB,EAAE;CAC/B,MAAM,EAAE,QAAQ,WAAW,QAAQ,QAAQ,aAAa,QAAQ;AAEhE,KAAI,UAAU,WAAW;EACvB,MAAMA,WAAS,MAAM,OAAO,OAAO;GACjC,aAAa,EAAE;GACf,GAAG;GACH,MAAM;GACN,OAAO;IACL,UAAU,MACN,EACE,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC,aAAa,GAAG,IAAI,MAAM,EAAE,EACjD,GACD;IACJ,GAAG,aAAa;IACjB;GACD,OAAO;GACR,CAAC;AACF,MAAI,CAACA,SAAQ,QAAO;AAEpB,OAAK,MAAM,OAAOA,SAAO,MAAM;GAC7B,MAAM,MAAM,IAAI;AAEhB,QAAK,KACH;IACE,IAAI,IAAI;IACR,MAAM;IACN,SAAS,IAAI;IACb,uBAAuB,YAAY,UAAU,IAAI,MAAM;IACvD,KAAK,IAAI;IACV,EACD;IACE,IAAI,SAAS,IAAI;IACjB,MAAM;IACN,SAAS,IAAI;IACb,uBAAuB,YAAY,UAAU,IAAI,QAAQ;IACzD,KAAK,IAAI;IACV,CACF;;AAGH,SAAO;;CAGT,MAAM,SAAiC;EACrC,aAAa,EAAE;EACf,GAAG;EACH,MAAM;EACN,OAAO,gBAAgB;GACrB;GACA,GAAG,aAAa;GACjB,CAAC;EACF,SAAS;GACP,YAAY,CAAC,UAAU;GACvB,aAAa;GACb,GAAG,aAAa;GACjB;EACF;CAED,MAAM,SAAS,MAAM,OAAO,OAAO,OAAO;AAC1C,KAAI,CAAC,UAAU,CAAC,OAAO,OAAQ,QAAO;AAEtC,MAAK,MAAM,QAAQ,OAAO,QAAQ;EAChC,IAAI,YAAY;AAEhB,OAAK,MAAM,OAAO,KAAK,QAAQ;GAC7B,MAAM,MAAM,IAAI;AAEhB,OAAI,CAAC,WAAW;AACd,SAAK,KAAK;KACR,IAAI,IAAI;KACR,MAAM;KACN,SAAS,IAAI;KACb,aAAa,IAAI;KACjB,uBAAuB,YAAY,UAAU,IAAI,MAAM;KACvD,KAAK,IAAI;KACV,CAAC;AACF,gBAAY;;AAGd,QAAK,KAAK;IACR,IAAI,IAAI;IACR,SAAS,IAAI;IACb,uBAAuB,YAAY,UAAU,IAAI,QAAQ;IACzD,MAAM,IAAI,YAAY,IAAI,UAAU,YAAY;IAChD,KAAK,IAAI,aAAa,GAAG,IAAI,IAAI,GAAG,IAAI,eAAe,IAAI;IAC5D,CAAC;;;AAIN,QAAO"}
@@ -1,45 +1,3 @@
1
- import { a as Separator, i as Root, n as Item, r as Node, t as Folder } from "../definitions-DJAPG-2U.js";
2
-
3
- //#region src/page-tree/utils.d.ts
4
-
5
- /**
6
- * Flatten tree to an array of page nodes
7
- */
8
- declare function flattenTree(nodes: Node[]): Item[];
9
- /**
10
- * Get neighbours of a page, useful for implementing "previous & next" buttons
11
- */
12
- declare function findNeighbour(tree: Root, url: string, options?: {
13
- separateRoot?: boolean;
14
- }): {
15
- previous?: Item;
16
- next?: Item;
17
- };
18
- declare function getPageTreeRoots(pageTree: Root | Folder): (Root | Folder)[];
19
- /**
20
- * Get other item nodes that lives under the same parent.
21
- */
22
- declare function getPageTreePeers(treeOrTrees: Root | Record<string, Root>, url: string): Item[];
23
- /**
24
- * Get other tree nodes that lives under the same parent.
25
- */
26
- declare function findSiblings(treeOrTrees: Root | Record<string, Root>, url: string): Node[];
27
- declare function findParent(from: Root | Folder, url: string): Root | Folder | undefined;
28
- /**
29
- * Search the path of a node in the tree matched by the matcher.
30
- *
31
- * @returns The path to the target node (from starting root), or null if the page doesn't exist
32
- */
33
- declare function findPath(nodes: Node[], matcher: (node: Node) => boolean, options?: {
34
- includeSeparator?: boolean;
35
- }): Node[] | null;
36
- /**
37
- * Perform a depth-first search on page tree visiting every node.
38
- *
39
- * @param root - the root of page tree to visit.
40
- * @param visitor - function to receive nodes, return `skip` to skip the children of current node, `break` to stop the search entirely.
41
- */
42
- declare function visit<Root$1 extends Node | Root>(root: Root$1, visitor: <T extends Node | Root>(node: T, parent?: Root | Folder) => 'skip' | 'break' | T | void): Root$1;
43
- //#endregion
44
- export { Folder, Item, Node, Root, Separator, findNeighbour, findParent, findPath, findSiblings, flattenTree, getPageTreePeers, getPageTreeRoots, visit };
45
- //# sourceMappingURL=index.d.ts.map
1
+ import { a as Separator, i as Root, n as Item, r as Node, t as Folder } from "../definitions-Ca2P2viV.js";
2
+ import { a as flattenTree, c as visit, i as findSiblings, n as findParent, o as getPageTreePeers, r as findPath, s as getPageTreeRoots, t as findNeighbour } from "../index-BaMZ8PEK.js";
3
+ export { Folder, Item, Node, Root, Separator, findNeighbour, findParent, findPath, findSiblings, flattenTree, getPageTreePeers, getPageTreeRoots, visit };
@@ -1,3 +1,3 @@
1
- import { a as flattenTree, c as visit, i as findSiblings, n as findParent, o as getPageTreePeers, r as findPath, s as getPageTreeRoots, t as findNeighbour } from "../utils-bAoAH1Rh.js";
1
+ import { a as flattenTree, c as visit, i as findSiblings, n as findParent, o as getPageTreePeers, r as findPath, s as getPageTreeRoots, t as findNeighbour } from "../utils-D10VxgVc.js";
2
2
 
3
3
  export { findNeighbour, findParent, findPath, findSiblings, flattenTree, getPageTreePeers, getPageTreeRoots, visit };
@@ -1,4 +1,4 @@
1
- import { n as __exportAll } from "./chunk-C1JLJEPO.js";
1
+ import { n as __exportAll } from "./chunk-C9UIFEcR.js";
2
2
 
3
3
  //#region src/source/path.ts
4
4
  var path_exports = /* @__PURE__ */ __exportAll({
@@ -57,4 +57,4 @@ function slash(path) {
57
57
 
58
58
  //#endregion
59
59
  export { path_exports as a, joinPath as i, dirname as n, slash as o, extname as r, splitPath as s, basename as t };
60
- //# sourceMappingURL=path-D6M0ZQvO.js.map
60
+ //# sourceMappingURL=path-CECfI3nn.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"path-D6M0ZQvO.js","names":[],"sources":["../src/source/path.ts"],"sourcesContent":["export function basename(path: string, ext?: string): string {\n const idx = path.lastIndexOf('/');\n\n return path.substring(idx === -1 ? 0 : idx + 1, ext ? path.length - ext.length : path.length);\n}\n\nexport function extname(path: string): string {\n const dotIdx = path.lastIndexOf('.');\n\n if (dotIdx !== -1) {\n return path.substring(dotIdx);\n }\n\n return '';\n}\n\nexport function dirname(path: string): string {\n return path.split('/').slice(0, -1).join('/');\n}\n/**\n * Split path into segments, trailing/leading slashes are removed\n */\nexport function splitPath(path: string): string[] {\n return path.split('/').filter((p) => p.length > 0);\n}\n\n/**\n * Resolve paths, slashes within the path will be ignored\n * @param paths - Paths to join\n * @example\n * ```\n * ['a','b'] // 'a/b'\n * ['/a'] // 'a'\n * ['a', '/b'] // 'a/b'\n * ['a', '../b/c'] // 'b/c'\n * ```\n */\nexport function joinPath(...paths: string[]): string {\n const out = [];\n const parsed = paths.flatMap(splitPath);\n\n for (const seg of parsed) {\n switch (seg) {\n case '..':\n out.pop();\n break;\n case '.':\n break;\n default:\n out.push(seg);\n }\n }\n\n return out.join('/');\n}\n\nexport function slash(path: string): string {\n const isExtendedLengthPath = path.startsWith('\\\\\\\\?\\\\');\n\n if (isExtendedLengthPath) {\n return path;\n }\n\n return path.replaceAll('\\\\', '/');\n}\n"],"mappings":";;;;;;;;;;;AAAA,SAAgB,SAAS,MAAc,KAAsB;CAC3D,MAAM,MAAM,KAAK,YAAY,IAAI;AAEjC,QAAO,KAAK,UAAU,QAAQ,KAAK,IAAI,MAAM,GAAG,MAAM,KAAK,SAAS,IAAI,SAAS,KAAK,OAAO;;AAG/F,SAAgB,QAAQ,MAAsB;CAC5C,MAAM,SAAS,KAAK,YAAY,IAAI;AAEpC,KAAI,WAAW,GACb,QAAO,KAAK,UAAU,OAAO;AAG/B,QAAO;;AAGT,SAAgB,QAAQ,MAAsB;AAC5C,QAAO,KAAK,MAAM,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,IAAI;;;;;AAK/C,SAAgB,UAAU,MAAwB;AAChD,QAAO,KAAK,MAAM,IAAI,CAAC,QAAQ,MAAM,EAAE,SAAS,EAAE;;;;;;;;;;;;;AAcpD,SAAgB,SAAS,GAAG,OAAyB;CACnD,MAAM,MAAM,EAAE;CACd,MAAM,SAAS,MAAM,QAAQ,UAAU;AAEvC,MAAK,MAAM,OAAO,OAChB,SAAQ,KAAR;EACE,KAAK;AACH,OAAI,KAAK;AACT;EACF,KAAK,IACH;EACF,QACE,KAAI,KAAK,IAAI;;AAInB,QAAO,IAAI,KAAK,IAAI;;AAGtB,SAAgB,MAAM,MAAsB;AAG1C,KAF6B,KAAK,WAAW,UAAU,CAGrD,QAAO;AAGT,QAAO,KAAK,WAAW,MAAM,IAAI"}
1
+ {"version":3,"file":"path-CECfI3nn.js","names":[],"sources":["../src/source/path.ts"],"sourcesContent":["export function basename(path: string, ext?: string): string {\n const idx = path.lastIndexOf('/');\n\n return path.substring(idx === -1 ? 0 : idx + 1, ext ? path.length - ext.length : path.length);\n}\n\nexport function extname(path: string): string {\n const dotIdx = path.lastIndexOf('.');\n\n if (dotIdx !== -1) {\n return path.substring(dotIdx);\n }\n\n return '';\n}\n\nexport function dirname(path: string): string {\n return path.split('/').slice(0, -1).join('/');\n}\n/**\n * Split path into segments, trailing/leading slashes are removed\n */\nexport function splitPath(path: string): string[] {\n return path.split('/').filter((p) => p.length > 0);\n}\n\n/**\n * Resolve paths, slashes within the path will be ignored\n * @param paths - Paths to join\n * @example\n * ```\n * ['a','b'] // 'a/b'\n * ['/a'] // 'a'\n * ['a', '/b'] // 'a/b'\n * ['a', '../b/c'] // 'b/c'\n * ```\n */\nexport function joinPath(...paths: string[]): string {\n const out = [];\n const parsed = paths.flatMap(splitPath);\n\n for (const seg of parsed) {\n switch (seg) {\n case '..':\n out.pop();\n break;\n case '.':\n break;\n default:\n out.push(seg);\n }\n }\n\n return out.join('/');\n}\n\nexport function slash(path: string): string {\n const isExtendedLengthPath = path.startsWith('\\\\\\\\?\\\\');\n\n if (isExtendedLengthPath) {\n return path;\n }\n\n return path.replaceAll('\\\\', '/');\n}\n"],"mappings":";;;;;;;;;;;AAAA,SAAgB,SAAS,MAAc,KAAsB;CAC3D,MAAM,MAAM,KAAK,YAAY,IAAI;AAEjC,QAAO,KAAK,UAAU,QAAQ,KAAK,IAAI,MAAM,GAAG,MAAM,KAAK,SAAS,IAAI,SAAS,KAAK,OAAO;;AAG/F,SAAgB,QAAQ,MAAsB;CAC5C,MAAM,SAAS,KAAK,YAAY,IAAI;AAEpC,KAAI,WAAW,GACb,QAAO,KAAK,UAAU,OAAO;AAG/B,QAAO;;AAGT,SAAgB,QAAQ,MAAsB;AAC5C,QAAO,KAAK,MAAM,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,IAAI;;;;;AAK/C,SAAgB,UAAU,MAAwB;AAChD,QAAO,KAAK,MAAM,IAAI,CAAC,QAAQ,MAAM,EAAE,SAAS,EAAE;;;;;;;;;;;;;AAcpD,SAAgB,SAAS,GAAG,OAAyB;CACnD,MAAM,MAAM,EAAE;CACd,MAAM,SAAS,MAAM,QAAQ,UAAU;AAEvC,MAAK,MAAM,OAAO,OAChB,SAAQ,KAAR;EACE,KAAK;AACH,OAAI,KAAK;AACT;EACF,KAAK,IACH;EACF,QACE,KAAI,KAAK,IAAI;;AAInB,QAAO,IAAI,KAAK,IAAI;;AAGtB,SAAgB,MAAM,MAAsB;AAG1C,KAF6B,KAAK,WAAW,UAAU,CAGrD,QAAO;AAGT,QAAO,KAAK,WAAW,MAAM,IAAI"}
@@ -55,4 +55,4 @@ declare function rehypeCode(this: Processor, _options?: Partial<RehypeCodeOption
55
55
  declare function transformerTab(): ShikiTransformer;
56
56
  //#endregion
57
57
  export { CodeBlockIcon as a, transformerTab as i, rehypeCode as n, transformerIcon as o, rehypeCodeDefaultOptions as r, RehypeCodeOptions as t };
58
- //# sourceMappingURL=rehype-code-Bd52chOe.d.ts.map
58
+ //# sourceMappingURL=rehype-code-BUrju-yF.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rehype-code-Bd52chOe.d.ts","names":[],"sources":["../src/mdx-plugins/transformer-icon.ts","../src/mdx-plugins/rehype-code.ts"],"sourcesContent":[],"mappings":";;;;;;KAEY,aAAA;;;;;AAAA,UAiIK,WAAA,CAjIQ;EAiIR,SAAA,CAAA,EACH,MADc,CAAA,MAAA,EAAA,MAAA,CAAA;EACd,MAAA,CAAA,EACH,MADG,CAAA,MAAA,EACY,aADZ,CAAA;;;;AAOd;iBAAgB,eAAA,WAAyB,cAAmB;;;AAzIhD,cCeC,wBDfY,ECec,iBDfd;AAiIzB,KC1EK,gBD0EuB,CAAA,CAAA,EAAA,UAAA,MC1Ea,CD0Eb,CAAA,GC1EkB,CD0ElB,SAAA,OAAA,GC1EsC,ID0EtC,CC1E2C,CD0E3C,EC1E8C,CD0E9C,CAAA,GAAA,KAAA;AACd,KCzEF,iBAAA,GAAoB,gBDyElB,CCzEmC,kBDyEnC,EAAA,MAAA,CAAA,GAAA;EACY;;;AAM1B;;;;AC1HA;AA4BE;;EAY4C,MAAA,CAAA,EAAA,IAAA,GAAA,WAAA;EAAyB;;;EAAD,gBAAA,CAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,GAAA,MAAA;EAE1D;;;EAsBH,IAAA,CAAA,EAAA,WAAA,GAAA,KAAA;EAAW;AAapB;;;;EAGe,GAAA,CAAA,EAAA,OAAA;CAAM;;;AAwDpB;iBA3De,UAAA,OACR,sBACI,QAAQ,qBACjB,YAAY,MAAM;iBA0DZ,cAAA,CAAA,GAAkB"}
1
+ {"version":3,"file":"rehype-code-BUrju-yF.d.ts","names":[],"sources":["../src/mdx-plugins/transformer-icon.ts","../src/mdx-plugins/rehype-code.ts"],"sourcesContent":[],"mappings":";;;;;;KAEY,aAAA;;;;;AAAA,UAiIK,WAAA,CAjIQ;EAiIR,SAAA,CAAA,EACH,MADc,CAAA,MAAA,EAAA,MAAA,CAAA;EACd,MAAA,CAAA,EACH,MADG,CAAA,MAAA,EACY,aADZ,CAAA;;;;AAOd;iBAAgB,eAAA,WAAyB,cAAmB;;;AAzIhD,cCeC,wBDfY,ECec,iBDfd;AAiIzB,KC1EK,gBD0EuB,CAAA,CAAA,EAAA,UAAA,MC1Ea,CD0Eb,CAAA,GC1EkB,CD0ElB,SAAA,OAAA,GC1EsC,ID0EtC,CC1E2C,CD0E3C,EC1E8C,CD0E9C,CAAA,GAAA,KAAA;AACd,KCzEF,iBAAA,GAAoB,gBDyElB,CCzEmC,kBDyEnC,EAAA,MAAA,CAAA,GAAA;EACY;;;AAM1B;;;;AC1HA;AA4BE;;EAY4C,MAAA,CAAA,EAAA,IAAA,GAAA,WAAA;EAAyB;;;EAAD,gBAAA,CAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,GAAA,MAAA;EAE1D;;;EAsBH,IAAA,CAAA,EAAA,WAAA,GAAA,KAAA;EAAW;AAapB;;;;EAGe,GAAA,CAAA,EAAA,OAAA;CAAM;;;AAwDpB;iBA3De,UAAA,OACR,sBACI,QAAQ,qBACjB,YAAY,MAAM;iBA0DZ,cAAA,CAAA,GAAkB"}
@@ -1,4 +1,4 @@
1
- import { n as getHighlighter, t as defaultThemes } from "./shiki-DoHr6fEj.js";
1
+ import { n as getHighlighter, t as defaultThemes } from "./shiki-B4NO99XD.js";
2
2
  import { parseCodeBlockAttributes } from "./mdx-plugins/codeblock-utils.js";
3
3
  import rehypeShikiFromHighlighter from "@shikijs/rehype/core";
4
4
  import { transformerNotationDiff, transformerNotationFocus, transformerNotationHighlight, transformerNotationWordHighlight } from "@shikijs/transformers";
@@ -243,4 +243,4 @@ function transformerTab() {
243
243
 
244
244
  //#endregion
245
245
  export { transformerIcon as i, rehypeCodeDefaultOptions as n, transformerTab as r, rehypeCode as t };
246
- //# sourceMappingURL=rehype-code-j8FAEnuU.js.map
246
+ //# sourceMappingURL=rehype-code-Ct5Pb6BZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rehype-code-Ct5Pb6BZ.js","names":[],"sources":["../src/mdx-plugins/transformer-icon.ts","../src/mdx-plugins/rehype-code.ts"],"sourcesContent":["import { type ShikiTransformer } from 'shiki';\n\nexport type CodeBlockIcon =\n | {\n viewBox: string;\n fill: string;\n d: string;\n }\n | string;\n\nconst defaultShortcuts: Record<string, string> = {\n js: 'javascript',\n jsx: 'react',\n ts: 'typescript',\n tsx: 'react',\n 'c#': 'csharp',\n cs: 'csharp',\n gql: 'graphql',\n py: 'python',\n bash: 'shellscript',\n sh: 'shellscript',\n shell: 'shellscript',\n zsh: 'shellscript',\n 'c++': 'cpp',\n};\n\n// From https://simpleicons.org\n// Java - Not supported, https://github.com/simple-icons/simple-icons/issues/7374\nconst defaultIcons: Record<string, CodeBlockIcon> = {\n react: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M14.23 12.004a2.236 2.236 0 0 1-2.235 2.236 2.236 2.236 0 0 1-2.236-2.236 2.236 2.236 0 0 1 2.235-2.236 2.236 2.236 0 0 1 2.236 2.236zm2.648-10.69c-1.346 0-3.107.96-4.888 2.622-1.78-1.653-3.542-2.602-4.887-2.602-.41 0-.783.093-1.106.278-1.375.793-1.683 3.264-.973 6.365C1.98 8.917 0 10.42 0 12.004c0 1.59 1.99 3.097 5.043 4.03-.704 3.113-.39 5.588.988 6.38.32.187.69.275 1.102.275 1.345 0 3.107-.96 4.888-2.624 1.78 1.654 3.542 2.603 4.887 2.603.41 0 .783-.09 1.106-.275 1.374-.792 1.683-3.263.973-6.365C22.02 15.096 24 13.59 24 12.004c0-1.59-1.99-3.097-5.043-4.032.704-3.11.39-5.587-.988-6.38-.318-.184-.688-.277-1.092-.278zm-.005 1.09v.006c.225 0 .406.044.558.127.666.382.955 1.835.73 3.704-.054.46-.142.945-.25 1.44-.96-.236-2.006-.417-3.107-.534-.66-.905-1.345-1.727-2.035-2.447 1.592-1.48 3.087-2.292 4.105-2.295zm-9.77.02c1.012 0 2.514.808 4.11 2.28-.686.72-1.37 1.537-2.02 2.442-1.107.117-2.154.298-3.113.538-.112-.49-.195-.964-.254-1.42-.23-1.868.054-3.32.714-3.707.19-.09.4-.127.563-.132zm4.882 3.05c.455.468.91.992 1.36 1.564-.44-.02-.89-.034-1.345-.034-.46 0-.915.01-1.36.034.44-.572.895-1.096 1.345-1.565zM12 8.1c.74 0 1.477.034 2.202.093.406.582.802 1.203 1.183 1.86.372.64.71 1.29 1.018 1.946-.308.655-.646 1.31-1.013 1.95-.38.66-.773 1.288-1.18 1.87-.728.063-1.466.098-2.21.098-.74 0-1.477-.035-2.202-.093-.406-.582-.802-1.204-1.183-1.86-.372-.64-.71-1.29-1.018-1.946.303-.657.646-1.313 1.013-1.954.38-.66.773-1.286 1.18-1.868.728-.064 1.466-.098 2.21-.098zm-3.635.254c-.24.377-.48.763-.704 1.16-.225.39-.435.782-.635 1.174-.265-.656-.49-1.31-.676-1.947.64-.15 1.315-.283 2.015-.386zm7.26 0c.695.103 1.365.23 2.006.387-.18.632-.405 1.282-.66 1.933-.2-.39-.41-.783-.64-1.174-.225-.392-.465-.774-.705-1.146zm3.063.675c.484.15.944.317 1.375.498 1.732.74 2.852 1.708 2.852 2.476-.005.768-1.125 1.74-2.857 2.475-.42.18-.88.342-1.355.493-.28-.958-.646-1.956-1.1-2.98.45-1.017.81-2.01 1.085-2.964zm-13.395.004c.278.96.645 1.957 1.1 2.98-.45 1.017-.812 2.01-1.086 2.964-.484-.15-.944-.318-1.37-.5-1.732-.737-2.852-1.706-2.852-2.474 0-.768 1.12-1.742 2.852-2.476.42-.18.88-.342 1.356-.494zm11.678 4.28c.265.657.49 1.312.676 1.948-.64.157-1.316.29-2.016.39.24-.375.48-.762.705-1.158.225-.39.435-.788.636-1.18zm-9.945.02c.2.392.41.783.64 1.175.23.39.465.772.705 1.143-.695-.102-1.365-.23-2.006-.386.18-.63.406-1.282.66-1.933zM17.92 16.32c.112.493.2.968.254 1.423.23 1.868-.054 3.32-.714 3.708-.147.09-.338.128-.563.128-1.012 0-2.514-.807-4.11-2.28.686-.72 1.37-1.536 2.02-2.44 1.107-.118 2.154-.3 3.113-.54zm-11.83.01c.96.234 2.006.415 3.107.532.66.905 1.345 1.727 2.035 2.446-1.595 1.483-3.092 2.295-4.11 2.295-.22-.005-.406-.05-.553-.132-.666-.38-.955-1.834-.73-3.703.054-.46.142-.944.25-1.438zm4.56.64c.44.02.89.034 1.345.034.46 0 .915-.01 1.36-.034-.44.572-.895 1.095-1.345 1.565-.455-.47-.91-.993-1.36-1.565z',\n },\n vue: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M24,1.61H14.06L12,5.16,9.94,1.61H0L12,22.39ZM12,14.08,5.16,2.23H9.59L12,6.41l2.41-4.18h4.43Z',\n },\n ruby: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M20.156.083c3.033.525 3.893 2.598 3.829 4.77L24 4.822 22.635 22.71 4.89 23.926h.016C3.433 23.864.15 23.729 0 19.139l1.645-3 2.819 6.586.503 1.172 2.805-9.144-.03.007.016-.03 9.255 2.956-1.396-5.431-.99-3.9 8.82-.569-.615-.51L16.5 2.114 20.159.073l-.003.01zM0 19.089zM5.13 5.073c3.561-3.533 8.157-5.621 9.922-3.84 1.762 1.777-.105 6.105-3.673 9.636-3.563 3.532-8.103 5.734-9.864 3.957-1.766-1.777.045-6.217 3.612-9.75l.003-.003z',\n },\n zig: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'm23.53 1.02-7.686 3.45h-7.06l-2.98 3.452h7.173L.47 22.98l7.681-3.607h7.065v-.002l2.978-3.45-7.148-.001 12.482-14.9zM0 4.47v14.901h1.883l2.98-3.45H3.451v-8h.942l2.824-3.45H0zm22.117 0-2.98 3.608h1.412v7.844h-.942l-2.98 3.45H24V4.47h-1.883z',\n },\n swift: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M7.508 0c-.287 0-.573 0-.86.002-.241.002-.483.003-.724.01-.132.003-.263.009-.395.015A9.154 9.154 0 0 0 4.348.15 5.492 5.492 0 0 0 2.85.645 5.04 5.04 0 0 0 .645 2.848c-.245.48-.4.972-.495 1.5-.093.52-.122 1.05-.136 1.576a35.2 35.2 0 0 0-.012.724C0 6.935 0 7.221 0 7.508v8.984c0 .287 0 .575.002.862.002.24.005.481.012.722.014.526.043 1.057.136 1.576.095.528.25 1.02.495 1.5a5.03 5.03 0 0 0 2.205 2.203c.48.244.97.4 1.498.495.52.093 1.05.124 1.576.138.241.007.483.009.724.01.287.002.573.002.86.002h8.984c.287 0 .573 0 .86-.002.241-.001.483-.003.724-.01a10.523 10.523 0 0 0 1.578-.138 5.322 5.322 0 0 0 1.498-.495 5.035 5.035 0 0 0 2.203-2.203c.245-.48.4-.972.495-1.5.093-.52.124-1.05.138-1.576.007-.241.009-.481.01-.722.002-.287.002-.575.002-.862V7.508c0-.287 0-.573-.002-.86a33.662 33.662 0 0 0-.01-.724 10.5 10.5 0 0 0-.138-1.576 5.328 5.328 0 0 0-.495-1.5A5.039 5.039 0 0 0 21.152.645 5.32 5.32 0 0 0 19.654.15a10.493 10.493 0 0 0-1.578-.138 34.98 34.98 0 0 0-.722-.01C17.067 0 16.779 0 16.492 0H7.508zm6.035 3.41c4.114 2.47 6.545 7.162 5.549 11.131-.024.093-.05.181-.076.272l.002.001c2.062 2.538 1.5 5.258 1.236 4.745-1.072-2.086-3.066-1.568-4.088-1.043a6.803 6.803 0 0 1-.281.158l-.02.012-.002.002c-2.115 1.123-4.957 1.205-7.812-.022a12.568 12.568 0 0 1-5.64-4.838c.649.48 1.35.902 2.097 1.252 3.019 1.414 6.051 1.311 8.197-.002C9.651 12.73 7.101 9.67 5.146 7.191a10.628 10.628 0 0 1-1.005-1.384c2.34 2.142 6.038 4.83 7.365 5.576C8.69 8.408 6.208 4.743 6.324 4.86c4.436 4.47 8.528 6.996 8.528 6.996.154.085.27.154.36.213.085-.215.16-.437.224-.668.708-2.588-.09-5.548-1.893-7.992z',\n },\n prisma: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M21.8068 18.2848L13.5528.7565c-.207-.4382-.639-.7273-1.1286-.7541-.5023-.0293-.9523.213-1.2062.6253L2.266 15.1271c-.2773.4518-.2718 1.0091.0158 1.4555l4.3759 6.7786c.2608.4046.7127.6388 1.1823.6388.1332 0 .267-.0188.3987-.0577l12.7019-3.7568c.3891-.1151.7072-.3904.8737-.7553s.1633-.7828-.0075-1.1454zm-1.8481.7519L9.1814 22.2242c-.3292.0975-.6448-.1873-.5756-.5194l3.8501-18.4386c.072-.3448.5486-.3996.699-.0803l7.1288 15.138c.1344.2856-.019.6224-.325.7128z',\n },\n typescript: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M1.125 0C.502 0 0 .502 0 1.125v21.75C0 23.498.502 24 1.125 24h21.75c.623 0 1.125-.502 1.125-1.125V1.125C24 .502 23.498 0 22.875 0zm17.363 9.75c.612 0 1.154.037 1.627.111a6.38 6.38 0 0 1 1.306.34v2.458a3.95 3.95 0 0 0-.643-.361 5.093 5.093 0 0 0-.717-.26 5.453 5.453 0 0 0-1.426-.2c-.3 0-.573.028-.819.086a2.1 2.1 0 0 0-.623.242c-.17.104-.3.229-.393.374a.888.888 0 0 0-.14.49c0 .196.053.373.156.529.104.156.252.304.443.444s.423.276.696.41c.273.135.582.274.926.416.47.197.892.407 1.266.628.374.222.695.473.963.753.268.279.472.598.614.957.142.359.214.776.214 1.253 0 .657-.125 1.21-.373 1.656a3.033 3.033 0 0 1-1.012 1.085 4.38 4.38 0 0 1-1.487.596c-.566.12-1.163.18-1.79.18a9.916 9.916 0 0 1-1.84-.164 5.544 5.544 0 0 1-1.512-.493v-2.63a5.033 5.033 0 0 0 3.237 1.2c.333 0 .624-.03.872-.09.249-.06.456-.144.623-.25.166-.108.29-.234.373-.38a1.023 1.023 0 0 0-.074-1.089 2.12 2.12 0 0 0-.537-.5 5.597 5.597 0 0 0-.807-.444 27.72 27.72 0 0 0-1.007-.436c-.918-.383-1.602-.852-2.053-1.405-.45-.553-.676-1.222-.676-2.005 0-.614.123-1.141.369-1.582.246-.441.58-.804 1.004-1.089a4.494 4.494 0 0 1 1.47-.629 7.536 7.536 0 0 1 1.77-.201zm-15.113.188h9.563v2.166H9.506v9.646H6.789v-9.646H3.375z',\n },\n javascript: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M0 0h24v24H0V0zm22.034 18.276c-.175-1.095-.888-2.015-3.003-2.873-.736-.345-1.554-.585-1.797-1.14-.091-.33-.105-.51-.046-.705.15-.646.915-.84 1.515-.66.39.12.75.42.976.9 1.034-.676 1.034-.676 1.755-1.125-.27-.42-.404-.601-.586-.78-.63-.705-1.469-1.065-2.834-1.034l-.705.089c-.676.165-1.32.525-1.71 1.005-1.14 1.291-.811 3.541.569 4.471 1.365 1.02 3.361 1.244 3.616 2.205.24 1.17-.87 1.545-1.966 1.41-.811-.18-1.26-.586-1.755-1.336l-1.83 1.051c.21.48.45.689.81 1.109 1.74 1.756 6.09 1.666 6.871-1.004.029-.09.24-.705.074-1.65l.046.067zm-8.983-7.245h-2.248c0 1.938-.009 3.864-.009 5.805 0 1.232.063 2.363-.138 2.711-.33.689-1.18.601-1.566.48-.396-.196-.597-.466-.83-.855-.063-.105-.11-.196-.127-.196l-1.825 1.125c.305.63.75 1.172 1.324 1.517.855.51 2.004.675 3.207.405.783-.226 1.458-.691 1.811-1.411.51-.93.402-2.07.397-3.346.012-2.054 0-4.109 0-6.179l.004-.056z',\n },\n php: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M7.01 10.207h-.944l-.515 2.648h.838c.556 0 .97-.105 1.242-.314.272-.21.455-.559.55-1.049.092-.47.05-.802-.124-.995-.175-.193-.523-.29-1.047-.29zM12 5.688C5.373 5.688 0 8.514 0 12s5.373 6.313 12 6.313S24 15.486 24 12c0-3.486-5.373-6.312-12-6.312zm-3.26 7.451c-.261.25-.575.438-.917.551-.336.108-.765.164-1.285.164H5.357l-.327 1.681H3.652l1.23-6.326h2.65c.797 0 1.378.209 1.744.628.366.418.476 1.002.33 1.752a2.836 2.836 0 0 1-.305.847c-.143.255-.33.49-.561.703zm4.024.715l.543-2.799c.063-.318.039-.536-.068-.651-.107-.116-.336-.174-.687-.174H11.46l-.704 3.625H9.388l1.23-6.327h1.367l-.327 1.682h1.218c.767 0 1.295.134 1.586.401s.378.7.263 1.299l-.572 2.944h-1.389zm7.597-2.265a2.782 2.782 0 0 1-.305.847c-.143.255-.33.49-.561.703a2.44 2.44 0 0 1-.917.551c-.336.108-.765.164-1.286.164h-1.18l-.327 1.682h-1.378l1.23-6.326h2.649c.797 0 1.378.209 1.744.628.366.417.477 1.001.331 1.751zM17.766 10.207h-.943l-.516 2.648h.838c.557 0 .971-.105 1.242-.314.272-.21.455-.559.551-1.049.092-.47.049-.802-.125-.995s-.524-.29-1.047-.29z',\n },\n shellscript: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'm 4,4 a 1,1 0 0 0 -0.7070312,0.2929687 1,1 0 0 0 0,1.4140625 L 8.5859375,11 3.2929688,16.292969 a 1,1 0 0 0 0,1.414062 1,1 0 0 0 1.4140624,0 l 5.9999998,-6 a 1.0001,1.0001 0 0 0 0,-1.414062 L 4.7070312,4.2929687 A 1,1 0 0 0 4,4 Z m 8,14 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 h 8 a 1,1 0 0 0 1,-1 1,1 0 0 0 -1,-1 z',\n },\n c: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M16.5921 9.1962s-.354-3.298-3.627-3.39c-3.2741-.09-4.9552 2.474-4.9552 6.14 0 3.6651 1.858 6.5972 5.0451 6.5972 3.184 0 3.5381-3.665 3.5381-3.665l6.1041.365s.36 3.31-2.196 5.836c-2.552 2.5241-5.6901 2.9371-7.8762 2.9201-2.19-.017-5.2261.034-8.1602-2.97-2.938-3.0101-3.436-5.9302-3.436-8.8002 0-2.8701.556-6.6702 4.047-9.5502C7.444.72 9.849 0 12.254 0c10.0422 0 10.7172 9.2602 10.7172 9.2602z',\n },\n cpp: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M22.394 6c-.167-.29-.398-.543-.652-.69L12.926.22c-.509-.294-1.34-.294-1.848 0L2.26 5.31c-.508.293-.923 1.013-.923 1.6v10.18c0 .294.104.62.271.91.167.29.398.543.652.69l8.816 5.09c.508.293 1.34.293 1.848 0l8.816-5.09c.254-.147.485-.4.652-.69.167-.29.27-.616.27-.91V6.91c.003-.294-.1-.62-.268-.91zM12 19.11c-3.92 0-7.109-3.19-7.109-7.11 0-3.92 3.19-7.11 7.11-7.11a7.133 7.133 0 016.156 3.553l-3.076 1.78a3.567 3.567 0 00-3.08-1.78A3.56 3.56 0 008.444 12 3.56 3.56 0 0012 15.555a3.57 3.57 0 003.08-1.778l3.078 1.78A7.135 7.135 0 0112 19.11zm7.11-6.715h-.79v.79h-.79v-.79h-.79v-.79h.79v-.79h.79v.79h.79zm2.962 0h-.79v.79h-.79v-.79h-.79v-.79h.79v-.79h.79v.79h.79z',\n },\n go: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M1.811 10.231c-.047 0-.058-.023-.035-.059l.246-.315c.023-.035.081-.058.128-.058h4.172c.046 0 .058.035.035.07l-.199.303c-.023.036-.082.07-.117.07zM.047 11.306c-.047 0-.059-.023-.035-.058l.245-.316c.023-.035.082-.058.129-.058h5.328c.047 0 .07.035.058.07l-.093.28c-.012.047-.058.07-.105.07zm2.828 1.075c-.047 0-.059-.035-.035-.07l.163-.292c.023-.035.07-.07.117-.07h2.337c.047 0 .07.035.07.082l-.023.28c0 .047-.047.082-.082.082zm12.129-2.36c-.736.187-1.239.327-1.963.514-.176.046-.187.058-.34-.117-.174-.199-.303-.327-.548-.444-.737-.362-1.45-.257-2.115.175-.795.514-1.204 1.274-1.192 2.22.011.935.654 1.706 1.577 1.835.795.105 1.46-.175 1.987-.77.105-.13.198-.27.315-.434H10.47c-.245 0-.304-.152-.222-.35.152-.362.432-.97.596-1.274a.315.315 0 01.292-.187h4.253c-.023.316-.023.631-.07.947a4.983 4.983 0 01-.958 2.29c-.841 1.11-1.94 1.8-3.33 1.986-1.145.152-2.209-.07-3.143-.77-.865-.655-1.356-1.52-1.484-2.595-.152-1.274.222-2.419.993-3.424.83-1.086 1.928-1.776 3.272-2.02 1.098-.2 2.15-.07 3.096.571.62.41 1.063.97 1.356 1.648.07.105.023.164-.117.2m3.868 6.461c-1.064-.024-2.034-.328-2.852-1.029a3.665 3.665 0 01-1.262-2.255c-.21-1.32.152-2.489.947-3.529.853-1.122 1.881-1.706 3.272-1.95 1.192-.21 2.314-.095 3.33.595.923.63 1.496 1.484 1.648 2.605.198 1.578-.257 2.863-1.344 3.962-.771.783-1.718 1.273-2.805 1.495-.315.06-.63.07-.934.106zm2.78-4.72c-.011-.153-.011-.27-.034-.387-.21-1.157-1.274-1.81-2.384-1.554-1.087.245-1.788.935-2.045 2.033-.21.912.234 1.835 1.075 2.21.643.28 1.285.244 1.905-.07.923-.48 1.425-1.228 1.484-2.233z',\n },\n graphql: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M12.002 0a2.138 2.138 0 1 0 0 4.277 2.138 2.138 0 1 0 0-4.277zm8.54 4.931a2.138 2.138 0 1 0 0 4.277 2.138 2.138 0 1 0 0-4.277zm0 9.862a2.138 2.138 0 1 0 0 4.277 2.138 2.138 0 1 0 0-4.277zm-8.54 4.931a2.138 2.138 0 1 0 0 4.276 2.138 2.138 0 1 0 0-4.276zm-8.542-4.93a2.138 2.138 0 1 0 0 4.276 2.138 2.138 0 1 0 0-4.277zm0-9.863a2.138 2.138 0 1 0 0 4.277 2.138 2.138 0 1 0 0-4.277zm8.542-3.378L2.953 6.777v10.448l9.049 5.224 9.047-5.224V6.777zm0 1.601 7.66 13.27H4.34zm-1.387.371L3.97 15.037V7.363zm2.774 0 6.646 3.838v7.674zM5.355 17.44h13.293l-6.646 3.836z',\n },\n python: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M14.25.18l.9.2.73.26.59.3.45.32.34.34.25.34.16.33.1.3.04.26.02.2-.01.13V8.5l-.05.63-.13.55-.21.46-.26.38-.3.31-.33.25-.35.19-.35.14-.33.1-.3.07-.26.04-.21.02H8.77l-.69.05-.59.14-.5.22-.41.27-.33.32-.27.35-.2.36-.15.37-.1.35-.07.32-.04.27-.02.21v3.06H3.17l-.21-.03-.28-.07-.32-.12-.35-.18-.36-.26-.36-.36-.35-.46-.32-.59-.28-.73-.21-.88-.14-1.05-.05-1.23.06-1.22.16-1.04.24-.87.32-.71.36-.57.4-.44.42-.33.42-.24.4-.16.36-.1.32-.05.24-.01h.16l.06.01h8.16v-.83H6.18l-.01-2.75-.02-.37.05-.34.11-.31.17-.28.25-.26.31-.23.38-.2.44-.18.51-.15.58-.12.64-.1.71-.06.77-.04.84-.02 1.27.05zm-6.3 1.98l-.23.33-.08.41.08.41.23.34.33.22.41.09.41-.09.33-.22.23-.34.08-.41-.08-.41-.23-.33-.33-.22-.41-.09-.41.09zm13.09 3.95l.28.06.32.12.35.18.36.27.36.35.35.47.32.59.28.73.21.88.14 1.04.05 1.23-.06 1.23-.16 1.04-.24.86-.32.71-.36.57-.4.45-.42.33-.42.24-.4.16-.36.09-.32.05-.24.02-.16-.01h-8.22v.82h5.84l.01 2.76.02.36-.05.34-.11.31-.17.29-.25.25-.31.24-.38.2-.44.17-.51.15-.58.13-.64.09-.71.07-.77.04-.84.01-1.27-.04-1.07-.14-.9-.2-.73-.25-.59-.3-.45-.33-.34-.34-.25-.34-.16-.33-.1-.3-.04-.25-.02-.2.01-.13v-5.34l.05-.64.13-.54.21-.46.26-.38.3-.32.33-.24.35-.2.35-.14.33-.1.3-.06.26-.04.21-.02.13-.01h5.84l.69-.05.59-.14.5-.21.41-.28.33-.32.27-.35.2-.36.15-.36.1-.35.07-.32.04-.28.02-.21V6.07h2.09l.14.01zm-6.47 14.25l-.23.33-.08.41.08.41.23.33.33.23.41.08.41-.08.33-.23.23-.33.08-.41-.08-.41-.23-.33-.33-.23-.41-.08-.41.08z',\n },\n md: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M22.27 19.385H1.73A1.73 1.73 0 010 17.655V6.345a1.73 1.73 0 011.73-1.73h20.54A1.73 1.73 0 0124 6.345v11.308a1.73 1.73 0 01-1.73 1.731zM5.769 15.923v-4.5l2.308 2.885 2.307-2.885v4.5h2.308V8.078h-2.308l-2.307 2.885-2.308-2.885H3.46v7.847zM21.232 12h-2.309V8.077h-2.307V12h-2.308l3.461 4.039z',\n },\n kotlin: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M24 24H0V0h24L12 12Z',\n },\n rust: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M23.8346 11.7033l-1.0073-.6236a13.7268 13.7268 0 00-.0283-.2936l.8656-.8069a.3483.3483 0 00-.1154-.578l-1.1066-.414a8.4958 8.4958 0 00-.087-.2856l.6904-.9587a.3462.3462 0 00-.2257-.5446l-1.1663-.1894a9.3574 9.3574 0 00-.1407-.2622l.49-1.0761a.3437.3437 0 00-.0274-.3361.3486.3486 0 00-.3006-.154l-1.1845.0416a6.7444 6.7444 0 00-.1873-.2268l.2723-1.153a.3472.3472 0 00-.417-.4172l-1.1532.2724a14.0183 14.0183 0 00-.2278-.1873l.0415-1.1845a.3442.3442 0 00-.49-.328l-1.076.491c-.0872-.0476-.1742-.0952-.2623-.1407l-.1903-1.1673A.3483.3483 0 0016.256.955l-.9597.6905a8.4867 8.4867 0 00-.2855-.086l-.414-1.1066a.3483.3483 0 00-.5781-.1154l-.8069.8666a9.2936 9.2936 0 00-.2936-.0284L12.2946.1683a.3462.3462 0 00-.5892 0l-.6236 1.0073a13.7383 13.7383 0 00-.2936.0284L9.9803.3374a.3462.3462 0 00-.578.1154l-.4141 1.1065c-.0962.0274-.1903.0567-.2855.086L7.744.955a.3483.3483 0 00-.5447.2258L7.009 2.348a9.3574 9.3574 0 00-.2622.1407l-1.0762-.491a.3462.3462 0 00-.49.328l.0416 1.1845a7.9826 7.9826 0 00-.2278.1873L3.8413 3.425a.3472.3472 0 00-.4171.4171l.2713 1.1531c-.0628.075-.1255.1509-.1863.2268l-1.1845-.0415a.3462.3462 0 00-.328.49l.491 1.0761a9.167 9.167 0 00-.1407.2622l-1.1662.1894a.3483.3483 0 00-.2258.5446l.6904.9587a13.303 13.303 0 00-.087.2855l-1.1065.414a.3483.3483 0 00-.1155.5781l.8656.807a9.2936 9.2936 0 00-.0283.2935l-1.0073.6236a.3442.3442 0 000 .5892l1.0073.6236c.008.0982.0182.1964.0283.2936l-.8656.8079a.3462.3462 0 00.1155.578l1.1065.4141c.0273.0962.0567.1914.087.2855l-.6904.9587a.3452.3452 0 00.2268.5447l1.1662.1893c.0456.088.0922.1751.1408.2622l-.491 1.0762a.3462.3462 0 00.328.49l1.1834-.0415c.0618.0769.1235.1528.1873.2277l-.2713 1.1541a.3462.3462 0 00.4171.4161l1.153-.2713c.075.0638.151.1255.2279.1863l-.0415 1.1845a.3442.3442 0 00.49.327l1.0761-.49c.087.0486.1741.0951.2622.1407l.1903 1.1662a.3483.3483 0 00.5447.2268l.9587-.6904a9.299 9.299 0 00.2855.087l.414 1.1066a.3452.3452 0 00.5781.1154l.8079-.8656c.0972.0111.1954.0203.2936.0294l.6236 1.0073a.3472.3472 0 00.5892 0l.6236-1.0073c.0982-.0091.1964-.0183.2936-.0294l.8069.8656a.3483.3483 0 00.578-.1154l.4141-1.1066a8.4626 8.4626 0 00.2855-.087l.9587.6904a.3452.3452 0 00.5447-.2268l.1903-1.1662c.088-.0456.1751-.0931.2622-.1407l1.0762.49a.3472.3472 0 00.49-.327l-.0415-1.1845a6.7267 6.7267 0 00.2267-.1863l1.1531.2713a.3472.3472 0 00.4171-.416l-.2713-1.1542c.0628-.0749.1255-.1508.1863-.2278l1.1845.0415a.3442.3442 0 00.328-.49l-.49-1.076c.0475-.0872.0951-.1742.1407-.2623l1.1662-.1893a.3483.3483 0 00.2258-.5447l-.6904-.9587.087-.2855 1.1066-.414a.3462.3462 0 00.1154-.5781l-.8656-.8079c.0101-.0972.0202-.1954.0283-.2936l1.0073-.6236a.3442.3442 0 000-.5892zm-6.7413 8.3551a.7138.7138 0 01.2986-1.396.714.714 0 11-.2997 1.396zm-.3422-2.3142a.649.649 0 00-.7715.5l-.3573 1.6685c-1.1035.501-2.3285.7795-3.6193.7795a8.7368 8.7368 0 01-3.6951-.814l-.3574-1.6684a.648.648 0 00-.7714-.499l-1.473.3158a8.7216 8.7216 0 01-.7613-.898h7.1676c.081 0 .1356-.0141.1356-.088v-2.536c0-.074-.0536-.0881-.1356-.0881h-2.0966v-1.6077h2.2677c.2065 0 1.1065.0587 1.394 1.2088.0901.3533.2875 1.5044.4232 1.8729.1346.413.6833 1.2381 1.2685 1.2381h3.5716a.7492.7492 0 00.1296-.0131 8.7874 8.7874 0 01-.8119.9526zM6.8369 20.024a.714.714 0 11-.2997-1.396.714.714 0 01.2997 1.396zM4.1177 8.9972a.7137.7137 0 11-1.304.5791.7137.7137 0 011.304-.579zm-.8352 1.9813l1.5347-.6824a.65.65 0 00.33-.8585l-.3158-.7147h1.2432v5.6025H3.5669a8.7753 8.7753 0 01-.2834-3.348zm6.7343-.5437V8.7836h2.9601c.153 0 1.0792.1772 1.0792.8697 0 .575-.7107.7815-1.2948.7815zm10.7574 1.4862c0 .2187-.008.4363-.0243.651h-.9c-.09 0-.1265.0586-.1265.1477v.413c0 .973-.5487 1.1846-1.0296 1.2382-.4576.0517-.9648-.1913-1.0275-.4717-.2704-1.5186-.7198-1.8436-1.4305-2.4034.8817-.5599 1.799-1.386 1.799-2.4915 0-1.1936-.819-1.9458-1.3769-2.3153-.7825-.5163-1.6491-.6195-1.883-.6195H5.4682a8.7651 8.7651 0 014.907-2.7699l1.0974 1.151a.648.648 0 00.9182.0213l1.227-1.1743a8.7753 8.7753 0 016.0044 4.2762l-.8403 1.8982a.652.652 0 00.33.8585l1.6178.7188c.0283.2875.0425.577.0425.8717zm-9.3006-9.5993a.7128.7128 0 11.984 1.0316.7137.7137 0 01-.984-1.0316zm8.3389 6.71a.7107.7107 0 01.9395-.3625.7137.7137 0 11-.9405.3635z',\n },\n csharp: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M1.194 7.543v8.913c0 1.103.588 2.122 1.544 2.674l7.718 4.456a3.086 3.086 0 0 0 3.088 0l7.718-4.456a3.087 3.087 0 0 0 1.544-2.674V7.543a3.084 3.084 0 0 0-1.544-2.673L13.544.414a3.086 3.086 0 0 0-3.088 0L2.738 4.87a3.085 3.085 0 0 0-1.544 2.673Zm5.403 2.914v3.087a.77.77 0 0 0 .772.772.773.773 0 0 0 .772-.772.773.773 0 0 1 1.317-.546.775.775 0 0 1 .226.546 2.314 2.314 0 1 1-4.631 0v-3.087c0-.615.244-1.203.679-1.637a2.312 2.312 0 0 1 3.274 0c.434.434.678 1.023.678 1.637a.769.769 0 0 1-.226.545.767.767 0 0 1-1.091 0 .77.77 0 0 1-.226-.545.77.77 0 0 0-.772-.772.771.771 0 0 0-.772.772Zm12.35 3.087a.77.77 0 0 1-.772.772h-.772v.772a.773.773 0 0 1-1.544 0v-.772h-1.544v.772a.773.773 0 0 1-1.317.546.775.775 0 0 1-.226-.546v-.772H12a.771.771 0 1 1 0-1.544h.772v-1.543H12a.77.77 0 1 1 0-1.544h.772v-.772a.773.773 0 0 1 1.317-.546.775.775 0 0 1 .226.546v.772h1.544v-.772a.773.773 0 0 1 1.544 0v.772h.772a.772.772 0 0 1 0 1.544h-.772v1.543h.772a.776.776 0 0 1 .772.772Zm-3.088-2.315h-1.544v1.543h1.544v-1.543Z',\n },\n default: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M 6,1 C 4.354992,1 3,2.354992 3,4 v 16 c 0,1.645008 1.354992,3 3,3 h 12 c 1.645008,0 3,-1.354992 3,-3 V 8 7 A 1.0001,1.0001 0 0 0 20.707031,6.2929687 l -5,-5 A 1.0001,1.0001 0 0 0 15,1 h -1 z m 0,2 h 7 v 3 c 0,1.645008 1.354992,3 3,3 h 3 v 11 c 0,0.564129 -0.435871,1 -1,1 H 6 C 5.4358712,21 5,20.564129 5,20 V 4 C 5,3.4358712 5.4358712,3 6,3 Z M 15,3.4140625 18.585937,7 H 16 C 15.435871,7 15,6.5641288 15,6 Z',\n },\n};\n\nexport interface IconOptions {\n shortcuts?: Record<string, string>;\n extend?: Record<string, CodeBlockIcon>;\n}\n\n/**\n * Inject icons to `icon` property (as HTML)\n */\nexport function transformerIcon(options: IconOptions = {}): ShikiTransformer {\n const shortcuts = {\n ...defaultShortcuts,\n ...options.shortcuts,\n };\n const icons = {\n ...defaultIcons,\n ...options.extend,\n };\n\n const defaultIcon = 'default' in icons ? icons.default : undefined;\n return {\n name: 'rehype-code:icon',\n pre(pre) {\n const lang = this.options.lang;\n if (!lang) return;\n\n const iconName = lang in shortcuts ? shortcuts[lang] : lang;\n const icon = iconName in icons ? icons[iconName] : defaultIcon;\n\n if (icon) {\n pre.properties.icon =\n typeof icon === 'string'\n ? icon\n : `<svg viewBox=\"${icon.viewBox}\"><path d=\"${icon.d}\" fill=\"${icon.fill}\" /></svg>`;\n }\n\n return pre;\n },\n };\n}\n","import type { Root } from 'hast';\nimport type { RehypeShikiOptions } from '@shikijs/rehype';\nimport rehypeShikiFromHighlighter from '@shikijs/rehype/core';\nimport {\n transformerNotationDiff,\n transformerNotationFocus,\n transformerNotationHighlight,\n transformerNotationWordHighlight,\n} from '@shikijs/transformers';\nimport type { Processor, Transformer } from 'unified';\nimport { type BuiltinTheme, bundledLanguages, type ShikiTransformer } from 'shiki';\nimport type { MdxJsxFlowElement } from 'mdast-util-mdx-jsx';\nimport type { CodeBlockIcon, IconOptions } from './transformer-icon';\nimport { transformerIcon } from './transformer-icon';\nimport { defaultThemes, getHighlighter } from '@/highlight/shiki';\nimport { parseCodeBlockAttributes } from '@/mdx-plugins/codeblock-utils';\n\nexport const rehypeCodeDefaultOptions: RehypeCodeOptions = {\n lazy: true,\n themes: defaultThemes,\n defaultColor: false,\n defaultLanguage: 'plaintext',\n engine: 'js',\n transformers: [\n transformerNotationHighlight({\n matchAlgorithm: 'v3',\n }),\n transformerNotationWordHighlight({\n matchAlgorithm: 'v3',\n }),\n transformerNotationDiff({\n matchAlgorithm: 'v3',\n }),\n transformerNotationFocus({\n matchAlgorithm: 'v3',\n }),\n ],\n parseMetaString(meta) {\n const parsed = parseCodeBlockAttributes(meta, ['title', 'tab']);\n const data: Record<string, unknown> = parsed.attributes;\n parsed.rest = parseLineNumber(parsed.rest, data);\n\n data.__parsed_raw = parsed.rest;\n return data;\n },\n};\n\nfunction parseLineNumber(str: string, data: Record<string, unknown>) {\n return str.replace(/lineNumbers=(\\d+)|lineNumbers/, (_, ...args) => {\n data['data-line-numbers'] = true;\n\n if (args[0] !== undefined) data['data-line-numbers-start'] = Number(args[0]);\n\n return '';\n });\n}\n\ntype DistributiveOmit<T, K extends keyof T> = T extends unknown ? Omit<T, K> : never;\n\nexport type RehypeCodeOptions = DistributiveOmit<RehypeShikiOptions, 'lazy'> & {\n /**\n * Load languages and themes on-demand.\n * @defaultValue true\n */\n lazy?: boolean;\n\n /**\n * The regex engine to use.\n *\n * @defaultValue 'js'\n */\n engine?: 'js' | 'oniguruma';\n\n /**\n * Filter meta string before processing\n */\n filterMetaString?: (metaString: string) => string;\n\n /**\n * Add icon to code blocks\n */\n icon?: IconOptions | false;\n\n /**\n * Wrap code blocks in `<Tab>` component when \"tab\" meta string presents\n *\n * @defaultValue true\n */\n tab?: boolean;\n};\n\n/**\n * Handle codeblocks\n */\nexport function rehypeCode(\n this: Processor,\n _options: Partial<RehypeCodeOptions> = {},\n): Transformer<Root, Root> {\n const options: RehypeCodeOptions = {\n ...rehypeCodeDefaultOptions,\n ..._options,\n };\n\n const transformers = [...(options.transformers ?? [])];\n transformers.unshift({\n name: 'rehype-code:pre-process',\n preprocess(code, { meta }) {\n if (meta && '__parsed_raw' in meta) {\n meta.__raw = meta.__parsed_raw;\n delete meta.__parsed_raw;\n }\n\n if (meta && options.filterMetaString) {\n meta.__raw = options.filterMetaString(meta.__raw ?? '');\n }\n\n // Remove empty line at end\n return code.replace(/\\n$/, '');\n },\n });\n\n if (options.icon !== false) {\n transformers.push(transformerIcon(options.icon));\n }\n\n if (options.tab !== false) {\n transformers.push(transformerTab());\n }\n\n const highlighter = getHighlighter(options.engine ?? 'js', {\n themes:\n 'themes' in options\n ? (Object.values(options.themes).filter(Boolean) as BuiltinTheme[])\n : [options.theme],\n langs:\n options.langs ?? (options.lazy ? ['js', 'jsx', 'ts', 'tsx'] : Object.keys(bundledLanguages)),\n langAlias: options.langAlias,\n });\n\n const transformer = highlighter.then((loaded) =>\n rehypeShikiFromHighlighter(loaded, {\n ...options,\n transformers,\n }),\n );\n\n return async (tree, file) => {\n await (\n await transformer\n )(tree, file, () => {\n // nothing\n });\n };\n}\n\nfunction transformerTab(): ShikiTransformer {\n return {\n name: 'rehype-code:tab',\n // @ts-expect-error -- types not compatible with MDX\n root(root) {\n const value = this.options.meta?.tab;\n if (typeof value !== 'string') return root;\n console.warn(\n '[Fumadocs] For `tab=\"value\" in codeblocks, please use `remarkCodeTab` plugin instead.',\n );\n\n return {\n type: 'root',\n children: [\n {\n type: 'mdxJsxFlowElement',\n name: 'Tab',\n data: {\n _codeblock: true,\n },\n attributes: [{ type: 'mdxJsxAttribute', name: 'value', value }],\n children: root.children,\n } as MdxJsxFlowElement,\n ],\n };\n },\n };\n}\n\nexport { type CodeBlockIcon, transformerIcon, transformerTab };\n"],"mappings":"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"}
@@ -140,4 +140,4 @@ function rehypeToc({ exportToc = true } = {}) {
140
140
 
141
141
  //#endregion
142
142
  export { rehypeToc as t };
143
- //# sourceMappingURL=rehype-toc-Dqgey2tW.js.map
143
+ //# sourceMappingURL=rehype-toc-CTG0x7La.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rehype-toc-CTG0x7La.js","names":[],"sources":["../src/mdx-plugins/hast-utils.ts","../src/mdx-plugins/rehype-toc.ts"],"sourcesContent":["import type { Element, Root, RootContent } from 'hast';\n\n/**\n * Visit a node with filtered tag names\n */\nexport function visit(\n node: RootContent | Root,\n tagNames: string[],\n handler: (node: Element) => 'skip' | undefined,\n): void {\n if (node.type === 'element' && tagNames.includes(node.tagName)) {\n const result = handler(node);\n if (result === 'skip') return;\n }\n\n if ('children' in node)\n node.children.forEach((n) => {\n visit(n, tagNames, handler);\n });\n}\n","import type { Processor, Transformer } from 'unified';\nimport type { Root, RootContent } from 'hast';\nimport { toEstree } from 'hast-util-to-estree';\nimport type { Declaration, JSXElement } from 'estree-jsx';\nimport { visit } from '@/mdx-plugins/hast-utils';\n\nexport interface RehypeTocOptions {\n /**\n * Export generated toc as a variable\n *\n * @defaultValue true\n */\n exportToc?: boolean;\n}\n\nconst TocOnlyTag = '[toc]';\nconst NoTocTag = '[!toc]';\n\nexport function rehypeToc(\n this: Processor,\n { exportToc = true }: RehypeTocOptions = {},\n): Transformer<Root, Root> {\n return (tree) => {\n const output: {\n title: JSXElement;\n url: string;\n depth: number;\n }[] = [];\n\n visit(tree, ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'], (element) => {\n const id = element.properties.id;\n if (typeof id !== 'string') return 'skip';\n let isTocOnly = false;\n\n const last = element.children.at(-1);\n if (last?.type === 'text' && last.value.endsWith(TocOnlyTag)) {\n isTocOnly = true;\n last.value = last.value.substring(0, last.value.length - TocOnlyTag.length).trimEnd();\n } else if (last?.type === 'text' && last.value.endsWith(NoTocTag)) {\n last.value = last.value.substring(0, last.value.length - NoTocTag.length).trimEnd();\n return 'skip';\n }\n\n const estree = toEstree(element, {\n elementAttributeNameCase: 'react',\n stylePropertyNameCase: 'dom',\n });\n\n if (estree.body[0].type === 'ExpressionStatement')\n output.push({\n title: estree.body[0].expression as unknown as JSXElement,\n depth: Number(element.tagName.slice(1)),\n url: `#${id}`,\n });\n\n if (isTocOnly) {\n Object.assign(element, {\n type: 'comment',\n value: '',\n } satisfies RootContent);\n }\n\n return 'skip';\n });\n\n const declaration: Declaration = {\n type: 'VariableDeclaration',\n kind: 'const',\n declarations: [\n {\n type: 'VariableDeclarator',\n id: {\n type: 'Identifier',\n name: 'toc',\n },\n init: {\n type: 'ArrayExpression',\n elements: output.map((item) => ({\n type: 'ObjectExpression',\n properties: [\n {\n type: 'Property',\n method: false,\n shorthand: false,\n computed: false,\n key: {\n type: 'Identifier',\n name: 'depth',\n },\n value: {\n type: 'Literal',\n value: item.depth,\n },\n kind: 'init',\n },\n {\n type: 'Property',\n method: false,\n shorthand: false,\n computed: false,\n key: {\n type: 'Identifier',\n name: 'url',\n },\n value: {\n type: 'Literal',\n value: item.url,\n },\n kind: 'init',\n },\n {\n type: 'Property',\n method: false,\n shorthand: false,\n computed: false,\n key: {\n type: 'Identifier',\n name: 'title',\n },\n value: {\n type: 'JSXFragment',\n openingFragment: { type: 'JSXOpeningFragment' },\n closingFragment: { type: 'JSXClosingFragment' },\n children: item.title.children,\n },\n kind: 'init',\n },\n ],\n })),\n },\n },\n ],\n };\n\n tree.children.push({\n type: 'mdxjsEsm',\n value: '',\n data: {\n estree: {\n type: 'Program',\n body: [\n exportToc\n ? {\n type: 'ExportNamedDeclaration',\n declaration,\n attributes: [],\n specifiers: [],\n }\n : declaration,\n ],\n sourceType: 'module',\n comments: [],\n },\n },\n } satisfies RootContent);\n };\n}\n"],"mappings":";;;;;;AAKA,SAAgB,MACd,MACA,UACA,SACM;AACN,KAAI,KAAK,SAAS,aAAa,SAAS,SAAS,KAAK,QAAQ,EAE5D;MADe,QAAQ,KAAK,KACb,OAAQ;;AAGzB,KAAI,cAAc,KAChB,MAAK,SAAS,SAAS,MAAM;AAC3B,QAAM,GAAG,UAAU,QAAQ;GAC3B;;;;;ACHN,MAAM,aAAa;AACnB,MAAM,WAAW;AAEjB,SAAgB,UAEd,EAAE,YAAY,SAA2B,EAAE,EAClB;AACzB,SAAQ,SAAS;EACf,MAAM,SAIA,EAAE;AAER,QAAM,MAAM;GAAC;GAAM;GAAM;GAAM;GAAM;GAAM;GAAK,GAAG,YAAY;GAC7D,MAAM,KAAK,QAAQ,WAAW;AAC9B,OAAI,OAAO,OAAO,SAAU,QAAO;GACnC,IAAI,YAAY;GAEhB,MAAM,OAAO,QAAQ,SAAS,GAAG,GAAG;AACpC,OAAI,MAAM,SAAS,UAAU,KAAK,MAAM,SAAS,WAAW,EAAE;AAC5D,gBAAY;AACZ,SAAK,QAAQ,KAAK,MAAM,UAAU,GAAG,KAAK,MAAM,SAAS,EAAkB,CAAC,SAAS;cAC5E,MAAM,SAAS,UAAU,KAAK,MAAM,SAAS,SAAS,EAAE;AACjE,SAAK,QAAQ,KAAK,MAAM,UAAU,GAAG,KAAK,MAAM,SAAS,EAAgB,CAAC,SAAS;AACnF,WAAO;;GAGT,MAAM,SAAS,SAAS,SAAS;IAC/B,0BAA0B;IAC1B,uBAAuB;IACxB,CAAC;AAEF,OAAI,OAAO,KAAK,GAAG,SAAS,sBAC1B,QAAO,KAAK;IACV,OAAO,OAAO,KAAK,GAAG;IACtB,OAAO,OAAO,QAAQ,QAAQ,MAAM,EAAE,CAAC;IACvC,KAAK,IAAI;IACV,CAAC;AAEJ,OAAI,UACF,QAAO,OAAO,SAAS;IACrB,MAAM;IACN,OAAO;IACR,CAAuB;AAG1B,UAAO;IACP;EAEF,MAAM,cAA2B;GAC/B,MAAM;GACN,MAAM;GACN,cAAc,CACZ;IACE,MAAM;IACN,IAAI;KACF,MAAM;KACN,MAAM;KACP;IACD,MAAM;KACJ,MAAM;KACN,UAAU,OAAO,KAAK,UAAU;MAC9B,MAAM;MACN,YAAY;OACV;QACE,MAAM;QACN,QAAQ;QACR,WAAW;QACX,UAAU;QACV,KAAK;SACH,MAAM;SACN,MAAM;SACP;QACD,OAAO;SACL,MAAM;SACN,OAAO,KAAK;SACb;QACD,MAAM;QACP;OACD;QACE,MAAM;QACN,QAAQ;QACR,WAAW;QACX,UAAU;QACV,KAAK;SACH,MAAM;SACN,MAAM;SACP;QACD,OAAO;SACL,MAAM;SACN,OAAO,KAAK;SACb;QACD,MAAM;QACP;OACD;QACE,MAAM;QACN,QAAQ;QACR,WAAW;QACX,UAAU;QACV,KAAK;SACH,MAAM;SACN,MAAM;SACP;QACD,OAAO;SACL,MAAM;SACN,iBAAiB,EAAE,MAAM,sBAAsB;SAC/C,iBAAiB,EAAE,MAAM,sBAAsB;SAC/C,UAAU,KAAK,MAAM;SACtB;QACD,MAAM;QACP;OACF;MACF,EAAE;KACJ;IACF,CACF;GACF;AAED,OAAK,SAAS,KAAK;GACjB,MAAM;GACN,OAAO;GACP,MAAM,EACJ,QAAQ;IACN,MAAM;IACN,MAAM,CACJ,YACI;KACE,MAAM;KACN;KACA,YAAY,EAAE;KACd,YAAY,EAAE;KACf,GACD,YACL;IACD,YAAY;IACZ,UAAU,EAAE;IACb,EACF;GACF,CAAuB"}
@@ -15,4 +15,4 @@ declare function rehypeToc(this: Processor, {
15
15
  }?: RehypeTocOptions): Transformer<Root, Root>;
16
16
  //#endregion
17
17
  export { rehypeToc as n, RehypeTocOptions as t };
18
- //# sourceMappingURL=rehype-toc-BJVsblvp.d.ts.map
18
+ //# sourceMappingURL=rehype-toc-Dcgzd_Vy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rehype-toc-BJVsblvp.d.ts","names":[],"sources":["../src/mdx-plugins/rehype-toc.ts"],"sourcesContent":[],"mappings":";;;;UAMiB,gBAAA;;AAAjB;AAYA;;;EAEwB,SAAA,CAAA,EAAA,OAAA;;AACH,iBAHL,SAAA,CAGK,IAAA,EAFb,SAEa,EAAA;EAAA;AAAA,CAAA,CAAA,EADG,gBACH,CAAA,EAAlB,WAAkB,CAAN,IAAM,EAAA,IAAA,CAAA"}
1
+ {"version":3,"file":"rehype-toc-Dcgzd_Vy.d.ts","names":[],"sources":["../src/mdx-plugins/rehype-toc.ts"],"sourcesContent":[],"mappings":";;;;UAMiB,gBAAA;;AAAjB;AAYA;;;EAEwB,SAAA,CAAA,EAAA,OAAA;;AACH,iBAHL,SAAA,CAGK,IAAA,EAFb,SAEa,EAAA;EAAA;AAAA,CAAA,CAAA,EADG,gBACH,CAAA,EAAlB,WAAkB,CAAN,IAAM,EAAA,IAAA,CAAA"}
@@ -19,4 +19,4 @@ interface RemarkAdmonitionOptions {
19
19
  declare function remarkAdmonition(options?: RemarkAdmonitionOptions): Transformer<Root, Root>;
20
20
  //#endregion
21
21
  export { remarkAdmonition as n, RemarkAdmonitionOptions as t };
22
- //# sourceMappingURL=remark-admonition-Chku_iWO.d.ts.map
22
+ //# sourceMappingURL=remark-admonition-BvgS4oU1.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"remark-admonition-Chku_iWO.d.ts","names":[],"sources":["../src/mdx-plugins/remark-admonition.ts"],"sourcesContent":[],"mappings":";;;;UAKiB,uBAAA;;EAAA;AAgBjB;;EAAqF,OAAA,CAAA,EAVzE,MAUyE,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;;;iBAArE,gBAAA,WAA0B,0BAA+B,YAAY,MAAM"}
1
+ {"version":3,"file":"remark-admonition-BvgS4oU1.d.ts","names":[],"sources":["../src/mdx-plugins/remark-admonition.ts"],"sourcesContent":[],"mappings":";;;;UAKiB,uBAAA;;EAAA;AAgBjB;;EAAqF,OAAA,CAAA,EAVzE,MAUyE,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;;;iBAArE,gBAAA,WAA0B,0BAA+B,YAAY,MAAM"}
@@ -29,4 +29,4 @@ declare const Types: {
29
29
  declare function remarkCodeTab(this: Processor, options?: RemarkCodeTabOptions): Transformer<Root, Root>;
30
30
  //#endregion
31
31
  export { remarkCodeTab as n, RemarkCodeTabOptions as t };
32
- //# sourceMappingURL=remark-code-tab-C0f6BPcw.d.ts.map
32
+ //# sourceMappingURL=remark-code-tab-Ds_BdYXz.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"remark-code-tab-C0f6BPcw.d.ts","names":[],"sources":["../src/mdx-plugins/remark-code-tab.ts"],"sourcesContent":[],"mappings":";;;;;KAMK,OAAA,gBAAuB;UACX,oBAAA;EADZ,IAAA,CAAA,EAEI,OAFG;EACK;AAShB;;;;EAAA,QAAA,CAAA,EAAA,OAAA;AAAA;eA6Hc,OAAA,CAAA;EACJ,UAAA,QAAA,CAAA;IAGN,GAAA,CAAA,EAAA,MAAA;EAvHU;;cAkJT,KA9ID,EAAA;EAAiB,aAAA,EAAA;IAmJN,OAAA,CAAA,SAAa,EApCd,SAoCc,EAAA,KAAA,EAnClB,IAmCkB,EAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,CAAA,EAhCxB,iBAgCwB;EACrB,CAAA;EACG,IAAA,EAAA;IACI,OAAA,CAAA,SAAA,EA1JA,SA0JA,EAAA,KAAA,EAzJJ,IAyJI,EAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,CAAA,EAtJV,iBAsJU;EAAM,CAAA;CAAlB;AAAW,iBAHE,aAAA,CAGF,IAAA,EAFN,SAEM,EAAA,OAAA,CAAA,EADH,oBACG,CAAA,EAAX,WAAW,CAAC,IAAD,EAAO,IAAP,CAAA"}
1
+ {"version":3,"file":"remark-code-tab-Ds_BdYXz.d.ts","names":[],"sources":["../src/mdx-plugins/remark-code-tab.ts"],"sourcesContent":[],"mappings":";;;;;KAMK,OAAA,gBAAuB;UACX,oBAAA;EADZ,IAAA,CAAA,EAEI,OAFG;EACK;AAShB;;;;EAAA,QAAA,CAAA,EAAA,OAAA;AAAA;eA6Hc,OAAA,CAAA;EACJ,UAAA,QAAA,CAAA;IAGN,GAAA,CAAA,EAAA,MAAA;EAvHU;;cAkJT,KA9ID,EAAA;EAAiB,aAAA,EAAA;IAmJN,OAAA,CAAA,SAAa,EApCd,SAoCc,EAAA,KAAA,EAnClB,IAmCkB,EAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,CAAA,EAhCxB,iBAgCwB;EACrB,CAAA;EACG,IAAA,EAAA;IACI,OAAA,CAAA,SAAA,EA1JA,SA0JA,EAAA,KAAA,EAzJJ,IAyJI,EAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,CAAA,EAtJV,iBAsJU;EAAM,CAAA;CAAlB;AAAW,iBAHE,aAAA,CAGF,IAAA,EAFN,SAEM,EAAA,OAAA,CAAA,EADH,oBACG,CAAA,EAAX,WAAW,CAAC,IAAD,EAAO,IAAP,CAAA"}
@@ -33,4 +33,4 @@ declare function remarkDirectiveAdmonition({
33
33
  }?: RemarkDirectiveAdmonitionOptions): Transformer<Root, Root>;
34
34
  //#endregion
35
35
  export { remarkDirectiveAdmonition as n, RemarkDirectiveAdmonitionOptions as t };
36
- //# sourceMappingURL=remark-directive-admonition-CBwJdh9z.d.ts.map
36
+ //# sourceMappingURL=remark-directive-admonition-02cR5K1L.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"remark-directive-admonition-CBwJdh9z.d.ts","names":[],"sources":["../src/mdx-plugins/remark-directive-admonition.ts"],"sourcesContent":[],"mappings":";;;;UAKiB,gCAAA;;AAAjB;AAuBA;EAEI,IAAA,CAAA,EAAA;IACA,gBAAA,CAAA,EAAA,MAAA;IACA,YAAA,CAAA,EAAA,MAAA;IAEF,kBAAA,CAAA,EAAA,MAAA;EASC,CAAA;EAAoD;;;;;UAvB7C;;;;;;;iBAQM,yBAAA;;;;;;;IAeb,mCAAwC,YAAY,MAAM"}
1
+ {"version":3,"file":"remark-directive-admonition-02cR5K1L.d.ts","names":[],"sources":["../src/mdx-plugins/remark-directive-admonition.ts"],"sourcesContent":[],"mappings":";;;;UAKiB,gCAAA;;AAAjB;AAuBA;EAEI,IAAA,CAAA,EAAA;IACA,gBAAA,CAAA,EAAA,MAAA;IACA,YAAA,CAAA,EAAA,MAAA;IAEF,kBAAA,CAAA,EAAA,MAAA;EASC,CAAA;EAAoD;;;;;UAvB7C;;;;;;;iBAQM,yBAAA;;;;;;;IAeb,mCAAwC,YAAY,MAAM"}
@@ -0,0 +1,52 @@
1
+ import { Transformer } from "unified";
2
+ import { Root, RootContent } from "mdast";
3
+
4
+ //#region src/mdx-plugins/remark-feedback-block.d.ts
5
+ interface RemarkFeedbackBlockOptions {
6
+ /**
7
+ * generate block ID, default to using MD5.
8
+ */
9
+ generateHash?: (ctx: {
10
+ body: string;
11
+ }) => string;
12
+ /**
13
+ * @defaultValue FeedbackBlock
14
+ */
15
+ tagName?: string;
16
+ /**
17
+ * determine how the node should be resolved into a feedback block.
18
+ *
19
+ * scan paragraph, list, and image nodes by default.
20
+ *
21
+ * @returns
22
+ * - `true`: convert the node into a feedback block.
23
+ * - `false`: skip the current node and look into its children.
24
+ * - `skip`: skip the current node and its children.
25
+ */
26
+ resolve?: (node: RootContent) => boolean | 'skip';
27
+ /**
28
+ * generate & include the block body to `<FeedbackBlock body="..." />` as string
29
+ *
30
+ * @defaultValue true
31
+ */
32
+ generateBody?: boolean;
33
+ }
34
+ interface FeedbackBlockProps {
35
+ id: string;
36
+ /** the text body of block, only exists when `generateBody` is enabled. */
37
+ body?: string;
38
+ }
39
+ /**
40
+ * Generate MDX `<FeedbackBlock />` elements with an unique `id` for every block-like element.
41
+ *
42
+ * Note: the uniqueness is only guaranteed per MDX file/page.
43
+ */
44
+ declare function remarkFeedbackBlock({
45
+ generateHash,
46
+ tagName,
47
+ resolve,
48
+ generateBody
49
+ }?: RemarkFeedbackBlockOptions): Transformer<Root, Root>;
50
+ //#endregion
51
+ export { RemarkFeedbackBlockOptions as n, remarkFeedbackBlock as r, FeedbackBlockProps as t };
52
+ //# sourceMappingURL=remark-feedback-block-fAyt4LdQ.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remark-feedback-block-fAyt4LdQ.d.ts","names":[],"sources":["../src/mdx-plugins/remark-feedback-block.ts"],"sourcesContent":[],"mappings":";;;;UAOiB,0BAAA;;AAAjB;AA+BA;EAWgB,YAAA,CAAA,EAAA,CAAA,GAAA,EAAA;IACd,IAAA,EAAA,MAAA;EACA,CAAA,EAAA,GAAA,MAAA;EACA;;;EAE+C,OAAA,CAAA,EAAA,MAAA;EAAM;;;;;;;;;;mBA1BpC;;;;;;;;UAUF,kBAAA;;;;;;;;;;iBAWD,mBAAA;;;;;IAKb,6BAAkC,YAAY,MAAM"}
@@ -34,4 +34,4 @@ declare function remarkHeading({
34
34
  }?: RemarkHeadingOptions): Transformer<Root, Root>;
35
35
  //#endregion
36
36
  export { remarkHeading as n, RemarkHeadingOptions as t };
37
- //# sourceMappingURL=remark-heading-CUAe4zIu.d.ts.map
37
+ //# sourceMappingURL=remark-heading-CSButCYt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"remark-heading-CUAe4zIu.d.ts","names":[],"sources":["../src/mdx-plugins/remark-heading.ts"],"sourcesContent":[],"mappings":";;;;;gCAUuC;IARI,WAAA,CAAA,EAAA;MAAA,EAAA,CAAA,EAAA,MAAA;IAQJ,CAAA;EAAI;;AAS1B,UAAA,oBAAA,CAAoB;EAqBrB,IAAA,CAAA,EAAA,CAAA,IAAA,EApBA,IAoBa,EAAA,OAAA,EApBE,OAoBF,EAAA,IAAA,EAAA,MAAA,EAAA,GAAA,MAAA;EACrB;;;;;EAGyC,QAAA,CAAA,EAAA,OAAA;EAAlB;;;;;;;;;;iBAJf,aAAA;QACR;;;IAGL,uBAA4B,YAAY,MAAM"}
1
+ {"version":3,"file":"remark-heading-CSButCYt.d.ts","names":[],"sources":["../src/mdx-plugins/remark-heading.ts"],"sourcesContent":[],"mappings":";;;;;gCAUuC;IARI,WAAA,CAAA,EAAA;MAAA,EAAA,CAAA,EAAA,MAAA;IAQJ,CAAA;EAAI;;AAS1B,UAAA,oBAAA,CAAoB;EAqBrB,IAAA,CAAA,EAAA,CAAA,IAAA,EApBA,IAoBa,EAAA,OAAA,EApBE,OAoBF,EAAA,IAAA,EAAA,MAAA,EAAA,GAAA,MAAA;EACrB;;;;;EAGyC,QAAA,CAAA,EAAA,OAAA;EAAlB;;;;;;;;;;iBAJf,aAAA;QACR;;;IAGL,uBAA4B,YAAY,MAAM"}
@@ -62,4 +62,4 @@ declare function remarkImage({
62
62
  }?: RemarkImageOptions): Transformer<Root, Root>;
63
63
  //#endregion
64
64
  export { remarkImage as n, RemarkImageOptions as t };
65
- //# sourceMappingURL=remark-image-DMRnxsRO.d.ts.map
65
+ //# sourceMappingURL=remark-image-C3MnP-3r.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"remark-image-DMRnxsRO.d.ts","names":[],"sources":["../src/mdx-plugins/remark-image.ts"],"sourcesContent":[],"mappings":";;;;KAYK,oBAAA;;AAVsC;AAmB3C;EA4DgB,OAAA,CAAA,EAAA,MAAW;CACzB,GAAA,OAAA;AACA,UA9De,kBAAA,CA8Df;EACA;;;EAGC,SAAA,CAAA,EAAA,MAAA;EAAsC;;;;;;;;;;;;;;;mDA5CU;;;;;;;;;;;;;;;;;;;;aAsBtC;;;;;iBAgBG,WAAA;;;;;;IAMb,qBAA0B,YAAY,MAAM"}
1
+ {"version":3,"file":"remark-image-C3MnP-3r.d.ts","names":[],"sources":["../src/mdx-plugins/remark-image.ts"],"sourcesContent":[],"mappings":";;;;KAYK,oBAAA;;AAVsC;AAmB3C;EA4DgB,OAAA,CAAA,EAAA,MAAW;CACzB,GAAA,OAAA;AACA,UA9De,kBAAA,CA8Df;EACA;;;EAGC,SAAA,CAAA,EAAA,MAAA;EAAsC;;;;;;;;;;;;;;;mDA5CU;;;;;;;;;;;;;;;;;;;;aAsBtC;;;;;iBAgBG,WAAA;;;;;;IAMb,qBAA0B,YAAY,MAAM"}
@@ -53,4 +53,4 @@ interface RemarkMdxFilesOptions {
53
53
  declare function remarkMdxFiles(options?: RemarkMdxFilesOptions): Transformer<Root, Root>;
54
54
  //#endregion
55
55
  export { remarkMdxFiles as a, ToMdxOptions as i, FolderNode as n, RemarkMdxFilesOptions as r, FileNode as t };
56
- //# sourceMappingURL=remark-mdx-files-B5KMXnfh.d.ts.map
56
+ //# sourceMappingURL=remark-mdx-files-BXUiiX3M.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"remark-mdx-files-B5KMXnfh.d.ts","names":[],"sources":["../src/mdx-plugins/remark-mdx-files.ts"],"sourcesContent":[],"mappings":";;;;;UAOiB,QAAA;;EAAA,IAAA,EAAA,MAAQ;EAMR,IAAA,EAAA,MAAA;AAOjB;AAIK,UAXY,UAAA,CAWL;EAEK,KAAA,EAAA,MAAA;EAKA,IAAA,EAAA,QAAA;EAAe,IAAA,EAAA,MAAA;EAAiB,QAAA,EAdrC,IAcqC,EAAA;;AA+GjC,UA1HC,YAAA,CA0Ha;EAAU,cAAA,EAAA,OAAA;;KAtHnC,IAAA,GAAO,QAsH2E,GAtHhE,UAsHgE;AAAlB,UApHpD,qBAAA,CAoHoD;EAAW;;;;iBA/G/D,eAAe,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA+GjC,cAAA,WAAwB,wBAA6B,YAAY,MAAM"}
1
+ {"version":3,"file":"remark-mdx-files-BXUiiX3M.d.ts","names":[],"sources":["../src/mdx-plugins/remark-mdx-files.ts"],"sourcesContent":[],"mappings":";;;;;UAOiB,QAAA;;EAAA,IAAA,EAAA,MAAQ;EAMR,IAAA,EAAA,MAAA;AAOjB;AAIK,UAXY,UAAA,CAWL;EAEK,KAAA,EAAA,MAAA;EAKA,IAAA,EAAA,QAAA;EAAe,IAAA,EAAA,MAAA;EAAiB,QAAA,EAdrC,IAcqC,EAAA;;AA+GjC,UA1HC,YAAA,CA0Ha;EAAU,cAAA,EAAA,OAAA;;KAtHnC,IAAA,GAAO,QAsH2E,GAtHhE,UAsHgE;AAAlB,UApHpD,qBAAA,CAoHoD;EAAW;;;;iBA/G/D,eAAe,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA+GjC,cAAA,WAAwB,wBAA6B,YAAY,MAAM"}
@@ -14,4 +14,4 @@ interface RemarkMdxMermaidOptions {
14
14
  declare function remarkMdxMermaid(options?: RemarkMdxMermaidOptions): Transformer<Root, Root>;
15
15
  //#endregion
16
16
  export { remarkMdxMermaid as n, RemarkMdxMermaidOptions as t };
17
- //# sourceMappingURL=remark-mdx-mermaid-C_4W5gfj.d.ts.map
17
+ //# sourceMappingURL=remark-mdx-mermaid-C5ZBxx8x.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"remark-mdx-mermaid-C_4W5gfj.d.ts","names":[],"sources":["../src/mdx-plugins/remark-mdx-mermaid.ts"],"sourcesContent":[],"mappings":";;;;UAoBiB,uBAAA;;AAAjB;AAUA;EAA0C,IAAA,CAAA,EAAA,MAAA;;;;;iBAA1B,gBAAA,WAA0B,0BAA+B,YAAY,MAAM"}
1
+ {"version":3,"file":"remark-mdx-mermaid-C5ZBxx8x.d.ts","names":[],"sources":["../src/mdx-plugins/remark-mdx-mermaid.ts"],"sourcesContent":[],"mappings":";;;;UAoBiB,uBAAA;;AAAjB;AAUA;EAA0C,IAAA,CAAA,EAAA,MAAA;;;;;iBAA1B,gBAAA,WAA0B,0BAA+B,YAAY,MAAM"}
@@ -33,4 +33,4 @@ declare function remarkNpm({
33
33
  }?: RemarkNpmOptions): Transformer<Root, Root>;
34
34
  //#endregion
35
35
  export { remarkNpm as n, RemarkNpmOptions as t };
36
- //# sourceMappingURL=remark-npm-CykFgJn2.d.ts.map
36
+ //# sourceMappingURL=remark-npm-DADZg0pf.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"remark-npm-CykFgJn2.d.ts","names":[],"sources":["../src/mdx-plugins/remark-npm.ts"],"sourcesContent":[],"mappings":";;;;UAMU,cAAA;;EAAA;AAcV;AAoBA;EACE,KAAA,CAAA,EAAA,MAAA;EACA;;;EAM2C,OAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,GAAA,MAAA,GAAA,SAAA;;AAAP,UA5BrB,gBAAA,CA4BqB;;;;;;;;;oBAhBlB;;;;;iBAQJ,SAAA;;;IAQb,mBAAwB,YAAY,MAAM"}
1
+ {"version":3,"file":"remark-npm-DADZg0pf.d.ts","names":[],"sources":["../src/mdx-plugins/remark-npm.ts"],"sourcesContent":[],"mappings":";;;;UAMU,cAAA;;EAAA;AAcV;AAoBA;EACE,KAAA,CAAA,EAAA,MAAA;EACA;;;EAM2C,OAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,GAAA,MAAA,GAAA,SAAA;;AAAP,UA5BrB,gBAAA,CA4BqB;;;;;;;;;oBAhBlB;;;;;iBAQJ,SAAA;;;IAQb,mBAAwB,YAAY,MAAM"}
@@ -25,4 +25,4 @@ declare function remarkSteps({
25
25
  }?: RemarkStepsOptions): Transformer<Root, Root>;
26
26
  //#endregion
27
27
  export { remarkSteps as n, RemarkStepsOptions as t };
28
- //# sourceMappingURL=remark-steps-5-DmLVv3.d.ts.map
28
+ //# sourceMappingURL=remark-steps-CWEE34cT.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"remark-steps-5-DmLVv3.d.ts","names":[],"sources":["../src/mdx-plugins/remark-steps.ts"],"sourcesContent":[],"mappings":";;;;UAKiB,kBAAA;;AAAjB;AAqBA;;;EAGG,KAAA,CAAA,EAAA,MAAA;EAAsC;;;;;;;;;;iBAHzB,WAAA;;;IAGb,qBAA0B,YAAY,MAAM"}
1
+ {"version":3,"file":"remark-steps-CWEE34cT.d.ts","names":[],"sources":["../src/mdx-plugins/remark-steps.ts"],"sourcesContent":[],"mappings":";;;;UAKiB,kBAAA;;AAAjB;AAqBA;;;EAGG,KAAA,CAAA,EAAA,MAAA;EAAsC;;;;;;;;;;iBAHzB,WAAA;;;IAGb,qBAA0B,YAAY,MAAM"}
@@ -74,4 +74,4 @@ declare function remarkStructure({
74
74
  declare function structure(content: string, remarkPlugins?: PluggableList, options?: StructureOptions): StructuredData;
75
75
  //#endregion
76
76
  export { structure as a, remarkStructureDefaultOptions as i, StructuredData as n, remarkStructure as r, StructureOptions as t };
77
- //# sourceMappingURL=remark-structure-CszwnaMR.d.ts.map
77
+ //# sourceMappingURL=remark-structure-ChKxMXnK.d.ts.map