@useavalon/avalon 0.1.0

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 (159) hide show
  1. package/README.md +54 -0
  2. package/mod.ts +301 -0
  3. package/package.json +85 -0
  4. package/src/build/README.md +310 -0
  5. package/src/build/integration-bundler-plugin.ts +116 -0
  6. package/src/build/integration-config.ts +168 -0
  7. package/src/build/integration-detection-plugin.ts +117 -0
  8. package/src/build/integration-resolver-plugin.ts +90 -0
  9. package/src/build/island-manifest.ts +269 -0
  10. package/src/build/island-types-generator.ts +476 -0
  11. package/src/build/mdx-island-transform.ts +464 -0
  12. package/src/build/mdx-plugin.ts +98 -0
  13. package/src/build/page-island-transform.ts +598 -0
  14. package/src/build/prop-extractors/index.ts +21 -0
  15. package/src/build/prop-extractors/lit.ts +140 -0
  16. package/src/build/prop-extractors/qwik.ts +16 -0
  17. package/src/build/prop-extractors/solid.ts +125 -0
  18. package/src/build/prop-extractors/svelte.ts +194 -0
  19. package/src/build/prop-extractors/vue.ts +111 -0
  20. package/src/build/sidecar-file-manager.ts +104 -0
  21. package/src/build/sidecar-renderer.ts +30 -0
  22. package/src/client/adapters/index.ts +13 -0
  23. package/src/client/adapters/lit-adapter.ts +654 -0
  24. package/src/client/adapters/preact-adapter.ts +331 -0
  25. package/src/client/adapters/qwik-adapter.ts +345 -0
  26. package/src/client/adapters/react-adapter.ts +353 -0
  27. package/src/client/adapters/solid-adapter.ts +451 -0
  28. package/src/client/adapters/svelte-adapter.ts +524 -0
  29. package/src/client/adapters/vue-adapter.ts +467 -0
  30. package/src/client/components.ts +35 -0
  31. package/src/client/css-hmr-handler.ts +344 -0
  32. package/src/client/framework-adapter.ts +462 -0
  33. package/src/client/hmr-coordinator.ts +396 -0
  34. package/src/client/hmr-error-overlay.js +533 -0
  35. package/src/client/main.js +816 -0
  36. package/src/client/tests/css-hmr-handler.test.ts +360 -0
  37. package/src/client/tests/framework-adapter.test.ts +519 -0
  38. package/src/client/tests/hmr-coordinator.test.ts +176 -0
  39. package/src/client/tests/hydration-option-parsing.test.ts +107 -0
  40. package/src/client/tests/lit-adapter.test.ts +427 -0
  41. package/src/client/tests/preact-adapter.test.ts +353 -0
  42. package/src/client/tests/qwik-adapter.test.ts +343 -0
  43. package/src/client/tests/react-adapter.test.ts +317 -0
  44. package/src/client/tests/solid-adapter.test.ts +396 -0
  45. package/src/client/tests/svelte-adapter.test.ts +387 -0
  46. package/src/client/tests/vue-adapter.test.ts +407 -0
  47. package/src/client/types/framework-runtime.d.ts +68 -0
  48. package/src/client/types/vite-hmr.d.ts +46 -0
  49. package/src/client/types/vite-virtual-modules.d.ts +60 -0
  50. package/src/components/Image.tsx +123 -0
  51. package/src/components/IslandErrorBoundary.tsx +145 -0
  52. package/src/components/LayoutDataErrorBoundary.tsx +141 -0
  53. package/src/components/LayoutErrorBoundary.tsx +127 -0
  54. package/src/components/PersistentIsland.tsx +52 -0
  55. package/src/components/StreamingErrorBoundary.tsx +233 -0
  56. package/src/components/StreamingLayout.tsx +538 -0
  57. package/src/components/tests/component-analyzer.test.ts +96 -0
  58. package/src/components/tests/component-detection.test.ts +347 -0
  59. package/src/components/tests/persistent-islands.test.ts +398 -0
  60. package/src/core/components/component-analyzer.ts +192 -0
  61. package/src/core/components/component-detection.ts +508 -0
  62. package/src/core/components/enhanced-framework-detector.ts +500 -0
  63. package/src/core/components/framework-registry.ts +563 -0
  64. package/src/core/components/tests/enhanced-framework-detector.test.ts +577 -0
  65. package/src/core/components/tests/framework-registry.test.ts +465 -0
  66. package/src/core/content/mdx-processor.ts +46 -0
  67. package/src/core/integrations/README.md +282 -0
  68. package/src/core/integrations/index.ts +19 -0
  69. package/src/core/integrations/loader.ts +125 -0
  70. package/src/core/integrations/registry.ts +195 -0
  71. package/src/core/islands/island-persistence.ts +325 -0
  72. package/src/core/islands/island-state-serializer.ts +258 -0
  73. package/src/core/islands/persistent-island-context.tsx +80 -0
  74. package/src/core/islands/use-persistent-state.ts +68 -0
  75. package/src/core/layout/enhanced-layout-resolver.ts +322 -0
  76. package/src/core/layout/layout-cache-manager.ts +485 -0
  77. package/src/core/layout/layout-composer.ts +357 -0
  78. package/src/core/layout/layout-data-loader.ts +516 -0
  79. package/src/core/layout/layout-discovery.ts +243 -0
  80. package/src/core/layout/layout-matcher.ts +299 -0
  81. package/src/core/layout/layout-types.ts +110 -0
  82. package/src/core/layout/tests/enhanced-layout-resolver.test.ts +477 -0
  83. package/src/core/layout/tests/layout-cache-optimization.test.ts +149 -0
  84. package/src/core/layout/tests/layout-composer.test.ts +486 -0
  85. package/src/core/layout/tests/layout-data-loader.test.ts +443 -0
  86. package/src/core/layout/tests/layout-discovery.test.ts +253 -0
  87. package/src/core/layout/tests/layout-matcher.test.ts +480 -0
  88. package/src/core/modules/framework-module-resolver.ts +273 -0
  89. package/src/core/modules/tests/framework-module-resolver.test.ts +263 -0
  90. package/src/core/modules/tests/module-resolution-integration.test.ts +117 -0
  91. package/src/islands/component-analysis.ts +213 -0
  92. package/src/islands/css-utils.ts +565 -0
  93. package/src/islands/discovery/index.ts +80 -0
  94. package/src/islands/discovery/registry.ts +340 -0
  95. package/src/islands/discovery/resolver.ts +477 -0
  96. package/src/islands/discovery/scanner.ts +386 -0
  97. package/src/islands/discovery/tests/island-discovery.test.ts +881 -0
  98. package/src/islands/discovery/types.ts +117 -0
  99. package/src/islands/discovery/validator.ts +544 -0
  100. package/src/islands/discovery/watcher.ts +368 -0
  101. package/src/islands/framework-detection.ts +428 -0
  102. package/src/islands/integration-loader.ts +490 -0
  103. package/src/islands/island.tsx +565 -0
  104. package/src/islands/render-cache.ts +550 -0
  105. package/src/islands/types.ts +80 -0
  106. package/src/islands/universal-css-collector.ts +157 -0
  107. package/src/islands/universal-head-collector.ts +137 -0
  108. package/src/layout-system.d.ts +592 -0
  109. package/src/layout-system.ts +218 -0
  110. package/src/middleware/__tests__/discovery.test.ts +107 -0
  111. package/src/middleware/discovery.ts +268 -0
  112. package/src/middleware/executor.ts +315 -0
  113. package/src/middleware/index.ts +76 -0
  114. package/src/middleware/types.ts +99 -0
  115. package/src/nitro/build-config.ts +576 -0
  116. package/src/nitro/config.ts +483 -0
  117. package/src/nitro/error-handler.ts +636 -0
  118. package/src/nitro/index.ts +173 -0
  119. package/src/nitro/island-manifest.ts +584 -0
  120. package/src/nitro/middleware-adapter.ts +260 -0
  121. package/src/nitro/renderer.ts +1458 -0
  122. package/src/nitro/route-discovery.ts +439 -0
  123. package/src/nitro/types.ts +321 -0
  124. package/src/render/collect-css.ts +198 -0
  125. package/src/render/error-pages.ts +79 -0
  126. package/src/render/isolated-ssr-renderer.ts +654 -0
  127. package/src/render/ssr.ts +1030 -0
  128. package/src/schemas/api.ts +30 -0
  129. package/src/schemas/core.ts +64 -0
  130. package/src/schemas/index.ts +212 -0
  131. package/src/schemas/layout.ts +279 -0
  132. package/src/schemas/routing/index.ts +38 -0
  133. package/src/schemas/routing.ts +376 -0
  134. package/src/types/as-island.ts +20 -0
  135. package/src/types/image.d.ts +106 -0
  136. package/src/types/index.d.ts +22 -0
  137. package/src/types/island-jsx.d.ts +33 -0
  138. package/src/types/island-prop.d.ts +20 -0
  139. package/src/types/layout.ts +285 -0
  140. package/src/types/mdx.d.ts +6 -0
  141. package/src/types/routing.ts +555 -0
  142. package/src/types/tests/layout-types.test.ts +197 -0
  143. package/src/types/types.ts +5 -0
  144. package/src/types/urlpattern.d.ts +49 -0
  145. package/src/types/vite-env.d.ts +11 -0
  146. package/src/utils/dev-logger.ts +299 -0
  147. package/src/utils/fs.ts +151 -0
  148. package/src/vite-plugin/auto-discover.ts +551 -0
  149. package/src/vite-plugin/config.ts +266 -0
  150. package/src/vite-plugin/errors.ts +127 -0
  151. package/src/vite-plugin/image-optimization.ts +151 -0
  152. package/src/vite-plugin/integration-activator.ts +126 -0
  153. package/src/vite-plugin/island-sidecar-plugin.ts +176 -0
  154. package/src/vite-plugin/module-discovery.ts +189 -0
  155. package/src/vite-plugin/nitro-integration.ts +1334 -0
  156. package/src/vite-plugin/plugin.ts +329 -0
  157. package/src/vite-plugin/tests/image-optimization.test.ts +54 -0
  158. package/src/vite-plugin/types.ts +327 -0
  159. package/src/vite-plugin/validation.ts +228 -0
@@ -0,0 +1,285 @@
1
+ import type {
2
+ LayoutContext,
3
+ LayoutRoute,
4
+ LayoutHandler,
5
+ LayoutProps,
6
+ LayoutDiscoveryOptions,
7
+ RouteInfo,
8
+ LayoutRule,
9
+ LayoutConfig,
10
+ IslandState,
11
+ PersistentIslandProps,
12
+ LayoutErrorInfo,
13
+ LayoutErrorBoundaryProps,
14
+ ErrorRecoveryStrategy,
15
+ StreamingLayoutProps,
16
+ StreamingComponent,
17
+ ResolvedLayout,
18
+ LayoutLoader,
19
+ } from '../schemas/layout.ts';
20
+ import type { ComponentType, ComponentChildren } from 'preact';
21
+
22
+ export type {
23
+ LayoutContext,
24
+ LayoutData,
25
+ LayoutRoute,
26
+ LayoutHandler,
27
+ LayoutProps,
28
+ LayoutDiscoveryOptions,
29
+ RouteInfo,
30
+ LayoutRule,
31
+ LayoutConfig,
32
+ IslandState,
33
+ PersistentIslandProps,
34
+ PersistentIslandContext,
35
+ LayoutErrorInfo,
36
+ LayoutErrorBoundaryProps,
37
+ ErrorRecoveryStrategy,
38
+ StreamingLayoutProps,
39
+ StreamingComponent,
40
+ ResolvedLayout,
41
+ LayoutCache,
42
+ EnhancedLayoutContext,
43
+ LayoutLoader,
44
+ LayoutMatcherFunction,
45
+ LayoutErrorHandler,
46
+ LayoutRetryFunction,
47
+ LayoutFallbackRenderer,
48
+ IslandStateSaver,
49
+ IslandStateLoader,
50
+ IslandStateClearer,
51
+ StreamingReadyCheck,
52
+ } from '../schemas/layout.ts';
53
+ export type { ComponentType, ComponentChildren } from 'preact';
54
+
55
+ // Import concrete implementations
56
+ export { LayoutDiscovery } from '../core/layout/layout-discovery.ts';
57
+ export { LayoutDataLoader } from '../core/layout/layout-data-loader.ts';
58
+ export { LayoutMatcher as LayoutMatcherClass } from '../core/layout/layout-matcher.ts';
59
+ export { LayoutComposer } from '../core/layout/layout-composer.ts';
60
+
61
+ // Export persistent islands functionality
62
+ export { IslandPersistence, defaultIslandPersistence } from '../core/islands/island-persistence.ts';
63
+ export { IslandStateSerializer } from '../core/islands/island-state-serializer.ts';
64
+ export {
65
+ createPersistentIslandContext,
66
+ usePersistentIslandContext,
67
+ PersistentIslandProvider,
68
+ } from '../core/islands/persistent-island-context.tsx';
69
+ export { PersistentIsland } from '../components/PersistentIsland.tsx';
70
+
71
+ // Export error boundary functionality
72
+ export { LayoutErrorBoundary } from '../components/LayoutErrorBoundary.tsx';
73
+ export { LayoutDataErrorBoundary } from '../components/LayoutDataErrorBoundary.tsx';
74
+ export { IslandErrorBoundary, withIslandErrorBoundary } from '../components/IslandErrorBoundary.tsx';
75
+
76
+ // Export streaming functionality
77
+ export {
78
+ StreamingLayout,
79
+ StreamingSuspense,
80
+ withStreaming,
81
+ useStreamingState,
82
+ } from '../components/StreamingLayout.tsx';
83
+
84
+ // Export enhanced layout resolver
85
+ export {
86
+ EnhancedLayoutResolver,
87
+ createEnhancedLayoutResolver,
88
+ EnhancedLayoutResolverUtils,
89
+ type EnhancedLayoutResolverOptions,
90
+ } from '../core/layout/enhanced-layout-resolver.ts';
91
+
92
+ // Export only essential layout cache types (no debug/performance tooling)
93
+ export {
94
+ LayoutCacheManager,
95
+ type CacheEntry,
96
+ type CacheStats,
97
+ type CacheConfig,
98
+ } from '../core/layout/layout-cache-manager.ts';
99
+
100
+ // === Enhanced Interface Definitions ===
101
+
102
+ /**
103
+ * Layout Discovery Interface
104
+ */
105
+ export interface ILayoutDiscovery {
106
+ discoverLayouts(routePath: string): Promise<LayoutRoute[]>;
107
+ buildLayoutChain(url: URL): Promise<LayoutHandler[]>;
108
+ setWatching(enabled: boolean): void;
109
+ getOptions(): LayoutDiscoveryOptions;
110
+ }
111
+
112
+ /**
113
+ * Layout Matcher Interface
114
+ */
115
+ export interface ILayoutMatcher {
116
+ addRule(rule: LayoutRule): void;
117
+ removeRule(rule: LayoutRule): void;
118
+ shouldApplyLayout(layoutPath: string, route: RouteInfo): boolean;
119
+ getRules(): LayoutRule[];
120
+ clearRules(): void;
121
+ }
122
+
123
+ /**
124
+ * Layout Composer Interface
125
+ */
126
+ export interface ILayoutComposer {
127
+ resolveLayouts(routePath: string, pageModule: PageModule): Promise<LayoutHandler[]>;
128
+ applyConfiguration(layouts: LayoutHandler[], config: LayoutConfig): Promise<LayoutHandler[]>;
129
+ validateLayoutConfig(config: LayoutConfig): { valid: boolean; errors: string[] };
130
+ clearCache(): void;
131
+ getCompositionStats(): {
132
+ customLayoutCacheSize: number;
133
+ discoveryStats: { layoutCount: number; routeCacheCount: number };
134
+ };
135
+ }
136
+
137
+ /**
138
+ * Island Persistence Interface
139
+ */
140
+ export interface IIslandPersistence {
141
+ saveState(id: string, state: IslandState): void;
142
+ loadState(id: string): IslandState | null;
143
+ clearState(id: string): void;
144
+ hasState(id: string): boolean;
145
+ getStoredIds(): string[];
146
+ clearAllStates(): void;
147
+ }
148
+
149
+ /**
150
+ * Layout Error Recovery Interface
151
+ */
152
+ export interface ILayoutErrorRecovery {
153
+ handleLayoutError(error: Error, context: LayoutContext): Promise<Response>;
154
+ registerStrategy(errorType: string, strategy: ErrorRecoveryStrategy): void;
155
+ getStrategy(error: Error): ErrorRecoveryStrategy | null;
156
+ }
157
+
158
+ /**
159
+ * Layout Streaming Interface
160
+ */
161
+ export interface ILayoutStreaming {
162
+ renderWithStreaming(layout: LayoutHandler, props: LayoutProps): Promise<ReadableStream>;
163
+ isStreamingSupported(): boolean;
164
+ createStreamingResponse(components: StreamingComponent[]): ReadableStream;
165
+ generateSkeleton(component: StreamingComponent): string;
166
+ }
167
+
168
+ /**
169
+ * Enhanced Layout Resolver Interface
170
+ */
171
+ export interface IEnhancedLayoutResolver {
172
+ resolveAndRender(routePath: string, pageModule: PageModule, context: LayoutContext): Promise<ResolvedLayout>;
173
+ getCachedResolution(routePath: string): ResolvedLayout | null;
174
+ clearCache(): void;
175
+ setCaching(enabled: boolean): void;
176
+ }
177
+
178
+ // === Component Interface Definitions ===
179
+
180
+ export interface ILayoutComponent {
181
+ props: LayoutProps;
182
+ layoutLoader?: LayoutLoader;
183
+ layoutConfig?: LayoutConfig;
184
+ }
185
+
186
+ export interface IPersistentIslandComponent {
187
+ props: PersistentIslandProps;
188
+ saveState(): void;
189
+ loadState(): void;
190
+ clearState(): void;
191
+ hasState(): boolean;
192
+ }
193
+
194
+ export interface ILayoutErrorBoundaryComponent {
195
+ props: LayoutErrorBoundaryProps;
196
+ handleRetry(): void;
197
+ getErrorState(): { hasError: boolean; error?: Error };
198
+ resetErrorState(): void;
199
+ }
200
+
201
+ export interface IStreamingLayoutComponent {
202
+ props: StreamingLayoutProps;
203
+ isReady(): Promise<boolean>;
204
+ renderFallback(): ComponentChildren;
205
+ getPriority(): number;
206
+ }
207
+
208
+ // === Utility Type Definitions ===
209
+
210
+ export interface LayoutModule {
211
+ default: ComponentType<LayoutProps>;
212
+ layoutLoader?: LayoutLoader;
213
+ layoutConfig?: LayoutConfig;
214
+ ErrorBoundary?: ComponentType<LayoutErrorBoundaryProps>;
215
+ }
216
+
217
+ export interface PageModule {
218
+ default: ComponentType<Record<string, unknown>>;
219
+ layoutConfig?: LayoutConfig;
220
+ frontmatter?: Record<string, unknown>;
221
+ loader?: (ctx: LayoutContext) => Promise<Record<string, unknown>>;
222
+ }
223
+
224
+ export interface LayoutResolutionContext {
225
+ route: RouteInfo;
226
+ pageModule: PageModule;
227
+ layoutContext: LayoutContext;
228
+ cachingEnabled: boolean;
229
+ streamingEnabled: boolean;
230
+ developmentMode: boolean;
231
+ }
232
+
233
+ export interface LayoutPerformanceMetrics {
234
+ discoveryTime: number;
235
+ dataLoadingTime: number;
236
+ renderingTime: number;
237
+ totalTime: number;
238
+ layoutCount: number;
239
+ cacheHit: boolean;
240
+ memoryUsage?: number;
241
+ }
242
+
243
+ export interface LayoutDebugInfo {
244
+ resolutionChain: string[];
245
+ appliedRules: LayoutRule[];
246
+ skippedLayouts: string[];
247
+ errors: LayoutErrorInfo[];
248
+ metrics: LayoutPerformanceMetrics;
249
+ cacheInfo: {
250
+ hit: boolean;
251
+ key: string;
252
+ size: number;
253
+ };
254
+ }
255
+
256
+ // === Event Type Definitions ===
257
+
258
+ export type LayoutEventType =
259
+ | 'layout-discovered'
260
+ | 'layout-loaded'
261
+ | 'layout-rendered'
262
+ | 'layout-error'
263
+ | 'layout-cached'
264
+ | 'island-state-saved'
265
+ | 'island-state-loaded'
266
+ | 'streaming-started'
267
+ | 'streaming-completed';
268
+
269
+ export interface LayoutEventData {
270
+ type: LayoutEventType;
271
+ timestamp: number;
272
+ layoutPath?: string;
273
+ error?: Error;
274
+ metrics?: LayoutPerformanceMetrics;
275
+ data?: Record<string, unknown>;
276
+ }
277
+
278
+ export type LayoutEventHandler = (event: LayoutEventData) => void;
279
+
280
+ export interface ILayoutEventEmitter {
281
+ on(event: LayoutEventType, handler: LayoutEventHandler): void;
282
+ off(event: LayoutEventType, handler: LayoutEventHandler): void;
283
+ emit(event: LayoutEventType, data?: Record<string, unknown>): void;
284
+ removeAllListeners(): void;
285
+ }
@@ -0,0 +1,6 @@
1
+ import type { ComponentType } from 'preact';
2
+
3
+ declare module '*.mdx' {
4
+ const MDXComponent: ComponentType<Record<string, unknown>>;
5
+ export default MDXComponent;
6
+ }