fuzor 0.2.0 → 0.3.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2021-present Ivan Jeremic
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,16 +1,15 @@
1
1
  # Fuzor
2
2
 
3
- **One source app. Three ways to ship.** Write your routes, layouts, components, and islands once, then compile that same source tree as a SPA, a static MPA, or a server-served app. Choose a build target, and Fuzor's compiler produces the right output for it. Your pages and islands keep the same appearance and behavior in every mode, with no rewrites or separate implementations.
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
- | Target | What the build produces | How navigation works |
7
+ | Navigation | Static output | With `--server` |
8
8
  | --- | --- | --- |
9
- | `spa` | One HTML document containing the compiled route templates, plus an ESM entry and lazy island chunks | The browser selects templates with the History API; route content is already in the initial document |
10
- | `mpa` | A standalone HTML file per route and client assets | Ordinary links load the next document; suitable for static hosting |
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
- Despite the `ssr` name, the current server target **prerenders at build time**. It does not render or stitch page HTML on each request. The MPA target is also static generation; there is no separate SSG mode. Add `--inline` to a SPA build to put its JavaScript and CSS into a single HTML file for embedded or offline UIs.
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. The published `ssr` target remains an alias for `mpa --server`. 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:ssr
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:ssr # examples/basic/dist-ssr/
39
- pnpm --filter @fuzor/example start:ssr # serve the built SSR target on port 4173
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 the MPA and server targets. In the SPA, 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
+ `<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 all three targets. The `create-fuzor` npm package powers this command.
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 or ssr; accepts --host and --port
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 ssr
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 all three targets, 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.
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. The old `fuzor build --target ssr` command still builds `dist-ssr/` for compatibility. Deployment adapters and `fuzor deploy` are not implemented.
97
100
 
98
101
  ## Current boundaries
99
102
 
100
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. 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
- The SPA carries every route's HTML in its initial document, so that document grows with the route tree, even though its island code loads lazily. SPA deep links need a hosting fallback to `index.html`. The inline build requires assets it can embed.
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", "ssr"], default: "spa", description: "Output profile" });
9
- function selectTarget(target, inline = false) {
8
+ const targetArg = () => ({ type: "enum", options: ["spa", "mpa", "ssr"], default: "spa", description: "Navigation target (ssr is a legacy alias for mpa --server)" });
9
+ function selectTarget(target, server = false, inline = false) {
10
10
  process.env.FUZOR_TARGET = target;
11
+ process.env.FUZOR_SERVER = server || target === "ssr" ? "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
- selectTarget(target);
24
+ const withServer = Boolean(args.server || target === "ssr");
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 === "ssr" ? "MPA" : 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 || target === "ssr");
66
71
  if (args.inline && target !== "spa")
67
72
  throw new Error("--inline is only supported for the SPA target.");
68
- selectTarget(target, args.inline);
69
- const outDir = target === "ssr" ? "dist-ssr/client" : `dist-${target}`;
70
- prompts.intro(colors.cyan(colors.bold(`◉ Fuzor ${target.toUpperCase()}`)));
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 ? (target === "ssr" ? "dist-ssr/client" : `dist-${target}-server/client`) : `dist-${target}`;
77
+ const label = `${target === "ssr" ? "MPA" : 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 ${target.toUpperCase()}`);
81
+ spin.start(args.inline ? "Building inline SPA" : `Building ${label}`);
74
82
  else
75
- console.log(args.inline ? "Building inline SPA..." : `Building ${target.toUpperCase()}...`);
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":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/compiler/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAE7C,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAKhD,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC,CAAC;AAIF,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,IAAI,mBAAmB;CACjC;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACtE,QAAQ,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC;IAChF,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IACrE,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;CAC1E,CAAC;AAEF,eAAO,MAAM,kBAAkB,mEAAsE,CAAC;AAKtG,eAAO,MAAM,sBAAsB,oDAWC,CAAC;AAoDrC,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM;;;2CAiFhD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAErE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/compiler/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAE7C,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAKhD,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC,CAAC;AAIF,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,IAAI,mBAAmB;CACjC;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACtE,QAAQ,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC;IAChF,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IACrE,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;CAC1E,CAAC;AAEF,eAAO,MAAM,kBAAkB,mEAAsE,CAAC;AAKtG,eAAO,MAAM,sBAAsB,oDAWC,CAAC;AAuErC,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM;;;2CAiFhD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAErE"}
@@ -73,9 +73,33 @@ function expandComponents(html, components, stack = []) {
73
73
  return html;
74
74
  }
75
75
  function compileLinks(html) {
76
- return html
77
- .replace(/<fuzor-link\b([^>]*)>/g, "<a data-fuzor-link$1>")
78
- .replace(/<\/fuzor-link\s*>/g, "</a>");
76
+ const fragment = parseFragment(html, { sourceCodeLocationInfo: true });
77
+ const replacements = [];
78
+ const visit = (node) => {
79
+ if (!("tagName" in node))
80
+ return;
81
+ if (node.tagName === "fuzor-link") {
82
+ const location = node.sourceCodeLocation;
83
+ if (!location?.startTag || !location.endTag)
84
+ throw new Error("<fuzor-link> must have a closing tag.");
85
+ const opening = html.slice(location.startTag.startOffset, location.startTag.endOffset)
86
+ .replace(/^<fuzor-link\b/i, "<a data-fuzor-link");
87
+ replacements.push({ start: location.startTag.startOffset, end: location.startTag.endOffset, value: opening });
88
+ replacements.push({ start: location.endTag.startOffset, end: location.endTag.endOffset, value: "</a>" });
89
+ }
90
+ for (const child of node.childNodes)
91
+ visit(child);
92
+ if (node.tagName === "template") {
93
+ for (const child of node.content.childNodes)
94
+ visit(child);
95
+ }
96
+ };
97
+ for (const node of fragment.childNodes)
98
+ visit(node);
99
+ for (const replacement of replacements.sort((a, b) => b.start - a.start)) {
100
+ html = html.slice(0, replacement.start) + replacement.value + html.slice(replacement.end);
101
+ }
102
+ return html;
79
103
  }
80
104
  export function compileProjectEffect(root) {
81
105
  return Effect.gen(function* () {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/compiler/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/compiler/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE3D,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAgC,MAAM,QAAQ,CAAC;AAarE,MAAM,WAAW,GAAG,qCAAqC,CAAC;AAE1D,MAAM,OAAO,aAAc,SAAQ,KAAK;IAC7B,IAAI,GAAG,eAAe,CAAC;CACjC;AASD,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAA0B,yBAAyB,CAAC,CAAC;AAEtG,MAAM,EAAE,GAAG,CAAI,KAAa,EAAE,MAAwB,EAAE,EAAE,CACxD,MAAM,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,aAAa,CAAC,GAAG,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAExG,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE;IACtE,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,eAAe,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACvE,OAAO,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,eAAe,SAAS,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACzG,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,eAAe,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,gBAAgB,IAAI,EAAE,EAAE,KAAK,IAAI,EAAE;QACtD,IAAI,CAAC;YAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAAC,CAAC;QAC3C,OAAO,KAAK,EAAE,CAAC;YACb,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,KAAK,CAAC;YACrE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC;CAC+B,CAAC,CAAC;AAErC,SAAS,SAAS,CAAC,WAAmB;IACpC,OAAO,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACjF,CAAC;AAED,SAAS,QAAQ,CAAC,MAAc,EAAE,OAAe,EAAE,KAAa;IAC9D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,wCAAwC,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY,EAAE,UAAuC,EAAE,QAA2B,EAAE;IAC5G,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,EAAE,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE,MAAM,YAAY,GAAyD,EAAE,CAAC;IAC9E,MAAM,KAAK,GAAG,CAAC,IAAuC,EAAQ,EAAE;QAC9D,IAAI,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC;YAAE,OAAO;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;QAC1B,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC/F,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC;YACzC,IAAI,CAAC,QAAQ,EAAE,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,4BAA4B,CAAC,CAAC;YAC7G,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACtF,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;YAC7D,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAC/F,YAAY,CAAC,IAAI,CAAC;gBAChB,KAAK,EAAE,QAAQ,CAAC,WAAW;gBAC3B,GAAG,EAAE,QAAQ,CAAC,SAAS;gBACvB,KAAK,EAAE,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC;aAC5D,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU;YAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,IAAI,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YAChC,KAAK,MAAM,KAAK,IAAK,IAAyC,CAAC,OAAO,CAAC,UAAU;gBAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAClG,CAAC;IACH,CAAC,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,UAAU;QAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACpD,KAAK,MAAM,WAAW,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QACzE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC5F,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,EAAE,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE,MAAM,YAAY,GAAyD,EAAE,CAAC;IAC9E,MAAM,KAAK,GAAG,CAAC,IAAuC,EAAQ,EAAE;QAC9D,IAAI,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC;YAAE,OAAO;QACjC,IAAI,IAAI,CAAC,OAAO,KAAK,YAAY,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC;YACzC,IAAI,CAAC,QAAQ,EAAE,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;YACtG,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;iBACnF,OAAO,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,CAAC;YACpD,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;YAC9G,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3G,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU;YAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,IAAI,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YAChC,KAAK,MAAM,KAAK,IAAK,IAAyC,CAAC,OAAO,CAAC,UAAU;gBAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAClG,CAAC;IACH,CAAC,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,UAAU;QAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACpD,KAAK,MAAM,WAAW,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QACzE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC5F,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,kBAAkB,CAAC;QACrC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAEtD,KAAK,MAAM,SAAS,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,CAAC;YACpD,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAChD,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;gBAAE,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,GAAG,SAAS,uBAAuB,CAAC,CAAC,CAAC;QAC/G,CAAC;QAED,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC7C,MAAM,gBAAgB,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAC3D,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YACrE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,OAAO;YAC7D,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACrC,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/E,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,+BAA+B,KAAK,CAAC,IAAI,yDAAyD,CAAC,CAAC,CAAC;YAC5I,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACnD,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAEvC,MAAM,MAAM,GAAoB,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,CAAC,SAAiB,EAAE,WAAmB,EAAE,OAA0B,EAAsC,EAAE,CACvH,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YACvD,MAAM,kBAAkB,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,WAAW,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5F,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACpD,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAC5F,IAAI,cAAc,IAAI,iBAAiB,EAAE,CAAC;gBACxC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,yBAAyB,WAAW,MAAM,UAAU,QAAQ,kBAAkB,EAAE,CAAC,CAAC,CAAC;YAC1H,CAAC;YACD,MAAM,cAAc,GAAG,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC;YACxG,MAAM,UAAU,GAAG,cAAc;gBAC/B,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAC9C,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;YACjB,IAAI,cAAc;gBAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAE/C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC3C,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC7C,IAAI,OAAO,IAAI,WAAW;gBAAE,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,GAAG,SAAS,oCAAoC,CAAC,CAAC,CAAC;YACpH,IAAI,OAAO,IAAI,WAAW,EAAE,CAAC;gBAC3B,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;gBAC3C,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACnC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACnB,IAAI,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;oBAC5C,GAAG,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;oBACzC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,aAAa,CAAC,qBAAqB,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;iBACrF,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;gBACT,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;oBAC1B,GAAG,EAAE,GAAG,EAAE;wBACR,KAAK,IAAI,KAAK,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;4BAC5D,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAE,EAAE,OAAO,EAAE,UAAU,KAAK,GAAG,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC;wBACvF,CAAC;wBACD,OAAO,YAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;oBAC7D,CAAC;oBACD,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,aAAa,CAAC,0BAA0B,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;iBAC1F,CAAC,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YACvE,CAAC;YAED,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EACjG,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,EAClG,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEL,KAAK,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAChD,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,GAAG,SAAS,sDAAsD,CAAC,CAAC,CAAC;QAC5G,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,OAAO,EAAE,MAAM,EAAE,KAAK,EAA4B,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;AACpG,CAAC"}
@@ -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"}
@@ -0,0 +1,46 @@
1
+ import { createServer } from "node:http";
2
+ import { readFile } from "node:fs/promises";
3
+ import path from "node:path";
4
+ const types = {
5
+ ".js": "text/javascript", ".css": "text/css", ".svg": "image/svg+xml",
6
+ ".png": "image/png", ".jpg": "image/jpeg", ".webp": "image/webp", ".ico": "image/x-icon"
7
+ };
8
+ /** Node adapter for a compiled Fuzor server entry and its Vite client assets. */
9
+ export function createNodeServer(options) {
10
+ const assetsRoot = path.resolve(options.assetsDir);
11
+ return createServer(async (request, response) => {
12
+ try {
13
+ const url = new URL(request.url ?? "/", "http://fuzor.local");
14
+ if (url.pathname.startsWith("/assets/")) {
15
+ if (request.method !== "GET" && request.method !== "HEAD") {
16
+ response.writeHead(405, { allow: "GET, HEAD" }).end();
17
+ return;
18
+ }
19
+ const file = path.resolve(assetsRoot, `.${url.pathname}`);
20
+ if (!file.startsWith(assetsRoot + path.sep)) {
21
+ response.writeHead(403).end();
22
+ return;
23
+ }
24
+ try {
25
+ const body = await readFile(file);
26
+ response.writeHead(200, { "content-type": types[path.extname(file)] ?? "application/octet-stream" });
27
+ response.end(request.method === "HEAD" ? undefined : body);
28
+ }
29
+ catch (error) {
30
+ if (error.code !== "ENOENT")
31
+ throw error;
32
+ response.writeHead(404).end();
33
+ }
34
+ return;
35
+ }
36
+ const result = await options.handler(new Request(url, { method: request.method ?? "GET" }));
37
+ response.writeHead(result.status, Object.fromEntries(result.headers));
38
+ response.end(request.method === "HEAD" ? undefined : Buffer.from(await result.arrayBuffer()));
39
+ }
40
+ catch (error) {
41
+ response.writeHead(500, { "content-type": "text/plain; charset=utf-8" });
42
+ response.end(`Fuzor server error: ${String(error)}`);
43
+ }
44
+ });
45
+ }
46
+ //# sourceMappingURL=node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/server/node.ts"],"names":[],"mappings":"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"}
@@ -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"}
package/dist/server.js ADDED
@@ -0,0 +1,21 @@
1
+ import { Effect } from "effect";
2
+ export function renderServerEffect(manifest, request) {
3
+ return Effect.gen(function* () {
4
+ const pathname = new URL(request.url).pathname;
5
+ const route = pathname === "/" ? "/" : `${pathname.replace(/\/+$/, "")}/`;
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;
9
+ const status = document === undefined ? 404 : 200;
10
+ const headers = { "content-type": "text/html; charset=utf-8" };
11
+ if (request.method !== "GET" && request.method !== "HEAD") {
12
+ return new Response(null, { status: 405, headers: { ...headers, allow: "GET, HEAD" } });
13
+ }
14
+ return new Response(request.method === "HEAD" ? null : document ?? manifest.notFoundDocument, { status, headers });
15
+ });
16
+ }
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));
20
+ }
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"}
@@ -1,7 +1,3 @@
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;
1
+ /** Compatibility export for the old server adapter name. */
2
+ export { createNodeServer as createNodeSsrServer } from "../server/node.js";
7
3
  //# sourceMappingURL=node.d.ts.map
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/ssr/node.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,OAAO,EAAE,gBAAgB,IAAI,mBAAmB,EAAE,MAAM,mBAAmB,CAAC"}
package/dist/ssr/node.js CHANGED
@@ -1,46 +1,3 @@
1
- import { createServer } from "node:http";
2
- import { readFile } from "node:fs/promises";
3
- import path from "node:path";
4
- const types = {
5
- ".js": "text/javascript", ".css": "text/css", ".svg": "image/svg+xml",
6
- ".png": "image/png", ".jpg": "image/jpeg", ".webp": "image/webp", ".ico": "image/x-icon"
7
- };
8
- /** Node adapter for a compiled Fuzor SSR entry and its Vite client assets. */
9
- export function createNodeSsrServer(options) {
10
- const assetsRoot = path.resolve(options.assetsDir);
11
- return createServer(async (request, response) => {
12
- try {
13
- const url = new URL(request.url ?? "/", "http://fuzor.local");
14
- if (url.pathname.startsWith("/assets/")) {
15
- if (request.method !== "GET" && request.method !== "HEAD") {
16
- response.writeHead(405, { allow: "GET, HEAD" }).end();
17
- return;
18
- }
19
- const file = path.resolve(assetsRoot, `.${url.pathname}`);
20
- if (!file.startsWith(assetsRoot + path.sep)) {
21
- response.writeHead(403).end();
22
- return;
23
- }
24
- try {
25
- const body = await readFile(file);
26
- response.writeHead(200, { "content-type": types[path.extname(file)] ?? "application/octet-stream" });
27
- response.end(request.method === "HEAD" ? undefined : body);
28
- }
29
- catch (error) {
30
- if (error.code !== "ENOENT")
31
- throw error;
32
- response.writeHead(404).end();
33
- }
34
- return;
35
- }
36
- const result = await options.handler(new Request(url, { method: request.method ?? "GET" }));
37
- response.writeHead(result.status, Object.fromEntries(result.headers));
38
- response.end(request.method === "HEAD" ? undefined : Buffer.from(await result.arrayBuffer()));
39
- }
40
- catch (error) {
41
- response.writeHead(500, { "content-type": "text/plain; charset=utf-8" });
42
- response.end(`Fuzor SSR error: ${String(error)}`);
43
- }
44
- });
45
- }
1
+ /** Compatibility export for the old server adapter name. */
2
+ export { createNodeServer as createNodeSsrServer } from "../server/node.js";
46
3
  //# sourceMappingURL=node.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/ssr/node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/ssr/node.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,OAAO,EAAE,gBAAgB,IAAI,mBAAmB,EAAE,MAAM,mBAAmB,CAAC"}
package/dist/ssr.d.ts CHANGED
@@ -1,10 +1,4 @@
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>;
1
+ /** Compatibility exports for the old MPA server target. */
2
+ export { createServerHandler as createSsrHandler, renderServerEffect as renderSsrEffect } from "./server.js";
3
+ export type { ServerManifest as SsrManifest } from "./server.js";
10
4
  //# sourceMappingURL=ssr.d.ts.map
package/dist/ssr.d.ts.map CHANGED
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"ssr.d.ts","sourceRoot":"","sources":["../src/ssr.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,OAAO,EAAE,mBAAmB,IAAI,gBAAgB,EAAE,kBAAkB,IAAI,eAAe,EAAE,MAAM,aAAa,CAAC;AAC7G,YAAY,EAAE,cAAc,IAAI,WAAW,EAAE,MAAM,aAAa,CAAC"}
package/dist/ssr.js CHANGED
@@ -1,19 +1,3 @@
1
- import { Effect } from "effect";
2
- export function renderSsrEffect(manifest, request) {
3
- return Effect.gen(function* () {
4
- const pathname = new URL(request.url).pathname;
5
- const route = pathname === "/" ? "/" : `${pathname.replace(/\/+$/, "")}/`;
6
- const document = Object.hasOwn(manifest.documents, route) ? manifest.documents[route] : undefined;
7
- const status = document === undefined ? 404 : 200;
8
- const headers = { "content-type": "text/html; charset=utf-8" };
9
- if (request.method !== "GET" && request.method !== "HEAD") {
10
- return new Response(null, { status: 405, headers: { ...headers, allow: "GET, HEAD" } });
11
- }
12
- return new Response(request.method === "HEAD" ? null : document ?? manifest.notFoundDocument, { status, headers });
13
- });
14
- }
15
- /** A platform-neutral Fetch handler; adapters only serve assets and forward document requests. */
16
- export function createSsrHandler(manifest) {
17
- return (request) => Effect.runPromise(renderSsrEffect(manifest, request));
18
- }
1
+ /** Compatibility exports for the old MPA server target. */
2
+ export { createServerHandler as createSsrHandler, renderServerEffect as renderSsrEffect } from "./server.js";
19
3
  //# sourceMappingURL=ssr.js.map
package/dist/ssr.js.map CHANGED
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"ssr.js","sourceRoot":"","sources":["../src/ssr.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,OAAO,EAAE,mBAAmB,IAAI,gBAAgB,EAAE,kBAAkB,IAAI,eAAe,EAAE,MAAM,aAAa,CAAC"}
package/dist/vite.d.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  import { type Plugin } from "vite";
2
2
  export type FuzorPluginOptions = {
3
+ /** `ssr` is retained as an alias for `mpa` with server output. */
3
4
  readonly target?: "spa" | "mpa" | "ssr";
5
+ readonly server?: boolean;
4
6
  /** Emit the SPA as one HTML file with all JavaScript and CSS inlined. */
5
7
  readonly inline?: boolean;
6
8
  };
@@ -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,GAAG,KAAK,CAAC;IACxC,yEAAyE;IACzE,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AA8BF,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,MAAM,CA2PpE"}
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,kEAAkE;IAClE,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IACxC,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,CAqQpE"}
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 { createSsrHandler } from "./ssr.js";
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,14 @@ 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 ?? (process.env.FUZOR_TARGET === "mpa" || process.env.FUZOR_TARGET === "ssr" ? process.env.FUZOR_TARGET : "spa");
36
+ const selectedTarget = options.target ?? (process.env.FUZOR_TARGET === "mpa" || process.env.FUZOR_TARGET === "ssr" ? process.env.FUZOR_TARGET : "spa");
37
+ const legacySsr = selectedTarget === "ssr";
38
+ const target = legacySsr ? "mpa" : selectedTarget;
39
+ const withServer = legacySsr || (options.server ?? process.env.FUZOR_SERVER === "1");
37
40
  const inline = options.inline ?? process.env.FUZOR_INLINE === "1";
41
+ if (inline && withServer)
42
+ throw new Error("SPA inline output cannot be combined with server output.");
43
+ const serverOutDir = legacySsr ? "dist-ssr/client" : `dist-${target}-server/client`;
38
44
  let vite;
39
45
  let project;
40
46
  let projectPromise;
@@ -137,8 +143,8 @@ export function fuzorPlugin(options = {}) {
137
143
  name: "fuzor",
138
144
  enforce: "pre",
139
145
  config() {
140
- if (target === "ssr")
141
- return { build: { outDir: "dist-ssr/client" } };
146
+ if (withServer)
147
+ return { build: { outDir: serverOutDir } };
142
148
  if (target === "spa" && inline)
143
149
  return {
144
150
  build: {
@@ -170,7 +176,7 @@ const islands = { ${registry} };
170
176
  const outlet = document.querySelector("fuzor-router");
171
177
  if (!outlet) throw new Error("Fuzor outlet is missing");
172
178
  ${target === "spa"
173
- ? "void createRouter(outlet, { islands }).start();"
179
+ ? "if (!outlet.hasAttribute(\"data-fuzor-not-found\")) void createRouter(outlet, { islands }).start();"
174
180
  : "void mountIslands(outlet, islands);"}`;
175
181
  },
176
182
  transformIndexHtml: {
@@ -190,16 +196,19 @@ ${target === "spa"
190
196
  },
191
197
  configureServer(server) {
192
198
  devServer = server;
193
- if (target !== "spa") {
199
+ if (withServer || target === "mpa") {
194
200
  server.middlewares.use(async (request, response, next) => {
195
201
  const pathname = new URL(request.url ?? "/", "http://fuzor.local").pathname;
196
- if (target === "ssr" && !pathname.startsWith("/@") && !pathname.startsWith("/__") && !pathname.includes(".")) {
202
+ if (withServer && !pathname.startsWith("/@") && !pathname.startsWith("/__") && !pathname.includes(".")) {
197
203
  try {
198
204
  const raw = await readFile(path.join(vite.root, "index.html"), "utf8");
199
205
  const template = await server.transformIndexHtml("/", raw);
200
- const documents = Object.fromEntries((await loadProject()).routes.map((route) => [route.path, replaceOutlet(template, `<fuzor-router>${route.html}</fuzor-router>`)]));
201
- const notFoundDocument = replaceOutlet(template, "<fuzor-router><h1>Not found</h1></fuzor-router>");
202
- const result = await createSsrHandler({ documents, notFoundDocument })(new Request(new URL(request.url ?? "/", "http://fuzor.local"), { method: request.method ?? "GET" }));
206
+ const compiled = await loadProject();
207
+ const notFoundDocument = replaceOutlet(template, '<fuzor-router data-fuzor-not-found><h1>Not found</h1></fuzor-router>');
208
+ const manifest = target === "spa"
209
+ ? { document: template, routes: Object.fromEntries(compiled.routes.map((route) => [route.path, true])), notFoundDocument }
210
+ : { documents: Object.fromEntries(compiled.routes.map((route) => [route.path, replaceOutlet(template, `<fuzor-router>${route.html}</fuzor-router>`)])), notFoundDocument };
211
+ const result = await createServerHandler(manifest)(new Request(new URL(request.url ?? "/", "http://fuzor.local"), { method: request.method ?? "GET" }));
203
212
  response.writeHead(result.status, Object.fromEntries(result.headers));
204
213
  response.end(Buffer.from(await result.arrayBuffer()));
205
214
  }
@@ -239,9 +248,7 @@ ${target === "spa"
239
248
  if (vite.command !== "build")
240
249
  return;
241
250
  const outDir = path.resolve(vite.root, vite.build.outDir);
242
- if (target === "spa") {
243
- if (!inline)
244
- return;
251
+ if (target === "spa" && inline) {
245
252
  let html = await readFile(path.join(outDir, "index.html"), "utf8");
246
253
  const assetFiles = new Set();
247
254
  for (const match of html.matchAll(/<script\b[^>]*\bsrc="([^"]+)"[^>]*><\/script>/g)) {
@@ -281,17 +288,21 @@ ${target === "spa"
281
288
  }
282
289
  const compiled = await loadProject();
283
290
  const rootHtml = await readFile(path.join(outDir, "index.html"), "utf8");
284
- if (target === "ssr") {
291
+ if (withServer) {
285
292
  const serverDir = path.resolve(outDir, "../server");
286
- const documents = Object.fromEntries(compiled.routes.map((route) => [route.path, replaceOutlet(rootHtml, `<fuzor-router>${route.html}</fuzor-router>`)]));
287
- const notFoundDocument = replaceOutlet(rootHtml, "<fuzor-router><h1>Not found</h1></fuzor-router>");
293
+ const notFoundDocument = replaceOutlet(rootHtml, '<fuzor-router data-fuzor-not-found><h1>Not found</h1></fuzor-router>');
294
+ const manifest = target === "spa"
295
+ ? { document: rootHtml, routes: Object.fromEntries(compiled.routes.map((route) => [route.path, true])), notFoundDocument }
296
+ : { documents: Object.fromEntries(compiled.routes.map((route) => [route.path, replaceOutlet(rootHtml, `<fuzor-router>${route.html}</fuzor-router>`)])), notFoundDocument };
288
297
  await mkdir(serverDir, { recursive: true });
289
- await writeFile(path.join(serverDir, "entry.mjs"), `import { createSsrHandler } from "fuzor/ssr";\n` +
290
- `export const manifest = ${JSON.stringify({ documents, notFoundDocument })};\n` +
291
- `export const handler = createSsrHandler(manifest);\n`, "utf8");
298
+ await writeFile(path.join(serverDir, "entry.mjs"), `import { createServerHandler } from "fuzor/server";\n` +
299
+ `export const manifest = ${JSON.stringify(manifest)};\n` +
300
+ `export const handler = createServerHandler(manifest);\n`, "utf8");
292
301
  await unlink(path.join(outDir, "index.html"));
293
302
  return;
294
303
  }
304
+ if (target === "spa")
305
+ return;
295
306
  for (const route of compiled.routes) {
296
307
  if (route.path === "/")
297
308
  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":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACtF,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAwD,MAAM,MAAM,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAwB,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAuB,MAAM,aAAa,CAAC;AAEvE,MAAM,SAAS,GAAG,sBAAsB,CAAC;AACzC,MAAM,iBAAiB,GAAG,KAAK,SAAS,EAAE,CAAC;AAC3C,MAAM,WAAW,GAAG,2BAA2B,CAAC;AAChD,MAAM,SAAS,GAAG,yBAAyB,CAAC;AAU5C,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,YAAY,CAAC,OAAwB,EAAE,QAAgB;IAC9D,MAAM,UAAU,GAAG,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC;IAC/E,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;IACxE,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,UAAU,EAAE,CAAC,CAAC;IAChE,OAAO,KAAK,CAAC,IAAI,CAAC;AACpB,CAAC;AAED,SAAS,SAAS,CAAC,OAAwB,EAAE,MAAqB,EAAE,QAAgB;IAClF,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,OAAO,iBAAiB,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,iBAAiB,CAAC;IAC3E,CAAC;IACD,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAC7C,+BAA+B,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,aAAa,CACvF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,OAAO,kCAAkC,SAAS,EAAE,CAAC;AACvD,CAAC;AAED,SAAS,aAAa,CAAC,QAAgB,EAAE,OAAe;IACtD,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACxC,IAAI,KAAK,GAAG,CAAC,IAAI,GAAG,GAAG,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,WAAW,QAAQ,SAAS,GAAG,CAAC,CAAC;IAC1G,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACvF,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,UAA8B,EAAE;IAC1D,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACvJ,MAAM,SAAS,GAAG,cAAc,KAAK,KAAK,CAAC;IAC3C,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC;IAClD,MAAM,UAAU,GAAG,SAAS,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,GAAG,CAAC,CAAC;IACrF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,GAAG,CAAC;IAClE,IAAI,MAAM,IAAI,UAAU;QAAE,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IACtG,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,MAAM,gBAAgB,CAAC;IACpF,IAAI,IAAoB,CAAC;IACzB,IAAI,OAAoC,CAAC;IACzC,IAAI,cAAoD,CAAC;IACzD,IAAI,UAAuC,CAAC;IAC5C,IAAI,SAAoC,CAAC;IACzC,IAAI,mBAAmB,GAAG,KAAK,CAAC;IAChC,IAAI,OAAO,GAA8C,EAAE,CAAC;IAC5D,MAAM,WAAW,GAAG,KAAK,IAA8B,EAAE;QACvD,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC;QAC5B,IAAI,cAAc;YAAE,OAAO,cAAc,CAAC;QAC1C,cAAc,GAAG,CAAC,KAAK,IAAI,EAAE;YAC3B,MAAM,GAAG,GAAG,UAAU,IAAI,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,OAAO,GAAG,GAAG,CAAC;YAC/C,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,YAAY,CAAC;gBAC7D,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,KAAK;gBACpC,MAAM,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE;gBAC5C,YAAY,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;gBAChD,OAAO,EAAE,QAAQ;aAClB,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,SAAS,IAAI,WAAY,CAAC;YACzC,MAAM,OAAO,GAAG,IAAI,GAAG,EAA4C,CAAC;YACpE,IAAI,CAAC;gBACH,OAAO,OAAO,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;oBACnE,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;oBAC5D,IAAI,CAAC,MAAM;wBAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;oBAC9D,IAAI,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAC/B,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAqC,CAAC;wBAC/E,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;oBAC5B,CAAC;oBACD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC;oBAC5B,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;wBACjC,MAAM,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;wBACjH,OAAO,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC,OAAkC,EAAE,KAAK,CAAC,CAAC,CAAC;oBACxF,CAAC;oBACD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAgE,CAAC;oBACtF,IAAI,KAAK,EAAE,SAAS,KAAK,OAAO,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;wBACpD,MAAM,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;wBACjH,OAAO,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,SAAmE,EAAE,KAAK,CAAC,EACnH,EAAE,gBAAgB,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;oBAC1C,CAAC;oBACD,IAAI,KAAK,EAAE,SAAS,KAAK,OAAO,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;wBACpD,MAAM,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;wBAClH,mBAAmB,GAAG,IAAI,CAAC;wBAC3B,OAAO,cAAc,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,SAAkE,EAAE,KAAK,CAAC,EAC1H,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;oBACtB,CAAC;oBACD,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,UAAU;wBAAE,OAAQ,MAAM,CAAC,MAAqD,CAAC,KAAK,CAAC,CAAC;oBACrH,OAAO,SAAS,CAAC;gBACnB,CAAC,CAAC,CAAC;YACL,CAAC;oBAAS,CAAC;gBACT,MAAM,WAAW,EAAE,KAAK,EAAE,CAAC;YAC7B,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QACL,IAAI,CAAC;YAAC,OAAO,MAAM,cAAc,CAAC;QAAC,CAAC;gBAC5B,CAAC;YAAC,cAAc,GAAG,SAAS,CAAC;QAAC,CAAC;IACzC,CAAC,CAAC;IACF,MAAM,WAAW,GAAG,KAAK,IAAI,EAAE;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAClE,OAAO,GAAG,OAAO;iBACd,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;iBAC9E,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,8CAA8C,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;YACtI,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;YAChC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC3F,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;gBAAE,MAAM,KAAK,CAAC;YACpE,OAAO,GAAG,EAAE,CAAC;QACf,CAAC;IACH,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,KAAK,EAAE,MAAoC,EAAE,EAAE;QAC7D,OAAO,GAAG,SAAS,CAAC;QACpB,UAAU,GAAG,SAAS,CAAC;QACvB,cAAc,GAAG,SAAS,CAAC;QAC3B,mBAAmB,GAAG,KAAK,CAAC;QAC5B,MAAM,WAAW,EAAE,CAAC;QACpB,MAAM,WAAW,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;QACnE,IAAI,MAAM;YAAE,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACxD,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;IAC1C,CAAC,CAAC;IAEF,OAAO;QACL,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,KAAK;QACd,MAAM;YACJ,IAAI,UAAU;gBAAE,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC;YAC3D,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM;gBAAE,OAAO;oBACrC,KAAK,EAAE;wBACL,YAAY,EAAE,KAAK;wBACnB,iBAAiB,EAAE,MAAM,CAAC,gBAAgB;wBAC1C,aAAa,EAAE,EAAE,MAAM,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,EAAE;qBAC1D;iBACF,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,cAAc,CAAC,MAAM;YACzB,IAAI,GAAG,MAAM,CAAC;YACd,UAAU,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,WAAW,EAAE,CAAC;QACtB,CAAC;QACD,SAAS,CAAC,EAAE;YACV,OAAO,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1D,CAAC;QACD,IAAI,CAAC,EAAE;YACL,IAAI,EAAE,KAAK,iBAAiB;gBAAE,OAAO,SAAS,CAAC;YAC/C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBACtC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;oBACvC,CAAC,CAAC,uBAAuB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,uGAAuG;oBAC3J,CAAC,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC7C,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;YACzD,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACf,OAAO,YAAY,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,YAAY,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,uBAAuB;oBAC/H,QAAQ;;;EAG1B,MAAM,KAAK,KAAK;gBAChB,CAAC,CAAC,qGAAqG;gBACvG,CAAC,CAAC,qCAAqC,EAAE,CAAC;QACxC,CAAC;QACD,kBAAkB,EAAE;YAClB,KAAK,EAAE,KAAK;YACZ,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO;gBACxB,MAAM,QAAQ,GAAG,MAAM,WAAW,EAAE,CAAC;gBACrC,MAAM,QAAQ,GAAG,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC,QAAQ,CAAC;gBAC/F,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;gBACnJ,IAAI,IAAI,GAAG,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;gBACxE,IAAI,mBAAmB,EAAE,CAAC;oBACxB,MAAM,EAAE,uBAAuB,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;oBACjE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,uBAAuB,EAAE,SAAS,CAAC,CAAC;gBACxE,CAAC;gBACD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,iCAAiC,SAAS,oBAAoB,CAAC,CAAC;gBAC/F,OAAO,IAAI,CAAC;YACd,CAAC;SACF;QACD,eAAe,CAAC,MAAM;YACpB,SAAS,GAAG,MAAM,CAAC;YACnB,IAAI,UAAU,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACnC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;oBACvD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,oBAAoB,CAAC,CAAC,QAAQ,CAAC;oBAC5E,IAAI,UAAU,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;wBACvG,IAAI,CAAC;4BACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,CAAC;4BACvE,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;4BAC3D,MAAM,QAAQ,GAAG,MAAM,WAAW,EAAE,CAAC;4BACrC,MAAM,gBAAgB,GAAG,aAAa,CAAC,QAAQ,EAAE,sEAAsE,CAAC,CAAC;4BACzH,MAAM,QAAQ,GAAmB,MAAM,KAAK,KAAK;gCAC/C,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE;gCAC1H,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAC9D,CAAC,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,QAAQ,EAAE,iBAAiB,KAAK,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC;4BAC9G,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,QAAQ,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC;4BACxJ,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;4BACtE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;wBACxD,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACf,IAAI,CAAC,KAAK,CAAC,CAAC;wBACd,CAAC;wBACD,OAAO;oBACT,CAAC;oBACD,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK;wBAAE,OAAO,IAAI,EAAE,CAAC;oBAC5C,MAAM,UAAU,GAAG,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC;oBAC/E,IAAI,UAAU,KAAK,GAAG,IAAI,CAAC,CAAC,MAAM,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC;wBAAE,OAAO,IAAI,EAAE,CAAC;oBAClH,IAAI,CAAC;wBACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,CAAC;wBACvE,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;wBAC5D,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,0BAA0B,CAAC,CAAC;wBAC/D,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACrB,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,IAAI,CAAC,KAAK,CAAC,CAAC;oBACd,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;YACD,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE;gBAChC,IAAI,CAAC,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;oBAC9F,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACnF,CAAC;YACH,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE;gBACnC,IAAI,CAAC,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;oBAC9F,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACnF,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,WAAW;YACf,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO;gBAAE,OAAO;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC1D,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC/B,IAAI,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,CAAC;gBACnE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;gBACrC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,gDAAgD,CAAC,EAAE,CAAC;oBACpF,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;oBACtB,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;wBAAE,SAAS;oBACnC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;oBACvD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;oBAC5C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,yBAAyB,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;oBACrH,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACvB,CAAC;gBACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,4DAA4D,CAAC,EAAE,CAAC;oBAChG,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;oBAC7D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;oBAC5C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,UAAU,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;oBACnG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACvB,CAAC;gBACD,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;gBAC/D,KAAK,MAAM,IAAI,IAAI,UAAU;oBAAE,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;gBAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;gBAC7C,IAAI,CAAC;oBACH,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;oBAC1C,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;wBAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC5G,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACxB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;wBAAE,MAAM,KAAK,CAAC;gBACtE,CAAC;gBACD,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC7C,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,KAAK,YAAY,EAAE,CAAC;oBACtE,MAAM,IAAI,KAAK,CAAC,yCAAyC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAChI,CAAC;gBACD,OAAO;YACT,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,WAAW,EAAE,CAAC;YACrC,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,CAAC;YACzE,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;gBACpD,MAAM,gBAAgB,GAAG,aAAa,CAAC,QAAQ,EAAE,sEAAsE,CAAC,CAAC;gBACzH,MAAM,QAAQ,GAAmB,MAAM,KAAK,KAAK;oBAC/C,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE;oBAC1H,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAC9D,CAAC,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,QAAQ,EAAE,iBAAiB,KAAK,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC;gBAC9G,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC5C,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAC/C,uDAAuD;oBACvD,2BAA2B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK;oBACxD,yDAAyD,EAAE,MAAM,CAAC,CAAC;gBACrE,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;gBAC9C,OAAO;YACT,CAAC;YACD,IAAI,MAAM,KAAK,KAAK;gBAAE,OAAO;YAC7B,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACpC,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG;oBAAE,SAAS;gBACjC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;gBACxE,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC3D,MAAM,SAAS,CAAC,UAAU,EAAE,aAAa,CAAC,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YACvG,CAAC;QACH,CAAC;QACD,KAAK,CAAC,eAAe,CAAC,OAAO;YAC3B,IAAI,CAAC,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;gBACtG,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fuzor",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "fuzor": "./dist/cli.js"
@@ -9,7 +9,9 @@
9
9
  "dist",
10
10
  "templates/basic"
11
11
  ],
12
- "description": "HTML-first framework that compiles one app as a SPA, MPA, or server-served app",
12
+ "description": "HTML-first framework for SPA or MPA builds with static or server delivery",
13
+ "license": "MIT",
14
+ "homepage": "https://fuzor.dev",
13
15
  "repository": {
14
16
  "type": "git",
15
17
  "url": "git+https://github.com/ivanjeremic/fuzor.git"
@@ -19,6 +21,8 @@
19
21
  "./compiler": "./dist/compiler/index.js",
20
22
  "./vite": "./dist/vite.js",
21
23
  "./create": "./dist/create.js",
24
+ "./server": "./dist/server.js",
25
+ "./server/node": "./dist/server/node.js",
22
26
  "./ssr": "./dist/ssr.js",
23
27
  "./ssr/node": "./dist/ssr/node.js",
24
28
  "./runtime": "./dist/runtime/index.js",
@@ -74,7 +78,11 @@
74
78
  "test": "vitest run",
75
79
  "example:spa": "pnpm build && pnpm --filter @fuzor/example build:spa",
76
80
  "example:mpa": "pnpm build && pnpm --filter @fuzor/example build:mpa",
81
+ "example:spa:server": "pnpm build && pnpm --filter @fuzor/example build:spa:server",
82
+ "example:mpa:server": "pnpm build && pnpm --filter @fuzor/example build:mpa:server",
77
83
  "example:ssr": "pnpm build && pnpm --filter @fuzor/example build:ssr",
84
+ "example:dev:spa:server": "pnpm build && pnpm --filter @fuzor/example dev:spa:server",
85
+ "example:dev:mpa:server": "pnpm build && pnpm --filter @fuzor/example dev:mpa:server",
78
86
  "example:dev:ssr": "pnpm build && pnpm --filter @fuzor/example dev:ssr",
79
87
  "website:dev": "pnpm build && pnpm --filter @fuzor/website dev",
80
88
  "website:build": "pnpm build && pnpm --filter @fuzor/website build",
@@ -1,16 +1,18 @@
1
1
  # __APP_NAME__
2
2
 
3
- This app uses one `pages/` tree for every Fuzor target.
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:ssr # server-served development
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:ssr # precompiled server documents
13
- pnpm start:ssr # serve the completed SSR build
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 target.
18
+ Add HTML or Markdown routes under `pages/`, layouts under `pages/`, and interactive modules under `islands/`. The same sources build in every combination. The old `build:ssr` and `start:ssr` scripts remain as compatibility aliases for MPA with a server.
@@ -7,12 +7,18 @@
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:spa:server": "fuzor dev --target spa --server",
11
+ "dev:mpa:server": "fuzor dev --target mpa --server",
10
12
  "dev:ssr": "fuzor dev --target ssr",
11
13
  "build": "fuzor build --target mpa",
12
14
  "build:spa": "fuzor build --target spa",
13
15
  "build:mpa": "fuzor build --target mpa",
16
+ "build:spa:server": "fuzor build --target spa --server",
17
+ "build:mpa:server": "fuzor build --target mpa --server",
14
18
  "build:ssr": "fuzor build --target ssr",
15
- "start:ssr": "node server.mjs",
19
+ "start:spa:server": "node server.mjs spa",
20
+ "start:mpa:server": "node server.mjs mpa",
21
+ "start:ssr": "node server.mjs ssr",
16
22
  "typecheck": "tsc --noEmit"
17
23
  },
18
24
  "dependencies": { "fuzor": "__FUZOR_VERSION__" },
@@ -1,8 +1,8 @@
1
1
  <section class="hero">
2
- <p class="eyebrow">HTML first · SPA · MPA · SSR</p>
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 run the same app as an SPA, MPA, or server-served build.</p>
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. Three ways to ship.</footer>
7
+ <footer>One app. SPA or MPA. Static or server.</footer>
8
8
  </div>
@@ -1,10 +1,13 @@
1
1
  import path from "node:path";
2
2
  import { fileURLToPath } from "node:url";
3
- import { createNodeSsrServer } from "fuzor/ssr/node";
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
+ if (!["spa", "mpa", "ssr"].includes(target)) throw new Error(`Unknown server target: ${target}`);
8
+ const directory = target === "ssr" ? "dist-ssr" : `dist-${target}-server`;
9
+ const { handler } = await import(`./${directory}/server/entry.mjs`);
7
10
  const host = process.env.HOST ?? "127.0.0.1";
8
11
  const port = Number(process.env.PORT ?? 4173);
9
- createNodeSsrServer({ handler, assetsDir: path.join(here, "dist-ssr/client") })
12
+ createNodeServer({ handler, assetsDir: path.join(here, directory, "client") })
10
13
  .listen(port, host, () => console.log(`Fuzor listening on http://${host}:${port}`));