fuzor 0.2.1 → 0.4.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.
- package/README.md +19 -16
- package/dist/cli.js +17 -9
- package/dist/cli.js.map +1 -1
- package/dist/server/node.d.ts +7 -0
- package/dist/server/node.d.ts.map +1 -0
- package/dist/{ssr → server}/node.js +3 -3
- package/dist/server/node.js.map +1 -0
- package/dist/server.d.ts +15 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/{ssr.js → server.js} +8 -6
- package/dist/server.js.map +1 -0
- package/dist/vite.d.ts +2 -1
- package/dist/vite.d.ts.map +1 -1
- package/dist/vite.js +31 -19
- package/dist/vite.js.map +1 -1
- package/package.json +8 -6
- package/templates/basic/README.md +7 -5
- package/templates/basic/package.json +6 -3
- package/templates/basic/pages/index.html +2 -2
- package/templates/basic/pages/layout.html +1 -1
- package/templates/basic/server.mjs +4 -3
- package/dist/ssr/node.d.ts +0 -7
- package/dist/ssr/node.d.ts.map +0 -1
- package/dist/ssr/node.js.map +0 -1
- package/dist/ssr.d.ts +0 -10
- package/dist/ssr.d.ts.map +0 -1
- package/dist/ssr.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
# Fuzor
|
|
2
2
|
|
|
3
|
-
**One source app.
|
|
3
|
+
**One source app. SPA or MPA. Static or server-backed.** Write your routes, layouts, components, and islands once. Choose SPA or MPA navigation, then choose static files or a generated server. Fuzor's compiler produces each output from the same source tree, with no page rewrites or separate implementations.
|
|
4
4
|
|
|
5
5
|
Fuzor is an early HTML-first framework prototype. Pages can be HTML or Markdown, with interactive islands where needed. The Fuzor CLI selects the build target.
|
|
6
6
|
|
|
7
|
-
|
|
|
7
|
+
| Navigation | Static output | With `--server` |
|
|
8
8
|
| --- | --- | --- |
|
|
9
|
-
| `spa` | One HTML
|
|
10
|
-
| `mpa` |
|
|
11
|
-
| `ssr` | A server entry containing complete, preassembled route documents and client assets | The server looks up the requested route and sends its document |
|
|
9
|
+
| `spa` | One HTML file with compiled route templates, plus ESM and lazy island chunks | One shared, precompiled SPA document served for known routes, plus client assets |
|
|
10
|
+
| `mpa` | One precompiled HTML file per route, plus client assets | Complete precompiled route documents selected and sent by the server |
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
SPA uses the History API; MPA follows ordinary document links. All four outputs include compiler-rendered island previews when props are known. The generated server selects finished HTML; it does not render or stitch a page on request. Add `--inline` to a static SPA build to put its JavaScript and CSS into one HTML file for embedded or offline UIs.
|
|
14
13
|
|
|
15
14
|
## Try it locally
|
|
16
15
|
|
|
@@ -19,7 +18,7 @@ This repository contains a [mixed-framework example](./examples/basic) and the [
|
|
|
19
18
|
```bash
|
|
20
19
|
pnpm install
|
|
21
20
|
pnpm build
|
|
22
|
-
pnpm example:dev:
|
|
21
|
+
pnpm example:dev:mpa:server
|
|
23
22
|
```
|
|
24
23
|
|
|
25
24
|
Open the address printed by Vite. On the example homepage, **View Page Source** shows the vanilla, React, Solid, and Vue counter markup before the browser activates the islands. Click the counters to see the client behavior attach to that markup. The same example can run in the other development targets:
|
|
@@ -27,6 +26,7 @@ Open the address printed by Vite. On the example homepage, **View Page Source**
|
|
|
27
26
|
```bash
|
|
28
27
|
pnpm --filter @fuzor/example dev:spa
|
|
29
28
|
pnpm --filter @fuzor/example dev:mpa
|
|
29
|
+
pnpm --filter @fuzor/example dev:spa:server
|
|
30
30
|
```
|
|
31
31
|
|
|
32
32
|
Build each output from those same source files:
|
|
@@ -35,8 +35,9 @@ Build each output from those same source files:
|
|
|
35
35
|
pnpm example:spa # examples/basic/dist-spa/
|
|
36
36
|
pnpm example:spa --inline # single dist-spa/index.html
|
|
37
37
|
pnpm example:mpa # examples/basic/dist-mpa/
|
|
38
|
-
pnpm example:
|
|
39
|
-
pnpm
|
|
38
|
+
pnpm example:spa:server # examples/basic/dist-spa-server/
|
|
39
|
+
pnpm example:mpa:server # examples/basic/dist-mpa-server/
|
|
40
|
+
pnpm --filter @fuzor/example start:mpa:server # serve the MPA build on port 4173
|
|
40
41
|
```
|
|
41
42
|
|
|
42
43
|
Run `pnpm website:dev` for the website, or `pnpm website:build` for its static MPA output. Its homepage is HTML; the `/docs` route tree is Markdown files and folders under [`website/pages/docs/`](./website/pages/docs), with a shared docs layout in [`website/layouts/docs.html`](./website/layouts/docs.html).
|
|
@@ -63,7 +64,7 @@ my-app/
|
|
|
63
64
|
<fuzor-island src="counter" props='{"initial":1}' client:load></fuzor-island>
|
|
64
65
|
```
|
|
65
66
|
|
|
66
|
-
`<fuzor-link>` becomes a real anchor, so links work without JavaScript in
|
|
67
|
+
`<fuzor-link>` becomes a real anchor, so links work without JavaScript in either MPA output. In either SPA output, the router handles navigation and replaces route markup. A vanilla island exports `mount(host, props)` and may return a cleanup function. It can also export `render(props)` to provide initial HTML at build time. `client:load`, `client:idle`, and `client:visible` control when an island activates.
|
|
67
68
|
|
|
68
69
|
React, Solid, and Vue islands in the example render their initial HTML **during compilation**, then hydrate inside separate DOM hosts in the browser. Their frameworks do not own each other's DOM. React and Solid JSX use file-specific Vite plugin filters (`*.react.tsx` and `*.solid.tsx`) so their transforms do not collide; Solid's plugin enables SSR rendering. This is renderer-based build-time output, not static extraction of JSX templates. See the [island architecture and its constraints](./design/islands.md).
|
|
69
70
|
|
|
@@ -82,24 +83,26 @@ pnpm install
|
|
|
82
83
|
pnpm dev
|
|
83
84
|
```
|
|
84
85
|
|
|
85
|
-
The creator can install dependencies for you; if you accept that prompt, the separate `pnpm install` is optional. It generates one source tree with scripts for
|
|
86
|
+
The creator can install dependencies for you; if you accept that prompt, the separate `pnpm install` is optional. It generates one source tree with scripts for both navigation targets and both delivery choices. The `create-fuzor` npm package powers this command.
|
|
86
87
|
|
|
87
88
|
```bash
|
|
88
|
-
fuzor dev --target spa # also mpa
|
|
89
|
+
fuzor dev --target spa # also mpa; accepts --host and --port
|
|
90
|
+
fuzor dev --target mpa --server
|
|
89
91
|
fuzor build --target spa
|
|
90
92
|
fuzor build --target spa --inline
|
|
91
93
|
fuzor build --target mpa
|
|
92
|
-
fuzor build --target
|
|
94
|
+
fuzor build --target spa --server
|
|
95
|
+
fuzor build --target mpa --server
|
|
93
96
|
fuzor create my-app
|
|
94
97
|
```
|
|
95
98
|
|
|
96
|
-
A Vite config can simply add `fuzorPlugin()`. The [starter template](./templates/basic) includes scripts for
|
|
99
|
+
A Vite config can simply add `fuzorPlugin()`. The [starter template](./templates/basic) includes scripts for the four combinations, a Markdown route, and a vanilla island. The `fuzor create my-app` command calls the same creator if Fuzor is already installed. Deployment adapters and `fuzor deploy` are not implemented.
|
|
97
100
|
|
|
98
101
|
## Current boundaries
|
|
99
102
|
|
|
100
|
-
Fuzor currently compiles **known, static folder routes**. Dynamic URL parameters, request-time page data, forms, per-page revalidation, and request-time rendering are future work. Build-time island previews require known JSON props and a compatible renderer; other islands begin with an empty host. Arbitrary asynchronous content cannot yet promise a layout-shift-free placeholder. Multiple versions of one UI framework in a single build are not guaranteed; additional JSX systems need their own tested adapters.
|
|
103
|
+
Fuzor currently compiles **known, static folder routes**. Dynamic URL parameters, request-time page data, forms, per-page revalidation, and request-time rendering are future work. When server-only features arrive, the compiler should detect their use and emit a server automatically; today `--server` explicitly selects server delivery because those features do not exist yet. Build-time island previews require known JSON props and a compatible renderer; other islands begin with an empty host. Arbitrary asynchronous content cannot yet promise a layout-shift-free placeholder. Multiple versions of one UI framework in a single build are not guaranteed; additional JSX systems need their own tested adapters.
|
|
101
104
|
|
|
102
|
-
|
|
105
|
+
Both SPA outputs carry every route's HTML in the shared document, so it grows with the route tree, even though island code loads lazily. A static SPA needs a hosting fallback to `index.html` for deep links; the generated SPA server provides that behavior. The inline build requires assets it can embed and is available only without `--server`.
|
|
103
106
|
|
|
104
107
|
```bash
|
|
105
108
|
pnpm test
|
package/dist/cli.js
CHANGED
|
@@ -5,25 +5,28 @@ import * as prompts from "@clack/prompts";
|
|
|
5
5
|
import colors from "picocolors";
|
|
6
6
|
import { createCommand } from "./create.js";
|
|
7
7
|
const packageJson = JSON.parse(await readFile(new URL("../package.json", import.meta.url), "utf8"));
|
|
8
|
-
const targetArg = () => ({ type: "enum", options: ["spa", "mpa"
|
|
9
|
-
function selectTarget(target, inline = false) {
|
|
8
|
+
const targetArg = () => ({ type: "enum", options: ["spa", "mpa"], default: "spa", description: "Navigation target" });
|
|
9
|
+
function selectTarget(target, server = false, inline = false) {
|
|
10
10
|
process.env.FUZOR_TARGET = target;
|
|
11
|
+
process.env.FUZOR_SERVER = server ? "1" : "0";
|
|
11
12
|
process.env.FUZOR_INLINE = inline ? "1" : "0";
|
|
12
13
|
}
|
|
13
14
|
const dev = defineCommand({
|
|
14
15
|
meta: { name: "dev", description: "Start Vite with a Fuzor profile" },
|
|
15
16
|
args: {
|
|
16
17
|
target: targetArg(),
|
|
18
|
+
server: { type: "boolean", description: "Serve the compiled app with a generated server" },
|
|
17
19
|
host: { type: "string", description: "Host to listen on" },
|
|
18
20
|
port: { type: "string", description: "Port to listen on" }
|
|
19
21
|
},
|
|
20
22
|
async run({ args }) {
|
|
21
23
|
const target = (args.target ?? "spa");
|
|
22
|
-
|
|
24
|
+
const withServer = Boolean(args.server);
|
|
25
|
+
selectTarget(target, withServer);
|
|
23
26
|
const port = args.port === undefined ? undefined : Number(args.port);
|
|
24
27
|
if (port !== undefined && (!Number.isInteger(port) || port < 1 || port > 65535))
|
|
25
28
|
throw new Error("--port must be between 1 and 65535.");
|
|
26
|
-
prompts.intro(colors.cyan(colors.bold(`◉ Fuzor ${target.toUpperCase()}`)));
|
|
29
|
+
prompts.intro(colors.cyan(colors.bold(`◉ Fuzor ${target.toUpperCase()}${withServer ? " + Server" : ""}`)));
|
|
27
30
|
const spin = process.stdout.isTTY ? prompts.spinner() : undefined;
|
|
28
31
|
if (spin)
|
|
29
32
|
spin.start("Starting development server");
|
|
@@ -59,20 +62,25 @@ const buildCommand = defineCommand({
|
|
|
59
62
|
meta: { name: "build", description: "Build a Fuzor profile with Vite" },
|
|
60
63
|
args: {
|
|
61
64
|
target: targetArg(),
|
|
65
|
+
server: { type: "boolean", description: "Emit a server bundle for the selected target" },
|
|
62
66
|
inline: { type: "boolean", description: "Inline SPA JavaScript and CSS into one HTML file" }
|
|
63
67
|
},
|
|
64
68
|
async run({ args }) {
|
|
65
69
|
const target = (args.target ?? "spa");
|
|
70
|
+
const withServer = Boolean(args.server);
|
|
66
71
|
if (args.inline && target !== "spa")
|
|
67
72
|
throw new Error("--inline is only supported for the SPA target.");
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
73
|
+
if (args.inline && withServer)
|
|
74
|
+
throw new Error("--inline cannot be combined with --server.");
|
|
75
|
+
selectTarget(target, withServer, args.inline);
|
|
76
|
+
const outDir = withServer ? `dist-${target}-server/client` : `dist-${target}`;
|
|
77
|
+
const label = `${target.toUpperCase()}${withServer ? " + Server" : ""}`;
|
|
78
|
+
prompts.intro(colors.cyan(colors.bold(`◉ Fuzor ${label}`)));
|
|
71
79
|
const spin = process.stdout.isTTY ? prompts.spinner() : undefined;
|
|
72
80
|
if (spin)
|
|
73
|
-
spin.start(args.inline ? "Building inline SPA" : `Building ${
|
|
81
|
+
spin.start(args.inline ? "Building inline SPA" : `Building ${label}`);
|
|
74
82
|
else
|
|
75
|
-
console.log(args.inline ? "Building inline SPA..." : `Building ${
|
|
83
|
+
console.log(args.inline ? "Building inline SPA..." : `Building ${label}...`);
|
|
76
84
|
try {
|
|
77
85
|
const { build } = await import("vite");
|
|
78
86
|
await build({ build: { outDir }, logLevel: "error" });
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,MAAM,MAAM,YAAY,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAwB,CAAC;AAC3H,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type Server } from "node:http";
|
|
2
|
+
/** Node adapter for a compiled Fuzor server entry and its Vite client assets. */
|
|
3
|
+
export declare function createNodeServer(options: {
|
|
4
|
+
readonly handler: (request: Request) => Promise<Response>;
|
|
5
|
+
readonly assetsDir: string;
|
|
6
|
+
}): Server;
|
|
7
|
+
//# sourceMappingURL=node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/server/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAStD,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE;IACxC,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,GAAG,MAAM,CAiCT"}
|
|
@@ -5,8 +5,8 @@ const types = {
|
|
|
5
5
|
".js": "text/javascript", ".css": "text/css", ".svg": "image/svg+xml",
|
|
6
6
|
".png": "image/png", ".jpg": "image/jpeg", ".webp": "image/webp", ".ico": "image/x-icon"
|
|
7
7
|
};
|
|
8
|
-
/** Node adapter for a compiled Fuzor
|
|
9
|
-
export function
|
|
8
|
+
/** Node adapter for a compiled Fuzor server entry and its Vite client assets. */
|
|
9
|
+
export function createNodeServer(options) {
|
|
10
10
|
const assetsRoot = path.resolve(options.assetsDir);
|
|
11
11
|
return createServer(async (request, response) => {
|
|
12
12
|
try {
|
|
@@ -39,7 +39,7 @@ export function createNodeSsrServer(options) {
|
|
|
39
39
|
}
|
|
40
40
|
catch (error) {
|
|
41
41
|
response.writeHead(500, { "content-type": "text/plain; charset=utf-8" });
|
|
42
|
-
response.end(`Fuzor
|
|
42
|
+
response.end(`Fuzor server error: ${String(error)}`);
|
|
43
43
|
}
|
|
44
44
|
});
|
|
45
45
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/server/node.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
export type ServerManifest = {
|
|
3
|
+
/** Complete MPA documents, assembled at build time. */
|
|
4
|
+
readonly documents: Readonly<Record<string, string>>;
|
|
5
|
+
readonly notFoundDocument: string;
|
|
6
|
+
} | {
|
|
7
|
+
/** One compiled SPA document shared by all known routes. */
|
|
8
|
+
readonly document: string;
|
|
9
|
+
readonly routes: Readonly<Record<string, true>>;
|
|
10
|
+
readonly notFoundDocument: string;
|
|
11
|
+
};
|
|
12
|
+
export declare function renderServerEffect(manifest: ServerManifest, request: Request): Effect.Effect<Response, never, never>;
|
|
13
|
+
/** Selects a complete compiled document; it never renders or stitches HTML per request. */
|
|
14
|
+
export declare function createServerHandler(manifest: ServerManifest): (request: Request) => Promise<Response>;
|
|
15
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,MAAM,cAAc,GAAG;IAC3B,uDAAuD;IACvD,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC,GAAG;IACF,4DAA4D;IAC5D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAChD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,yCAc5E;AAED,2FAA2F;AAC3F,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,cAAc,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAErG"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
|
-
export function
|
|
2
|
+
export function renderServerEffect(manifest, request) {
|
|
3
3
|
return Effect.gen(function* () {
|
|
4
4
|
const pathname = new URL(request.url).pathname;
|
|
5
5
|
const route = pathname === "/" ? "/" : `${pathname.replace(/\/+$/, "")}/`;
|
|
6
|
-
const document =
|
|
6
|
+
const document = "documents" in manifest
|
|
7
|
+
? Object.hasOwn(manifest.documents, route) ? manifest.documents[route] : undefined
|
|
8
|
+
: Object.hasOwn(manifest.routes, route) ? manifest.document : undefined;
|
|
7
9
|
const status = document === undefined ? 404 : 200;
|
|
8
10
|
const headers = { "content-type": "text/html; charset=utf-8" };
|
|
9
11
|
if (request.method !== "GET" && request.method !== "HEAD") {
|
|
@@ -12,8 +14,8 @@ export function renderSsrEffect(manifest, request) {
|
|
|
12
14
|
return new Response(request.method === "HEAD" ? null : document ?? manifest.notFoundDocument, { status, headers });
|
|
13
15
|
});
|
|
14
16
|
}
|
|
15
|
-
/**
|
|
16
|
-
export function
|
|
17
|
-
return (request) => Effect.runPromise(
|
|
17
|
+
/** Selects a complete compiled document; it never renders or stitches HTML per request. */
|
|
18
|
+
export function createServerHandler(manifest) {
|
|
19
|
+
return (request) => Effect.runPromise(renderServerEffect(manifest, request));
|
|
18
20
|
}
|
|
19
|
-
//# sourceMappingURL=
|
|
21
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAahC,MAAM,UAAU,kBAAkB,CAAC,QAAwB,EAAE,OAAgB;IAC3E,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;QAC/C,MAAM,KAAK,GAAG,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC;QAC1E,MAAM,QAAQ,GAAG,WAAW,IAAI,QAAQ;YACtC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;YAClF,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1E,MAAM,MAAM,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAClD,MAAM,OAAO,GAAG,EAAE,cAAc,EAAE,0BAA0B,EAAE,CAAC;QAC/D,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC1D,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IACrH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,mBAAmB,CAAC,QAAwB;IAC1D,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AAC/E,CAAC"}
|
package/dist/vite.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type Plugin } from "vite";
|
|
2
2
|
export type FuzorPluginOptions = {
|
|
3
|
-
readonly target?: "spa" | "mpa"
|
|
3
|
+
readonly target?: "spa" | "mpa";
|
|
4
|
+
readonly server?: boolean;
|
|
4
5
|
/** Emit the SPA as one HTML file with all JavaScript and CSS inlined. */
|
|
5
6
|
readonly inline?: boolean;
|
|
6
7
|
};
|
package/dist/vite.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,KAAK,MAAM,EAA2C,MAAM,MAAM,CAAC;AAU1F,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,
|
|
1
|
+
{"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,KAAK,MAAM,EAA2C,MAAM,MAAM,CAAC;AAU1F,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,yEAAyE;IACzE,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AA8BF,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,MAAM,CAsQpE"}
|
package/dist/vite.js
CHANGED
|
@@ -3,7 +3,7 @@ import path from "node:path";
|
|
|
3
3
|
import { createServer } from "vite";
|
|
4
4
|
import { compileProject } from "./compiler/index.js";
|
|
5
5
|
import { compileIslands } from "./compiler/islands.js";
|
|
6
|
-
import {
|
|
6
|
+
import { createServerHandler } from "./server.js";
|
|
7
7
|
const virtualId = "virtual:fuzor/client";
|
|
8
8
|
const resolvedVirtualId = `\0${virtualId}`;
|
|
9
9
|
const outletStart = "<!--fuzor:outlet-start-->";
|
|
@@ -33,8 +33,15 @@ function replaceOutlet(document, content) {
|
|
|
33
33
|
return document.slice(0, start + outletStart.length) + content + document.slice(end);
|
|
34
34
|
}
|
|
35
35
|
export function fuzorPlugin(options = {}) {
|
|
36
|
-
const target = options.target ??
|
|
36
|
+
const target = options.target ?? process.env.FUZOR_TARGET ?? "spa";
|
|
37
|
+
if (target !== "spa" && target !== "mpa") {
|
|
38
|
+
throw new Error(`Unknown Fuzor navigation target: ${target}. Choose spa or mpa.`);
|
|
39
|
+
}
|
|
40
|
+
const withServer = options.server ?? process.env.FUZOR_SERVER === "1";
|
|
37
41
|
const inline = options.inline ?? process.env.FUZOR_INLINE === "1";
|
|
42
|
+
if (inline && withServer)
|
|
43
|
+
throw new Error("SPA inline output cannot be combined with server output.");
|
|
44
|
+
const serverOutDir = `dist-${target}-server/client`;
|
|
38
45
|
let vite;
|
|
39
46
|
let project;
|
|
40
47
|
let projectPromise;
|
|
@@ -137,8 +144,8 @@ export function fuzorPlugin(options = {}) {
|
|
|
137
144
|
name: "fuzor",
|
|
138
145
|
enforce: "pre",
|
|
139
146
|
config() {
|
|
140
|
-
if (
|
|
141
|
-
return { build: { outDir:
|
|
147
|
+
if (withServer)
|
|
148
|
+
return { build: { outDir: serverOutDir } };
|
|
142
149
|
if (target === "spa" && inline)
|
|
143
150
|
return {
|
|
144
151
|
build: {
|
|
@@ -170,7 +177,7 @@ const islands = { ${registry} };
|
|
|
170
177
|
const outlet = document.querySelector("fuzor-router");
|
|
171
178
|
if (!outlet) throw new Error("Fuzor outlet is missing");
|
|
172
179
|
${target === "spa"
|
|
173
|
-
? "void createRouter(outlet, { islands }).start();"
|
|
180
|
+
? "if (!outlet.hasAttribute(\"data-fuzor-not-found\")) void createRouter(outlet, { islands }).start();"
|
|
174
181
|
: "void mountIslands(outlet, islands);"}`;
|
|
175
182
|
},
|
|
176
183
|
transformIndexHtml: {
|
|
@@ -190,16 +197,19 @@ ${target === "spa"
|
|
|
190
197
|
},
|
|
191
198
|
configureServer(server) {
|
|
192
199
|
devServer = server;
|
|
193
|
-
if (target
|
|
200
|
+
if (withServer || target === "mpa") {
|
|
194
201
|
server.middlewares.use(async (request, response, next) => {
|
|
195
202
|
const pathname = new URL(request.url ?? "/", "http://fuzor.local").pathname;
|
|
196
|
-
if (
|
|
203
|
+
if (withServer && !pathname.startsWith("/@") && !pathname.startsWith("/__") && !pathname.includes(".")) {
|
|
197
204
|
try {
|
|
198
205
|
const raw = await readFile(path.join(vite.root, "index.html"), "utf8");
|
|
199
206
|
const template = await server.transformIndexHtml("/", raw);
|
|
200
|
-
const
|
|
201
|
-
const notFoundDocument = replaceOutlet(template,
|
|
202
|
-
const
|
|
207
|
+
const compiled = await loadProject();
|
|
208
|
+
const notFoundDocument = replaceOutlet(template, '<fuzor-router data-fuzor-not-found><h1>Not found</h1></fuzor-router>');
|
|
209
|
+
const manifest = target === "spa"
|
|
210
|
+
? { document: template, routes: Object.fromEntries(compiled.routes.map((route) => [route.path, true])), notFoundDocument }
|
|
211
|
+
: { documents: Object.fromEntries(compiled.routes.map((route) => [route.path, replaceOutlet(template, `<fuzor-router>${route.html}</fuzor-router>`)])), notFoundDocument };
|
|
212
|
+
const result = await createServerHandler(manifest)(new Request(new URL(request.url ?? "/", "http://fuzor.local"), { method: request.method ?? "GET" }));
|
|
203
213
|
response.writeHead(result.status, Object.fromEntries(result.headers));
|
|
204
214
|
response.end(Buffer.from(await result.arrayBuffer()));
|
|
205
215
|
}
|
|
@@ -239,9 +249,7 @@ ${target === "spa"
|
|
|
239
249
|
if (vite.command !== "build")
|
|
240
250
|
return;
|
|
241
251
|
const outDir = path.resolve(vite.root, vite.build.outDir);
|
|
242
|
-
if (target === "spa") {
|
|
243
|
-
if (!inline)
|
|
244
|
-
return;
|
|
252
|
+
if (target === "spa" && inline) {
|
|
245
253
|
let html = await readFile(path.join(outDir, "index.html"), "utf8");
|
|
246
254
|
const assetFiles = new Set();
|
|
247
255
|
for (const match of html.matchAll(/<script\b[^>]*\bsrc="([^"]+)"[^>]*><\/script>/g)) {
|
|
@@ -281,17 +289,21 @@ ${target === "spa"
|
|
|
281
289
|
}
|
|
282
290
|
const compiled = await loadProject();
|
|
283
291
|
const rootHtml = await readFile(path.join(outDir, "index.html"), "utf8");
|
|
284
|
-
if (
|
|
292
|
+
if (withServer) {
|
|
285
293
|
const serverDir = path.resolve(outDir, "../server");
|
|
286
|
-
const
|
|
287
|
-
const
|
|
294
|
+
const notFoundDocument = replaceOutlet(rootHtml, '<fuzor-router data-fuzor-not-found><h1>Not found</h1></fuzor-router>');
|
|
295
|
+
const manifest = target === "spa"
|
|
296
|
+
? { document: rootHtml, routes: Object.fromEntries(compiled.routes.map((route) => [route.path, true])), notFoundDocument }
|
|
297
|
+
: { documents: Object.fromEntries(compiled.routes.map((route) => [route.path, replaceOutlet(rootHtml, `<fuzor-router>${route.html}</fuzor-router>`)])), notFoundDocument };
|
|
288
298
|
await mkdir(serverDir, { recursive: true });
|
|
289
|
-
await writeFile(path.join(serverDir, "entry.mjs"), `import {
|
|
290
|
-
`export const manifest = ${JSON.stringify(
|
|
291
|
-
`export const handler =
|
|
299
|
+
await writeFile(path.join(serverDir, "entry.mjs"), `import { createServerHandler } from "fuzor/server";\n` +
|
|
300
|
+
`export const manifest = ${JSON.stringify(manifest)};\n` +
|
|
301
|
+
`export const handler = createServerHandler(manifest);\n`, "utf8");
|
|
292
302
|
await unlink(path.join(outDir, "index.html"));
|
|
293
303
|
return;
|
|
294
304
|
}
|
|
305
|
+
if (target === "spa")
|
|
306
|
+
return;
|
|
295
307
|
for (const route of compiled.routes) {
|
|
296
308
|
if (route.path === "/")
|
|
297
309
|
continue;
|
package/dist/vite.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.js","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vite.js","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fuzor",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"bin": {
|
|
6
6
|
"fuzor": "./dist/cli.js"
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"dist",
|
|
10
10
|
"templates/basic"
|
|
11
11
|
],
|
|
12
|
-
"description": "HTML-first framework
|
|
12
|
+
"description": "HTML-first framework for SPA or MPA builds with static or server delivery",
|
|
13
13
|
"license": "MIT",
|
|
14
14
|
"homepage": "https://fuzor.dev",
|
|
15
15
|
"repository": {
|
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
"./compiler": "./dist/compiler/index.js",
|
|
22
22
|
"./vite": "./dist/vite.js",
|
|
23
23
|
"./create": "./dist/create.js",
|
|
24
|
-
"./
|
|
25
|
-
"./
|
|
24
|
+
"./server": "./dist/server.js",
|
|
25
|
+
"./server/node": "./dist/server/node.js",
|
|
26
26
|
"./runtime": "./dist/runtime/index.js",
|
|
27
27
|
"./runtime/islands": "./dist/runtime/islands.js",
|
|
28
28
|
"./islands/react": "./dist/islands/react.js",
|
|
@@ -76,8 +76,10 @@
|
|
|
76
76
|
"test": "vitest run",
|
|
77
77
|
"example:spa": "pnpm build && pnpm --filter @fuzor/example build:spa",
|
|
78
78
|
"example:mpa": "pnpm build && pnpm --filter @fuzor/example build:mpa",
|
|
79
|
-
"example:
|
|
80
|
-
"example:
|
|
79
|
+
"example:spa:server": "pnpm build && pnpm --filter @fuzor/example build:spa:server",
|
|
80
|
+
"example:mpa:server": "pnpm build && pnpm --filter @fuzor/example build:mpa:server",
|
|
81
|
+
"example:dev:spa:server": "pnpm build && pnpm --filter @fuzor/example dev:spa:server",
|
|
82
|
+
"example:dev:mpa:server": "pnpm build && pnpm --filter @fuzor/example dev:mpa:server",
|
|
81
83
|
"website:dev": "pnpm build && pnpm --filter @fuzor/website dev",
|
|
82
84
|
"website:build": "pnpm build && pnpm --filter @fuzor/website build",
|
|
83
85
|
"website:verify": "node scripts/verify-website.mjs",
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
# __APP_NAME__
|
|
2
2
|
|
|
3
|
-
This app uses one `pages/` tree for
|
|
3
|
+
This app uses one `pages/` tree for SPA or MPA navigation, with static or server delivery.
|
|
4
4
|
|
|
5
5
|
```bash
|
|
6
6
|
pnpm dev # SPA development
|
|
7
7
|
pnpm dev:mpa # MPA development
|
|
8
|
-
pnpm dev:
|
|
8
|
+
pnpm dev:spa:server # SPA with a server
|
|
9
|
+
pnpm dev:mpa:server # MPA with a server
|
|
9
10
|
pnpm build:spa # ESM SPA with lazy islands
|
|
10
11
|
pnpm build:spa --inline # single HTML file
|
|
11
12
|
pnpm build:mpa # static HTML pages
|
|
12
|
-
pnpm build:
|
|
13
|
-
pnpm
|
|
13
|
+
pnpm build:spa:server # one compiled SPA document in a server bundle
|
|
14
|
+
pnpm build:mpa:server # precompiled MPA documents in a server bundle
|
|
15
|
+
pnpm start:mpa:server # serve the completed MPA server build
|
|
14
16
|
```
|
|
15
17
|
|
|
16
|
-
Add HTML or Markdown routes under `pages/`, layouts under `pages/`, and interactive modules under `islands/`. The same sources build in every
|
|
18
|
+
Add HTML or Markdown routes under `pages/`, layouts under `pages/`, and interactive modules under `islands/`. The same sources build in every combination.
|
|
@@ -7,12 +7,15 @@
|
|
|
7
7
|
"dev": "fuzor dev --target spa",
|
|
8
8
|
"dev:spa": "fuzor dev --target spa",
|
|
9
9
|
"dev:mpa": "fuzor dev --target mpa",
|
|
10
|
-
"dev:
|
|
10
|
+
"dev:spa:server": "fuzor dev --target spa --server",
|
|
11
|
+
"dev:mpa:server": "fuzor dev --target mpa --server",
|
|
11
12
|
"build": "fuzor build --target mpa",
|
|
12
13
|
"build:spa": "fuzor build --target spa",
|
|
13
14
|
"build:mpa": "fuzor build --target mpa",
|
|
14
|
-
"build:
|
|
15
|
-
"
|
|
15
|
+
"build:spa:server": "fuzor build --target spa --server",
|
|
16
|
+
"build:mpa:server": "fuzor build --target mpa --server",
|
|
17
|
+
"start:spa:server": "node server.mjs spa",
|
|
18
|
+
"start:mpa:server": "node server.mjs mpa",
|
|
16
19
|
"typecheck": "tsc --noEmit"
|
|
17
20
|
},
|
|
18
21
|
"dependencies": { "fuzor": "__FUZOR_VERSION__" },
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<section class="hero">
|
|
2
|
-
<p class="eyebrow">HTML first · SPA
|
|
2
|
+
<p class="eyebrow">HTML first · SPA or MPA · Static or server</p>
|
|
3
3
|
<app-badge></app-badge>
|
|
4
4
|
<h1>Build once. Choose how to ship.</h1>
|
|
5
|
-
<p>Edit <code>pages/index.html</code> and
|
|
5
|
+
<p>Edit <code>pages/index.html</code> and build the same app as SPA or MPA, with static or server delivery.</p>
|
|
6
6
|
<fuzor-island src="counter" client:load></fuzor-island>
|
|
7
7
|
<p class="hint">This button is in the initial HTML. Its behavior loads as an island.</p>
|
|
8
8
|
<fuzor-link href="/docs/" class="link">Explore the Markdown page →</fuzor-link>
|
|
@@ -4,5 +4,5 @@
|
|
|
4
4
|
<nav><fuzor-link href="/">Home</fuzor-link><fuzor-link href="/about/">About</fuzor-link><fuzor-link href="/docs/">Docs</fuzor-link></nav>
|
|
5
5
|
</header>
|
|
6
6
|
<main><slot></slot></main>
|
|
7
|
-
<footer>One app.
|
|
7
|
+
<footer>One app. SPA or MPA. Static or server.</footer>
|
|
8
8
|
</div>
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import { fileURLToPath } from "node:url";
|
|
3
|
-
import {
|
|
4
|
-
import { handler } from "./dist-ssr/server/entry.mjs";
|
|
3
|
+
import { createNodeServer } from "fuzor/server/node";
|
|
5
4
|
|
|
6
5
|
const here = path.dirname(fileURLToPath(import.meta.url));
|
|
6
|
+
const target = process.argv[2] ?? "mpa";
|
|
7
|
+
const { handler } = await import(`./${directory}/server/entry.mjs`);
|
|
7
8
|
const host = process.env.HOST ?? "127.0.0.1";
|
|
8
9
|
const port = Number(process.env.PORT ?? 4173);
|
|
9
|
-
|
|
10
|
+
createNodeServer({ handler, assetsDir: path.join(here, directory, "client") })
|
|
10
11
|
.listen(port, host, () => console.log(`Fuzor listening on http://${host}:${port}`));
|
package/dist/ssr/node.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { type Server } from "node:http";
|
|
2
|
-
/** Node adapter for a compiled Fuzor SSR entry and its Vite client assets. */
|
|
3
|
-
export declare function createNodeSsrServer(options: {
|
|
4
|
-
readonly handler: (request: Request) => Promise<Response>;
|
|
5
|
-
readonly assetsDir: string;
|
|
6
|
-
}): Server;
|
|
7
|
-
//# sourceMappingURL=node.d.ts.map
|
package/dist/ssr/node.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/ssr/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAStD,8EAA8E;AAC9E,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAC3C,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,GAAG,MAAM,CAiCT"}
|
package/dist/ssr/node.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/ssr/node.ts"],"names":[],"mappings":"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"}
|
package/dist/ssr.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { Effect } from "effect";
|
|
2
|
-
export type SsrManifest = {
|
|
3
|
-
/** Complete HTML documents, assembled by the compiler rather than per request. */
|
|
4
|
-
readonly documents: Readonly<Record<string, string>>;
|
|
5
|
-
readonly notFoundDocument: string;
|
|
6
|
-
};
|
|
7
|
-
export declare function renderSsrEffect(manifest: SsrManifest, request: Request): Effect.Effect<Response, never, never>;
|
|
8
|
-
/** A platform-neutral Fetch handler; adapters only serve assets and forward document requests. */
|
|
9
|
-
export declare function createSsrHandler(manifest: SsrManifest): (request: Request) => Promise<Response>;
|
|
10
|
-
//# sourceMappingURL=ssr.d.ts.map
|
package/dist/ssr.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ssr.d.ts","sourceRoot":"","sources":["../src/ssr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,MAAM,WAAW,GAAG;IACxB,kFAAkF;IAClF,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC,CAAC;AAEF,wBAAgB,eAAe,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,yCAYtE;AAED,kGAAkG;AAClG,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,WAAW,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAE/F"}
|
package/dist/ssr.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ssr.js","sourceRoot":"","sources":["../src/ssr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAQhC,MAAM,UAAU,eAAe,CAAC,QAAqB,EAAE,OAAgB;IACrE,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;QAC/C,MAAM,KAAK,GAAG,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC;QAC1E,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAClG,MAAM,MAAM,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAClD,MAAM,OAAO,GAAG,EAAE,cAAc,EAAE,0BAA0B,EAAE,CAAC;QAC/D,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC1D,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IACrH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,gBAAgB,CAAC,QAAqB;IACpD,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AAC5E,CAAC"}
|