@fuzdev/fuz_app 0.146.1 → 0.148.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 +6 -4
- package/dist/actions/action_codegen.d.ts +15 -1
- package/dist/actions/action_codegen.d.ts.map +1 -1
- package/dist/actions/action_codegen.js +23 -2
- package/dist/actions/perform_action.js +1 -1
- package/dist/auth/CLAUDE.md +1 -1
- package/dist/auth/bootstrap_account.d.ts +2 -1
- package/dist/auth/bootstrap_account.d.ts.map +1 -1
- package/dist/auth/bootstrap_account.js +17 -6
- package/dist/auth/cell_action_specs.d.ts +3 -1
- package/dist/auth/cell_action_specs.d.ts.map +1 -1
- package/dist/auth/cell_action_specs.js +5 -5
- package/dist/auth/cell_actions.d.ts.map +1 -1
- package/dist/auth/cell_actions.js +2 -3
- package/dist/auth/cell_data_schema.d.ts +1 -1
- package/dist/auth/cell_data_schema.js +1 -1
- package/dist/auth/cell_field_action_specs.d.ts +4 -3
- package/dist/auth/cell_field_action_specs.d.ts.map +1 -1
- package/dist/auth/cell_field_action_specs.js +5 -6
- package/dist/auth/cell_field_actions.d.ts.map +1 -1
- package/dist/auth/cell_field_actions.js +8 -1
- package/dist/auth/cell_item_action_specs.d.ts +4 -2
- package/dist/auth/cell_item_action_specs.d.ts.map +1 -1
- package/dist/auth/cell_item_action_specs.js +5 -5
- package/dist/auth/cell_item_actions.d.ts.map +1 -1
- package/dist/auth/cell_item_actions.js +8 -1
- package/dist/auth/keyring.d.ts +35 -38
- package/dist/auth/keyring.d.ts.map +1 -1
- package/dist/auth/keyring.js +43 -50
- package/dist/auth/password_argon2.d.ts.map +1 -1
- package/dist/auth/password_argon2.js +11 -8
- package/dist/auth/role_grant_offer_action_specs.d.ts +2 -0
- package/dist/auth/role_grant_offer_action_specs.d.ts.map +1 -1
- package/dist/auth/role_grant_offer_action_specs.js +3 -1
- package/dist/auth/session_cookie.d.ts.map +1 -1
- package/dist/auth/session_cookie.js +5 -2
- package/dist/db/CLAUDE.md +18 -16
- package/dist/db/cell_queries.d.ts +3 -2
- package/dist/db/cell_queries.d.ts.map +1 -1
- package/dist/db/cell_queries.js +3 -2
- package/dist/db/fact_disk_storage.d.ts +15 -15
- package/dist/db/fact_disk_storage.d.ts.map +1 -1
- package/dist/db/fact_disk_storage.js +22 -28
- package/dist/db/fact_queries.d.ts +2 -3
- package/dist/db/fact_queries.d.ts.map +1 -1
- package/dist/db/fact_queries.js +2 -3
- package/dist/db/fact_store.d.ts +20 -18
- package/dist/db/fact_store.d.ts.map +1 -1
- package/dist/db/fact_store.js +30 -44
- package/dist/db/file_fact_url.d.ts +19 -4
- package/dist/db/file_fact_url.d.ts.map +1 -1
- package/dist/db/file_fact_url.js +19 -4
- package/dist/primitive_schemas.d.ts +1 -1
- package/dist/primitive_schemas.d.ts.map +1 -1
- package/dist/primitive_schemas.js +2 -1
- package/dist/schema_meta.d.ts +20 -0
- package/dist/schema_meta.d.ts.map +1 -1
- package/dist/schema_meta.js +7 -1
- package/dist/server/env.d.ts.map +1 -1
- package/dist/server/env.js +2 -2
- package/dist/server/serve_fact_route.d.ts +9 -5
- package/dist/server/serve_fact_route.d.ts.map +1 -1
- package/dist/server/serve_fact_route.js +15 -7
- package/dist/testing/CLAUDE.md +737 -114
- package/dist/testing/admin_integration.d.ts.map +1 -1
- package/dist/testing/admin_integration.js +73 -5
- package/dist/testing/adversarial_input.d.ts +0 -47
- package/dist/testing/adversarial_input.d.ts.map +1 -1
- package/dist/testing/adversarial_input.js +4 -340
- package/dist/testing/adversarial_input_cases.d.ts +64 -0
- package/dist/testing/adversarial_input_cases.d.ts.map +1 -0
- package/dist/testing/adversarial_input_cases.js +348 -0
- package/dist/testing/app_server.d.ts.map +1 -1
- package/dist/testing/app_server.js +2 -2
- package/dist/testing/audit_completeness.d.ts.map +1 -1
- package/dist/testing/audit_completeness.js +24 -20
- package/dist/testing/audit_drift_guard.d.ts +27 -1
- package/dist/testing/audit_drift_guard.d.ts.map +1 -1
- package/dist/testing/audit_drift_guard.js +50 -0
- package/dist/testing/cross_backend/account_lifecycle.d.ts.map +1 -1
- package/dist/testing/cross_backend/account_lifecycle.js +29 -12
- package/dist/testing/cross_backend/actor_lookup.d.ts.map +1 -1
- package/dist/testing/cross_backend/actor_lookup.js +7 -25
- package/dist/testing/cross_backend/app_settings.d.ts.map +1 -1
- package/dist/testing/cross_backend/app_settings.js +4 -6
- package/dist/testing/cross_backend/audit_cross_helpers.d.ts +51 -0
- package/dist/testing/cross_backend/audit_cross_helpers.d.ts.map +1 -0
- package/dist/testing/cross_backend/audit_cross_helpers.js +78 -0
- package/dist/testing/cross_backend/backend_config.d.ts +2 -1
- package/dist/testing/cross_backend/backend_config.d.ts.map +1 -1
- package/dist/testing/cross_backend/body_size.d.ts +6 -0
- package/dist/testing/cross_backend/body_size.d.ts.map +1 -1
- package/dist/testing/cross_backend/body_size.js +26 -44
- package/dist/testing/cross_backend/body_size_smuggling.d.ts +5 -0
- package/dist/testing/cross_backend/body_size_smuggling.d.ts.map +1 -1
- package/dist/testing/cross_backend/body_size_smuggling.js +7 -14
- package/dist/testing/cross_backend/bootstrap_backend.d.ts +11 -1
- package/dist/testing/cross_backend/bootstrap_backend.d.ts.map +1 -1
- package/dist/testing/cross_backend/bootstrap_backend.js +2 -1
- package/dist/testing/cross_backend/build_test_backend_paths.d.ts +3 -1
- package/dist/testing/cross_backend/build_test_backend_paths.d.ts.map +1 -1
- package/dist/testing/cross_backend/capabilities.d.ts +55 -59
- package/dist/testing/cross_backend/capabilities.d.ts.map +1 -1
- package/dist/testing/cross_backend/capabilities.js +20 -23
- package/dist/testing/cross_backend/cargo_binary.d.ts +70 -0
- package/dist/testing/cross_backend/cargo_binary.d.ts.map +1 -0
- package/dist/testing/cross_backend/cargo_binary.js +148 -0
- package/dist/testing/cross_backend/cell_crud.d.ts.map +1 -1
- package/dist/testing/cross_backend/cell_crud.js +57 -1
- package/dist/testing/cross_backend/cell_gated_create.d.ts +0 -60
- package/dist/testing/cross_backend/cell_gated_create.d.ts.map +1 -1
- package/dist/testing/cross_backend/cell_gated_create.js +9 -487
- package/dist/testing/cross_backend/cell_grant_role.d.ts +14 -2
- package/dist/testing/cross_backend/cell_grant_role.d.ts.map +1 -1
- package/dist/testing/cross_backend/cell_grant_role.js +22 -12
- package/dist/testing/cross_backend/cell_moderate.d.ts +66 -0
- package/dist/testing/cross_backend/cell_moderate.d.ts.map +1 -0
- package/dist/testing/cross_backend/cell_moderate.js +511 -0
- package/dist/testing/cross_backend/cell_ref_admission.d.ts.map +1 -1
- package/dist/testing/cross_backend/cell_ref_admission.js +1 -1
- package/dist/testing/cross_backend/cell_relations.d.ts.map +1 -1
- package/dist/testing/cross_backend/cell_relations.js +40 -19
- package/dist/testing/cross_backend/conformance_case.d.ts +43 -4
- package/dist/testing/cross_backend/conformance_case.d.ts.map +1 -1
- package/dist/testing/cross_backend/conformance_case.js +29 -1
- package/dist/testing/cross_backend/conformance_rpc_auth.d.ts +93 -0
- package/dist/testing/cross_backend/conformance_rpc_auth.d.ts.map +1 -0
- package/dist/testing/cross_backend/conformance_rpc_auth.js +125 -0
- package/dist/testing/cross_backend/conformance_table.d.ts +144 -4
- package/dist/testing/cross_backend/conformance_table.d.ts.map +1 -1
- package/dist/testing/cross_backend/conformance_table.js +297 -65
- package/dist/testing/cross_backend/cookie_attributes.d.ts.map +1 -1
- package/dist/testing/cross_backend/cookie_attributes.js +3 -2
- package/dist/testing/cross_backend/create_cross_backend_global_setup.d.ts +38 -5
- 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 +24 -3
- package/dist/testing/cross_backend/create_dual_spawn_global_setup.d.ts +5 -5
- package/dist/testing/cross_backend/create_dual_spawn_global_setup.d.ts.map +1 -1
- package/dist/testing/cross_backend/credential_deadline.d.ts +10 -6
- package/dist/testing/cross_backend/credential_deadline.d.ts.map +1 -1
- package/dist/testing/cross_backend/credential_deadline.js +32 -31
- package/dist/testing/cross_backend/credential_header_robustness.d.ts.map +1 -1
- package/dist/testing/cross_backend/credential_header_robustness.js +4 -6
- package/dist/testing/cross_backend/{cell_cross_helpers.d.ts → cross_rpc.d.ts} +12 -2
- package/dist/testing/cross_backend/cross_rpc.d.ts.map +1 -0
- package/dist/testing/cross_backend/{cell_cross_helpers.js → cross_rpc.js} +31 -7
- package/dist/testing/cross_backend/default_backend_configs.d.ts +56 -61
- package/dist/testing/cross_backend/default_backend_configs.d.ts.map +1 -1
- package/dist/testing/cross_backend/default_backend_configs.js +97 -91
- package/dist/testing/cross_backend/default_spine_surface.d.ts.map +1 -1
- package/dist/testing/cross_backend/default_spine_surface.js +2 -2
- package/dist/testing/cross_backend/differential.d.ts +126 -0
- package/dist/testing/cross_backend/differential.d.ts.map +1 -0
- package/dist/testing/cross_backend/differential.js +201 -0
- package/dist/testing/cross_backend/differential_normalize.d.ts +150 -0
- package/dist/testing/cross_backend/differential_normalize.d.ts.map +1 -0
- package/dist/testing/cross_backend/differential_normalize.js +153 -0
- package/dist/testing/cross_backend/fact_serving.d.ts +5 -0
- package/dist/testing/cross_backend/fact_serving.d.ts.map +1 -1
- package/dist/testing/cross_backend/fact_serving.js +41 -7
- package/dist/testing/cross_backend/full_spine_mount.d.ts +15 -0
- package/dist/testing/cross_backend/full_spine_mount.d.ts.map +1 -1
- package/dist/testing/cross_backend/full_spine_mount.js +55 -1
- package/dist/testing/cross_backend/identity_parity.d.ts.map +1 -1
- package/dist/testing/cross_backend/identity_parity.js +6 -5
- package/dist/testing/cross_backend/in_process_setup.d.ts +12 -2
- package/dist/testing/cross_backend/in_process_setup.d.ts.map +1 -1
- package/dist/testing/cross_backend/in_process_setup.js +10 -7
- package/dist/testing/cross_backend/login_security.d.ts.map +1 -1
- package/dist/testing/cross_backend/login_security.js +13 -18
- package/dist/testing/cross_backend/origin.js +1 -1
- package/dist/testing/cross_backend/origin_conformance.js +1 -1
- package/dist/testing/cross_backend/origin_scope.d.ts +6 -0
- package/dist/testing/cross_backend/origin_scope.d.ts.map +1 -1
- package/dist/testing/cross_backend/origin_scope.js +13 -12
- package/dist/testing/cross_backend/peer_ping_ws.d.ts +2 -5
- package/dist/testing/cross_backend/peer_ping_ws.d.ts.map +1 -1
- package/dist/testing/cross_backend/peer_ping_ws.js +14 -24
- package/dist/testing/cross_backend/postgres_database.d.ts +85 -0
- package/dist/testing/cross_backend/postgres_database.d.ts.map +1 -0
- package/dist/testing/cross_backend/postgres_database.js +140 -0
- package/dist/testing/cross_backend/provided_context.d.ts +28 -0
- package/dist/testing/cross_backend/provided_context.d.ts.map +1 -0
- package/dist/testing/cross_backend/provided_context.js +35 -0
- package/dist/testing/cross_backend/query_shape.d.ts.map +1 -1
- package/dist/testing/cross_backend/query_shape.js +10 -12
- package/dist/testing/cross_backend/ready.js +2 -2
- package/dist/testing/cross_backend/revocation_drivers.d.ts +4 -3
- package/dist/testing/cross_backend/revocation_drivers.d.ts.map +1 -1
- package/dist/testing/cross_backend/revocation_drivers.js +1 -1
- package/dist/testing/cross_backend/role_grant_cross_helpers.d.ts +3 -2
- package/dist/testing/cross_backend/role_grant_cross_helpers.d.ts.map +1 -1
- package/dist/testing/cross_backend/role_grant_offer_lifecycle.d.ts +13 -0
- package/dist/testing/cross_backend/role_grant_offer_lifecycle.d.ts.map +1 -0
- package/dist/testing/cross_backend/role_grant_offer_lifecycle.js +203 -0
- package/dist/testing/cross_backend/role_grant_offer_notification_ws.d.ts +2 -5
- 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 +203 -111
- package/dist/testing/cross_backend/role_grant_participation.d.ts +13 -0
- package/dist/testing/cross_backend/role_grant_participation.d.ts.map +1 -1
- package/dist/testing/cross_backend/role_grant_participation.js +32 -21
- package/dist/testing/cross_backend/role_grant_role_grammar.d.ts.map +1 -1
- package/dist/testing/cross_backend/role_grant_role_grammar.js +6 -9
- package/dist/testing/cross_backend/rpc_adversarial.d.ts +38 -0
- package/dist/testing/cross_backend/rpc_adversarial.d.ts.map +1 -0
- package/dist/testing/cross_backend/rpc_adversarial.js +292 -0
- package/dist/testing/cross_backend/rpc_success_fixtures.d.ts +24 -0
- package/dist/testing/cross_backend/rpc_success_fixtures.d.ts.map +1 -0
- package/dist/testing/cross_backend/rpc_success_fixtures.js +124 -0
- package/dist/testing/cross_backend/rust_spine_consumer_surface.d.ts +101 -0
- package/dist/testing/cross_backend/rust_spine_consumer_surface.d.ts.map +1 -0
- package/dist/testing/cross_backend/rust_spine_consumer_surface.js +113 -0
- package/dist/testing/cross_backend/rust_spine_stub_backend_config.d.ts +10 -0
- 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 +27 -18
- package/dist/testing/cross_backend/session_cap.d.ts +9 -8
- package/dist/testing/cross_backend/session_cap.d.ts.map +1 -1
- package/dist/testing/cross_backend/session_cap.js +9 -4
- package/dist/testing/cross_backend/session_cookie_codec.d.ts +19 -0
- package/dist/testing/cross_backend/session_cookie_codec.d.ts.map +1 -0
- package/dist/testing/cross_backend/session_cookie_codec.js +128 -0
- package/dist/testing/cross_backend/setup.d.ts +56 -54
- package/dist/testing/cross_backend/setup.d.ts.map +1 -1
- package/dist/testing/cross_backend/setup.js +29 -29
- package/dist/testing/cross_backend/simple_request.d.ts.map +1 -1
- package/dist/testing/cross_backend/simple_request.js +4 -4
- package/dist/testing/cross_backend/spawn_backend.d.ts +59 -10
- package/dist/testing/cross_backend/spawn_backend.d.ts.map +1 -1
- package/dist/testing/cross_backend/spawn_backend.js +219 -60
- package/dist/testing/cross_backend/spine_suites.d.ts +231 -0
- package/dist/testing/cross_backend/spine_suites.d.ts.map +1 -0
- package/dist/testing/cross_backend/spine_suites.js +626 -0
- package/dist/testing/cross_backend/spine_surface_constants.d.ts +29 -0
- package/dist/testing/cross_backend/spine_surface_constants.d.ts.map +1 -1
- package/dist/testing/cross_backend/spine_surface_constants.js +29 -0
- package/dist/testing/cross_backend/sse_round_trip.d.ts.map +1 -1
- package/dist/testing/cross_backend/sse_round_trip.js +3 -4
- package/dist/testing/cross_backend/standard.d.ts +18 -1
- package/dist/testing/cross_backend/standard.d.ts.map +1 -1
- package/dist/testing/cross_backend/standard.js +2 -0
- package/dist/testing/cross_backend/test_cell_gated_create_authorize.d.ts +24 -0
- 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 +15 -0
- package/dist/testing/cross_backend/testing_backdoor.d.ts +2 -8
- package/dist/testing/cross_backend/testing_backdoor.d.ts.map +1 -1
- package/dist/testing/cross_backend/testing_backdoor.js +7 -10
- package/dist/testing/cross_backend/testing_reset_actions.d.ts +10 -5
- package/dist/testing/cross_backend/testing_reset_actions.d.ts.map +1 -1
- package/dist/testing/cross_backend/testing_reset_actions.js +21 -12
- package/dist/testing/cross_backend/testing_server_bun.js +1 -1
- package/dist/testing/cross_backend/token_lifetime.js +1 -1
- package/dist/testing/cross_backend/token_scope_surface.d.ts.map +1 -1
- package/dist/testing/cross_backend/token_scope_surface.js +9 -13
- package/dist/testing/cross_backend/transport_composition.d.ts +26 -2
- package/dist/testing/cross_backend/transport_composition.d.ts.map +1 -1
- package/dist/testing/cross_backend/transport_composition.js +81 -51
- package/dist/testing/cross_backend/ts_spine_backend_config.d.ts +8 -0
- package/dist/testing/cross_backend/ts_spine_backend_config.d.ts.map +1 -1
- package/dist/testing/cross_backend/ts_spine_backend_config.js +17 -10
- package/dist/testing/cross_backend/ws_action_rate_limit.d.ts +2 -5
- package/dist/testing/cross_backend/ws_action_rate_limit.d.ts.map +1 -1
- package/dist/testing/cross_backend/ws_action_rate_limit.js +8 -14
- package/dist/testing/cross_backend/ws_connection_cap.d.ts +4 -9
- package/dist/testing/cross_backend/ws_connection_cap.d.ts.map +1 -1
- package/dist/testing/cross_backend/ws_connection_cap.js +11 -12
- package/dist/testing/cross_backend/ws_endpoint.d.ts +52 -0
- package/dist/testing/cross_backend/ws_endpoint.d.ts.map +1 -0
- package/dist/testing/cross_backend/ws_endpoint.js +54 -0
- package/dist/testing/cross_backend/ws_inbound_dispatch.d.ts +2 -5
- package/dist/testing/cross_backend/ws_inbound_dispatch.d.ts.map +1 -1
- package/dist/testing/cross_backend/ws_inbound_dispatch.js +9 -15
- package/dist/testing/cross_backend/ws_outbound_overflow.d.ts +2 -7
- package/dist/testing/cross_backend/ws_outbound_overflow.d.ts.map +1 -1
- package/dist/testing/cross_backend/ws_outbound_overflow.js +5 -9
- package/dist/testing/cross_backend/ws_role_gated.d.ts +4 -5
- package/dist/testing/cross_backend/ws_role_gated.d.ts.map +1 -1
- package/dist/testing/cross_backend/ws_role_gated.js +12 -21
- package/dist/testing/cross_backend/ws_round_trip.d.ts +12 -9
- package/dist/testing/cross_backend/ws_round_trip.d.ts.map +1 -1
- package/dist/testing/cross_backend/ws_round_trip.js +29 -34
- package/dist/testing/db_entities.d.ts +16 -3
- package/dist/testing/db_entities.d.ts.map +1 -1
- package/dist/testing/db_entities.js +28 -5
- package/dist/testing/integration_helpers.d.ts +61 -2
- package/dist/testing/integration_helpers.d.ts.map +1 -1
- package/dist/testing/integration_helpers.js +75 -18
- package/dist/testing/round_trip.d.ts +17 -0
- package/dist/testing/round_trip.d.ts.map +1 -1
- package/dist/testing/round_trip.js +67 -24
- package/dist/testing/rpc_attack_surface.d.ts.map +1 -1
- package/dist/testing/rpc_attack_surface.js +13 -138
- package/dist/testing/rpc_envelope_cases.d.ts +111 -0
- package/dist/testing/rpc_envelope_cases.d.ts.map +1 -0
- package/dist/testing/rpc_envelope_cases.js +240 -0
- package/dist/testing/rpc_helpers.d.ts +31 -0
- package/dist/testing/rpc_helpers.d.ts.map +1 -1
- package/dist/testing/rpc_helpers.js +35 -14
- package/dist/testing/rpc_round_trip.d.ts +62 -6
- package/dist/testing/rpc_round_trip.d.ts.map +1 -1
- package/dist/testing/rpc_round_trip.js +151 -39
- package/dist/testing/schema_generators.d.ts.map +1 -1
- package/dist/testing/schema_generators.js +22 -2
- package/dist/testing/standard.d.ts +26 -0
- package/dist/testing/standard.d.ts.map +1 -1
- package/dist/testing/standard.js +4 -1
- package/dist/testing/transports/raw_http.d.ts +21 -0
- package/dist/testing/transports/raw_http.d.ts.map +1 -1
- package/dist/testing/transports/raw_http.js +30 -0
- package/package.json +10 -8
- package/dist/testing/cross_backend/actor_search.d.ts +0 -6
- package/dist/testing/cross_backend/actor_search.d.ts.map +0 -1
- package/dist/testing/cross_backend/actor_search.js +0 -90
- package/dist/testing/cross_backend/cell_cross_helpers.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"../src/lib/","sources":["../../../src/lib/testing/cross_backend/setup.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AA0B9B,OAAO,EAAE,IAAI,EAAuB,MAAM,4BAA4B,CAAC;AAIvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAA0B,KAAK,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAC/F,OAAO,EAAE,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"../src/lib/","sources":["../../../src/lib/testing/cross_backend/setup.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AA0B9B,OAAO,EAAE,IAAI,EAAuB,MAAM,4BAA4B,CAAC;AAIvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAA0B,KAAK,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAC/F,OAAO,EAAE,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/B;;;;;;;OAOG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACtC;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,eAAe,GAC3B,QAAQ;IACP,OAAO,EAAE;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,KAAK,EAAE;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACvB,EACD,aAAa,MAAM,KACjB,WAaD,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,WAAW;IAC3B;;;;;;OAMG;IACH,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;IACnC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,QAAQ,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,KAAK,cAAc,CAAC;IAC5F,+CAA+C;IAC/C,QAAQ,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACnE,8CAA8C;IAC9C,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAA;KAAE,CAAC;IACtC,8DAA8D;IAC9D,QAAQ,CAAC,sBAAsB,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5F,4DAA4D;IAC5D,QAAQ,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3F,iEAAiE;IACjE,QAAQ,CAAC,2BAA2B,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjG;;;;;OAKG;IACH,QAAQ,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,EAAE,wBAAwB,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IACtF;;;;;OAKG;IACH,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IAC/D;;;;;;;;OAQG;IACH,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnF;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,oBAAoB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD;;;;;OAKG;IACH,QAAQ,CAAC,kCAAkC,CAAC,EAAE,OAAO,CAAC;CACtD;AAED;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;AAEnD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,iBAAiB;IACjC,wEAAwE;IACxE,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;CAC/B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,gCAAiC,SAAQ,iBAAiB;IAC1E,0EAA0E;IAC1E,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAAC;CAC3C;AAED;;;;;;GAMG;AACH,MAAM,WAAW,wBAAyB,SAAQ,iBAAiB;IAClE,wEAAwE;IACxE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,uCAChB,SAAQ,wBAAwB,EAAE,gCAAgC;CAAG;AAEtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,WAAW,yBAA0B,SAAQ,aAAa;IAC/D,iEAAiE;IACjE,QAAQ,CAAC,gBAAgB,EAAE,cAAc,CAAC;IAC1C;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,uBAAuB,EAAE,cAAc,CAAC;IACjD,2DAA2D;IAC3D,QAAQ,CAAC,cAAc,EAAE;QAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1E,yDAAyD;IACzD,QAAQ,CAAC,YAAY,EAAE;QAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAA;KAAE,CAAC;IAC7C,wGAAwG;IACxG,QAAQ,CAAC,cAAc,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC/C;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,sCAAsC,GAAG,IAAI,CACxD,yBAAyB,EACzB,OAAO,GAAG,UAAU,CACpB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,qCAAqC;IACrD,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IACzC,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IACrD,QAAQ,CAAC,cAAc,EAAE,yBAAyB,CAAC,gBAAgB,CAAC,CAAC;IACrE,QAAQ,CAAC,YAAY,EAAE,yBAAyB,CAAC,cAAc,CAAC,CAAC;IACjE,QAAQ,CAAC,cAAc,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC/C;AAED;;;GAGG;AACH,eAAO,MAAM,6BAA6B,GACzC,QAAQ,yBAAyB,KAC/B,qCAMD,CAAC;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,+BAA+B,GAC3C,YAAY,qCAAqC,KAC/C,sCAmBD,CAAC;AAEH,iDAAiD;AACjD,MAAM,WAAW,wBAAwB;IACxC;;;;;;;;;;;;;;;;;;;OAmBG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACpD;;;;;OAKG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAC1D;;;;;;OAMG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC9C;;;;;;;;OAQG;IACH,QAAQ,CAAC,kCAAkC,CAAC,EAAE,OAAO,CAAC;IACtD;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,qGAAqG;IACrG,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC7B;AAqFD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,uBAAuB,GACnC,QAAQ,sCAAsC,EAC9C,UAAS;IAAE,cAAc,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;CAAO,KACtD,OAAO,CAAC,cAAc,CAcxB,CAAC;AA8BF;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB,GACnC,QAAQ,sCAAsC,KAC5C,OAAO,CAAC,cAAc,CAC8C,CAAC;AAExE;;;;;;;;;;GAUG;AACH,eAAO,MAAM,yBAAyB,GACrC,QAAQ,sCAAsC,KAC5C,OAAO,CAAC,gBAAgB,CACgD,CAAC;AAE5E;;;;;GAKG;AACH,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAoVlD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,2BAA2B,GACvC,QAAQ,sCAAsC,EAC9C,UAAU,wBAAwB,KAChC,SAsIF,CAAC"}
|
|
@@ -28,18 +28,22 @@ import { DEFAULT_TEST_PASSWORD } from '../test_credentials.js';
|
|
|
28
28
|
import { create_fetch_transport } from '../transports/fetch_transport.js';
|
|
29
29
|
import { MigrationTracker } from '../schema_introspect.js';
|
|
30
30
|
import { ActionManifest } from './action_manifest.js';
|
|
31
|
+
import { SPINE_ACCOUNT_LOGIN_PATH, SPINE_ACCOUNT_SIGNUP_PATH } from './spine_surface_constants.js';
|
|
31
32
|
/**
|
|
32
|
-
* Build
|
|
33
|
-
*
|
|
33
|
+
* Build a `TestAccount` from a seeded `{account, actor, api_token,
|
|
34
|
+
* session_cookie}` bundle and the session cookie name — the header builders
|
|
35
|
+
* close over its credentials.
|
|
34
36
|
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
* `_testing_reset`
|
|
39
|
-
*
|
|
40
|
-
*
|
|
37
|
+
* Every fixture path that hands out a secondary account builds it here: the
|
|
38
|
+
* bootstrap-time `extra_accounts` (in-process via
|
|
39
|
+
* `create_test_account_with_credentials`, cross-process from the
|
|
40
|
+
* `_testing_reset` output) and the cross-process `fixture.create_account`.
|
|
41
|
+
*
|
|
42
|
+
* @param seeded - the account's identity and credentials
|
|
43
|
+
* @param cookie_name - the backend's session cookie name
|
|
44
|
+
* @returns the account with its header builders
|
|
41
45
|
*/
|
|
42
|
-
export const
|
|
46
|
+
export const to_test_account = (seeded, cookie_name) => ({
|
|
43
47
|
account: seeded.account,
|
|
44
48
|
actor: seeded.actor,
|
|
45
49
|
api_token: seeded.api_token,
|
|
@@ -326,8 +330,10 @@ const mint_account = async (handle, options) => {
|
|
|
326
330
|
// it. The keeper holds `ROLE_ADMIN` from bootstrap (see
|
|
327
331
|
// `bootstrap_account.ts` — both `ROLE_KEEPER` and `ROLE_ADMIN` grants
|
|
328
332
|
// are created in the bootstrap transaction), so `invite_create` (admin-
|
|
329
|
-
// only) authorizes without any extra grants.
|
|
330
|
-
|
|
333
|
+
// only) authorizes without any extra grants. It acts as the keeper's
|
|
334
|
+
// bootstrap actor, the one holding those grants, so a keeper seeded with
|
|
335
|
+
// `extra_actors` resolves it too rather than answering `actor_required`.
|
|
336
|
+
const invite_result = (await rpc_via_transport(handle.keeper_transport, handle.config.rpc_path, 'invite_create', { username, acting: handle.keeper_actor.id }, handle.config.name));
|
|
331
337
|
if (!invite_result?.invite?.id) {
|
|
332
338
|
throw new Error(`invite_create(${handle.config.name}, username=${username}) returned unexpected result: ` +
|
|
333
339
|
JSON.stringify(invite_result));
|
|
@@ -340,7 +346,7 @@ const mint_account = async (handle, options) => {
|
|
|
340
346
|
// `app_server.ts`): "requested" is `undefined` vs present, so a
|
|
341
347
|
// caller-supplied value is forwarded verbatim and signup validates it,
|
|
342
348
|
// rather than the truthy form silently dropping an empty string.
|
|
343
|
-
const signup_response = await transport(
|
|
349
|
+
const signup_response = await transport(options.signup_path, {
|
|
344
350
|
method: 'POST',
|
|
345
351
|
headers: { 'Content-Type': 'application/json' },
|
|
346
352
|
body: JSON.stringify({
|
|
@@ -358,7 +364,7 @@ const mint_account = async (handle, options) => {
|
|
|
358
364
|
if (!parsed.success) {
|
|
359
365
|
throw new Error(`signup(${handle.config.name}) returned unexpected body: ${JSON.stringify(signup_raw)} (${parsed.error.message})`);
|
|
360
366
|
}
|
|
361
|
-
const login_response = await transport(
|
|
367
|
+
const login_response = await transport(options.login_path, {
|
|
362
368
|
method: 'POST',
|
|
363
369
|
headers: { 'Content-Type': 'application/json' },
|
|
364
370
|
body: JSON.stringify({ username, password })
|
|
@@ -401,7 +407,9 @@ const mint_account = async (handle, options) => {
|
|
|
401
407
|
*/
|
|
402
408
|
const grant_roles_via_offer_accept = async (handle, minted, roles) => {
|
|
403
409
|
for (const role of roles) {
|
|
404
|
-
const offer_result = (await rpc_via_transport(handle.keeper_transport, handle.config.rpc_path, 'role_grant_offer_create',
|
|
410
|
+
const offer_result = (await rpc_via_transport(handle.keeper_transport, handle.config.rpc_path, 'role_grant_offer_create',
|
|
411
|
+
// as the keeper's bootstrap actor, like `mint_account`'s invite
|
|
412
|
+
{ to_account_id: minted.account.id, role, acting: handle.keeper_actor.id }, `${handle.config.name}, role=${role}`));
|
|
405
413
|
if (!offer_result?.offer?.id) {
|
|
406
414
|
throw new Error(`role_grant_offer_create(${handle.config.name}, role=${role}) returned unexpected result: ` + JSON.stringify(offer_result));
|
|
407
415
|
}
|
|
@@ -461,6 +469,8 @@ export const default_cross_process_setup = (handle, options) => {
|
|
|
461
469
|
const extra_keeper_roles = options?.extra_keeper_roles ?? [];
|
|
462
470
|
const extra_account_specs = options?.extra_accounts ?? [];
|
|
463
471
|
const extra_actor_names = options?.extra_actors ?? [];
|
|
472
|
+
const signup_path = options?.signup_path ?? SPINE_ACCOUNT_SIGNUP_PATH;
|
|
473
|
+
const login_path = options?.login_path ?? SPINE_ACCOUNT_LOGIN_PATH;
|
|
464
474
|
const { cookie_name } = handle.config;
|
|
465
475
|
return async () => {
|
|
466
476
|
const { keeper, extra_accounts: seeded_extras, extra_actors } = await fire_testing_reset(handle, {
|
|
@@ -501,6 +511,8 @@ export const default_cross_process_setup = (handle, options) => {
|
|
|
501
511
|
});
|
|
502
512
|
const create_account = async (account_options) => {
|
|
503
513
|
const other = await mint_account(refreshed_handle, {
|
|
514
|
+
signup_path,
|
|
515
|
+
login_path,
|
|
504
516
|
...(account_options?.username !== undefined && { username: account_options.username }),
|
|
505
517
|
...(account_options?.password_value !== undefined && {
|
|
506
518
|
password_value: account_options.password_value
|
|
@@ -510,20 +522,7 @@ export const default_cross_process_setup = (handle, options) => {
|
|
|
510
522
|
if (account_options?.roles && account_options.roles.length > 0) {
|
|
511
523
|
await grant_roles_via_offer_accept(refreshed_handle, other, account_options.roles);
|
|
512
524
|
}
|
|
513
|
-
return
|
|
514
|
-
account: other.account,
|
|
515
|
-
actor: other.actor,
|
|
516
|
-
session_cookie: other.session_cookie,
|
|
517
|
-
api_token: other.api_token,
|
|
518
|
-
create_session_headers: (extra) => ({
|
|
519
|
-
cookie: `${cookie_name}=${other.session_cookie}`,
|
|
520
|
-
...extra
|
|
521
|
-
}),
|
|
522
|
-
create_bearer_headers: (extra) => ({
|
|
523
|
-
authorization: `Bearer ${other.api_token}`,
|
|
524
|
-
...extra
|
|
525
|
-
})
|
|
526
|
-
};
|
|
525
|
+
return to_test_account(other, cookie_name);
|
|
527
526
|
};
|
|
528
527
|
const extra_accounts = {};
|
|
529
528
|
for (let i = 0; i < extra_account_specs.length; i++) {
|
|
@@ -531,7 +530,7 @@ export const default_cross_process_setup = (handle, options) => {
|
|
|
531
530
|
const seeded = seeded_extras[i];
|
|
532
531
|
if (!spec || !seeded)
|
|
533
532
|
continue;
|
|
534
|
-
extra_accounts[spec.username] =
|
|
533
|
+
extra_accounts[spec.username] = to_test_account(seeded, cookie_name);
|
|
535
534
|
}
|
|
536
535
|
// Per-test transport — fresh jar carrying the new keeper's cookie
|
|
537
536
|
// so requests authenticate as the keeper without callers having to
|
|
@@ -556,6 +555,7 @@ export const default_cross_process_setup = (handle, options) => {
|
|
|
556
555
|
create_account,
|
|
557
556
|
extra_accounts,
|
|
558
557
|
extra_actors,
|
|
558
|
+
reject_unknown_audit_metadata_keys: options?.reject_unknown_audit_metadata_keys ?? false,
|
|
559
559
|
// Forge over the wire — the cross-process driver has no keyring,
|
|
560
560
|
// so `_testing_mint_session` mints the backdated row + signs the
|
|
561
561
|
// cookie server-side over the keeper's daemon-token channel.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simple_request.d.ts","sourceRoot":"../src/lib/","sources":["../../../src/lib/testing/cross_backend/simple_request.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AA6B9B,OAAO,KAAK,EAAE,wBAAwB,EAAe,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"simple_request.d.ts","sourceRoot":"../src/lib/","sources":["../../../src/lib/testing/cross_backend/simple_request.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AA6B9B,OAAO,KAAK,EAAE,wBAAwB,EAAe,MAAM,YAAY,CAAC;AAOxE,mDAAmD;AACnD,MAAM,WAAW,6BAA8B,SAAQ,wBAAwB;IAC9E,kFAAkF;IAClF,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,oFAAoF;IACpF,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC9B;AAaD,eAAO,MAAM,mCAAmC,GAC/C,SAAS,6BAA6B,KACpC,IAuHF,CAAC"}
|
|
@@ -16,7 +16,7 @@ import '../assert_dev_env.js';
|
|
|
16
16
|
*
|
|
17
17
|
* Runs both legs via the shared `setup_test` protocol: in-process
|
|
18
18
|
* (`auth/simple_request_parity.db.test.ts`) and cross-process
|
|
19
|
-
* (`cross_backend/
|
|
19
|
+
* (`cross_backend/spine_suites.cross.test.ts`). Every spine has the gate,
|
|
20
20
|
* so the suite is ungated.
|
|
21
21
|
*
|
|
22
22
|
* @module
|
|
@@ -24,7 +24,7 @@ import '../assert_dev_env.js';
|
|
|
24
24
|
import { describe, test, assert } from 'vitest';
|
|
25
25
|
import { account_verify_action_spec } from '../../auth/account_action_specs.js';
|
|
26
26
|
import { ERROR_UNSUPPORTED_CONTENT_TYPE } from '../../http/error_schemas.js';
|
|
27
|
-
import { SPINE_RPC_PATH } from './spine_surface_constants.js';
|
|
27
|
+
import { SPINE_ACCOUNT_LOGIN_PATH, SPINE_ACCOUNT_LOGOUT_PATH, SPINE_RPC_PATH } from './spine_surface_constants.js';
|
|
28
28
|
/** Build the JSON-RPC envelope body for a nullary `account_verify` call. */
|
|
29
29
|
const verify_envelope = (id) => JSON.stringify({ jsonrpc: '2.0', method: account_verify_action_spec.method, id });
|
|
30
30
|
/** Assert a flat `415` content-type refusal. */
|
|
@@ -36,8 +36,8 @@ const assert_refused = async (res, label) => {
|
|
|
36
36
|
export const describe_simple_request_cross_tests = (options) => {
|
|
37
37
|
const { setup_test } = options;
|
|
38
38
|
const rpc_path = options.rpc_path ?? SPINE_RPC_PATH;
|
|
39
|
-
const login_path = options.login_path ??
|
|
40
|
-
const logout_path = options.logout_path ??
|
|
39
|
+
const login_path = options.login_path ?? SPINE_ACCOUNT_LOGIN_PATH;
|
|
40
|
+
const logout_path = options.logout_path ?? SPINE_ACCOUNT_LOGOUT_PATH;
|
|
41
41
|
/** POST a JSON `account_verify` with the fixture's session — 200 while it's valid. */
|
|
42
42
|
const verify_session = async (fixture, id) => {
|
|
43
43
|
const res = await fixture.transport(rpc_path, {
|
|
@@ -5,18 +5,30 @@ import '../assert_dev_env.js';
|
|
|
5
5
|
*
|
|
6
6
|
* Lifecycle:
|
|
7
7
|
*
|
|
8
|
-
* 1.
|
|
9
|
-
*
|
|
10
|
-
*
|
|
8
|
+
* 1. Refuse when `config.base_url`'s port already accepts a TCP connection —
|
|
9
|
+
* another cross run or a stale backend holds it, and the health probe
|
|
10
|
+
* would otherwise drive that process instead of the one spawned here.
|
|
11
|
+
* 2. Write the bootstrap token (`config.bootstrap.token`) to
|
|
12
|
+
* `config.bootstrap.token_path` so the binary picks it up at startup, and
|
|
13
|
+
* delete any `config.bootstrap.daemon_token_path` a previous run left, so
|
|
14
|
+
* step 5 can only read the token this binary writes.
|
|
15
|
+
* 3. `child_process.spawn(...)` the binary with `detached: true` —
|
|
11
16
|
* creates a new process group so a `SIGTERM` to the negative PID
|
|
12
17
|
* tears down any descendants the binary spawned (PTYs, child
|
|
13
|
-
* workers). vitest worker death +
|
|
14
|
-
* group teardown so ports never strand.
|
|
15
|
-
*
|
|
16
|
-
* `startup_timeout_ms` elapses
|
|
17
|
-
*
|
|
18
|
+
* workers). vitest worker death + `SIGINT` / `SIGTERM` / `SIGHUP`
|
|
19
|
+
* handlers also fire the group teardown so ports never strand.
|
|
20
|
+
* 4. Poll `{base_url}{health_path}` until it returns 2xx or
|
|
21
|
+
* `startup_timeout_ms` elapses — each probe bounded by its own timeout, so
|
|
22
|
+
* a listener that accepts but never answers can't outlast the deadline.
|
|
23
|
+
* 5. Read `config.bootstrap.daemon_token_path` to load the binary's
|
|
18
24
|
* deterministic daemon token; thread it onto `BackendHandle` so
|
|
19
25
|
* `_testing_reset` and other keeper-credential calls can authenticate.
|
|
26
|
+
* 6. Log one line with the time from spawn to step 5 done, so a run shows
|
|
27
|
+
* what each backend costs to bring up.
|
|
28
|
+
*
|
|
29
|
+
* The child's stderr is kept as a bounded tail (`STDERR_TAIL_MAX_BYTES`):
|
|
30
|
+
* a startup failure reports it with the exit code or signal, and an exit
|
|
31
|
+
* after startup that teardown didn't cause is logged with it.
|
|
20
32
|
*
|
|
21
33
|
* Bootstrapping (`POST /api/account/bootstrap`) is a separate concern —
|
|
22
34
|
* the caller composes `bootstrap()` from `testing/transports/bootstrap.ts`
|
|
@@ -42,17 +54,54 @@ export interface BackendHandle {
|
|
|
42
54
|
*/
|
|
43
55
|
readonly daemon_token: string;
|
|
44
56
|
/**
|
|
45
|
-
* SIGTERM the child's process group
|
|
46
|
-
*
|
|
57
|
+
* SIGTERM the child's process group — even when the child itself has
|
|
58
|
+
* exited, so no descendant outlives it — and await the group's exit,
|
|
59
|
+
* escalating to SIGKILL after a grace window. Idempotent — later calls
|
|
60
|
+
* await the same exit. A descendant that left the group — spawned detached,
|
|
61
|
+
* or one that called `setsid` — is out of reach and survives teardown.
|
|
47
62
|
*/
|
|
48
63
|
readonly teardown: () => Promise<void>;
|
|
49
64
|
}
|
|
65
|
+
/**
|
|
66
|
+
* How much of the child's stderr is kept (bytes) — the tail a startup failure
|
|
67
|
+
* or an unexpected exit reports. Bounded so a backend that logs to stderr for
|
|
68
|
+
* a whole suite doesn't grow the runner's memory with it.
|
|
69
|
+
*/
|
|
70
|
+
export declare const STDERR_TAIL_MAX_BYTES: number;
|
|
71
|
+
/**
|
|
72
|
+
* Whether something accepts TCP connections at `base_url`'s host and port.
|
|
73
|
+
* A refused connection, an unresolvable host or no answer within
|
|
74
|
+
* `PORT_PROBE_TIMEOUT_MS` all read as free.
|
|
75
|
+
*
|
|
76
|
+
* @param base_url - an `http://` or `https://` URL; a missing port is the scheme's default
|
|
77
|
+
*/
|
|
78
|
+
export declare const is_port_accepting: (base_url: string) => Promise<boolean>;
|
|
79
|
+
/**
|
|
80
|
+
* A byte-bounded tail of a stream's output: keeps the last `max_bytes`
|
|
81
|
+
* written, dropping the oldest.
|
|
82
|
+
*/
|
|
83
|
+
export interface OutputTail {
|
|
84
|
+
readonly push: (chunk: Buffer) => void;
|
|
85
|
+
/** The kept bytes as UTF-8, prefixed with a marker when older output was dropped. */
|
|
86
|
+
readonly text: () => string;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Create an `OutputTail` keeping at most `max_bytes`.
|
|
90
|
+
*
|
|
91
|
+
* @param max_bytes - how many trailing bytes to keep
|
|
92
|
+
*/
|
|
93
|
+
export declare const create_output_tail: (max_bytes: number) => OutputTail;
|
|
50
94
|
/**
|
|
51
95
|
* Spawn `config.start_command` and return a handle once the binary is
|
|
52
96
|
* health-probe-ready and the daemon-token file is readable.
|
|
53
97
|
*
|
|
54
98
|
* Errors at any stage SIGTERM the child group before rethrowing — the
|
|
55
99
|
* caller never sees a half-started backend.
|
|
100
|
+
*
|
|
101
|
+
* @throws Error when `config.base_url`'s port already accepts connections,
|
|
102
|
+
* before anything is spawned; when the child exits before it is healthy
|
|
103
|
+
* (with its exit code or signal and stderr tail); or when the health probe
|
|
104
|
+
* or the daemon-token read times out
|
|
56
105
|
*/
|
|
57
106
|
export declare const spawn_backend: (config: BackendConfig) => Promise<BackendHandle>;
|
|
58
107
|
//# sourceMappingURL=spawn_backend.d.ts.map
|
|
@@ -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
|
|
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAK9D,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;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAgBD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,QAAY,CAAC;AAmE/C;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAAI,UAAU,MAAM,KAAG,OAAO,CAAC,OAAO,CAenE,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,UAAU;IAC1B,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,qFAAqF;IACrF,QAAQ,CAAC,IAAI,EAAE,MAAM,MAAM,CAAC;CAC5B;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAAI,WAAW,MAAM,KAAG,UAmBtD,CAAC;AAuFF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,aAAa,GAAU,QAAQ,aAAa,KAAG,OAAO,CAAC,aAAa,CAoMhF,CAAC"}
|