sourcey 2.1.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/README.md +128 -210
  2. package/dist/cli.js +18 -57
  3. package/dist/cli.js.map +1 -1
  4. package/dist/client/scroll-tracker.js +125 -40
  5. package/dist/client/search.js +27 -3
  6. package/dist/client/tabs.js +164 -24
  7. package/dist/components/App.d.ts +3 -2
  8. package/dist/components/App.d.ts.map +1 -1
  9. package/dist/components/App.js +3 -3
  10. package/dist/components/App.js.map +1 -1
  11. package/dist/components/layout/Head.d.ts.map +1 -1
  12. package/dist/components/layout/Head.js +30 -9
  13. package/dist/components/layout/Head.js.map +1 -1
  14. package/dist/components/layout/Header.d.ts +2 -7
  15. package/dist/components/layout/Header.d.ts.map +1 -1
  16. package/dist/components/layout/Header.js +12 -15
  17. package/dist/components/layout/Header.js.map +1 -1
  18. package/dist/components/layout/Page.d.ts.map +1 -1
  19. package/dist/components/layout/Page.js +54 -10
  20. package/dist/components/layout/Page.js.map +1 -1
  21. package/dist/components/layout/Sidebar.js +1 -1
  22. package/dist/components/layout/Sidebar.js.map +1 -1
  23. package/dist/components/layout/TableOfContents.d.ts.map +1 -1
  24. package/dist/components/layout/TableOfContents.js +1 -1
  25. package/dist/components/layout/TableOfContents.js.map +1 -1
  26. package/dist/components/openapi/CodeSamples.d.ts +4 -2
  27. package/dist/components/openapi/CodeSamples.d.ts.map +1 -1
  28. package/dist/components/openapi/CodeSamples.js +9 -5
  29. package/dist/components/openapi/CodeSamples.js.map +1 -1
  30. package/dist/components/openapi/Definition.js +1 -1
  31. package/dist/components/openapi/Definition.js.map +1 -1
  32. package/dist/components/openapi/EndpointBar.d.ts.map +1 -1
  33. package/dist/components/openapi/EndpointBar.js +3 -3
  34. package/dist/components/openapi/EndpointBar.js.map +1 -1
  35. package/dist/components/openapi/Introduction.d.ts.map +1 -1
  36. package/dist/components/openapi/Introduction.js +1 -1
  37. package/dist/components/openapi/Introduction.js.map +1 -1
  38. package/dist/components/openapi/Operation.d.ts.map +1 -1
  39. package/dist/components/openapi/Operation.js +5 -1
  40. package/dist/components/openapi/Operation.js.map +1 -1
  41. package/dist/components/openapi/Responses.d.ts +2 -1
  42. package/dist/components/openapi/Responses.d.ts.map +1 -1
  43. package/dist/components/openapi/Responses.js +17 -6
  44. package/dist/components/openapi/Responses.js.map +1 -1
  45. package/dist/components/openapi/Security.d.ts.map +1 -1
  46. package/dist/components/openapi/Security.js +3 -2
  47. package/dist/components/openapi/Security.js.map +1 -1
  48. package/dist/components/openapi/Tags.d.ts.map +1 -1
  49. package/dist/components/openapi/Tags.js +1 -1
  50. package/dist/components/openapi/Tags.js.map +1 -1
  51. package/dist/components/schema/ExampleView.d.ts +1 -1
  52. package/dist/components/schema/ExampleView.d.ts.map +1 -1
  53. package/dist/components/schema/ExampleView.js +3 -2
  54. package/dist/components/schema/ExampleView.js.map +1 -1
  55. package/dist/components/ui/CopyButton.d.ts +6 -0
  56. package/dist/components/ui/CopyButton.d.ts.map +1 -0
  57. package/dist/components/ui/CopyButton.js +10 -0
  58. package/dist/components/ui/CopyButton.js.map +1 -0
  59. package/dist/components/ui/Markdown.js +1 -1
  60. package/dist/components/ui/Markdown.js.map +1 -1
  61. package/dist/components/ui/SocialIcon.d.ts +5 -0
  62. package/dist/components/ui/SocialIcon.d.ts.map +1 -0
  63. package/dist/components/ui/SocialIcon.js +19 -0
  64. package/dist/components/ui/SocialIcon.js.map +1 -0
  65. package/dist/config.d.ts +133 -37
  66. package/dist/config.d.ts.map +1 -1
  67. package/dist/config.js +227 -73
  68. package/dist/config.js.map +1 -1
  69. package/dist/core/doxygen-loader.d.ts +9 -0
  70. package/dist/core/doxygen-loader.d.ts.map +1 -0
  71. package/dist/core/doxygen-loader.js +68 -0
  72. package/dist/core/doxygen-loader.js.map +1 -0
  73. package/dist/core/markdown-loader.d.ts +2 -5
  74. package/dist/core/markdown-loader.d.ts.map +1 -1
  75. package/dist/core/markdown-loader.js +218 -27
  76. package/dist/core/markdown-loader.js.map +1 -1
  77. package/dist/core/navigation.d.ts +2 -2
  78. package/dist/core/navigation.d.ts.map +1 -1
  79. package/dist/core/navigation.js +9 -10
  80. package/dist/core/navigation.js.map +1 -1
  81. package/dist/core/search-indexer.d.ts +1 -1
  82. package/dist/core/search-indexer.d.ts.map +1 -1
  83. package/dist/core/search-indexer.js +6 -5
  84. package/dist/core/search-indexer.js.map +1 -1
  85. package/dist/dev-server.d.ts +0 -12
  86. package/dist/dev-server.d.ts.map +1 -1
  87. package/dist/dev-server.js +101 -79
  88. package/dist/dev-server.js.map +1 -1
  89. package/dist/index.d.ts +2 -30
  90. package/dist/index.d.ts.map +1 -1
  91. package/dist/index.js +82 -70
  92. package/dist/index.js.map +1 -1
  93. package/dist/renderer/context.d.ts +29 -2
  94. package/dist/renderer/context.d.ts.map +1 -1
  95. package/dist/renderer/context.js +1 -1
  96. package/dist/renderer/context.js.map +1 -1
  97. package/dist/renderer/html-builder.d.ts +3 -16
  98. package/dist/renderer/html-builder.d.ts.map +1 -1
  99. package/dist/renderer/html-builder.js +6 -20
  100. package/dist/renderer/html-builder.js.map +1 -1
  101. package/dist/renderer/static-renderer.d.ts +2 -2
  102. package/dist/renderer/static-renderer.d.ts.map +1 -1
  103. package/dist/renderer/static-renderer.js +2 -2
  104. package/dist/renderer/static-renderer.js.map +1 -1
  105. package/dist/themes/default/main.css +13 -1
  106. package/dist/themes/default/sourcey.css +629 -41
  107. package/dist/utils/code-samples.d.ts +8 -3
  108. package/dist/utils/code-samples.d.ts.map +1 -1
  109. package/dist/utils/code-samples.js +188 -51
  110. package/dist/utils/code-samples.js.map +1 -1
  111. package/dist/utils/copy-svg.d.ts +9 -0
  112. package/dist/utils/copy-svg.d.ts.map +1 -0
  113. package/dist/utils/copy-svg.js +9 -0
  114. package/dist/utils/copy-svg.js.map +1 -0
  115. package/dist/utils/highlighter.d.ts.map +1 -1
  116. package/dist/utils/highlighter.js +18 -7
  117. package/dist/utils/highlighter.js.map +1 -1
  118. package/dist/utils/icons.d.ts +14 -0
  119. package/dist/utils/icons.d.ts.map +1 -0
  120. package/dist/utils/icons.js +59 -0
  121. package/dist/utils/icons.js.map +1 -0
  122. package/dist/utils/lang-icons.d.ts +17 -0
  123. package/dist/utils/lang-icons.d.ts.map +1 -0
  124. package/dist/utils/lang-icons.js +87 -0
  125. package/dist/utils/lang-icons.js.map +1 -0
  126. package/dist/utils/markdown.d.ts +17 -1
  127. package/dist/utils/markdown.d.ts.map +1 -1
  128. package/dist/utils/markdown.js +59 -2
  129. package/dist/utils/markdown.js.map +1 -1
  130. package/dist/vite-plugin.d.ts.map +1 -1
  131. package/dist/vite-plugin.js +4 -7
  132. package/dist/vite-plugin.js.map +1 -1
  133. package/package.json +5 -4
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Language icons for the code sample switcher.
3
+ *
4
+ * DevIcon plain variants (MIT). Designed for monochrome rendering at small sizes.
5
+ * https://devicon.dev/
6
+ */
7
+ // DevIcon path data — viewBox and single-path d attribute
8
+ const DEVICONS = {
9
+ bash: {
10
+ viewBox: "0 0 128 128",
11
+ d: "M112.205 26.129 71.8 2.142A15.326 15.326 0 0 0 64.005 0c-2.688 0-5.386.717-7.796 2.152L15.795 26.14C10.976 28.999 8 34.289 8 40.018v47.975c0 5.729 2.967 11.019 7.796 13.878L56.2 125.858A15.193 15.193 0 0 0 63.995 128a15.32 15.32 0 0 0 7.796-2.142l40.414-23.987c4.819-2.86 7.796-8.16 7.796-13.878V40.007c0-5.718-2.967-11.019-7.796-13.878zm-31.29 74.907.063 3.448c0 .418-.267.889-.588 1.06l-2.046 1.178c-.321.16-.6-.032-.6-.45l-.032-3.394c-1.745.728-3.523.9-4.647.45-.214-.086-.31-.397-.225-.761l.739-3.116c.064-.246.193-.493.364-.643a.725.725 0 0 1 .193-.139c.117-.064.235-.075.332-.032 1.22.407 2.773.214 4.272-.535 1.907-.964 3.18-2.913 3.16-4.84-.022-1.757-.964-2.474-3.267-2.496-2.934.01-5.675-.567-5.718-4.894-.032-3.555 1.81-7.26 4.744-9.595l-.032-3.48c0-.428.257-.9.589-1.07l1.98-1.264c.322-.161.6.043.6.46l.033 3.48c1.456-.578 2.72-.738 3.865-.47.247.064.364.406.257.802l-.77 3.084a1.372 1.372 0 0 1-.354.622.825.825 0 0 1-.203.15c-.108.053-.204.064-.3.053-.525-.118-1.767-.385-3.727.6-2.056 1.038-2.773 2.827-2.763 4.155.022 1.585.825 2.066 3.63 2.11 3.738.064 5.344 1.691 5.387 5.45.053 3.684-1.917 7.657-4.937 10.077zm21.18-5.794c0 .322-.042.621-.31.771l-10.216 6.211c-.267.161-.482.022-.482-.3V99.29c0-.321.193-.492.46-.653l10.067-6.018c.268-.16.482-.022.482.3zm7.026-58.993L70.89 59.86c-4.765 2.784-8.278 5.911-8.288 11.662v47.107c0 3.437 1.392 5.665 3.523 6.318a12.81 12.81 0 0 1-2.12.204c-2.239 0-4.445-.61-6.383-1.757L17.219 99.408c-3.951-2.345-6.403-6.725-6.403-11.426V40.007c0-4.7 2.452-9.08 6.403-11.426L57.634 4.594a12.555 12.555 0 0 1 6.382-1.756c2.238 0 4.444.61 6.382 1.756l40.415 23.987c3.33 1.981 5.579 5.397 6.21 9.242-1.36-2.86-4.38-3.63-7.902-1.574z",
12
+ },
13
+ javascript: {
14
+ viewBox: "0 0 128 128",
15
+ d: "M2 1v125h125V1H2zm66.119 106.513c-1.845 3.749-5.367 6.212-9.448 7.401-6.271 1.44-12.269.619-16.731-2.059-2.986-1.832-5.318-4.652-6.901-7.901l9.52-5.83c.083.035.333.487.667 1.071 1.214 2.034 2.261 3.474 4.319 4.485 2.022.69 6.461 1.131 8.175-2.427 1.047-1.81.714-7.628.714-14.065C58.433 78.073 58.48 68 58.48 58h11.709c0 11 .06 21.418 0 32.152.025 6.58.596 12.446-2.07 17.361zm48.574-3.308c-4.07 13.922-26.762 14.374-35.83 5.176-1.916-2.165-3.117-3.296-4.26-5.795 4.819-2.772 4.819-2.772 9.508-5.485 2.547 3.915 4.902 6.068 9.139 6.949 5.748.702 11.531-1.273 10.234-7.378-1.333-4.986-11.77-6.199-18.873-11.531-7.211-4.843-8.901-16.611-2.975-23.335 1.975-2.487 5.343-4.343 8.877-5.235l3.688-.477c7.081-.143 11.507 1.727 14.756 5.355.904.916 1.642 1.904 3.022 4.045-3.772 2.404-3.76 2.381-9.163 5.879-1.154-2.486-3.069-4.046-5.093-4.724-3.142-.952-7.104.083-7.926 3.403-.285 1.023-.226 1.975.227 3.665 1.273 2.903 5.545 4.165 9.377 5.926 11.031 4.474 14.756 9.271 15.672 14.981.882 4.916-.213 8.105-.38 8.581z",
16
+ },
17
+ typescript: {
18
+ viewBox: "0 0 128 128",
19
+ d: "M2 63.91v62.5h125v-125H2zm100.73-5a15.56 15.56 0 017.82 4.5 20.58 20.58 0 013 4c0 .16-5.4 3.81-8.69 5.85-.12.08-.6-.44-1.13-1.23a7.09 7.09 0 00-5.87-3.53c-3.79-.26-6.23 1.73-6.21 5a4.58 4.58 0 00.54 2.34c.83 1.73 2.38 2.76 7.24 4.86 8.95 3.85 12.78 6.39 15.16 10 2.66 4 3.25 10.46 1.45 15.24-2 5.2-6.9 8.73-13.83 9.9a38.32 38.32 0 01-9.52-.1A23 23 0 0180 109.19c-1.15-1.27-3.39-4.58-3.25-4.82a9.34 9.34 0 011.15-.73l4.6-2.64 3.59-2.08.75 1.11a16.78 16.78 0 004.74 4.54c4 2.1 9.46 1.81 12.16-.62a5.43 5.43 0 00.69-6.92c-1-1.39-3-2.56-8.59-5-6.45-2.78-9.23-4.5-11.77-7.24a16.48 16.48 0 01-3.43-6.25 25 25 0 01-.22-8c1.33-6.23 6-10.58 12.82-11.87a31.66 31.66 0 019.49.26zm-29.34 5.24v5.12H57.16v46.23H45.65V69.26H29.38v-5a49.19 49.19 0 01.14-5.16c.06-.08 10-.12 22-.1h21.81z",
20
+ },
21
+ python: {
22
+ viewBox: "0 0 128 128",
23
+ d: "M49.33 62h29.159C86.606 62 93 55.132 93 46.981V19.183c0-7.912-6.632-13.856-14.555-15.176-5.014-.835-10.195-1.215-15.187-1.191-4.99.023-9.612.448-13.805 1.191C37.098 6.188 35 10.758 35 19.183V30h29v4H23.776c-8.484 0-15.914 5.108-18.237 14.811-2.681 11.12-2.8 17.919 0 29.53C7.614 86.983 12.569 93 21.054 93H31V79.952C31 70.315 39.428 62 49.33 62zm-1.838-39.11c-3.026 0-5.478-2.479-5.478-5.545 0-3.079 2.451-5.581 5.478-5.581 3.015 0 5.479 2.502 5.479 5.581-.001 3.066-2.465 5.545-5.479 5.545zm74.789 25.921C120.183 40.363 116.178 34 107.682 34H97v12.981C97 57.031 88.206 65 78.489 65H49.33C41.342 65 35 72.326 35 80.326v27.8c0 7.91 6.745 12.564 14.462 14.834 9.242 2.717 17.994 3.208 29.051 0C85.862 120.831 93 116.549 93 108.126V97H64v-4h43.682c8.484 0 11.647-5.776 14.599-14.66 3.047-9.145 2.916-17.799 0-29.529zm-41.955 55.606c3.027 0 5.479 2.479 5.479 5.547 0 3.076-2.451 5.579-5.479 5.579-3.015 0-5.478-2.502-5.478-5.579 0-3.068 2.463-5.547 5.478-5.547z",
24
+ },
25
+ go: {
26
+ viewBox: "0 0 128 128",
27
+ d: "M11.156 54.829c-.243 0-.303-.122-.182-.303l1.273-1.637c.12-.182.424-.303.666-.303H34.55c.243 0 .303.182.182.364l-1.03 1.576c-.121.181-.424.363-.606.363zM2.004 60.404c-.242 0-.303-.12-.182-.303l1.273-1.636c.121-.182.424-.303.667-.303h27.636c.242 0 .364.182.303.364l-.485 1.454c-.06.243-.303.364-.545.364zM16.67 65.98c-.242 0-.302-.182-.181-.364l.848-1.515c.122-.182.364-.363.607-.363h12.12c.243 0 .364.181.364.424l-.12 1.454c0 .243-.243.425-.425.425zM79.58 53.738c-3.819.97-6.425 1.697-10.182 2.666-.91.243-.97.303-1.758-.606-.909-1.03-1.576-1.697-2.848-2.303-3.819-1.878-7.516-1.333-10.97.91-4.121 2.666-6.242 6.605-6.182 11.514.06 4.849 3.394 8.849 8.182 9.516 4.121.545 7.576-.91 10.303-4 .545-.667 1.03-1.394 1.636-2.243H56.064c-1.272 0-1.575-.788-1.151-1.818.788-1.879 2.242-5.03 3.09-6.606.183-.364.607-.97 1.516-.97h22.06c-.12 1.637-.12 3.273-.363 4.91-.667 4.363-2.303 8.363-4.97 11.878-4.364 5.758-10.06 9.333-17.273 10.303-5.939.788-11.454-.364-16.302-4-4.485-3.394-7.03-7.879-7.697-13.454-.788-6.606 1.151-12.546 5.151-17.758 4.303-5.636 10-9.212 16.97-10.485 5.697-1.03 11.151-.363 16.06 2.97 3.212 2.121 5.515 5.03 7.03 8.545.364.546.122.849-.606 1.03z M99.64 87.253c-5.515-.122-10.546-1.697-14.788-5.334-3.576-3.09-5.818-7.03-6.545-11.697-1.091-6.848.787-12.909 4.909-18.302 4.424-5.819 9.757-8.849 16.97-10.122 6.181-1.09 12-.484 17.272 3.091 4.788 3.273 7.757 7.697 8.545 13.515 1.03 8.182-1.333 14.849-6.97 20.546-4 4.06-8.909 6.606-14.545 7.757-1.636.303-3.273.364-4.848.546zm14.424-24.485c-.06-.788-.06-1.394-.182-2-1.09-6-6.606-9.394-12.363-8.06-5.637 1.272-9.273 4.848-10.606 10.545-1.091 4.727 1.212 9.515 5.575 11.454 3.334 1.455 6.667 1.273 9.879-.363 4.788-2.485 7.394-6.364 7.697-11.576z",
28
+ },
29
+ ruby: {
30
+ viewBox: "0 0 128 128",
31
+ d: "m35.971 111.33 81.958 11.188c-9.374-15.606-18.507-30.813-27.713-46.144Zm89.71-86.383L93.513 73.339c-.462.696-1.061 1.248-.41 2.321 8.016 13.237 15.969 26.513 23.942 39.777 1.258 2.095 2.53 4.182 4.157 6.192l4.834-96.58zM16.252 66.22c.375.355 1.311.562 1.747.347 7.689-3.779 15.427-7.474 22.948-11.564 2.453-1.333 4.339-3.723 6.452-5.661 6.997-6.417 13.983-12.847 20.966-19.278.427-.395.933-.777 1.188-1.275 2.508-4.902 4.973-9.829 7.525-14.898-3.043-1.144-5.928-2.263-8.849-3.281-.396-.138-1.02.136-1.449.375-6.761 3.777-13.649 7.353-20.195 11.472-3.275 2.061-5.943 5.098-8.843 7.743-4.674 4.266-9.342 8.542-13.948 12.882a24.011 24.011 0 0 0-3.288 3.854c-3.15 4.587-6.206 9.24-9.402 14.025 1.786 1.847 3.41 3.613 5.148 5.259zm28.102-6.271-11.556 48.823 54.3-34.987zm76.631-34.846-46.15 7.71 15.662 38.096zM44.996 56.644l41.892 13.6c-5.25-12.79-10.32-25.133-15.495-37.737ZM16.831 75.643 2.169 110.691l27.925-.825Zm13.593 26.096.346-.076c3.353-13.941 6.754-27.786 10.177-42.272L18.544 71.035c3.819 9.926 7.891 20.397 11.88 30.704zm84.927-78.897c-4.459-1.181-8.918-2.366-13.379-3.539-6.412-1.686-12.829-3.351-19.237-5.052-.801-.213-1.38-.352-1.851.613-2.265 4.64-4.6 9.245-6.901 13.868-.071.143-.056.328-.111.687l41.47-6.285zM89.482 12.288l36.343 10.054-6.005-17.11-30.285 6.715ZM33.505 114.007c-4.501-.519-9.122-.042-13.687.037-3.75.063-7.5.206-11.25.323-.386.012-.771.09-1.156.506 31.003 2.866 62.005 5.732 93.007 8.6l.063-.414-29.815-4.07c-12.384-1.691-24.747-3.551-37.162-4.982ZM2.782 99.994c3.995-9.27 7.973-18.546 11.984-27.809.401-.929.37-1.56-.415-2.308-1.678-1.597-3.237-3.318-5.071-5.226-2.479 12.24-4.897 24.177-7.317 36.113l.271.127c.185-.297.411-.578.548-.897zm78.74-90.153c6.737-1.738 13.572-3.097 20.367-4.613.44-.099.87-.244 1.303-.368l-.067-.332-29.194 3.928c2.741 1.197 4.853 2.091 7.591 1.385z",
32
+ },
33
+ java: {
34
+ viewBox: "0 0 128 128",
35
+ d: "M47.617 98.12c-19.192 5.362 11.677 16.439 36.115 5.969-4.003-1.556-6.874-3.351-6.874-3.351-10.897 2.06-15.952 2.222-25.844 1.092-8.164-.935-3.397-3.71-3.397-3.71zm33.189-10.46c-14.444 2.779-22.787 2.69-33.354 1.6-8.171-.845-2.822-4.805-2.822-4.805-21.137 7.016 11.767 14.977 41.309 6.336-3.14-1.106-5.133-3.131-5.133-3.131zm11.319-60.575c.001 0-42.731 10.669-22.323 34.187 6.024 6.935-1.58 13.17-1.58 13.17s15.289-7.891 8.269-17.777c-6.559-9.215-11.587-13.793 15.634-29.58zm9.998 81.144s3.529 2.91-3.888 5.159c-14.102 4.272-58.706 5.56-71.095.171-4.45-1.938 3.899-4.625 6.526-5.192 2.739-.593 4.303-.485 4.303-.485-4.952-3.487-32.013 6.85-13.742 9.815 49.821 8.076 90.817-3.637 77.896-9.468zM85 77.896c2.395-1.634 5.703-3.053 5.703-3.053s-9.424 1.685-18.813 2.474c-11.494.964-23.823 1.154-30.012.326-14.652-1.959 8.033-7.348 8.033-7.348s-8.812-.596-19.644 4.644C17.455 81.134 61.958 83.958 85 77.896zm5.609 15.145c-.108.29-.468.616-.468.616 31.273-8.221 19.775-28.979 4.822-23.725-1.312.464-2 1.543-2 1.543s.829-.334 2.678-.72c7.559-1.575 18.389 10.119-5.032 22.286zM64.181 70.069c-4.614-10.429-20.26-19.553.007-35.559C89.459 14.563 76.492 1.587 76.492 1.587c5.23 20.608-18.451 26.833-26.999 39.667-5.821 8.745 2.857 18.142 14.688 28.815zm27.274 51.748c-19.187 3.612-42.854 3.191-56.887.874 0 0 2.874 2.38 17.646 3.331 22.476 1.437 57-.8 57.816-11.436.001 0-1.57 4.032-18.575 7.231z",
36
+ },
37
+ php: {
38
+ viewBox: "0 0 128 128",
39
+ d: "M64 30.332C28.654 30.332 0 45.407 0 64s28.654 33.668 64 33.668c35.345 0 64-15.075 64-33.668S99.346 30.332 64 30.332zm-5.982 9.81h7.293v.003l-1.745 8.968h6.496c4.087 0 6.908.714 8.458 2.139 1.553 1.427 2.017 3.737 1.398 6.93l-3.053 15.7h-7.408l2.902-14.929c.33-1.698.208-2.855-.365-3.473-.573-.617-1.793-.925-3.658-.925h-5.828L58.752 73.88h-7.291l6.557-33.738zM26.73 49.114h14.133c4.252 0 7.355 1.116 9.305 3.348 1.95 2.232 2.536 5.346 1.758 9.346-.32 1.649-.863 3.154-1.625 4.52-.763 1.364-1.76 2.613-2.99 3.745-1.468 1.373-3.098 2.353-4.891 2.936-1.794.585-4.08.875-6.858.875h-6.294l-1.745 8.97h-7.35l6.557-33.74zm57.366 0h14.13c4.252 0 7.353 1.116 9.303 3.348h.002c1.95 2.232 2.538 5.346 1.76 9.346-.32 1.649-.861 3.154-1.623 4.52-.763 1.364-1.76 2.613-2.992 3.745-1.467 1.373-3.098 2.353-4.893 2.936-1.794.585-4.077.875-6.855.875h-6.295l-1.744 8.97h-7.35l6.557-33.74zm-51.051 5.325-2.742 14.12h4.468c2.963 0 5.172-.556 6.622-1.673 1.45-1.116 2.428-2.981 2.937-5.592.485-2.507.264-4.279-.666-5.309-.93-1.032-2.79-1.547-5.584-1.547h-5.035zm57.363 0-2.744 14.12h4.47c2.965 0 5.17-.556 6.622-1.673 1.449-1.116 2.427-2.981 2.935-5.592.487-2.507.266-4.279-.664-5.309-.93-1.032-2.792-1.547-5.584-1.547h-5.035z",
40
+ },
41
+ csharp: {
42
+ viewBox: "0 0 128 128",
43
+ d: "M117.5 33.5l.3-.2c-.6-1.1-1.5-2.1-2.4-2.6L67.1 2.9c-.8-.5-1.9-.7-3.1-.7-1.2 0-2.3.3-3.1.7l-48 27.9c-1.7 1-2.9 3.5-2.9 5.4v55.7c0 1.1.2 2.3.9 3.4l-.2.1c.5.8 1.2 1.5 1.9 1.9l48.2 27.9c.8.5 1.9.7 3.1.7 1.2 0 2.3-.3 3.1-.7l48-27.9c1.7-1 2.9-3.5 2.9-5.4V36.1c.1-.8 0-1.7-.4-2.6zm-53.5 70c-21.8 0-39.5-17.7-39.5-39.5S42.2 24.5 64 24.5c14.7 0 27.5 8.1 34.3 20l-13 7.5C81.1 44.5 73.1 39.5 64 39.5c-13.5 0-24.5 11-24.5 24.5s11 24.5 24.5 24.5c9.1 0 17.1-5 21.3-12.4l12.9 7.6c-6.8 11.8-19.6 19.8-34.2 19.8zM115 62h-3.2l-.9 4h4.1v5h-5l-1.2 6h-4.9l1.2-6h-3.8l-1.2 6h-4.8l1.2-6H94v-5h3.5l.9-4H94v-5h5.3l1.2-6h4.9l-1.2 6h3.8l1.2-6h4.8l-1.2 6h2.2v5zm-12.7 4h3.8l.9-4h-3.8z",
44
+ },
45
+ rust: {
46
+ viewBox: "0 0 128 128",
47
+ d: "M62.96.242c-.232.135-1.203 1.528-2.16 3.097-2.4 3.94-2.426 3.942-5.65.55-2.098-2.208-2.605-2.612-3.28-2.607-.44.002-.995.152-1.235.332-.24.18-.916 1.612-1.504 3.183-1.346 3.6-1.41 3.715-2.156 3.86-.46.086-1.343-.407-3.463-1.929-1.565-1.125-3.1-2.045-3.411-2.045-1.291 0-1.655.706-2.27 4.4-.78 4.697-.754 4.681-4.988 2.758-1.71-.776-3.33-1.41-3.603-1.41-.274 0-.792.293-1.15.652-.652.652-.653.655-.475 4.246l.178 3.595-.68.364c-.602.322-1.017.283-3.684-.348-3.48-.822-4.216-.8-4.92.15l-.516.693.692 2.964c.38 1.63.745 3.2.814 3.487.067.287-.05.746-.26 1.02-.348.448-.717.49-3.94.44-5.452-.086-5.761.382-3.51 5.3.718 1.56 1.305 2.98 1.305 3.15 0 .898-.717 1.224-3.794 1.727-1.722.28-3.218.51-3.326.51-.107 0-.43.235-.717.522-.937.936-.671 1.816 1.453 4.814 2.646 3.735 2.642 3.75-1.73 5.421-4.971 1.902-5.072 2.37-1.287 5.96 3.525 3.344 3.53 3.295-.461 5.804C.208 62.8.162 62.846.085 63.876c-.093 1.253-.071 1.275 3.538 3.48 3.57 2.18 3.57 2.246.067 5.56C-.078 76.48.038 77 5.013 78.877c4.347 1.64 4.353 1.66 1.702 5.394-1.502 2.117-1.981 3-1.981 3.653 0 1.223.637 1.535 4.44 2.174 3.206.54 3.92.857 3.92 1.741 0 .182-.588 1.612-1.307 3.177-2.236 4.87-1.981 5.275 3.31 5.275 4.93 0 4.799-.15 3.737 4.294-.8 3.35-.813 3.992-.088 4.715.554.556 1.6.494 4.87-.289 2.499-.596 2.937-.637 3.516-.328l.66.354-.177 3.594c-.178 3.593-.177 3.595.475 4.248.358.36.884.652 1.165.652.282 0 1.903-.63 3.604-1.404 4.22-1.916 4.194-1.932 4.973 2.75.617 3.711.977 4.4 2.294 4.4.327 0 1.83-.88 3.34-1.958 2.654-1.893 3.342-2.19 4.049-1.74.182.115.89 1.67 1.572 3.455 1.003 2.625 1.37 3.31 1.929 3.576 1.062.51 1.72.1 4.218-2.62 3.016-3.286 3.14-3.27 5.602.72 2.72 4.406 3.424 4.396 6.212-.089 2.402-3.864 2.374-3.862 5.621-.47 2.157 2.25 2.616 2.61 3.343 2.61.464 0 1.019-.175 1.23-.388.214-.213.92-1.786 1.568-3.496.649-1.71 1.321-3.2 1.495-3.31.687-.436 1.398-.13 4.048 1.752 1.56 1.108 3.028 1.96 3.377 1.96 1.296 0 1.764-.92 2.302-4.535.46-3.082.554-3.378 1.16-3.685.596-.302.954-.2 3.75 1.07 1.701.77 3.323 1.402 3.604 1.402.282 0 .816-.302 1.184-.672l.672-.67-.184-3.448c-.177-3.29-.16-3.468.364-3.943.54-.488.596-.486 3.615.204 3.656.835 4.338.857 5.025.17.671-.67.664-.818-.254-4.69-1.03-4.346-1.168-4.19 3.78-4.19 3.374 0 3.75-.049 4.18-.523.718-.793.547-1.702-.896-4.779-.729-1.55-1.32-2.96-1.315-3.135.024-.914.743-1.227 4.065-1.767 2.033-.329 3.553-.71 3.829-.96.923-.833.584-1.918-1.523-4.873-2.642-3.703-2.63-3.738 1.599-5.297 5.064-1.866 5.209-2.488 1.419-6.09-3.51-3.335-3.512-3.317.333-5.677 4.648-2.853 4.655-3.496.082-6.335-3.933-2.44-3.93-2.406-.405-5.753 3.78-3.593 3.678-4.063-1.295-5.965-4.388-1.679-4.402-1.72-1.735-5.38 1.588-2.18 1.982-2.903 1.982-3.65 0-1.306-.586-1.598-4.436-2.22-3.216-.52-3.924-.835-3.924-1.75 0-.174.588-1.574 1.307-3.113 1.406-3.013 1.604-4.22.808-4.94-.428-.387-1-.443-4.067-.392-3.208.054-3.618.008-4.063-.439-.486-.488-.48-.557.278-3.725.931-3.88.935-3.975.17-4.694-.777-.73-1.262-.718-4.826.121-2.597.612-3.027.653-3.617.337l-.67-.36.185-3.582.186-3.58-.67-.67c-.369-.37-.891-.67-1.163-.67-.27 0-1.884.64-3.583 1.421-2.838 1.306-3.143 1.393-3.757 1.072-.612-.32-.714-.637-1.237-3.829-.603-3.693-.977-4.412-2.288-4.412-.311 0-1.853.925-3.426 2.055-2.584 1.856-2.93 2.032-3.574 1.807-.533-.186-.843-.59-1.221-1.599-.28-.742-.817-2.172-1.194-3.177-.762-2.028-1.187-2.482-2.328-2.482-.637 0-1.213.458-3.28 2.604-3.25 3.375-3.261 3.374-5.65-.545C66.073 1.78 65.075.382 64.81.24c-.597-.32-1.3-.32-1.85.002m2.96 11.798c2.83 2.014 1.326 6.75-2.144 6.75-3.368 0-5.064-4.057-2.66-6.36 1.358-1.3 3.304-1.459 4.805-.39m-3.558 12.507c1.855.705 2.616.282 6.852-3.8l3.182-3.07 1.347.18c4.225.56 12.627 4.25 17.455 7.666 4.436 3.14 10.332 9.534 12.845 13.93l.537.942-2.38 5.364c-1.31 2.95-2.382 5.673-2.382 6.053 0 .878.576 2.267 1.13 2.726.234.195 2.457 1.265 4.939 2.378l4.51 2.025.178 1.148c.23 1.495.26 5.167.052 6.21l-.163.816h-2.575c-2.987 0-2.756-.267-2.918 3.396-.118 2.656-.76 4.124-2.22 5.075-2.377 1.551-6.304 1.27-7.97-.57-.255-.284-.752-1.705-1.105-3.16-1.03-4.254-2.413-6.64-5.193-8.965-.878-.733-1.595-1.418-1.595-1.522 0-.102.965-.915 2.145-1.803 4.298-3.24 6.77-7.012 7.04-10.747.519-7.126-5.158-13.767-13.602-15.92-2.002-.51-2.857-.526-27.624-.526-14.057 0-25.56-.092-25.56-.204 0-.263 3.125-3.295 4.965-4.816 5.054-4.178 11.618-7.465 18.417-9.22l2.35-.61 3.34 3.387c1.839 1.863 3.64 3.5 4.003 3.637M20.3 46.34c1.539 1.008 2.17 3.54 1.26 5.062-1.405 2.356-4.966 2.455-6.373.178-2.046-3.309 1.895-7.349 5.113-5.24m90.672.13c4.026 2.454.906 8.493-3.404 6.586-2.877-1.273-2.97-5.206-.155-6.64 1.174-.6 2.523-.579 3.56.053M32.163 61.5v15.02h-13.28l-.526-2.285c-1.036-4.5-1.472-9.156-1.211-12.969l.182-2.679 4.565-2.047c2.864-1.283 4.706-2.262 4.943-2.625 1.038-1.584.94-2.715-.518-5.933l-.68-1.502h6.523V61.5M70.39 47.132c2.843.74 4.345 2.245 4.349 4.355.002 1.55-.765 2.52-2.67 3.38-1.348.61-1.562.625-10.063.708l-8.686.084v-8.92h7.782c6.078 0 8.112.086 9.288.393m-2.934 21.554c1.41.392 3.076 1.616 3.93 2.888.898 1.337 1.423 3.076 2.667 8.836 1.05 4.87 1.727 6.46 3.62 8.532 2.345 2.566 1.8 2.466 13.514 2.466 5.61 0 10.198.09 10.198.2 0 .197-3.863 4.764-4.03 4.764-.048 0-2.066-.422-4.484-.939-6.829-1.458-7.075-1.287-8.642 6.032l-1.008 4.702-.91.448c-1.518.75-6.453 2.292-9.01 2.82-4.228.87-8.828 1.162-12.871.821-6.893-.585-16.02-3.259-16.377-4.8-.075-.327-.535-2.443-1.018-4.704-.485-2.26-1.074-4.404-1.31-4.764-1.13-1.724-2.318-1.83-7.547-.674-1.98.44-3.708.796-3.84.796-.248 0-3.923-4.249-3.923-4.535 0-.09 8.728-.194 19.396-.23l19.395-.066.07-6.89c.05-4.865-.018-6.997-.23-7.25-.234-.284-1.485-.358-6.011-.358H53.32v-8.36l6.597.001c3.626.002 7.02.12 7.539.264M37.57 100.02c3.084 1.88 1.605 6.804-2.043 6.8-3.74 0-5.127-4.88-1.94-6.826 1.055-.643 2.908-.63 3.983.026m56.48.206c1.512 1.108 2.015 3.413 1.079 4.95-2.46 4.034-8.612.827-6.557-3.419 1.01-2.085 3.695-2.837 5.478-1.53",
48
+ },
49
+ };
50
+ // Heroicons terminal (for curl)
51
+ const TERMINAL_SVG = `<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="m6.75 7.5 3 2.25-3 2.25m4.5 0h3m-9 8.25h13.5A2.25 2.25 0 0 0 21 18V6a2.25 2.25 0 0 0-2.25-2.25H5.25A2.25 2.25 0 0 0 3 6v12a2.25 2.25 0 0 0 2.25 2.25Z"/></svg>`;
52
+ const CODE_SVG = `<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" stroke-width="1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M17.25 6.75 22.5 12l-5.25 5.25m-10.5 0L1.5 12l5.25-5.25m7.5-3-4.5 16.5"/></svg>`;
53
+ const ALIASES = {
54
+ bash: "curl", sh: "curl", shell: "curl", zsh: "curl",
55
+ js: "javascript", jsx: "javascript",
56
+ ts: "typescript", tsx: "typescript",
57
+ py: "python", rb: "ruby", rs: "rust", cs: "csharp",
58
+ };
59
+ /**
60
+ * Render a language icon as HTML.
61
+ * curl uses a stroked Heroicon. All others use DevIcon via data-lang + CSS mask.
62
+ */
63
+ export function langIcon(lang) {
64
+ const raw = lang.toLowerCase();
65
+ const key = ALIASES[raw] ?? raw;
66
+ if (key === "curl") {
67
+ return TERMINAL_SVG.replace("<svg ", '<svg class="lang-icon" ');
68
+ }
69
+ if (DEVICONS[key]) {
70
+ return `<span class="lang-icon" data-lang="${key}"></span>`;
71
+ }
72
+ return CODE_SVG.replace("<svg ", '<svg class="lang-icon" ');
73
+ }
74
+ /**
75
+ * Generate CSS rules for all language icon masks.
76
+ * Call once at render time and inject into a <style> tag.
77
+ */
78
+ export function langIconCSS() {
79
+ const rules = [];
80
+ for (const [lang, { viewBox, d }] of Object.entries(DEVICONS)) {
81
+ const svg = `<svg xmlns='http://www.w3.org/2000/svg' viewBox='${viewBox}'><path fill='black' d='${d}'/></svg>`;
82
+ const encoded = encodeURIComponent(svg).replace(/'/g, '%27');
83
+ rules.push(`#sourcey .lang-icon[data-lang="${lang}"]{-webkit-mask-image:url("data:image/svg+xml,${encoded}");mask-image:url("data:image/svg+xml,${encoded}")}`);
84
+ }
85
+ return rules.join("\n");
86
+ }
87
+ //# sourceMappingURL=lang-icons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lang-icons.js","sourceRoot":"","sources":["../../src/utils/lang-icons.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,0DAA0D;AAC1D,MAAM,QAAQ,GAAmD;IAC/D,IAAI,EAAE;QACJ,OAAO,EAAE,aAAa;QACtB,CAAC,EAAE,8oDAA8oD;KAClpD;IACD,UAAU,EAAE;QACV,OAAO,EAAE,aAAa;QACtB,CAAC,EAAE,g/BAAg/B;KACp/B;IACD,UAAU,EAAE;QACV,OAAO,EAAE,aAAa;QACtB,CAAC,EAAE,qwBAAqwB;KACzwB;IACD,MAAM,EAAE;QACN,OAAO,EAAE,aAAa;QACtB,CAAC,EAAE,+7BAA+7B;KACn8B;IACD,EAAE,EAAE;QACF,OAAO,EAAE,aAAa;QACtB,CAAC,EAAE,krDAAkrD;KACtrD;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,aAAa;QACtB,CAAC,EAAE,mxDAAmxD;KACvxD;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,aAAa;QACtB,CAAC,EAAE,w2CAAw2C;KAC52C;IACD,GAAG,EAAE;QACH,OAAO,EAAE,aAAa;QACtB,CAAC,EAAE,urCAAurC;KAC3rC;IACD,MAAM,EAAE;QACN,OAAO,EAAE,aAAa;QACtB,CAAC,EAAE,kpBAAkpB;KACtpB;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,aAAa;QACtB,CAAC,EAAE,0rLAA0rL;KAC9rL;CACF,CAAC;AAEF,gCAAgC;AAChC,MAAM,YAAY,GAAG,yUAAyU,CAAC;AAC/V,MAAM,QAAQ,GAAG,0PAA0P,CAAC;AAE5Q,MAAM,OAAO,GAA2B;IACtC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IACpD,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY;IACnC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY;IACnC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ;CACnD,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;IAEhC,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACnB,OAAO,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAClB,OAAO,sCAAsC,GAAG,WAAW,CAAC;IAC9D,CAAC;IAED,OAAO,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC;AAC9D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9D,MAAM,GAAG,GAAG,oDAAoD,OAAO,2BAA2B,CAAC,WAAW,CAAC;QAC/G,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7D,KAAK,CAAC,IAAI,CACR,kCAAkC,IAAI,iDAAiD,OAAO,yCAAyC,OAAO,KAAK,CACpJ,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -1,5 +1,21 @@
1
1
  /**
2
- * Render Markdown to HTML. Used for spec descriptions.
2
+ * Shared code block renderer used by all markdown rendering.
3
+ * Outputs the prose-code-block wrapper with copy button and Shiki highlighting.
4
+ */
5
+ export declare function renderCodeBlock(text: string, lang?: string): string;
6
+ /** Heading info collected during render. */
7
+ export interface PageHeading {
8
+ level: 2 | 3;
9
+ text: string;
10
+ id: string;
11
+ }
12
+ /**
13
+ * Extract h2/h3 headings from a markdown string by lexing the token tree.
14
+ * No rendering needed; pure token walk.
15
+ */
16
+ export declare function extractHeadings(input: string): PageHeading[];
17
+ /**
18
+ * Render Markdown to HTML.
3
19
  */
4
20
  export declare function renderMarkdown(input?: string): string;
5
21
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/utils/markdown.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAGrD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAG3D"}
1
+ {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/utils/markdown.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CASnE;AAED,4CAA4C;AAC5C,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ;AAuBD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE,CAe5D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAGrD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAG3D"}
@@ -1,6 +1,63 @@
1
- import { marked } from "marked";
1
+ import { Marked } from "marked";
2
+ import { highlightCode } from "./highlighter.js";
3
+ import { COPY_ICON_SVG } from "./copy-svg.js";
4
+ import { htmlId } from "./html-id.js";
2
5
  /**
3
- * Render Markdown to HTML. Used for spec descriptions.
6
+ * Shared code block renderer used by all markdown rendering.
7
+ * Outputs the prose-code-block wrapper with copy button and Shiki highlighting.
8
+ */
9
+ export function renderCodeBlock(text, lang) {
10
+ const language = lang?.split(/\s/)[0] ?? "";
11
+ const shiki = highlightCode(text, language);
12
+ return `<div class="prose-code-block not-prose">
13
+ <div class="prose-code-copy">
14
+ <button aria-label="Copy code" class="copy-btn" type="button" data-copy-source="code">${COPY_ICON_SVG}</button>
15
+ </div>
16
+ <div class="prose-code-content">${shiki}</div>
17
+ </div>`;
18
+ }
19
+ /** Singleton Marked instance — code blocks get Shiki + prose wrapper, headings get IDs. */
20
+ const marked = new Marked({
21
+ renderer: {
22
+ code({ text, lang }) {
23
+ return renderCodeBlock(text, lang);
24
+ },
25
+ heading({ tokens, depth }) {
26
+ const text = tokens.map((t) => ("text" in t ? t.text : t.raw)).join("");
27
+ const id = htmlId(text);
28
+ return `<h${depth} id="${id}">${this.parser.parseInline(tokens)}</h${depth}>\n`;
29
+ },
30
+ link({ href, title, tokens }) {
31
+ const text = this.parser.parseInline(tokens);
32
+ const titleAttr = title ? ` title="${title}"` : "";
33
+ const isExternal = href.startsWith("http://") || href.startsWith("https://");
34
+ const target = isExternal ? ' target="_blank" rel="noopener noreferrer"' : "";
35
+ return `<a href="${href}"${titleAttr}${target}>${text}</a>`;
36
+ },
37
+ },
38
+ });
39
+ /**
40
+ * Extract h2/h3 headings from a markdown string by lexing the token tree.
41
+ * No rendering needed; pure token walk.
42
+ */
43
+ export function extractHeadings(input) {
44
+ const tokens = marked.lexer(input);
45
+ const headings = [];
46
+ for (const token of tokens) {
47
+ if (token.type === "heading") {
48
+ const depth = token.depth;
49
+ if (depth === 2 || depth === 3) {
50
+ const text = token.tokens
51
+ .map((t) => ("text" in t ? t.text : t.raw))
52
+ .join("");
53
+ headings.push({ level: depth, text, id: htmlId(text) });
54
+ }
55
+ }
56
+ }
57
+ return headings;
58
+ }
59
+ /**
60
+ * Render Markdown to HTML.
4
61
  */
5
62
  export function renderMarkdown(input) {
6
63
  if (!input)
@@ -1 +1 @@
1
- {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/utils/markdown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAW,CAAC;AACzD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,OAAO,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAW,CAAC;AAC/D,CAAC"}
1
+ {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/utils/markdown.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"vite-plugin.d.ts","sourceRoot":"","sources":["../src/vite-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,MAAM,CAAC;AAIlD,MAAM,WAAW,oBAAoB;IACnC,uDAAuD;IACvD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,iEAAiE;IACjE,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAChD,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CACrC;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CAiGnE"}
1
+ {"version":3,"file":"vite-plugin.d.ts","sourceRoot":"","sources":["../src/vite-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,MAAM,CAAC;AAIlD,MAAM,WAAW,oBAAoB;IACnC,uDAAuD;IACvD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,iEAAiE;IACjE,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAChD,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CACrC;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CA8FnE"}
@@ -23,13 +23,10 @@ export function sourceyPlugin(options) {
23
23
  ext === ".yaml" ||
24
24
  ext === ".tsx" ||
25
25
  ext === ".ts") {
26
- // Invalidate SSR module cache so next render uses fresh source
27
- const mods = server.moduleGraph.getModulesByFile(file);
28
- if (mods) {
29
- for (const mod of mods) {
30
- server.moduleGraph.invalidateModule(mod);
31
- }
32
- }
26
+ // Invalidate entire SSR module graph so next render uses fresh source.
27
+ // Shallow invalidation misses transitive importers (e.g. markdown-loader
28
+ // changes don't propagate to static-renderer), so nuke everything.
29
+ server.moduleGraph.invalidateAll();
33
30
  const timestamp = new Date().toLocaleTimeString();
34
31
  console.log(` [${timestamp}] ${file} changed, reloading…`);
35
32
  server.ws.send({ type: "full-reload" });
@@ -1 +1 @@
1
- {"version":3,"file":"vite-plugin.js","sourceRoot":"","sources":["../src/vite-plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vite-plugin.js","sourceRoot":"","sources":["../src/vite-plugin.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "sourcey",
3
- "version": "2.1.0",
4
- "description": "Generate beautiful static API documentation from OpenAPI/Swagger specifications",
3
+ "version": "3.0.1",
4
+ "description": "Open source documentation platform. API references, guides, static output.",
5
5
  "type": "module",
6
6
  "engines": {
7
7
  "node": ">=20"
@@ -28,8 +28,8 @@
28
28
  "lint:fix": "eslint src/ test/ --fix",
29
29
  "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
30
30
  "typecheck": "tsc --noEmit",
31
- "demo": "npx tsx src/cli.ts build test/fixtures/cheese.yml -o .preview --logo test/fixtures/cheese.png",
32
- "demo:dev": "npx tsx src/cli.ts dev test/fixtures/cheese.yml --logo test/fixtures/cheese.png",
31
+ "demo": "cd demo && npx tsx ../src/cli.ts build -o ../.preview",
32
+ "demo:dev": "cd demo && npx tsx ../src/cli.ts dev",
33
33
  "prepublishOnly": "npm run build"
34
34
  },
35
35
  "dependencies": {
@@ -40,6 +40,7 @@
40
40
  "citty": "^0.1.6",
41
41
  "js-yaml": "^4.1.0",
42
42
  "marked": "^15.0.0",
43
+ "moxygen": "^2.0.0",
43
44
  "preact": "^10.28.4",
44
45
  "preact-render-to-string": "^6.6.6",
45
46
  "shiki": "^4.0.2",