@fuzdev/fuz_app 0.103.0 → 0.105.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 +2 -2
- package/dist/actions/action_bridge.d.ts.map +1 -1
- package/dist/actions/action_bridge.js +2 -2
- package/dist/actions/action_codegen.d.ts.map +1 -1
- package/dist/actions/action_codegen.js +3 -3
- package/dist/actions/action_dispatcher.d.ts.map +1 -1
- package/dist/actions/action_dispatcher.js +3 -3
- package/dist/actions/action_event.d.ts.map +1 -1
- package/dist/actions/action_event.js +11 -11
- package/dist/actions/action_event_data.d.ts.map +1 -1
- package/dist/actions/action_event_data.js +2 -2
- package/dist/actions/action_event_helpers.d.ts.map +1 -1
- package/dist/actions/action_event_helpers.js +2 -2
- package/dist/actions/action_event_types.d.ts.map +1 -1
- package/dist/actions/action_event_types.js +4 -4
- package/dist/actions/action_rpc.d.ts.map +1 -1
- package/dist/actions/action_rpc.js +13 -13
- package/dist/actions/action_spec.d.ts.map +1 -1
- package/dist/actions/action_spec.js +6 -6
- package/dist/actions/action_types.d.ts.map +1 -1
- package/dist/actions/broadcast_api.d.ts.map +1 -1
- package/dist/actions/broadcast_api.js +1 -1
- package/dist/actions/cancel.d.ts.map +1 -1
- package/dist/actions/cancel.js +3 -3
- package/dist/actions/compile_action_registry.d.ts.map +1 -1
- package/dist/actions/frontend_rpc_client.d.ts.map +1 -1
- package/dist/actions/frontend_rpc_client.js +3 -3
- package/dist/actions/heartbeat.d.ts.map +1 -1
- package/dist/actions/heartbeat.js +2 -2
- package/dist/actions/peer_ping.d.ts.map +1 -1
- package/dist/actions/peer_ping.js +6 -6
- package/dist/actions/peer_request.d.ts.map +1 -1
- package/dist/actions/perform_action.d.ts.map +1 -1
- package/dist/actions/perform_action.js +13 -13
- package/dist/actions/protocol.d.ts.map +1 -1
- package/dist/actions/protocol.js +1 -1
- package/dist/actions/register_action_ws.d.ts.map +1 -1
- package/dist/actions/register_action_ws.js +14 -11
- package/dist/actions/register_ws_endpoint.d.ts.map +1 -1
- package/dist/actions/register_ws_endpoint.js +3 -3
- package/dist/actions/request_tracker.svelte.d.ts.map +1 -1
- package/dist/actions/request_tracker.svelte.js +2 -2
- package/dist/actions/rpc_client.d.ts.map +1 -1
- package/dist/actions/rpc_client.js +7 -7
- package/dist/actions/socket.svelte.d.ts.map +1 -1
- package/dist/actions/socket.svelte.js +4 -3
- package/dist/actions/transports.d.ts.map +1 -1
- package/dist/actions/transports_http.d.ts.map +1 -1
- package/dist/actions/transports_http.js +7 -7
- package/dist/actions/transports_ws.d.ts.map +1 -1
- package/dist/actions/transports_ws.js +3 -3
- package/dist/actions/transports_ws_auth_guard.d.ts +4 -4
- package/dist/actions/transports_ws_auth_guard.d.ts.map +1 -1
- package/dist/actions/transports_ws_auth_guard.js +5 -5
- package/dist/actions/transports_ws_backend.d.ts.map +1 -1
- package/dist/actions/transports_ws_backend.js +2 -2
- package/dist/actions/ws_endpoint_spec.d.ts +2 -2
- package/dist/actions/ws_endpoint_spec.d.ts.map +1 -1
- package/dist/auth/CLAUDE.md +40 -18
- package/dist/auth/account_action_specs.d.ts +4 -4
- package/dist/auth/account_action_specs.d.ts.map +1 -1
- package/dist/auth/account_action_specs.js +18 -19
- package/dist/auth/account_actions.d.ts +3 -3
- package/dist/auth/account_actions.d.ts.map +1 -1
- package/dist/auth/account_actions.js +10 -10
- package/dist/auth/account_queries.d.ts.map +1 -1
- package/dist/auth/account_queries.js +6 -6
- package/dist/auth/account_route_schema.d.ts.map +1 -1
- package/dist/auth/account_route_schema.js +19 -19
- package/dist/auth/account_routes.d.ts +2 -2
- package/dist/auth/account_routes.d.ts.map +1 -1
- package/dist/auth/account_routes.js +27 -27
- package/dist/auth/account_schema.d.ts +13 -2
- package/dist/auth/account_schema.d.ts.map +1 -1
- package/dist/auth/account_schema.js +22 -11
- package/dist/auth/actor_lookup_action_specs.d.ts.map +1 -1
- package/dist/auth/actor_lookup_action_specs.js +5 -5
- package/dist/auth/actor_lookup_actions.d.ts +4 -2
- package/dist/auth/actor_lookup_actions.d.ts.map +1 -1
- package/dist/auth/actor_lookup_actions.js +3 -3
- package/dist/auth/actor_lookup_queries.d.ts.map +1 -1
- package/dist/auth/actor_search_action_specs.d.ts.map +1 -1
- package/dist/auth/actor_search_action_specs.js +6 -6
- package/dist/auth/actor_search_actions.d.ts +4 -2
- package/dist/auth/actor_search_actions.d.ts.map +1 -1
- package/dist/auth/actor_search_actions.js +5 -5
- package/dist/auth/actor_search_queries.d.ts.map +1 -1
- package/dist/auth/admin_action_specs.d.ts +2 -2
- package/dist/auth/admin_action_specs.d.ts.map +1 -1
- package/dist/auth/admin_action_specs.js +55 -55
- package/dist/auth/admin_actions.d.ts +5 -5
- package/dist/auth/admin_actions.d.ts.map +1 -1
- package/dist/auth/admin_actions.js +45 -44
- package/dist/auth/all_action_spec_registries.d.ts.map +1 -1
- package/dist/auth/all_action_spec_registries.js +1 -1
- package/dist/auth/all_cell_actions.d.ts.map +1 -1
- package/dist/auth/all_cell_actions.js +1 -1
- package/dist/auth/api_token.d.ts.map +1 -1
- package/dist/auth/api_token_queries.d.ts +7 -2
- package/dist/auth/api_token_queries.d.ts.map +1 -1
- package/dist/auth/api_token_queries.js +8 -3
- package/dist/auth/app_settings_queries.d.ts.map +1 -1
- package/dist/auth/app_settings_schema.d.ts.map +1 -1
- package/dist/auth/app_settings_schema.js +3 -3
- package/dist/auth/audit_emitter.d.ts +28 -20
- package/dist/auth/audit_emitter.d.ts.map +1 -1
- package/dist/auth/audit_emitter.js +37 -19
- package/dist/auth/audit_log_ddl.js +1 -1
- package/dist/auth/audit_log_queries.d.ts.map +1 -1
- package/dist/auth/audit_log_queries.js +2 -2
- package/dist/auth/audit_log_route_schema.d.ts.map +1 -1
- package/dist/auth/audit_log_route_schema.js +1 -1
- package/dist/auth/audit_log_routes.d.ts.map +1 -1
- package/dist/auth/audit_log_routes.js +3 -3
- package/dist/auth/audit_log_schema.d.ts +2 -2
- package/dist/auth/audit_log_schema.d.ts.map +1 -1
- package/dist/auth/audit_log_schema.js +69 -68
- package/dist/auth/auth_ddl.js +3 -3
- package/dist/auth/auth_guard_resolver.d.ts.map +1 -1
- package/dist/auth/bearer_auth.d.ts.map +1 -1
- package/dist/auth/bootstrap_account.d.ts.map +1 -1
- package/dist/auth/bootstrap_account.js +5 -5
- package/dist/auth/bootstrap_route_schema.d.ts.map +1 -1
- package/dist/auth/bootstrap_route_schema.js +6 -6
- package/dist/auth/bootstrap_routes.d.ts.map +1 -1
- package/dist/auth/bootstrap_routes.js +7 -7
- package/dist/auth/cell_action_specs.d.ts +227 -2
- package/dist/auth/cell_action_specs.d.ts.map +1 -1
- package/dist/auth/cell_action_specs.js +117 -39
- package/dist/auth/cell_actions.d.ts +34 -11
- package/dist/auth/cell_actions.d.ts.map +1 -1
- package/dist/auth/cell_actions.js +155 -41
- package/dist/auth/cell_audit_action_specs.d.ts.map +1 -1
- package/dist/auth/cell_audit_action_specs.js +4 -4
- package/dist/auth/cell_audit_actions.d.ts.map +1 -1
- package/dist/auth/cell_audit_actions.js +3 -3
- package/dist/auth/cell_audit_events.d.ts +1 -1
- package/dist/auth/cell_audit_events.d.ts.map +1 -1
- package/dist/auth/cell_audit_events.js +7 -6
- package/dist/auth/cell_audit_metadata.d.ts +15 -0
- package/dist/auth/cell_audit_metadata.d.ts.map +1 -1
- package/dist/auth/cell_audit_metadata.js +13 -2
- package/dist/auth/cell_authorize.d.ts.map +1 -1
- package/dist/auth/cell_data_schema.d.ts.map +1 -1
- package/dist/auth/cell_data_schema.js +1 -1
- package/dist/auth/cell_field_action_specs.d.ts.map +1 -1
- package/dist/auth/cell_field_action_specs.js +16 -16
- package/dist/auth/cell_field_actions.d.ts +2 -2
- package/dist/auth/cell_field_actions.d.ts.map +1 -1
- package/dist/auth/cell_field_actions.js +11 -11
- package/dist/auth/cell_field_audit_metadata.d.ts.map +1 -1
- package/dist/auth/cell_field_audit_metadata.js +2 -2
- package/dist/auth/cell_grant_action_specs.d.ts.map +1 -1
- package/dist/auth/cell_grant_action_specs.js +15 -15
- package/dist/auth/cell_grant_actions.d.ts +2 -2
- package/dist/auth/cell_grant_actions.d.ts.map +1 -1
- package/dist/auth/cell_grant_actions.js +12 -12
- package/dist/auth/cell_grant_audit_metadata.d.ts.map +1 -1
- package/dist/auth/cell_grant_audit_metadata.js +3 -3
- package/dist/auth/cell_item_action_specs.d.ts +6 -2
- package/dist/auth/cell_item_action_specs.d.ts.map +1 -1
- package/dist/auth/cell_item_action_specs.js +25 -21
- package/dist/auth/cell_item_actions.d.ts +2 -2
- package/dist/auth/cell_item_actions.d.ts.map +1 -1
- package/dist/auth/cell_item_actions.js +14 -14
- package/dist/auth/cell_item_audit_metadata.d.ts.map +1 -1
- package/dist/auth/cell_item_audit_metadata.js +3 -3
- package/dist/auth/cell_relation_visibility.d.ts.map +1 -1
- package/dist/auth/cleanup.d.ts.map +1 -1
- package/dist/auth/cleanup.js +2 -2
- package/dist/auth/credential_type_schema.d.ts.map +1 -1
- package/dist/auth/credential_type_schema.js +5 -5
- package/dist/auth/daemon_token.d.ts.map +1 -1
- package/dist/auth/daemon_token_middleware.d.ts.map +1 -1
- package/dist/auth/daemon_token_middleware.js +2 -2
- package/dist/auth/deps.d.ts +20 -5
- package/dist/auth/deps.d.ts.map +1 -1
- package/dist/auth/grant_path_schema.d.ts.map +1 -1
- package/dist/auth/grant_path_schema.js +8 -8
- package/dist/auth/invite_queries.d.ts.map +1 -1
- package/dist/auth/invite_schema.d.ts.map +1 -1
- package/dist/auth/invite_schema.js +2 -2
- package/dist/auth/keyring.d.ts.map +1 -1
- package/dist/auth/keyring.js +1 -1
- package/dist/auth/middleware.d.ts.map +1 -1
- package/dist/auth/middleware.js +7 -7
- package/dist/auth/migrations.d.ts.map +1 -1
- package/dist/auth/migrations.js +22 -20
- package/dist/auth/password.d.ts.map +1 -1
- package/dist/auth/password_argon2.d.ts.map +1 -1
- package/dist/auth/password_argon2.js +2 -2
- package/dist/auth/request_context.d.ts.map +1 -1
- package/dist/auth/request_context.js +7 -7
- package/dist/auth/role_grant_offer_action_specs.d.ts.map +1 -1
- package/dist/auth/role_grant_offer_action_specs.js +35 -35
- package/dist/auth/role_grant_offer_actions.d.ts +7 -4
- package/dist/auth/role_grant_offer_actions.d.ts.map +1 -1
- package/dist/auth/role_grant_offer_actions.js +43 -43
- package/dist/auth/role_grant_offer_notifications.d.ts.map +1 -1
- package/dist/auth/role_grant_offer_notifications.js +13 -13
- package/dist/auth/role_grant_offer_queries.d.ts +1 -1
- package/dist/auth/role_grant_offer_queries.d.ts.map +1 -1
- package/dist/auth/role_grant_offer_queries.js +11 -11
- package/dist/auth/role_grant_offer_schema.d.ts.map +1 -1
- package/dist/auth/role_grant_offer_schema.js +7 -7
- package/dist/auth/role_grant_queries.d.ts.map +1 -1
- package/dist/auth/role_grant_queries.js +3 -3
- package/dist/auth/role_schema.d.ts.map +1 -1
- package/dist/auth/role_schema.js +7 -7
- package/dist/auth/scope_kind_schema.d.ts.map +1 -1
- package/dist/auth/self_service_role_action_specs.d.ts.map +1 -1
- package/dist/auth/self_service_role_action_specs.js +5 -5
- package/dist/auth/self_service_role_actions.d.ts +3 -3
- package/dist/auth/self_service_role_actions.d.ts.map +1 -1
- package/dist/auth/self_service_role_actions.js +9 -9
- package/dist/auth/session_cookie.d.ts.map +1 -1
- package/dist/auth/session_cookie.js +3 -3
- package/dist/auth/session_middleware.d.ts.map +1 -1
- package/dist/auth/session_middleware.js +4 -4
- package/dist/auth/session_queries.d.ts +14 -4
- package/dist/auth/session_queries.d.ts.map +1 -1
- package/dist/auth/session_queries.js +13 -3
- package/dist/auth/signup_route_schema.d.ts.map +1 -1
- package/dist/auth/signup_route_schema.js +6 -6
- package/dist/auth/signup_routes.d.ts.map +1 -1
- package/dist/auth/signup_routes.js +11 -11
- package/dist/auth/standard_action_specs.d.ts.map +1 -1
- package/dist/auth/standard_action_specs.js +1 -1
- package/dist/auth/standard_rpc_actions.d.ts +4 -4
- package/dist/auth/standard_rpc_actions.d.ts.map +1 -1
- package/dist/auth/standard_rpc_actions.js +3 -3
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/daemon.d.ts.map +1 -1
- package/dist/cli/daemon.js +3 -3
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +1 -1
- package/dist/cli/logger.d.ts.map +1 -1
- package/dist/cli/logger.js +1 -1
- package/dist/cli/util.d.ts.map +1 -1
- package/dist/cli/util.js +1 -1
- package/dist/db/CLAUDE.md +16 -6
- package/dist/db/cell_audit_queries.d.ts.map +1 -1
- package/dist/db/cell_audit_queries.js +1 -1
- package/dist/db/cell_ddl.d.ts +14 -1
- package/dist/db/cell_ddl.d.ts.map +1 -1
- package/dist/db/cell_ddl.js +26 -6
- package/dist/db/cell_field_queries.d.ts.map +1 -1
- package/dist/db/cell_grant_queries.d.ts.map +1 -1
- package/dist/db/cell_grant_queries.js +1 -1
- package/dist/db/cell_history_ddl.d.ts.map +1 -1
- package/dist/db/cell_history_ddl.js +4 -4
- package/dist/db/cell_item_queries.d.ts.map +1 -1
- package/dist/db/cell_queries.d.ts +46 -1
- package/dist/db/cell_queries.d.ts.map +1 -1
- package/dist/db/cell_queries.js +42 -5
- package/dist/db/create_db.d.ts.map +1 -1
- package/dist/db/create_db.js +1 -1
- package/dist/db/db.d.ts.map +1 -1
- package/dist/db/db_pg.d.ts.map +1 -1
- package/dist/db/db_pg.js +1 -1
- package/dist/db/db_pglite.d.ts.map +1 -1
- package/dist/db/db_pglite.js +1 -1
- package/dist/db/fact_ddl.d.ts.map +1 -1
- package/dist/db/fact_ddl.js +3 -3
- package/dist/db/fact_disk_storage.d.ts +1 -1
- package/dist/db/fact_disk_storage.d.ts.map +1 -1
- package/dist/db/fact_disk_storage.js +6 -6
- package/dist/db/fact_queries.d.ts +1 -1
- package/dist/db/fact_queries.d.ts.map +1 -1
- package/dist/db/fact_queries.js +2 -2
- package/dist/db/fact_store.d.ts +1 -1
- package/dist/db/fact_store.d.ts.map +1 -1
- package/dist/db/fact_store.js +9 -9
- package/dist/db/fact_store_errors.d.ts.map +1 -1
- package/dist/db/file_fact_url.d.ts +1 -1
- package/dist/db/file_fact_url.d.ts.map +1 -1
- package/dist/db/file_fact_url.js +1 -1
- package/dist/db/migrate.d.ts.map +1 -1
- package/dist/db/pg_error.d.ts.map +1 -1
- package/dist/db/query_deps.d.ts.map +1 -1
- package/dist/db/schema_ready.d.ts.map +1 -1
- package/dist/db/schema_ready.js +2 -2
- package/dist/db/status.d.ts.map +1 -1
- package/dist/db/status.js +6 -6
- package/dist/dev/setup.d.ts.map +1 -1
- package/dist/dev/setup.js +6 -6
- package/dist/env/dotenv.d.ts.map +1 -1
- package/dist/env/load.d.ts.map +1 -1
- package/dist/env/resolve.d.ts.map +1 -1
- package/dist/hono_context.d.ts.map +1 -1
- package/dist/hono_context.js +2 -2
- package/dist/http/auth_shape.d.ts.map +1 -1
- package/dist/http/auth_shape.js +6 -6
- package/dist/http/client_ip.d.ts.map +1 -1
- package/dist/http/common_routes.d.ts.map +1 -1
- package/dist/http/common_routes.js +8 -8
- package/dist/http/db_routes.d.ts.map +1 -1
- package/dist/http/db_routes.js +27 -23
- package/dist/http/error_schemas.d.ts +1 -1
- package/dist/http/error_schemas.d.ts.map +1 -1
- package/dist/http/error_schemas.js +13 -13
- package/dist/http/jsonrpc.d.ts.map +1 -1
- package/dist/http/jsonrpc.js +9 -9
- package/dist/http/jsonrpc_errors.d.ts.map +1 -1
- package/dist/http/jsonrpc_errors.js +21 -21
- package/dist/http/jsonrpc_helpers.d.ts.map +1 -1
- package/dist/http/jsonrpc_helpers.js +7 -7
- package/dist/http/middleware_spec.d.ts.map +1 -1
- package/dist/http/origin.d.ts.map +1 -1
- package/dist/http/pending_effects.d.ts.map +1 -1
- package/dist/http/proxy.d.ts.map +1 -1
- package/dist/http/proxy.js +1 -1
- package/dist/http/route_spec.d.ts.map +1 -1
- package/dist/http/route_spec.js +6 -6
- package/dist/http/schema_helpers.d.ts.map +1 -1
- package/dist/http/schema_helpers.js +1 -1
- package/dist/http/surface.d.ts.map +1 -1
- package/dist/http/surface.js +11 -11
- package/dist/http/surface_query.d.ts.map +1 -1
- package/dist/http/surface_query.js +1 -1
- package/dist/primitive_schemas.d.ts.map +1 -1
- package/dist/primitive_schemas.js +1 -1
- package/dist/rate_limiter.d.ts.map +1 -1
- package/dist/rate_limiter.js +4 -4
- package/dist/realtime/sse.d.ts.map +1 -1
- package/dist/realtime/sse.js +2 -2
- package/dist/realtime/sse_auth_guard.d.ts +4 -4
- package/dist/realtime/sse_auth_guard.d.ts.map +1 -1
- package/dist/realtime/sse_auth_guard.js +8 -8
- package/dist/realtime/subscriber_registry.d.ts.map +1 -1
- package/dist/runtime/deno.d.ts.map +1 -1
- package/dist/runtime/deno.js +7 -7
- package/dist/runtime/deps.d.ts.map +1 -1
- package/dist/runtime/fs.d.ts.map +1 -1
- package/dist/runtime/mock.d.ts.map +1 -1
- package/dist/runtime/mock.js +3 -3
- package/dist/runtime/node.d.ts.map +1 -1
- package/dist/runtime/node.js +7 -7
- package/dist/schema_meta.d.ts.map +1 -1
- package/dist/server/app_backend.d.ts +3 -3
- package/dist/server/app_backend.d.ts.map +1 -1
- package/dist/server/app_backend.js +3 -3
- package/dist/server/app_server.d.ts +6 -6
- package/dist/server/app_server.d.ts.map +1 -1
- package/dist/server/app_server.js +32 -32
- package/dist/server/app_server_context.d.ts.map +1 -1
- package/dist/server/env.d.ts.map +1 -1
- package/dist/server/env.js +9 -9
- package/dist/server/fact_write.d.ts +1 -1
- package/dist/server/fact_write.d.ts.map +1 -1
- package/dist/server/fact_write.js +2 -1
- package/dist/server/file_fact_fetcher.d.ts.map +1 -1
- package/dist/server/file_fact_fetcher.js +1 -1
- package/dist/server/serve_fact_route.d.ts.map +1 -1
- package/dist/server/serve_fact_route.js +15 -13
- package/dist/server/startup.d.ts.map +1 -1
- package/dist/server/static.d.ts.map +1 -1
- package/dist/server/validate_nginx.js +1 -1
- package/dist/server/x_accel.d.ts.map +1 -1
- package/dist/server/x_accel.js +1 -1
- package/dist/testing/CLAUDE.md +27 -18
- package/dist/testing/admin_integration.d.ts.map +1 -1
- package/dist/testing/admin_integration.js +62 -62
- package/dist/testing/adversarial_404.d.ts.map +1 -1
- package/dist/testing/adversarial_404.js +1 -1
- package/dist/testing/adversarial_headers.d.ts.map +1 -1
- package/dist/testing/adversarial_headers.js +15 -15
- package/dist/testing/adversarial_input.d.ts.map +1 -1
- package/dist/testing/adversarial_input.js +22 -22
- package/dist/testing/app_server.d.ts.map +1 -1
- package/dist/testing/app_server.js +32 -32
- package/dist/testing/assertions.d.ts.map +1 -1
- package/dist/testing/attack_surface.d.ts.map +1 -1
- package/dist/testing/attack_surface.js +12 -12
- package/dist/testing/audit_completeness.d.ts.map +1 -1
- package/dist/testing/audit_completeness.js +41 -41
- package/dist/testing/audit_drift_guard.d.ts +3 -1
- package/dist/testing/audit_drift_guard.d.ts.map +1 -1
- package/dist/testing/audit_drift_guard.js +12 -6
- package/dist/testing/auth_apps.d.ts.map +1 -1
- package/dist/testing/auth_apps.js +4 -4
- package/dist/testing/bootstrap_success.d.ts.map +1 -1
- package/dist/testing/bootstrap_success.js +11 -11
- package/dist/testing/connection_closer_helpers.d.ts.map +1 -1
- package/dist/testing/connection_closer_helpers.js +1 -1
- package/dist/testing/cross_backend/account_lifecycle.d.ts.map +1 -1
- package/dist/testing/cross_backend/account_lifecycle.js +1 -1
- package/dist/testing/cross_backend/action_manifest.d.ts.map +1 -1
- package/dist/testing/cross_backend/action_manifest.js +4 -4
- package/dist/testing/cross_backend/action_manifest_parity.d.ts.map +1 -1
- package/dist/testing/cross_backend/actor_lookup.d.ts.map +1 -1
- package/dist/testing/cross_backend/actor_lookup.js +3 -3
- package/dist/testing/cross_backend/actor_search.d.ts.map +1 -1
- package/dist/testing/cross_backend/actor_search.js +5 -5
- package/dist/testing/cross_backend/app_settings.d.ts.map +1 -1
- package/dist/testing/cross_backend/app_settings.js +6 -6
- package/dist/testing/cross_backend/backend_config.d.ts.map +1 -1
- package/dist/testing/cross_backend/bench/bench_report.d.ts.map +1 -1
- package/dist/testing/cross_backend/bench/bench_report.js +5 -5
- package/dist/testing/cross_backend/bench/run_cross_impl_bench.d.ts.map +1 -1
- package/dist/testing/cross_backend/bench/run_cross_impl_bench.js +2 -2
- package/dist/testing/cross_backend/bench/scenario.d.ts.map +1 -1
- package/dist/testing/cross_backend/bench/scenario.js +1 -1
- package/dist/testing/cross_backend/body_size.d.ts.map +1 -1
- package/dist/testing/cross_backend/body_size.js +1 -1
- package/dist/testing/cross_backend/bootstrap_backend.d.ts.map +1 -1
- package/dist/testing/cross_backend/bootstrap_backend.js +2 -2
- package/dist/testing/cross_backend/build_test_backend_paths.js +1 -1
- package/dist/testing/cross_backend/capabilities.js +2 -2
- package/dist/testing/cross_backend/cell_cross_helpers.d.ts.map +1 -1
- package/dist/testing/cross_backend/cell_crud.d.ts.map +1 -1
- package/dist/testing/cross_backend/cell_crud.js +5 -2
- package/dist/testing/cross_backend/cell_gated_create.d.ts +24 -0
- package/dist/testing/cross_backend/cell_gated_create.d.ts.map +1 -1
- package/dist/testing/cross_backend/cell_gated_create.js +178 -35
- package/dist/testing/cross_backend/cell_grant_role.d.ts.map +1 -1
- package/dist/testing/cross_backend/cell_grant_role.js +2 -2
- package/dist/testing/cross_backend/cell_relations.d.ts.map +1 -1
- package/dist/testing/cross_backend/cell_relations.js +13 -13
- package/dist/testing/cross_backend/conformance_case.d.ts.map +1 -1
- package/dist/testing/cross_backend/conformance_case.js +11 -11
- package/dist/testing/cross_backend/conformance_table.d.ts.map +1 -1
- package/dist/testing/cross_backend/conformance_table.js +11 -11
- package/dist/testing/cross_backend/cookie_attributes.d.ts.map +1 -1
- package/dist/testing/cross_backend/cookie_attributes.js +4 -4
- package/dist/testing/cross_backend/create_cross_backend_global_setup.d.ts +1 -1
- package/dist/testing/cross_backend/create_cross_backend_global_setup.d.ts.map +1 -1
- package/dist/testing/cross_backend/create_cross_backend_global_setup.js +1 -1
- package/dist/testing/cross_backend/create_dual_spawn_global_setup.d.ts +1 -1
- package/dist/testing/cross_backend/create_dual_spawn_global_setup.d.ts.map +1 -1
- package/dist/testing/cross_backend/create_dual_spawn_global_setup.js +1 -1
- package/dist/testing/cross_backend/credential_header_robustness.js +1 -1
- package/dist/testing/cross_backend/default_backend_configs.d.ts.map +1 -1
- package/dist/testing/cross_backend/default_backend_configs.js +12 -12
- package/dist/testing/cross_backend/default_spine_surface.d.ts.map +1 -1
- package/dist/testing/cross_backend/default_spine_surface.js +9 -9
- package/dist/testing/cross_backend/expected_schema.json +3 -0
- package/dist/testing/cross_backend/fact_serving.d.ts.map +1 -1
- package/dist/testing/cross_backend/fact_serving.js +2 -2
- package/dist/testing/cross_backend/full_spine_mount.d.ts.map +1 -1
- package/dist/testing/cross_backend/full_spine_mount.js +11 -8
- package/dist/testing/cross_backend/identity_parity.d.ts.map +1 -1
- package/dist/testing/cross_backend/identity_parity.js +28 -24
- package/dist/testing/cross_backend/in_process_setup.d.ts.map +1 -1
- package/dist/testing/cross_backend/in_process_setup.js +9 -9
- package/dist/testing/cross_backend/login_security.d.ts.map +1 -1
- package/dist/testing/cross_backend/login_security.js +2 -2
- package/dist/testing/cross_backend/make_cross_backend_project.d.ts +1 -1
- package/dist/testing/cross_backend/make_cross_backend_project.d.ts.map +1 -1
- package/dist/testing/cross_backend/make_cross_backend_project.js +3 -3
- package/dist/testing/cross_backend/method_coverage.d.ts.map +1 -1
- package/dist/testing/cross_backend/origin.d.ts.map +1 -1
- package/dist/testing/cross_backend/origin.js +4 -4
- package/dist/testing/cross_backend/peer_ping_ws.d.ts.map +1 -1
- package/dist/testing/cross_backend/peer_ping_ws.js +6 -6
- package/dist/testing/cross_backend/ready.d.ts.map +1 -1
- package/dist/testing/cross_backend/role_grant_offer_enumeration.d.ts.map +1 -1
- package/dist/testing/cross_backend/role_grant_offer_enumeration.js +1 -1
- package/dist/testing/cross_backend/role_grant_offer_notification_ws.d.ts.map +1 -1
- package/dist/testing/cross_backend/role_grant_offer_notification_ws.js +1 -1
- package/dist/testing/cross_backend/role_grant_participation.d.ts.map +1 -1
- package/dist/testing/cross_backend/rust_spine_stub_backend_config.d.ts.map +1 -1
- package/dist/testing/cross_backend/rust_spine_stub_backend_config.js +5 -5
- package/dist/testing/cross_backend/setup.d.ts.map +1 -1
- package/dist/testing/cross_backend/setup.js +36 -36
- package/dist/testing/cross_backend/spawn_backend.d.ts.map +1 -1
- package/dist/testing/cross_backend/spawn_backend.js +1 -1
- package/dist/testing/cross_backend/sse_round_trip.d.ts.map +1 -1
- package/dist/testing/cross_backend/sse_round_trip.js +10 -7
- package/dist/testing/cross_backend/standard.d.ts.map +1 -1
- package/dist/testing/cross_backend/standard.js +5 -5
- package/dist/testing/cross_backend/test_cell_gated_create_authorize.d.ts +12 -7
- package/dist/testing/cross_backend/test_cell_gated_create_authorize.d.ts.map +1 -1
- package/dist/testing/cross_backend/test_cell_gated_create_authorize.js +54 -15
- package/dist/testing/cross_backend/testing_backdoor.d.ts.map +1 -1
- package/dist/testing/cross_backend/testing_backdoor.js +7 -7
- package/dist/testing/cross_backend/testing_reset_actions.d.ts.map +1 -1
- package/dist/testing/cross_backend/testing_reset_actions.js +24 -23
- package/dist/testing/cross_backend/testing_server_bun.d.ts.map +1 -1
- package/dist/testing/cross_backend/testing_server_bun.js +3 -3
- package/dist/testing/cross_backend/testing_server_core.d.ts.map +1 -1
- package/dist/testing/cross_backend/testing_server_core.js +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.map +1 -1
- package/dist/testing/cross_backend/testing_server_node.js +3 -3
- package/dist/testing/cross_backend/ts_spine_backend_config.d.ts.map +1 -1
- package/dist/testing/cross_backend/ts_spine_backend_config.js +13 -13
- package/dist/testing/cross_backend/ws_round_trip.d.ts.map +1 -1
- package/dist/testing/cross_backend/ws_round_trip.js +2 -2
- package/dist/testing/data_exposure.d.ts.map +1 -1
- package/dist/testing/data_exposure.js +8 -8
- package/dist/testing/db.d.ts.map +1 -1
- package/dist/testing/db.js +3 -3
- package/dist/testing/db_entities.d.ts.map +1 -1
- package/dist/testing/db_entities.js +1 -1
- package/dist/testing/entities.d.ts.map +1 -1
- package/dist/testing/entities.js +5 -5
- package/dist/testing/error_coverage.d.ts.map +1 -1
- package/dist/testing/integration.d.ts.map +1 -1
- package/dist/testing/integration.js +106 -106
- package/dist/testing/integration_helpers.d.ts.map +1 -1
- package/dist/testing/integration_helpers.js +3 -3
- package/dist/testing/middleware.d.ts.map +1 -1
- package/dist/testing/middleware.js +11 -11
- package/dist/testing/mock_fs.js +1 -1
- package/dist/testing/rate_limiting.d.ts.map +1 -1
- package/dist/testing/rate_limiting.js +23 -23
- package/dist/testing/role_grant_helpers.d.ts.map +1 -1
- package/dist/testing/role_grant_helpers.js +3 -3
- package/dist/testing/round_trip.d.ts.map +1 -1
- package/dist/testing/round_trip.js +6 -6
- package/dist/testing/rpc_attack_surface.d.ts.map +1 -1
- package/dist/testing/rpc_attack_surface.js +12 -12
- package/dist/testing/rpc_helpers.d.ts.map +1 -1
- package/dist/testing/rpc_helpers.js +11 -11
- package/dist/testing/rpc_round_trip.d.ts.map +1 -1
- package/dist/testing/rpc_round_trip.js +3 -3
- package/dist/testing/schema_generators.d.ts.map +1 -1
- package/dist/testing/schema_generators.js +3 -3
- package/dist/testing/schema_introspect.d.ts.map +1 -1
- package/dist/testing/schema_introspect.js +12 -12
- package/dist/testing/schema_parity.d.ts.map +1 -1
- package/dist/testing/schema_parity.js +7 -7
- package/dist/testing/schema_ready_fixture.d.ts.map +1 -1
- package/dist/testing/sse_round_trip.d.ts.map +1 -1
- package/dist/testing/sse_round_trip.js +8 -8
- package/dist/testing/standard.d.ts.map +1 -1
- package/dist/testing/standard.js +8 -8
- package/dist/testing/stubs.d.ts +6 -6
- package/dist/testing/stubs.d.ts.map +1 -1
- package/dist/testing/stubs.js +26 -23
- package/dist/testing/surface_invariants.d.ts.map +1 -1
- package/dist/testing/surface_invariants.js +5 -5
- package/dist/testing/testing_rate_limiter.d.ts.map +1 -1
- package/dist/testing/transports/bootstrap.d.ts.map +1 -1
- package/dist/testing/transports/bootstrap.js +4 -4
- package/dist/testing/transports/fetch_transport.d.ts.map +1 -1
- package/dist/testing/transports/sse_frame_reader.d.ts.map +1 -1
- package/dist/testing/transports/sse_transport.js +1 -1
- package/dist/testing/transports/ws_client.d.ts.map +1 -1
- package/dist/testing/transports/ws_client.js +1 -1
- package/dist/testing/transports/ws_transport.js +4 -4
- package/dist/testing/ws_round_trip.d.ts.map +1 -1
- package/dist/testing/ws_round_trip.js +21 -21
- package/dist/ui/AccountSessions.svelte +11 -11
- package/dist/ui/AdminAccounts.svelte +10 -10
- package/dist/ui/AdminAuditLog.svelte +14 -14
- package/dist/ui/AdminInvites.svelte +13 -13
- package/dist/ui/AdminOverview.svelte +22 -22
- package/dist/ui/AdminRoleGrantHistory.svelte +11 -11
- package/dist/ui/AdminSessions.svelte +12 -12
- package/dist/ui/AdminSettings.svelte +1 -1
- package/dist/ui/AdminSurface.svelte +3 -3
- package/dist/ui/AppShell.svelte +8 -8
- package/dist/ui/AppShell.svelte.d.ts.map +1 -1
- package/dist/ui/BootstrapForm.svelte +9 -9
- package/dist/ui/CLAUDE.md +1 -1
- package/dist/ui/ColumnLayout.svelte +2 -2
- package/dist/ui/ColumnLayout.svelte.d.ts.map +1 -1
- package/dist/ui/ConfirmButton.svelte +8 -8
- package/dist/ui/ConfirmButton.svelte.d.ts.map +1 -1
- package/dist/ui/Datatable.svelte +6 -6
- package/dist/ui/Datatable.svelte.d.ts.map +1 -1
- package/dist/ui/LoginForm.svelte +6 -6
- package/dist/ui/LogoutButton.svelte +2 -2
- package/dist/ui/LogoutButton.svelte.d.ts.map +1 -1
- package/dist/ui/MenuLink.svelte +5 -5
- package/dist/ui/MenuLink.svelte.d.ts.map +1 -1
- package/dist/ui/OpenSignupToggle.svelte +2 -2
- package/dist/ui/PopoverButton.svelte +10 -10
- package/dist/ui/PopoverButton.svelte.d.ts.map +1 -1
- package/dist/ui/RoleGrantOfferForm.svelte +8 -11
- package/dist/ui/RoleGrantOfferForm.svelte.d.ts.map +1 -1
- package/dist/ui/RoleGrantOfferHistory.svelte +11 -11
- package/dist/ui/RoleGrantOfferHistory.svelte.d.ts.map +1 -1
- package/dist/ui/RoleGrantOfferInbox.svelte +6 -6
- package/dist/ui/RoleGrantOfferInbox.svelte.d.ts.map +1 -1
- package/dist/ui/SignupForm.svelte +9 -9
- package/dist/ui/SurfaceExplorer.svelte +11 -11
- package/dist/ui/SurfaceExplorer.svelte.d.ts.map +1 -1
- package/dist/ui/account_sessions_state.svelte.d.ts.map +1 -1
- package/dist/ui/admin_accounts_state.svelte.d.ts.map +1 -1
- package/dist/ui/admin_accounts_state.svelte.js +2 -2
- package/dist/ui/admin_invites_state.svelte.d.ts.map +1 -1
- package/dist/ui/admin_rpc_adapters.d.ts.map +1 -1
- package/dist/ui/admin_rpc_adapters.js +5 -5
- package/dist/ui/admin_sessions_state.svelte.d.ts.map +1 -1
- package/dist/ui/app_settings_state.svelte.d.ts.map +1 -1
- package/dist/ui/async_slot.svelte.d.ts.map +1 -1
- package/dist/ui/audit_log_state.svelte.d.ts.map +1 -1
- package/dist/ui/audit_log_state.svelte.js +1 -1
- package/dist/ui/auth_state.svelte.js +4 -4
- package/dist/ui/form_state.svelte.d.ts.map +1 -1
- package/dist/ui/format_scope.d.ts.map +1 -1
- package/dist/ui/keyed_async_slot.svelte.d.ts.map +1 -1
- package/dist/ui/popover.svelte.d.ts.map +1 -1
- package/dist/ui/popover.svelte.js +1 -1
- package/dist/ui/position_helpers.js +1 -1
- package/dist/ui/role_grant_offers_state.svelte.d.ts.map +1 -1
- package/dist/ui/role_grant_offers_state.svelte.js +1 -1
- package/dist/ui/table_state.svelte.d.ts.map +1 -1
- package/dist/ui/ui_fetch.d.ts.map +1 -1
- package/dist/ui/ui_format.js +2 -2
- package/package.json +13 -12
|
@@ -47,12 +47,12 @@ export const build_extra_account_fixture = (seeded, cookie_name) => ({
|
|
|
47
47
|
session_cookie: seeded.session_cookie,
|
|
48
48
|
create_session_headers: (extra) => ({
|
|
49
49
|
cookie: `${cookie_name}=${seeded.session_cookie}`,
|
|
50
|
-
...extra
|
|
50
|
+
...extra
|
|
51
51
|
}),
|
|
52
52
|
create_bearer_headers: (extra) => ({
|
|
53
53
|
authorization: `Bearer ${seeded.api_token}`,
|
|
54
|
-
...extra
|
|
55
|
-
})
|
|
54
|
+
...extra
|
|
55
|
+
})
|
|
56
56
|
});
|
|
57
57
|
/**
|
|
58
58
|
* Strip the non-serializable members so the result can be passed to
|
|
@@ -63,7 +63,7 @@ export const serialize_bootstrapped_handle = (handle) => ({
|
|
|
63
63
|
daemon_token: handle.daemon_token,
|
|
64
64
|
keeper_account: handle.keeper_account,
|
|
65
65
|
keeper_actor: handle.keeper_actor,
|
|
66
|
-
keeper_cookies: [...handle.keeper_cookies]
|
|
66
|
+
keeper_cookies: [...handle.keeper_cookies]
|
|
67
67
|
});
|
|
68
68
|
/**
|
|
69
69
|
* Rebuild a usable handle from the serialized subset. Synthesizes a
|
|
@@ -81,7 +81,7 @@ export const reconstruct_bootstrapped_handle = (serialized) => ({
|
|
|
81
81
|
keeper_cookies: serialized.keeper_cookies,
|
|
82
82
|
keeper_transport: create_fetch_transport({
|
|
83
83
|
base_url: serialized.config.base_url,
|
|
84
|
-
initial_cookies: serialized.keeper_cookies
|
|
84
|
+
initial_cookies: serialized.keeper_cookies
|
|
85
85
|
}),
|
|
86
86
|
// Same cookie jar but Origin-free so the daemon-token middleware doesn't
|
|
87
87
|
// discard the credential as browser-context — used by the `_testing_*`
|
|
@@ -90,8 +90,8 @@ export const reconstruct_bootstrapped_handle = (serialized) => ({
|
|
|
90
90
|
keeper_daemon_transport: create_fetch_transport({
|
|
91
91
|
base_url: serialized.config.base_url,
|
|
92
92
|
initial_cookies: serialized.keeper_cookies,
|
|
93
|
-
origin: null
|
|
94
|
-
})
|
|
93
|
+
origin: null
|
|
94
|
+
})
|
|
95
95
|
});
|
|
96
96
|
/**
|
|
97
97
|
* Structural subset of `SignupOutput` the runner cares about. Looser
|
|
@@ -101,12 +101,12 @@ export const reconstruct_bootstrapped_handle = (serialized) => ({
|
|
|
101
101
|
const SignupResponseShape = z.object({
|
|
102
102
|
ok: z.literal(true),
|
|
103
103
|
account: z.object({ id: Uuid, username: z.string() }),
|
|
104
|
-
actor: z.object({ id: Uuid })
|
|
104
|
+
actor: z.object({ id: Uuid })
|
|
105
105
|
});
|
|
106
106
|
/** Structural subset of `account_token_create`'s output. */
|
|
107
107
|
const TokenCreateResponseShape = z.object({
|
|
108
108
|
token: z.string(),
|
|
109
|
-
id: z.string()
|
|
109
|
+
id: z.string()
|
|
110
110
|
});
|
|
111
111
|
/**
|
|
112
112
|
* Per-test username generator for the *default* `fixture.create_account()`
|
|
@@ -148,7 +148,7 @@ const rpc_via_transport = async (transport, rpc_path, method, params, backend_na
|
|
|
148
148
|
const response = await transport(rpc_path, {
|
|
149
149
|
method: 'POST',
|
|
150
150
|
headers: { 'Content-Type': 'application/json', ...extra_headers },
|
|
151
|
-
body: JSON.stringify({ jsonrpc: '2.0', method, params, id: method })
|
|
151
|
+
body: JSON.stringify({ jsonrpc: '2.0', method, params, id: method })
|
|
152
152
|
});
|
|
153
153
|
if (!response.ok) {
|
|
154
154
|
const body = await response.text().catch(() => '<unreadable>');
|
|
@@ -238,9 +238,9 @@ const TestingResetResponseShape = z.object({
|
|
|
238
238
|
account: z.object({ id: Uuid, username: z.string() }),
|
|
239
239
|
actor: z.object({ id: Uuid }),
|
|
240
240
|
api_token: z.string(),
|
|
241
|
-
session_cookie: z.string()
|
|
241
|
+
session_cookie: z.string()
|
|
242
242
|
})),
|
|
243
|
-
extra_actors: z.array(z.object({ id: Uuid, name: z.string() }))
|
|
243
|
+
extra_actors: z.array(z.object({ id: Uuid, name: z.string() }))
|
|
244
244
|
});
|
|
245
245
|
/**
|
|
246
246
|
* Fire the `_testing_reset` RPC action over the keeper's daemon-token
|
|
@@ -255,9 +255,9 @@ const fire_testing_reset = async (handle, options) => {
|
|
|
255
255
|
extra_accounts: (options.extra_accounts ?? []).map((spec) => ({
|
|
256
256
|
username: spec.username,
|
|
257
257
|
...(spec.password_value !== undefined && { password_value: spec.password_value }),
|
|
258
|
-
roles: [...spec.roles]
|
|
258
|
+
roles: [...spec.roles]
|
|
259
259
|
})),
|
|
260
|
-
extra_actors: [...(options.extra_actors ?? [])]
|
|
260
|
+
extra_actors: [...(options.extra_actors ?? [])]
|
|
261
261
|
}, handle.config.name, { [DAEMON_TOKEN_HEADER]: handle.daemon_token });
|
|
262
262
|
const parsed = TestingResetResponseShape.safeParse(raw);
|
|
263
263
|
if (!parsed.success) {
|
|
@@ -268,10 +268,10 @@ const fire_testing_reset = async (handle, options) => {
|
|
|
268
268
|
account: parsed.data.account,
|
|
269
269
|
actor: parsed.data.actor,
|
|
270
270
|
api_token: parsed.data.api_token,
|
|
271
|
-
session_cookie: parsed.data.session_cookie
|
|
271
|
+
session_cookie: parsed.data.session_cookie
|
|
272
272
|
},
|
|
273
273
|
extra_accounts: parsed.data.extra_accounts,
|
|
274
|
-
extra_actors: parsed.data.extra_actors
|
|
274
|
+
extra_actors: parsed.data.extra_actors
|
|
275
275
|
};
|
|
276
276
|
};
|
|
277
277
|
/**
|
|
@@ -347,8 +347,8 @@ const mint_account = async (handle, options) => {
|
|
|
347
347
|
body: JSON.stringify({
|
|
348
348
|
username,
|
|
349
349
|
password,
|
|
350
|
-
...(options.email !== undefined && { email: options.email })
|
|
351
|
-
})
|
|
350
|
+
...(options.email !== undefined && { email: options.email })
|
|
351
|
+
})
|
|
352
352
|
});
|
|
353
353
|
if (!signup_response.ok) {
|
|
354
354
|
const body = await signup_response.text().catch(() => '<unreadable>');
|
|
@@ -362,7 +362,7 @@ const mint_account = async (handle, options) => {
|
|
|
362
362
|
const login_response = await transport('/api/account/login', {
|
|
363
363
|
method: 'POST',
|
|
364
364
|
headers: { 'Content-Type': 'application/json' },
|
|
365
|
-
body: JSON.stringify({ username, password })
|
|
365
|
+
body: JSON.stringify({ username, password })
|
|
366
366
|
});
|
|
367
367
|
if (!login_response.ok) {
|
|
368
368
|
const body = await login_response.text().catch(() => '<unreadable>');
|
|
@@ -381,7 +381,7 @@ const mint_account = async (handle, options) => {
|
|
|
381
381
|
account: parsed.data.account,
|
|
382
382
|
actor: parsed.data.actor,
|
|
383
383
|
session_cookie: extract_cookie_value(transport, handle.config.cookie_name, handle.config.name),
|
|
384
|
-
api_token: token_parsed.data.token
|
|
384
|
+
api_token: token_parsed.data.token
|
|
385
385
|
};
|
|
386
386
|
};
|
|
387
387
|
/**
|
|
@@ -418,7 +418,7 @@ const grant_roles_via_offer_accept = async (handle, minted, roles) => {
|
|
|
418
418
|
*/
|
|
419
419
|
const create_keeper_transport = (handle, cookie_name, session_cookie) => create_fetch_transport({
|
|
420
420
|
base_url: handle.config.base_url,
|
|
421
|
-
initial_cookies: [`${cookie_name}=${session_cookie}`]
|
|
421
|
+
initial_cookies: [`${cookie_name}=${session_cookie}`]
|
|
422
422
|
});
|
|
423
423
|
/**
|
|
424
424
|
* Origin-free twin of `create_keeper_transport` — same fresh keeper cookie
|
|
@@ -429,7 +429,7 @@ const create_keeper_transport = (handle, cookie_name, session_cookie) => create_
|
|
|
429
429
|
const create_keeper_daemon_transport = (handle, cookie_name, session_cookie) => create_fetch_transport({
|
|
430
430
|
base_url: handle.config.base_url,
|
|
431
431
|
initial_cookies: [`${cookie_name}=${session_cookie}`],
|
|
432
|
-
origin: null
|
|
432
|
+
origin: null
|
|
433
433
|
});
|
|
434
434
|
/**
|
|
435
435
|
* Build a `SetupTest` against a spawned + bootstrapped backend.
|
|
@@ -460,10 +460,10 @@ export const default_cross_process_setup = (handle, options) => {
|
|
|
460
460
|
const extra_actor_names = options?.extra_actors ?? [];
|
|
461
461
|
const { cookie_name } = handle.config;
|
|
462
462
|
return async () => {
|
|
463
|
-
const { keeper, extra_accounts: seeded_extras, extra_actors
|
|
463
|
+
const { keeper, extra_accounts: seeded_extras, extra_actors } = await fire_testing_reset(handle, {
|
|
464
464
|
extra_keeper_roles,
|
|
465
465
|
extra_accounts: extra_account_specs,
|
|
466
|
-
extra_actors: extra_actor_names
|
|
466
|
+
extra_actors: extra_actor_names
|
|
467
467
|
});
|
|
468
468
|
// Rebuild the keeper transport with the new session cookie — the
|
|
469
469
|
// reset action wiped the `globalSetup` keeper's auth_session row,
|
|
@@ -482,27 +482,27 @@ export const default_cross_process_setup = (handle, options) => {
|
|
|
482
482
|
keeper_daemon_transport,
|
|
483
483
|
keeper_account: keeper.account,
|
|
484
484
|
keeper_actor: keeper.actor,
|
|
485
|
-
keeper_cookies: [`${cookie_name}=${keeper.session_cookie}`]
|
|
485
|
+
keeper_cookies: [`${cookie_name}=${keeper.session_cookie}`]
|
|
486
486
|
};
|
|
487
487
|
const create_session_headers = (extra) => ({
|
|
488
488
|
cookie: `${cookie_name}=${keeper.session_cookie}`,
|
|
489
|
-
...extra
|
|
489
|
+
...extra
|
|
490
490
|
});
|
|
491
491
|
const create_bearer_headers = (extra) => ({
|
|
492
492
|
authorization: `Bearer ${keeper.api_token}`,
|
|
493
|
-
...extra
|
|
493
|
+
...extra
|
|
494
494
|
});
|
|
495
495
|
const create_daemon_token_headers = (extra) => ({
|
|
496
496
|
[DAEMON_TOKEN_HEADER]: handle.daemon_token,
|
|
497
|
-
...extra
|
|
497
|
+
...extra
|
|
498
498
|
});
|
|
499
499
|
const create_account = async (account_options) => {
|
|
500
500
|
const other = await mint_account(refreshed_handle, {
|
|
501
501
|
...(account_options?.username !== undefined && { username: account_options.username }),
|
|
502
502
|
...(account_options?.password_value !== undefined && {
|
|
503
|
-
password_value: account_options.password_value
|
|
503
|
+
password_value: account_options.password_value
|
|
504
504
|
}),
|
|
505
|
-
...(account_options?.email !== undefined && { email: account_options.email })
|
|
505
|
+
...(account_options?.email !== undefined && { email: account_options.email })
|
|
506
506
|
});
|
|
507
507
|
if (account_options?.roles && account_options.roles.length > 0) {
|
|
508
508
|
await grant_roles_via_offer_accept(refreshed_handle, other, account_options.roles);
|
|
@@ -514,12 +514,12 @@ export const default_cross_process_setup = (handle, options) => {
|
|
|
514
514
|
api_token: other.api_token,
|
|
515
515
|
create_session_headers: (extra) => ({
|
|
516
516
|
cookie: `${cookie_name}=${other.session_cookie}`,
|
|
517
|
-
...extra
|
|
517
|
+
...extra
|
|
518
518
|
}),
|
|
519
519
|
create_bearer_headers: (extra) => ({
|
|
520
520
|
authorization: `Bearer ${other.api_token}`,
|
|
521
|
-
...extra
|
|
522
|
-
})
|
|
521
|
+
...extra
|
|
522
|
+
})
|
|
523
523
|
};
|
|
524
524
|
};
|
|
525
525
|
const extra_accounts = {};
|
|
@@ -537,13 +537,13 @@ export const default_cross_process_setup = (handle, options) => {
|
|
|
537
537
|
// secondary's transport via `fixture.create_account()`.
|
|
538
538
|
const transport = create_fetch_transport({
|
|
539
539
|
base_url: handle.config.base_url,
|
|
540
|
-
initial_cookies: [`${cookie_name}=${keeper.session_cookie}`]
|
|
540
|
+
initial_cookies: [`${cookie_name}=${keeper.session_cookie}`]
|
|
541
541
|
});
|
|
542
542
|
return {
|
|
543
543
|
transport,
|
|
544
544
|
fresh_transport: (fresh_options) => create_fetch_transport({
|
|
545
545
|
base_url: handle.config.base_url,
|
|
546
|
-
...(fresh_options?.origin !== undefined && { origin: fresh_options.origin })
|
|
546
|
+
...(fresh_options?.origin !== undefined && { origin: fresh_options.origin })
|
|
547
547
|
}),
|
|
548
548
|
account: keeper.account,
|
|
549
549
|
actor: keeper.actor,
|
|
@@ -564,7 +564,7 @@ export const default_cross_process_setup = (handle, options) => {
|
|
|
564
564
|
`${JSON.stringify(raw)} (${parsed.error.message})`);
|
|
565
565
|
}
|
|
566
566
|
return `${cookie_name}=${parsed.data.session_cookie}`;
|
|
567
|
-
}
|
|
567
|
+
}
|
|
568
568
|
};
|
|
569
569
|
};
|
|
570
570
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spawn_backend.d.ts","sourceRoot":"../src/lib/","sources":["../../../src/lib/testing/cross_backend/spawn_backend.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AAE9B;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"spawn_backend.d.ts","sourceRoot":"../src/lib/","sources":["../../../src/lib/testing/cross_backend/spawn_backend.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AAE9B;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAI9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIzD,6EAA6E;AAC7E,MAAM,WAAW,aAAa;IAC7B,yFAAyF;IACzF,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,qEAAqE;IACrE,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AA4ID;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GAAU,QAAQ,aAAa,KAAG,OAAO,CAAC,aAAa,CAiHhF,CAAC"}
|
|
@@ -168,7 +168,7 @@ export const spawn_backend = async (config) => {
|
|
|
168
168
|
// Own process group so SIGTERM to the negative PID tears down the
|
|
169
169
|
// binary's descendants too — Hono workers, PTY children, etc.
|
|
170
170
|
detached: true,
|
|
171
|
-
stdio: ['ignore', 'pipe', 'pipe']
|
|
171
|
+
stdio: ['ignore', 'pipe', 'pipe']
|
|
172
172
|
});
|
|
173
173
|
// Buffer stderr so a startup-time crash surfaces with context.
|
|
174
174
|
const stderr_chunks = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sse_round_trip.d.ts","sourceRoot":"../src/lib/","sources":["../../../src/lib/testing/cross_backend/sse_round_trip.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AA+D9B,OAAO,
|
|
1
|
+
{"version":3,"file":"sse_round_trip.d.ts","sourceRoot":"../src/lib/","sources":["../../../src/lib/testing/cross_backend/sse_round_trip.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AA+D9B,OAAO,EAAE,KAAK,mBAAmB,EAAW,MAAM,mBAAmB,CAAC;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAK5C,kEAAkE;AAClE,MAAM,WAAW,0BAA0B;IAC1C;;;;;;OAMG;IACH,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;IAC/B,wEAAwE;IACxE,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAAC;IAC3C,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,6EAA6E;IAC7E,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,6DAA6D;IAC7D,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CACzB;AA0BD;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,GAAI,SAAS,0BAA0B,KAAG,IAwKtF,CAAC"}
|
|
@@ -48,7 +48,7 @@ import '../assert_dev_env.js';
|
|
|
48
48
|
* @module
|
|
49
49
|
*/
|
|
50
50
|
import { assert, describe } from 'vitest';
|
|
51
|
-
import { account_session_list_action_spec, account_session_revoke_action_spec, account_session_revoke_all_action_spec
|
|
51
|
+
import { account_session_list_action_spec, account_session_revoke_action_spec, account_session_revoke_all_action_spec } from '../../auth/account_action_specs.js';
|
|
52
52
|
import { admin_session_revoke_all_action_spec } from '../../auth/admin_action_specs.js';
|
|
53
53
|
import { audit_log_event_specs } from '../../realtime/sse_auth_guard.js';
|
|
54
54
|
import { SSE_CONNECTED_COMMENT } from '../../realtime/sse_constants.js';
|
|
@@ -87,7 +87,7 @@ export const describe_cross_process_sse_tests = (options) => {
|
|
|
87
87
|
base_url,
|
|
88
88
|
sse_path,
|
|
89
89
|
cookies: fixture.transport.cookies(),
|
|
90
|
-
origin
|
|
90
|
+
origin
|
|
91
91
|
});
|
|
92
92
|
try {
|
|
93
93
|
const first = await sse.read_frame();
|
|
@@ -103,18 +103,21 @@ export const describe_cross_process_sse_tests = (options) => {
|
|
|
103
103
|
// keeper (target ≠ subscriber, so the stream stays open).
|
|
104
104
|
test_if(capabilities.sse && rpc_path !== undefined, 'broadcasts an audit event as a data frame', async () => {
|
|
105
105
|
const fixture = await setup_test();
|
|
106
|
-
const secondary = await fixture.create_account({
|
|
106
|
+
const secondary = await fixture.create_account({
|
|
107
|
+
username: 'sse_revoke_target',
|
|
108
|
+
roles: []
|
|
109
|
+
});
|
|
107
110
|
const sse = await create_sse_transport({
|
|
108
111
|
base_url,
|
|
109
112
|
sse_path,
|
|
110
113
|
cookies: fixture.transport.cookies(),
|
|
111
|
-
origin
|
|
114
|
+
origin
|
|
112
115
|
});
|
|
113
116
|
try {
|
|
114
117
|
const first = await sse.read_frame();
|
|
115
118
|
assert.strictEqual(first + '\n\n', SSE_CONNECTED_COMMENT, 'first frame must be the connected comment');
|
|
116
119
|
const res = await fixture.transport(rpc_path, create_rpc_post_init(admin_session_revoke_all_action_spec.method, {
|
|
117
|
-
account_id: secondary.account.id
|
|
120
|
+
account_id: secondary.account.id
|
|
118
121
|
}));
|
|
119
122
|
assert.strictEqual(res.status, 200, `admin_session_revoke_all RPC failed (status=${res.status})`);
|
|
120
123
|
const data_frame = await sse.read_frame();
|
|
@@ -132,7 +135,7 @@ export const describe_cross_process_sse_tests = (options) => {
|
|
|
132
135
|
base_url,
|
|
133
136
|
sse_path,
|
|
134
137
|
cookies: fixture.transport.cookies(),
|
|
135
|
-
origin
|
|
138
|
+
origin
|
|
136
139
|
});
|
|
137
140
|
try {
|
|
138
141
|
const first = await sse.read_frame();
|
|
@@ -161,7 +164,7 @@ export const describe_cross_process_sse_tests = (options) => {
|
|
|
161
164
|
base_url,
|
|
162
165
|
sse_path,
|
|
163
166
|
cookies: fixture.transport.cookies(),
|
|
164
|
-
origin
|
|
167
|
+
origin
|
|
165
168
|
});
|
|
166
169
|
try {
|
|
167
170
|
const first = await sse.read_frame();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standard.d.ts","sourceRoot":"../src/lib/","sources":["../../../src/lib/testing/cross_backend/standard.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AAE9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"standard.d.ts","sourceRoot":"../src/lib/","sources":["../../../src/lib/testing/cross_backend/standard.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AAE9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAM5D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,WAAW,+BAA+B;IAC/C,2CAA2C;IAC3C,UAAU,EAAE,SAAS,CAAC;IACtB;;;OAGG;IACH,cAAc,EAAE,cAAc,CAAC;IAC/B,uCAAuC;IACvC,YAAY,EAAE,mBAAmB,CAAC;IAClC,uFAAuF;IACvF,eAAe,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IACxC;;;;;OAKG;IACH,aAAa,EAAE,uBAAuB,CAAC;IACvC;;;OAGG;IACH,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;;OAMG;IACH,sBAAsB,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACvC;;;;;;;OAOG;IACH,oBAAoB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC/F;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,GAAG,CAC1B,MAAM,EACN,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,CACnF,CAAC;CACF;AAED;;;;GAIG;AACH,eAAO,MAAM,qCAAqC,GACjD,SAAS,+BAA+B,KACtC,IAwCF,CAAC"}
|
|
@@ -16,14 +16,14 @@ export const describe_standard_cross_process_tests = (options) => {
|
|
|
16
16
|
capabilities: options.capabilities,
|
|
17
17
|
session_options: options.session_options,
|
|
18
18
|
rpc_endpoints: options.rpc_endpoints,
|
|
19
|
-
error_coverage_min: options.error_coverage_min
|
|
19
|
+
error_coverage_min: options.error_coverage_min
|
|
20
20
|
});
|
|
21
21
|
describe_round_trip_validation({
|
|
22
22
|
setup_test: options.setup_test,
|
|
23
23
|
surface_source: options.surface_source,
|
|
24
24
|
capabilities: options.capabilities,
|
|
25
25
|
skip_routes: options.round_trip_skip_routes,
|
|
26
|
-
success_fixtures: options.rest_success_fixtures
|
|
26
|
+
success_fixtures: options.rest_success_fixtures
|
|
27
27
|
});
|
|
28
28
|
describe_rpc_round_trip_tests({
|
|
29
29
|
setup_test: options.setup_test,
|
|
@@ -31,12 +31,12 @@ export const describe_standard_cross_process_tests = (options) => {
|
|
|
31
31
|
capabilities: options.capabilities,
|
|
32
32
|
session_options: options.session_options,
|
|
33
33
|
rpc_endpoints: options.rpc_endpoints,
|
|
34
|
-
success_fixtures: options.rpc_success_fixtures
|
|
34
|
+
success_fixtures: options.rpc_success_fixtures
|
|
35
35
|
});
|
|
36
36
|
describe_data_exposure_tests({
|
|
37
37
|
setup_test: options.setup_test,
|
|
38
38
|
surface_source: options.surface_source,
|
|
39
|
-
capabilities: options.capabilities
|
|
39
|
+
capabilities: options.capabilities
|
|
40
40
|
});
|
|
41
41
|
if (options.roles) {
|
|
42
42
|
describe_standard_admin_integration_tests({
|
|
@@ -46,7 +46,7 @@ export const describe_standard_cross_process_tests = (options) => {
|
|
|
46
46
|
session_options: options.session_options,
|
|
47
47
|
roles: options.roles,
|
|
48
48
|
rpc_endpoints: options.rpc_endpoints,
|
|
49
|
-
admin_prefix: options.admin_prefix
|
|
49
|
+
admin_prefix: options.admin_prefix
|
|
50
50
|
});
|
|
51
51
|
}
|
|
52
52
|
};
|
|
@@ -1,17 +1,22 @@
|
|
|
1
1
|
import '../assert_dev_env.js';
|
|
2
2
|
import type { CellCreateAuthorize } from '../../auth/cell_actions.js';
|
|
3
|
-
/** The
|
|
4
|
-
export declare const
|
|
3
|
+
/** The admin-only root kind the test policy gates (talk's `space` analog). */
|
|
4
|
+
export declare const SPACE_CELL_KIND = "space";
|
|
5
5
|
/**
|
|
6
|
-
* The app-role
|
|
6
|
+
* The app-role a space policy references as `min_role` (besides admin) — the
|
|
7
7
|
* `participant` role both reference spines register. Mirrors the Rust policy's
|
|
8
8
|
* `"participant"` literal.
|
|
9
9
|
*/
|
|
10
|
-
export declare const
|
|
10
|
+
export declare const PARTICIPATION_ROLE = "participant";
|
|
11
|
+
/** A space's per-kind contribution rule (the shape stamped into `space.data.policy`). */
|
|
12
|
+
export interface ContributionRule {
|
|
13
|
+
min_role?: string;
|
|
14
|
+
moderation_required?: boolean;
|
|
15
|
+
}
|
|
11
16
|
/**
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* `TestCellGatedCreateAuthorize
|
|
17
|
+
* The directory-model test authorizer — a **pure** function of the input (it
|
|
18
|
+
* reads the governing root's policy off `input.root_data`, supplied by the
|
|
19
|
+
* handler). Byte-equivalent with the Rust `TestCellGatedCreateAuthorize`.
|
|
15
20
|
*/
|
|
16
21
|
export declare const test_cell_gated_create_authorize: CellCreateAuthorize;
|
|
17
22
|
//# sourceMappingURL=test_cell_gated_create_authorize.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test_cell_gated_create_authorize.d.ts","sourceRoot":"../src/lib/","sources":["../../../src/lib/testing/cross_backend/test_cell_gated_create_authorize.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"test_cell_gated_create_authorize.d.ts","sourceRoot":"../src/lib/","sources":["../../../src/lib/testing/cross_backend/test_cell_gated_create_authorize.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AA+B9B,OAAO,KAAK,EACX,mBAAmB,EAGnB,MAAM,4BAA4B,CAAC;AAGpC,8EAA8E;AAC9E,eAAO,MAAM,eAAe,UAAU,CAAC;AAEvC;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,gBAAyB,CAAC;AAEzD,yFAAyF;AACzF,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAYD;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,EAAE,mBAoB9C,CAAC"}
|
|
@@ -3,14 +3,22 @@ import '../assert_dev_env.js';
|
|
|
3
3
|
* Test `CellCreateAuthorize` policy mounted on **both** reference spines — the
|
|
4
4
|
* TS spine binary's full mount (`full_spine_mount.ts`) and the Rust
|
|
5
5
|
* `testing_spine_stub` — so the cross-backend `cell_gated_create` suite proves
|
|
6
|
-
* the cell-creation authorizer agrees TS↔Rust. The twin of the
|
|
7
|
-
* `TestCellGatedCreateAuthorize
|
|
6
|
+
* the parent-aware cell-creation authorizer agrees TS↔Rust. The twin of the
|
|
7
|
+
* Rust `TestCellGatedCreateAuthorize`, **directory model**.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
9
|
+
* Admin bypasses everything (`{allow: true, moderation_required: false}`). For
|
|
10
|
+
* a non-admin:
|
|
11
|
+
*
|
|
12
|
+
* - **Root creation** (`root_id` null): `kind: 'space'` is admin-only (denied);
|
|
13
|
+
* every other parentless kind stays open, so the plain-create `cell_crud` /
|
|
14
|
+
* `cell_relations` suites are unaffected.
|
|
15
|
+
* - **Contribution** (`root_id` set): the governing root's
|
|
16
|
+
* `data.policy[kind] = {min_role?, moderation_required?}` decides — a missing
|
|
17
|
+
* entry denies, a present `min_role` the actor lacks denies, and otherwise it
|
|
18
|
+
* admits with the entry's `moderation_required` folded into the verdict. The
|
|
19
|
+
* root's `data` arrives in `input.root_data` (the handler read it in-tx), so
|
|
20
|
+
* the predicate is **pure** — no DB read of its own (which also dodges the
|
|
21
|
+
* single-connection PGlite deadlock a separate handle would hit).
|
|
14
22
|
*
|
|
15
23
|
* **`$lib`-free by contract** — reached by the spawned TS spine binary under
|
|
16
24
|
* Gro's loader (no `$lib` alias). Keep every import relative.
|
|
@@ -20,17 +28,48 @@ import '../assert_dev_env.js';
|
|
|
20
28
|
import { has_role } from '../../auth/request_context.js';
|
|
21
29
|
import { ROLE_ADMIN } from '../../auth/role_schema.js';
|
|
22
30
|
import { SPINE_PARTICIPANT_ROLE } from './spine_surface_constants.js';
|
|
23
|
-
/** The
|
|
24
|
-
export const
|
|
31
|
+
/** The admin-only root kind the test policy gates (talk's `space` analog). */
|
|
32
|
+
export const SPACE_CELL_KIND = 'space';
|
|
25
33
|
/**
|
|
26
|
-
* The app-role
|
|
34
|
+
* The app-role a space policy references as `min_role` (besides admin) — the
|
|
27
35
|
* `participant` role both reference spines register. Mirrors the Rust policy's
|
|
28
36
|
* `"participant"` literal.
|
|
29
37
|
*/
|
|
30
|
-
export const
|
|
38
|
+
export const PARTICIPATION_ROLE = SPINE_PARTICIPANT_ROLE;
|
|
39
|
+
/** Pull the governing root's `data.policy[kind]` rule, defensively (loose `data`). */
|
|
40
|
+
const get_contribution_rule = (data, kind) => {
|
|
41
|
+
if (data === null || typeof data !== 'object')
|
|
42
|
+
return undefined;
|
|
43
|
+
const policy = data.policy;
|
|
44
|
+
if (policy === null || typeof policy !== 'object')
|
|
45
|
+
return undefined;
|
|
46
|
+
const rule = policy[kind];
|
|
47
|
+
if (rule === null || typeof rule !== 'object')
|
|
48
|
+
return undefined;
|
|
49
|
+
return rule;
|
|
50
|
+
};
|
|
31
51
|
/**
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
* `TestCellGatedCreateAuthorize
|
|
52
|
+
* The directory-model test authorizer — a **pure** function of the input (it
|
|
53
|
+
* reads the governing root's policy off `input.root_data`, supplied by the
|
|
54
|
+
* handler). Byte-equivalent with the Rust `TestCellGatedCreateAuthorize`.
|
|
35
55
|
*/
|
|
36
|
-
export const test_cell_gated_create_authorize = (auth, input) =>
|
|
56
|
+
export const test_cell_gated_create_authorize = (auth, input) => {
|
|
57
|
+
// Admin bypass — admins create roots + any kind, live immediately.
|
|
58
|
+
if (has_role(auth, ROLE_ADMIN))
|
|
59
|
+
return { allow: true, moderation_required: false };
|
|
60
|
+
// Root creation (no governing root): `space` is admin-only; other parentless
|
|
61
|
+
// kinds stay open (the plain-create suites).
|
|
62
|
+
if (input.root_id === null) {
|
|
63
|
+
return input.kind === SPACE_CELL_KIND
|
|
64
|
+
? { allow: false }
|
|
65
|
+
: { allow: true, moderation_required: false };
|
|
66
|
+
}
|
|
67
|
+
// Contribution: resolve the governing root's per-kind policy.
|
|
68
|
+
const rule = get_contribution_rule(input.root_data, input.kind ?? '');
|
|
69
|
+
if (!rule)
|
|
70
|
+
return { allow: false };
|
|
71
|
+
const admitted = rule.min_role === undefined || has_role(auth, rule.min_role);
|
|
72
|
+
return admitted
|
|
73
|
+
? { allow: true, moderation_required: rule.moderation_required ?? false }
|
|
74
|
+
: { allow: false };
|
|
75
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing_backdoor.d.ts","sourceRoot":"../src/lib/","sources":["../../../src/lib/testing/cross_backend/testing_backdoor.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AA2D9B,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"testing_backdoor.d.ts","sourceRoot":"../src/lib/","sources":["../../../src/lib/testing/cross_backend/testing_backdoor.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AA2D9B,OAAO,KAAK,EAAE,wBAAwB,EAAe,MAAM,YAAY,CAAC;AAqExE,kEAAkE;AAClE,MAAM,MAAM,+BAA+B,GAAG,wBAAwB,CAAC;AAEvE,eAAO,MAAM,qCAAqC,GACjD,SAAS,+BAA+B,KACtC,IAiCF,CAAC"}
|
|
@@ -73,20 +73,20 @@ const backdoor_methods = [
|
|
|
73
73
|
{ method: '_testing_migration_tracker', params: {} },
|
|
74
74
|
// The RPC-registry-dump read — input is an empty strict object, so `{}` is
|
|
75
75
|
// valid and clears the 400 phase, reaching the credential gate like the rest.
|
|
76
|
-
{ method: '_testing_action_manifest', params: {} }
|
|
76
|
+
{ method: '_testing_action_manifest', params: {} }
|
|
77
77
|
];
|
|
78
78
|
const principals = [
|
|
79
79
|
{
|
|
80
80
|
name: 'anonymous',
|
|
81
81
|
status: 401,
|
|
82
82
|
// Fresh jar so the keeper cookie (cross-process) can't leak in.
|
|
83
|
-
resolve: (f) => ({ transport: f.fresh_transport(), headers: {} })
|
|
83
|
+
resolve: (f) => ({ transport: f.fresh_transport(), headers: {} })
|
|
84
84
|
},
|
|
85
85
|
{
|
|
86
86
|
name: 'session',
|
|
87
87
|
status: 403,
|
|
88
88
|
reason: ERROR_CREDENTIAL_TYPE_REQUIRED,
|
|
89
|
-
resolve: (f) => ({ transport: f.transport, headers: f.create_session_headers() })
|
|
89
|
+
resolve: (f) => ({ transport: f.transport, headers: f.create_session_headers() })
|
|
90
90
|
},
|
|
91
91
|
{
|
|
92
92
|
name: 'bearer',
|
|
@@ -98,9 +98,9 @@ const principals = [
|
|
|
98
98
|
resolve: (f) => ({
|
|
99
99
|
transport: f.fresh_transport({ origin: null }),
|
|
100
100
|
headers: f.create_bearer_headers(),
|
|
101
|
-
suppress_default_origin: true
|
|
102
|
-
})
|
|
103
|
-
}
|
|
101
|
+
suppress_default_origin: true
|
|
102
|
+
})
|
|
103
|
+
}
|
|
104
104
|
];
|
|
105
105
|
export const describe_testing_backdoor_cross_tests = (options) => {
|
|
106
106
|
const { setup_test } = options;
|
|
@@ -117,7 +117,7 @@ export const describe_testing_backdoor_cross_tests = (options) => {
|
|
|
117
117
|
method,
|
|
118
118
|
params,
|
|
119
119
|
headers,
|
|
120
|
-
...(suppress_default_origin && { suppress_default_origin: true })
|
|
120
|
+
...(suppress_default_origin && { suppress_default_origin: true })
|
|
121
121
|
});
|
|
122
122
|
const label = `${method} ${principal.name}`;
|
|
123
123
|
assert.ok(!res.ok, `${label}: expected denial (${principal.status}) but the call succeeded`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing_reset_actions.d.ts","sourceRoot":"../src/lib/","sources":["../../../src/lib/testing/cross_backend/testing_reset_actions.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AAE9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoEG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"testing_reset_actions.d.ts","sourceRoot":"../src/lib/","sources":["../../../src/lib/testing/cross_backend/testing_reset_actions.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AAE9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAKzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAqCzC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;QAiBpC;;;;;;;;WAQG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAWyC,CAAC;AAE/C;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;CAWA,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;CAwBC,CAAC;AAE/C;;;;;;GAMG;AACH,eAAO,MAAM,mCAAmC,QAAO,SACmB,CAAC;AAE3E;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;CAeK,CAAC;AAE/C;;;;;;;;;GASG;AACH,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAWF,CAAC;AAE/C;;;;GAIG;AACH,eAAO,MAAM,qCAAqC,QAAO,SAGvD,CAAC;AAEH;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;;;;;;;CAYJ,CAAC;AAE/C;;;;GAIG;AACH,eAAO,MAAM,uCAAuC,QAAO,SAGzD,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAYF,CAAC;AAyB/C,eAAO,MAAM,qCAAqC,GACjD,SAAS,aAAa,CAAC,SAAS,CAAC,KAC/B,SAMF,CAAC;AAEF,4CAA4C;AAC5C,MAAM,WAAW,2BAA2B;IAC3C;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IACjD;;;;;OAKG;IACH,QAAQ,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;IAC9C;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACxD;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,sBAAsB,GAClC,MAAM,OAAO,EACb,SAAS,2BAA2B,KAClC,KAAK,CAAC,SAAS,CAsIjB,CAAC;AAEF,0FAA0F;AAC1F,eAAO,MAAM,0BAA0B,UAAmC,CAAC"}
|