sourcey 3.5.0 → 3.5.2

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 (38) hide show
  1. package/README.md +90 -10
  2. package/dist/cli.js +122 -3
  3. package/dist/components/layout/Page.d.ts.map +1 -1
  4. package/dist/components/layout/Page.js +4 -1
  5. package/dist/config.d.ts +60 -0
  6. package/dist/config.d.ts.map +1 -1
  7. package/dist/config.js +28 -3
  8. package/dist/core/godoc-introspector.d.ts +26 -0
  9. package/dist/core/godoc-introspector.d.ts.map +1 -0
  10. package/dist/core/godoc-introspector.js +144 -0
  11. package/dist/core/godoc-loader.d.ts +34 -0
  12. package/dist/core/godoc-loader.d.ts.map +1 -0
  13. package/dist/core/godoc-loader.js +491 -0
  14. package/dist/core/godoc-types.d.ts +109 -0
  15. package/dist/core/godoc-types.d.ts.map +1 -0
  16. package/dist/core/godoc-types.js +8 -0
  17. package/dist/core/markdown-loader.d.ts +10 -0
  18. package/dist/core/markdown-loader.d.ts.map +1 -1
  19. package/dist/core/navigation.d.ts +3 -2
  20. package/dist/core/navigation.d.ts.map +1 -1
  21. package/dist/core/navigation.js +15 -5
  22. package/dist/core/search-indexer.d.ts.map +1 -1
  23. package/dist/core/search-indexer.js +9 -0
  24. package/dist/core/sourcey-godoc/cmd/sourcey-godoc/main.go +736 -0
  25. package/dist/core/sourcey-godoc/cmd/sourcey-godoc/site.go +497 -0
  26. package/dist/core/sourcey-godoc/cmd/sourcey-godoc/site_test.go +89 -0
  27. package/dist/core/sourcey-godoc/doc.go +11 -0
  28. package/dist/core/sourcey-godoc/go.mod +3 -0
  29. package/dist/dev-server.d.ts.map +1 -1
  30. package/dist/dev-server.js +44 -2
  31. package/dist/index.d.ts +1 -0
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +1 -0
  34. package/dist/site-assembly.d.ts +3 -0
  35. package/dist/site-assembly.d.ts.map +1 -1
  36. package/dist/site-assembly.js +33 -4
  37. package/dist/themes/default/sourcey.css +244 -0
  38. package/package.json +13 -4
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAA8B,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACvG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAkBlD,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,cAAc,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;CAC7C;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAkB3E;AAMD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;IAC5C,wDAAwD;IACxD,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACtC;AAED,wBAAsB,aAAa,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC,CAwF5F;AAyED,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG1D,YAAY,EACV,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAA8B,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACvG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAkBlD,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,cAAc,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;CAC7C;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAkB3E;AAMD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;IAC5C,gBAAgB,EAAE,OAAO,wBAAwB,EAAE,qBAAqB,EAAE,CAAC;IAC3E,wDAAwD;IACxD,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACtC;AAED,wBAAsB,aAAa,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC,CAyF5F;AAyED,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG1D,YAAY,EACV,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -98,6 +98,7 @@ export async function buildSiteDocs(options = {}) {
98
98
  outputDir,
99
99
  pageCount: sitePages.length,
100
100
  changelogDiagnostics: assembled.changelogDiagnostics,
101
+ godocDiagnostics: assembled.godocDiagnostics,
101
102
  _specs: assembled.specsBySlug,
102
103
  };
103
104
  }
@@ -1,3 +1,4 @@
1
+ import { type GodocLoaderDiagnostic } from "./core/godoc-loader.js";
1
2
  import type { PrettyUrls, ResolvedConfig, ResolvedTab } from "./config.js";
2
3
  import type { DocsPage } from "./core/markdown-loader.js";
3
4
  import type { SiteTab } from "./core/navigation.js";
@@ -10,9 +11,11 @@ export interface SiteAssembly {
10
11
  specsBySlug: Map<string, NormalizedSpec>;
11
12
  pageMap: Map<string, SitePage>;
12
13
  changelogDiagnostics: ChangelogDiagnostic[];
14
+ godocDiagnostics: GodocLoaderDiagnostic[];
13
15
  extraFiles: Map<string, string | Buffer>;
14
16
  }
15
17
  export declare function assembleSite(config: ResolvedConfig): Promise<SiteAssembly>;
18
+ export declare function formatGodocDiagnostic(diag: GodocLoaderDiagnostic): string;
16
19
  export declare function collectDocsPagesByTab(pageMap: Map<string, SitePage>, tabs: ResolvedTab[]): Map<string, DocsPage[]>;
17
20
  export declare function rebuildMarkdownTabNavigation(pageMap: Map<string, SitePage>, siteTabs: SiteTab[], tabs: ResolvedTab[], tabSlug: string, prettyUrls: PrettyUrls): void;
18
21
  export declare function enforceChangelogDiagnostics(diagnostics: ChangelogDiagnostic[], strictChangelog?: boolean): void;
@@ -1 +1 @@
1
- {"version":3,"file":"site-assembly.d.ts","sourceRoot":"","sources":["../src/site-assembly.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,KAAK,EAAiB,QAAQ,EAAgB,MAAM,2BAA2B,CAAC;AACvF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAA8B,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACvG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGxD,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,WAAW,EAAE,cAAc,CAAC;IAC5B,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACzC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC/B,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;IAC5C,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;CAC1C;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,CAgGhF;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,EAC9B,IAAI,EAAE,WAAW,EAAE,GAClB,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAgBzB;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,EAC9B,QAAQ,EAAE,OAAO,EAAE,EACnB,IAAI,EAAE,WAAW,EAAE,EACnB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,UAAU,GACrB,IAAI,CAsBN;AAED,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,mBAAmB,EAAE,EAClC,eAAe,UAAQ,GACtB,IAAI,CAYN;AAED,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,mBAAmB,GAAG,MAAM,CAIjF;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,mBAAmB,GAAG,MAAM,CAI9E;AAED,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,mBAAmB,EAAE,GAAG,MAAM,EAAE,CAEvF;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,CA4BjF;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAUlD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAuEpF"}
1
+ {"version":3,"file":"site-assembly.d.ts","sourceRoot":"","sources":["../src/site-assembly.ts"],"names":[],"mappings":"AASA,OAAO,EAAgB,KAAK,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAIlF,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,KAAK,EAAiB,QAAQ,EAAgB,MAAM,2BAA2B,CAAC;AACvF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAA8B,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACvG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGxD,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,WAAW,EAAE,cAAc,CAAC;IAC5B,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACzC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC/B,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;IAC5C,gBAAgB,EAAE,qBAAqB,EAAE,CAAC;IAC1C,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;CAC1C;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,CAyHhF;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM,CAKzE;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,EAC9B,IAAI,EAAE,WAAW,EAAE,GAClB,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAgBzB;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,EAC9B,QAAQ,EAAE,OAAO,EAAE,EACnB,IAAI,EAAE,WAAW,EAAE,EACnB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,UAAU,GACrB,IAAI,CAsBN;AAED,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,mBAAmB,EAAE,EAClC,eAAe,UAAQ,GACtB,IAAI,CAYN;AAED,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,mBAAmB,GAAG,MAAM,CAIjF;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,mBAAmB,GAAG,MAAM,CAI9E;AAED,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,mBAAmB,EAAE,GAAG,MAAM,EAAE,CAEvF;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,CA4BjF;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAUlD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAuEpF"}
@@ -7,6 +7,7 @@ import { normalizeSpec } from "./core/normalizer.js";
7
7
  import { normalizeMcpSpec } from "./core/mcp-normalizer.js";
8
8
  import { loadDocsPage, slugFromPath } from "./core/markdown-loader.js";
9
9
  import { loadDoxygenTab } from "./core/doxygen-loader.js";
10
+ import { loadGodocTab } from "./core/godoc-loader.js";
10
11
  import { buildNavFromSpec, buildNavFromPages } from "./core/navigation.js";
11
12
  import { generateChangelogFeeds } from "./renderer/changelog-feed.js";
12
13
  import { pageOutputPath, tabPath } from "./config.js";
@@ -17,10 +18,11 @@ export async function assembleSite(config) {
17
18
  const pageMap = new Map();
18
19
  const siteTabs = [];
19
20
  const changelogDiagnostics = [];
21
+ const godocDiagnostics = [];
20
22
  for (const tab of config.tabs) {
21
23
  if (tab.openapi || tab.mcp) {
22
24
  const spec = specsBySlug.get(tab.slug);
23
- const navTab = buildNavFromSpec(spec, tab.slug);
25
+ const navTab = buildNavFromSpec(spec, tab.slug, config.prettyUrls);
24
26
  navTab.label = tab.label;
25
27
  siteTabs.push(navTab);
26
28
  pageMap.set(tabPath(tab.slug, "index.html"), {
@@ -47,6 +49,26 @@ export async function assembleSite(config) {
47
49
  siteTabs.push(navTab);
48
50
  continue;
49
51
  }
52
+ if (tab.godoc) {
53
+ const { pages, navTab, diagnostics } = await loadGodocTab(tab.godoc, tab.slug, tab.label, {
54
+ repo: config.repo,
55
+ editBranch: config.editBranch,
56
+ editBasePath: tab.godoc.sourceBasePath,
57
+ });
58
+ godocDiagnostics.push(...diagnostics);
59
+ for (const [slug, page] of pages) {
60
+ const outputPath = pageOutputPath(tab.slug, slug, config.prettyUrls);
61
+ pageMap.set(outputPath, {
62
+ outputPath,
63
+ currentPage: { kind: "markdown", markdown: page },
64
+ spec: primarySpec,
65
+ tabSlug: tab.slug,
66
+ pageSlug: slug,
67
+ });
68
+ }
69
+ siteTabs.push(navTab);
70
+ continue;
71
+ }
50
72
  if (!tab.groups)
51
73
  continue;
52
74
  const pagesByPath = new Map();
@@ -79,7 +101,7 @@ export async function assembleSite(config) {
79
101
  });
80
102
  }
81
103
  }
82
- siteTabs.push(buildNavFromPages(tab, pagesByPath));
104
+ siteTabs.push(buildNavFromPages(tab, pagesByPath, config.prettyUrls));
83
105
  }
84
106
  if (config.changelog.permalinks) {
85
107
  addPermalinkPages(pageMap);
@@ -93,13 +115,20 @@ export async function assembleSite(config) {
93
115
  specsBySlug,
94
116
  pageMap,
95
117
  changelogDiagnostics,
118
+ godocDiagnostics,
96
119
  extraFiles,
97
120
  };
98
121
  }
122
+ export function formatGodocDiagnostic(diag) {
123
+ const sev = diag.severity.toUpperCase();
124
+ const where = diag.package ? ` [${diag.package}]` : "";
125
+ const loc = diag.file ? ` ${diag.file}${diag.line ? `:${diag.line}` : ""}` : "";
126
+ return `[${sev}] ${diag.code}${where}${loc} ${diag.message}`;
127
+ }
99
128
  export function collectDocsPagesByTab(pageMap, tabs) {
100
129
  const docsPagesByTab = new Map();
101
130
  for (const tab of tabs) {
102
- if (!tab.groups && !tab.doxygen)
131
+ if (!tab.groups && !tab.doxygen && !tab.godoc)
103
132
  continue;
104
133
  const tabPages = [];
105
134
  for (const [, page] of pageMap) {
@@ -130,7 +159,7 @@ export function rebuildMarkdownTabNavigation(pageMap, siteTabs, tabs, tabSlug, p
130
159
  }
131
160
  }
132
161
  }
133
- const navTab = buildNavFromPages(tab, pagesByPath);
162
+ const navTab = buildNavFromPages(tab, pagesByPath, prettyUrls);
134
163
  const idx = siteTabs.findIndex((candidate) => candidate.slug === tabSlug);
135
164
  if (idx !== -1)
136
165
  siteTabs[idx] = navTab;
@@ -1593,3 +1593,247 @@ h1[id], h2[id], h3[id], h4[id], h5[id], h6[id] {
1593
1593
  color: rgb(var(--color-gray-500));
1594
1594
  font-size: 0.8125rem;
1595
1595
  }
1596
+
1597
+ /* ── Godoc rendering ─────────────────────────────────────────────── */
1598
+
1599
+ #sourcey .godoc-import,
1600
+ #sourcey .godoc-import-path {
1601
+ font-size: 0.8125rem;
1602
+ color: rgb(var(--color-gray-500));
1603
+ margin: 0.25rem 0 1.5rem;
1604
+ }
1605
+
1606
+ #sourcey .godoc-import code,
1607
+ #sourcey .godoc-import-path code {
1608
+ font-family: var(--font-mono);
1609
+ background: rgba(var(--color-gray-100), 0.6);
1610
+ padding: 0.125rem 0.375rem;
1611
+ border-radius: 3px;
1612
+ }
1613
+
1614
+ #sourcey .godoc-source {
1615
+ margin: -0.25rem 0 0.625rem;
1616
+ font-size: 0.75rem;
1617
+ color: rgb(var(--color-gray-500));
1618
+ }
1619
+
1620
+ #sourcey .godoc-source a {
1621
+ color: inherit;
1622
+ text-decoration: none;
1623
+ }
1624
+
1625
+ #sourcey .godoc-source a:hover {
1626
+ color: rgb(var(--color-primary-ink));
1627
+ }
1628
+
1629
+ #sourcey .godoc-toc {
1630
+ margin: 1.5rem 0 2.5rem;
1631
+ padding: 0.875rem 1rem;
1632
+ border: 1px solid rgb(var(--color-gray-200));
1633
+ border-radius: 6px;
1634
+ background: rgba(var(--color-gray-50), 0.5);
1635
+ }
1636
+
1637
+ #sourcey .godoc-toc h4 {
1638
+ margin: 0 0 0.5rem;
1639
+ font-size: 0.6875rem;
1640
+ font-weight: 700;
1641
+ text-transform: uppercase;
1642
+ letter-spacing: 0.04em;
1643
+ color: rgb(var(--color-gray-500));
1644
+ }
1645
+
1646
+ #sourcey .godoc-toc ul {
1647
+ list-style: none;
1648
+ margin: 0;
1649
+ padding: 0;
1650
+ font-size: 0.8125rem;
1651
+ }
1652
+
1653
+ #sourcey .godoc-toc li {
1654
+ margin: 0.125rem 0;
1655
+ }
1656
+
1657
+ #sourcey .godoc-toc li.godoc-toc-sub {
1658
+ padding-left: 1rem;
1659
+ font-family: var(--font-mono);
1660
+ font-size: 0.75rem;
1661
+ color: rgb(var(--color-gray-600));
1662
+ }
1663
+
1664
+ #sourcey .godoc-toc a {
1665
+ color: inherit;
1666
+ text-decoration: none;
1667
+ border-bottom: 1px dotted transparent;
1668
+ }
1669
+
1670
+ #sourcey .godoc-toc a:hover {
1671
+ color: rgb(var(--color-primary));
1672
+ border-bottom-color: currentColor;
1673
+ }
1674
+
1675
+ #sourcey .godoc-symbol {
1676
+ font-family: var(--font-mono);
1677
+ font-size: 0.95rem;
1678
+ font-weight: 600;
1679
+ margin: 1.75rem 0 0.5rem;
1680
+ color: rgb(var(--color-gray-900));
1681
+ scroll-margin-top: 5rem;
1682
+ }
1683
+
1684
+ #sourcey .godoc-doc {
1685
+ margin: 0.5rem 0 0.75rem;
1686
+ color: rgb(var(--color-gray-700));
1687
+ font-size: 0.9375rem;
1688
+ line-height: 1.65;
1689
+ }
1690
+
1691
+ #sourcey .godoc-doc p:first-child {
1692
+ margin-top: 0;
1693
+ }
1694
+
1695
+ #sourcey .godoc-doc p:last-child {
1696
+ margin-bottom: 0;
1697
+ }
1698
+
1699
+ #sourcey .godoc-value,
1700
+ #sourcey .godoc-func,
1701
+ #sourcey .godoc-type {
1702
+ margin: 1rem 0 1.5rem;
1703
+ scroll-margin-top: 5rem;
1704
+ }
1705
+
1706
+ #sourcey .godoc-type {
1707
+ border-top: 1px solid rgb(var(--color-gray-200));
1708
+ padding-top: 1.25rem;
1709
+ margin-top: 2rem;
1710
+ }
1711
+
1712
+ #sourcey .godoc-anchor {
1713
+ display: block;
1714
+ height: 0;
1715
+ scroll-margin-top: 5rem;
1716
+ }
1717
+
1718
+ #sourcey .godoc-fields {
1719
+ margin: 0.75rem 0 1rem;
1720
+ padding: 0;
1721
+ border: 1px solid rgb(var(--color-gray-200));
1722
+ border-radius: 6px;
1723
+ background: rgba(var(--color-gray-50), 0.4);
1724
+ }
1725
+
1726
+ #sourcey .godoc-fields > summary {
1727
+ cursor: pointer;
1728
+ padding: 0.5rem 0.875rem;
1729
+ font-size: 0.75rem;
1730
+ font-weight: 600;
1731
+ text-transform: uppercase;
1732
+ letter-spacing: 0.04em;
1733
+ color: rgb(var(--color-gray-600));
1734
+ list-style: none;
1735
+ }
1736
+
1737
+ #sourcey .godoc-fields > summary::-webkit-details-marker {
1738
+ display: none;
1739
+ }
1740
+
1741
+ #sourcey .godoc-fields > ul {
1742
+ list-style: none;
1743
+ margin: 0;
1744
+ padding: 0;
1745
+ border-top: 1px solid rgb(var(--color-gray-200));
1746
+ }
1747
+
1748
+ #sourcey .godoc-field {
1749
+ padding: 0.625rem 0.875rem;
1750
+ border-bottom: 1px solid rgb(var(--color-gray-200));
1751
+ font-size: 0.875rem;
1752
+ }
1753
+
1754
+ #sourcey .godoc-field:last-child {
1755
+ border-bottom: none;
1756
+ }
1757
+
1758
+ #sourcey .godoc-field-sig {
1759
+ font-family: var(--font-mono);
1760
+ font-size: 0.8125rem;
1761
+ font-weight: 600;
1762
+ color: rgb(var(--color-gray-900));
1763
+ background: transparent;
1764
+ padding: 0;
1765
+ }
1766
+
1767
+ #sourcey .godoc-field-type {
1768
+ font-weight: 400;
1769
+ color: rgb(var(--color-gray-700));
1770
+ }
1771
+
1772
+ #sourcey .godoc-tag {
1773
+ font-family: var(--font-mono);
1774
+ font-size: 0.75rem;
1775
+ color: rgb(var(--color-gray-500));
1776
+ background: transparent;
1777
+ padding: 0;
1778
+ margin-left: 0.5rem;
1779
+ }
1780
+
1781
+ #sourcey .godoc-field-doc {
1782
+ margin-top: 0.25rem;
1783
+ font-size: 0.8125rem;
1784
+ color: rgb(var(--color-gray-600));
1785
+ line-height: 1.55;
1786
+ }
1787
+
1788
+ #sourcey .godoc-example {
1789
+ margin: 0.75rem 0 1.25rem;
1790
+ padding: 0;
1791
+ border: 1px solid rgb(var(--color-gray-200));
1792
+ border-radius: 6px;
1793
+ background: rgba(var(--color-gray-50), 0.4);
1794
+ }
1795
+
1796
+ #sourcey .godoc-example > summary {
1797
+ cursor: pointer;
1798
+ padding: 0.5rem 0.875rem;
1799
+ font-size: 0.75rem;
1800
+ font-weight: 600;
1801
+ text-transform: uppercase;
1802
+ letter-spacing: 0.04em;
1803
+ color: rgb(var(--color-gray-600));
1804
+ list-style: none;
1805
+ }
1806
+
1807
+ #sourcey .godoc-example > summary::-webkit-details-marker {
1808
+ display: none;
1809
+ }
1810
+
1811
+ #sourcey .godoc-example > summary::before {
1812
+ content: "▸ ";
1813
+ color: rgb(var(--color-gray-400));
1814
+ margin-right: 0.25rem;
1815
+ }
1816
+
1817
+ #sourcey .godoc-example[open] > summary::before {
1818
+ content: "▾ ";
1819
+ }
1820
+
1821
+ #sourcey .godoc-example > pre,
1822
+ #sourcey .godoc-example > .godoc-doc,
1823
+ #sourcey .godoc-example > p {
1824
+ margin: 0.5rem 0.875rem;
1825
+ }
1826
+
1827
+ #sourcey .godoc-example-output-label {
1828
+ margin: 0.5rem 0.875rem 0;
1829
+ font-size: 0.6875rem;
1830
+ font-weight: 700;
1831
+ text-transform: uppercase;
1832
+ letter-spacing: 0.04em;
1833
+ color: rgb(var(--color-gray-500));
1834
+ }
1835
+
1836
+ #sourcey .godoc-func .godoc-symbol,
1837
+ #sourcey .godoc-type .godoc-symbol {
1838
+ word-break: break-word;
1839
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "sourcey",
3
- "version": "3.5.0",
4
- "description": "Precision documentation from OpenAPI, MCP, Doxygen, and Markdown. Static HTML you own.",
3
+ "version": "3.5.2",
4
+ "description": "Precision documentation from OpenAPI, MCP, Doxygen, godoc, and Markdown. Static HTML you own.",
5
5
  "type": "module",
6
6
  "engines": {
7
7
  "node": ">=20"
@@ -20,13 +20,15 @@
20
20
  "LICENSE"
21
21
  ],
22
22
  "scripts": {
23
- "build": "tsc && cp -r src/themes dist/ && cp src/client/*.js dist/client/ && cp -r src/og/fonts dist/og/",
23
+ "build": "tsc && cp -r src/themes dist/ && cp src/client/*.js dist/client/ && cp -r src/og/fonts dist/og/ && rm -rf dist/core/sourcey-godoc dist/core/godoc-introspect && mkdir -p dist/core/sourcey-godoc && cp -R go/sourcey-godoc/go.mod go/sourcey-godoc/doc.go go/sourcey-godoc/cmd dist/core/sourcey-godoc/",
24
24
  "watch": "npm run build && tsc --watch --preserveWatchOutput",
25
25
  "test": "vitest run",
26
26
  "test:watch": "vitest",
27
27
  "lint": "eslint src/ test/",
28
28
  "lint:fix": "eslint src/ test/ --fix",
29
29
  "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
30
+ "godoc:go:test": "cd go/sourcey-godoc && go test ./...",
31
+ "godoc:go:vet": "cd go/sourcey-godoc && go vet ./...",
30
32
  "typecheck": "tsc --noEmit",
31
33
  "prepublishOnly": "npm run build"
32
34
  },
@@ -72,7 +74,14 @@
72
74
  "markdown",
73
75
  "api-docs",
74
76
  "developer-documentation",
75
- "doxygen"
77
+ "doxygen",
78
+ "godoc",
79
+ "golang",
80
+ "go-docs",
81
+ "go-documentation",
82
+ "mcp",
83
+ "llms-txt",
84
+ "static-docs"
76
85
  ],
77
86
  "funding": {
78
87
  "url": "https://sourcey.com"