@fuzdev/fuz_app 0.127.0 → 0.129.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions/CLAUDE.md +35 -18
- package/dist/actions/connection_closer.d.ts +16 -4
- package/dist/actions/connection_closer.d.ts.map +1 -1
- package/dist/actions/connection_closer.js +20 -4
- package/dist/actions/register_action_ws.d.ts +10 -3
- package/dist/actions/register_action_ws.d.ts.map +1 -1
- package/dist/actions/register_action_ws.js +6 -3
- package/dist/actions/register_ws_endpoint.d.ts +3 -1
- package/dist/actions/register_ws_endpoint.d.ts.map +1 -1
- package/dist/actions/register_ws_endpoint.js +3 -1
- package/dist/auth/CLAUDE.md +14 -10
- package/dist/auth/actor_lookup_action_specs.d.ts +2 -2
- package/dist/auth/actor_lookup_action_specs.js +2 -2
- package/dist/auth/audit_emitter.d.ts +73 -19
- package/dist/auth/audit_emitter.d.ts.map +1 -1
- package/dist/auth/audit_emitter.js +57 -21
- package/dist/auth/bearer_auth.d.ts +3 -2
- package/dist/auth/bearer_auth.d.ts.map +1 -1
- package/dist/auth/bearer_auth.js +3 -2
- package/dist/auth/middleware.d.ts +30 -0
- package/dist/auth/middleware.d.ts.map +1 -1
- package/dist/auth/middleware.js +59 -0
- package/dist/auth/request_context.d.ts +1 -1
- package/dist/auth/request_context.js +1 -1
- package/dist/auth/token_scope.d.ts +4 -2
- package/dist/auth/token_scope.d.ts.map +1 -1
- package/dist/auth/token_scope.js +10 -2
- package/dist/http/CLAUDE.md +3 -4
- package/dist/http/auth_shape.d.ts +3 -2
- package/dist/http/auth_shape.d.ts.map +1 -1
- package/dist/http/auth_shape.js +3 -2
- package/dist/http/common_routes.d.ts +1 -14
- package/dist/http/common_routes.d.ts.map +1 -1
- package/dist/http/common_routes.js +1 -19
- package/dist/http/ip_canonical.d.ts +1 -1
- package/dist/http/ip_canonical.js +1 -1
- package/dist/realtime/sse_auth_guard.d.ts +6 -2
- package/dist/realtime/sse_auth_guard.d.ts.map +1 -1
- package/dist/realtime/sse_auth_guard.js +3 -1
- package/dist/server/app_server.d.ts +157 -19
- package/dist/server/app_server.d.ts.map +1 -1
- package/dist/server/app_server.js +226 -128
- package/dist/server/surface_route.d.ts +32 -0
- package/dist/server/surface_route.d.ts.map +1 -0
- package/dist/server/surface_route.js +46 -0
- package/dist/testing/CLAUDE.md +50 -32
- package/dist/testing/app_server.d.ts +40 -5
- package/dist/testing/app_server.d.ts.map +1 -1
- package/dist/testing/app_server.js +84 -68
- package/dist/testing/attack_surface.d.ts +1 -1
- package/dist/testing/attack_surface.d.ts.map +1 -1
- package/dist/testing/audit_completeness.js +1 -1
- package/dist/testing/audit_drift_guard.d.ts +5 -3
- package/dist/testing/audit_drift_guard.d.ts.map +1 -1
- package/dist/testing/audit_drift_guard.js +14 -4
- package/dist/testing/cross_backend/account_lifecycle.d.ts.map +1 -1
- package/dist/testing/cross_backend/account_lifecycle.js +1 -2
- package/dist/testing/cross_backend/capabilities.d.ts +3 -1
- package/dist/testing/cross_backend/capabilities.d.ts.map +1 -1
- package/dist/testing/cross_backend/default_spine_surface.d.ts +2 -2
- package/dist/testing/cross_backend/default_spine_surface.d.ts.map +1 -1
- package/dist/testing/cross_backend/default_spine_surface.js +5 -2
- package/dist/testing/cross_backend/identity_parity.js +1 -1
- package/dist/testing/cross_backend/in_process_setup.d.ts.map +1 -1
- package/dist/testing/cross_backend/in_process_setup.js +4 -1
- package/dist/testing/cross_backend/method_coverage.d.ts +1 -1
- package/dist/testing/cross_backend/method_coverage.d.ts.map +1 -1
- package/dist/testing/cross_backend/method_coverage.js +2 -2
- package/dist/testing/cross_backend/peer_ping_ws.d.ts +1 -1
- package/dist/testing/cross_backend/peer_ping_ws.d.ts.map +1 -1
- package/dist/testing/cross_backend/role_grant_offer_notification_ws.d.ts +1 -1
- package/dist/testing/cross_backend/role_grant_offer_notification_ws.d.ts.map +1 -1
- package/dist/testing/cross_backend/setup.d.ts +4 -4
- package/dist/testing/cross_backend/setup.js +1 -1
- package/dist/testing/cross_backend/sse_round_trip.d.ts +1 -1
- package/dist/testing/cross_backend/sse_round_trip.d.ts.map +1 -1
- package/dist/testing/cross_backend/testing_reset_actions.d.ts +51 -32
- package/dist/testing/cross_backend/testing_reset_actions.d.ts.map +1 -1
- package/dist/testing/cross_backend/testing_reset_actions.js +70 -51
- package/dist/testing/cross_backend/testing_server_bun.d.ts +1 -1
- package/dist/testing/cross_backend/testing_server_bun.d.ts.map +1 -1
- package/dist/testing/cross_backend/testing_server_bun.js +80 -64
- package/dist/testing/cross_backend/testing_server_core.d.ts +10 -4
- package/dist/testing/cross_backend/testing_server_core.d.ts.map +1 -1
- package/dist/testing/cross_backend/testing_server_deno.d.ts +1 -1
- package/dist/testing/cross_backend/testing_server_deno.d.ts.map +1 -1
- package/dist/testing/cross_backend/testing_server_deno.js +1 -1
- package/dist/testing/cross_backend/testing_server_node.d.ts +1 -1
- package/dist/testing/cross_backend/testing_server_node.d.ts.map +1 -1
- package/dist/testing/cross_backend/testing_server_node.js +2 -2
- package/dist/testing/cross_backend/ws_round_trip.d.ts +3 -2
- package/dist/testing/cross_backend/ws_round_trip.d.ts.map +1 -1
- package/dist/testing/cross_backend/ws_round_trip.js +51 -13
- package/dist/testing/stubs.d.ts +65 -10
- package/dist/testing/stubs.d.ts.map +1 -1
- package/dist/testing/stubs.js +95 -41
- package/dist/testing/ws_round_trip.d.ts +1 -3
- package/dist/testing/ws_round_trip.d.ts.map +1 -1
- package/dist/ui/AdminSurface.svelte +3 -1
- package/dist/ui/AdminSurface.svelte.d.ts.map +1 -1
- package/dist/ui/CLAUDE.md +3 -1
- package/dist/ui/async_slot.svelte.d.ts +4 -4
- package/dist/ui/async_slot.svelte.js +4 -4
- package/dist/ui/keyed_async_slot.svelte.d.ts +4 -4
- package/dist/ui/keyed_async_slot.svelte.js +3 -3
- package/package.json +1 -1
|
@@ -10,18 +10,18 @@
|
|
|
10
10
|
import { Hono, type Context } from 'hono';
|
|
11
11
|
import type { UpgradeWebSocket } from 'hono/ws';
|
|
12
12
|
import { z } from 'zod';
|
|
13
|
-
import { type SessionOptions } from '../auth/session_cookie.js';
|
|
13
|
+
import { type SessionOptions, type SessionCookieOptions } from '../auth/session_cookie.js';
|
|
14
14
|
import type { BootstrapAccountSuccess } from '../auth/bootstrap_account.js';
|
|
15
15
|
import type { EventSpec } from '../realtime/sse.js';
|
|
16
16
|
import { type AuditLogSse } from '../realtime/sse_auth_guard.js';
|
|
17
|
-
import { RateLimiter, type RateLimiterMode } from '../rate_limiter.js';
|
|
17
|
+
import { RateLimiter, type RateLimiterMode, type RateLimiterOptions } from '../rate_limiter.js';
|
|
18
18
|
import type { DaemonTokenState } from '../auth/daemon_token.js';
|
|
19
19
|
import type { MigrationResult } from '../db/migrate.js';
|
|
20
20
|
import type { AppBackend } from './app_backend.js';
|
|
21
21
|
import type { AppServerContext } from './app_server_context.js';
|
|
22
22
|
import '../hono_context.js';
|
|
23
23
|
import { type ServeStaticFactory } from './static.js';
|
|
24
|
-
import { type AppSurfaceSpec, type RpcEndpointSpec } from '../http/surface.js';
|
|
24
|
+
import { type AppSurfaceSpec, type AppSurfaceDiagnostic, type RpcEndpointSpec } from '../http/surface.js';
|
|
25
25
|
import { type RouteSpec } from '../http/route_spec.js';
|
|
26
26
|
import type { MiddlewareSpec } from '../http/middleware_spec.js';
|
|
27
27
|
import { type BootstrapStatus } from '../auth/bootstrap_routes.js';
|
|
@@ -186,10 +186,19 @@ export interface AppServerOptions {
|
|
|
186
186
|
/** Bootstrap options. Omit to skip bootstrap status check and routes. */
|
|
187
187
|
bootstrap?: BootstrapServerOptions;
|
|
188
188
|
/**
|
|
189
|
-
*
|
|
190
|
-
*
|
|
189
|
+
* Mount `GET /api/surface`, which serves this server's generated
|
|
190
|
+
* `AppSurface` (every route, its auth, and its schemas) to an admin UI such
|
|
191
|
+
* as `AdminSurface.svelte`. Off by default — the Rust spine serves no such
|
|
192
|
+
* route, and a map of the API is nothing to publish unasked.
|
|
193
|
+
*
|
|
194
|
+
* When mounted the route is admin-only (`roles: ['admin']`, so it takes the
|
|
195
|
+
* `?acting=` selector) and a rule-3 token surface
|
|
196
|
+
* (`required_scope: 'surface:app_surface'`): a narrowed API token is refused
|
|
197
|
+
* it whatever its method list says. See `server/surface_route.ts`.
|
|
198
|
+
*
|
|
199
|
+
* @default false
|
|
191
200
|
*/
|
|
192
|
-
surface_route?:
|
|
201
|
+
surface_route?: boolean;
|
|
193
202
|
/**
|
|
194
203
|
* Build route specs from the initialized backend.
|
|
195
204
|
* Called after all middleware is ready.
|
|
@@ -198,9 +207,18 @@ export interface AppServerOptions {
|
|
|
198
207
|
/**
|
|
199
208
|
* Optional: transform middleware specs before applying.
|
|
200
209
|
*
|
|
201
|
-
*
|
|
202
|
-
*
|
|
203
|
-
*
|
|
210
|
+
* Receives shallow copies of the trusted-proxy spec followed by the auth
|
|
211
|
+
* stack, in a fresh array — mutating them leaves the originals untouched.
|
|
212
|
+
* Add layers anywhere (before the proxy spec, between it and the auth
|
|
213
|
+
* stack, between the auth layers, or after), but keep each of those specs
|
|
214
|
+
* — its `handler`, not just its `name` — mounted once at its original path
|
|
215
|
+
* (`'*'` for the proxy, `AUTH_MIDDLEWARE_PATH` for auth) in its original
|
|
216
|
+
* order: the endpoint auth-scope check (`assert_endpoint_in_auth_scope`)
|
|
217
|
+
* and client-IP rate limiting (`get_client_ip`) assume it, so assembly
|
|
218
|
+
* throws (`assert_middleware_stack_mounted`) if the transform moves, drops,
|
|
219
|
+
* duplicates, reorders, wraps, or replaces one. The check pins where those
|
|
220
|
+
* layers sit, not what added layers do — a layer you add runs with full
|
|
221
|
+
* context access.
|
|
204
222
|
*/
|
|
205
223
|
transform_middleware?: (specs: Array<MiddlewareSpec>) => Array<MiddlewareSpec>;
|
|
206
224
|
/**
|
|
@@ -321,13 +339,14 @@ export interface AppServerOptions {
|
|
|
321
339
|
* after the route specs and before `post_route_middleware` and
|
|
322
340
|
* `static_serving`, so neither runs ahead of an upgrade.
|
|
323
341
|
*
|
|
324
|
-
* Duplicate `path` values across two `WsEndpointSpec`s
|
|
325
|
-
*
|
|
342
|
+
* Duplicate `path` values across two `WsEndpointSpec`s, and a `path` a
|
|
343
|
+
* GET `RouteSpec` already claims, throw at assembly before any endpoint
|
|
344
|
+
* mounts (Hono would silently shadow them otherwise).
|
|
326
345
|
*
|
|
327
346
|
* Every mounted transport is added to `deps.connection_closer`, so
|
|
328
347
|
* the revocation handlers' post-commit closes reach its sockets —
|
|
329
348
|
* unconditionally, since those closes are what ends a revoked
|
|
330
|
-
* credential's connections.
|
|
349
|
+
* credential's connections. `AppServer.close` removes it again.
|
|
331
350
|
*
|
|
332
351
|
* Each spec's `auth_guard?` defaults to `true` — the factory
|
|
333
352
|
* registers `create_ws_auth_guard` against the mounted transport via
|
|
@@ -415,8 +434,17 @@ export interface AppServer {
|
|
|
415
434
|
* `WsEndpointSpec.transport` or added by hand, since they are registered
|
|
416
435
|
* on the backend's closer and the backend is going away; a close that
|
|
417
436
|
* throws is logged and the shutdown goes on
|
|
418
|
-
* 3.
|
|
419
|
-
*
|
|
437
|
+
* 3. release what assembly acquired, last acquired first: remove the
|
|
438
|
+
* audit listeners `create_app_server` registered on `deps.audit` (the
|
|
439
|
+
* audit-log SSE listener, the WS auth guards, each
|
|
440
|
+
* `extra_audit_handlers` entry) and the closer members it added to
|
|
441
|
+
* `deps.connection_closer` (each mounted transport, the audit stream
|
|
442
|
+
* registry), and `dispose` the rate limiters it built for omitted
|
|
443
|
+
* options — never one passed in, which its caller owns. A release that
|
|
444
|
+
* throws is logged and the rest still run. The backend's emitter and
|
|
445
|
+
* closer are left as they were before assembly, so a failed assembly
|
|
446
|
+
* can be retried on the same backend, and a backend whose `close` you
|
|
447
|
+
* own (a test harness) can host another server
|
|
420
448
|
* 4. close the database connection (`AppBackend.close`)
|
|
421
449
|
*
|
|
422
450
|
* Idempotent: a second call settles with the first one's outcome (a failed
|
|
@@ -450,6 +478,106 @@ export declare const require_audit_sse: (source: {
|
|
|
450
478
|
}) => AuditLogSse;
|
|
451
479
|
/** Default maximum request body size: 1 MiB. */
|
|
452
480
|
export declare const DEFAULT_MAX_BODY_SIZE: number;
|
|
481
|
+
/**
|
|
482
|
+
* Each `AppServerOptions` rate-limiter field, with the defaults an omitted one
|
|
483
|
+
* is built from under `rate_limiters: 'enforced'` and the name its
|
|
484
|
+
* explicitly-null diagnostic uses. Insertion order is the order limiters are
|
|
485
|
+
* built and their diagnostics are listed.
|
|
486
|
+
*/
|
|
487
|
+
declare const rate_limiter_slots: {
|
|
488
|
+
readonly login_ip_rate_limiter: {
|
|
489
|
+
readonly label: "login IP";
|
|
490
|
+
readonly defaults: RateLimiterOptions;
|
|
491
|
+
};
|
|
492
|
+
readonly signup_ip_rate_limiter: {
|
|
493
|
+
readonly label: "signup IP";
|
|
494
|
+
readonly defaults: RateLimiterOptions;
|
|
495
|
+
};
|
|
496
|
+
readonly bootstrap_ip_rate_limiter: {
|
|
497
|
+
readonly label: "bootstrap IP";
|
|
498
|
+
readonly defaults: RateLimiterOptions;
|
|
499
|
+
};
|
|
500
|
+
readonly login_account_rate_limiter: {
|
|
501
|
+
readonly label: "login account";
|
|
502
|
+
readonly defaults: RateLimiterOptions;
|
|
503
|
+
};
|
|
504
|
+
readonly signup_account_rate_limiter: {
|
|
505
|
+
readonly label: "signup account";
|
|
506
|
+
readonly defaults: RateLimiterOptions;
|
|
507
|
+
};
|
|
508
|
+
readonly action_ip_rate_limiter: {
|
|
509
|
+
readonly label: "action IP";
|
|
510
|
+
readonly defaults: RateLimiterOptions;
|
|
511
|
+
};
|
|
512
|
+
readonly action_account_rate_limiter: {
|
|
513
|
+
readonly label: "action account";
|
|
514
|
+
readonly defaults: RateLimiterOptions;
|
|
515
|
+
};
|
|
516
|
+
};
|
|
517
|
+
/**
|
|
518
|
+
* Name of an `AppServerOptions` rate-limiter field — also the
|
|
519
|
+
* `AppServerContext` field its resolved limiter lands on.
|
|
520
|
+
*
|
|
521
|
+
* @internal
|
|
522
|
+
*/
|
|
523
|
+
export type AppServerRateLimiterKey = keyof typeof rate_limiter_slots;
|
|
524
|
+
/**
|
|
525
|
+
* Every `AppServerOptions` rate-limiter field, in build order.
|
|
526
|
+
*
|
|
527
|
+
* @internal
|
|
528
|
+
*/
|
|
529
|
+
export declare const APP_SERVER_RATE_LIMITER_KEYS: ReadonlyArray<AppServerRateLimiterKey>;
|
|
530
|
+
/**
|
|
531
|
+
* The rate limiters `create_app_server` resolved from its options.
|
|
532
|
+
*
|
|
533
|
+
* @internal
|
|
534
|
+
*/
|
|
535
|
+
export interface ResolvedRateLimiters {
|
|
536
|
+
/** The `rate_limiters` mode, defaulted to `'enforced'`. */
|
|
537
|
+
mode: RateLimiterMode;
|
|
538
|
+
/** Each limiter by option name — `null` when off. */
|
|
539
|
+
limiters: Record<AppServerRateLimiterKey, RateLimiter | null>;
|
|
540
|
+
/**
|
|
541
|
+
* The limiters built here for omitted options, in build order — the
|
|
542
|
+
* server's to dispose. Never one passed in, which its caller owns.
|
|
543
|
+
*/
|
|
544
|
+
built: Array<RateLimiter>;
|
|
545
|
+
}
|
|
546
|
+
/**
|
|
547
|
+
* Resolve each rate-limiter option: an explicit option (instance or `null`)
|
|
548
|
+
* wins; an omitted one is a default instance under `'enforced'` and `null`
|
|
549
|
+
* under `'disabled_for_testing'`, which also announces the mode on stderr
|
|
550
|
+
* (`announce_rate_limiters_disabled`). One instance per surface — see
|
|
551
|
+
* `AppServerOptions.login_ip_rate_limiter` for why these are not a single
|
|
552
|
+
* shared bucket.
|
|
553
|
+
*
|
|
554
|
+
* @param options - the rate-limiter fields and `rate_limiters` mode of `AppServerOptions`
|
|
555
|
+
* @internal
|
|
556
|
+
*/
|
|
557
|
+
export declare const resolve_rate_limiters: (options: Pick<AppServerOptions, AppServerRateLimiterKey | "rate_limiters">) => ResolvedRateLimiters;
|
|
558
|
+
/**
|
|
559
|
+
* Inputs to `collect_config_diagnostics`.
|
|
560
|
+
*
|
|
561
|
+
* @internal
|
|
562
|
+
*/
|
|
563
|
+
export interface ConfigDiagnosticsInput {
|
|
564
|
+
/** The session cookie overrides, from `AppServerOptions.session_options`. */
|
|
565
|
+
cookie_options: Partial<SessionCookieOptions> | undefined;
|
|
566
|
+
/** The `rate_limiters` mode, defaulted. */
|
|
567
|
+
rate_limiter_mode: RateLimiterMode;
|
|
568
|
+
/** The resolved limiters, from `resolve_rate_limiters`. */
|
|
569
|
+
rate_limiters: Record<AppServerRateLimiterKey, RateLimiter | null>;
|
|
570
|
+
}
|
|
571
|
+
/**
|
|
572
|
+
* The config-level diagnostics `create_app_server` appends to the surface's
|
|
573
|
+
* spec-level ones: a weakened session cookie, and an open rate-limited
|
|
574
|
+
* surface — one warning for `'disabled_for_testing'`, otherwise one per
|
|
575
|
+
* explicitly-null limiter, so a deployment that disables login's limiter but
|
|
576
|
+
* keeps signup's reads differently from one that disables both.
|
|
577
|
+
*
|
|
578
|
+
* @internal
|
|
579
|
+
*/
|
|
580
|
+
export declare const collect_config_diagnostics: (input: ConfigDiagnosticsInput) => Array<AppSurfaceDiagnostic>;
|
|
453
581
|
/**
|
|
454
582
|
* Create a fully assembled Hono app with auth, middleware, and routes.
|
|
455
583
|
*
|
|
@@ -470,14 +598,24 @@ export declare const DEFAULT_MAX_BODY_SIZE: number;
|
|
|
470
598
|
* case; consumers can call `require_audit_sse(ctx)` / `require_audit_sse(server)`
|
|
471
599
|
* to assert the invariant.
|
|
472
600
|
*
|
|
473
|
-
*
|
|
474
|
-
*
|
|
601
|
+
* Assembly acquires a few things that outlive it — the rate limiters it
|
|
602
|
+
* builds, the listeners it registers on `deps.audit`, the members it adds to
|
|
603
|
+
* `deps.connection_closer` — and records a release for each as it goes. When
|
|
604
|
+
* assembly throws, every release recorded so far runs, last acquired first
|
|
605
|
+
* (one that throws is logged and the rest still run), and the original error
|
|
606
|
+
* is rethrown: a failed assembly leaves the backend's emitter and closer as
|
|
607
|
+
* it found them and no limiter timer running. When `auth_cleanup` is set, the
|
|
608
|
+
* auth cleanup schedule starts as the last step of assembly — nothing after
|
|
609
|
+
* it can throw, so an assembly that throws leaves no schedule running.
|
|
475
610
|
*
|
|
476
611
|
* The returned `close` owns shutdown: it stops that schedule, closes every
|
|
477
|
-
* live connection on the backend's closer,
|
|
478
|
-
*
|
|
612
|
+
* live connection on the backend's closer, runs the same releases, and
|
|
613
|
+
* closes the database (`AppServer.close`).
|
|
479
614
|
*
|
|
480
|
-
* @returns assembled Hono app
|
|
615
|
+
* @returns the assembled Hono app with its surface, bootstrap status, migration results,
|
|
616
|
+
* audit SSE, mounted WS transports, and `close`
|
|
617
|
+
* @throws Error from any assembly step, after releasing what assembly acquired
|
|
481
618
|
*/
|
|
482
619
|
export declare const create_app_server: (options: AppServerOptions) => Promise<AppServer>;
|
|
620
|
+
export {};
|
|
483
621
|
//# sourceMappingURL=app_server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app_server.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/server/app_server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,IAAI,EAAE,KAAK,OAAO,EAAE,MAAM,MAAM,CAAC;AAG1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"app_server.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/server/app_server.ts"],"names":[],"mappings":"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"}
|