@analogjs/vite-plugin-nitro 2.6.4 → 2.7.0-beta.1

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/package.json CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "@analogjs/vite-plugin-nitro",
3
- "version": "2.6.4",
3
+ "version": "2.7.0-beta.1",
4
4
  "description": "A Vite plugin for adding a nitro API server",
5
5
  "type": "module",
6
6
  "author": "Brandon Roberts <robertsbt@gmail.com>",
7
7
  "exports": {
8
8
  ".": "./src/index.js",
9
+ "./server-fn-id": "./src/lib/utils/derive-server-fn-id.js",
9
10
  "./package.json": "./package.json"
10
11
  },
11
12
  "keywords": [
@@ -34,7 +35,9 @@
34
35
  "xmlbuilder2": "^4.0.3",
35
36
  "esbuild": "^0.27.3",
36
37
  "radix3": "^1.1.2",
37
- "defu": "^6.1.4"
38
+ "defu": "^6.1.4",
39
+ "magic-string": "^0.30.21",
40
+ "oxc-parser": "^0.121.0"
38
41
  },
39
42
  "ng-update": {
40
43
  "packageGroup": [
package/src/index.d.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  import { nitro } from './lib/vite-plugin-nitro.js';
2
2
  export { Options, SitemapConfig, PrerenderRouteConfig, PrerenderContentDir, PrerenderContentFile, I18nPrerenderOptions, } from './lib/options.js';
3
+ export { deriveServerFnId, serverFnFileId, } from './lib/utils/derive-server-fn-id.js';
4
+ export { injectServerFnIds, type InjectServerFnIdsResult, } from './lib/utils/inject-server-fn-ids.js';
3
5
  declare module 'nitropack' {
4
6
  interface NitroRouteConfig {
5
7
  ssr?: boolean;
package/src/index.js CHANGED
@@ -1,3 +1,7 @@
1
1
  import { nitro } from './lib/vite-plugin-nitro.js';
2
+ // Server-function id derivation, shared with @analogjs/platform's client scrub
3
+ // so both sides compute identical opaque ids (single source of truth).
4
+ export { deriveServerFnId, serverFnFileId, } from './lib/utils/derive-server-fn-id.js';
5
+ export { injectServerFnIds, } from './lib/utils/inject-server-fn-ids.js';
2
6
  export default nitro;
3
7
  //# sourceMappingURL=index.js.map
package/src/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/vite-plugin-nitro/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAoBnD,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/vite-plugin-nitro/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAUnD,+EAA+E;AAC/E,uEAAuE;AACvE,OAAO,EACL,gBAAgB,EAChB,cAAc,GACf,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,iBAAiB,GAElB,MAAM,qCAAqC,CAAC;AAY7C,eAAe,KAAK,CAAC"}
@@ -36,6 +36,11 @@ export interface Options {
36
36
  * Additional API paths to include
37
37
  */
38
38
  additionalAPIDirs?: string[];
39
+ /**
40
+ * Additional directories to scan for `*.server.ts` server-function modules,
41
+ * beyond `<sourceRoot>`. Paths are relative to the workspace root.
42
+ */
43
+ additionalServerFnDirs?: string[];
39
44
  apiPrefix?: string;
40
45
  /**
41
46
  * Toggles internal API middleware.
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Nitro-build transform that stamps the derived id into each `serverFn` config
3
+ * in a `*.server.ts`, so a function registers under the same opaque route the
4
+ * client proxy dispatches to. The SSR app build does the same via the platform
5
+ * plugin; this covers the separate Nitro server graph the dispatch handler pulls
6
+ * the modules into.
7
+ */
8
+ export declare function serverFnIdPlugin(projectRoot: string): {
9
+ name: string;
10
+ transform(code: string, id: string): {
11
+ code: string;
12
+ map: null;
13
+ } | undefined;
14
+ };
@@ -0,0 +1,22 @@
1
+ import { serverFnFileId } from '../utils/derive-server-fn-id.js';
2
+ import { injectServerFnIds } from '../utils/inject-server-fn-ids.js';
3
+ /**
4
+ * Nitro-build transform that stamps the derived id into each `serverFn` config
5
+ * in a `*.server.ts`, so a function registers under the same opaque route the
6
+ * client proxy dispatches to. The SSR app build does the same via the platform
7
+ * plugin; this covers the separate Nitro server graph the dispatch handler pulls
8
+ * the modules into.
9
+ */
10
+ export function serverFnIdPlugin(projectRoot) {
11
+ return {
12
+ name: 'analogjs-server-fn-id',
13
+ transform(code, id) {
14
+ if (!id.endsWith('.server.ts')) {
15
+ return;
16
+ }
17
+ const injected = injectServerFnIds(code, serverFnFileId(id, projectRoot));
18
+ return injected ? { code: injected.code, map: null } : undefined;
19
+ },
20
+ };
21
+ }
22
+ //# sourceMappingURL=server-fn-id-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-fn-id-plugin.js","sourceRoot":"","sources":["../../../../../../packages/vite-plugin-nitro/src/lib/plugins/server-fn-id-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,WAAmB;IAClD,OAAO;QACL,IAAI,EAAE,uBAAuB;QAC7B,SAAS,CAAC,IAAY,EAAE,EAAU;YAChC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC/B,OAAO;YACT,CAAC;YACD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC;YAC1E,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACnE,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Server-function ids are derived, never author-chosen, for security:
3
+ *
4
+ * - **Collision-free.** `hash(fileId + exportName)` is unique per file+export, so
5
+ * two functions can never share a route and hijack each other's dispatch — a
6
+ * real risk with hand-picked ids where two authors independently pick `getUser`.
7
+ * - **Non-enumerable.** The public route is an opaque digest, not a guessable
8
+ * verb like `/_analog/fn/deleteAccount`, shrinking the discoverable surface.
9
+ * - **Not author-controlled.** Authors cannot expose a meaningful or duplicate
10
+ * route by accident; the id is a pure function of location.
11
+ *
12
+ * Both build transforms (server registration + client proxy) MUST derive the
13
+ * same id, so this is the single source of truth for the algorithm and the
14
+ * `fileId` must be the **project-root-relative** POSIX path — identical across
15
+ * the client, SSR, and Nitro builds regardless of absolute checkout location.
16
+ */
17
+ /** Project-root-relative POSIX module path used as the stable hash input. */
18
+ export declare function serverFnFileId(absPath: string, projectRoot: string): string;
19
+ /**
20
+ * Derives the opaque, collision-free id for a server function from its
21
+ * project-root-relative file id and export name. 16 hex chars (64 bits) is far
22
+ * beyond birthday-collision range for any realistic function count while keeping
23
+ * the route short.
24
+ */
25
+ export declare function deriveServerFnId(fileId: string, exportName: string): string;
@@ -0,0 +1,38 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { relative } from 'node:path';
3
+ // Intentionally dependency-light (node built-ins only): this module is loaded by
4
+ // the client scrub, so it must not drag in vite/nitro. POSIX-normalize inline.
5
+ const toPosix = (p) => p.replace(/\\/g, '/');
6
+ /**
7
+ * Server-function ids are derived, never author-chosen, for security:
8
+ *
9
+ * - **Collision-free.** `hash(fileId + exportName)` is unique per file+export, so
10
+ * two functions can never share a route and hijack each other's dispatch — a
11
+ * real risk with hand-picked ids where two authors independently pick `getUser`.
12
+ * - **Non-enumerable.** The public route is an opaque digest, not a guessable
13
+ * verb like `/_analog/fn/deleteAccount`, shrinking the discoverable surface.
14
+ * - **Not author-controlled.** Authors cannot expose a meaningful or duplicate
15
+ * route by accident; the id is a pure function of location.
16
+ *
17
+ * Both build transforms (server registration + client proxy) MUST derive the
18
+ * same id, so this is the single source of truth for the algorithm and the
19
+ * `fileId` must be the **project-root-relative** POSIX path — identical across
20
+ * the client, SSR, and Nitro builds regardless of absolute checkout location.
21
+ */
22
+ /** Project-root-relative POSIX module path used as the stable hash input. */
23
+ export function serverFnFileId(absPath, projectRoot) {
24
+ return toPosix(relative(projectRoot, absPath));
25
+ }
26
+ /**
27
+ * Derives the opaque, collision-free id for a server function from its
28
+ * project-root-relative file id and export name. 16 hex chars (64 bits) is far
29
+ * beyond birthday-collision range for any realistic function count while keeping
30
+ * the route short.
31
+ */
32
+ export function deriveServerFnId(fileId, exportName) {
33
+ return createHash('sha256')
34
+ .update(`${fileId}#${exportName}`)
35
+ .digest('hex')
36
+ .slice(0, 16);
37
+ }
38
+ //# sourceMappingURL=derive-server-fn-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"derive-server-fn-id.js","sourceRoot":"","sources":["../../../../../../packages/vite-plugin-nitro/src/lib/utils/derive-server-fn-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,iFAAiF;AACjF,+EAA+E;AAC/E,MAAM,OAAO,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAE7D;;;;;;;;;;;;;;;GAeG;AAEH,6EAA6E;AAC7E,MAAM,UAAU,cAAc,CAAC,OAAe,EAAE,WAAmB;IACjE,OAAO,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;AACjD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAc,EAAE,UAAkB;IACjE,OAAO,UAAU,CAAC,QAAQ,CAAC;SACxB,MAAM,CAAC,GAAG,MAAM,IAAI,UAAU,EAAE,CAAC;SACjC,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,28 @@
1
+ export type GetServerFnHandlersArgs = {
2
+ workspaceRoot: string;
3
+ sourceRoot: string;
4
+ rootDir: string;
5
+ additionalServerFnDirs?: string[];
6
+ };
7
+ export type ServerFnHandlerModule = {
8
+ /** Absolute, normalized path to a discovered `*.server.ts` module. */
9
+ file: string;
10
+ };
11
+ /**
12
+ * Discovers the `*.server.ts` modules that may define server functions.
13
+ *
14
+ * Unlike page endpoints (one Nitro handler per file), server functions all
15
+ * share a single `/_analog/fn/:id` dispatch route. The discovered modules are
16
+ * imported for their registration side-effects — each `serverFn(...)` call
17
+ * registers itself into the server-side registry at import time — after which
18
+ * dispatch looks up the requested function by id.
19
+ *
20
+ * Scope is `<projectRoot>/<sourceRoot>/**\/*.server.ts` because the RFC allows a
21
+ * server function to live in any `.server.ts` module, including existing page
22
+ * server files. Files that define no server function simply register nothing.
23
+ * Angular SSR config (`app.config.server.ts`) is excluded — it is not a route or
24
+ * function module and must not be pulled into the dispatch bundle.
25
+ *
26
+ * @returns discovered modules, de-duplicated and sorted for deterministic output
27
+ */
28
+ export declare function getServerFnHandlers({ workspaceRoot, sourceRoot, rootDir, additionalServerFnDirs, }: GetServerFnHandlersArgs): ServerFnHandlerModule[];
@@ -0,0 +1,47 @@
1
+ import { resolve } from 'node:path';
2
+ import { globSync } from 'tinyglobby';
3
+ import { normalizePath } from 'vite';
4
+ /**
5
+ * `*.server.ts` files that are matched by the glob but are never server-function
6
+ * hosts, so importing them for registration side-effects would be wrong.
7
+ *
8
+ * The SSR entries (`main.server.ts`, `main-cf.server.ts`, …) sit at the top of
9
+ * the source root and bootstrap the whole Angular application; importing one
10
+ * would pull the entire app into the dispatch bundle. They are matched by
11
+ * directory rather than by name so a page named `main.server.ts` still counts.
12
+ */
13
+ const EXCLUDED_SERVER_FILES = [/\/app\.config\.server\.ts$/];
14
+ /**
15
+ * Discovers the `*.server.ts` modules that may define server functions.
16
+ *
17
+ * Unlike page endpoints (one Nitro handler per file), server functions all
18
+ * share a single `/_analog/fn/:id` dispatch route. The discovered modules are
19
+ * imported for their registration side-effects — each `serverFn(...)` call
20
+ * registers itself into the server-side registry at import time — after which
21
+ * dispatch looks up the requested function by id.
22
+ *
23
+ * Scope is `<projectRoot>/<sourceRoot>/**\/*.server.ts` because the RFC allows a
24
+ * server function to live in any `.server.ts` module, including existing page
25
+ * server files. Files that define no server function simply register nothing.
26
+ * Angular SSR config (`app.config.server.ts`) is excluded — it is not a route or
27
+ * function module and must not be pulled into the dispatch bundle.
28
+ *
29
+ * @returns discovered modules, de-duplicated and sorted for deterministic output
30
+ */
31
+ export function getServerFnHandlers({ workspaceRoot, sourceRoot, rootDir, additionalServerFnDirs, }) {
32
+ const root = normalizePath(resolve(workspaceRoot, rootDir));
33
+ const files = globSync([
34
+ `${root}/${sourceRoot}/**/*.server.ts`,
35
+ ...(additionalServerFnDirs || []).map((dir) => `${workspaceRoot}${dir}/**/*.server.ts`),
36
+ ], { dot: true, absolute: true }).map((file) => normalizePath(file));
37
+ const sourceRootDir = `${root}/${sourceRoot}/`;
38
+ const seen = new Set();
39
+ return files
40
+ .filter((file) => !EXCLUDED_SERVER_FILES.some((re) => re.test(file)))
41
+ .filter((file) => !file.startsWith(sourceRootDir) ||
42
+ file.slice(sourceRootDir.length).includes('/'))
43
+ .filter((file) => (seen.has(file) ? false : (seen.add(file), true)))
44
+ .sort()
45
+ .map((file) => ({ file }));
46
+ }
47
+ //# sourceMappingURL=get-server-fn-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-server-fn-handlers.js","sourceRoot":"","sources":["../../../../../../packages/vite-plugin-nitro/src/lib/utils/get-server-fn-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAcrC;;;;;;;;GAQG;AACH,MAAM,qBAAqB,GAAa,CAAC,4BAA4B,CAAC,CAAC;AAEvE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAClC,aAAa,EACb,UAAU,EACV,OAAO,EACP,sBAAsB,GACE;IACxB,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC;IAE5D,MAAM,KAAK,GAAG,QAAQ,CACpB;QACE,GAAG,IAAI,IAAI,UAAU,iBAAiB;QACtC,GAAG,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC,GAAG,CACnC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,aAAa,GAAG,GAAG,iBAAiB,CACjD;KACF,EACD,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAC9B,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IAErC,MAAM,aAAa,GAAG,GAAG,IAAI,IAAI,UAAU,GAAG,CAAC;IAC/C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,OAAO,KAAK;SACT,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SACpE,MAAM,CACL,CAAC,IAAI,EAAE,EAAE,CACP,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CACjD;SACA,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;SACnE,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,17 @@
1
+ export interface InjectServerFnIdsResult {
2
+ code: string;
3
+ ids: {
4
+ name: string;
5
+ id: string;
6
+ }[];
7
+ }
8
+ /**
9
+ * Server/SSR-build transform: injects the derived `id` into each
10
+ * `export const NAME = serverFn(config, handler)` so the function registers
11
+ * under the same opaque id the client proxy dispatches to. Unlike the client
12
+ * scrub this keeps the handler and every other statement intact — it only edits
13
+ * the config object — so the server module still runs the real implementation.
14
+ *
15
+ * Returns `null` when the module defines no server function.
16
+ */
17
+ export declare function injectServerFnIds(code: string, fileId: string): InjectServerFnIdsResult | null;
@@ -0,0 +1,126 @@
1
+ import MagicString from 'magic-string';
2
+ import { parseSync } from 'oxc-parser';
3
+ import { deriveServerFnId } from './derive-server-fn-id.js';
4
+ const SERVER_FN_SOURCE = '@analogjs/router/server';
5
+ /**
6
+ * Server/SSR-build transform: injects the derived `id` into each
7
+ * `export const NAME = serverFn(config, handler)` so the function registers
8
+ * under the same opaque id the client proxy dispatches to. Unlike the client
9
+ * scrub this keeps the handler and every other statement intact — it only edits
10
+ * the config object — so the server module still runs the real implementation.
11
+ *
12
+ * Returns `null` when the module defines no server function.
13
+ */
14
+ export function injectServerFnIds(code, fileId) {
15
+ if (!code.includes('serverFn')) {
16
+ return null;
17
+ }
18
+ const { program } = parseSync(fileId, code);
19
+ const body = program.body;
20
+ const serverFnLocalNames = collectServerFnLocalNames(body);
21
+ const magic = new MagicString(code);
22
+ const ids = [];
23
+ for (const node of body) {
24
+ if (node.type !== 'ExportNamedDeclaration' ||
25
+ node.declaration?.type !== 'VariableDeclaration') {
26
+ continue;
27
+ }
28
+ for (const declarator of node.declaration.declarations) {
29
+ if (declarator.id?.type !== 'Identifier' ||
30
+ declarator.init?.type !== 'CallExpression' ||
31
+ declarator.init.callee?.type !== 'Identifier' ||
32
+ !serverFnLocalNames.has(declarator.init.callee.name)) {
33
+ continue;
34
+ }
35
+ const name = declarator.id.name;
36
+ const id = deriveServerFnId(fileId, name);
37
+ ids.push({ name, id });
38
+ const args = declarator.init.arguments ?? [];
39
+ const arg0 = args[0];
40
+ const idProp = `id: ${JSON.stringify(id)}`;
41
+ if (arg0?.type === 'ObjectExpression') {
42
+ // serverFn({ … }, handler) — inject the id into the config object.
43
+ assertMethodInputCompatible(arg0, name, fileId);
44
+ injectId(magic, arg0, id);
45
+ }
46
+ else if (isFunctionNode(arg0)) {
47
+ // serverFn(handler) — synthesize a config: `{ id }, handler`.
48
+ magic.appendLeft(arg0.start, `{ ${idProp} }, `);
49
+ }
50
+ else if (arg0 && args.length >= 2) {
51
+ // serverFn(schema, handler) — wrap the schema into `{ id, input: <schema> }`.
52
+ magic.appendLeft(arg0.start, `{ ${idProp}, input: `);
53
+ magic.appendRight(arg0.end, ` }`);
54
+ }
55
+ else {
56
+ throw new Error(`[analog] serverFn "${name}" in ${fileId} must be called as serverFn(handler), serverFn(schema, handler), or serverFn(config, handler).`);
57
+ }
58
+ }
59
+ }
60
+ if (ids.length === 0) {
61
+ return null;
62
+ }
63
+ return { code: magic.toString(), ids };
64
+ }
65
+ /**
66
+ * Insert (or replace) `id: "<derived>"` in the config object. Authors do not
67
+ * supply an id; a stray one is overwritten so the route is always the derived,
68
+ * non-enumerable digest — never an author-controlled value.
69
+ */
70
+ function injectId(magic, configArg, id) {
71
+ const existing = (configArg.properties ?? []).find((prop) => prop.type === 'Property' &&
72
+ (prop.key?.type === 'Identifier' ? prop.key.name : prop.key?.value) ===
73
+ 'id');
74
+ if (existing) {
75
+ magic.overwrite(existing.value.start, existing.value.end, JSON.stringify(id));
76
+ return;
77
+ }
78
+ // Insert as the first property, right after the opening brace.
79
+ magic.appendRight(configArg.start + 1, ` id: ${JSON.stringify(id)},`);
80
+ }
81
+ /**
82
+ * Reject `method: 'GET'` alongside an `input` schema at build time: GET carries
83
+ * no body, so a GET function can never receive validated input.
84
+ */
85
+ function assertMethodInputCompatible(configArg, name, fileId) {
86
+ let method;
87
+ let hasInput = false;
88
+ for (const prop of configArg.properties ?? []) {
89
+ if (prop.type !== 'Property')
90
+ continue;
91
+ const key = prop.key?.type === 'Identifier' ? prop.key.name : prop.key?.value;
92
+ if (key === 'method' && prop.value?.type === 'Literal') {
93
+ method = prop.value.value;
94
+ }
95
+ else if (key === 'input') {
96
+ hasInput = true;
97
+ }
98
+ }
99
+ if (method === 'GET' && hasInput) {
100
+ throw new Error(`[analog] serverFn "${name}" in ${fileId} declares method: 'GET' with an input schema; GET carries no body. Use POST (the default when input is present) or drop the input.`);
101
+ }
102
+ }
103
+ function isFunctionNode(node) {
104
+ return (node?.type === 'ArrowFunctionExpression' ||
105
+ node?.type === 'FunctionExpression');
106
+ }
107
+ function collectServerFnLocalNames(body) {
108
+ const names = new Set();
109
+ for (const node of body) {
110
+ if (node.type !== 'ImportDeclaration' ||
111
+ node.source?.value !== SERVER_FN_SOURCE) {
112
+ continue;
113
+ }
114
+ for (const spec of node.specifiers ?? []) {
115
+ if (spec.type === 'ImportSpecifier' &&
116
+ spec.imported?.name === 'serverFn') {
117
+ names.add(spec.local.name);
118
+ }
119
+ }
120
+ }
121
+ if (names.size === 0) {
122
+ names.add('serverFn');
123
+ }
124
+ return names;
125
+ }
126
+ //# sourceMappingURL=inject-server-fn-ids.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inject-server-fn-ids.js","sourceRoot":"","sources":["../../../../../../packages/vite-plugin-nitro/src/lib/utils/inject-server-fn-ids.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import type { NitroEventHandler } from 'nitropack';
2
+ import type { ServerFnHandlerModule } from './get-server-fn-handlers';
3
+ /**
4
+ * Nitro virtual-module id for the generated server-function dispatch handler.
5
+ * Referenced from `nitroConfig.handlers` and provided via `nitroConfig.virtual`.
6
+ */
7
+ export declare const SERVER_FN_DISPATCH_VIRTUAL = "#ANALOG_SERVER_FN_DISPATCH";
8
+ /** The single transport route all server functions dispatch through. */
9
+ export declare const SERVER_FN_DISPATCH_ROUTE = "/_analog/fn/:id";
10
+ /** URL prefix of that route, for matching requests before the id is known. */
11
+ export declare const SERVER_FN_DISPATCH_PREFIX = "/_analog/fn/";
12
+ /**
13
+ * The Nitro handler registration for the server-function dispatch route.
14
+ * Unlike page endpoints (one handler per file), every server function shares
15
+ * this one `/_analog/fn/:id` route; the id selects the function at runtime.
16
+ *
17
+ * The route is fixed and NOT `/api`-prefixed: client proxies always call the
18
+ * absolute `/_analog/fn/:id` URL, so an `/api` prefix (as page endpoints use)
19
+ * would leave the handler unreachable in apps that have an API directory.
20
+ */
21
+ export declare function getServerFnDispatchHandler(): NitroEventHandler;
22
+ export type BuildServerFnDispatchModuleArgs = {
23
+ /** Discovered `*.server.ts` modules, imported for registration side-effects. */
24
+ modules: ServerFnHandlerModule[];
25
+ /**
26
+ * Absolute path to the app's server config module (`app.config.server.ts`),
27
+ * which exports the `ApplicationConfig` (as `config`) that `main.server.ts`
28
+ * renders with. Handlers bootstrap against it, so they see the same DI the
29
+ * app configured. When absent, handlers run with only `providedIn: 'root'`.
30
+ */
31
+ appConfigModule?: string;
32
+ };
33
+ /**
34
+ * Generates the source of the Nitro dispatch handler.
35
+ *
36
+ * The handler imports every discovered `*.server.ts` module so each
37
+ * `serverFn(...)` registers itself, imports the app's server config, then on
38
+ * each request looks up the function by id and runs it via `dispatchServerFn` —
39
+ * the same call path the validation harnesses exercise.
40
+ */
41
+ export declare function buildServerFnDispatchModule({ modules, appConfigModule, }: BuildServerFnDispatchModuleArgs): string;
@@ -0,0 +1,74 @@
1
+ import { normalizePath } from 'vite';
2
+ /**
3
+ * Nitro virtual-module id for the generated server-function dispatch handler.
4
+ * Referenced from `nitroConfig.handlers` and provided via `nitroConfig.virtual`.
5
+ */
6
+ export const SERVER_FN_DISPATCH_VIRTUAL = '#ANALOG_SERVER_FN_DISPATCH';
7
+ /** The single transport route all server functions dispatch through. */
8
+ export const SERVER_FN_DISPATCH_ROUTE = '/_analog/fn/:id';
9
+ /** URL prefix of that route, for matching requests before the id is known. */
10
+ export const SERVER_FN_DISPATCH_PREFIX = '/_analog/fn/';
11
+ /**
12
+ * The Nitro handler registration for the server-function dispatch route.
13
+ * Unlike page endpoints (one handler per file), every server function shares
14
+ * this one `/_analog/fn/:id` route; the id selects the function at runtime.
15
+ *
16
+ * The route is fixed and NOT `/api`-prefixed: client proxies always call the
17
+ * absolute `/_analog/fn/:id` URL, so an `/api` prefix (as page endpoints use)
18
+ * would leave the handler unreachable in apps that have an API directory.
19
+ */
20
+ export function getServerFnDispatchHandler() {
21
+ return {
22
+ route: SERVER_FN_DISPATCH_ROUTE,
23
+ handler: SERVER_FN_DISPATCH_VIRTUAL,
24
+ lazy: true,
25
+ };
26
+ }
27
+ /**
28
+ * Generates the source of the Nitro dispatch handler.
29
+ *
30
+ * The handler imports every discovered `*.server.ts` module so each
31
+ * `serverFn(...)` registers itself, imports the app's server config, then on
32
+ * each request looks up the function by id and runs it via `dispatchServerFn` —
33
+ * the same call path the validation harnesses exercise.
34
+ */
35
+ export function buildServerFnDispatchModule({ modules, appConfigModule, }) {
36
+ const registrationImports = modules
37
+ .map((m) => `import ${JSON.stringify(normalizePath(m.file))};`)
38
+ .join('\n');
39
+ // Bootstrap against the app's own server config so a handler resolves exactly
40
+ // the services, tokens, and interceptors the app configured — one config, no
41
+ // second provider list. Fall back to an empty config when the app has none.
42
+ const appConfig = appConfigModule
43
+ ? `import { config as serverFnAppConfig } from ${JSON.stringify(normalizePath(appConfigModule))};`
44
+ : `const serverFnAppConfig = { providers: [] };`;
45
+ // `@analogjs/router/server` is a partially-compiled Angular library, and this
46
+ // module is bundled by Nitro rather than by the app's Angular pipeline, so the
47
+ // linker never runs over it. Loading the compiler gives it the JIT fallback.
48
+ // `zone.js` and the server platform init match the SSR entry, so bootstrapping
49
+ // the app injector below runs in the same environment a render would.
50
+ //
51
+ // The transport itself — id decoding, the malformed-body contract, dispatch,
52
+ // and response writing — lives in `createServerFnEventHandler`, so this module
53
+ // is only wiring: bootstrap the app injector from the app's server config, and
54
+ // hand it to that handler.
55
+ return `import '@angular/compiler';
56
+ import 'zone.js/node';
57
+ import '@angular/platform-server/init';
58
+ import { createServerFnAppInjector, createServerFnEventHandler } from '@analogjs/router/server';
59
+
60
+ // Discovered server-function modules (registration side-effects).
61
+ ${registrationImports}
62
+
63
+ ${appConfig}
64
+
65
+ // Bootstrapped once from the app's own server config, so a handler resolves the
66
+ // same DI as an SSR render (\`providedIn: 'root'\` and listed providers alike).
67
+ // No component is bootstrapped, so nothing renders and the router never
68
+ // navigates. Only REQUEST/RESPONSE are rebuilt per call.
69
+ export default createServerFnEventHandler(
70
+ createServerFnAppInjector(serverFnAppConfig),
71
+ );
72
+ `;
73
+ }
74
+ //# sourceMappingURL=server-fn-endpoints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-fn-endpoints.js","sourceRoot":"","sources":["../../../../../../packages/vite-plugin-nitro/src/lib/utils/server-fn-endpoints.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAIrC;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,4BAA4B,CAAC;AAEvE,wEAAwE;AACxE,MAAM,CAAC,MAAM,wBAAwB,GAAG,iBAAiB,CAAC;AAE1D,8EAA8E;AAC9E,MAAM,CAAC,MAAM,yBAAyB,GAAG,cAAc,CAAC;AAExD;;;;;;;;GAQG;AACH,MAAM,UAAU,0BAA0B;IACxC,OAAO;QACL,KAAK,EAAE,wBAAwB;QAC/B,OAAO,EAAE,0BAA0B;QACnC,IAAI,EAAE,IAAI;KACX,CAAC;AACJ,CAAC;AAcD;;;;;;;GAOG;AACH,MAAM,UAAU,2BAA2B,CAAC,EAC1C,OAAO,EACP,eAAe,GACiB;IAChC,MAAM,mBAAmB,GAAG,OAAO;SAChC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;SAC9D,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,8EAA8E;IAC9E,6EAA6E;IAC7E,4EAA4E;IAC5E,MAAM,SAAS,GAAG,eAAe;QAC/B,CAAC,CAAC,+CAA+C,IAAI,CAAC,SAAS,CAC3D,aAAa,CAAC,eAAe,CAAC,CAC/B,GAAG;QACN,CAAC,CAAC,8CAA8C,CAAC;IAEnD,8EAA8E;IAC9E,+EAA+E;IAC/E,6EAA6E;IAC7E,+EAA+E;IAC/E,sEAAsE;IACtE,EAAE;IACF,6EAA6E;IAC7E,+EAA+E;IAC/E,+EAA+E;IAC/E,2BAA2B;IAC3B,OAAO;;;;;;EAMP,mBAAmB;;EAEnB,SAAS;;;;;;;;;CASV,CAAC;AACF,CAAC"}
@@ -8,7 +8,10 @@ import { existsSync, readFileSync } from 'node:fs';
8
8
  import { buildServer } from './build-server.js';
9
9
  import { buildSSRApp } from './build-ssr.js';
10
10
  import { pageEndpointsPlugin } from './plugins/page-endpoints.js';
11
+ import { serverFnIdPlugin } from './plugins/server-fn-id-plugin.js';
11
12
  import { getPageHandlers } from './utils/get-page-handlers.js';
13
+ import { getServerFnHandlers } from './utils/get-server-fn-handlers.js';
14
+ import { buildServerFnDispatchModule, getServerFnDispatchHandler, SERVER_FN_DISPATCH_PREFIX, SERVER_FN_DISPATCH_VIRTUAL, } from './utils/server-fn-endpoints.js';
12
15
  import { buildSitemap } from './build-sitemap.js';
13
16
  import { devServerPlugin } from './plugins/dev-server-plugin.js';
14
17
  import { getMatchingContentFilesWithFrontMatter } from './utils/get-content-files.js';
@@ -36,6 +39,7 @@ export function nitro(options, nitroOptions) {
36
39
  let nitroConfig;
37
40
  let environmentBuild = false;
38
41
  let hasAPIDir = false;
42
+ let hasServerFns = false;
39
43
  const routeSitemaps = {};
40
44
  const routeSourceFiles = {};
41
45
  let rootDir = workspaceRoot;
@@ -67,6 +71,29 @@ export function nitro(options, nitroOptions) {
67
71
  additionalPagesDirs: options?.additionalPagesDirs,
68
72
  hasAPIDir,
69
73
  });
74
+ // Server functions: discover every `*.server.ts` module, then register a
75
+ // single `/_analog/fn/:id` dispatch handler backed by a generated Nitro
76
+ // virtual module that imports those modules (registration side-effects)
77
+ // and the app provider set. Only wired when server functions exist.
78
+ const serverFnModules = getServerFnHandlers({
79
+ workspaceRoot,
80
+ sourceRoot,
81
+ rootDir,
82
+ additionalServerFnDirs: options?.additionalServerFnDirs,
83
+ });
84
+ const serverFnAppConfigModule = resolveServerFnAppConfigModule(workspaceRoot, rootDir, sourceRoot);
85
+ hasServerFns = serverFnModules.length > 0;
86
+ const serverFnHandlers = hasServerFns
87
+ ? [getServerFnDispatchHandler()]
88
+ : [];
89
+ const serverFnVirtual = serverFnModules.length > 0
90
+ ? {
91
+ [SERVER_FN_DISPATCH_VIRTUAL]: buildServerFnDispatchModule({
92
+ modules: serverFnModules,
93
+ appConfigModule: serverFnAppConfigModule,
94
+ }),
95
+ }
96
+ : {};
70
97
  nitroConfig = {
71
98
  rootDir,
72
99
  preset: buildPreset,
@@ -93,6 +120,19 @@ export function nitro(options, nitroOptions) {
93
120
  imports: {
94
121
  autoImport: false,
95
122
  },
123
+ // The dispatch module's imports are all bare side-effect imports —
124
+ // the JIT compiler it needs, and each `*.server.ts` whose import is
125
+ // what registers its functions. Nitro treeshakes those away unless
126
+ // the modules are declared side-effectful, which would leave every
127
+ // call 404ing against an empty registry.
128
+ ...(hasServerFns
129
+ ? {
130
+ moduleSideEffects: [
131
+ '@angular/compiler',
132
+ ...serverFnModules.map((m) => normalizePath(m.file)),
133
+ ],
134
+ }
135
+ : {}),
96
136
  rollupConfig: {
97
137
  onwarn(warning) {
98
138
  if (warning.message.includes('empty chunk') &&
@@ -100,7 +140,10 @@ export function nitro(options, nitroOptions) {
100
140
  return;
101
141
  }
102
142
  },
103
- plugins: [pageEndpointsPlugin()],
143
+ plugins: [
144
+ pageEndpointsPlugin(),
145
+ serverFnIdPlugin(normalizePath(resolve(workspaceRoot, rootDir))),
146
+ ],
104
147
  },
105
148
  handlers: [
106
149
  ...(hasAPIDir
@@ -114,6 +157,7 @@ export function nitro(options, nitroOptions) {
114
157
  ]
115
158
  : []),
116
159
  ...pageHandlers,
160
+ ...serverFnHandlers,
117
161
  ],
118
162
  routeRules: hasAPIDir
119
163
  ? undefined
@@ -128,6 +172,7 @@ export function nitro(options, nitroOptions) {
128
172
  '#ANALOG_SSR_RENDERER': ssrRenderer,
129
173
  '#ANALOG_CLIENT_RENDERER': clientRenderer,
130
174
  ...(hasAPIDir ? {} : { '#ANALOG_API_MIDDLEWARE': apiMiddleware }),
175
+ ...serverFnVirtual,
131
176
  },
132
177
  };
133
178
  if (isVercelPreset(buildPreset)) {
@@ -244,7 +289,11 @@ export function nitro(options, nitroOptions) {
244
289
  ...nitroConfig.externals,
245
290
  external: ['rxjs', 'node-fetch-native/dist/polyfill'],
246
291
  },
247
- moduleSideEffects: ['zone.js/node', 'zone.js/fesm2015/zone-node'],
292
+ moduleSideEffects: [
293
+ 'zone.js/node',
294
+ 'zone.js/fesm2015/zone-node',
295
+ ...(nitroConfig.moduleSideEffects ?? []),
296
+ ],
248
297
  handlers: [
249
298
  ...(hasAPIDir
250
299
  ? []
@@ -257,6 +306,7 @@ export function nitro(options, nitroOptions) {
257
306
  ]
258
307
  : []),
259
308
  ...pageHandlers,
309
+ ...serverFnHandlers,
260
310
  ],
261
311
  };
262
312
  }
@@ -327,6 +377,19 @@ export function nitro(options, nitroOptions) {
327
377
  const server = createDevServer(nitro);
328
378
  await build(nitro);
329
379
  const apiHandler = toNodeListener(server.app);
380
+ // Server functions dispatch through `/_analog/fn/:id`, outside the
381
+ // API prefix the Nitro dev server is mounted under, so route them
382
+ // explicitly — otherwise a call falls through to the SSR catch-all
383
+ // and the client gets HTML back instead of its result.
384
+ if (hasServerFns) {
385
+ viteServer.middlewares.use((req, res, next) => {
386
+ if (req.url?.startsWith(SERVER_FN_DISPATCH_PREFIX)) {
387
+ apiHandler(req, res);
388
+ return;
389
+ }
390
+ next();
391
+ });
392
+ }
330
393
  if (hasAPIDir) {
331
394
  viteServer.middlewares.use((req, res, next) => {
332
395
  if (req.url?.startsWith(`${prefix}${apiPrefix}`)) {
@@ -467,6 +530,17 @@ const withAppHostingOutput = (nitroConfig) => {
467
530
  },
468
531
  };
469
532
  };
533
+ function resolveServerFnAppConfigModule(workspaceRoot, rootDir, sourceRoot) {
534
+ // The app's server config (the one `main.server.ts` renders with), exporting
535
+ // `config`. Server-function handlers bootstrap against it, so they resolve the
536
+ // same DI as SSR with no separate provider list to maintain.
537
+ const root = normalizePath(resolve(workspaceRoot, rootDir));
538
+ const candidates = [
539
+ `${root}/${sourceRoot}/app/app.config.server.ts`,
540
+ `${root}/${sourceRoot}/app.config.server.ts`,
541
+ ];
542
+ return candidates.find((candidate) => existsSync(candidate));
543
+ }
470
544
  const isNetlifyPreset = (buildPreset) => process.env['NETLIFY'] ||
471
545
  (buildPreset && buildPreset.toLowerCase().includes('netlify'));
472
546
  const withNetlifyOutputAPI = (nitroConfig, workspaceRoot) => ({
@@ -1 +1 @@
1
- {"version":3,"file":"vite-plugin-nitro.js","sourceRoot":"","sources":["../../../../../packages/vite-plugin-nitro/src/lib/vite-plugin-nitro.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vite-plugin-nitro.js","sourceRoot":"","sources":["../../../../../packages/vite-plugin-nitro/src/lib/vite-plugin-nitro.ts"],"names":[],"mappings":"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"}