-module(stytch_codecs). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/stytch_codecs.gleam"). -export([stytch_client_error_to_json/1, stytch_client_error_decoder/0, magic_link_login_or_create_request_to_json/1, magic_link_login_or_create_request_decoder/0, passcode_login_or_create_request_to_json/1, passcode_login_or_create_request_decoder/0, login_or_create_response_to_json/1, login_or_create_response_decoder/0, token_authenticate_request_to_json/1, token_authenticate_request_decoder/0, passcode_authenticate_request_to_json/1, passcode_authenticate_request_decoder/0, session_token_authenticate_request_to_json/1, session_token_authenticate_request_decoder/0, authenticate_response_to_json/1, authenticate_response_decoder/0, session_revoke_request_to_json/1, session_revoke_request_decoder/0, session_revoke_response_to_json/1, session_revoke_response_decoder/0, name_to_json/1, name_decoder/0, email_to_json/1, stytch_user_to_json/1, session_authenticate_response_to_json/1, email_decoder/0, stytch_user_decoder/0, session_authenticate_response_decoder/0]). -export_type([stytch_client_error/0, magic_link_login_or_create_request/0, passcode_login_or_create_request/0, login_or_create_response/0, token_authenticate_request/0, passcode_authenticate_request/0, session_token_authenticate_request/0, authenticate_response/0, session_authenticate_response/0, session_revoke_request/0, session_revoke_response/0, stytch_user/0, name/0, email/0]). -type stytch_client_error() :: {stytch_client_error, integer(), binary(), binary(), binary(), binary()}. -type magic_link_login_or_create_request() :: {magic_link_login_or_create_request, binary()}. -type passcode_login_or_create_request() :: {passcode_login_or_create_request, binary()}. -type login_or_create_response() :: {login_or_create_response, integer(), binary(), binary(), binary()}. -type token_authenticate_request() :: {token_authenticate_request, binary(), integer()}. -type passcode_authenticate_request() :: {passcode_authenticate_request, binary(), binary(), integer()}. -type session_token_authenticate_request() :: {session_token_authenticate_request, binary(), integer()}. -type authenticate_response() :: {authenticate_response, integer(), binary(), binary(), binary(), binary(), binary()}. -type session_authenticate_response() :: {session_authenticate_response, integer(), binary(), stytch_user(), binary(), binary()}. -type session_revoke_request() :: {session_revoke_request, binary()}. -type session_revoke_response() :: {session_revoke_response, binary(), integer()}. -type stytch_user() :: {stytch_user, binary(), name(), list(email())}. -type name() :: {name, binary(), binary(), binary()}. -type email() :: {email, binary(), binary(), boolean()}. -file("src/stytch_codecs.gleam", 15). -spec stytch_client_error_to_json(stytch_client_error()) -> gleam@json:json(). stytch_client_error_to_json(Stytch_client_error) -> {stytch_client_error, Status_code, Request_id, Error_type, Error_message, Error_url} = Stytch_client_error, gleam@json:object( [{<<"status_code"/utf8>>, gleam@json:int(Status_code)}, {<<"request_id"/utf8>>, gleam@json:string(Request_id)}, {<<"error_type"/utf8>>, gleam@json:string(Error_type)}, {<<"error_message"/utf8>>, gleam@json:string(Error_message)}, {<<"error_url"/utf8>>, gleam@json:string(Error_url)}] ). -file("src/stytch_codecs.gleam", 34). -spec stytch_client_error_decoder() -> gleam@dynamic@decode:decoder(stytch_client_error()). stytch_client_error_decoder() -> gleam@dynamic@decode:field( <<"status_code"/utf8>>, {decoder, fun gleam@dynamic@decode:decode_int/1}, fun(Status_code) -> gleam@dynamic@decode:field( <<"request_id"/utf8>>, {decoder, fun gleam@dynamic@decode:decode_string/1}, fun(Request_id) -> gleam@dynamic@decode:field( <<"error_type"/utf8>>, {decoder, fun gleam@dynamic@decode:decode_string/1}, fun(Error_type) -> gleam@dynamic@decode:field( <<"error_message"/utf8>>, {decoder, fun gleam@dynamic@decode:decode_string/1}, fun(Error_message) -> gleam@dynamic@decode:field( <<"error_url"/utf8>>, {decoder, fun gleam@dynamic@decode:decode_string/1}, fun(Error_url) -> gleam@dynamic@decode:success( {stytch_client_error, Status_code, Request_id, Error_type, Error_message, Error_url} ) end ) end ) end ) end ) end ). -file("src/stytch_codecs.gleam", 57). -spec magic_link_login_or_create_request_to_json( magic_link_login_or_create_request() ) -> gleam@json:json(). magic_link_login_or_create_request_to_json(Magic_link_login_or_create_request) -> {magic_link_login_or_create_request, Email} = Magic_link_login_or_create_request, gleam@json:object([{<<"email"/utf8>>, gleam@json:string(Email)}]). -file("src/stytch_codecs.gleam", 66). -spec magic_link_login_or_create_request_decoder() -> gleam@dynamic@decode:decoder(magic_link_login_or_create_request()). magic_link_login_or_create_request_decoder() -> gleam@dynamic@decode:field( <<"email"/utf8>>, {decoder, fun gleam@dynamic@decode:decode_string/1}, fun(Email) -> gleam@dynamic@decode:success( {magic_link_login_or_create_request, Email} ) end ). -file("src/stytch_codecs.gleam", 81). -spec passcode_login_or_create_request_to_json( passcode_login_or_create_request() ) -> gleam@json:json(). passcode_login_or_create_request_to_json(Passcode_login_or_create_request) -> {passcode_login_or_create_request, Email} = Passcode_login_or_create_request, gleam@json:object([{<<"email"/utf8>>, gleam@json:string(Email)}]). -file("src/stytch_codecs.gleam", 90). -spec passcode_login_or_create_request_decoder() -> gleam@dynamic@decode:decoder(passcode_login_or_create_request()). passcode_login_or_create_request_decoder() -> gleam@dynamic@decode:field( <<"email"/utf8>>, {decoder, fun gleam@dynamic@decode:decode_string/1}, fun(Email) -> gleam@dynamic@decode:success( {passcode_login_or_create_request, Email} ) end ). -file("src/stytch_codecs.gleam", 110). -spec login_or_create_response_to_json(login_or_create_response()) -> gleam@json:json(). login_or_create_response_to_json(Magic_link_login_or_create_response) -> {login_or_create_response, Status_code, Request_id, User_id, Email_id} = Magic_link_login_or_create_response, gleam@json:object( [{<<"status_code"/utf8>>, gleam@json:int(Status_code)}, {<<"request_id"/utf8>>, gleam@json:string(Request_id)}, {<<"user_id"/utf8>>, gleam@json:string(User_id)}, {<<"email_id"/utf8>>, gleam@json:string(Email_id)}] ). -file("src/stytch_codecs.gleam", 123). -spec login_or_create_response_decoder() -> gleam@dynamic@decode:decoder(login_or_create_response()). login_or_create_response_decoder() -> gleam@dynamic@decode:field( <<"status_code"/utf8>>, {decoder, fun gleam@dynamic@decode:decode_int/1}, fun(Status_code) -> gleam@dynamic@decode:field( <<"request_id"/utf8>>, {decoder, fun gleam@dynamic@decode:decode_string/1}, fun(Request_id) -> gleam@dynamic@decode:field( <<"user_id"/utf8>>, {decoder, fun gleam@dynamic@decode:decode_string/1}, fun(User_id) -> gleam@dynamic@decode:field( <<"email_id"/utf8>>, {decoder, fun gleam@dynamic@decode:decode_string/1}, fun(Email_id) -> gleam@dynamic@decode:success( {login_or_create_response, Status_code, Request_id, User_id, Email_id} ) end ) end ) end ) end ). -file("src/stytch_codecs.gleam", 144). -spec token_authenticate_request_to_json(token_authenticate_request()) -> gleam@json:json(). token_authenticate_request_to_json(Token_authenticate_request) -> {token_authenticate_request, Token, Session_duration_minutes} = Token_authenticate_request, gleam@json:object( [{<<"token"/utf8>>, gleam@json:string(Token)}, {<<"session_duration_minutes"/utf8>>, gleam@json:int(Session_duration_minutes)}] ). -file("src/stytch_codecs.gleam", 155). -spec token_authenticate_request_decoder() -> gleam@dynamic@decode:decoder(token_authenticate_request()). token_authenticate_request_decoder() -> gleam@dynamic@decode:field( <<"token"/utf8>>, {decoder, fun gleam@dynamic@decode:decode_string/1}, fun(Token) -> gleam@dynamic@decode:field( <<"session_duration_minutes"/utf8>>, {decoder, fun gleam@dynamic@decode:decode_int/1}, fun(Session_duration_minutes) -> gleam@dynamic@decode:success( {token_authenticate_request, Token, Session_duration_minutes} ) end ) end ). -file("src/stytch_codecs.gleam", 175). -spec passcode_authenticate_request_to_json(passcode_authenticate_request()) -> gleam@json:json(). passcode_authenticate_request_to_json(Passcode_authenticate_request) -> {passcode_authenticate_request, Code, Method_id, Session_duration_minutes} = Passcode_authenticate_request, gleam@json:object( [{<<"code"/utf8>>, gleam@json:string(Code)}, {<<"method_id"/utf8>>, gleam@json:string(Method_id)}, {<<"session_duration_minutes"/utf8>>, gleam@json:int(Session_duration_minutes)}] ). -file("src/stytch_codecs.gleam", 187). -spec passcode_authenticate_request_decoder() -> gleam@dynamic@decode:decoder(passcode_authenticate_request()). passcode_authenticate_request_decoder() -> gleam@dynamic@decode:field( <<"code"/utf8>>, {decoder, fun gleam@dynamic@decode:decode_string/1}, fun(Code) -> gleam@dynamic@decode:field( <<"method_id"/utf8>>, {decoder, fun gleam@dynamic@decode:decode_string/1}, fun(Method_id) -> gleam@dynamic@decode:field( <<"session_duration_minutes"/utf8>>, {decoder, fun gleam@dynamic@decode:decode_int/1}, fun(Session_duration_minutes) -> gleam@dynamic@decode:success( {passcode_authenticate_request, Code, Method_id, Session_duration_minutes} ) end ) end ) end ). -file("src/stytch_codecs.gleam", 211). -spec session_token_authenticate_request_to_json( session_token_authenticate_request() ) -> gleam@json:json(). session_token_authenticate_request_to_json(Session_token_authenticate_request) -> {session_token_authenticate_request, Session_token, Session_duration_minutes} = Session_token_authenticate_request, gleam@json:object( [{<<"session_token"/utf8>>, gleam@json:string(Session_token)}, {<<"session_duration_minutes"/utf8>>, gleam@json:int(Session_duration_minutes)}] ). -file("src/stytch_codecs.gleam", 222). -spec session_token_authenticate_request_decoder() -> gleam@dynamic@decode:decoder(session_token_authenticate_request()). session_token_authenticate_request_decoder() -> gleam@dynamic@decode:field( <<"session_token"/utf8>>, {decoder, fun gleam@dynamic@decode:decode_string/1}, fun(Session_token) -> gleam@dynamic@decode:field( <<"session_duration_minutes"/utf8>>, {decoder, fun gleam@dynamic@decode:decode_int/1}, fun(Session_duration_minutes) -> gleam@dynamic@decode:success( {session_token_authenticate_request, Session_token, Session_duration_minutes} ) end ) end ). -file("src/stytch_codecs.gleam", 249). -spec authenticate_response_to_json(authenticate_response()) -> gleam@json:json(). authenticate_response_to_json(Magic_link_authenticate_response) -> {authenticate_response, Status_code, Request_id, User_id, Method_id, Session_token, Session_jwt} = Magic_link_authenticate_response, gleam@json:object( [{<<"status_code"/utf8>>, gleam@json:int(Status_code)}, {<<"request_id"/utf8>>, gleam@json:string(Request_id)}, {<<"user_id"/utf8>>, gleam@json:string(User_id)}, {<<"method_id"/utf8>>, gleam@json:string(Method_id)}, {<<"session_token"/utf8>>, gleam@json:string(Session_token)}, {<<"session_jwt"/utf8>>, gleam@json:string(Session_jwt)}] ). -file("src/stytch_codecs.gleam", 270). -spec authenticate_response_decoder() -> gleam@dynamic@decode:decoder(authenticate_response()). authenticate_response_decoder() -> gleam@dynamic@decode:field( <<"status_code"/utf8>>, {decoder, fun gleam@dynamic@decode:decode_int/1}, fun(Status_code) -> gleam@dynamic@decode:field( <<"request_id"/utf8>>, {decoder, fun gleam@dynamic@decode:decode_string/1}, fun(Request_id) -> gleam@dynamic@decode:field( <<"user_id"/utf8>>, {decoder, fun gleam@dynamic@decode:decode_string/1}, fun(User_id) -> gleam@dynamic@decode:field( <<"method_id"/utf8>>, {decoder, fun gleam@dynamic@decode:decode_string/1}, fun(Method_id) -> gleam@dynamic@decode:field( <<"session_token"/utf8>>, {decoder, fun gleam@dynamic@decode:decode_string/1}, fun(Session_token) -> gleam@dynamic@decode:field( <<"session_jwt"/utf8>>, {decoder, fun gleam@dynamic@decode:decode_string/1}, fun(Session_jwt) -> gleam@dynamic@decode:success( {authenticate_response, Status_code, Request_id, User_id, Method_id, Session_token, Session_jwt} ) end ) end ) end ) end ) end ) end ). -file("src/stytch_codecs.gleam", 342). -spec session_revoke_request_to_json(session_revoke_request()) -> gleam@json:json(). session_revoke_request_to_json(Session_revoke_request) -> {session_revoke_request, Session_token} = Session_revoke_request, gleam@json:object( [{<<"session_token"/utf8>>, gleam@json:string(Session_token)}] ). -file("src/stytch_codecs.gleam", 351). -spec session_revoke_request_decoder() -> gleam@dynamic@decode:decoder(session_revoke_request()). session_revoke_request_decoder() -> gleam@dynamic@decode:field( <<"session_token"/utf8>>, {decoder, fun gleam@dynamic@decode:decode_string/1}, fun(Session_token) -> gleam@dynamic@decode:success( {session_revoke_request, Session_token} ) end ). -file("src/stytch_codecs.gleam", 362). -spec session_revoke_response_to_json(session_revoke_response()) -> gleam@json:json(). session_revoke_response_to_json(Session_revoke_response) -> {session_revoke_response, Request_id, Status_code} = Session_revoke_response, gleam@json:object( [{<<"request_id"/utf8>>, gleam@json:string(Request_id)}, {<<"status_code"/utf8>>, gleam@json:int(Status_code)}] ). -file("src/stytch_codecs.gleam", 372). -spec session_revoke_response_decoder() -> gleam@dynamic@decode:decoder(session_revoke_response()). session_revoke_response_decoder() -> gleam@dynamic@decode:field( <<"request_id"/utf8>>, {decoder, fun gleam@dynamic@decode:decode_string/1}, fun(Request_id) -> gleam@dynamic@decode:field( <<"status_code"/utf8>>, {decoder, fun gleam@dynamic@decode:decode_int/1}, fun(Status_code) -> gleam@dynamic@decode:success( {session_revoke_response, Request_id, Status_code} ) end ) end ). -file("src/stytch_codecs.gleam", 407). -spec name_to_json(name()) -> gleam@json:json(). name_to_json(Name) -> {name, First_name, Middle_name, Last_name} = Name, gleam@json:object( [{<<"first_name"/utf8>>, gleam@json:string(First_name)}, {<<"middle_name"/utf8>>, gleam@json:string(Middle_name)}, {<<"last_name"/utf8>>, gleam@json:string(Last_name)}] ). -file("src/stytch_codecs.gleam", 416). -spec name_decoder() -> gleam@dynamic@decode:decoder(name()). name_decoder() -> gleam@dynamic@decode:field( <<"first_name"/utf8>>, {decoder, fun gleam@dynamic@decode:decode_string/1}, fun(First_name) -> gleam@dynamic@decode:field( <<"middle_name"/utf8>>, {decoder, fun gleam@dynamic@decode:decode_string/1}, fun(Middle_name) -> gleam@dynamic@decode:field( <<"last_name"/utf8>>, {decoder, fun gleam@dynamic@decode:decode_string/1}, fun(Last_name) -> gleam@dynamic@decode:success( {name, First_name, Middle_name, Last_name} ) end ) end ) end ). -file("src/stytch_codecs.gleam", 431). -spec email_to_json(email()) -> gleam@json:json(). email_to_json(Email) -> {email, Email_id, Email@1, Verified} = Email, gleam@json:object( [{<<"email_id"/utf8>>, gleam@json:string(Email_id)}, {<<"email"/utf8>>, gleam@json:string(Email@1)}, {<<"verified"/utf8>>, gleam@json:bool(Verified)}] ). -file("src/stytch_codecs.gleam", 385). -spec stytch_user_to_json(stytch_user()) -> gleam@json:json(). stytch_user_to_json(Stytch_user) -> {stytch_user, User_id, Name, Emails} = Stytch_user, gleam@json:object( [{<<"user_id"/utf8>>, gleam@json:string(User_id)}, {<<"name"/utf8>>, name_to_json(Name)}, {<<"emails"/utf8>>, gleam@json:array(Emails, fun email_to_json/1)}] ). -file("src/stytch_codecs.gleam", 298). -spec session_authenticate_response_to_json(session_authenticate_response()) -> gleam@json:json(). session_authenticate_response_to_json(Session_authenticate_response) -> {session_authenticate_response, Status_code, Request_id, User, Session_token, Session_jwt} = Session_authenticate_response, gleam@json:object( [{<<"status_code"/utf8>>, gleam@json:int(Status_code)}, {<<"request_id"/utf8>>, gleam@json:string(Request_id)}, {<<"user"/utf8>>, stytch_user_to_json(User)}, {<<"session_token"/utf8>>, gleam@json:string(Session_token)}, {<<"session_jwt"/utf8>>, gleam@json:string(Session_jwt)}] ). -file("src/stytch_codecs.gleam", 440). -spec email_decoder() -> gleam@dynamic@decode:decoder(email()). email_decoder() -> gleam@dynamic@decode:field( <<"email_id"/utf8>>, {decoder, fun gleam@dynamic@decode:decode_string/1}, fun(Email_id) -> gleam@dynamic@decode:field( <<"email"/utf8>>, {decoder, fun gleam@dynamic@decode:decode_string/1}, fun(Email) -> gleam@dynamic@decode:field( <<"verified"/utf8>>, {decoder, fun gleam@dynamic@decode:decode_bool/1}, fun(Verified) -> gleam@dynamic@decode:success( {email, Email_id, Email, Verified} ) end ) end ) end ). -file("src/stytch_codecs.gleam", 394). -spec stytch_user_decoder() -> gleam@dynamic@decode:decoder(stytch_user()). stytch_user_decoder() -> gleam@dynamic@decode:field( <<"user_id"/utf8>>, {decoder, fun gleam@dynamic@decode:decode_string/1}, fun(User_id) -> gleam@dynamic@decode:field( <<"name"/utf8>>, name_decoder(), fun(Name) -> gleam@dynamic@decode:field( <<"emails"/utf8>>, gleam@dynamic@decode:list(email_decoder()), fun(Emails) -> gleam@dynamic@decode:success( {stytch_user, User_id, Name, Emails} ) end ) end ) end ). -file("src/stytch_codecs.gleam", 317). -spec session_authenticate_response_decoder() -> gleam@dynamic@decode:decoder(session_authenticate_response()). session_authenticate_response_decoder() -> gleam@dynamic@decode:field( <<"status_code"/utf8>>, {decoder, fun gleam@dynamic@decode:decode_int/1}, fun(Status_code) -> gleam@dynamic@decode:field( <<"request_id"/utf8>>, {decoder, fun gleam@dynamic@decode:decode_string/1}, fun(Request_id) -> gleam@dynamic@decode:field( <<"user"/utf8>>, stytch_user_decoder(), fun(User) -> gleam@dynamic@decode:field( <<"session_token"/utf8>>, {decoder, fun gleam@dynamic@decode:decode_string/1}, fun(Session_token) -> gleam@dynamic@decode:field( <<"session_jwt"/utf8>>, {decoder, fun gleam@dynamic@decode:decode_string/1}, fun(Session_jwt) -> gleam@dynamic@decode:success( {session_authenticate_response, Status_code, Request_id, User, Session_token, Session_jwt} ) end ) end ) end ) end ) end ).