sourcey 3.6.3 → 3.6.4
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.
- package/README.md +24 -13
- package/dist/client/scroll-tracker.js +3 -3
- package/dist/components/layout/Sidebar.d.ts.map +1 -1
- package/dist/components/layout/Sidebar.js +1 -1
- package/dist/components/openapi/Operation.js +1 -1
- package/dist/core/navigation.d.ts +4 -0
- package/dist/core/navigation.d.ts.map +1 -1
- package/dist/core/navigation.js +7 -1
- package/dist/core/sourcey-rustdoc/Cargo.lock +14 -18
- package/dist/core/sourcey-rustdoc/Cargo.toml +1 -1
- package/dist/core/sourcey-rustdoc/README.md +1 -1
- package/dist/themes/default/sourcey.css +19 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,18 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
> Docs straight from the source.
|
|
4
4
|
|
|
5
|
-
Sourcey
|
|
5
|
+
Sourcey turns OpenAPI, MCP, Doxygen XML, godoc, rustdoc, and Markdown into one static HTML site you own: reference, guides, changelog, roadmap, and llms.txt from the same build, deployable anywhere.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Everything renders at build time: no dashboard, no runtime, no API calls to render your own documentation.
|
|
8
8
|
|
|
9
9
|
[](https://www.npmjs.com/package/sourcey)
|
|
10
10
|
[](https://github.com/sourcey/sourcey/actions)
|
|
11
11
|
[](https://nodejs.org)
|
|
12
12
|
[](LICENSE)
|
|
13
|
-
[](https://pkg.go.dev/github.com/sourcey/sourcey/go/sourcey-godoc)
|
|
14
|
-
[](https://goreportcard.com/report/github.com/sourcey/sourcey/go/sourcey-godoc)
|
|
15
|
-
[](https://crates.io/crates/sourcey)
|
|
16
|
-
[](https://docs.rs/sourcey)
|
|
17
13
|
|
|
18
14
|
```bash
|
|
19
15
|
npx sourcey init
|
|
@@ -60,6 +56,9 @@ Then `sourcey init` to scaffold a new project, or `sourcey build` against an exi
|
|
|
60
56
|
|
|
61
57
|
### Standalone Go docs generator
|
|
62
58
|
|
|
59
|
+
[](https://pkg.go.dev/github.com/sourcey/sourcey/go/sourcey-godoc)
|
|
60
|
+
[](https://goreportcard.com/report/github.com/sourcey/sourcey/go/sourcey-godoc)
|
|
61
|
+
|
|
63
62
|
For Go-only consumers without a JavaScript toolchain, `sourcey-godoc` ships as a separate native binary. It produces static Go docs sites or portable `godoc.json` snapshots.
|
|
64
63
|
|
|
65
64
|
| Path | Command |
|
|
@@ -68,19 +67,31 @@ For Go-only consumers without a JavaScript toolchain, `sourcey-godoc` ships as a
|
|
|
68
67
|
| Homebrew | `brew install sourcey/tap/sourcey-godoc` |
|
|
69
68
|
| Scoop | `scoop bucket add sourcey https://github.com/sourcey/scoop-bucket && scoop install sourcey-godoc` |
|
|
70
69
|
|
|
70
|
+
### Rust snapshot converter
|
|
71
|
+
|
|
72
|
+
[](https://crates.io/crates/sourcey)
|
|
73
|
+
[](https://docs.rs/sourcey)
|
|
74
|
+
|
|
75
|
+
The `rustdoc()` adapter consumes nightly rustdoc JSON through the [`sourcey`](https://crates.io/crates/sourcey) companion crate and its `sourcey-rustdoc` converter, so CI can build Rust API docs from a committed snapshot on a stable toolchain. See [docs/adapters/rustdoc.md](docs/adapters/rustdoc.md).
|
|
76
|
+
|
|
71
77
|
## Quick start
|
|
72
78
|
|
|
73
79
|
```bash
|
|
74
|
-
#
|
|
75
|
-
sourcey
|
|
76
|
-
|
|
77
|
-
# Multi-page site (reads sourcey.config.ts)
|
|
78
|
-
sourcey build -o docs/
|
|
80
|
+
# Scaffold a project (detects OpenAPI specs and Doxyfiles)
|
|
81
|
+
npx sourcey init
|
|
79
82
|
|
|
80
83
|
# Dev server with hot reload
|
|
81
84
|
sourcey dev
|
|
85
|
+
|
|
86
|
+
# Build static HTML to dist/
|
|
87
|
+
sourcey build
|
|
88
|
+
|
|
89
|
+
# Quick build from a single OpenAPI spec
|
|
90
|
+
sourcey build api.yaml -o dist/
|
|
82
91
|
```
|
|
83
92
|
|
|
93
|
+
In CI, the [`sourcey/build-docs`](https://github.com/sourcey/build-docs) GitHub Action runs the build and deploys to GitHub Pages; see [deploying](https://sourcey.com/docs/deploying).
|
|
94
|
+
|
|
84
95
|
## Configuration
|
|
85
96
|
|
|
86
97
|
Create `sourcey.config.ts` in your project root:
|
|
@@ -168,8 +179,8 @@ cd sourcey && npm install
|
|
|
168
179
|
npm run build && npm test
|
|
169
180
|
cd go/sourcey-godoc && go test ./... && go vet ./...
|
|
170
181
|
|
|
171
|
-
# Run the
|
|
172
|
-
cd
|
|
182
|
+
# Run the in-repo docs site against your working copy
|
|
183
|
+
cd docs && npx tsx ../src/cli.ts dev
|
|
173
184
|
```
|
|
174
185
|
|
|
175
186
|
## License
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
// Scroll tracker — highlights the active sidebar nav link as user scrolls.
|
|
2
2
|
//
|
|
3
3
|
// Observes [data-traverse-target] section anchors and toggles .active
|
|
4
|
-
// on the matching #nav
|
|
4
|
+
// on the matching #nav fragment link. All visual styling is in sourcey.css;
|
|
5
5
|
// this file only manages the class.
|
|
6
6
|
(function () {
|
|
7
7
|
function init() {
|
|
8
8
|
var navbar = document.getElementById('navbar');
|
|
9
|
-
var navLinks = document.querySelectorAll('#nav .nav-link');
|
|
9
|
+
var navLinks = document.querySelectorAll('#nav .nav-link, #nav .nav-group-link');
|
|
10
10
|
var targets = document.querySelectorAll('[data-traverse-target]');
|
|
11
11
|
|
|
12
12
|
// For prose pages, also track heading elements that TOC links point to
|
|
@@ -113,7 +113,7 @@
|
|
|
113
113
|
if (tocEl) tocEl.addEventListener('click', function (e) { handleAnchorClick(e, '.toc-item'); });
|
|
114
114
|
|
|
115
115
|
var navEl = document.getElementById('nav');
|
|
116
|
-
if (navEl) navEl.addEventListener('click', function (e) { handleAnchorClick(e, '.nav-link'); });
|
|
116
|
+
if (navEl) navEl.addEventListener('click', function (e) { handleAnchorClick(e, '.nav-link, .nav-group-link'); });
|
|
117
117
|
|
|
118
118
|
// Use scroll event for reliable activation at all positions.
|
|
119
119
|
function onScroll() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sidebar.d.ts","sourceRoot":"","sources":["../../../src/components/layout/Sidebar.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Sidebar.d.ts","sourceRoot":"","sources":["../../../src/components/layout/Sidebar.tsx"],"names":[],"mappings":"AAsGA;;GAEG;AACH,wBAAgB,OAAO,wCA2GtB"}
|
|
@@ -32,7 +32,7 @@ function MethodPill({ method }) {
|
|
|
32
32
|
* Shared nav group rendering used by both desktop sidebar and mobile drawer.
|
|
33
33
|
*/
|
|
34
34
|
function NavGroups({ groups, activePageSlug, base }) {
|
|
35
|
-
return (_jsx(_Fragment, { children: groups.map((group, gi) => (_jsxs("div", { class: gi > 0 ? "mt-6 lg:mt-8" : "", children: [group.label && (_jsx("h5", { class: "nav-group-label", children: group.label })), _jsx("ul", { class: "space-y-px", children: group.items.map((item) => {
|
|
35
|
+
return (_jsx(_Fragment, { children: groups.map((group, gi) => (_jsxs("div", { class: gi > 0 ? "mt-6 lg:mt-8" : "", children: [group.label && (group.href ? (_jsx("a", { href: `${base}${group.href}`, class: `nav-group-label nav-group-link${group.id === activePageSlug ? " active" : ""}`, children: group.label })) : (_jsx("h5", { class: "nav-group-label", children: group.label }))), _jsx("ul", { class: "space-y-px", children: group.items.map((item) => {
|
|
36
36
|
const isActive = item.id === activePageSlug;
|
|
37
37
|
return (_jsx("li", { children: _jsxs("a", { href: `${base}${item.href}`, class: `nav-link${isActive ? " active" : ""}`, children: [item.method && _jsx(MethodPill, { method: item.method }), _jsx("span", { class: "flex-1 break-words [word-break:break-word]", children: item.label })] }) }, item.id));
|
|
38
38
|
}) })] }, group.label))) }));
|
|
@@ -26,7 +26,7 @@ export function Operation({ operation: op, serverUrl }) {
|
|
|
26
26
|
const hasParams = op.parameters.length > 0;
|
|
27
27
|
const hasBody = !!op.requestBody;
|
|
28
28
|
const mcp = op.mcpExtras;
|
|
29
|
-
return (_jsxs("div", { id: id, class: "py-8 border-t border-[rgb(var(--color-gray-100))] dark:border-[rgb(var(--color-gray-800))]", "data-traverse-target": id, children: [_jsx("header", { class: "mb-6", children: op.summary && (_jsxs("div", { class: "flex items-baseline gap-2 flex-wrap", children: [_jsx("h2", { class: "text-2xl sm:text-3xl text-[rgb(var(--color-gray-900))] dark:text-[rgb(var(--color-gray-200))] tracking-tight font-bold mb-2", children: _jsx(Markdown, { content: op.summary, inline: true }) }), op.deprecated && _jsx(DeprecatedBadge, {}), mcp?.annotations && _jsx(AnnotationBadges, { annotations: mcp.annotations })] })) }), mcp ? (_jsx(McpEndpointBar, { method: op.method, path: op.path })) : (_jsx(EndpointBar, { method: op.method, path: op.path, serverUrl: serverUrl })), _jsxs("div", { class: `flex flex-col ${apiFirst ? "lg:flex-row" : "xl:flex-row"} gap-8`, children: [_jsxs("div", { class: "flex-1 min-w-0", children: [op.description && (_jsx(Markdown, { content: op.description, class: "mb-6" })), hasBody && (_jsxs("div", { class: "mt-6", children: [_jsx(SectionLabel, { meta: bodyMediaType(op.requestBody), children: "Body" }), _jsx(RequestBody, { body: op.requestBody })] })), hasParams && (_jsxs("div", { class: "mt-6", children: [_jsx(SectionLabel, { children: "Parameters" }), _jsx(Parameters, { parameters: op.parameters })] })), mcp ? (_jsx(McpReturnsCopy, { schema: mcp.outputSchema })) : (op.responses.length > 0 && (_jsxs("div", { class: "mt-6", children: [_jsx(SectionLabel, { children: "Response" }), _jsx(ResponsesCopy, { responses: op.responses })] }))), !mcp && _jsx(SecurityCopy, { security: op.security })] }), _jsxs("aside", { class: `hidden ${apiFirst ? "lg:block" : "xl:block"} w-[28rem] shrink-0 sticky self-start overflow-y-auto space-y-4`, style: "top: calc(var(--header-height) + 2.5rem); max-height: calc(100vh - var(--header-height) - 5rem)", children: [_jsx(CodeSamplesExamples, { operation: op, serverUrl: serverUrl, codeSampleLangs: site.codeSamples }), hasBody && _jsx(RequestBodyExample, { body: op.requestBody }), mcp ? (_jsx(McpReturnsExample, { schema: mcp.outputSchema })) : (_jsx(ResponsesExamples, { responses: op.responses }))] })] }), _jsxs("div", { class: `${apiFirst ? "lg:hidden" : "xl:hidden"} mt-8 space-y-4`, children: [_jsx(CodeSamplesExamples, { operation: op, serverUrl: serverUrl, codeSampleLangs: site.codeSamples }), hasBody && _jsx(RequestBodyExample, { body: op.requestBody }), mcp ? (_jsx(McpReturnsExample, { schema: mcp.outputSchema })) : (_jsx(ResponsesExamples, { responses: op.responses }))] })] }));
|
|
29
|
+
return (_jsxs("div", { id: id, class: "py-8 border-t border-[rgb(var(--color-gray-100))] dark:border-[rgb(var(--color-gray-800))]", "data-traverse-target": id, children: [_jsx("header", { class: "mb-6", children: op.summary && (_jsxs("div", { class: "flex items-baseline gap-2 flex-wrap", children: [_jsx("h2", { class: "text-2xl sm:text-3xl text-[rgb(var(--color-gray-900))] dark:text-[rgb(var(--color-gray-200))] tracking-tight font-bold mb-2", children: _jsx(Markdown, { content: op.summary, inline: true }) }), op.deprecated && _jsx(DeprecatedBadge, {}), mcp?.annotations && _jsx(AnnotationBadges, { annotations: mcp.annotations })] })) }), mcp ? (_jsx(McpEndpointBar, { method: op.method, path: op.path })) : (_jsx(EndpointBar, { method: op.method, path: op.path, serverUrl: serverUrl })), _jsxs("div", { class: `flex flex-col ${apiFirst ? "lg:flex-row" : "xl:flex-row"} gap-8`, children: [_jsxs("div", { class: "flex-1 min-w-0", children: [op.description && (_jsx(Markdown, { content: op.description, class: "mb-6 max-w-none" })), hasBody && (_jsxs("div", { class: "mt-6", children: [_jsx(SectionLabel, { meta: bodyMediaType(op.requestBody), children: "Body" }), _jsx(RequestBody, { body: op.requestBody })] })), hasParams && (_jsxs("div", { class: "mt-6", children: [_jsx(SectionLabel, { children: "Parameters" }), _jsx(Parameters, { parameters: op.parameters })] })), mcp ? (_jsx(McpReturnsCopy, { schema: mcp.outputSchema })) : (op.responses.length > 0 && (_jsxs("div", { class: "mt-6", children: [_jsx(SectionLabel, { children: "Response" }), _jsx(ResponsesCopy, { responses: op.responses })] }))), !mcp && _jsx(SecurityCopy, { security: op.security })] }), _jsxs("aside", { class: `hidden ${apiFirst ? "lg:block" : "xl:block"} w-[28rem] shrink-0 sticky self-start overflow-y-auto space-y-4`, style: "top: calc(var(--header-height) + 2.5rem); max-height: calc(100vh - var(--header-height) - 5rem)", children: [_jsx(CodeSamplesExamples, { operation: op, serverUrl: serverUrl, codeSampleLangs: site.codeSamples }), hasBody && _jsx(RequestBodyExample, { body: op.requestBody }), mcp ? (_jsx(McpReturnsExample, { schema: mcp.outputSchema })) : (_jsx(ResponsesExamples, { responses: op.responses }))] })] }), _jsxs("div", { class: `${apiFirst ? "lg:hidden" : "xl:hidden"} mt-8 space-y-4`, children: [_jsx(CodeSamplesExamples, { operation: op, serverUrl: serverUrl, codeSampleLangs: site.codeSamples }), hasBody && _jsx(RequestBodyExample, { body: op.requestBody }), mcp ? (_jsx(McpReturnsExample, { schema: mcp.outputSchema })) : (_jsx(ResponsesExamples, { responses: op.responses }))] })] }));
|
|
30
30
|
}
|
|
31
31
|
function bodyMediaType(body) {
|
|
32
32
|
const types = Object.keys(body.content);
|
|
@@ -17,6 +17,10 @@ export interface SiteTab {
|
|
|
17
17
|
}
|
|
18
18
|
export interface SiteNavGroup {
|
|
19
19
|
label: string;
|
|
20
|
+
/** Optional section link for generated groups such as OpenAPI tag intros. */
|
|
21
|
+
href?: string;
|
|
22
|
+
/** Unique ID for section-level active-state matching. */
|
|
23
|
+
id?: string;
|
|
20
24
|
items: SiteNavItem[];
|
|
21
25
|
}
|
|
22
26
|
export interface SiteNavItem {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../src/core/navigation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAgB/D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAMD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,MAAM,EACf,UAAU,GAAE,UAAkB,GAC7B,OAAO,
|
|
1
|
+
{"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../src/core/navigation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAgB/D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAMD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,MAAM,EACf,UAAU,GAAE,UAAkB,GAC7B,OAAO,CAuDT;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,WAAW,EAChB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,EAClC,UAAU,GAAE,UAAkB,GAC7B,OAAO,CA8BT;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,cAAc,CASnE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,cAAc,CAEhB"}
|
package/dist/core/navigation.js
CHANGED
|
@@ -40,6 +40,7 @@ export function buildNavFromSpec(spec, tabSlug, prettyUrls = false) {
|
|
|
40
40
|
for (const tag of spec.tags) {
|
|
41
41
|
if (tag.hidden)
|
|
42
42
|
continue;
|
|
43
|
+
const tagId = `tag-${htmlId(tag.name)}`;
|
|
43
44
|
const items = tag.operations.map((op) => ({
|
|
44
45
|
label: op.summary ?? `${op.method.toUpperCase()} ${op.path}`,
|
|
45
46
|
href: `${basePath}#operation-${htmlId(op.path)}-${htmlId(op.method)}`,
|
|
@@ -48,7 +49,12 @@ export function buildNavFromSpec(spec, tabSlug, prettyUrls = false) {
|
|
|
48
49
|
}));
|
|
49
50
|
if (!items.length)
|
|
50
51
|
continue;
|
|
51
|
-
groups.push({
|
|
52
|
+
groups.push({
|
|
53
|
+
label: tagNavigationLabel(tag, tagsByName),
|
|
54
|
+
href: `${basePath}#${tagId}`,
|
|
55
|
+
id: tagId,
|
|
56
|
+
items,
|
|
57
|
+
});
|
|
52
58
|
}
|
|
53
59
|
// Models group
|
|
54
60
|
const schemaNames = Object.keys(spec.schemas);
|
|
@@ -66,15 +66,15 @@ checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c"
|
|
|
66
66
|
|
|
67
67
|
[[package]]
|
|
68
68
|
name = "bitflags"
|
|
69
|
-
version = "2.
|
|
69
|
+
version = "2.13.0"
|
|
70
70
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
71
|
-
checksum = "
|
|
71
|
+
checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8"
|
|
72
72
|
|
|
73
73
|
[[package]]
|
|
74
74
|
name = "camino"
|
|
75
|
-
version = "1.2.
|
|
75
|
+
version = "1.2.3"
|
|
76
76
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
77
|
-
checksum = "
|
|
77
|
+
checksum = "b4ce8d3bd5823c7504d3f579f13e7b2f3da252fcb938c594d5680ee508bf846f"
|
|
78
78
|
dependencies = [
|
|
79
79
|
"serde_core",
|
|
80
80
|
]
|
|
@@ -180,9 +180,6 @@ name = "deranged"
|
|
|
180
180
|
version = "0.5.8"
|
|
181
181
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
182
182
|
checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c"
|
|
183
|
-
dependencies = [
|
|
184
|
-
"powerfmt",
|
|
185
|
-
]
|
|
186
183
|
|
|
187
184
|
[[package]]
|
|
188
185
|
name = "equivalent"
|
|
@@ -245,9 +242,9 @@ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
|
|
|
245
242
|
|
|
246
243
|
[[package]]
|
|
247
244
|
name = "memchr"
|
|
248
|
-
version = "2.8.
|
|
245
|
+
version = "2.8.2"
|
|
249
246
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
250
|
-
checksum = "
|
|
247
|
+
checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4"
|
|
251
248
|
|
|
252
249
|
[[package]]
|
|
253
250
|
name = "miniz_oxide"
|
|
@@ -452,9 +449,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
|
|
|
452
449
|
|
|
453
450
|
[[package]]
|
|
454
451
|
name = "syn"
|
|
455
|
-
version = "2.0.
|
|
452
|
+
version = "2.0.118"
|
|
456
453
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
457
|
-
checksum = "
|
|
454
|
+
checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422"
|
|
458
455
|
dependencies = [
|
|
459
456
|
"proc-macro2",
|
|
460
457
|
"quote",
|
|
@@ -503,12 +500,11 @@ dependencies = [
|
|
|
503
500
|
|
|
504
501
|
[[package]]
|
|
505
502
|
name = "time"
|
|
506
|
-
version = "0.3.
|
|
503
|
+
version = "0.3.49"
|
|
507
504
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
508
|
-
checksum = "
|
|
505
|
+
checksum = "711a53c2d47bbd818258c498c8dbfe186a2526c631495cfe7e078567f86b8469"
|
|
509
506
|
dependencies = [
|
|
510
507
|
"deranged",
|
|
511
|
-
"itoa",
|
|
512
508
|
"num-conv",
|
|
513
509
|
"powerfmt",
|
|
514
510
|
"serde_core",
|
|
@@ -518,15 +514,15 @@ dependencies = [
|
|
|
518
514
|
|
|
519
515
|
[[package]]
|
|
520
516
|
name = "time-core"
|
|
521
|
-
version = "0.1.
|
|
517
|
+
version = "0.1.9"
|
|
522
518
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
523
|
-
checksum = "
|
|
519
|
+
checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109"
|
|
524
520
|
|
|
525
521
|
[[package]]
|
|
526
522
|
name = "time-macros"
|
|
527
|
-
version = "0.2.
|
|
523
|
+
version = "0.2.29"
|
|
528
524
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
529
|
-
checksum = "
|
|
525
|
+
checksum = "71c652a3727a9cbb9a02f707f530b618ce00d0ccd762009c8c23bd191df3c17d"
|
|
530
526
|
dependencies = [
|
|
531
527
|
"num-conv",
|
|
532
528
|
"time-core",
|
|
@@ -6,7 +6,7 @@ description = "Convert nightly rustdoc JSON into a stable RustdocSpec snapshot.
|
|
|
6
6
|
license = "AGPL-3.0-only"
|
|
7
7
|
repository = "https://github.com/sourcey/sourcey"
|
|
8
8
|
homepage = "https://sourcey.com"
|
|
9
|
-
documentation = "https://sourcey.com/docs/
|
|
9
|
+
documentation = "https://sourcey.com/docs/rustdoc-integration"
|
|
10
10
|
readme = "README.md"
|
|
11
11
|
keywords = ["rustdoc", "documentation", "json", "rust-api"]
|
|
12
12
|
categories = ["development-tools", "command-line-utilities"]
|
|
@@ -16,7 +16,7 @@ this crate directly. It is published for:
|
|
|
16
16
|
- CI tools that drive snapshot generation from Rust
|
|
17
17
|
|
|
18
18
|
If you just want sourcey for your project, see
|
|
19
|
-
[sourcey.com/docs/
|
|
19
|
+
[sourcey.com/docs/rustdoc-integration](https://sourcey.com/docs/rustdoc-integration).
|
|
20
20
|
|
|
21
21
|
## CLI
|
|
22
22
|
|
|
@@ -218,6 +218,7 @@ h1[id], h2[id], h3[id], h4[id], h5[id], h6[id] {
|
|
|
218
218
|
/* ── Nav Links ────────────────────────────────────────────────────── */
|
|
219
219
|
|
|
220
220
|
#sourcey .nav-group-label {
|
|
221
|
+
display: block;
|
|
221
222
|
padding: 0 0.75rem 0.25rem 1rem;
|
|
222
223
|
margin-bottom: 0.625rem;
|
|
223
224
|
font-size: inherit;
|
|
@@ -227,6 +228,24 @@ h1[id], h2[id], h3[id], h4[id], h5[id], h6[id] {
|
|
|
227
228
|
.dark #sourcey .nav-group-label {
|
|
228
229
|
color: rgb(var(--color-gray-200));
|
|
229
230
|
}
|
|
231
|
+
#sourcey .nav-group-link {
|
|
232
|
+
cursor: pointer;
|
|
233
|
+
border-radius: 0.75rem;
|
|
234
|
+
text-decoration: none;
|
|
235
|
+
transition: color 0.15s, background-color 0.15s;
|
|
236
|
+
}
|
|
237
|
+
#sourcey .nav-group-link:hover {
|
|
238
|
+
color: rgb(var(--color-primary-ink));
|
|
239
|
+
}
|
|
240
|
+
.dark #sourcey .nav-group-link:hover {
|
|
241
|
+
color: rgb(var(--color-primary-light));
|
|
242
|
+
}
|
|
243
|
+
#sourcey .nav-group-link.active {
|
|
244
|
+
color: rgb(var(--color-primary-ink));
|
|
245
|
+
}
|
|
246
|
+
.dark #sourcey .nav-group-link.active {
|
|
247
|
+
color: rgb(var(--color-primary-light));
|
|
248
|
+
}
|
|
230
249
|
|
|
231
250
|
#sourcey .nav-tab-label {
|
|
232
251
|
display: block;
|