Packages
caffeine_lang
6.2.2
6.3.1
6.3.0
6.2.2
6.2.1
6.2.0
6.1.2
6.1.1
6.1.0
6.0.0
5.6.0
5.5.0
5.4.4
5.4.3
5.4.2
5.4.1
5.4.0
5.3.0
5.2.0
5.1.1
5.1.0
5.0.12
5.0.11
5.0.10
5.0.8
5.0.7
5.0.6
5.0.5
5.0.4
5.0.1
5.0.0
4.10.0
4.9.0
4.8.3
4.8.2
4.8.1
4.8.0
4.7.9
4.7.8
4.7.7
4.7.6
4.7.5
4.6.7
4.6.6
4.6.5
4.6.4
4.6.3
4.6.2
4.6.0
4.5.1
4.5.0
4.4.4
4.4.3
4.4.1
4.4.0
4.3.7
4.3.6
3.0.6
3.0.5
3.0.4
3.0.3
3.0.2
3.0.1
3.0.0
2.0.5
2.0.4
2.0.3
2.0.2
2.0.1
2.0.0
1.0.2
1.0.1
0.1.0
0.0.24
0.0.23
0.0.22
0.0.21
0.0.20
0.0.19
0.0.18
0.0.17
0.0.16
0.0.15
0.0.14
0.0.13
0.0.12
0.0.11
0.0.10
0.0.9
0.0.8
0.0.7
0.0.6
0.0.5
0.0.4
0.0.2
0.0.1
A compiler for generating reliability artifacts from service expectation definitions.
Current section
Files
Jump to
Current section
Files
src/caffeine_lang@linker@ir.erl
-module(caffeine_lang@linker@ir).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/caffeine_lang/linker/ir.gleam").
-export([promote/1, ir_to_identifier/1, map_slo/2, literal_indicators_from/1]).
-export_type([linked/0, deps_validated/0, resolved/0, indicator_source/0, external_value_extraction/0, slo_fields/0, intermediate_representation/1, intermediate_representation_meta_data/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 linked() :: any().
-type deps_validated() :: any().
-type resolved() :: any().
-type indicator_source() :: {literal_query, binary()} |
{external_signal,
binary(),
gleam@dict:dict(binary(), caffeine_lang@value:value()),
gleam@option:option(external_value_extraction())}.
-type external_value_extraction() :: {external_value_extraction,
binary(),
caffeine_lang@types:accepted_types()}.
-type slo_fields() :: {slo_fields,
float(),
gleam@dict:dict(binary(), indicator_source()),
integer(),
gleam@option:option(binary()),
list({binary(), binary()}),
gleam@option:option(binary()),
gleam@option:option(gleam@dict:dict(caffeine_lang@linker@dependency:dependency_relation_type(), list(binary()))),
gleam@option:option(binary()),
gleam@option:option(float()),
gleam@option:option(caffeine_lang@frontend@ast:expectation_type())}.
-type intermediate_representation(HLM) :: {intermediate_representation,
intermediate_representation_meta_data(),
binary(),
list(caffeine_lang@helpers:value_tuple()),
slo_fields(),
gleam@option:option(caffeine_lang@analysis@vendor:vendor())} |
{gleam_phantom, HLM}.
-type intermediate_representation_meta_data() :: {intermediate_representation_meta_data,
caffeine_lang@identifiers:expectation_label(),
caffeine_lang@identifiers:org_name(),
caffeine_lang@identifiers:service_name(),
caffeine_lang@identifiers:measurement_name(),
caffeine_lang@identifiers:team_name(),
gleam@dict:dict(binary(), list(binary()))}.
-file("src/caffeine_lang/linker/ir.gleam", 113).
?DOC(false).
-spec promote(intermediate_representation(any())) -> intermediate_representation(any()).
promote(Ir) ->
{intermediate_representation,
erlang:element(2, Ir),
erlang:element(3, Ir),
erlang:element(4, Ir),
erlang:element(5, Ir),
erlang:element(6, Ir)}.
-file("src/caffeine_lang/linker/ir.gleam", 127).
?DOC(false).
-spec ir_to_identifier(intermediate_representation(any())) -> binary().
ir_to_identifier(Ir) ->
<<<<<<<<<<<<(erlang:element(2, erlang:element(3, erlang:element(2, Ir))))/binary,
"."/utf8>>/binary,
(erlang:element(
2,
erlang:element(6, erlang:element(2, Ir))
))/binary>>/binary,
"."/utf8>>/binary,
(erlang:element(2, erlang:element(4, erlang:element(2, Ir))))/binary>>/binary,
"."/utf8>>/binary,
(erlang:element(2, erlang:element(2, erlang:element(2, Ir))))/binary>>.
-file("src/caffeine_lang/linker/ir.gleam", 139).
?DOC(false).
-spec map_slo(
intermediate_representation(HLT),
fun((slo_fields()) -> slo_fields())
) -> intermediate_representation(HLT).
map_slo(Ir, Updater) ->
{intermediate_representation,
erlang:element(2, Ir),
erlang:element(3, Ir),
erlang:element(4, Ir),
Updater(erlang:element(5, Ir)),
erlang:element(6, Ir)}.
-file("src/caffeine_lang/linker/ir.gleam", 152).
?DOC(false).
-spec literal_indicators_from(list({binary(), binary()})) -> gleam@dict:dict(binary(), indicator_source()).
literal_indicators_from(Pairs) ->
_pipe = Pairs,
_pipe@1 = gleam@list:map(
_pipe,
fun(P) ->
{erlang:element(1, P), {literal_query, erlang:element(2, P)}}
end
),
maps:from_list(_pipe@1).