@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
|
@@ -1,117 +1,117 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Island Discovery Types
|
|
3
|
-
*
|
|
4
|
-
* Type definitions for the nested islands discovery system.
|
|
5
|
-
* Supports discovering island components in modular architectures
|
|
6
|
-
* like /src/modules/[module]/islands/ and arbitrary nesting patterns.
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import type { Framework } from "../types.ts";
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Represents a discovered islands directory
|
|
13
|
-
*/
|
|
14
|
-
export interface IslandDirectory {
|
|
15
|
-
/** Absolute path to the islands directory */
|
|
16
|
-
path: string;
|
|
17
|
-
/** Relative path from src/ (e.g., "modules/auth/islands") */
|
|
18
|
-
relativePath: string;
|
|
19
|
-
/** Namespace prefix for components (e.g., "modules/auth") */
|
|
20
|
-
namespace: string;
|
|
21
|
-
/** Whether this is the default /src/islands/ directory */
|
|
22
|
-
isDefault: boolean;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Represents a discovered island component
|
|
27
|
-
*/
|
|
28
|
-
export interface DiscoveredIsland {
|
|
29
|
-
/** Component name without extension */
|
|
30
|
-
name: string;
|
|
31
|
-
/** Full absolute path to the component file */
|
|
32
|
-
filePath: string;
|
|
33
|
-
/** Relative path from project root */
|
|
34
|
-
relativePath: string;
|
|
35
|
-
/** Namespace (empty string for default islands directory) */
|
|
36
|
-
namespace: string;
|
|
37
|
-
/** Detected framework */
|
|
38
|
-
framework: Framework;
|
|
39
|
-
/** File extension (e.g., ".tsx", ".vue", ".svelte") */
|
|
40
|
-
extension: string;
|
|
41
|
-
/** The directory this island belongs to */
|
|
42
|
-
directory: IslandDirectory;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Represents a naming collision between islands
|
|
47
|
-
*/
|
|
48
|
-
export interface IslandCollision {
|
|
49
|
-
/** Component name that has collisions */
|
|
50
|
-
name: string;
|
|
51
|
-
/** All islands with this name */
|
|
52
|
-
islands: DiscoveredIsland[];
|
|
53
|
-
/** Resolution strategy used */
|
|
54
|
-
resolution: "namespace" | "priority";
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Event emitted when island files change
|
|
59
|
-
*/
|
|
60
|
-
export interface IslandChangeEvent {
|
|
61
|
-
/** Type of change */
|
|
62
|
-
type: "add" | "change" | "remove";
|
|
63
|
-
/** Affected island (null for remove events before discovery) */
|
|
64
|
-
island: DiscoveredIsland | null;
|
|
65
|
-
/** File path that changed */
|
|
66
|
-
filePath: string;
|
|
67
|
-
/** Timestamp of the change */
|
|
68
|
-
timestamp: number;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* Supported file extensions for island components
|
|
73
|
-
*/
|
|
74
|
-
export const ISLAND_FILE_EXTENSIONS = [
|
|
75
|
-
".tsx",
|
|
76
|
-
".ts",
|
|
77
|
-
".jsx",
|
|
78
|
-
".js",
|
|
79
|
-
".vue",
|
|
80
|
-
".svelte",
|
|
81
|
-
] as const;
|
|
82
|
-
|
|
83
|
-
export type IslandFileExtension = (typeof ISLAND_FILE_EXTENSIONS)[number];
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Check if a file extension is supported for islands
|
|
87
|
-
*/
|
|
88
|
-
export function isSupportedIslandExtension(ext: string): ext is IslandFileExtension {
|
|
89
|
-
return ISLAND_FILE_EXTENSIONS.includes(ext as IslandFileExtension);
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* Configuration options for island discovery
|
|
94
|
-
*/
|
|
95
|
-
export interface IslandDiscoveryConfig {
|
|
96
|
-
/** Root directory to scan (defaults to "src") */
|
|
97
|
-
rootDir?: string;
|
|
98
|
-
/** Additional directories to scan (beyond default patterns) */
|
|
99
|
-
include?: string[];
|
|
100
|
-
/** Directories to exclude from scanning */
|
|
101
|
-
exclude?: string[];
|
|
102
|
-
/** Custom namespace mapping */
|
|
103
|
-
namespaces?: Record<string, string>;
|
|
104
|
-
/** Whether to fail on naming collisions */
|
|
105
|
-
strictCollisions?: boolean;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* Default configuration for island discovery
|
|
110
|
-
*/
|
|
111
|
-
export const DEFAULT_DISCOVERY_CONFIG: Required<IslandDiscoveryConfig> = {
|
|
112
|
-
rootDir: "src",
|
|
113
|
-
include: [],
|
|
114
|
-
exclude: ["node_modules", ".git", "dist", "build"],
|
|
115
|
-
namespaces: {},
|
|
116
|
-
strictCollisions: false,
|
|
117
|
-
};
|
|
1
|
+
/**
|
|
2
|
+
* Island Discovery Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for the nested islands discovery system.
|
|
5
|
+
* Supports discovering island components in modular architectures
|
|
6
|
+
* like /src/modules/[module]/islands/ and arbitrary nesting patterns.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import type { Framework } from "../types.ts";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Represents a discovered islands directory
|
|
13
|
+
*/
|
|
14
|
+
export interface IslandDirectory {
|
|
15
|
+
/** Absolute path to the islands directory */
|
|
16
|
+
path: string;
|
|
17
|
+
/** Relative path from src/ (e.g., "modules/auth/islands") */
|
|
18
|
+
relativePath: string;
|
|
19
|
+
/** Namespace prefix for components (e.g., "modules/auth") */
|
|
20
|
+
namespace: string;
|
|
21
|
+
/** Whether this is the default /src/islands/ directory */
|
|
22
|
+
isDefault: boolean;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Represents a discovered island component
|
|
27
|
+
*/
|
|
28
|
+
export interface DiscoveredIsland {
|
|
29
|
+
/** Component name without extension */
|
|
30
|
+
name: string;
|
|
31
|
+
/** Full absolute path to the component file */
|
|
32
|
+
filePath: string;
|
|
33
|
+
/** Relative path from project root */
|
|
34
|
+
relativePath: string;
|
|
35
|
+
/** Namespace (empty string for default islands directory) */
|
|
36
|
+
namespace: string;
|
|
37
|
+
/** Detected framework */
|
|
38
|
+
framework: Framework;
|
|
39
|
+
/** File extension (e.g., ".tsx", ".vue", ".svelte") */
|
|
40
|
+
extension: string;
|
|
41
|
+
/** The directory this island belongs to */
|
|
42
|
+
directory: IslandDirectory;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Represents a naming collision between islands
|
|
47
|
+
*/
|
|
48
|
+
export interface IslandCollision {
|
|
49
|
+
/** Component name that has collisions */
|
|
50
|
+
name: string;
|
|
51
|
+
/** All islands with this name */
|
|
52
|
+
islands: DiscoveredIsland[];
|
|
53
|
+
/** Resolution strategy used */
|
|
54
|
+
resolution: "namespace" | "priority";
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Event emitted when island files change
|
|
59
|
+
*/
|
|
60
|
+
export interface IslandChangeEvent {
|
|
61
|
+
/** Type of change */
|
|
62
|
+
type: "add" | "change" | "remove";
|
|
63
|
+
/** Affected island (null for remove events before discovery) */
|
|
64
|
+
island: DiscoveredIsland | null;
|
|
65
|
+
/** File path that changed */
|
|
66
|
+
filePath: string;
|
|
67
|
+
/** Timestamp of the change */
|
|
68
|
+
timestamp: number;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Supported file extensions for island components
|
|
73
|
+
*/
|
|
74
|
+
export const ISLAND_FILE_EXTENSIONS = [
|
|
75
|
+
".tsx",
|
|
76
|
+
".ts",
|
|
77
|
+
".jsx",
|
|
78
|
+
".js",
|
|
79
|
+
".vue",
|
|
80
|
+
".svelte",
|
|
81
|
+
] as const;
|
|
82
|
+
|
|
83
|
+
export type IslandFileExtension = (typeof ISLAND_FILE_EXTENSIONS)[number];
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Check if a file extension is supported for islands
|
|
87
|
+
*/
|
|
88
|
+
export function isSupportedIslandExtension(ext: string): ext is IslandFileExtension {
|
|
89
|
+
return ISLAND_FILE_EXTENSIONS.includes(ext as IslandFileExtension);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Configuration options for island discovery
|
|
94
|
+
*/
|
|
95
|
+
export interface IslandDiscoveryConfig {
|
|
96
|
+
/** Root directory to scan (defaults to "src") */
|
|
97
|
+
rootDir?: string;
|
|
98
|
+
/** Additional directories to scan (beyond default patterns) */
|
|
99
|
+
include?: string[];
|
|
100
|
+
/** Directories to exclude from scanning */
|
|
101
|
+
exclude?: string[];
|
|
102
|
+
/** Custom namespace mapping */
|
|
103
|
+
namespaces?: Record<string, string>;
|
|
104
|
+
/** Whether to fail on naming collisions */
|
|
105
|
+
strictCollisions?: boolean;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Default configuration for island discovery
|
|
110
|
+
*/
|
|
111
|
+
export const DEFAULT_DISCOVERY_CONFIG: Required<IslandDiscoveryConfig> = {
|
|
112
|
+
rootDir: "src",
|
|
113
|
+
include: [],
|
|
114
|
+
exclude: ["node_modules", ".git", "dist", "build"],
|
|
115
|
+
namespaces: {},
|
|
116
|
+
strictCollisions: false,
|
|
117
|
+
};
|