1- import { defineConfig , type HeadConfig } from 'vitepress'
1+ import { defineConfig , type DefaultTheme , type HeadConfig } from 'vitepress'
2+ import llmstxt from 'vitepress-plugin-llms'
23
34const 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+
586const 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 © 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