rspress-plugin-api-extractor 0.1.2 → 0.2.0

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 (109) hide show
  1. package/README.md +2 -2
  2. package/api-extracted-package.js +426 -0
  3. package/build-program.js +120 -0
  4. package/build-stages.js +664 -0
  5. package/category-resolver.js +50 -0
  6. package/code-post-processor.js +38 -0
  7. package/config-helpers.js +106 -0
  8. package/config-utils.js +258 -0
  9. package/content-hash.js +79 -0
  10. package/errors.js +29 -0
  11. package/formatter.js +69 -0
  12. package/hide-cut-transformer.js +96 -0
  13. package/index.d.ts +901 -831
  14. package/index.js +4 -6128
  15. package/layers/ConfigServiceLive.js +377 -0
  16. package/layers/ObservabilityLive.js +136 -0
  17. package/layers/PathDerivationServiceLive.js +16 -0
  18. package/layers/SnapshotServiceLive.js +94 -0
  19. package/layers/TypeRegistryServiceLive.js +46 -0
  20. package/llms-processing.js +270 -0
  21. package/llms-program.js +262 -0
  22. package/loader.js +186 -0
  23. package/markdown/cross-linker.js +156 -0
  24. package/markdown/helpers.js +364 -0
  25. package/markdown/index.js +11 -0
  26. package/markdown/page-generators/class-page.js +357 -0
  27. package/markdown/page-generators/enum-page.js +152 -0
  28. package/markdown/page-generators/function-page.js +127 -0
  29. package/markdown/page-generators/index-pages.js +27 -0
  30. package/markdown/page-generators/interface-page.js +307 -0
  31. package/markdown/page-generators/namespace-page.js +280 -0
  32. package/markdown/page-generators/type-alias-page.js +110 -0
  33. package/markdown/page-generators/variable-page.js +110 -0
  34. package/markdown/shiki-utils.js +48 -0
  35. package/migrations/001_create_snapshots.js +25 -0
  36. package/model-loader.js +95 -0
  37. package/multi-entry-resolver.js +70 -0
  38. package/og-resolver.js +271 -0
  39. package/package.json +63 -73
  40. package/path-derivation.js +48 -0
  41. package/plugin.js +218 -0
  42. package/prettier-formatter.js +73 -0
  43. package/public/tsconfig/rspress.json +44 -0
  44. package/remark-api-codeblocks.js +130 -0
  45. package/remark-with-api.js +172 -0
  46. package/route-collisions.js +52 -0
  47. package/runtime/components/ApiExample/index.js +29 -25
  48. package/runtime/components/ApiLlmsPackageActions/index.js +252 -323
  49. package/runtime/components/ApiLlmsViewOptions/index.js +269 -340
  50. package/runtime/components/ApiMember/index.js +49 -47
  51. package/runtime/components/ApiSignature/index.js +32 -28
  52. package/runtime/components/EnumMembersTable/{index_module.css → index.css} +18 -19
  53. package/runtime/components/EnumMembersTable/index.js +36 -67
  54. package/runtime/components/EnumMembersTable/index.module.js +9 -6
  55. package/runtime/components/ExampleBlock/{index_module.css → index.css} +2 -3
  56. package/runtime/components/ExampleBlock/index.js +23 -28
  57. package/runtime/components/ExampleBlock/index.module.js +8 -5
  58. package/runtime/components/MarkdownContent/index.js +26 -18
  59. package/runtime/components/MarkdownText/index.js +28 -22
  60. package/runtime/components/MemberSignature/{index_module.css → index.css} +5 -6
  61. package/runtime/components/MemberSignature/index.js +46 -46
  62. package/runtime/components/MemberSignature/index.module.js +9 -6
  63. package/runtime/components/ParametersTable/{index_module.css → index.css} +19 -20
  64. package/runtime/components/ParametersTable/index.js +36 -67
  65. package/runtime/components/ParametersTable/index.module.js +9 -6
  66. package/runtime/components/SignatureBlock/{index_module.css → index.css} +5 -6
  67. package/runtime/components/SignatureBlock/index.js +30 -29
  68. package/runtime/components/SignatureBlock/index.module.js +9 -6
  69. package/runtime/components/SignatureCode/{index_module.css → index.css} +9 -10
  70. package/runtime/components/SignatureCode/index.js +40 -32
  71. package/runtime/components/SignatureCode/index.module.js +9 -6
  72. package/runtime/components/SignatureToolbar/{index_module.css → index.css} +18 -20
  73. package/runtime/components/SignatureToolbar/index.js +48 -51
  74. package/runtime/components/SignatureToolbar/index.module.js +13 -10
  75. package/runtime/components/buttons/ButtonGroup.js +13 -6
  76. package/runtime/components/buttons/CopyCodeButton.js +40 -38
  77. package/runtime/components/buttons/WrapSignatureButton.js +20 -16
  78. package/runtime/components/buttons/{index_module.css → index.css} +5 -6
  79. package/runtime/components/buttons/index.module.js +8 -5
  80. package/runtime/components/icons/CheckIcon/index.js +20 -17
  81. package/runtime/components/icons/CopyIcon/index.js +20 -17
  82. package/runtime/components/icons/UnwrapIcon/index.js +22 -18
  83. package/runtime/components/icons/WrapIcon/index.js +20 -17
  84. package/runtime/components/shared/_twoslash.css +3 -10
  85. package/runtime/components/shared/variables.css +0 -3
  86. package/runtime/hooks/useWrapToggle.js +32 -9
  87. package/runtime/index.d.ts +513 -173
  88. package/runtime/index.js +11 -9
  89. package/runtime/utils/decode-hast.js +31 -16
  90. package/runtime/utils/hast-renderer.js +21 -7
  91. package/schemas/config.js +199 -0
  92. package/schemas/index.js +5 -0
  93. package/schemas/opengraph.js +26 -0
  94. package/schemas/performance.js +19 -0
  95. package/serve.js +133 -0
  96. package/services/ConfigService.js +7 -0
  97. package/services/PathDerivationService.js +7 -0
  98. package/services/SnapshotService.js +7 -0
  99. package/services/TypeRegistryService.js +7 -0
  100. package/shiki-transformer.js +758 -0
  101. package/tsconfig-parser.js +127 -0
  102. package/tsdoc-metadata.json +11 -11
  103. package/twoslash-patterns.js +87 -0
  104. package/twoslash-transformer.js +316 -0
  105. package/type-reference-extractor.js +201 -0
  106. package/typescript-config.js +168 -0
  107. package/vfs-registry.js +121 -0
  108. package/0~llms-program.js +0 -344
  109. package/runtime/components/ApiLlmsPackageActions/index.module.js +0 -2
@@ -0,0 +1,96 @@
1
+ //#region src/hide-cut-transformer.ts
2
+ /**
3
+ * Extract text content from a HAST line element.
4
+ *
5
+ * @param line - The line element to extract text from
6
+ * @returns The text content of the line
7
+ */
8
+ function extractLineText(line) {
9
+ let text = "";
10
+ for (const child of line.children) if (child.type === "text") text += child.value;
11
+ else if (child.type === "element" && "children" in child) {
12
+ for (const grandchild of child.children) if (grandchild.type === "text") text += grandchild.value;
13
+ }
14
+ return text;
15
+ }
16
+ /**
17
+ * Shiki transformer that hides cut directive and all preceding lines.
18
+ *
19
+ * This transformer is used for full signature blocks (class/interface skeletons)
20
+ * where we want to hide hidden imports but keep the full signature visible.
21
+ *
22
+ * When `// ---cut---` is present:
23
+ * - All lines before and including the cut directive are hidden
24
+ * - Everything after the cut directive remains visible
25
+ *
26
+ * If no cut directive is found, no changes are made.
27
+ */
28
+ const HideCutLinesTransformer = {
29
+ name: "hide-cut-lines",
30
+ code(node) {
31
+ const lines = node.children.filter((child) => child.type === "element" && child.tagName === "span");
32
+ let cutIndex = -1;
33
+ for (let i = 0; i < lines.length; i++) if (extractLineText(lines[i]).trim() === "// ---cut---") {
34
+ cutIndex = i;
35
+ break;
36
+ }
37
+ if (cutIndex >= 0) for (let i = 0; i <= cutIndex; i++) {
38
+ lines[i].properties = lines[i].properties || {};
39
+ lines[i].properties.style = "display: none;";
40
+ }
41
+ }
42
+ };
43
+ /**
44
+ * Shiki transformer that formats member signature blocks for display.
45
+ *
46
+ * Member signature blocks are generated with a 3-line structure:
47
+ * - Line 0: class/interface opening (e.g., `class Foo {`)
48
+ * - Line 1+: member signature (may span multiple lines)
49
+ * - Line N: closing brace (`}`)
50
+ *
51
+ * This transformer:
52
+ * - Detects `// ---cut---` directive and hides all preceding lines
53
+ * - Hides the first line (class/interface wrapper) if no cut directive
54
+ * - Removes left padding from the first visible member signature line
55
+ * - Hides the closing brace
56
+ *
57
+ * When `// ---cut---` is present:
58
+ * - All lines before and including the cut directive are hidden
59
+ * - The wrapper opening line after the cut is also hidden
60
+ * - Padding is removed from the first visible content line
61
+ *
62
+ * Only applies to blocks with 3+ lines to avoid affecting regular code blocks.
63
+ */
64
+ const MemberFormatTransformer = {
65
+ name: "member-format",
66
+ code(node) {
67
+ const lines = node.children.filter((child) => child.type === "element" && child.tagName === "span");
68
+ if (lines.length < 3) return;
69
+ let cutIndex = -1;
70
+ for (let i = 0; i < lines.length; i++) if (extractLineText(lines[i]).trim() === "// ---cut---") {
71
+ cutIndex = i;
72
+ break;
73
+ }
74
+ if (cutIndex >= 0) {
75
+ for (let i = 0; i <= cutIndex + 1; i++) {
76
+ lines[i].properties = lines[i].properties || {};
77
+ lines[i].properties.style = "display: none;";
78
+ }
79
+ if (cutIndex + 2 < lines.length) {
80
+ lines[cutIndex + 2].properties = lines[cutIndex + 2].properties || {};
81
+ lines[cutIndex + 2].properties.style = "padding-left: 0;";
82
+ }
83
+ } else {
84
+ lines[0].properties = lines[0].properties || {};
85
+ lines[0].properties.style = "display: none;";
86
+ lines[1].properties = lines[1].properties || {};
87
+ lines[1].properties.style = "padding-left: 0;";
88
+ }
89
+ const lastIndex = lines.length - 1;
90
+ lines[lastIndex].properties = lines[lastIndex].properties || {};
91
+ lines[lastIndex].properties.style = "display: none;";
92
+ }
93
+ };
94
+
95
+ //#endregion
96
+ export { HideCutLinesTransformer, MemberFormatTransformer };