Skip to content

Commit 67909b0

Browse files
authored
Merge pull request #29 from EFNext/feat/llm-docs
Add vitepress-plugin-llms as a dev dependency
2 parents a28453c + ca687c1 commit 67909b0

3 files changed

Lines changed: 1368 additions & 108 deletions

File tree

docs/.vitepress/config.mts

Lines changed: 98 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,88 @@
1-
import {defineConfig, type HeadConfig} from 'vitepress'
1+
import {defineConfig, type DefaultTheme, type HeadConfig} from 'vitepress'
2+
import llmstxt from 'vitepress-plugin-llms'
23

34
const base = '/ExpressiveSharp/'
45

6+
const sidebar: DefaultTheme.Sidebar = {
7+
'/guide/': [
8+
{
9+
text: 'Getting Started',
10+
items: [
11+
{ text: 'Introduction', link: '/guide/introduction' },
12+
{ text: 'The Expression Tree Problem', link: '/guide/expression-tree-problem' },
13+
{ text: 'Quick Start', link: '/guide/quickstart' },
14+
]
15+
},
16+
{
17+
text: 'Core APIs',
18+
items: [
19+
{ text: '[Expressive] Properties', link: '/guide/expressive-properties' },
20+
{ text: '[Expressive] Methods', link: '/guide/expressive-methods' },
21+
{ text: 'Extension Members', link: '/guide/extension-members' },
22+
{ text: 'Constructor Projections', link: '/guide/expressive-constructors' },
23+
{ text: 'ExpressionPolyfill.Create', link: '/guide/expression-polyfill' },
24+
{ text: 'IExpressiveQueryable<T>', link: '/guide/expressive-queryable' },
25+
{ text: 'EF Core Integration', link: '/guide/ef-core-integration' },
26+
]
27+
},
28+
{
29+
text: 'Extensions',
30+
items: [
31+
{ text: 'Window Functions (SQL)', link: '/guide/window-functions' },
32+
]
33+
},
34+
{
35+
text: 'Migration',
36+
items: [
37+
{ text: 'Migrating from Projectables', link: '/guide/migration-from-projectables' },
38+
]
39+
}
40+
],
41+
'/reference/': [
42+
{
43+
text: 'Reference',
44+
items: [
45+
{ text: '[Expressive] Attribute', link: '/reference/expressive-attribute' },
46+
{ text: '[ExpressiveFor] Mapping', link: '/reference/expressive-for' },
47+
{ text: 'Null-Conditional Rewrite', link: '/reference/null-conditional-rewrite' },
48+
{ text: 'Pattern Matching', link: '/reference/pattern-matching' },
49+
{ text: 'Switch Expressions', link: '/reference/switch-expressions' },
50+
{ text: 'Expression Transformers', link: '/reference/expression-transformers' },
51+
{ text: 'Diagnostics & Code Fixes', link: '/reference/diagnostics' },
52+
{ text: 'Troubleshooting', link: '/reference/troubleshooting' },
53+
]
54+
}
55+
],
56+
'/advanced/': [
57+
{
58+
text: 'Advanced',
59+
items: [
60+
{ text: 'How It Works', link: '/advanced/how-it-works' },
61+
{ text: 'IOperation to Expression Mapping', link: '/advanced/ioperation-mapping' },
62+
{ text: 'Block-Bodied Members', link: '/advanced/block-bodied-members' },
63+
{ text: 'Custom Transformers', link: '/advanced/custom-transformers' },
64+
{ text: 'Testing Strategy', link: '/advanced/testing-strategy' },
65+
{ text: 'Limitations', link: '/advanced/limitations' },
66+
]
67+
}
68+
],
69+
'/recipes/': [
70+
{
71+
text: 'Recipes',
72+
items: [
73+
{ text: 'Computed Entity Properties', link: '/recipes/computed-properties' },
74+
{ text: 'DTO Projections with Constructors', link: '/recipes/dto-projections' },
75+
{ text: 'Scoring & Classification', link: '/recipes/scoring-classification' },
76+
{ text: 'Nullable Navigation Properties', link: '/recipes/nullable-navigation' },
77+
{ text: 'Reusable Query Filters', link: '/recipes/reusable-query-filters' },
78+
{ text: 'External Member Mapping', link: '/recipes/external-member-mapping' },
79+
{ text: 'Modern Syntax in LINQ Chains', link: '/recipes/modern-syntax-in-linq' },
80+
{ text: 'Window Functions & Ranking', link: '/recipes/window-functions-ranking' },
81+
]
82+
}
83+
],
84+
}
85+
586
const umamiScript: HeadConfig = ["script", {
687
defer: "true",
788
src: "https://cloud.umami.is/script.js",
@@ -34,85 +115,7 @@ export default defineConfig({
34115
{ text: 'Benchmarks', link: 'https://efnext.github.io/ExpressiveSharp/dev/bench/' },
35116
],
36117

37-
sidebar: {
38-
'/guide/': [
39-
{
40-
text: 'Getting Started',
41-
items: [
42-
{ text: 'Introduction', link: '/guide/introduction' },
43-
{ text: 'The Expression Tree Problem', link: '/guide/expression-tree-problem' },
44-
{ text: 'Quick Start', link: '/guide/quickstart' },
45-
]
46-
},
47-
{
48-
text: 'Core APIs',
49-
items: [
50-
{ text: '[Expressive] Properties', link: '/guide/expressive-properties' },
51-
{ text: '[Expressive] Methods', link: '/guide/expressive-methods' },
52-
{ text: 'Extension Members', link: '/guide/extension-members' },
53-
{ text: 'Constructor Projections', link: '/guide/expressive-constructors' },
54-
{ text: 'ExpressionPolyfill.Create', link: '/guide/expression-polyfill' },
55-
{ text: 'IExpressiveQueryable<T>', link: '/guide/expressive-queryable' },
56-
{ text: 'EF Core Integration', link: '/guide/ef-core-integration' },
57-
]
58-
},
59-
{
60-
text: 'Extensions',
61-
items: [
62-
{ text: 'Window Functions (SQL)', link: '/guide/window-functions' },
63-
]
64-
},
65-
{
66-
text: 'Migration',
67-
items: [
68-
{ text: 'Migrating from Projectables', link: '/guide/migration-from-projectables' },
69-
]
70-
}
71-
],
72-
'/reference/': [
73-
{
74-
text: 'Reference',
75-
items: [
76-
{ text: '[Expressive] Attribute', link: '/reference/expressive-attribute' },
77-
{ text: '[ExpressiveFor] Mapping', link: '/reference/expressive-for' },
78-
{ text: 'Null-Conditional Rewrite', link: '/reference/null-conditional-rewrite' },
79-
{ text: 'Pattern Matching', link: '/reference/pattern-matching' },
80-
{ text: 'Switch Expressions', link: '/reference/switch-expressions' },
81-
{ text: 'Expression Transformers', link: '/reference/expression-transformers' },
82-
{ text: 'Diagnostics & Code Fixes', link: '/reference/diagnostics' },
83-
{ text: 'Troubleshooting', link: '/reference/troubleshooting' },
84-
]
85-
}
86-
],
87-
'/advanced/': [
88-
{
89-
text: 'Advanced',
90-
items: [
91-
{ text: 'How It Works', link: '/advanced/how-it-works' },
92-
{ text: 'IOperation to Expression Mapping', link: '/advanced/ioperation-mapping' },
93-
{ text: 'Block-Bodied Members', link: '/advanced/block-bodied-members' },
94-
{ text: 'Custom Transformers', link: '/advanced/custom-transformers' },
95-
{ text: 'Testing Strategy', link: '/advanced/testing-strategy' },
96-
{ text: 'Limitations', link: '/advanced/limitations' },
97-
]
98-
}
99-
],
100-
'/recipes/': [
101-
{
102-
text: 'Recipes',
103-
items: [
104-
{ text: 'Computed Entity Properties', link: '/recipes/computed-properties' },
105-
{ text: 'DTO Projections with Constructors', link: '/recipes/dto-projections' },
106-
{ text: 'Scoring & Classification', link: '/recipes/scoring-classification' },
107-
{ text: 'Nullable Navigation Properties', link: '/recipes/nullable-navigation' },
108-
{ text: 'Reusable Query Filters', link: '/recipes/reusable-query-filters' },
109-
{ text: 'External Member Mapping', link: '/recipes/external-member-mapping' },
110-
{ text: 'Modern Syntax in LINQ Chains', link: '/recipes/modern-syntax-in-linq' },
111-
{ text: 'Window Functions & Ranking', link: '/recipes/window-functions-ranking' },
112-
]
113-
}
114-
],
115-
},
118+
sidebar,
116119

117120
socialLinks: [
118121
{ icon: 'github', link: 'https://github.com/EFNext/ExpressiveSharp' }
@@ -126,5 +129,19 @@ export default defineConfig({
126129
message: 'Released under the MIT License.',
127130
copyright: 'Copyright &copy; ExpressiveSharp Contributors'
128131
}
129-
}
132+
},
133+
vite: {
134+
plugins: [
135+
llmstxt({
136+
domain: 'https://efnext.github.io',
137+
description: 'Modern C# syntax in LINQ expression trees — source-generated at compile time',
138+
details:
139+
'ExpressiveSharp is a Roslyn source generator that enables modern C# syntax ' +
140+
'(null-conditional ?., switch expressions, pattern matching) inside LINQ expression trees. ' +
141+
'It emits Expression<TDelegate> factory code at compile time from [Expressive]-decorated ' +
142+
'members and integrates with EF Core, MongoDB, and any IQueryable provider.',
143+
sidebar,
144+
}),
145+
],
146+
},
130147
})

0 commit comments

Comments
 (0)