-module(protocol@performance). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([encode__metric/1, decode__metric/1, decode__get_metrics_response/1, disable/1, encode__enable_time_domain/1, enable/2, decode__enable_time_domain/1, get_metrics/1]). -export_type([metric/0, get_metrics_response/0, enable_time_domain/0]). -type metric() :: {metric, binary(), float()}. -type get_metrics_response() :: {get_metrics_response, list(metric())}. -type enable_time_domain() :: enable_time_domain_time_ticks | enable_time_domain_thread_ticks. -spec encode__metric(metric()) -> gleam@json:json(). encode__metric(Value__) -> gleam@json:object( [{<<"name"/utf8>>, gleam@json:string(erlang:element(2, Value__))}, {<<"value"/utf8>>, gleam@json:float(erlang:element(3, Value__))}] ). -spec decode__metric(gleam@dynamic:dynamic_()) -> {ok, metric()} | {error, list(gleam@dynamic:decode_error())}. decode__metric(Value__) -> gleam@result:'try'( (gleam@dynamic:field(<<"name"/utf8>>, fun gleam@dynamic:string/1))( Value__ ), fun(Name) -> gleam@result:'try'( (gleam@dynamic:field( <<"value"/utf8>>, fun gleam@dynamic:float/1 ))(Value__), fun(Value) -> {ok, {metric, Name, Value}} end ) end ). -spec decode__get_metrics_response(gleam@dynamic:dynamic_()) -> {ok, get_metrics_response()} | {error, list(gleam@dynamic:decode_error())}. decode__get_metrics_response(Value__) -> gleam@result:'try'( (gleam@dynamic:field( <<"metrics"/utf8>>, gleam@dynamic:list(fun decode__metric/1) ))(Value__), fun(Metrics) -> {ok, {get_metrics_response, Metrics}} end ). -spec disable(fun((binary(), gleam@option:option(any())) -> AFRW)) -> AFRW. disable(Callback__) -> Callback__(<<"Performance.disable"/utf8>>, none). -spec encode__enable_time_domain(enable_time_domain()) -> gleam@json:json(). encode__enable_time_domain(Value__) -> _pipe = case Value__ of enable_time_domain_time_ticks -> <<"timeTicks"/utf8>>; enable_time_domain_thread_ticks -> <<"threadTicks"/utf8>> end, gleam@json:string(_pipe). -spec enable( fun((binary(), gleam@option:option(gleam@json:json())) -> AFSB), gleam@option:option(enable_time_domain()) ) -> AFSB. enable(Callback__, Time_domain) -> Callback__( <<"Performance.enable"/utf8>>, {some, gleam@json:object( begin _pipe = [], chrobot@internal@utils:add_optional( _pipe, Time_domain, fun(Inner_value__) -> {<<"timeDomain"/utf8>>, encode__enable_time_domain(Inner_value__)} end ) end )} ). -spec decode__enable_time_domain(gleam@dynamic:dynamic_()) -> {ok, enable_time_domain()} | {error, list(gleam@dynamic:decode_error())}. decode__enable_time_domain(Value__) -> case gleam@dynamic:string(Value__) of {ok, <<"timeTicks"/utf8>>} -> {ok, enable_time_domain_time_ticks}; {ok, <<"threadTicks"/utf8>>} -> {ok, enable_time_domain_thread_ticks}; {error, Error} -> {error, Error}; {ok, Other} -> {error, [{decode_error, <<"valid enum property"/utf8>>, Other, [<<"enum decoder"/utf8>>]}]} end. -spec get_metrics( fun((binary(), gleam@option:option(any())) -> {ok, gleam@dynamic:dynamic_()} | {error, chrome:request_error()}) ) -> {ok, get_metrics_response()} | {error, chrome:request_error()}. get_metrics(Callback__) -> gleam@result:'try'( Callback__(<<"Performance.getMetrics"/utf8>>, none), fun(Result__) -> _pipe = decode__get_metrics_response(Result__), gleam@result:replace_error(_pipe, protocol_error) end ).