1/**
2 * `@alchemy.run/frontend-frameworks/vite` — plain-Vite integration
3 * implementing framework-core's `Framework` service, for client-only sites
4 * whose entire deployable output is static assets (React/Vue/Solid SPAs,
5 * `index.html` multi-page apps, Foldkit apps, ...).
6 *
7 * This package drives the PROJECT's own Vite install programmatically —
8 * one `vite build` with the project's `vite.config.*` (plugins included)
9 * produces the assets directory; `dev` runs the project's own Vite dev
10 * server (native HMR). There are no server modules and no adapter forks.
11 *
12 * The default export is the e2e-harness factory contract: an
13 * `(options) => Layer<Framework>` function. Use {@link layer} directly for
14 * the fully-typed path with Vite-specific options.
15 *
16 * Frameworks that wrap Vite with a server half (Octane, SvelteKit, Astro,
17 * ...) have their own integrations — this one deliberately never looks for
18 * server output.
19 */
20import type { Framework } from "../core/index.ts";
21import type * as FileSystem from "effect/FileSystem";
22import type * as Layer from "effect/Layer";
23import type * as Path from "effect/Path";
24import { layer } from "./Vite.ts";
25
26export {
27 DEFAULT_TARGET_SPECIFIER,
28 layer,
29 make,
30 readViteOutput,
31 type ResolvedViteConfigSlice,
32 type ViteBuildConfig,
33 type ViteDevServer,
34 type ViteModule,
35 type ViteOptions,
36 type ViteTarget,
37 type ViteTargetConfig,
38 type ViteTargetInput,
39} from "./Vite.ts";
40
41/**
42 * The e2e-harness factory contract
43 * (`framework: "@alchemy.run/frontend-frameworks/vite"` in `e2e.config.ts`).
44 * Plain Vite carries no harness-configurable options.
45 */
46const factory = (
47 _options?: unknown,
48): Layer.Layer<Framework, never, FileSystem.FileSystem | Path.Path> => layer();
49
50export default factory;