@useavalon/avalon 0.1.11 → 0.1.13
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 +54 -54
- package/mod.ts +302 -302
- package/package.json +49 -26
- package/src/build/integration-bundler-plugin.ts +116 -116
- package/src/build/integration-config.ts +168 -168
- package/src/build/integration-detection-plugin.ts +117 -117
- package/src/build/integration-resolver-plugin.ts +90 -90
- package/src/build/island-manifest.ts +269 -269
- package/src/build/island-types-generator.ts +476 -476
- package/src/build/mdx-island-transform.ts +464 -464
- package/src/build/mdx-plugin.ts +98 -98
- package/src/build/page-island-transform.ts +598 -598
- package/src/build/prop-extractors/index.ts +21 -21
- package/src/build/prop-extractors/lit.ts +140 -140
- package/src/build/prop-extractors/qwik.ts +16 -16
- package/src/build/prop-extractors/solid.ts +125 -125
- package/src/build/prop-extractors/svelte.ts +194 -194
- package/src/build/prop-extractors/vue.ts +111 -111
- package/src/build/sidecar-file-manager.ts +104 -104
- package/src/build/sidecar-renderer.ts +30 -30
- package/src/client/adapters/index.ts +21 -13
- package/src/client/components.ts +35 -35
- package/src/client/css-hmr-handler.ts +344 -344
- package/src/client/framework-adapter.ts +462 -462
- package/src/client/hmr-coordinator.ts +396 -396
- package/src/client/hmr-error-overlay.js +533 -533
- package/src/client/main.js +824 -816
- package/src/client/types/framework-runtime.d.ts +68 -68
- package/src/client/types/vite-hmr.d.ts +46 -46
- package/src/client/types/vite-virtual-modules.d.ts +70 -60
- package/src/components/Image.tsx +123 -123
- package/src/components/IslandErrorBoundary.tsx +145 -145
- package/src/components/LayoutDataErrorBoundary.tsx +141 -141
- package/src/components/LayoutErrorBoundary.tsx +127 -127
- package/src/components/PersistentIsland.tsx +52 -52
- package/src/components/StreamingErrorBoundary.tsx +233 -233
- package/src/components/StreamingLayout.tsx +538 -538
- package/src/core/components/component-analyzer.ts +192 -192
- package/src/core/components/component-detection.ts +508 -508
- package/src/core/components/enhanced-framework-detector.ts +500 -500
- package/src/core/components/framework-registry.ts +563 -563
- package/src/core/content/mdx-processor.ts +46 -46
- package/src/core/integrations/index.ts +19 -19
- package/src/core/integrations/loader.ts +125 -125
- package/src/core/integrations/registry.ts +175 -175
- package/src/core/islands/island-persistence.ts +325 -325
- package/src/core/islands/island-state-serializer.ts +258 -258
- package/src/core/islands/persistent-island-context.tsx +80 -80
- package/src/core/islands/use-persistent-state.ts +68 -68
- package/src/core/layout/enhanced-layout-resolver.ts +322 -322
- package/src/core/layout/layout-cache-manager.ts +485 -485
- package/src/core/layout/layout-composer.ts +357 -357
- package/src/core/layout/layout-data-loader.ts +516 -516
- package/src/core/layout/layout-discovery.ts +243 -243
- package/src/core/layout/layout-matcher.ts +299 -299
- package/src/core/layout/layout-types.ts +110 -110
- package/src/core/modules/framework-module-resolver.ts +273 -273
- package/src/islands/component-analysis.ts +213 -213
- package/src/islands/css-utils.ts +565 -565
- package/src/islands/discovery/index.ts +80 -80
- package/src/islands/discovery/registry.ts +340 -340
- package/src/islands/discovery/resolver.ts +477 -477
- package/src/islands/discovery/scanner.ts +386 -386
- package/src/islands/discovery/types.ts +117 -117
- package/src/islands/discovery/validator.ts +544 -544
- package/src/islands/discovery/watcher.ts +368 -368
- package/src/islands/framework-detection.ts +428 -428
- package/src/islands/integration-loader.ts +490 -490
- package/src/islands/island.tsx +565 -565
- package/src/islands/render-cache.ts +550 -550
- package/src/islands/types.ts +80 -80
- package/src/islands/universal-css-collector.ts +157 -157
- package/src/islands/universal-head-collector.ts +137 -137
- package/src/layout-system.d.ts +592 -592
- package/src/layout-system.ts +218 -218
- package/src/middleware/discovery.ts +268 -268
- package/src/middleware/executor.ts +315 -315
- package/src/middleware/index.ts +76 -76
- package/src/middleware/types.ts +99 -99
- package/src/nitro/build-config.ts +575 -575
- package/src/nitro/config.ts +483 -483
- package/src/nitro/error-handler.ts +636 -636
- package/src/nitro/index.ts +173 -173
- package/src/nitro/island-manifest.ts +584 -584
- package/src/nitro/middleware-adapter.ts +260 -260
- package/src/nitro/renderer.ts +1471 -1471
- package/src/nitro/route-discovery.ts +439 -439
- package/src/nitro/types.ts +321 -321
- package/src/render/collect-css.ts +198 -198
- package/src/render/error-pages.ts +79 -79
- package/src/render/isolated-ssr-renderer.ts +654 -654
- package/src/render/ssr.ts +1030 -1030
- package/src/schemas/api.ts +30 -30
- package/src/schemas/core.ts +64 -64
- package/src/schemas/index.ts +212 -212
- package/src/schemas/layout.ts +279 -279
- package/src/schemas/routing/index.ts +38 -38
- package/src/schemas/routing.ts +376 -376
- package/src/types/as-island.ts +20 -20
- package/src/types/image.d.ts +106 -106
- package/src/types/index.d.ts +22 -22
- package/src/types/island-jsx.d.ts +33 -33
- package/src/types/island-prop.d.ts +20 -20
- package/src/types/layout.ts +285 -285
- package/src/types/mdx.d.ts +6 -6
- package/src/types/routing.ts +555 -555
- package/src/types/types.ts +5 -5
- package/src/types/urlpattern.d.ts +49 -49
- package/src/types/vite-env.d.ts +11 -11
- package/src/utils/dev-logger.ts +299 -299
- package/src/utils/fs.ts +151 -151
- package/src/vite-plugin/auto-discover.ts +551 -551
- package/src/vite-plugin/config.ts +266 -266
- package/src/vite-plugin/errors.ts +127 -127
- package/src/vite-plugin/image-optimization.ts +156 -156
- package/src/vite-plugin/integration-activator.ts +126 -126
- package/src/vite-plugin/island-sidecar-plugin.ts +176 -176
- package/src/vite-plugin/module-discovery.ts +189 -189
- package/src/vite-plugin/nitro-integration.ts +1354 -1354
- package/src/vite-plugin/plugin.ts +403 -409
- package/src/vite-plugin/types.ts +327 -327
- package/src/vite-plugin/validation.ts +228 -228
- package/src/client/adapters/index.js +0 -12
- package/src/client/adapters/lit-adapter.js +0 -467
- package/src/client/adapters/lit-adapter.ts +0 -654
- package/src/client/adapters/preact-adapter.js +0 -223
- package/src/client/adapters/preact-adapter.ts +0 -331
- package/src/client/adapters/qwik-adapter.js +0 -259
- package/src/client/adapters/qwik-adapter.ts +0 -345
- package/src/client/adapters/react-adapter.js +0 -220
- package/src/client/adapters/react-adapter.ts +0 -353
- package/src/client/adapters/solid-adapter.js +0 -295
- package/src/client/adapters/solid-adapter.ts +0 -451
- package/src/client/adapters/svelte-adapter.js +0 -368
- package/src/client/adapters/svelte-adapter.ts +0 -524
- package/src/client/adapters/vue-adapter.js +0 -278
- package/src/client/adapters/vue-adapter.ts +0 -467
- package/src/client/components.js +0 -23
- package/src/client/css-hmr-handler.js +0 -263
- package/src/client/framework-adapter.js +0 -283
- package/src/client/hmr-coordinator.js +0 -274
package/src/types/layout.ts
CHANGED
|
@@ -1,285 +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
|
-
}
|
|
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
|
+
}
|
package/src/types/mdx.d.ts
CHANGED
|
@@ -1,6 +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
|
-
}
|
|
1
|
+
import type { ComponentType } from 'preact';
|
|
2
|
+
|
|
3
|
+
declare module '*.mdx' {
|
|
4
|
+
const MDXComponent: ComponentType<Record<string, unknown>>;
|
|
5
|
+
export default MDXComponent;
|
|
6
|
+
}
|