1/**
2 * Optional legacy Node marker adapter, retained for existing Octane configs.
3 * New projects can omit it: the `Website.Octane` resource selects hosting
4 * and wraps Octane's default native Node output as an HTTP server automatically.
5 *
6 * This marker sets `name: "node"` and `serverTarget: "node"` without an
7 * `adapt()` pass. Octane emits `dist/server/entry.js`, a self-contained Node
8 * ESM bundle exporting a web-standard fetch `handler`; the Node deploy
9 * target's finishing pass emits the HTTP serve entry.
10 *
11 * This module MUST stay dependency-free: `octane.config.ts` (and therefore
12 * its import graph) is bundled into the server entry by Octane's
13 * `noExternal: true` server sub-build, and is also evaluated by Octane's
14 * config loader inside a Vite module runner.
15 */
16
17/** The `adapter.name` this adapter declares (matched by the Node target). */
18export const ADAPTER_NAME = "node";
19
20/** The shape of the Octane deploy adapter this module produces. */
21export interface OctaneNodeAdapter {
22 readonly name: typeof ADAPTER_NAME;
23 readonly serverTarget: "node";
24}
25
26/**
27 * Create the optional legacy Node marker adapter. New projects can omit it
28 * from `octane.config.ts`; the `Website.Octane` resource owns deployment.
29 */
30export const node = (): OctaneNodeAdapter => ({
31 name: ADAPTER_NAME,
32 serverTarget: "node",
33});
34
35export default node;