@fuzdev/fuz_app 0.126.0 → 0.128.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.
Files changed (77) hide show
  1. package/dist/actions/CLAUDE.md +37 -21
  2. package/dist/actions/connection_closer.d.ts +16 -4
  3. package/dist/actions/connection_closer.d.ts.map +1 -1
  4. package/dist/actions/connection_closer.js +20 -4
  5. package/dist/actions/register_action_ws.d.ts +10 -2
  6. package/dist/actions/register_action_ws.d.ts.map +1 -1
  7. package/dist/actions/register_action_ws.js +6 -3
  8. package/dist/actions/register_ws_endpoint.d.ts +3 -1
  9. package/dist/actions/register_ws_endpoint.d.ts.map +1 -1
  10. package/dist/actions/register_ws_endpoint.js +3 -1
  11. package/dist/auth/CLAUDE.md +13 -9
  12. package/dist/auth/audit_emitter.d.ts +59 -12
  13. package/dist/auth/audit_emitter.d.ts.map +1 -1
  14. package/dist/auth/audit_emitter.js +53 -15
  15. package/dist/auth/middleware.d.ts +30 -0
  16. package/dist/auth/middleware.d.ts.map +1 -1
  17. package/dist/auth/middleware.js +59 -0
  18. package/dist/http/CLAUDE.md +3 -3
  19. package/dist/http/surface.d.ts +12 -11
  20. package/dist/http/surface.d.ts.map +1 -1
  21. package/dist/http/surface.js +1 -15
  22. package/dist/rate_limiter.d.ts +19 -1
  23. package/dist/rate_limiter.d.ts.map +1 -1
  24. package/dist/rate_limiter.js +23 -0
  25. package/dist/realtime/sse_auth_guard.d.ts +3 -1
  26. package/dist/realtime/sse_auth_guard.d.ts.map +1 -1
  27. package/dist/server/app_server.d.ts +41 -13
  28. package/dist/server/app_server.d.ts.map +1 -1
  29. package/dist/server/app_server.js +105 -50
  30. package/dist/testing/CLAUDE.md +51 -38
  31. package/dist/testing/app_server.d.ts +1 -1
  32. package/dist/testing/app_server.d.ts.map +1 -1
  33. package/dist/testing/app_server.js +15 -14
  34. package/dist/testing/attack_surface.d.ts +1 -1
  35. package/dist/testing/attack_surface.d.ts.map +1 -1
  36. package/dist/testing/audit_drift_guard.d.ts +4 -2
  37. package/dist/testing/audit_drift_guard.d.ts.map +1 -1
  38. package/dist/testing/audit_drift_guard.js +14 -4
  39. package/dist/testing/cross_backend/account_lifecycle.d.ts.map +1 -1
  40. package/dist/testing/cross_backend/account_lifecycle.js +1 -2
  41. package/dist/testing/cross_backend/capabilities.d.ts +3 -1
  42. package/dist/testing/cross_backend/capabilities.d.ts.map +1 -1
  43. package/dist/testing/cross_backend/default_backend_configs.d.ts +3 -34
  44. package/dist/testing/cross_backend/default_backend_configs.d.ts.map +1 -1
  45. package/dist/testing/cross_backend/default_backend_configs.js +1 -31
  46. package/dist/testing/cross_backend/rust_spine_stub_backend_config.d.ts +1 -1
  47. package/dist/testing/cross_backend/rust_spine_stub_backend_config.d.ts.map +1 -1
  48. package/dist/testing/cross_backend/rust_spine_stub_backend_config.js +3 -3
  49. package/dist/testing/cross_backend/spine_surface_constants.d.ts +43 -3
  50. package/dist/testing/cross_backend/spine_surface_constants.d.ts.map +1 -1
  51. package/dist/testing/cross_backend/spine_surface_constants.js +43 -3
  52. package/dist/testing/cross_backend/testing_backdoor.d.ts +15 -1
  53. package/dist/testing/cross_backend/testing_backdoor.d.ts.map +1 -1
  54. package/dist/testing/cross_backend/testing_backdoor.js +49 -5
  55. package/dist/testing/cross_backend/testing_reset_actions.d.ts +27 -18
  56. package/dist/testing/cross_backend/testing_reset_actions.d.ts.map +1 -1
  57. package/dist/testing/cross_backend/testing_reset_actions.js +30 -19
  58. package/dist/testing/cross_backend/testing_server_core.d.ts +11 -11
  59. package/dist/testing/cross_backend/testing_server_core.d.ts.map +1 -1
  60. package/dist/testing/cross_backend/testing_server_core.js +2 -2
  61. package/dist/testing/cross_backend/ts_spine_backend_config.d.ts +0 -2
  62. package/dist/testing/cross_backend/ts_spine_backend_config.d.ts.map +1 -1
  63. package/dist/testing/cross_backend/ts_spine_backend_config.js +2 -4
  64. package/dist/testing/cross_backend/ws_action_rate_limit.d.ts +1 -1
  65. package/dist/testing/cross_backend/ws_action_rate_limit.d.ts.map +1 -1
  66. package/dist/testing/cross_backend/ws_round_trip.d.ts +2 -1
  67. package/dist/testing/cross_backend/ws_round_trip.d.ts.map +1 -1
  68. package/dist/testing/cross_backend/ws_round_trip.js +40 -4
  69. package/dist/testing/middleware.d.ts.map +1 -1
  70. package/dist/testing/middleware.js +4 -3
  71. package/dist/testing/stubs.d.ts +26 -6
  72. package/dist/testing/stubs.d.ts.map +1 -1
  73. package/dist/testing/stubs.js +56 -16
  74. package/dist/testing/ws_round_trip.d.ts +7 -31
  75. package/dist/testing/ws_round_trip.d.ts.map +1 -1
  76. package/dist/testing/ws_round_trip.js +0 -38
  77. package/package.json +1 -1
@@ -9,25 +9,24 @@ import './assert_dev_env.js';
9
9
  * token id), and exposes a `connect()` factory returning a `WsClient`
10
10
  * per connection.
11
11
  *
12
- * Three layers are exported:
12
+ * Two layers are exported:
13
13
  *
14
14
  * - **Primitives** (`create_fake_ws`, `create_fake_hono_context`,
15
15
  * `create_stub_upgrade`, `MinimalActionEnvironment`,
16
16
  * `dispatch_ws_message`) — used by fuz_app's own dispatcher tests
17
17
  * and by consumers wiring tight one-off tests.
18
- * - **Harness** (`create_ws_test_harness`, `keeper_identity`) — the
19
- * high-level driver. Give it specs + handlers, get back
18
+ * - **Harness** (`create_ws_test_harness`) — the high-level driver.
19
+ * Give it specs + handlers, get back
20
20
  * `{transport, connect()}`. `connect()` is async and resolves after
21
21
  * `on_socket_open` completes, so broadcasts sent immediately after
22
22
  * `await harness.connect()` reach the client. Returns a `WsClient`
23
23
  * (shared interface — see `transports/ws_client.ts`); the same
24
24
  * interface is implemented by `transports/ws_transport.ts` for
25
25
  * cross-process tests.
26
- * - **Broadcast wiring** — `build_broadcast_api` for wiring a typed
27
- * broadcast API against the harness's transport. Wire-frame types
28
- * + predicates (`is_notification`, `is_response_for`,
29
- * `JsonrpcNotificationFrame`, ...) live in `transports/ws_client.ts`
30
- * so both in-process and cross-process drivers reference one source.
26
+ *
27
+ * Wire-frame types + predicates (`is_notification`, `is_response_for`,
28
+ * `JsonrpcNotificationFrame`, ...) live in `transports/ws_client.ts` so
29
+ * both in-process and cross-process drivers reference one source.
31
30
  *
32
31
  * Hono's wire upgrade is skipped — there is no server, so no runtime
33
32
  * adapter — but the full dispatch path is exercised
@@ -223,27 +222,4 @@ export interface WsTestHarness {
223
222
  * `onOpen`/`onMessage`/`onClose` path against a real `WSContext`.
224
223
  */
225
224
  export declare const create_ws_test_harness: (options: CreateWsTestHarnessOptions) => WsTestHarness;
226
- /** Convenience: default identity for keeper-authenticated connections. */
227
- export declare const keeper_identity: () => WsConnectIdentity;
228
- /**
229
- * Wire a typed broadcast API against the harness's transport, matching
230
- * how a consumer's real backend composes the stack. Returns the typed
231
- * API so tests can call `.zap_run_created(...)` / `.workspace_changed(...)`
232
- * etc. directly.
233
- *
234
- * ```ts
235
- * const harness = create_ws_test_harness({actions});
236
- * const broadcast = build_broadcast_api<MyBackendActionsApi>({
237
- * harness,
238
- * specs: my_broadcast_action_specs,
239
- * });
240
- * const client = await harness.connect(keeper_identity());
241
- * await broadcast.zap_run_created({run_id: '...', ...});
242
- * await client.wait_for(is_notification('zap_run_created'));
243
- * ```
244
- */
245
- export declare const build_broadcast_api: <TApi extends object>(options: {
246
- harness: WsTestHarness;
247
- specs: ReadonlyArray<ActionSpecUnion>;
248
- }) => TApi;
249
225
  //# sourceMappingURL=ws_round_trip.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ws_round_trip.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/testing/ws_round_trip.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ws_round_trip.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/testing/ws_round_trip.ts"],"names":[],"mappings":"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"}
@@ -2,14 +2,11 @@ import './assert_dev_env.js';
2
2
  import { WSContext, createWSMessageEvent } from 'hono/ws';
3
3
  import { Logger } from '@fuzdev/fuz_util/log.ts';
4
4
  import { create_uuid } from '@fuzdev/fuz_util/id.ts';
5
- import { ActionDispatcher } from '../actions/action_dispatcher.js';
6
- import { create_broadcast_api } from '../actions/broadcast_api.js';
7
5
  import { register_action_ws } from '../actions/register_action_ws.js';
8
6
  import { create_stub_db } from './stubs.js';
9
7
  import { BackendWebsocketTransport } from '../actions/transports_ws_backend.js';
10
8
  import { AUTH_SESSION_TOKEN_HASH_KEY, REQUEST_CONTEXT_KEY } from '../auth/request_context.js';
11
9
  import { hash_session_token } from '../auth/session_queries.js';
12
- import { ROLE_KEEPER } from '../auth/role_schema.js';
13
10
  import { ACCOUNT_ID_KEY, AUTH_API_TOKEN_ID_KEY, CREDENTIAL_TYPE_KEY, TEST_CONTEXT_PRESET_KEY } from '../hono_context.js';
14
11
  import { create_jsonrpc_request } from '../http/jsonrpc_helpers.js';
15
12
  import { create_test_account, create_test_actor, create_test_role_grant } from './entities.js';
@@ -388,38 +385,3 @@ export const create_ws_test_harness = (options) => {
388
385
  };
389
386
  return { transport, connect };
390
387
  };
391
- /** Convenience: default identity for keeper-authenticated connections. */
392
- export const keeper_identity = () => ({
393
- credential_type: 'daemon_token',
394
- roles: [ROLE_KEEPER]
395
- });
396
- // ---------------------------------------------------------------------
397
- // Broadcast wiring — for tests that assert on server-initiated
398
- // notification fan-out. `build_broadcast_api` mirrors how consumer
399
- // `backend_actions_api.ts` composes the real stack (peer + transport
400
- // registered + `create_broadcast_api`); the helper exists so each test
401
- // doesn't re-spell that boilerplate.
402
- // ---------------------------------------------------------------------
403
- const make_peer = () => new ActionDispatcher({ environment: new MinimalActionEnvironment([]) });
404
- /**
405
- * Wire a typed broadcast API against the harness's transport, matching
406
- * how a consumer's real backend composes the stack. Returns the typed
407
- * API so tests can call `.zap_run_created(...)` / `.workspace_changed(...)`
408
- * etc. directly.
409
- *
410
- * ```ts
411
- * const harness = create_ws_test_harness({actions});
412
- * const broadcast = build_broadcast_api<MyBackendActionsApi>({
413
- * harness,
414
- * specs: my_broadcast_action_specs,
415
- * });
416
- * const client = await harness.connect(keeper_identity());
417
- * await broadcast.zap_run_created({run_id: '...', ...});
418
- * await client.wait_for(is_notification('zap_run_created'));
419
- * ```
420
- */
421
- export const build_broadcast_api = (options) => {
422
- const peer = make_peer();
423
- peer.transports.register_transport(options.harness.transport);
424
- return create_broadcast_api({ peer, specs: options.specs });
425
- };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fuzdev/fuz_app",
3
- "version": "0.126.0",
3
+ "version": "0.128.0",
4
4
  "description": "fullstack app library",
5
5
  "glyph": "🗝",
6
6
  "logo": "logo.svg",