svedocs 0.1.0-beta.3 → 0.1.0-beta.5
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 +38 -0
- package/dist/ai/providers.d.ts.map +1 -1
- package/dist/ai/providers.js +37 -39
- package/dist/ai/runtime.d.ts +2 -0
- package/dist/ai/runtime.d.ts.map +1 -1
- package/dist/ai/runtime.js +8 -3
- package/dist/cloudflare.d.ts +2 -0
- package/dist/cloudflare.d.ts.map +1 -1
- package/dist/cloudflare.js +3 -0
- package/dist/config.d.ts +47 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +51 -7
- package/dist/core/checks.js +2 -2
- package/dist/core/config.d.ts +1 -0
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +13 -32
- package/dist/core/content.d.ts.map +1 -1
- package/dist/core/content.js +135 -11
- package/dist/core/i18n.d.ts +5 -0
- package/dist/core/i18n.d.ts.map +1 -0
- package/dist/core/i18n.js +117 -0
- package/dist/core/links.d.ts +1 -4
- package/dist/core/links.d.ts.map +1 -1
- package/dist/core/links.js +9 -43
- package/dist/core/messages.d.ts +149 -0
- package/dist/core/messages.d.ts.map +1 -0
- package/dist/core/messages.js +163 -0
- package/dist/core/routes.d.ts +36 -0
- package/dist/core/routes.d.ts.map +1 -0
- package/dist/core/routes.js +152 -0
- package/dist/core/types.d.ts +192 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/utils.d.ts +1 -0
- package/dist/core/utils.d.ts.map +1 -1
- package/dist/core/utils.js +8 -0
- package/dist/core.d.ts +1 -0
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/mdx/code.d.ts +3 -1
- package/dist/mdx/code.d.ts.map +1 -1
- package/dist/mdx/code.js +10 -6
- package/dist/mdx/compile.d.ts +3 -1
- package/dist/mdx/compile.d.ts.map +1 -1
- package/dist/mdx/compile.js +9 -14
- package/dist/mdx/diff.d.ts +2 -0
- package/dist/mdx/diff.d.ts.map +1 -1
- package/dist/mdx/diff.js +17 -9
- package/dist/mdx/headings.d.ts +4 -0
- package/dist/mdx/headings.d.ts.map +1 -0
- package/dist/mdx/headings.js +42 -0
- package/dist/mdx/links.d.ts +4 -0
- package/dist/mdx/links.d.ts.map +1 -0
- package/dist/mdx/links.js +144 -0
- package/dist/og/image.d.ts +4 -0
- package/dist/og/image.d.ts.map +1 -1
- package/dist/og/image.js +8 -0
- package/dist/og/metadata.d.ts +5 -1
- package/dist/og/metadata.d.ts.map +1 -1
- package/dist/og/metadata.js +77 -7
- package/dist/og/types.d.ts +6 -0
- package/dist/og/types.d.ts.map +1 -1
- package/dist/routes.d.ts +2 -0
- package/dist/routes.d.ts.map +1 -0
- package/dist/routes.js +1 -0
- package/dist/search/cloudflare.d.ts +2 -1
- package/dist/search/cloudflare.d.ts.map +1 -1
- package/dist/search/cloudflare.js +10 -1
- package/dist/search/local.d.ts.map +1 -1
- package/dist/search/local.js +64 -21
- package/dist/search/runtime.js +1 -1
- package/dist/search/utils.d.ts +1 -0
- package/dist/search/utils.d.ts.map +1 -1
- package/dist/search/utils.js +38 -0
- package/dist/svelte.d.ts +2 -0
- package/dist/svelte.d.ts.map +1 -1
- package/dist/svelte.js +4 -15
- package/dist/theme/Article.svelte +62 -22
- package/dist/theme/Article.svelte.d.ts +2 -1
- package/dist/theme/Article.svelte.d.ts.map +1 -1
- package/dist/theme/AskAiPanel.svelte +18 -12
- package/dist/theme/AskAiPanel.svelte.d.ts +2 -1
- package/dist/theme/AskAiPanel.svelte.d.ts.map +1 -1
- package/dist/theme/Brand.svelte +19 -0
- package/dist/theme/Brand.svelte.d.ts +22 -0
- package/dist/theme/Brand.svelte.d.ts.map +1 -0
- package/dist/theme/DocsApp.svelte +130 -45
- package/dist/theme/DocsApp.svelte.d.ts +16 -18
- package/dist/theme/DocsApp.svelte.d.ts.map +1 -1
- package/dist/theme/DocsLayout.svelte +36 -21
- package/dist/theme/DocsLayout.svelte.d.ts.map +1 -1
- package/dist/theme/DocsShell.svelte +91 -0
- package/dist/theme/DocsShell.svelte.d.ts +34 -0
- package/dist/theme/DocsShell.svelte.d.ts.map +1 -0
- package/dist/theme/ErrorPage.svelte +104 -0
- package/dist/theme/ErrorPage.svelte.d.ts +34 -0
- package/dist/theme/ErrorPage.svelte.d.ts.map +1 -0
- package/dist/theme/Footer.svelte +6 -28
- package/dist/theme/Footer.svelte.d.ts +2 -0
- package/dist/theme/Footer.svelte.d.ts.map +1 -1
- package/dist/theme/FooterLinks.svelte +37 -0
- package/dist/theme/FooterLinks.svelte.d.ts +22 -0
- package/dist/theme/FooterLinks.svelte.d.ts.map +1 -0
- package/dist/theme/HomePage.svelte +83 -41
- package/dist/theme/HomePage.svelte.d.ts +6 -1
- package/dist/theme/HomePage.svelte.d.ts.map +1 -1
- package/dist/theme/LayoutShell.svelte +119 -0
- package/dist/theme/LayoutShell.svelte.d.ts +43 -0
- package/dist/theme/LayoutShell.svelte.d.ts.map +1 -0
- package/dist/theme/LocalizedLink.svelte +21 -0
- package/dist/theme/LocalizedLink.svelte.d.ts +38 -0
- package/dist/theme/LocalizedLink.svelte.d.ts.map +1 -0
- package/dist/theme/MobileNav.svelte +5 -2
- package/dist/theme/MobileNav.svelte.d.ts +2 -1
- package/dist/theme/MobileNav.svelte.d.ts.map +1 -1
- package/dist/theme/Navbar.svelte +14 -37
- package/dist/theme/Navbar.svelte.d.ts.map +1 -1
- package/dist/theme/PageLayout.svelte +31 -30
- package/dist/theme/PageLayout.svelte.d.ts +2 -1
- package/dist/theme/PageLayout.svelte.d.ts.map +1 -1
- package/dist/theme/PageShell.svelte +98 -0
- package/dist/theme/PageShell.svelte.d.ts +35 -0
- package/dist/theme/PageShell.svelte.d.ts.map +1 -0
- package/dist/theme/PageTools.svelte +11 -8
- package/dist/theme/PageTools.svelte.d.ts +2 -1
- package/dist/theme/PageTools.svelte.d.ts.map +1 -1
- package/dist/theme/RenderError.svelte +62 -0
- package/dist/theme/RenderError.svelte.d.ts +31 -0
- package/dist/theme/RenderError.svelte.d.ts.map +1 -0
- package/dist/theme/RootLayout.svelte +167 -45
- package/dist/theme/RootLayout.svelte.d.ts +4 -0
- package/dist/theme/RootLayout.svelte.d.ts.map +1 -1
- package/dist/theme/RouteRenderError.svelte +53 -0
- package/dist/theme/RouteRenderError.svelte.d.ts +34 -0
- package/dist/theme/RouteRenderError.svelte.d.ts.map +1 -0
- package/dist/theme/SafeRenderError.svelte +49 -0
- package/dist/theme/SafeRenderError.svelte.d.ts +33 -0
- package/dist/theme/SafeRenderError.svelte.d.ts.map +1 -0
- package/dist/theme/ScopeSwitcher.svelte +9 -5
- package/dist/theme/ScopeSwitcher.svelte.d.ts +2 -0
- package/dist/theme/ScopeSwitcher.svelte.d.ts.map +1 -1
- package/dist/theme/SearchDialog.svelte +16 -14
- package/dist/theme/SearchDialog.svelte.d.ts +2 -1
- package/dist/theme/SearchDialog.svelte.d.ts.map +1 -1
- package/dist/theme/SidebarTree.svelte +19 -7
- package/dist/theme/SidebarTree.svelte.d.ts.map +1 -1
- package/dist/theme/SocialNav.svelte +17 -0
- package/dist/theme/SocialNav.svelte.d.ts +22 -0
- package/dist/theme/SocialNav.svelte.d.ts.map +1 -0
- package/dist/theme/TableOfContents.svelte +6 -4
- package/dist/theme/TableOfContents.svelte.d.ts +2 -1
- package/dist/theme/TableOfContents.svelte.d.ts.map +1 -1
- package/dist/theme/ThemeToggle.svelte +8 -2
- package/dist/theme/ThemeToggle.svelte.d.ts +2 -0
- package/dist/theme/ThemeToggle.svelte.d.ts.map +1 -1
- package/dist/theme/TopNav.svelte +23 -0
- package/dist/theme/TopNav.svelte.d.ts +22 -0
- package/dist/theme/TopNav.svelte.d.ts.map +1 -0
- package/dist/theme/base.css +142 -2
- package/dist/theme/defaults.d.ts.map +1 -1
- package/dist/theme/defaults.js +26 -1
- package/dist/theme/headless.d.ts +21 -2
- package/dist/theme/headless.d.ts.map +1 -1
- package/dist/theme/headless.js +221 -58
- package/dist/theme/index.d.ts +10 -0
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/index.js +10 -0
- package/dist/theme/styles.css +526 -2
- package/dist/theme/types.d.ts +154 -1
- package/dist/theme/types.d.ts.map +1 -1
- package/dist/vite.d.ts +4 -1
- package/dist/vite.d.ts.map +1 -1
- package/dist/vite.js +81 -7
- package/package.json +5 -2
package/README.md
CHANGED
|
@@ -18,6 +18,44 @@ Integrated SvelteKit documentation framework package.
|
|
|
18
18
|
|
|
19
19
|
All rendering, theme, search, AI, SEO, OG, and Cloudflare capabilities are intentionally kept inside this package.
|
|
20
20
|
|
|
21
|
+
## Theme Development
|
|
22
|
+
|
|
23
|
+
The default theme is optional and replaceable. Import the full bundled CSS when you want the standard look:
|
|
24
|
+
|
|
25
|
+
```svelte
|
|
26
|
+
<script lang="ts">
|
|
27
|
+
import 'svedocs/theme/styles.css';
|
|
28
|
+
</script>
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Custom themes can import only `svedocs/theme/base.css` for reset, accessibility, prose, and code structure, or skip theme CSS entirely and own every style.
|
|
32
|
+
|
|
33
|
+
Register replacement components in the Vite plugin, not `svedocs.config.ts`, because Svelte component paths are build-time imports:
|
|
34
|
+
|
|
35
|
+
```ts
|
|
36
|
+
import { svedocs } from 'svedocs/vite';
|
|
37
|
+
import svedocsConfig from './svedocs.config';
|
|
38
|
+
|
|
39
|
+
svedocs({
|
|
40
|
+
config: svedocsConfig,
|
|
41
|
+
theme: {
|
|
42
|
+
components: {
|
|
43
|
+
Navbar: '$lib/theme/Navbar.svelte',
|
|
44
|
+
Article: '$lib/theme/Article.svelte',
|
|
45
|
+
Search: '$lib/theme/Search.svelte',
|
|
46
|
+
AskAi: '$lib/theme/AskAi.svelte',
|
|
47
|
+
Error: '$lib/theme/Error.svelte'
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Generated routes import `virtual:svedocs/theme-components` and pass the map to `DocsApp`. You can replace broad page layouts such as `Root`, `Layout`, `Docs`, `Page`, `Home`, and `Error`, or smaller pieces such as `Navbar`, `Sidebar`, `Article`, `Toc`, `Search`, `AskAi`, `Footer`, `ThemeToggle`, `PageTools`, and `RenderError`.
|
|
54
|
+
|
|
55
|
+
Use `svedocs/theme/types` for stable props and `svedocs/theme/headless` for unstyled behavior controllers such as search, Ask AI, ToC tracking, theme mode, mobile nav, page tools, and code-copy behavior. Replacement page layouts should keep passing `pages`, `tree`, `search`, `config`, `loadSearch`, and `themeComponents` into nested default components so navigation highlighting, mobile menus, and runtime panels stay connected.
|
|
56
|
+
|
|
57
|
+
Generated templates include `src/routes/+error.svelte`. Register `theme.components.Error` to customize full-route error pages and `theme.components.RenderError` to customize local render-boundary failures inside layouts, articles, and tools.
|
|
58
|
+
|
|
21
59
|
## MDX/SVX Components
|
|
22
60
|
|
|
23
61
|
The Vite plugin loads `svedocs.config.ts` by default. You can also pass a config object explicitly and register shared authoring components or layouts:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/ai/providers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAItD,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,WAAW,EAGX,0BAA0B,EAC3B,MAAM,YAAY,CAAC;AAEpB,wBAAgB,oBAAoB,IAAI,UAAU,CAajD;AAED,wBAAgB,kCAAkC,CAAC,KAAK,EAAE;IACxD,OAAO,EAAE,eAAe,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/ai/providers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAItD,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,WAAW,EAGX,0BAA0B,EAC3B,MAAM,YAAY,CAAC;AAEpB,wBAAgB,oBAAoB,IAAI,UAAU,CAajD;AAED,wBAAgB,kCAAkC,CAAC,KAAK,EAAE;IACxD,OAAO,EAAE,eAAe,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,UAAU,CAuDb;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAC7C,EAAE,EAAE,0BAA0B,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,UAAU,CA2Bb;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,mBAAmB,EAAE,EAC9B,QAAQ,EAAE,MAAM,EAChB,KAAK,SAAI,GACR,WAAW,EAAE,CAMf;AAED,eAAO,MAAM,cAAc,YAAyB,CAAC"}
|
package/dist/ai/providers.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { normalizeCloudflareAiSearchResults } from '../search/cloudflare.js';
|
|
2
|
-
import { searchRecords } from '../search.js';
|
|
1
|
+
import { createCloudflareAiSearchScopeFilters, normalizeCloudflareAiSearchResults } from '../search/cloudflare.js';
|
|
2
|
+
import { matchesSearchScope, searchRecords } from '../search.js';
|
|
3
3
|
export function createMockAiProvider() {
|
|
4
4
|
return {
|
|
5
5
|
name: 'mock',
|
|
@@ -24,44 +24,24 @@ export function createCloudflareAiSearchAiProvider(input) {
|
|
|
24
24
|
const result = await instance.search({
|
|
25
25
|
messages: conversation,
|
|
26
26
|
ai_search_options: {
|
|
27
|
-
retrieval:
|
|
28
|
-
retrieval_type: 'hybrid',
|
|
29
|
-
max_num_results: maxResults
|
|
30
|
-
}
|
|
27
|
+
retrieval: createCloudflareAiSearchRetrieval(maxResults, question.scope)
|
|
31
28
|
}
|
|
32
29
|
});
|
|
33
30
|
return {
|
|
34
31
|
answer: result.response ?? result.answer ?? 'No answer was returned.',
|
|
35
|
-
citations:
|
|
36
|
-
.slice(0, maxResults)
|
|
37
|
-
.map((result) => ({
|
|
38
|
-
title: result.title,
|
|
39
|
-
url: result.url,
|
|
40
|
-
...(result.section ? { section: result.section } : {})
|
|
41
|
-
}))
|
|
32
|
+
citations: createCloudflareAiSearchCitations(result, question, maxResults)
|
|
42
33
|
};
|
|
43
34
|
}
|
|
44
35
|
const result = await instance.chatCompletions({
|
|
45
36
|
messages: conversation,
|
|
46
37
|
...(input.model ? { model: input.model } : {}),
|
|
47
38
|
ai_search_options: {
|
|
48
|
-
retrieval:
|
|
49
|
-
retrieval_type: 'hybrid',
|
|
50
|
-
max_num_results: maxResults
|
|
51
|
-
}
|
|
39
|
+
retrieval: createCloudflareAiSearchRetrieval(maxResults, question.scope)
|
|
52
40
|
}
|
|
53
41
|
});
|
|
54
42
|
return {
|
|
55
43
|
answer: readAiSearchAnswer(result),
|
|
56
|
-
citations:
|
|
57
|
-
? normalizeCitations(result.citations)
|
|
58
|
-
: normalizeCloudflareAiSearchResults(result, question.question)
|
|
59
|
-
.slice(0, maxResults)
|
|
60
|
-
.map((result) => ({
|
|
61
|
-
title: result.title,
|
|
62
|
-
url: result.url,
|
|
63
|
-
...(result.section ? { section: result.section } : {})
|
|
64
|
-
}))
|
|
44
|
+
citations: readCloudflareAiSearchCitations(result, question, maxResults)
|
|
65
45
|
};
|
|
66
46
|
}
|
|
67
47
|
return {
|
|
@@ -77,25 +57,14 @@ export function createCloudflareAiSearchAiProvider(input) {
|
|
|
77
57
|
...(input.model ? { model: input.model } : {}),
|
|
78
58
|
stream: true,
|
|
79
59
|
ai_search_options: {
|
|
80
|
-
retrieval:
|
|
81
|
-
retrieval_type: 'hybrid',
|
|
82
|
-
max_num_results: maxResults
|
|
83
|
-
}
|
|
60
|
+
retrieval: createCloudflareAiSearchRetrieval(maxResults, question.scope)
|
|
84
61
|
}
|
|
85
62
|
});
|
|
86
63
|
if (result instanceof Response || result instanceof ReadableStream)
|
|
87
64
|
return result;
|
|
88
65
|
return createSvedocsAnswerStream({
|
|
89
66
|
answer: readAiSearchAnswer(result),
|
|
90
|
-
citations:
|
|
91
|
-
? normalizeCitations(result.citations)
|
|
92
|
-
: normalizeCloudflareAiSearchResults(result, question.question)
|
|
93
|
-
.slice(0, maxResults)
|
|
94
|
-
.map((result) => ({
|
|
95
|
-
title: result.title,
|
|
96
|
-
url: result.url,
|
|
97
|
-
...(result.section ? { section: result.section } : {})
|
|
98
|
-
}))
|
|
67
|
+
citations: readCloudflareAiSearchCitations(result, question, maxResults)
|
|
99
68
|
});
|
|
100
69
|
}
|
|
101
70
|
};
|
|
@@ -157,6 +126,35 @@ function normalizeCitations(citations) {
|
|
|
157
126
|
...(citation.section ? { section: citation.section } : {})
|
|
158
127
|
}));
|
|
159
128
|
}
|
|
129
|
+
function createCloudflareAiSearchRetrieval(maxResults, scope) {
|
|
130
|
+
const filters = createCloudflareAiSearchScopeFilters(scope);
|
|
131
|
+
return {
|
|
132
|
+
retrieval_type: 'hybrid',
|
|
133
|
+
max_num_results: maxResults,
|
|
134
|
+
...(filters ? { filters } : {})
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
function readCloudflareAiSearchCitations(result, input, maxResults) {
|
|
138
|
+
const scopedCitations = createCloudflareAiSearchCitations(result, input, maxResults);
|
|
139
|
+
const citations = normalizeCitations(result.citations);
|
|
140
|
+
if (hasSearchScope(input.scope)) {
|
|
141
|
+
return scopedCitations.length > 0 ? scopedCitations : citations.slice(0, maxResults);
|
|
142
|
+
}
|
|
143
|
+
return citations.length > 0 ? citations.slice(0, maxResults) : scopedCitations;
|
|
144
|
+
}
|
|
145
|
+
function createCloudflareAiSearchCitations(result, input, maxResults) {
|
|
146
|
+
return normalizeCloudflareAiSearchResults(result, input.question)
|
|
147
|
+
.filter((searchResult) => matchesSearchScope({ metadata: searchResult.metadata }, input.scope))
|
|
148
|
+
.slice(0, maxResults)
|
|
149
|
+
.map((searchResult) => ({
|
|
150
|
+
title: searchResult.title,
|
|
151
|
+
url: searchResult.url,
|
|
152
|
+
...(searchResult.section ? { section: searchResult.section } : {})
|
|
153
|
+
}));
|
|
154
|
+
}
|
|
155
|
+
function hasSearchScope(scope) {
|
|
156
|
+
return Boolean(scope?.locale || scope?.kind);
|
|
157
|
+
}
|
|
160
158
|
function readAiSearchAnswer(result) {
|
|
161
159
|
return (result.response ??
|
|
162
160
|
result.answer ??
|
package/dist/ai/runtime.d.ts
CHANGED
|
@@ -18,6 +18,8 @@ export interface CreateConfiguredAiProviderOptions {
|
|
|
18
18
|
config: Pick<SvedocsResolvedConfig, 'ai' | 'cloudflare'>;
|
|
19
19
|
env?: SvedocsAiRuntimeEnv;
|
|
20
20
|
provider?: string;
|
|
21
|
+
systemPrompt?: string;
|
|
22
|
+
maxResults?: number;
|
|
21
23
|
fetch?: typeof fetch;
|
|
22
24
|
}
|
|
23
25
|
export interface CreateConfiguredAskResponseOptions extends Omit<CreateAskResponseOptions, 'records'> {
|
package/dist/ai/runtime.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/ai/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,KAAK,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAG5F,OAAO,KAAK,EAAE,UAAU,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAGnG,MAAM,WAAW,mBAAmB;IAClC,iBAAiB,CAAC,EAAE,0BAA0B,GAAG,2BAA2B,GAAG,SAAS,CAAC;IACzF,EAAE,CAAC,EAAE,0BAA0B,GAAG,SAAS,CAAC;IAC5C,yBAAyB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,0BAA0B,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChD,uBAAuB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7C,6BAA6B,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnD,iCAAiC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvD,kCAAkC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxD,+BAA+B,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrD,qCAAqC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3D,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,iCAAiC;IAChD,MAAM,EAAE,IAAI,CAAC,qBAAqB,EAAE,IAAI,GAAG,YAAY,CAAC,CAAC;IACzD,GAAG,CAAC,EAAE,mBAAmB,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,MAAM,WAAW,kCAAmC,SAAQ,IAAI,CAAC,wBAAwB,EAAE,SAAS,CAAC;IACnG,GAAG,CAAC,EAAE,mBAAmB,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,iCAAiC,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/ai/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,KAAK,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAG5F,OAAO,KAAK,EAAE,UAAU,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAGnG,MAAM,WAAW,mBAAmB;IAClC,iBAAiB,CAAC,EAAE,0BAA0B,GAAG,2BAA2B,GAAG,SAAS,CAAC;IACzF,EAAE,CAAC,EAAE,0BAA0B,GAAG,SAAS,CAAC;IAC5C,yBAAyB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,0BAA0B,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChD,uBAAuB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7C,6BAA6B,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnD,iCAAiC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvD,kCAAkC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxD,+BAA+B,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrD,qCAAqC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3D,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,iCAAiC;IAChD,MAAM,EAAE,IAAI,CAAC,qBAAqB,EAAE,IAAI,GAAG,YAAY,CAAC,CAAC;IACzD,GAAG,CAAC,EAAE,mBAAmB,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,MAAM,WAAW,kCAAmC,SAAQ,IAAI,CAAC,wBAAwB,EAAE,SAAS,CAAC;IACnG,GAAG,CAAC,EAAE,mBAAmB,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,iCAAiC,GAAG,UAAU,CA6CjG;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,IAAI,CAAC,qBAAqB,EAAE,IAAI,GAAG,YAAY,CAAC,EACxD,OAAO,EAAE,mBAAmB,EAAE,EAC9B,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,kCAAuC,GAC/C,OAAO,CAAC,QAAQ,CAAC,CAkBnB"}
|
package/dist/ai/runtime.js
CHANGED
|
@@ -5,8 +5,8 @@ export function createConfiguredAiProvider(options) {
|
|
|
5
5
|
const provider = normalizeProviderName(options.provider ?? options.config.ai.provider);
|
|
6
6
|
if (!options.config.ai.enabled)
|
|
7
7
|
return createMockAiProvider();
|
|
8
|
-
const systemPrompt = options.config.ai.systemPrompt;
|
|
9
|
-
const maxResults = options.config.ai.maxResults;
|
|
8
|
+
const systemPrompt = options.systemPrompt ?? options.config.ai.systemPrompt;
|
|
9
|
+
const maxResults = options.maxResults ?? options.config.ai.maxResults;
|
|
10
10
|
if (provider === 'cloudflare-workers-ai') {
|
|
11
11
|
const ai = readWorkersAiBinding(options.env);
|
|
12
12
|
if (ai)
|
|
@@ -41,6 +41,7 @@ export function createConfiguredAiProvider(options) {
|
|
|
41
41
|
...(baseUrl ? { baseUrl } : {}),
|
|
42
42
|
...(typeof temperature === 'number' ? { temperature } : {}),
|
|
43
43
|
...(systemPrompt ? { systemPrompt } : {}),
|
|
44
|
+
...(typeof maxResults === 'number' ? { citationLimit: maxResults } : {}),
|
|
44
45
|
...(options.fetch ? { fetch: options.fetch } : {})
|
|
45
46
|
});
|
|
46
47
|
}
|
|
@@ -52,6 +53,8 @@ export function createConfiguredAskResponse(config, records, request, options =
|
|
|
52
53
|
const provider = createConfiguredAiProvider({
|
|
53
54
|
config,
|
|
54
55
|
...(options.provider ? { provider: options.provider } : {}),
|
|
56
|
+
...(options.systemPrompt ? { systemPrompt: options.systemPrompt } : {}),
|
|
57
|
+
...(typeof options.maxResults === 'number' ? { maxResults: options.maxResults } : {}),
|
|
55
58
|
...(options.env ? { env: options.env } : {}),
|
|
56
59
|
...(options.fetch ? { fetch: options.fetch } : {})
|
|
57
60
|
});
|
|
@@ -60,7 +63,9 @@ export function createConfiguredAskResponse(config, records, request, options =
|
|
|
60
63
|
...(typeof options.stream === 'boolean' ? { stream: options.stream } : {}),
|
|
61
64
|
...(options.scope ? { scope: options.scope } : {}),
|
|
62
65
|
...(options.rateLimiter ? { rateLimiter: options.rateLimiter } : {}),
|
|
63
|
-
...(options.rateLimitKey ? { rateLimitKey: options.rateLimitKey } : {})
|
|
66
|
+
...(options.rateLimitKey ? { rateLimitKey: options.rateLimitKey } : {}),
|
|
67
|
+
...(options.systemPrompt ? { systemPrompt: options.systemPrompt } : {}),
|
|
68
|
+
...(typeof options.maxResults === 'number' ? { maxResults: options.maxResults } : {})
|
|
64
69
|
});
|
|
65
70
|
}
|
|
66
71
|
function readCloudflareAiSearchBinding(env, config) {
|
package/dist/cloudflare.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { SvedocsResolvedConfig } from './core.js';
|
|
2
2
|
export type SvedocsBuildMode = 'edge' | 'static' | 'spa';
|
|
3
3
|
export type SvedocsPagePrerenderOption = true | false | 'auto';
|
|
4
|
+
export type SvedocsTrailingSlashOption = 'always' | 'never' | 'ignore';
|
|
4
5
|
export interface CloudflareBindingShape {
|
|
5
6
|
AI?: unknown;
|
|
6
7
|
SVEDOCS_AI_SEARCH?: unknown;
|
|
@@ -18,6 +19,7 @@ export declare function createCloudflarePreset(mode?: SvedocsBuildMode): Cloudfl
|
|
|
18
19
|
export declare function readSvedocsBuildMode(value?: string | undefined): SvedocsBuildMode;
|
|
19
20
|
export declare function svedocsSsr(mode?: SvedocsBuildMode): boolean;
|
|
20
21
|
export declare function svedocsPagePrerender(mode?: SvedocsBuildMode): SvedocsPagePrerenderOption;
|
|
22
|
+
export declare function svedocsTrailingSlash(mode?: SvedocsBuildMode): SvedocsTrailingSlashOption;
|
|
21
23
|
export declare function createWranglerJson(config: SvedocsResolvedConfig): Record<string, unknown>;
|
|
22
24
|
export declare function createWranglerJsonc(config: SvedocsResolvedConfig): string;
|
|
23
25
|
export declare function createWranglerToml(config: SvedocsResolvedConfig): string;
|
package/dist/cloudflare.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../src/cloudflare.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAEvD,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AACzD,MAAM,MAAM,0BAA0B,GAAG,IAAI,GAAG,KAAK,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../src/cloudflare.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAEvD,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AACzD,MAAM,MAAM,0BAA0B,GAAG,IAAI,GAAG,KAAK,GAAG,MAAM,CAAC;AAC/D,MAAM,MAAM,0BAA0B,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEvE,MAAM,WAAW,sBAAsB;IACrC,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,EAAE,8BAA8B,GAAG,0BAA0B,CAAC;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,sBAAsB,CAAC,IAAI,GAAE,gBAAyB,GAAG,qBAAqB,CAwB7F;AAED,wBAAgB,oBAAoB,CAAC,KAAK,qBAA4B,GAAG,gBAAgB,CAExF;AAED,wBAAgB,UAAU,CAAC,IAAI,mBAAyB,GAAG,OAAO,CAEjE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,mBAAyB,GAAG,0BAA0B,CAG9F;AAED,wBAAgB,oBAAoB,CAAC,IAAI,mBAAyB,GAAG,0BAA0B,CAE9F;AAMD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkCzF;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,CAEzE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,CAgCxE;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,CAe5E;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAG7E;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAE9E"}
|
package/dist/cloudflare.js
CHANGED
|
@@ -34,6 +34,9 @@ export function svedocsPagePrerender(mode = readSvedocsBuildMode()) {
|
|
|
34
34
|
return true;
|
|
35
35
|
return 'auto';
|
|
36
36
|
}
|
|
37
|
+
export function svedocsTrailingSlash(mode = readSvedocsBuildMode()) {
|
|
38
|
+
return mode === 'static' || mode === 'spa' ? 'always' : 'never';
|
|
39
|
+
}
|
|
37
40
|
function readSvedocsBuildModeEnv() {
|
|
38
41
|
return typeof process !== 'undefined' ? process.env.SVEDOCS_BUILD_MODE : undefined;
|
|
39
42
|
}
|
package/dist/config.d.ts
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import type { SvedocsResolvedConfig } from './core.js';
|
|
3
|
+
import type { SvedocsMessages, SvedocsSeoHead } from './core/types.js';
|
|
3
4
|
import type { OgTemplate } from './og/types.js';
|
|
4
5
|
export interface SvedocsNavItem {
|
|
5
6
|
label: string;
|
|
7
|
+
labelKey?: string;
|
|
6
8
|
href: string;
|
|
7
9
|
external?: boolean;
|
|
8
10
|
}
|
|
9
11
|
export interface SvedocsThemeBrand {
|
|
10
12
|
label?: string;
|
|
13
|
+
labelKey?: string;
|
|
11
14
|
href?: string;
|
|
12
15
|
logo?: string;
|
|
13
16
|
mark?: 'pixel' | false;
|
|
@@ -35,15 +38,18 @@ export interface SvedocsShikiOptions {
|
|
|
35
38
|
}
|
|
36
39
|
export interface SvedocsThemeHomeAction {
|
|
37
40
|
label: string;
|
|
41
|
+
labelKey?: string;
|
|
38
42
|
href: string;
|
|
39
43
|
}
|
|
40
44
|
export interface SvedocsThemeHomeVisual {
|
|
41
45
|
type?: 'pixel' | 'image';
|
|
42
46
|
src?: string;
|
|
43
47
|
alt?: string;
|
|
48
|
+
altKey?: string;
|
|
44
49
|
}
|
|
45
50
|
export interface SvedocsThemeHome {
|
|
46
51
|
kicker?: string;
|
|
52
|
+
kickerKey?: string;
|
|
47
53
|
primaryAction?: SvedocsThemeHomeAction;
|
|
48
54
|
secondaryAction?: SvedocsThemeHomeAction;
|
|
49
55
|
visual?: SvedocsThemeHomeVisual;
|
|
@@ -108,6 +114,7 @@ export interface SvedocsConfig {
|
|
|
108
114
|
sitemap?: boolean;
|
|
109
115
|
robots?: boolean;
|
|
110
116
|
defaultAuthor?: string;
|
|
117
|
+
head?: SvedocsSeoHead;
|
|
111
118
|
ogImage?: false | {
|
|
112
119
|
template?: 'default' | string | OgTemplate;
|
|
113
120
|
format?: 'svg' | 'png';
|
|
@@ -138,8 +145,11 @@ export interface SvedocsConfig {
|
|
|
138
145
|
code: string;
|
|
139
146
|
label?: string;
|
|
140
147
|
path?: string;
|
|
148
|
+
hreflang?: string;
|
|
149
|
+
dir?: 'ltr' | 'rtl';
|
|
141
150
|
}>;
|
|
142
151
|
prefixDefaultLocale?: boolean;
|
|
152
|
+
messages?: Record<string, Partial<SvedocsMessages>>;
|
|
143
153
|
};
|
|
144
154
|
}
|
|
145
155
|
export type { SvedocsResolvedConfig };
|
|
@@ -191,17 +201,20 @@ export declare const svedocsConfigSchema: z.ZodObject<{
|
|
|
191
201
|
}, z.core.$strip>>;
|
|
192
202
|
brand: z.ZodOptional<z.ZodObject<{
|
|
193
203
|
label: z.ZodOptional<z.ZodString>;
|
|
204
|
+
labelKey: z.ZodOptional<z.ZodString>;
|
|
194
205
|
href: z.ZodOptional<z.ZodString>;
|
|
195
206
|
logo: z.ZodOptional<z.ZodString>;
|
|
196
207
|
mark: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"pixel">, z.ZodLiteral<false>]>>;
|
|
197
208
|
}, z.core.$strip>>;
|
|
198
209
|
nav: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
199
210
|
label: z.ZodString;
|
|
211
|
+
labelKey: z.ZodOptional<z.ZodString>;
|
|
200
212
|
href: z.ZodString;
|
|
201
213
|
external: z.ZodOptional<z.ZodBoolean>;
|
|
202
214
|
}, z.core.$strip>>>;
|
|
203
215
|
social: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
204
216
|
label: z.ZodString;
|
|
217
|
+
labelKey: z.ZodOptional<z.ZodString>;
|
|
205
218
|
href: z.ZodString;
|
|
206
219
|
external: z.ZodOptional<z.ZodBoolean>;
|
|
207
220
|
}, z.core.$strip>>>;
|
|
@@ -209,18 +222,22 @@ export declare const svedocsConfigSchema: z.ZodObject<{
|
|
|
209
222
|
text: z.ZodOptional<z.ZodString>;
|
|
210
223
|
links: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
211
224
|
label: z.ZodString;
|
|
225
|
+
labelKey: z.ZodOptional<z.ZodString>;
|
|
212
226
|
href: z.ZodString;
|
|
213
227
|
external: z.ZodOptional<z.ZodBoolean>;
|
|
214
228
|
}, z.core.$strip>>>;
|
|
215
229
|
}, z.core.$strip>]>>;
|
|
216
230
|
home: z.ZodOptional<z.ZodObject<{
|
|
217
231
|
kicker: z.ZodOptional<z.ZodString>;
|
|
232
|
+
kickerKey: z.ZodOptional<z.ZodString>;
|
|
218
233
|
primaryAction: z.ZodOptional<z.ZodObject<{
|
|
219
234
|
label: z.ZodString;
|
|
235
|
+
labelKey: z.ZodOptional<z.ZodString>;
|
|
220
236
|
href: z.ZodString;
|
|
221
237
|
}, z.core.$strip>>;
|
|
222
238
|
secondaryAction: z.ZodOptional<z.ZodObject<{
|
|
223
239
|
label: z.ZodString;
|
|
240
|
+
labelKey: z.ZodOptional<z.ZodString>;
|
|
224
241
|
href: z.ZodString;
|
|
225
242
|
}, z.core.$strip>>;
|
|
226
243
|
visual: z.ZodOptional<z.ZodObject<{
|
|
@@ -230,6 +247,7 @@ export declare const svedocsConfigSchema: z.ZodObject<{
|
|
|
230
247
|
}>>;
|
|
231
248
|
src: z.ZodOptional<z.ZodString>;
|
|
232
249
|
alt: z.ZodOptional<z.ZodString>;
|
|
250
|
+
altKey: z.ZodOptional<z.ZodString>;
|
|
233
251
|
}, z.core.$strip>>;
|
|
234
252
|
}, z.core.$strip>>;
|
|
235
253
|
}, z.core.$strip>>;
|
|
@@ -266,6 +284,29 @@ export declare const svedocsConfigSchema: z.ZodObject<{
|
|
|
266
284
|
sitemap: z.ZodOptional<z.ZodBoolean>;
|
|
267
285
|
robots: z.ZodOptional<z.ZodBoolean>;
|
|
268
286
|
defaultAuthor: z.ZodOptional<z.ZodString>;
|
|
287
|
+
head: z.ZodOptional<z.ZodObject<{
|
|
288
|
+
meta: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
289
|
+
name: z.ZodOptional<z.ZodString>;
|
|
290
|
+
property: z.ZodOptional<z.ZodString>;
|
|
291
|
+
httpEquiv: z.ZodOptional<z.ZodString>;
|
|
292
|
+
itemprop: z.ZodOptional<z.ZodString>;
|
|
293
|
+
content: z.ZodString;
|
|
294
|
+
}, z.core.$strip>>>;
|
|
295
|
+
links: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
296
|
+
rel: z.ZodString;
|
|
297
|
+
href: z.ZodString;
|
|
298
|
+
hreflang: z.ZodOptional<z.ZodString>;
|
|
299
|
+
type: z.ZodOptional<z.ZodString>;
|
|
300
|
+
media: z.ZodOptional<z.ZodString>;
|
|
301
|
+
title: z.ZodOptional<z.ZodString>;
|
|
302
|
+
sizes: z.ZodOptional<z.ZodString>;
|
|
303
|
+
as: z.ZodOptional<z.ZodString>;
|
|
304
|
+
crossorigin: z.ZodOptional<z.ZodString>;
|
|
305
|
+
}, z.core.$strip>>>;
|
|
306
|
+
jsonLd: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
307
|
+
jsonld: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
308
|
+
'json-ld': z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
309
|
+
}, z.core.$strip>>;
|
|
269
310
|
ogImage: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodObject<{
|
|
270
311
|
template: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodCustom<OgTemplate, OgTemplate>]>>;
|
|
271
312
|
format: z.ZodOptional<z.ZodEnum<{
|
|
@@ -302,8 +343,14 @@ export declare const svedocsConfigSchema: z.ZodObject<{
|
|
|
302
343
|
code: z.ZodString;
|
|
303
344
|
label: z.ZodOptional<z.ZodString>;
|
|
304
345
|
path: z.ZodOptional<z.ZodString>;
|
|
346
|
+
hreflang: z.ZodOptional<z.ZodString>;
|
|
347
|
+
dir: z.ZodOptional<z.ZodEnum<{
|
|
348
|
+
ltr: "ltr";
|
|
349
|
+
rtl: "rtl";
|
|
350
|
+
}>>;
|
|
305
351
|
}, z.core.$strip>]>>>;
|
|
306
352
|
prefixDefaultLocale: z.ZodOptional<z.ZodBoolean>;
|
|
353
|
+
messages: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>>>;
|
|
307
354
|
}, z.core.$strip>]>>;
|
|
308
355
|
}, z.core.$strip>;
|
|
309
356
|
export declare function defineConfig(config: SvedocsConfig): SvedocsConfig;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/config.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { access } from 'node:fs/promises';
|
|
1
2
|
import { pathToFileURL } from 'node:url';
|
|
2
3
|
import { z } from 'zod';
|
|
3
4
|
import { resolveSvedocsConfig } from './core.js';
|
|
@@ -60,6 +61,7 @@ export const svedocsConfigSchema = z.object({
|
|
|
60
61
|
brand: z
|
|
61
62
|
.object({
|
|
62
63
|
label: z.string().optional(),
|
|
64
|
+
labelKey: z.string().optional(),
|
|
63
65
|
href: z.string().optional(),
|
|
64
66
|
logo: z.string().optional(),
|
|
65
67
|
mark: z.union([z.literal('pixel'), z.literal(false)]).optional()
|
|
@@ -68,6 +70,7 @@ export const svedocsConfigSchema = z.object({
|
|
|
68
70
|
nav: z
|
|
69
71
|
.array(z.object({
|
|
70
72
|
label: z.string(),
|
|
73
|
+
labelKey: z.string().optional(),
|
|
71
74
|
href: z.string(),
|
|
72
75
|
external: z.boolean().optional()
|
|
73
76
|
}))
|
|
@@ -75,6 +78,7 @@ export const svedocsConfigSchema = z.object({
|
|
|
75
78
|
social: z
|
|
76
79
|
.array(z.object({
|
|
77
80
|
label: z.string(),
|
|
81
|
+
labelKey: z.string().optional(),
|
|
78
82
|
href: z.string(),
|
|
79
83
|
external: z.boolean().optional()
|
|
80
84
|
}))
|
|
@@ -87,6 +91,7 @@ export const svedocsConfigSchema = z.object({
|
|
|
87
91
|
links: z
|
|
88
92
|
.array(z.object({
|
|
89
93
|
label: z.string(),
|
|
94
|
+
labelKey: z.string().optional(),
|
|
90
95
|
href: z.string(),
|
|
91
96
|
external: z.boolean().optional()
|
|
92
97
|
}))
|
|
@@ -97,15 +102,18 @@ export const svedocsConfigSchema = z.object({
|
|
|
97
102
|
home: z
|
|
98
103
|
.object({
|
|
99
104
|
kicker: z.string().optional(),
|
|
105
|
+
kickerKey: z.string().optional(),
|
|
100
106
|
primaryAction: z
|
|
101
107
|
.object({
|
|
102
108
|
label: z.string(),
|
|
109
|
+
labelKey: z.string().optional(),
|
|
103
110
|
href: z.string()
|
|
104
111
|
})
|
|
105
112
|
.optional(),
|
|
106
113
|
secondaryAction: z
|
|
107
114
|
.object({
|
|
108
115
|
label: z.string(),
|
|
116
|
+
labelKey: z.string().optional(),
|
|
109
117
|
href: z.string()
|
|
110
118
|
})
|
|
111
119
|
.optional(),
|
|
@@ -113,7 +121,8 @@ export const svedocsConfigSchema = z.object({
|
|
|
113
121
|
.object({
|
|
114
122
|
type: z.enum(['pixel', 'image']).optional(),
|
|
115
123
|
src: z.string().optional(),
|
|
116
|
-
alt: z.string().optional()
|
|
124
|
+
alt: z.string().optional(),
|
|
125
|
+
altKey: z.string().optional()
|
|
117
126
|
})
|
|
118
127
|
.optional()
|
|
119
128
|
})
|
|
@@ -162,6 +171,35 @@ export const svedocsConfigSchema = z.object({
|
|
|
162
171
|
sitemap: z.boolean().optional(),
|
|
163
172
|
robots: z.boolean().optional(),
|
|
164
173
|
defaultAuthor: z.string().optional(),
|
|
174
|
+
head: z
|
|
175
|
+
.object({
|
|
176
|
+
meta: z
|
|
177
|
+
.array(z.object({
|
|
178
|
+
name: z.string().optional(),
|
|
179
|
+
property: z.string().optional(),
|
|
180
|
+
httpEquiv: z.string().optional(),
|
|
181
|
+
itemprop: z.string().optional(),
|
|
182
|
+
content: z.string()
|
|
183
|
+
}))
|
|
184
|
+
.optional(),
|
|
185
|
+
links: z
|
|
186
|
+
.array(z.object({
|
|
187
|
+
rel: z.string(),
|
|
188
|
+
href: z.string(),
|
|
189
|
+
hreflang: z.string().optional(),
|
|
190
|
+
type: z.string().optional(),
|
|
191
|
+
media: z.string().optional(),
|
|
192
|
+
title: z.string().optional(),
|
|
193
|
+
sizes: z.string().optional(),
|
|
194
|
+
as: z.string().optional(),
|
|
195
|
+
crossorigin: z.string().optional()
|
|
196
|
+
}))
|
|
197
|
+
.optional(),
|
|
198
|
+
jsonLd: z.array(z.record(z.string(), z.unknown())).optional(),
|
|
199
|
+
jsonld: z.array(z.record(z.string(), z.unknown())).optional(),
|
|
200
|
+
'json-ld': z.array(z.record(z.string(), z.unknown())).optional()
|
|
201
|
+
})
|
|
202
|
+
.optional(),
|
|
165
203
|
ogImage: z
|
|
166
204
|
.union([
|
|
167
205
|
z.literal(false),
|
|
@@ -211,11 +249,14 @@ export const svedocsConfigSchema = z.object({
|
|
|
211
249
|
z.object({
|
|
212
250
|
code: z.string(),
|
|
213
251
|
label: z.string().optional(),
|
|
214
|
-
path: z.string().optional()
|
|
252
|
+
path: z.string().optional(),
|
|
253
|
+
hreflang: z.string().optional(),
|
|
254
|
+
dir: z.enum(['ltr', 'rtl']).optional()
|
|
215
255
|
})
|
|
216
256
|
]))
|
|
217
257
|
.optional(),
|
|
218
|
-
prefixDefaultLocale: z.boolean().optional()
|
|
258
|
+
prefixDefaultLocale: z.boolean().optional(),
|
|
259
|
+
messages: z.record(z.string(), z.record(z.string(), z.string())).optional()
|
|
219
260
|
})
|
|
220
261
|
])
|
|
221
262
|
.optional()
|
|
@@ -227,18 +268,21 @@ export function loadSvedocsConfig(config = {}) {
|
|
|
227
268
|
return resolveSvedocsConfig(validateSvedocsConfig(config));
|
|
228
269
|
}
|
|
229
270
|
export function validateSvedocsConfig(config) {
|
|
230
|
-
|
|
271
|
+
const validated = svedocsConfigSchema.parse(config);
|
|
272
|
+
resolveSvedocsConfig(validated);
|
|
273
|
+
return validated;
|
|
231
274
|
}
|
|
232
275
|
export async function loadSvedocsConfigFile(configFile, fallback = {}) {
|
|
233
276
|
try {
|
|
234
|
-
|
|
235
|
-
return loadSvedocsConfig((module.default ?? module.config ?? fallback));
|
|
277
|
+
await access(configFile);
|
|
236
278
|
}
|
|
237
279
|
catch (error) {
|
|
238
280
|
const code = typeof error === 'object' && error && 'code' in error ? error.code : undefined;
|
|
239
|
-
if (code === '
|
|
281
|
+
if (code === 'ENOENT' || code === 'ENOTDIR') {
|
|
240
282
|
return loadSvedocsConfig(fallback);
|
|
241
283
|
}
|
|
242
284
|
throw error;
|
|
243
285
|
}
|
|
286
|
+
const module = await import(pathToFileURL(configFile).href);
|
|
287
|
+
return loadSvedocsConfig((module.default ?? module.config ?? fallback));
|
|
244
288
|
}
|
package/dist/core/checks.js
CHANGED
|
@@ -68,9 +68,9 @@ function createMissingTranslationIssues(manifest) {
|
|
|
68
68
|
return [];
|
|
69
69
|
const groups = new Map();
|
|
70
70
|
for (const page of manifest.pages) {
|
|
71
|
-
if (page.hidden
|
|
71
|
+
if (page.hidden)
|
|
72
72
|
continue;
|
|
73
|
-
const key = page.scopePath
|
|
73
|
+
const key = `${page.kind}:${page.scopePath}`;
|
|
74
74
|
const group = groups.get(key) ?? [];
|
|
75
75
|
group.push(page);
|
|
76
76
|
groups.set(key, group);
|
package/dist/core/config.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { SvedocsConfig } from '../config.js';
|
|
2
2
|
import type { SvedocsResolvedConfig } from './types.js';
|
|
3
|
+
export { defaultSvedocsMessages } from './i18n.js';
|
|
3
4
|
export declare function resolveSvedocsConfig(config?: SvedocsConfig): SvedocsResolvedConfig;
|
|
4
5
|
export declare function isResolvedConfig(config: SvedocsConfig | SvedocsResolvedConfig | undefined): config is SvedocsResolvedConfig;
|
|
5
6
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAEnD,wBAAgB,oBAAoB,CAAC,MAAM,GAAE,aAAkB,GAAG,qBAAqB,CA4ItF;AAeD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,qBAAqB,GAAG,SAAS,GAAG,MAAM,IAAI,qBAAqB,CAY3H"}
|