-module(protocol@target). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([encode__target_id/1, decode__target_id/1, encode__session_id/1, decode__session_id/1, encode__target_info/1, decode__target_info/1, decode__attach_to_target_response/1, decode__create_browser_context_response/1, decode__get_browser_contexts_response/1, decode__create_target_response/1, decode__get_targets_response/1, activate_target/2, attach_to_target/3, close_target/2, create_browser_context/1, get_browser_contexts/1, create_target/6, detach_from_target/2, dispose_browser_context/2, get_targets/1, set_auto_attach/3, set_discover_targets/2]). -export_type([target_id/0, session_id/0, target_info/0, attach_to_target_response/0, create_browser_context_response/0, get_browser_contexts_response/0, create_target_response/0, get_targets_response/0]). -type target_id() :: {target_id, binary()}. -type session_id() :: {session_id, binary()}. -type target_info() :: {target_info, target_id(), binary(), binary(), binary(), boolean(), gleam@option:option(target_id())}. -type attach_to_target_response() :: {attach_to_target_response, session_id()}. -type create_browser_context_response() :: {create_browser_context_response, binary()}. -type get_browser_contexts_response() :: {get_browser_contexts_response, list(binary())}. -type create_target_response() :: {create_target_response, target_id()}. -type get_targets_response() :: {get_targets_response, list(target_info())}. -spec encode__target_id(target_id()) -> gleam@json:json(). encode__target_id(Value__) -> case Value__ of {target_id, Inner_value__} -> gleam@json:string(Inner_value__) end. -spec decode__target_id(gleam@dynamic:dynamic_()) -> {ok, target_id()} | {error, list(gleam@dynamic:decode_error())}. decode__target_id(Value__) -> _pipe = Value__, (gleam@dynamic:decode1( fun(Field@0) -> {target_id, Field@0} end, fun gleam@dynamic:string/1 ))(_pipe). -spec encode__session_id(session_id()) -> gleam@json:json(). encode__session_id(Value__) -> case Value__ of {session_id, Inner_value__} -> gleam@json:string(Inner_value__) end. -spec decode__session_id(gleam@dynamic:dynamic_()) -> {ok, session_id()} | {error, list(gleam@dynamic:decode_error())}. decode__session_id(Value__) -> _pipe = Value__, (gleam@dynamic:decode1( fun(Field@0) -> {session_id, Field@0} end, fun gleam@dynamic:string/1 ))(_pipe). -spec encode__target_info(target_info()) -> gleam@json:json(). encode__target_info(Value__) -> gleam@json:object( begin _pipe = [{<<"targetId"/utf8>>, encode__target_id(erlang:element(2, Value__))}, {<<"type"/utf8>>, gleam@json:string(erlang:element(3, Value__))}, {<<"title"/utf8>>, gleam@json:string(erlang:element(4, Value__))}, {<<"url"/utf8>>, gleam@json:string(erlang:element(5, Value__))}, {<<"attached"/utf8>>, gleam@json:bool(erlang:element(6, Value__))}], chrobot@internal@utils:add_optional( _pipe, erlang:element(7, Value__), fun(Inner_value__) -> {<<"openerId"/utf8>>, encode__target_id(Inner_value__)} end ) end ). -spec decode__target_info(gleam@dynamic:dynamic_()) -> {ok, target_info()} | {error, list(gleam@dynamic:decode_error())}. decode__target_info(Value__) -> gleam@result:'try'( (gleam@dynamic:field(<<"targetId"/utf8>>, fun decode__target_id/1))( Value__ ), fun(Target_id) -> gleam@result:'try'( (gleam@dynamic:field( <<"type"/utf8>>, fun gleam@dynamic:string/1 ))(Value__), fun(Type_) -> gleam@result:'try'( (gleam@dynamic:field( <<"title"/utf8>>, fun gleam@dynamic:string/1 ))(Value__), fun(Title) -> gleam@result:'try'( (gleam@dynamic:field( <<"url"/utf8>>, fun gleam@dynamic:string/1 ))(Value__), fun(Url) -> gleam@result:'try'( (gleam@dynamic:field( <<"attached"/utf8>>, fun gleam@dynamic:bool/1 ))(Value__), fun(Attached) -> gleam@result:'try'( (gleam@dynamic:optional_field( <<"openerId"/utf8>>, fun decode__target_id/1 ))(Value__), fun(Opener_id) -> {ok, {target_info, Target_id, Type_, Title, Url, Attached, Opener_id}} end ) end ) end ) end ) end ) end ). -spec decode__attach_to_target_response(gleam@dynamic:dynamic_()) -> {ok, attach_to_target_response()} | {error, list(gleam@dynamic:decode_error())}. decode__attach_to_target_response(Value__) -> gleam@result:'try'( (gleam@dynamic:field(<<"sessionId"/utf8>>, fun decode__session_id/1))( Value__ ), fun(Session_id) -> {ok, {attach_to_target_response, Session_id}} end ). -spec decode__create_browser_context_response(gleam@dynamic:dynamic_()) -> {ok, create_browser_context_response()} | {error, list(gleam@dynamic:decode_error())}. decode__create_browser_context_response(Value__) -> gleam@result:'try'( (gleam@dynamic:field( <<"browserContextId"/utf8>>, fun gleam@dynamic:string/1 ))(Value__), fun(Browser_context_id) -> {ok, {create_browser_context_response, Browser_context_id}} end ). -spec decode__get_browser_contexts_response(gleam@dynamic:dynamic_()) -> {ok, get_browser_contexts_response()} | {error, list(gleam@dynamic:decode_error())}. decode__get_browser_contexts_response(Value__) -> gleam@result:'try'( (gleam@dynamic:field( <<"browserContextIds"/utf8>>, gleam@dynamic:list(fun gleam@dynamic:string/1) ))(Value__), fun(Browser_context_ids) -> {ok, {get_browser_contexts_response, Browser_context_ids}} end ). -spec decode__create_target_response(gleam@dynamic:dynamic_()) -> {ok, create_target_response()} | {error, list(gleam@dynamic:decode_error())}. decode__create_target_response(Value__) -> gleam@result:'try'( (gleam@dynamic:field(<<"targetId"/utf8>>, fun decode__target_id/1))( Value__ ), fun(Target_id) -> {ok, {create_target_response, Target_id}} end ). -spec decode__get_targets_response(gleam@dynamic:dynamic_()) -> {ok, get_targets_response()} | {error, list(gleam@dynamic:decode_error())}. decode__get_targets_response(Value__) -> gleam@result:'try'( (gleam@dynamic:field( <<"targetInfos"/utf8>>, gleam@dynamic:list(fun decode__target_info/1) ))(Value__), fun(Target_infos) -> {ok, {get_targets_response, Target_infos}} end ). -spec activate_target( fun((binary(), gleam@option:option(gleam@json:json())) -> AISV), target_id() ) -> AISV. activate_target(Callback__, Target_id) -> Callback__( <<"Target.activateTarget"/utf8>>, {some, gleam@json:object( [{<<"targetId"/utf8>>, encode__target_id(Target_id)}] )} ). -spec attach_to_target( fun((binary(), gleam@option:option(gleam@json:json())) -> {ok, gleam@dynamic:dynamic_()} | {error, chrome:request_error()}), target_id(), gleam@option:option(boolean()) ) -> {ok, attach_to_target_response()} | {error, chrome:request_error()}. attach_to_target(Callback__, Target_id, Flatten) -> gleam@result:'try'( Callback__( <<"Target.attachToTarget"/utf8>>, {some, gleam@json:object( begin _pipe = [{<<"targetId"/utf8>>, encode__target_id(Target_id)}], chrobot@internal@utils:add_optional( _pipe, Flatten, fun(Inner_value__) -> {<<"flatten"/utf8>>, gleam@json:bool(Inner_value__)} end ) end )} ), fun(Result__) -> _pipe@1 = decode__attach_to_target_response(Result__), gleam@result:replace_error(_pipe@1, protocol_error) end ). -spec close_target( fun((binary(), gleam@option:option(gleam@json:json())) -> AITO), target_id() ) -> AITO. close_target(Callback__, Target_id) -> Callback__( <<"Target.closeTarget"/utf8>>, {some, gleam@json:object( [{<<"targetId"/utf8>>, encode__target_id(Target_id)}] )} ). -spec create_browser_context( fun((binary(), gleam@option:option(any())) -> {ok, gleam@dynamic:dynamic_()} | {error, chrome:request_error()}) ) -> {ok, create_browser_context_response()} | {error, chrome:request_error()}. create_browser_context(Callback__) -> gleam@result:'try'( Callback__(<<"Target.createBrowserContext"/utf8>>, none), fun(Result__) -> _pipe = decode__create_browser_context_response(Result__), gleam@result:replace_error(_pipe, protocol_error) end ). -spec get_browser_contexts( fun((binary(), gleam@option:option(any())) -> {ok, gleam@dynamic:dynamic_()} | {error, chrome:request_error()}) ) -> {ok, get_browser_contexts_response()} | {error, chrome:request_error()}. get_browser_contexts(Callback__) -> gleam@result:'try'( Callback__(<<"Target.getBrowserContexts"/utf8>>, none), fun(Result__) -> _pipe = decode__get_browser_contexts_response(Result__), gleam@result:replace_error(_pipe, protocol_error) end ). -spec create_target( fun((binary(), gleam@option:option(gleam@json:json())) -> {ok, gleam@dynamic:dynamic_()} | {error, chrome:request_error()}), binary(), gleam@option:option(integer()), gleam@option:option(integer()), gleam@option:option(boolean()), gleam@option:option(boolean()) ) -> {ok, create_target_response()} | {error, chrome:request_error()}. create_target(Callback__, Url, Width, Height, New_window, Background) -> gleam@result:'try'( Callback__( <<"Target.createTarget"/utf8>>, {some, gleam@json:object( begin _pipe = [{<<"url"/utf8>>, gleam@json:string(Url)}], _pipe@1 = chrobot@internal@utils:add_optional( _pipe, Width, fun(Inner_value__) -> {<<"width"/utf8>>, gleam@json:int(Inner_value__)} end ), _pipe@2 = chrobot@internal@utils:add_optional( _pipe@1, Height, fun(Inner_value__@1) -> {<<"height"/utf8>>, gleam@json:int(Inner_value__@1)} end ), _pipe@3 = chrobot@internal@utils:add_optional( _pipe@2, New_window, fun(Inner_value__@2) -> {<<"newWindow"/utf8>>, gleam@json:bool(Inner_value__@2)} end ), chrobot@internal@utils:add_optional( _pipe@3, Background, fun(Inner_value__@3) -> {<<"background"/utf8>>, gleam@json:bool(Inner_value__@3)} end ) end )} ), fun(Result__) -> _pipe@4 = decode__create_target_response(Result__), gleam@result:replace_error(_pipe@4, protocol_error) end ). -spec detach_from_target( fun((binary(), gleam@option:option(gleam@json:json())) -> AIVJ), gleam@option:option(session_id()) ) -> AIVJ. detach_from_target(Callback__, Session_id) -> Callback__( <<"Target.detachFromTarget"/utf8>>, {some, gleam@json:object( begin _pipe = [], chrobot@internal@utils:add_optional( _pipe, Session_id, fun(Inner_value__) -> {<<"sessionId"/utf8>>, encode__session_id(Inner_value__)} end ) end )} ). -spec dispose_browser_context( fun((binary(), gleam@option:option(gleam@json:json())) -> AIVQ), binary() ) -> AIVQ. dispose_browser_context(Callback__, Browser_context_id) -> Callback__( <<"Target.disposeBrowserContext"/utf8>>, {some, gleam@json:object( [{<<"browserContextId"/utf8>>, gleam@json:string(Browser_context_id)}] )} ). -spec get_targets( fun((binary(), gleam@option:option(any())) -> {ok, gleam@dynamic:dynamic_()} | {error, chrome:request_error()}) ) -> {ok, get_targets_response()} | {error, chrome:request_error()}. get_targets(Callback__) -> gleam@result:'try'( Callback__(<<"Target.getTargets"/utf8>>, none), fun(Result__) -> _pipe = decode__get_targets_response(Result__), gleam@result:replace_error(_pipe, protocol_error) end ). -spec set_auto_attach( fun((binary(), gleam@option:option(gleam@json:json())) -> AIWG), boolean(), boolean() ) -> AIWG. set_auto_attach(Callback__, Auto_attach, Wait_for_debugger_on_start) -> Callback__( <<"Target.setAutoAttach"/utf8>>, {some, gleam@json:object( [{<<"autoAttach"/utf8>>, gleam@json:bool(Auto_attach)}, {<<"waitForDebuggerOnStart"/utf8>>, gleam@json:bool(Wait_for_debugger_on_start)}] )} ). -spec set_discover_targets( fun((binary(), gleam@option:option(gleam@json:json())) -> AIWL), boolean() ) -> AIWL. set_discover_targets(Callback__, Discover) -> Callback__( <<"Target.setDiscoverTargets"/utf8>>, {some, gleam@json:object( [{<<"discover"/utf8>>, gleam@json:bool(Discover)}] )} ).