stoplight 5.8.3 → 6.0.0.rc2
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +1 -1
- data/LICENSE.md +1 -0
- data/README.md +132 -79
- data/UPGRADING.md +265 -6
- data/lib/stoplight/admin/actions/action.rb +4 -12
- data/lib/stoplight/admin/actions/lock.rb +12 -9
- data/lib/stoplight/admin/actions/lock_all.rb +27 -0
- data/lib/stoplight/admin/actions/remove.rb +12 -9
- data/lib/stoplight/admin/actions/stats.rb +15 -12
- data/lib/stoplight/admin/actions/unlock.rb +10 -9
- data/lib/stoplight/admin/assets/apple-touch-icon.png +0 -0
- data/lib/stoplight/admin/assets/favicon.ico +0 -0
- data/lib/stoplight/admin/assets/flowbite.min.css +2 -0
- data/lib/stoplight/admin/assets/flowbite.min.js +1 -0
- data/lib/stoplight/admin/assets/icon.svg +7 -0
- data/lib/stoplight/admin/assets/turbo.es2017-esm.min.js +34 -0
- data/lib/stoplight/admin/config_registry.rb +40 -0
- data/lib/stoplight/admin/dependencies.rb +29 -28
- data/lib/stoplight/admin/helpers.rb +50 -17
- data/lib/stoplight/admin/light_view.rb +184 -0
- data/lib/stoplight/admin/lights_stats.rb +7 -9
- data/lib/stoplight/admin/views/_card.erb +19 -21
- data/lib/stoplight/admin/views/index.erb +9 -3
- data/lib/stoplight/admin/views/layout.erb +45 -13
- data/lib/stoplight/admin.rb +110 -21
- data/lib/stoplight/data_store.rb +18 -8
- data/lib/stoplight/domain/config.rb +4 -1
- data/lib/stoplight/domain/error_tracking_policy.rb +9 -0
- data/lib/stoplight/domain/failure.rb +4 -0
- data/lib/stoplight/domain/id.rb +13 -0
- data/lib/stoplight/domain/light.rb +35 -77
- data/lib/stoplight/domain/lock_control.rb +55 -0
- data/lib/stoplight/domain/matcher_validator.rb +24 -0
- data/lib/stoplight/domain/state_snapshot.rb +2 -6
- data/lib/stoplight/domain/strategies/green_run_strategy.rb +33 -19
- data/lib/stoplight/domain/strategies/red_run_strategy.rb +8 -2
- data/lib/stoplight/domain/strategies/yellow_run_strategy.rb +56 -32
- data/lib/stoplight/domain/telemetry/bus.rb +90 -0
- data/lib/stoplight/domain/telemetry/consumer.rb +18 -0
- data/lib/stoplight/domain/telemetry/emitter.rb +45 -0
- data/lib/stoplight/domain/telemetry/envelope.rb +15 -0
- data/lib/stoplight/domain/telemetry/failure.rb +13 -0
- data/lib/stoplight/domain/telemetry/light_registered.rb +12 -0
- data/lib/stoplight/domain/telemetry/lock_changed.rb +19 -0
- data/lib/stoplight/domain/telemetry/metrics.rb +15 -0
- data/lib/stoplight/domain/telemetry/recovery_failed.rb +20 -0
- data/lib/stoplight/domain/telemetry/recovery_probe_completed.rb +15 -0
- data/lib/stoplight/domain/telemetry/recovery_started.rb +18 -0
- data/lib/stoplight/domain/telemetry/recovery_succeeded.rb +19 -0
- data/lib/stoplight/domain/telemetry/run_completed.rb +17 -0
- data/lib/stoplight/domain/telemetry/run_recorder.rb +58 -0
- data/lib/stoplight/domain/telemetry/settings.rb +21 -0
- data/lib/stoplight/domain/telemetry/state_transitioned.rb +11 -0
- data/lib/stoplight/domain/telemetry/subscription.rb +11 -0
- data/lib/stoplight/domain/telemetry/traffic_breached.rb +20 -0
- data/lib/stoplight/domain/tracker/recovery_probe.rb +61 -17
- data/lib/stoplight/domain/tracker/request.rb +17 -8
- data/lib/stoplight/domain/traffic_control/consecutive_errors.rb +13 -3
- data/lib/stoplight/domain/traffic_control/error_rate.rb +16 -12
- data/lib/stoplight/domain/traffic_recovery/consecutive_successes.rb +9 -3
- data/lib/stoplight/error.rb +10 -1
- data/lib/stoplight/infrastructure/config_serializer.rb +50 -0
- data/lib/stoplight/infrastructure/fail_safe/error_notifier.rb +25 -0
- data/lib/stoplight/infrastructure/fail_safe/storage/registry.rb +68 -0
- data/lib/stoplight/infrastructure/memory/storage/registry.rb +18 -0
- data/lib/stoplight/infrastructure/memory/storage/unbounded_metrics.rb +29 -32
- data/lib/stoplight/infrastructure/memory/storage/window_metrics/sliding_window.rb +74 -0
- data/lib/stoplight/infrastructure/memory/storage/window_metrics.rb +25 -24
- data/lib/stoplight/infrastructure/notifier/fail_safe.rb +3 -8
- data/lib/stoplight/infrastructure/notifier/generic.rb +3 -3
- data/lib/stoplight/infrastructure/redis/key.rb +25 -0
- data/lib/stoplight/infrastructure/redis/storage/now.lua +9 -0
- data/lib/stoplight/infrastructure/redis/storage/recovery_lock.rb +2 -4
- data/lib/stoplight/infrastructure/redis/storage/recovery_metrics.rb +1 -1
- data/lib/stoplight/infrastructure/redis/storage/registry.rb +73 -0
- data/lib/stoplight/infrastructure/redis/storage/scripting.rb +54 -3
- data/lib/stoplight/infrastructure/redis/storage/state/transition_to_green.lua +3 -1
- data/lib/stoplight/infrastructure/redis/storage/state/transition_to_red.lua +4 -2
- data/lib/stoplight/infrastructure/redis/storage/state/transition_to_yellow.lua +3 -1
- data/lib/stoplight/infrastructure/redis/storage/state.rb +8 -8
- data/lib/stoplight/infrastructure/redis/storage/unbounded_metrics/record_failure.lua +20 -21
- data/lib/stoplight/infrastructure/redis/storage/unbounded_metrics/record_success.lua +11 -19
- data/lib/stoplight/infrastructure/redis/storage/unbounded_metrics.rb +20 -16
- data/lib/stoplight/infrastructure/redis/storage/window_metrics/_evict.lua +44 -0
- data/lib/stoplight/infrastructure/redis/storage/window_metrics/metrics_snapshot.lua +14 -21
- data/lib/stoplight/infrastructure/redis/storage/window_metrics/record_failure.lua +38 -36
- data/lib/stoplight/infrastructure/redis/storage/window_metrics/record_success.lua +23 -30
- data/lib/stoplight/infrastructure/redis/storage/window_metrics.rb +45 -135
- data/lib/stoplight/infrastructure/system_clock.rb +4 -0
- data/lib/stoplight/telemetry.rb +19 -0
- data/lib/stoplight/types.rb +15 -2
- data/lib/stoplight/version.rb +1 -1
- data/lib/stoplight/wiring/config_compatibility_validator.rb +25 -2
- data/lib/stoplight/wiring/default.rb +1 -1
- data/lib/stoplight/wiring/default_config.rb +2 -1
- data/lib/stoplight/wiring/default_configuration.rb +3 -2
- data/lib/stoplight/wiring/external_caller.rb +27 -0
- data/lib/stoplight/wiring/fail_safe_config.rb +11 -0
- data/lib/stoplight/wiring/global_state.rb +93 -0
- data/lib/stoplight/wiring/{light_factory → light_configuration_dsl}/traffic_control_dsl.rb +3 -5
- data/lib/stoplight/wiring/{light_factory → light_configuration_dsl}/traffic_recovery_dsl.rb +2 -2
- data/lib/stoplight/wiring/light_configuration_dsl.rb +97 -0
- data/lib/stoplight/wiring/light_factory.rb +154 -97
- data/lib/stoplight/wiring/notifier_bridge.rb +33 -0
- data/lib/stoplight/wiring/redis/backend.rb +1 -1
- data/lib/stoplight/wiring/system/storage.rb +69 -0
- data/lib/stoplight/wiring/system.rb +125 -56
- data/lib/stoplight/wiring/{configuration_dsl.rb → system_configuration_dsl.rb} +13 -43
- data/lib/stoplight.rb +50 -194
- data/sig/sinatra/base.rbs +6 -0
- data/sig/stdlib/securerandom.rbs +4 -0
- data/sig/stoplight/admin/actions/action.rbs +10 -0
- data/sig/stoplight/admin/actions/lock.rbs +17 -0
- data/sig/stoplight/admin/actions/lock_all.rbs +17 -0
- data/sig/stoplight/admin/actions/remove.rbs +22 -0
- data/sig/stoplight/admin/actions/stats.rbs +28 -0
- data/sig/stoplight/admin/actions/unlock.rbs +17 -0
- data/sig/stoplight/admin/config_registry.rbs +20 -0
- data/sig/stoplight/admin/dependencies.rbs +16 -0
- data/sig/stoplight/admin/helpers.rbs +17 -0
- data/sig/stoplight/admin/light_view.rbs +39 -0
- data/sig/stoplight/admin/lights_stats.rbs +30 -0
- data/sig/stoplight/admin.rbs +14 -0
- data/sig/stoplight/color.rbs +3 -3
- data/sig/{_private/stoplight/data_store.rbs → stoplight/data_store/base.rbs} +1 -0
- data/sig/stoplight/data_store/memory.rbs +9 -0
- data/sig/stoplight/data_store/redis.rbs +17 -0
- data/sig/{_private/stoplight → stoplight}/domain/config.rbs +28 -24
- data/sig/{_private/stoplight → stoplight}/domain/error_tracking_policy.rbs +4 -0
- data/sig/{_private/stoplight → stoplight}/domain/failure.rbs +2 -0
- data/sig/stoplight/domain/id.rbs +7 -0
- data/sig/stoplight/domain/light.rbs +39 -0
- data/sig/{_private/stoplight → stoplight}/domain/light_info.rbs +1 -5
- data/sig/stoplight/domain/lock_control.rbs +16 -0
- data/sig/stoplight/domain/matcher_validator.rbs +11 -0
- data/sig/{_private/stoplight → stoplight}/domain/ports/clock.rbs +6 -0
- data/sig/stoplight/domain/ports/data_store.rbs +9 -0
- data/sig/stoplight/domain/ports/error_notifier.rbs +12 -0
- data/sig/stoplight/domain/ports/exception_matcher.rbs +10 -0
- data/sig/{_private/stoplight → stoplight}/domain/ports/metrics_store.rbs +2 -2
- data/sig/stoplight/domain/ports/registry.rbs +13 -0
- data/sig/{_private/stoplight → stoplight}/domain/ports/run_strategy.rbs +2 -1
- data/sig/stoplight/domain/ports/state_transition_notifier.rbs +18 -0
- data/sig/stoplight/domain/ports/telemetry.rbs +28 -0
- data/sig/stoplight/domain/ports/telemetry_publisher.rbs +14 -0
- data/sig/{_private/stoplight → stoplight}/domain/ports/traffic_control.rbs +7 -0
- data/sig/{_private/stoplight → stoplight}/domain/ports/traffic_recovery.rbs +2 -3
- data/sig/stoplight/domain/strategies/green_run_strategy.rbs +22 -0
- data/sig/stoplight/domain/strategies/red_run_strategy.rbs +19 -0
- data/sig/{_private/stoplight → stoplight}/domain/strategies/yellow_run_strategy.rbs +23 -12
- data/sig/stoplight/domain/telemetry/bus.rbs +49 -0
- data/sig/stoplight/domain/telemetry/consumer.rbs +13 -0
- data/sig/stoplight/domain/telemetry/emitter.rbs +51 -0
- data/sig/stoplight/domain/telemetry/envelope.rbs +30 -0
- data/sig/stoplight/domain/telemetry/failure.rbs +23 -0
- data/sig/stoplight/domain/telemetry/light_registered.rbs +23 -0
- data/sig/stoplight/domain/telemetry/lock_changed.rbs +31 -0
- data/sig/stoplight/domain/telemetry/metrics.rbs +27 -0
- data/sig/stoplight/domain/telemetry/recovery_failed.rbs +36 -0
- data/sig/stoplight/domain/telemetry/recovery_probe_completed.rbs +29 -0
- data/sig/stoplight/domain/telemetry/recovery_started.rbs +26 -0
- data/sig/stoplight/domain/telemetry/recovery_succeeded.rbs +31 -0
- data/sig/stoplight/domain/telemetry/run_completed.rbs +38 -0
- data/sig/stoplight/domain/telemetry/run_recorder.rbs +27 -0
- data/sig/stoplight/domain/telemetry/settings.rbs +47 -0
- data/sig/stoplight/domain/telemetry/state_transitioned.rbs +11 -0
- data/sig/stoplight/domain/telemetry/subscription.rbs +9 -0
- data/sig/stoplight/domain/telemetry/traffic_breached.rbs +36 -0
- data/sig/stoplight/domain/telemetry/types.rbs +32 -0
- data/sig/{_private/stoplight → stoplight}/domain/tracker/recovery_probe.rbs +10 -6
- data/sig/{_private/stoplight → stoplight}/domain/tracker/request.rbs +3 -3
- data/sig/{_private/stoplight → stoplight}/domain/traffic_control/consecutive_errors.rbs +2 -0
- data/sig/{_private/stoplight → stoplight}/domain/traffic_control/error_rate.rbs +3 -2
- data/sig/{_private/stoplight → stoplight}/domain/traffic_recovery/consecutive_successes.rbs +2 -0
- data/sig/stoplight/domain/types.rbs +25 -0
- data/sig/stoplight/error.rbs +8 -0
- data/sig/stoplight/generators/rails_generators_base.rbs +11 -0
- data/sig/stoplight/infrastructure/config_serializer.rbs +12 -0
- data/sig/stoplight/infrastructure/fail_safe/error_notifier.rbs +13 -0
- data/sig/{_private/stoplight → stoplight}/infrastructure/fail_safe/storage/metrics.rbs +2 -2
- data/sig/{_private/stoplight → stoplight}/infrastructure/fail_safe/storage/recovery_lock.rbs +2 -2
- data/sig/stoplight/infrastructure/fail_safe/storage/registry.rbs +23 -0
- data/sig/{_private/stoplight → stoplight}/infrastructure/fail_safe/storage/state.rbs +4 -4
- data/sig/stoplight/infrastructure/memory/storage/registry.rbs +13 -0
- data/sig/{_private/stoplight → stoplight}/infrastructure/memory/storage/state.rbs +3 -3
- data/sig/{_private/stoplight → stoplight}/infrastructure/memory/storage/unbounded_metrics.rbs +7 -7
- data/sig/stoplight/infrastructure/memory/storage/window_metrics/sliding_window.rbs +27 -0
- data/sig/{_private/stoplight → stoplight}/infrastructure/memory/storage/window_metrics.rbs +7 -7
- data/sig/stoplight/infrastructure/notifier/fail_safe.rbs +15 -0
- data/sig/{_private/stoplight → stoplight}/infrastructure/notifier/generic.rbs +1 -1
- data/sig/{_private/stoplight → stoplight}/infrastructure/notifier/io.rbs +1 -1
- data/sig/{_private/stoplight → stoplight}/infrastructure/notifier/logger.rbs +1 -1
- data/sig/stoplight/infrastructure/redis/key.rbs +10 -0
- data/sig/{_private/stoplight → stoplight}/infrastructure/redis/storage/recovery_lock.rbs +2 -2
- data/sig/stoplight/infrastructure/redis/storage/registry.rbs +27 -0
- data/sig/stoplight/infrastructure/redis/storage/scripting.rbs +34 -0
- data/sig/{_private/stoplight → stoplight}/infrastructure/redis/storage/state.rbs +4 -4
- data/sig/{_private/stoplight → stoplight}/infrastructure/redis/storage/unbounded_metrics.rbs +8 -1
- data/sig/stoplight/infrastructure/redis/storage/window_metrics.rbs +35 -0
- data/sig/stoplight/infrastructure/types.rbs +6 -0
- data/sig/stoplight/notifier.rbs +1 -1
- data/sig/stoplight/ports/system.rbs +16 -10
- data/sig/stoplight/state.rbs +3 -3
- data/sig/stoplight/telemetry.rbs +17 -0
- data/sig/stoplight/types.rbs +9 -0
- data/sig/{_private/stoplight → stoplight}/wiring/config_compatibility_validator.rbs +2 -0
- data/sig/stoplight/wiring/default.rbs +26 -0
- data/sig/stoplight/wiring/default_configuration.rbs +39 -0
- data/sig/stoplight/wiring/external_caller.rbs +13 -0
- data/sig/stoplight/wiring/fail_safe_config.rbs +7 -0
- data/sig/stoplight/wiring/global_state.rbs +36 -0
- data/sig/{_private/stoplight/wiring/light_factory → stoplight/wiring/light_configuration_dsl}/traffic_control_dsl.rbs +1 -1
- data/sig/{_private/stoplight/wiring/light_factory → stoplight/wiring/light_configuration_dsl}/traffic_recovery_dsl.rbs +1 -1
- data/sig/stoplight/wiring/light_configuration_dsl.rbs +38 -0
- data/sig/stoplight/wiring/light_factory.rbs +78 -0
- data/sig/stoplight/wiring/notifier_bridge.rbs +15 -0
- data/sig/stoplight/wiring/notifier_factory.rbs +10 -0
- data/sig/{_private/stoplight → stoplight}/wiring/redis/backend.rbs +6 -6
- data/sig/stoplight/wiring/system/storage.rbs +35 -0
- data/sig/stoplight/wiring/system.rbs +30 -0
- data/sig/stoplight/wiring/system_configuration_dsl.rbs +39 -0
- data/sig/stoplight/wiring/types.rbs +6 -0
- data/sig/stoplight.rbs +37 -54
- metadata +190 -143
- data/lib/stoplight/admin/actions/lock_all_green.rb +0 -18
- data/lib/stoplight/admin/actions/lock_green.rb +0 -23
- data/lib/stoplight/admin/actions/lock_red.rb +0 -23
- data/lib/stoplight/admin/lights_repository/light.rb +0 -171
- data/lib/stoplight/admin/lights_repository.rb +0 -87
- data/lib/stoplight/domain/light/configuration_builder_interface.rb +0 -236
- data/lib/stoplight/infrastructure/fail_safe/data_store.rb +0 -152
- data/lib/stoplight/infrastructure/memory/data_store/metrics.rb +0 -27
- data/lib/stoplight/infrastructure/memory/data_store/recovery_lock_store.rb +0 -52
- data/lib/stoplight/infrastructure/memory/data_store/recovery_lock_token.rb +0 -17
- data/lib/stoplight/infrastructure/memory/data_store/sliding_window.rb +0 -74
- data/lib/stoplight/infrastructure/memory/data_store/state.rb +0 -21
- data/lib/stoplight/infrastructure/memory/data_store.rb +0 -342
- data/lib/stoplight/infrastructure/redis/data_store/lua_scripts/get_metrics.lua +0 -26
- data/lib/stoplight/infrastructure/redis/data_store/lua_scripts/record_failure.lua +0 -36
- data/lib/stoplight/infrastructure/redis/data_store/lua_scripts/record_recovery_probe_failure.lua +0 -27
- data/lib/stoplight/infrastructure/redis/data_store/lua_scripts/record_recovery_probe_success.lua +0 -23
- data/lib/stoplight/infrastructure/redis/data_store/lua_scripts/record_success.lua +0 -35
- data/lib/stoplight/infrastructure/redis/data_store/lua_scripts/release_lock.lua +0 -6
- data/lib/stoplight/infrastructure/redis/data_store/lua_scripts/transition_to_green.lua +0 -10
- data/lib/stoplight/infrastructure/redis/data_store/lua_scripts/transition_to_red.lua +0 -10
- data/lib/stoplight/infrastructure/redis/data_store/lua_scripts/transition_to_yellow.lua +0 -9
- data/lib/stoplight/infrastructure/redis/data_store/recovery_lock_store.rb +0 -60
- data/lib/stoplight/infrastructure/redis/data_store/recovery_lock_token.rb +0 -28
- data/lib/stoplight/infrastructure/redis/data_store/scripting.rb +0 -73
- data/lib/stoplight/infrastructure/redis/data_store.rb +0 -516
- data/lib/stoplight/infrastructure/redis/storage/key_space.rb +0 -51
- data/lib/stoplight/infrastructure/storage/compatibility_metrics.rb +0 -41
- data/lib/stoplight/infrastructure/storage/compatibility_recovery_lock.rb +0 -33
- data/lib/stoplight/infrastructure/storage/compatibility_recovery_metrics.rb +0 -47
- data/lib/stoplight/infrastructure/storage/compatibility_state.rb +0 -44
- data/lib/stoplight/wiring/light_builder.rb +0 -198
- data/lib/stoplight/wiring/notifier_factory.rb +0 -26
- data/lib/stoplight/wiring/system/light_builder.rb +0 -47
- data/lib/stoplight/wiring/system/light_factory.rb +0 -64
- data/sig/_private/stoplight/domain/light.rbs +0 -25
- data/sig/_private/stoplight/domain/ports/data_store.rbs +0 -76
- data/sig/_private/stoplight/domain/ports/light_factory.rbs +0 -80
- data/sig/_private/stoplight/domain/strategies/green_run_strategy.rbs +0 -17
- data/sig/_private/stoplight/domain/strategies/red_run_strategy.rbs +0 -17
- data/sig/_private/stoplight/domain/tracker/base.rbs +0 -8
- data/sig/_private/stoplight/infrastructure/fail_safe/data_store.rbs +0 -26
- data/sig/_private/stoplight/infrastructure/memory/data_store/metrics.rbs +0 -25
- data/sig/_private/stoplight/infrastructure/memory/data_store/recovery_lock_store.rbs +0 -19
- data/sig/_private/stoplight/infrastructure/memory/data_store/recovery_lock_token.rbs +0 -17
- data/sig/_private/stoplight/infrastructure/memory/data_store/sliding_window.rbs +0 -27
- data/sig/_private/stoplight/infrastructure/memory/data_store/state.rbs +0 -17
- data/sig/_private/stoplight/infrastructure/memory/data_store.rbs +0 -30
- data/sig/_private/stoplight/infrastructure/notifier/fail_safe.rbs +0 -17
- data/sig/_private/stoplight/infrastructure/redis/data_store/recovery_lock_store.rbs +0 -24
- data/sig/_private/stoplight/infrastructure/redis/data_store/recovery_lock_token.rbs +0 -21
- data/sig/_private/stoplight/infrastructure/redis/data_store/scripting.rbs +0 -34
- data/sig/_private/stoplight/infrastructure/redis/data_store.rbs +0 -67
- data/sig/_private/stoplight/infrastructure/redis/storage/key_space.rbs +0 -19
- data/sig/_private/stoplight/infrastructure/redis/storage/scripting.rbs +0 -13
- data/sig/_private/stoplight/infrastructure/redis/storage/window_metrics.rbs +0 -34
- data/sig/_private/stoplight/infrastructure/storage/compatibility_metrics.rbs +0 -17
- data/sig/_private/stoplight/infrastructure/storage/compatibility_recovery_lock.rbs +0 -13
- data/sig/_private/stoplight/infrastructure/storage/compatibility_recovery_metrics.rbs +0 -14
- data/sig/_private/stoplight/infrastructure/storage/compatibility_state.rbs +0 -14
- data/sig/_private/stoplight/system/light_builder.rbs +0 -23
- data/sig/_private/stoplight/system/light_factory.rbs +0 -17
- data/sig/_private/stoplight/types.rbs +0 -6
- data/sig/_private/stoplight/wiring/configuration_dsl.rbs +0 -43
- data/sig/_private/stoplight/wiring/default.rbs +0 -26
- data/sig/_private/stoplight/wiring/default_configuration.rbs +0 -29
- data/sig/_private/stoplight/wiring/light_builder.rbs +0 -48
- data/sig/_private/stoplight/wiring/light_factory.rbs +0 -16
- data/sig/_private/stoplight/wiring/notifier_factory.rbs +0 -10
- data/sig/_private/stoplight/wiring/system.rbs +0 -15
- data/sig/_private/stoplight.rbs +0 -48
- data/sig/stoplight/data_store.rbs +0 -19
- data/sig/stoplight/ports/configuration.rbs +0 -19
- data/sig/stoplight/ports/exception_matcher.rbs +0 -8
- data/sig/stoplight/ports/light.rbs +0 -12
- data/sig/stoplight/ports/light_info.rbs +0 -5
- data/sig/stoplight/ports/state_transition_notifier.rbs +0 -15
- /data/sig/{_private/stoplight → stoplight}/common/deprecations.rbs +0 -0
- /data/sig/{_private/stoplight → stoplight}/domain/compatibility_result.rbs +0 -0
- /data/sig/{_private/stoplight → stoplight}/domain/metrics_snapshot.rbs +0 -0
- /data/sig/{_private/stoplight → stoplight}/domain/ports/recovery_lock_store.rbs +0 -0
- /data/sig/{_private/stoplight → stoplight}/domain/ports/recovery_lock_token.rbs +0 -0
- /data/sig/{_private/stoplight → stoplight}/domain/ports/state_store.rbs +0 -0
- /data/sig/{_private/stoplight → stoplight}/domain/state_snapshot.rbs +0 -0
- /data/sig/{_private/stoplight → stoplight}/domain/storage/recovery_lock_token.rbs +0 -0
- /data/sig/{_private/stoplight → stoplight}/domain/traffic_recovery.rbs +0 -0
- /data/sig/{_private → stoplight}/generators/stoplight/install/install_generator.rbs +0 -0
- /data/sig/{_private/stoplight → stoplight}/infrastructure/fail_safe/storage/recovery_lock_token.rbs +0 -0
- /data/sig/{_private/stoplight → stoplight}/infrastructure/memory/storage/recovery_lock.rbs +0 -0
- /data/sig/{_private/stoplight → stoplight}/infrastructure/memory/storage/recovery_metrics.rbs +0 -0
- /data/sig/{_private/stoplight → stoplight}/infrastructure/redis/storage/metrics.rbs +0 -0
- /data/sig/{_private/stoplight → stoplight}/infrastructure/redis/storage/recovery_metrics.rbs +0 -0
- /data/sig/{_private/stoplight → stoplight}/infrastructure/system_clock.rbs +0 -0
- /data/sig/{_private/stoplight → stoplight}/wiring/data_store_backend.rbs +0 -0
- /data/sig/{_private/stoplight → stoplight}/wiring/default_config.rbs +0 -0
- /data/sig/{_private/stoplight → stoplight}/wiring/memory/backend.rbs +0 -0
- /data/sig/{_private/stoplight → stoplight}/wiring/storage_set.rbs +0 -0
- /data/sig/{_private/stoplight → stoplight}/wiring/storage_set_builder.rbs +0 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
module Stoplight
|
|
2
|
+
module Wiring
|
|
3
|
+
class GlobalState
|
|
4
|
+
DEFAULT_SYSTEM_NAME: String
|
|
5
|
+
|
|
6
|
+
@default_config: Domain::Config
|
|
7
|
+
@default_system: Wiring::System
|
|
8
|
+
@systems: Concurrent::Map[String, Wiring::System]
|
|
9
|
+
|
|
10
|
+
attr_reader default_config: Domain::Config
|
|
11
|
+
attr_reader default_system: Wiring::System
|
|
12
|
+
|
|
13
|
+
def initialize: (default_config: Domain::Config) -> void
|
|
14
|
+
def register_system: (
|
|
15
|
+
_ToS name,
|
|
16
|
+
?cool_off_time: optional[Domain::duration_seconds],
|
|
17
|
+
?threshold: optional[Domain::percentage | Integer],
|
|
18
|
+
?recovery_threshold: optional[Integer],
|
|
19
|
+
?window_size: optional[Domain::duration_seconds?],
|
|
20
|
+
?tracked_errors: optional[Array[Module]],
|
|
21
|
+
?skipped_errors: optional[Array[Module]],
|
|
22
|
+
?data_store: optional[Domain::_DataStore],
|
|
23
|
+
?error_notifier: optional[Domain::error_notifier],
|
|
24
|
+
?notifiers: optional[Array[Domain::_StateTransitionNotifier]],
|
|
25
|
+
?traffic_control: optional[Wiring::traffic_control],
|
|
26
|
+
?traffic_recovery: optional[Wiring::traffic_recovery],
|
|
27
|
+
) -> Wiring::System
|
|
28
|
+
|
|
29
|
+
private
|
|
30
|
+
|
|
31
|
+
def register_system_with_config: (Domain::Config) -> Wiring::System
|
|
32
|
+
|
|
33
|
+
def create_registry: (Domain::Config, Wiring::System) -> Domain::_Registry
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
module Stoplight
|
|
2
|
+
module Wiring
|
|
3
|
+
class LightConfigurationDsl
|
|
4
|
+
@id: String
|
|
5
|
+
|
|
6
|
+
def initialize: (
|
|
7
|
+
name: _ToS,
|
|
8
|
+
?cool_off_time: optional[Domain::duration_seconds],
|
|
9
|
+
?threshold: optional[Domain::percentage | Integer],
|
|
10
|
+
?recovery_threshold: optional[Integer],
|
|
11
|
+
?window_size: optional[Domain::duration_seconds?],
|
|
12
|
+
?tracked_errors: optional[Array[Module] | Module],
|
|
13
|
+
?skipped_errors: optional[Array[Module] | Module],
|
|
14
|
+
?traffic_control: optional[traffic_control],
|
|
15
|
+
?traffic_recovery: optional[traffic_recovery],
|
|
16
|
+
) -> void
|
|
17
|
+
|
|
18
|
+
def configure!: (Domain::Config default_config) -> Domain::Config
|
|
19
|
+
|
|
20
|
+
attr_reader digest: Integer
|
|
21
|
+
|
|
22
|
+
private
|
|
23
|
+
|
|
24
|
+
attr_reader name: String
|
|
25
|
+
attr_reader cool_off_time: optional[Domain::duration_seconds]
|
|
26
|
+
attr_reader threshold: optional[Domain::percentage | Integer]
|
|
27
|
+
attr_reader recovery_threshold: optional[Integer]
|
|
28
|
+
attr_reader window_size: optional[Domain::duration_seconds?]
|
|
29
|
+
attr_reader tracked_errors: optional[Array[Module]]
|
|
30
|
+
attr_reader skipped_errors: optional[Array[Module]]
|
|
31
|
+
attr_reader traffic_control: optional[Domain::_TrafficControl]
|
|
32
|
+
attr_reader traffic_recovery: optional[Domain::_TrafficRecovery]
|
|
33
|
+
|
|
34
|
+
def calculate_digest: -> Integer
|
|
35
|
+
def errors_for_digest: (optional[Array[Module]]) -> optional[Array[String]]
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
module Stoplight
|
|
2
|
+
module Wiring
|
|
3
|
+
# Factory protocol for building +Stoplight::Light+ instances.
|
|
4
|
+
#
|
|
5
|
+
# This defines the interface that any Light factory must implement,
|
|
6
|
+
# regardless of the underlying implementation details.
|
|
7
|
+
#
|
|
8
|
+
# This uses the Abstract Factory pattern to decouple the domain (Light)
|
|
9
|
+
# from the application layer (concrete factory implementation). Light
|
|
10
|
+
# doesn't know HOW it's built, only that it needs something that can
|
|
11
|
+
# build variants of itself.
|
|
12
|
+
#
|
|
13
|
+
# By defining this interface in the domain layer:
|
|
14
|
+
# - Light can request reconfiguration without knowing about containers
|
|
15
|
+
# - Different factory implementations can be swapped (code, database-configured, etc.)
|
|
16
|
+
# - Dependency direction is preserved (Application → Domain, not Domain → Application)
|
|
17
|
+
#
|
|
18
|
+
class LightFactory
|
|
19
|
+
attr_reader data_store_config: Domain::_DataStore
|
|
20
|
+
attr_reader error_notifier: Domain::error_notifier
|
|
21
|
+
attr_reader clock: Domain::_Clock
|
|
22
|
+
|
|
23
|
+
attr_reader traffic_recovery: Domain::_TrafficRecovery
|
|
24
|
+
attr_reader traffic_control: Domain::_TrafficControl
|
|
25
|
+
attr_reader config: Domain::Config
|
|
26
|
+
attr_reader system_name: String
|
|
27
|
+
|
|
28
|
+
@system_id: String
|
|
29
|
+
@name: String
|
|
30
|
+
@cool_off_time: Domain::duration_seconds
|
|
31
|
+
@error_tracking_policy: Domain::ErrorTrackingPolicy
|
|
32
|
+
@emitter: Domain::Telemetry::Emitter
|
|
33
|
+
@failover_system: _System?
|
|
34
|
+
@storage_set: StorageSet
|
|
35
|
+
@key_space: Infrastructure::Redis::Key
|
|
36
|
+
|
|
37
|
+
def initialize: (
|
|
38
|
+
system_id: String,
|
|
39
|
+
config: Domain::Config,
|
|
40
|
+
system_name: String,
|
|
41
|
+
failover_system: _System?,
|
|
42
|
+
telemetry: Domain::_TelemetryPublisher
|
|
43
|
+
) -> void
|
|
44
|
+
|
|
45
|
+
def lock_control: -> Domain::LockControl
|
|
46
|
+
def storage_set: -> StorageSet
|
|
47
|
+
def key_space: -> Infrastructure::Redis::Key
|
|
48
|
+
def state_store: -> Domain::_StateStore
|
|
49
|
+
|
|
50
|
+
def metrics_store: -> Domain::_MetricsStore
|
|
51
|
+
def recovery_lock_store: -> Domain::_RecoveryLockStore
|
|
52
|
+
def request_tracker: -> Domain::Tracker::Request
|
|
53
|
+
def recovery_probe_tracker: -> Domain::Tracker::RecoveryProbe
|
|
54
|
+
def recovery_metrics_store: -> Domain::_MetricsStore
|
|
55
|
+
|
|
56
|
+
def green_run_strategy: -> Domain::Strategies::GreenRunStrategy
|
|
57
|
+
def yellow_run_strategy: -> Domain::Strategies::YellowRunStrategy
|
|
58
|
+
def red_run_strategy: -> Domain::Strategies::RedRunStrategy
|
|
59
|
+
def run_recorder: (Domain::color) -> Domain::Telemetry::RunRecorder
|
|
60
|
+
def telemetry_settings: -> Domain::Telemetry::Settings
|
|
61
|
+
def redis: -> Infrastructure::redis
|
|
62
|
+
def storage_scripting: -> Infrastructure::Redis::Storage::Scripting
|
|
63
|
+
def failover_system: -> _System
|
|
64
|
+
def build_backend: -> DataStoreBackend
|
|
65
|
+
|
|
66
|
+
# Builds a Light instance with the current configuration.
|
|
67
|
+
#
|
|
68
|
+
# This method must construct a fully-wired Light with all required
|
|
69
|
+
# dependencies (strategies, data store, notifiers, etc.). The Light
|
|
70
|
+
# should be ready to use immediately after construction.
|
|
71
|
+
#
|
|
72
|
+
# @raise [Stoplight::Error::ConfigurationError] If configuration is invalid
|
|
73
|
+
def build: -> Domain::Light
|
|
74
|
+
|
|
75
|
+
def create_circuit_breaker: (String) -> Domain::Light
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module Stoplight
|
|
2
|
+
module Wiring
|
|
3
|
+
class NotifierBridge
|
|
4
|
+
@notifiers: Array[Domain::_StateTransitionNotifier]
|
|
5
|
+
|
|
6
|
+
def initialize: (notifiers: Array[Domain::_StateTransitionNotifier]) -> void
|
|
7
|
+
|
|
8
|
+
def subscribe: (Domain::_Telemetry) -> void
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
|
|
12
|
+
def notify: (Domain::Telemetry::Envelope[Domain::Telemetry::state_transitioned], error: StandardError?) -> void
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -2,11 +2,11 @@ module Stoplight
|
|
|
2
2
|
module Wiring
|
|
3
3
|
module Redis
|
|
4
4
|
class Backend < DataStoreBackend
|
|
5
|
-
@redis: redis
|
|
5
|
+
@redis: Infrastructure::redis
|
|
6
6
|
@scripting: Infrastructure::Redis::Storage::Scripting
|
|
7
|
-
@key_space: Infrastructure::Redis::
|
|
7
|
+
@key_space: Infrastructure::Redis::Key
|
|
8
8
|
@config: Domain::Config
|
|
9
|
-
@error_notifier: error_notifier
|
|
9
|
+
@error_notifier: Domain::error_notifier
|
|
10
10
|
@failover_light: Domain::Light
|
|
11
11
|
@clock: Domain::_Clock
|
|
12
12
|
|
|
@@ -18,11 +18,11 @@ module Stoplight
|
|
|
18
18
|
@unbounded_metrics_store: Infrastructure::FailSafe::Storage::Metrics
|
|
19
19
|
|
|
20
20
|
def initialize: (
|
|
21
|
-
redis: redis,
|
|
21
|
+
redis: Infrastructure::redis,
|
|
22
22
|
scripting: Infrastructure::Redis::Storage::Scripting,
|
|
23
|
-
key_space: Infrastructure::Redis::
|
|
23
|
+
key_space: Infrastructure::Redis::Key,
|
|
24
24
|
config: Domain::Config,
|
|
25
|
-
error_notifier: error_notifier,
|
|
25
|
+
error_notifier: Domain::error_notifier,
|
|
26
26
|
failover_light: Domain::Light,
|
|
27
27
|
clock: Domain::_Clock,
|
|
28
28
|
) -> void
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
module Stoplight
|
|
2
|
+
module Wiring
|
|
3
|
+
class System
|
|
4
|
+
class Storage
|
|
5
|
+
@system_id: String
|
|
6
|
+
@system_name: String
|
|
7
|
+
@failover_system: _System
|
|
8
|
+
@factories: Hash[Domain::Config, LightFactory]
|
|
9
|
+
@telemetry: Domain::_TelemetryPublisher
|
|
10
|
+
|
|
11
|
+
def initialize: (
|
|
12
|
+
system_id: String,
|
|
13
|
+
system_name: String,
|
|
14
|
+
failover_system: _System,
|
|
15
|
+
telemetry: Domain::_TelemetryPublisher
|
|
16
|
+
) -> void
|
|
17
|
+
|
|
18
|
+
def state_snapshot: (Domain::Config) -> Domain::StateSnapshot
|
|
19
|
+
def recovery_metrics_snapshot: (Domain::Config) -> Domain::MetricsSnapshot
|
|
20
|
+
def metrics_snapshot: (Domain::Config) -> Domain::MetricsSnapshot
|
|
21
|
+
def delete: (Domain::Config) -> void
|
|
22
|
+
def lock: (Domain::Config, Domain::color) -> void
|
|
23
|
+
def unlock: (Domain::Config) -> void
|
|
24
|
+
|
|
25
|
+
private
|
|
26
|
+
|
|
27
|
+
def state_store: (Domain::Config) -> Domain::_StateStore
|
|
28
|
+
def recovery_metrics_store: (Domain::Config) -> Domain::_MetricsStore
|
|
29
|
+
def metrics_store: (Domain::Config) -> Domain::_MetricsStore
|
|
30
|
+
def lock_control: (Domain::Config) -> Domain::LockControl
|
|
31
|
+
def light_factory: (Domain::Config) -> LightFactory
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
module Stoplight
|
|
2
|
+
module Wiring
|
|
3
|
+
class System
|
|
4
|
+
include _System
|
|
5
|
+
|
|
6
|
+
@name: String
|
|
7
|
+
REGISTRATION_FRAME_LIMIT: Integer
|
|
8
|
+
|
|
9
|
+
@lights: Concurrent::Map[String, [Domain::Light, Integer, Array[String]]]
|
|
10
|
+
@failover_system: _System?
|
|
11
|
+
@registry: Domain::_Registry
|
|
12
|
+
@telemetry: Domain::Telemetry::Bus
|
|
13
|
+
@config: Domain::Config
|
|
14
|
+
|
|
15
|
+
def initialize: (
|
|
16
|
+
config: Domain::Config,
|
|
17
|
+
failover_system: _System?,
|
|
18
|
+
registry: Domain::_Registry,
|
|
19
|
+
) -> void
|
|
20
|
+
|
|
21
|
+
def persistent?: -> bool
|
|
22
|
+
def __stoplight__storage: -> Storage
|
|
23
|
+
def __stoplight__registry: -> Domain::_Registry
|
|
24
|
+
|
|
25
|
+
private
|
|
26
|
+
|
|
27
|
+
def wrapped_notifiers: -> Array[Domain::_StateTransitionNotifier]
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
module Stoplight
|
|
2
|
+
module Wiring
|
|
3
|
+
class SystemConfigurationDsl
|
|
4
|
+
@id: String
|
|
5
|
+
|
|
6
|
+
def initialize: (
|
|
7
|
+
_ToS name,
|
|
8
|
+
?cool_off_time: optional[Domain::duration_seconds],
|
|
9
|
+
?threshold: optional[Domain::percentage | Integer],
|
|
10
|
+
?recovery_threshold: optional[Integer],
|
|
11
|
+
?window_size: optional[Domain::duration_seconds?],
|
|
12
|
+
?tracked_errors: optional[Array[Module] | Module],
|
|
13
|
+
?skipped_errors: optional[Array[Module] | Module],
|
|
14
|
+
?data_store: optional[Domain::_DataStore],
|
|
15
|
+
?error_notifier: optional[Domain::error_notifier],
|
|
16
|
+
?notifiers: optional[Array[Domain::_StateTransitionNotifier]],
|
|
17
|
+
?traffic_control: optional[traffic_control],
|
|
18
|
+
?traffic_recovery: optional[traffic_recovery],
|
|
19
|
+
) -> void
|
|
20
|
+
|
|
21
|
+
def configure!: (Domain::Config default_config) -> Domain::Config
|
|
22
|
+
|
|
23
|
+
private
|
|
24
|
+
|
|
25
|
+
attr_reader name: String
|
|
26
|
+
attr_reader cool_off_time: optional[Domain::duration_seconds]
|
|
27
|
+
attr_reader threshold: optional[Domain::percentage | Integer]
|
|
28
|
+
attr_reader recovery_threshold: optional[Integer]
|
|
29
|
+
attr_reader window_size: optional[Domain::duration_seconds?]
|
|
30
|
+
attr_reader data_store: optional[Domain::_DataStore]
|
|
31
|
+
attr_reader error_notifier: optional[Domain::error_notifier]
|
|
32
|
+
attr_reader notifiers: optional[Array[Domain::_StateTransitionNotifier]]
|
|
33
|
+
attr_reader tracked_errors: optional[Array[Module]]
|
|
34
|
+
attr_reader skipped_errors: optional[Array[Module]]
|
|
35
|
+
attr_reader traffic_control: optional[Domain::_TrafficControl]
|
|
36
|
+
attr_reader traffic_recovery: optional[Domain::_TrafficRecovery]
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
data/sig/stoplight.rbs
CHANGED
|
@@ -1,66 +1,49 @@
|
|
|
1
1
|
module Stoplight
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
type notification_formatter = ^(Domain::Config light, color, color, StandardError?) -> String
|
|
2
|
+
extend _System
|
|
3
|
+
|
|
4
|
+
T: singleton(Types)
|
|
5
|
+
CONFIG_MUTEX: Mutex
|
|
6
|
+
|
|
7
|
+
self.@state: Wiring::GlobalState?
|
|
8
|
+
def self.warn_if_reconfiguring: (bool) { () -> void } -> void
|
|
9
|
+
def self.configured?: -> bool
|
|
10
|
+
def self.__stoplight__reset!: -> void
|
|
11
|
+
def self.ensure_configured: -> void
|
|
12
|
+
def self.register_system: (
|
|
13
|
+
_ToS name,
|
|
14
|
+
?cool_off_time: optional[Domain::duration_seconds],
|
|
15
|
+
?threshold: optional[Domain::percentage | Integer],
|
|
16
|
+
?recovery_threshold: optional[Integer],
|
|
17
|
+
?window_size: optional[Domain::duration_seconds?],
|
|
18
|
+
?tracked_errors: optional[Array[Module]],
|
|
19
|
+
?skipped_errors: optional[Array[Module]],
|
|
20
|
+
?data_store: optional[Domain::_DataStore],
|
|
21
|
+
?error_notifier: optional[Domain::error_notifier],
|
|
22
|
+
?notifiers: optional[Array[Domain::_StateTransitionNotifier]],
|
|
23
|
+
?traffic_control: optional[Wiring::traffic_control],
|
|
24
|
+
?traffic_recovery: optional[Wiring::traffic_recovery],
|
|
25
|
+
) -> _System
|
|
26
|
+
def self.__stoplight__default_configuration: -> Domain::Config
|
|
27
|
+
def self.__stoplight__default_system: -> Wiring::System
|
|
28
|
+
def self.state: -> Wiring::GlobalState
|
|
30
29
|
|
|
31
|
-
|
|
30
|
+
type optional[T] = Undefined | T
|
|
32
31
|
|
|
33
|
-
def self.
|
|
34
|
-
String name,
|
|
35
|
-
?cool_off_time: optional[duration],
|
|
36
|
-
?threshold: optional[percentage | Integer],
|
|
37
|
-
?recovery_threshold: optional[Integer],
|
|
38
|
-
?window_size: optional[duration?],
|
|
39
|
-
?tracked_errors: optional[Array[_ExceptionMatcher] | _ExceptionMatcher],
|
|
40
|
-
?skipped_errors: optional[Array[_ExceptionMatcher] | _ExceptionMatcher],
|
|
41
|
-
?data_store: optional[data_store],
|
|
42
|
-
?error_notifier: optional[error_notifier],
|
|
43
|
-
?notifiers: optional[Array[state_transition_notifier]],
|
|
44
|
-
?traffic_control: optional[traffic_control],
|
|
45
|
-
?traffic_recovery: optional[traffic_recovery],
|
|
46
|
-
) -> _Light
|
|
32
|
+
def self.configure: (?trust_me_im_an_engineer: bool) ?{ (Wiring::DefaultConfiguration) -> void } -> void
|
|
47
33
|
end
|
|
48
34
|
|
|
49
35
|
module Kernel
|
|
50
36
|
# For a method usable both as Kernel.Stoplight() and just Stoplight()
|
|
51
37
|
def self?.Stoplight: (
|
|
52
38
|
String name,
|
|
53
|
-
?cool_off_time: Stoplight::optional[Stoplight::
|
|
54
|
-
?threshold: Stoplight::optional[Stoplight::percentage | Integer],
|
|
39
|
+
?cool_off_time: Stoplight::optional[Stoplight::Domain::duration_seconds],
|
|
40
|
+
?threshold: Stoplight::optional[Stoplight::Domain::percentage | Integer],
|
|
55
41
|
?recovery_threshold: Stoplight::optional[Integer],
|
|
56
|
-
?window_size: Stoplight::optional[Stoplight::
|
|
57
|
-
?tracked_errors: Stoplight::optional[Array[
|
|
58
|
-
?skipped_errors: Stoplight::optional[Array[
|
|
59
|
-
?
|
|
60
|
-
?
|
|
61
|
-
|
|
62
|
-
?traffic_control: Stoplight::optional[Stoplight::traffic_control],
|
|
63
|
-
?traffic_recovery: Stoplight::optional[Stoplight::traffic_recovery],
|
|
64
|
-
) -> Stoplight::_Light
|
|
42
|
+
?window_size: Stoplight::optional[Stoplight::Domain::duration_seconds?],
|
|
43
|
+
?tracked_errors: Stoplight::optional[Array[Module] | Module],
|
|
44
|
+
?skipped_errors: Stoplight::optional[Array[Module] | Module],
|
|
45
|
+
?traffic_control: Stoplight::optional[Stoplight::Wiring::traffic_control],
|
|
46
|
+
?traffic_recovery: Stoplight::optional[Stoplight::Wiring::traffic_recovery],
|
|
47
|
+
) -> Stoplight::Domain::Light
|
|
65
48
|
end
|
|
66
49
|
|