@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 +5 -2
- package/src/index.d.ts +2 -0
- package/src/index.js +4 -0
- package/src/index.js.map +1 -1
- package/src/lib/options.d.ts +5 -0
- package/src/lib/plugins/server-fn-id-plugin.d.ts +14 -0
- package/src/lib/plugins/server-fn-id-plugin.js +22 -0
- package/src/lib/plugins/server-fn-id-plugin.js.map +1 -0
- package/src/lib/utils/derive-server-fn-id.d.ts +25 -0
- package/src/lib/utils/derive-server-fn-id.js +38 -0
- package/src/lib/utils/derive-server-fn-id.js.map +1 -0
- package/src/lib/utils/get-server-fn-handlers.d.ts +28 -0
- package/src/lib/utils/get-server-fn-handlers.js +47 -0
- package/src/lib/utils/get-server-fn-handlers.js.map +1 -0
- package/src/lib/utils/inject-server-fn-ids.d.ts +17 -0
- package/src/lib/utils/inject-server-fn-ids.js +126 -0
- package/src/lib/utils/inject-server-fn-ids.js.map +1 -0
- package/src/lib/utils/server-fn-endpoints.d.ts +41 -0
- package/src/lib/utils/server-fn-endpoints.js +74 -0
- package/src/lib/utils/server-fn-endpoints.js.map +1 -0
- package/src/lib/vite-plugin-nitro.js +76 -2
- package/src/lib/vite-plugin-nitro.js.map +1 -1
package/package.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@analogjs/vite-plugin-nitro",
|
|
3
|
-
"version": "2.
|
|
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;
|
|
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"}
|
package/src/lib/options.d.ts
CHANGED
|
@@ -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: [
|
|
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: [
|
|
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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"}
|