@nexus_js/server 0.7.2 → 0.7.5

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.
Files changed (75) hide show
  1. package/dist/actions.d.ts +14 -2
  2. package/dist/actions.d.ts.map +1 -1
  3. package/dist/actions.js +235 -25
  4. package/dist/actions.js.map +1 -1
  5. package/dist/constants.d.ts +6 -0
  6. package/dist/constants.d.ts.map +1 -0
  7. package/dist/constants.js +6 -0
  8. package/dist/constants.js.map +1 -0
  9. package/dist/context.d.ts +13 -2
  10. package/dist/context.d.ts.map +1 -1
  11. package/dist/context.js +7 -3
  12. package/dist/context.js.map +1 -1
  13. package/dist/csrf.d.ts.map +1 -1
  14. package/dist/csrf.js +20 -18
  15. package/dist/csrf.js.map +1 -1
  16. package/dist/dev-assets.d.ts +1 -1
  17. package/dist/dev-assets.d.ts.map +1 -1
  18. package/dist/dev-assets.js +7 -3
  19. package/dist/dev-assets.js.map +1 -1
  20. package/dist/dev-error-html.d.ts +19 -0
  21. package/dist/dev-error-html.d.ts.map +1 -0
  22. package/dist/dev-error-html.js +101 -0
  23. package/dist/dev-error-html.js.map +1 -0
  24. package/dist/dev-hot.d.ts +8 -0
  25. package/dist/dev-hot.d.ts.map +1 -0
  26. package/dist/dev-hot.js +30 -0
  27. package/dist/dev-hot.js.map +1 -0
  28. package/dist/dev-vault.d.ts +7 -0
  29. package/dist/dev-vault.d.ts.map +1 -0
  30. package/dist/dev-vault.js +66 -0
  31. package/dist/dev-vault.js.map +1 -0
  32. package/dist/devradar.d.ts +96 -0
  33. package/dist/devradar.d.ts.map +1 -0
  34. package/dist/devradar.js +69 -0
  35. package/dist/devradar.js.map +1 -0
  36. package/dist/handler.d.ts +7 -0
  37. package/dist/handler.d.ts.map +1 -0
  38. package/dist/handler.js +7 -0
  39. package/dist/handler.js.map +1 -0
  40. package/dist/index.d.ts +21 -1
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +187 -27
  43. package/dist/index.js.map +1 -1
  44. package/dist/inspector.d.ts +9 -0
  45. package/dist/inspector.d.ts.map +1 -0
  46. package/dist/inspector.js +8 -0
  47. package/dist/inspector.js.map +1 -0
  48. package/dist/load-module.d.ts +4 -3
  49. package/dist/load-module.d.ts.map +1 -1
  50. package/dist/load-module.js +66 -51
  51. package/dist/load-module.js.map +1 -1
  52. package/dist/logger.d.ts +0 -11
  53. package/dist/logger.d.ts.map +1 -1
  54. package/dist/logger.js +2 -1
  55. package/dist/logger.js.map +1 -1
  56. package/dist/navigate.d.ts.map +1 -1
  57. package/dist/navigate.js +73 -12
  58. package/dist/navigate.js.map +1 -1
  59. package/dist/renderer.d.ts +32 -1
  60. package/dist/renderer.d.ts.map +1 -1
  61. package/dist/renderer.js +268 -46
  62. package/dist/renderer.js.map +1 -1
  63. package/dist/shield-runtime.d.ts +7 -0
  64. package/dist/shield-runtime.d.ts.map +1 -0
  65. package/dist/shield-runtime.js +34 -0
  66. package/dist/shield-runtime.js.map +1 -0
  67. package/dist/streaming.d.ts +14 -3
  68. package/dist/streaming.d.ts.map +1 -1
  69. package/dist/streaming.js +26 -9
  70. package/dist/streaming.js.map +1 -1
  71. package/dist/streaming.test.d.ts +2 -0
  72. package/dist/streaming.test.d.ts.map +1 -0
  73. package/dist/streaming.test.js +63 -0
  74. package/dist/streaming.test.js.map +1 -0
  75. package/package.json +32 -7
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../src/handler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,cAAc,gBAAgB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -2,10 +2,15 @@
2
2
  * Nexus Server — Node.js HTTP server adapter.
3
3
  * Handles SSR, static assets, Server Actions and dev HMR.
4
4
  */
5
- export { createAction, registerAction, ActionError } from './actions.js';
5
+ export { STUDIO_DEFAULT_PORT } from './constants.js';
6
+ export { createAction, registerAction, ActionError, getRegisteredActionNames } from './actions.js';
6
7
  export { createContext } from './context.js';
8
+ export { nexusVault } from '@nexus_js/security';
7
9
  export type { NexusContext, CookieOptions } from './context.js';
8
10
  export type { RenderResult, RenderOptions } from './renderer.js';
11
+ export { mergeRoutePretext } from './renderer.js';
12
+ export { registerDevRadarSink, emitDevRadar, sanitizeTelemetryValue, newTraceId } from './devradar.js';
13
+ export type { DevRadarEvent, ActionCallPayload, ActionResultPayload, ActionErrorPayload, PretextProfilePayload, SecurityAuditPayload, SecurityReportPayload, SecurityReportCheck, RuneTelemetryPayload, } from './devradar.js';
9
14
  export interface RequestLogInfo {
10
15
  method: string;
11
16
  path: string;
@@ -32,6 +37,21 @@ export interface NexusServerOptions {
32
37
  * The server itself does NOT print request logs — the host controls formatting.
33
38
  */
34
39
  onRequest?: (info: RequestLogInfo) => void;
40
+ /**
41
+ * From `nexus.config.ts` `security` — when `hardened: true`, HTML and API responses get baseline security headers.
42
+ * `shieldLite`: unknown server action names return 403 (manifest + registry allowlist) instead of 404.
43
+ */
44
+ security?: {
45
+ hardened?: boolean;
46
+ shieldLite?: boolean;
47
+ };
48
+ /**
49
+ * Flush the HTML shell (head + skeleton) before `nxPretext` resolves — improves TTFB when Pretext is slow.
50
+ * Fragment layouts only (route output must not be a full `<html>` document).
51
+ */
52
+ streamingPretext?: boolean;
53
+ /** Merged into document import map for island `import()` resolution (from `nexus.config` `browser.importMap`). */
54
+ browserImportMap?: Record<string, string>;
35
55
  }
36
56
  export declare function createNexusServer(opts: NexusServerOptions): Promise<{
37
57
  /** Starts listening. Resolves when the server is bound to the port. */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAqBH,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAChE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEjE,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,uFAAuF;IACvF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;CAC5C;AAmBD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,kBAAkB;IA6J5D,uEAAuE;cAC7D,OAAO,CAAC,IAAI,CAAC;IAavB,gEAAgE;cAChD,OAAO,CAAC,IAAI,CAAC;aAQpB,IAAI;;GAMhB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiCH,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACnG,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAChE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACvG,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AA4CvB,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,uFAAuF;IACvF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;IAC3C;;;OAGG;IACH,QAAQ,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IACxD;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,kHAAkH;IAClH,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3C;AAyCD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,kBAAkB;IA8P5D,uEAAuE;cAC7D,OAAO,CAAC,IAAI,CAAC;IA0BvB,gEAAgE;cAChD,OAAO,CAAC,IAAI,CAAC;aAWpB,IAAI;;GAMhB"}
package/dist/index.js CHANGED
@@ -9,11 +9,84 @@ import { buildRouteManifest, matchRoute } from '@nexus_js/router';
9
9
  import { handleActionRequest } from './actions.js';
10
10
  import { handleSSERequestNode, isConnectRequest, topicFromUrl } from '@nexus_js/connect';
11
11
  import { buildAggregatedNxStylesheet, bustAggregatedStylesCache, compileIslandClientBundle, isIslandClientRequest, tryServeRuntimeAsset, } from './dev-assets.js';
12
- import { renderRoute } from './renderer.js';
13
- import { preloadRegisteredServerActions } from './load-module.js';
12
+ import { devErrorHtmlPage } from './dev-error-html.js';
13
+ import { broadcastDevHotReload, subscribeDevHotClient } from './dev-hot.js';
14
+ import { renderRoute, renderRouteStreaming } from './renderer.js';
15
+ import { pipeToNodeResponse } from './streaming.js';
16
+ import { handleNavigationRequest } from './navigate.js';
17
+ import { bumpDevReloadGeneration, preloadRegisteredServerActions } from './load-module.js';
14
18
  import { createContext, RedirectSignal, NotFoundSignal } from './context.js';
15
- export { createAction, registerAction, ActionError } from './actions.js';
19
+ import { nexusVault } from '@nexus_js/security';
20
+ import { handleDevVaultPost } from './dev-vault.js';
21
+ import { refreshShieldAllowlist, isActionBlockedByShield, setShieldLite, } from './shield-runtime.js';
22
+ import { emitDevRadar } from './devradar.js';
23
+ export { STUDIO_DEFAULT_PORT } from './constants.js';
24
+ export { createAction, registerAction, ActionError, getRegisteredActionNames } from './actions.js';
16
25
  export { createContext } from './context.js';
26
+ export { nexusVault } from '@nexus_js/security';
27
+ export { mergeRoutePretext } from './renderer.js';
28
+ export { registerDevRadarSink, emitDevRadar, sanitizeTelemetryValue, newTraceId } from './devradar.js';
29
+ /**
30
+ * Returns true when an Origin header value is a loopback address (localhost,
31
+ * 127.x.x.x, ::1, 0.0.0.0) or the opaque "null" value.
32
+ * Used to protect dev-only endpoints from external network access.
33
+ * "null" is explicitly rejected here (unlike the action handler) because dev
34
+ * endpoints must never be reachable from sandboxed or opaque contexts.
35
+ */
36
+ function isLoopbackOrigin(origin) {
37
+ if (origin === 'null')
38
+ return false; // opaque origin — never trusted
39
+ try {
40
+ const { hostname } = new URL(origin);
41
+ return (hostname === 'localhost' ||
42
+ hostname === '127.0.0.1' ||
43
+ hostname === '::1' ||
44
+ hostname === '0.0.0.0' ||
45
+ /^127\.\d+\.\d+\.\d+$/.test(hostname));
46
+ }
47
+ catch {
48
+ return false;
49
+ }
50
+ }
51
+ /** Merge ctx response headers (Set-Cookie, etc.) with redirect Location. */
52
+ function redirectHeadersForWriteHead(err) {
53
+ const setCookies = [];
54
+ const out = { location: err.location };
55
+ err.responseHeaders.forEach((value, key) => {
56
+ if (key.toLowerCase() === 'set-cookie') {
57
+ setCookies.push(value);
58
+ }
59
+ else {
60
+ out[key] = value;
61
+ }
62
+ });
63
+ if (setCookies.length === 1) {
64
+ out['set-cookie'] = setCookies[0];
65
+ }
66
+ else if (setCookies.length > 1) {
67
+ out['set-cookie'] = setCookies;
68
+ }
69
+ return out;
70
+ }
71
+ /** Merge Hardened Mode headers (changelog v0.5) — CSP nonces are a future enhancement. */
72
+ function mergeHardenedHeaders(headers, hardened, dev) {
73
+ const h = {};
74
+ for (const [k, v] of Object.entries(headers)) {
75
+ if (v !== undefined)
76
+ h[k] = v;
77
+ }
78
+ if (!hardened)
79
+ return h;
80
+ h['x-frame-options'] = 'DENY';
81
+ h['x-content-type-options'] = 'nosniff';
82
+ h['referrer-policy'] = 'strict-origin-when-cross-origin';
83
+ h['permissions-policy'] = 'camera=(), microphone=(), geolocation=()';
84
+ h['x-nexus-security'] = 'hardened';
85
+ if (!dev) {
86
+ h['strict-transport-security'] = 'max-age=31536000; includeSubDomains';
87
+ }
88
+ return h;
89
+ }
17
90
  const MIME_TYPES = {
18
91
  '.html': 'text/html; charset=utf-8',
19
92
  '.js': 'application/javascript; charset=utf-8',
@@ -35,10 +108,12 @@ export async function createNexusServer(opts) {
35
108
  const dev = opts.dev ?? false;
36
109
  const routesDir = join(opts.root, 'src', 'routes');
37
110
  const publicDir = join(opts.root, opts.publicDir ?? 'public');
111
+ setShieldLite(opts.security?.shieldLite === true);
38
112
  let manifest = await buildRouteManifest(routesDir);
39
113
  const renderOpts = {
40
114
  dev,
41
115
  appRoot: opts.root,
116
+ ...(opts.browserImportMap ? { browserImportMap: opts.browserImportMap } : {}),
42
117
  assets: {
43
118
  /** ESM entry + chunks served from @nexus_js/runtime/dist via /_nexus/rt/* */
44
119
  runtime: '/_nexus/rt/index.js',
@@ -46,6 +121,7 @@ export async function createNexusServer(opts) {
46
121
  islands: new Map(),
47
122
  },
48
123
  };
124
+ const sec = (h) => mergeHardenedHeaders(h, opts.security?.hardened, dev);
49
125
  const server = createServer(async (req, res) => {
50
126
  const t0 = Date.now();
51
127
  const url = new URL(req.url ?? '/', `http://${req.headers.host ?? 'localhost'}`);
@@ -67,12 +143,60 @@ export async function createNexusServer(opts) {
67
143
  opts.onRequest(info);
68
144
  });
69
145
  }
146
+ // ── Dev hot-reload (SSE) — browser listens and calls location.reload() ──
147
+ // Guard dev-only endpoints against external origin access. Browsers on the
148
+ // same machine will send no Origin (direct navigation) or a loopback Origin.
149
+ // An attacker on the network sending a cross-origin request is rejected.
150
+ if (dev && method === 'GET' && url.pathname === '/_nexus/dev/hot') {
151
+ const devOrigin = req.headers['origin'];
152
+ if (devOrigin && !isLoopbackOrigin(devOrigin)) {
153
+ res.writeHead(403, { 'content-type': 'text/plain' });
154
+ res.end('Forbidden: dev endpoint requires loopback origin');
155
+ return;
156
+ }
157
+ subscribeDevHotClient(req, res);
158
+ return;
159
+ }
160
+ // ── Vault-lite (dev) — hot-reload secrets without restart ───────────────
161
+ if (dev && method === 'POST' && url.pathname === '/_nexus/dev/vault') {
162
+ const devOrigin = req.headers['origin'];
163
+ if (devOrigin && !isLoopbackOrigin(devOrigin)) {
164
+ res.writeHead(403, { 'content-type': 'text/plain' });
165
+ res.end('Forbidden: dev endpoint requires loopback origin');
166
+ return;
167
+ }
168
+ const request = await incomingMessageToWebRequest(req);
169
+ const response = await handleDevVaultPost(request);
170
+ await webToNodeResponse(response, res, sec);
171
+ return;
172
+ }
70
173
  // ── Server Actions ──────────────────────────────────────────────────────
71
174
  if (url.pathname.startsWith('/_nexus/action/')) {
72
175
  _isAction = true;
176
+ const actionName = url.pathname.slice('/_nexus/action/'.length).replace(/\/.*$/, '');
177
+ if (actionName !== '' && isActionBlockedByShield(actionName)) {
178
+ emitDevRadar({
179
+ type: 'security:audit',
180
+ payload: {
181
+ kind: 'shield_action',
182
+ message: 'Blocked: action not in Shield-lite allowlist',
183
+ action: actionName,
184
+ },
185
+ });
186
+ res.writeHead(403, sec({
187
+ 'content-type': 'application/json',
188
+ 'x-nexus-shield': 'block',
189
+ }));
190
+ res.end(JSON.stringify({
191
+ error: 'Forbidden',
192
+ status: 403,
193
+ code: 'SHIELD_BLOCK',
194
+ }));
195
+ return;
196
+ }
73
197
  const request = await incomingMessageToWebRequest(req);
74
198
  const response = await handleActionRequest(request);
75
- await webToNodeResponse(response, res);
199
+ await webToNodeResponse(response, res, sec);
76
200
  return;
77
201
  }
78
202
  // ── Nexus Connect — SSE (/_nexus/connect/:topic) ────────────────────────
@@ -105,11 +229,11 @@ export async function createNexusServer(opts) {
105
229
  if (method === 'HEAD') {
106
230
  const headers = {};
107
231
  response.headers.forEach((value, key) => { headers[key] = value; });
108
- res.writeHead(response.status, headers);
232
+ res.writeHead(response.status, sec(headers));
109
233
  res.end();
110
234
  return;
111
235
  }
112
- await webToNodeResponse(response, res);
236
+ await webToNodeResponse(response, res, sec);
113
237
  return;
114
238
  }
115
239
  // ── Aggregated scoped CSS from all .nx files under src/
@@ -129,7 +253,34 @@ export async function createNexusServer(opts) {
129
253
  }
130
254
  return;
131
255
  }
256
+ // ── SPA navigation JSON (/_nexus/navigate?path=…) — must run before SSR matchRoute
257
+ if (url.pathname === '/_nexus/navigate' && method === 'GET') {
258
+ const request = nodeToWebRequest(req);
259
+ const response = await handleNavigationRequest(request, manifest, renderOpts);
260
+ await webToNodeResponse(response, res, sec);
261
+ return;
262
+ }
132
263
  // ── Static files ────────────────────────────────────────────────────────
264
+ // Browsers still request /favicon.ico and /apple-touch-icon.png even when the
265
+ // app only ships favicon.svg — avoid noisy 404s by falling back to SVG.
266
+ if (method === 'GET' &&
267
+ (url.pathname === '/favicon.ico' || url.pathname === '/apple-touch-icon.png')) {
268
+ const direct = await serveStatic(url.pathname, publicDir);
269
+ if (direct) {
270
+ res.writeHead(200, { 'content-type': direct.mime });
271
+ res.end(direct.content);
272
+ return;
273
+ }
274
+ const svgFallback = await serveStatic('/favicon.svg', publicDir);
275
+ if (svgFallback) {
276
+ res.writeHead(200, {
277
+ 'content-type': 'image/svg+xml',
278
+ 'cache-control': dev ? 'no-store' : 'public, max-age=86400',
279
+ });
280
+ res.end(svgFallback.content);
281
+ return;
282
+ }
283
+ }
133
284
  const staticResult = await serveStatic(url.pathname, publicDir);
134
285
  if (staticResult) {
135
286
  res.writeHead(200, { 'content-type': staticResult.mime });
@@ -139,40 +290,43 @@ export async function createNexusServer(opts) {
139
290
  // ── SSR routing ─────────────────────────────────────────────────────────
140
291
  const matched = matchRoute(url.pathname, manifest);
141
292
  if (!matched) {
142
- res.writeHead(404, { 'content-type': 'text/html' });
293
+ res.writeHead(404, sec({ 'content-type': 'text/html' }));
143
294
  res.end(notFoundPage(url.pathname, dev));
144
295
  return;
145
296
  }
146
297
  const request = nodeToWebRequest(req);
147
298
  const ctx = createContext(request, matched.params);
148
299
  try {
300
+ if (opts.streamingPretext === true && method === 'GET') {
301
+ _cacheStrategy = 'streaming-no-store';
302
+ const streamRes = renderRouteStreaming(matched, ctx, renderOpts);
303
+ await pipeToNodeResponse(streamRes, res, sec);
304
+ return;
305
+ }
149
306
  const result = await renderRoute(matched, ctx, renderOpts);
150
307
  _cacheStrategy = result.headers['x-nexus-cache-strategy'];
151
- res.writeHead(result.status, result.headers);
308
+ res.writeHead(result.status, sec(result.headers));
152
309
  res.end(result.html);
153
310
  }
154
311
  catch (err) {
155
312
  if (err instanceof RedirectSignal) {
156
- res.writeHead(err.status, { location: err.location });
313
+ res.writeHead(err.status, sec(redirectHeadersForWriteHead(err)));
157
314
  res.end();
158
315
  return;
159
316
  }
160
317
  if (err instanceof NotFoundSignal) {
161
- res.writeHead(404, { 'content-type': 'text/html' });
318
+ res.writeHead(404, sec({ 'content-type': 'text/html' }));
162
319
  res.end(notFoundPage(url.pathname, dev));
163
320
  return;
164
321
  }
165
322
  if (dev) {
166
- const message = err instanceof Error ? err.message : String(err);
167
- const stack = err instanceof Error ? (err.stack ?? '') : '';
168
- console.error(`\x1b[31m[Nexus Error]\x1b[0m ${method} ${url.pathname}\n ${message}`);
169
- if (stack)
170
- stack.split('\n').slice(1, 6).forEach(l => console.error(` \x1b[2m${l.trim()}\x1b[0m`));
323
+ console.error(`\x1b[31m[Nexus Error]\x1b[0m ${method} ${url.pathname}`);
324
+ console.error(err);
171
325
  }
172
326
  else {
173
327
  console.error('[Nexus] Unhandled error:', err);
174
328
  }
175
- res.writeHead(500, { 'content-type': 'text/html' });
329
+ res.writeHead(500, sec({ 'content-type': 'text/html' }));
176
330
  res.end(serverErrorPage(err, dev));
177
331
  }
178
332
  });
@@ -181,8 +335,18 @@ export async function createNexusServer(opts) {
181
335
  listen() {
182
336
  return new Promise((resolve, reject) => {
183
337
  void (async () => {
338
+ // Security sanity check: warn loudly in production when the default
339
+ // HMAC secret is in use. Predictable secrets allow attackers to forge
340
+ // valid CSRF tokens, bypass replay protection, and impersonate sessions.
341
+ if (!dev && !process.env['NEXUS_SECRET']) {
342
+ console.warn('\x1b[33m[Nexus Security]\x1b[0m \x1b[1mNEXUS_SECRET is not set.\x1b[0m ' +
343
+ 'Using the default dev secret in production allows CSRF token forgery. ' +
344
+ 'Set NEXUS_SECRET to a random 32+ char secret in your environment.');
345
+ }
184
346
  try {
347
+ nexusVault.seedFromProcessEnv();
185
348
  await preloadRegisteredServerActions(opts.root, dev);
349
+ refreshShieldAllowlist(opts.root, dev);
186
350
  }
187
351
  catch (err) {
188
352
  console.error('[Nexus] Server action preload failed:', err);
@@ -193,10 +357,13 @@ export async function createNexusServer(opts) {
193
357
  },
194
358
  /** Re-scans src/routes — called on file changes in dev mode. */
195
359
  async reload() {
360
+ bumpDevReloadGeneration();
196
361
  bustAggregatedStylesCache();
197
362
  manifest = await buildRouteManifest(routesDir);
198
363
  if (dev) {
199
364
  await preloadRegisteredServerActions(opts.root, true);
365
+ refreshShieldAllowlist(opts.root, true);
366
+ broadcastDevHotReload();
200
367
  }
201
368
  },
202
369
  close() {
@@ -235,10 +402,11 @@ async function incomingMessageToWebRequest(req) {
235
402
  }
236
403
  return new Request(url, init);
237
404
  }
238
- async function webToNodeResponse(response, res) {
405
+ async function webToNodeResponse(response, res, mergeHeaders) {
239
406
  const headers = {};
240
407
  response.headers.forEach((value, key) => { headers[key] = value; });
241
- res.writeHead(response.status, headers);
408
+ const merged = mergeHeaders ? mergeHeaders(headers) : headers;
409
+ res.writeHead(response.status, merged);
242
410
  const body = Buffer.from(await response.arrayBuffer());
243
411
  res.end(body);
244
412
  }
@@ -257,15 +425,7 @@ async function serveStatic(pathname, publicDir) {
257
425
  }
258
426
  }
259
427
  function serverErrorPage(err, dev) {
260
- const message = err instanceof Error ? err.message : String(err);
261
- const stack = dev && err instanceof Error ? (err.stack ?? '') : '';
262
- return `<!DOCTYPE html><html lang="en"><body style="font-family:monospace;padding:2rem;background:#0a0a0f;color:#e8e8f0">
263
- <h1 style="color:#ff3e00">◆ Nexus — 500 Server Error</h1>
264
- <pre style="color:#ff6b6b;background:#0d0d1a;padding:1rem;border-radius:6px;overflow:auto">${message}</pre>
265
- ${dev && stack ? `<details open><summary style="cursor:pointer;color:#6b6b80">Stack trace</summary>
266
- <pre style="font-size:0.75rem;color:#4b5563">${stack.replace(/</g, '&lt;')}</pre>
267
- </details>` : ''}
268
- </body></html>`;
428
+ return devErrorHtmlPage({ context: '500 unhandled', err, dev });
269
429
  }
270
430
  function notFoundPage(pathname, dev) {
271
431
  return `<!DOCTYPE html><html><body style="font-family:monospace;padding:2rem;background:#0a0a0f;color:#e8e8f0">
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Nexus Inspector — public entry for DevRadar / future middleware taps.
3
+ *
4
+ * Server Actions and the SSR pipeline call into `devradar.ts`; apps should not
5
+ * import this in production code unless building dev-only tooling.
6
+ */
7
+ export { emitDevRadar, registerDevRadarSink, sanitizeTelemetryValue, newTraceId, } from './devradar.js';
8
+ export type { DevRadarEvent, ActionCallPayload, ActionResultPayload, ActionErrorPayload, PretextProfilePayload, SecurityAuditPayload, RuneTelemetryPayload, } from './devradar.js';
9
+ //# sourceMappingURL=inspector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspector.d.ts","sourceRoot":"","sources":["../src/inspector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,sBAAsB,EACtB,UAAU,GACX,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Nexus Inspector — public entry for DevRadar / future middleware taps.
3
+ *
4
+ * Server Actions and the SSR pipeline call into `devradar.ts`; apps should not
5
+ * import this in production code unless building dev-only tooling.
6
+ */
7
+ export { emitDevRadar, registerDevRadarSink, sanitizeTelemetryValue, newTraceId, } from './devradar.js';
8
+ //# sourceMappingURL=inspector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspector.js","sourceRoot":"","sources":["../src/inspector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,sBAAsB,EACtB,UAAU,GACX,MAAM,eAAe,CAAC"}
@@ -8,10 +8,11 @@ export interface LoadRouteModuleOptions {
8
8
  /** Route pattern from manifest, e.g. `/`, `/editor`, `/blog/:slug` */
9
9
  pattern: string;
10
10
  }
11
+ export declare function bumpDevReloadGeneration(): void;
11
12
  /**
12
- * Re-import every `*.actions.mjs` under `.nexus/dev-server` so `registerAction` picks up
13
- * code changes (including edits to files imported from the sidecar, e.g. `$lib/chat-room.js`).
14
- * Called from `server.reload()` when the CLI file watcher fires.
13
+ * Re-import `*.actions.mjs` only under the current compiler fingerprint dir (same as compiled routes).
14
+ * Importing every stale `dev-server/<oldFingerprint>/…` sidecar re-ran `registerAction` with obsolete
15
+ * generated code (e.g. duplicate `createAction` bodies without `$lib` imports) and overwrote the registry.
15
16
  */
16
17
  /**
17
18
  * Loads every route module once so generated `*.actions.*` sidecars run `registerAction`
@@ -1 +1 @@
1
- {"version":3,"file":"load-module.d.ts","sourceRoot":"","sources":["../src/load-module.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,OAAO,CAAC;IACb,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;CACjB;AAuID;;;;GAIG;AACH;;;GAGG;AACH,wBAAsB,8BAA8B,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAkCjG;AAED,wBAAsB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB9E;AAmBD;;GAEG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA0ElC"}
1
+ {"version":3,"file":"load-module.d.ts","sourceRoot":"","sources":["../src/load-module.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,OAAO,CAAC;IACb,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;CACjB;AAKD,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C;AA2ID;;;;GAIG;AACH;;;GAGG;AACH,wBAAsB,8BAA8B,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAkCjG;AAED,wBAAsB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB9E;AAmBD;;GAEG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAqFlC"}