-module(caffeine_lang@common@errors). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/caffeine_lang/common/errors.gleam"). -export([format_decode_error_message/2, format_json_decode_error_to_string/1, format_json_decode_error/1]). -export_type([compilation_error/0]). -if(?OTP_RELEASE >= 27). -define(MODULEDOC(Str), -moduledoc(Str)). -define(DOC(Str), -doc(Str)). -else. -define(MODULEDOC(Str), -compile([])). -define(DOC(Str), -compile([])). -endif. -type compilation_error() :: {frontend_parse_error, binary()} | {frontend_validation_error, binary()} | {parser_file_read_error, binary()} | {parser_json_parser_error, binary()} | {parser_duplicate_error, binary()} | {linker_parse_error, binary()} | {linker_semantic_error, binary()} | {semantic_analysis_vendor_resolution_error, binary()} | {semantic_analysis_template_parse_error, binary()} | {semantic_analysis_template_resolution_error, binary()} | {semantic_analysis_dependency_validation_error, binary()} | {generator_slo_query_resolution_error, binary()} | {generator_datadog_terraform_resolution_error, binary()} | {c_q_l_resolver_error, binary()} | {c_q_l_parser_error, binary()} | {c_q_l_generator_error, binary()}. -file("src/caffeine_lang/common/errors.gleam", 58). ?DOC(" Normalizes type names across targets (JS uses \"Array\", Erlang uses \"List\").\n"). -spec normalize_type_name(binary()) -> binary(). normalize_type_name(Name) -> case Name of <<"Array"/utf8>> -> <<"List"/utf8>>; Other -> Other end. -file("src/caffeine_lang/common/errors.gleam", 67). ?DOC(false). -spec format_decode_error_message( list(gleam@dynamic@decode:decode_error()), gleam@option:option(binary()) ) -> binary(). format_decode_error_message(Errors, Type_key_identifier) -> _pipe = Errors, _pipe@4 = gleam@list:map( _pipe, fun(Error) -> <<<<<<<<<<<<"expected ("/utf8, (erlang:element(2, Error))/binary>>/binary, ") received ("/utf8>>/binary, (normalize_type_name(erlang:element(3, Error)))/binary>>/binary, ") for ("/utf8>>/binary, ((case {begin _pipe@1 = erlang:element(4, Error), gleam@string:join(_pipe@1, <<"."/utf8>>) end, Type_key_identifier} of {<<""/utf8>>, none} -> <<"Unknown"/utf8>>; {_, none} -> _pipe@2 = erlang:element(4, Error), gleam@string:join(_pipe@2, <<"."/utf8>>); {<<""/utf8>>, {some, Val}} -> Val; {_, _} -> _pipe@3 = erlang:element(4, Error), gleam@string:join(_pipe@3, <<"."/utf8>>) end))/binary>>/binary, ")"/utf8>> end ), gleam@string:join(_pipe@4, <<", "/utf8>>). -file("src/caffeine_lang/common/errors.gleam", 45). ?DOC(false). -spec format_json_decode_error_to_string(gleam@json:decode_error()) -> binary(). format_json_decode_error_to_string(Error) -> case Error of unexpected_end_of_input -> <<"Unexpected end of input."/utf8>>; {unexpected_byte, Val} -> <<<<"Unexpected byte: "/utf8, Val/binary>>/binary, "."/utf8>>; {unexpected_sequence, Val@1} -> <<<<"Unexpected sequence: "/utf8, Val@1/binary>>/binary, "."/utf8>>; {unable_to_decode, Suberrors} -> <<"Incorrect types: "/utf8, (begin _pipe = Suberrors, format_decode_error_message(_pipe, none) end)/binary>> end. -file("src/caffeine_lang/common/errors.gleam", 37). ?DOC(false). -spec format_json_decode_error(gleam@json:decode_error()) -> compilation_error(). format_json_decode_error(Error) -> Msg = format_json_decode_error_to_string(Error), {parser_json_parser_error, Msg}.