starlight-fsharp-oracle 0.1.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 (89) hide show
  1. package/Directory.Build.props +25 -0
  2. package/Directory.Packages.props +18 -0
  3. package/README.md +80 -0
  4. package/dist/Extensions/StringBuilder.js +28 -0
  5. package/dist/Extensions/TextNode.js +115 -0
  6. package/dist/FSharp.Oracle.Schema/Schema.js +674 -0
  7. package/dist/Generate.js +254 -0
  8. package/dist/Helpers.js +69 -0
  9. package/dist/Plugin.js +139 -0
  10. package/dist/Render/Documentation.js +87 -0
  11. package/dist/Render/Entries.js +148 -0
  12. package/dist/Render/Pages.js +292 -0
  13. package/dist/Render/Primitives.js +114 -0
  14. package/dist/Render/Types.js +30 -0
  15. package/dist/Render.js +12 -0
  16. package/dist/Themes.js +78 -0
  17. package/oracle-bin/FSharp.Compiler.Service.dll +0 -0
  18. package/oracle-bin/FSharp.Core.dll +0 -0
  19. package/oracle-bin/FSharp.DependencyManager.Nuget.dll +0 -0
  20. package/oracle-bin/FSharp.Oracle.Schema.dll +0 -0
  21. package/oracle-bin/FSharp.Oracle.Schema.pdb +0 -0
  22. package/oracle-bin/FSharp.Oracle.Schema.xml +219 -0
  23. package/oracle-bin/Fable.Core.dll +0 -0
  24. package/oracle-bin/Oracle +0 -0
  25. package/oracle-bin/Oracle.deps.json +280 -0
  26. package/oracle-bin/Oracle.dll +0 -0
  27. package/oracle-bin/Oracle.pdb +0 -0
  28. package/oracle-bin/Oracle.runtimeconfig.json +13 -0
  29. package/oracle-bin/Oracle.xml +111 -0
  30. package/oracle-bin/Thoth.Json.Core.Auto.dll +0 -0
  31. package/oracle-bin/Thoth.Json.Core.dll +0 -0
  32. package/oracle-bin/Thoth.Json.System.Text.Json.dll +0 -0
  33. package/oracle-bin/cs/FSharp.Compiler.Service.resources.dll +0 -0
  34. package/oracle-bin/cs/FSharp.Core.resources.dll +0 -0
  35. package/oracle-bin/cs/FSharp.DependencyManager.Nuget.resources.dll +0 -0
  36. package/oracle-bin/de/FSharp.Compiler.Service.resources.dll +0 -0
  37. package/oracle-bin/de/FSharp.Core.resources.dll +0 -0
  38. package/oracle-bin/de/FSharp.DependencyManager.Nuget.resources.dll +0 -0
  39. package/oracle-bin/es/FSharp.Compiler.Service.resources.dll +0 -0
  40. package/oracle-bin/es/FSharp.Core.resources.dll +0 -0
  41. package/oracle-bin/es/FSharp.DependencyManager.Nuget.resources.dll +0 -0
  42. package/oracle-bin/fr/FSharp.Compiler.Service.resources.dll +0 -0
  43. package/oracle-bin/fr/FSharp.Core.resources.dll +0 -0
  44. package/oracle-bin/fr/FSharp.DependencyManager.Nuget.resources.dll +0 -0
  45. package/oracle-bin/it/FSharp.Compiler.Service.resources.dll +0 -0
  46. package/oracle-bin/it/FSharp.Core.resources.dll +0 -0
  47. package/oracle-bin/it/FSharp.DependencyManager.Nuget.resources.dll +0 -0
  48. package/oracle-bin/ja/FSharp.Compiler.Service.resources.dll +0 -0
  49. package/oracle-bin/ja/FSharp.Core.resources.dll +0 -0
  50. package/oracle-bin/ja/FSharp.DependencyManager.Nuget.resources.dll +0 -0
  51. package/oracle-bin/ko/FSharp.Compiler.Service.resources.dll +0 -0
  52. package/oracle-bin/ko/FSharp.Core.resources.dll +0 -0
  53. package/oracle-bin/ko/FSharp.DependencyManager.Nuget.resources.dll +0 -0
  54. package/oracle-bin/pl/FSharp.Compiler.Service.resources.dll +0 -0
  55. package/oracle-bin/pl/FSharp.Core.resources.dll +0 -0
  56. package/oracle-bin/pl/FSharp.DependencyManager.Nuget.resources.dll +0 -0
  57. package/oracle-bin/pt-BR/FSharp.Compiler.Service.resources.dll +0 -0
  58. package/oracle-bin/pt-BR/FSharp.Core.resources.dll +0 -0
  59. package/oracle-bin/pt-BR/FSharp.DependencyManager.Nuget.resources.dll +0 -0
  60. package/oracle-bin/ru/FSharp.Compiler.Service.resources.dll +0 -0
  61. package/oracle-bin/ru/FSharp.Core.resources.dll +0 -0
  62. package/oracle-bin/ru/FSharp.DependencyManager.Nuget.resources.dll +0 -0
  63. package/oracle-bin/tr/FSharp.Compiler.Service.resources.dll +0 -0
  64. package/oracle-bin/tr/FSharp.Core.resources.dll +0 -0
  65. package/oracle-bin/tr/FSharp.DependencyManager.Nuget.resources.dll +0 -0
  66. package/oracle-bin/zh-Hans/FSharp.Compiler.Service.resources.dll +0 -0
  67. package/oracle-bin/zh-Hans/FSharp.Core.resources.dll +0 -0
  68. package/oracle-bin/zh-Hans/FSharp.DependencyManager.Nuget.resources.dll +0 -0
  69. package/oracle-bin/zh-Hant/FSharp.Compiler.Service.resources.dll +0 -0
  70. package/oracle-bin/zh-Hant/FSharp.Core.resources.dll +0 -0
  71. package/oracle-bin/zh-Hant/FSharp.DependencyManager.Nuget.resources.dll +0 -0
  72. package/package.json +38 -0
  73. package/packages/FSharp.Oracle/Extractor/Assembly.fs +160 -0
  74. package/packages/FSharp.Oracle/Extractor/EntityExtractor.fs +608 -0
  75. package/packages/FSharp.Oracle/Extractor/Helpers.fs +150 -0
  76. package/packages/FSharp.Oracle/Extractor/MemberExtractor.fs +172 -0
  77. package/packages/FSharp.Oracle/Extractor/ModuleExtractor.fs +45 -0
  78. package/packages/FSharp.Oracle/Extractor/ParameterExtractor.fs +47 -0
  79. package/packages/FSharp.Oracle/Extractor/SignatureRendering.fs +464 -0
  80. package/packages/FSharp.Oracle/Extractor/ValueExtractor.fs +171 -0
  81. package/packages/FSharp.Oracle/FSharp.Oracle.fsproj +36 -0
  82. package/packages/FSharp.Oracle/Program.fs +66 -0
  83. package/packages/FSharp.Oracle/XmlDoc.fs +463 -0
  84. package/packages/FSharp.Oracle.Schema/FSharp.Oracle.Schema.fsproj +16 -0
  85. package/packages/FSharp.Oracle.Schema/Schema.fs +454 -0
  86. package/packages/Starlight.FSharp.Oracle/components/DocEntry.astro +256 -0
  87. package/packages/Starlight.FSharp.Oracle/components/FSharpDocPage.astro +121 -0
  88. package/packages/Starlight.FSharp.Oracle/components/fsharp-doc.css +58 -0
  89. package/packages/Starlight.FSharp.Oracle/layouts/FSharpDocLayout.astro +27 -0
@@ -0,0 +1,121 @@
1
+ ---
2
+ import StarlightPage from "@astrojs/starlight/components/StarlightPage.astro";
3
+ // @ts-ignore
4
+ import "./fsharp-doc.css";
5
+
6
+ interface TocEntry {
7
+ depth: number;
8
+ slug: string;
9
+ text: string;
10
+ }
11
+
12
+ interface Props {
13
+ title: string;
14
+ headings: TocEntry[];
15
+ }
16
+
17
+ const { title, headings } = Astro.props;
18
+ ---
19
+
20
+ <StarlightPage frontmatter={{ title }} headings={headings}>
21
+ <slot />
22
+ </StarlightPage>
23
+
24
+ <script>
25
+ declare global {
26
+ interface Window {
27
+ __fsharpSidebarLabel?: string;
28
+ }
29
+ }
30
+
31
+ /**
32
+ * Create a button that expands or collapses all details elements within a given sidebar section.
33
+ * @param label The button label
34
+ * @param sidebarTarget The details element that is the root of the sidebar section to control
35
+ * @param stateOnClick The state to set on the details elements when the button is clicked
36
+ */
37
+ const expansionButton = (
38
+ label: string,
39
+ sidebarTarget: HTMLDetailsElement,
40
+ stateOnClick: boolean,
41
+ ) => {
42
+ const btn = document.createElement("button");
43
+ btn.className = "fsharp-collapse-btn";
44
+ btn.textContent = label;
45
+ btn.addEventListener("click", () => {
46
+ sidebarTarget!
47
+ .querySelectorAll<HTMLDetailsElement>("details")
48
+ .forEach((d) => {
49
+ d.open = stateOnClick;
50
+ });
51
+ });
52
+ return btn;
53
+ };
54
+
55
+ /**
56
+ * Register "Collapse all" and "Expand all" buttons in the sidebar section
57
+ * matching the label in `window.__fsharpSidebarLabel`.
58
+ *
59
+ * We register the buttons by injection at runtime, rather than overriding the Astro components
60
+ * to avoid conflicts in case the user already overrides the sidebar component
61
+ */
62
+ function initFSharpSidebarControls(): void {
63
+ const label = window.__fsharpSidebarLabel;
64
+ if (!label) return;
65
+
66
+ let target: HTMLDetailsElement | null = null;
67
+ for (const d of document.querySelectorAll<HTMLDetailsElement>(
68
+ ".sidebar-content details",
69
+ )) {
70
+ const summary = d.querySelector(":scope > summary");
71
+ if (summary?.textContent?.trim() === label) {
72
+ target = d;
73
+ break;
74
+ }
75
+ }
76
+
77
+ if (!target || target.querySelector(".fsharp-sidebar-controls")) return;
78
+
79
+ const ul = target.querySelector<HTMLUListElement>(":scope > ul");
80
+ if (!ul) return;
81
+
82
+ const wrap = document.createElement("div");
83
+ wrap.className = "fsharp-sidebar-controls";
84
+
85
+ const collapseButton = expansionButton("Collapse all", target, false);
86
+ const expandButton = expansionButton("Expand all", target, true);
87
+
88
+ wrap.appendChild(collapseButton);
89
+ wrap.appendChild(expandButton);
90
+ target.insertBefore(wrap, ul);
91
+ }
92
+
93
+ // Module scripts run after the DOM is parsed, so init can run immediately.
94
+ // astro:page-load handles subsequent client-side navigations.
95
+ initFSharpSidebarControls();
96
+ document.addEventListener("astro:page-load", initFSharpSidebarControls);
97
+ </script>
98
+
99
+ <style>
100
+ :global(.fsharp-sidebar-controls) {
101
+ display: flex;
102
+ justify-content: space-between;
103
+ padding: 0.125rem var(--sl-sidebar-item-padding-inline, 0.5rem) 0.375rem;
104
+ }
105
+
106
+ :global(.fsharp-collapse-btn) {
107
+ font-size: var(--sl-text-xs, 0.75rem);
108
+ color: var(--sl-color-gray-3);
109
+ background: none;
110
+ border: none;
111
+ cursor: pointer;
112
+ padding: 0;
113
+ font-family: inherit;
114
+ text-decoration: underline;
115
+ text-underline-offset: 2px;
116
+ }
117
+
118
+ :global(.fsharp-collapse-btn):hover {
119
+ color: var(--sl-color-text);
120
+ }
121
+ </style>
@@ -0,0 +1,58 @@
1
+ .fsharp-doc-kw { color: var(--fsharp-doc-kw); }
2
+ .fsharp-doc-fn { color: var(--fsharp-doc-fn); }
3
+ .fsharp-doc-type { color: var(--fsharp-doc-type); }
4
+ .fsharp-doc-typevar { color: var(--fsharp-doc-typevar); }
5
+ .fsharp-doc-property { color: #0a86ff }
6
+
7
+ .fsharp-doc-sig {
8
+ font-family: var(--sl-font-mono, monospace);
9
+ font-size: var(--sl-text-code, 0.875em);
10
+ white-space: pre-wrap;
11
+ overflow-wrap: break-word;
12
+ display: block;
13
+
14
+ > div {
15
+ margin-top: unset;
16
+ }
17
+
18
+ a {
19
+ color: unset;
20
+ text-decoration: none;
21
+ }
22
+
23
+ a:hover {
24
+ text-decoration: underline;
25
+ }
26
+ }
27
+
28
+
29
+ .fs-parameter__signature {
30
+ margin-left: 0.75rem;
31
+ }
32
+
33
+ .fs-parameter__documentation {
34
+ margin-left: 1.5rem;
35
+ margin-top: 0;
36
+ }
37
+
38
+ .fsharp-doc-indent {
39
+ display: inline;
40
+ white-space: pre;
41
+ }
42
+
43
+ .fsharp-doc-obsolete-inline {
44
+ background-color: var(--sl-color-orange-low);
45
+ color: var(--sl-color-orange-high);
46
+ font-size: 0.75em;
47
+ padding: 0.15em 0.5em;
48
+ border-radius: 4px;
49
+ font-weight: 600;
50
+ margin-left: 0.5em;
51
+ }
52
+
53
+ .fsharp-doc-attr {
54
+ color: var(--sl-color-gray-3);
55
+ font-size: var(--sl-text-sm);
56
+ display: block;
57
+ margin-bottom: 0.25rem;
58
+ }
@@ -0,0 +1,27 @@
1
+ ---
2
+ // Layout adapter for generated .mdx pages.
3
+ // Bridges the markdown layout prop shape ({ frontmatter, headings }) to
4
+ // FSharpDocPage which expects ({ title, headings }).
5
+ // @ts-ignore
6
+ import FSharpDocPage from '../components/FSharpDocPage.astro';
7
+
8
+ interface TocEntry {
9
+ depth: number;
10
+ slug: string;
11
+ text: string;
12
+ }
13
+
14
+ interface Props {
15
+ frontmatter: {
16
+ title: string;
17
+ headings: TocEntry[];
18
+ };
19
+ }
20
+
21
+
22
+ const { frontmatter } = Astro.props;
23
+ ---
24
+
25
+ <FSharpDocPage title={frontmatter.title} headings={frontmatter.headings ?? []}>
26
+ <slot />
27
+ </FSharpDocPage>