-module(lightspeed@component@template_ergonomics). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/lightspeed/component/template_ergonomics.gleam"). -export([attr_alias/3, slot_default/2, slot_default_html/2, ergonomic_schema/3, routine_schema/5, string_attr/2, int_attr/2, bool_attr/2, slot/2, slot_html/2, optional_string/3, optional_int/3, optional_bool/3, required_slot_html/2, slot_html_or_empty/2, compile/3, diagnostic_label/1, diagnostics_signature/1, signature/1, html/1, fingerprint/1, compiled_template/1, applied_aliases/1, applied_slot_defaults/1]). -export_type([attr_alias/0, slot_default/0, ergonomic_schema/2, diagnostic/0, compiled/2]). -if(?OTP_RELEASE >= 27). -define(MODULEDOC(Str), -moduledoc(Str)). -define(DOC(Str), -doc(Str)). -else. -define(MODULEDOC(Str), -compile([])). -define(DOC(Str), -compile([])). -endif. ?MODULEDOC(" Template ergonomics helpers and migration-hint diagnostics for M39.\n"). -type attr_alias() :: {attr_alias, binary(), binary(), binary()}. -type slot_default() :: {slot_default, binary(), lightspeed@component:rendered()}. -type ergonomic_schema(IZJ, IZK) :: {ergonomic_schema, lightspeed@component@template_compiler:schema(IZJ, IZK), list(attr_alias()), list(slot_default())}. -type diagnostic() :: {diagnostic, binary(), binary(), binary()}. -type compiled(IZL, IZM) :: {compiled, lightspeed@component@template_compiler:compiled_template(IZL, IZM), list({binary(), binary()}), list(binary()), binary()}. -file("src/lightspeed/component/template_ergonomics.gleam", 44). ?DOC(" Build one attr alias.\n"). -spec attr_alias(binary(), binary(), binary()) -> attr_alias(). attr_alias(Alias, Canonical, Migration_hint) -> {attr_alias, Alias, Canonical, Migration_hint}. -file("src/lightspeed/component/template_ergonomics.gleam", 53). ?DOC(" Build one slot default from rendered content.\n"). -spec slot_default(binary(), lightspeed@component:rendered()) -> slot_default(). slot_default(Name, Rendered) -> {slot_default, Name, Rendered}. -file("src/lightspeed/component/template_ergonomics.gleam", 58). ?DOC(" Build one slot default from raw HTML.\n"). -spec slot_default_html(binary(), binary()) -> slot_default(). slot_default_html(Name, Html) -> {slot_default, Name, lightspeed@component:html(Html)}. -file("src/lightspeed/component/template_ergonomics.gleam", 63). ?DOC(" Build ergonomic schema wrapper.\n"). -spec ergonomic_schema( lightspeed@component@template_compiler:schema(IZN, IZO), list(attr_alias()), list(slot_default()) ) -> ergonomic_schema(IZN, IZO). ergonomic_schema(Schema, Attr_aliases, Slot_defaults) -> {ergonomic_schema, Schema, Attr_aliases, Slot_defaults}. -file("src/lightspeed/component/template_ergonomics.gleam", 76). ?DOC(" Build one routine schema that uses automatic slot passthrough.\n"). -spec routine_schema( binary(), list(lightspeed@component@template_compiler:attr_schema()), list(lightspeed@component@template_compiler:slot_schema()), fun((list({binary(), lightspeed@component@template_compiler:attr_value()})) -> {ok, IZY} | {error, binary()}), fun((IZY, list({binary(), lightspeed@component:rendered()})) -> lightspeed@component:rendered()) ) -> lightspeed@component@template_compiler:schema(IZY, list({binary(), lightspeed@component:rendered()})). routine_schema(Name, Attrs, Slots, Build_assigns, Render) -> lightspeed@component@template_compiler:schema( Name, Attrs, Slots, Build_assigns, fun(Value) -> {ok, Value} end, lightspeed@component@template:function( fun(Assigns, Slots@1) -> Render(Assigns, Slots@1) end ) ). -file("src/lightspeed/component/template_ergonomics.gleam", 95). ?DOC(" Convenience constructor for string attr input.\n"). -spec string_attr(binary(), binary()) -> {binary(), lightspeed@component@template_compiler:attr_value()}. string_attr(Name, Value) -> {Name, {string_attr, Value}}. -file("src/lightspeed/component/template_ergonomics.gleam", 103). ?DOC(" Convenience constructor for int attr input.\n"). -spec int_attr(binary(), integer()) -> {binary(), lightspeed@component@template_compiler:attr_value()}. int_attr(Name, Value) -> {Name, {int_attr, Value}}. -file("src/lightspeed/component/template_ergonomics.gleam", 111). ?DOC(" Convenience constructor for bool attr input.\n"). -spec bool_attr(binary(), boolean()) -> {binary(), lightspeed@component@template_compiler:attr_value()}. bool_attr(Name, Value) -> {Name, {bool_attr, Value}}. -file("src/lightspeed/component/template_ergonomics.gleam", 119). ?DOC(" Convenience constructor for slot input.\n"). -spec slot(binary(), lightspeed@component:rendered()) -> {binary(), lightspeed@component:rendered()}. slot(Name, Rendered) -> {Name, Rendered}. -file("src/lightspeed/component/template_ergonomics.gleam", 127). ?DOC(" Convenience constructor for slot input from raw HTML.\n"). -spec slot_html(binary(), binary()) -> {binary(), lightspeed@component:rendered()}. slot_html(Name, Html) -> {Name, lightspeed@component:html(Html)}. -file("src/lightspeed/component/template_ergonomics.gleam", 648). -spec value_kind_label(lightspeed@component@template_compiler:attr_value()) -> binary(). value_kind_label(Value) -> case Value of {string_attr, _} -> <<"string"/utf8>>; {int_attr, _} -> <<"int"/utf8>>; {bool_attr, _} -> <<"bool"/utf8>> end. -file("src/lightspeed/component/template_ergonomics.gleam", 587). -spec find_attr( list({binary(), lightspeed@component@template_compiler:attr_value()}), binary() ) -> gleam@option:option(lightspeed@component@template_compiler:attr_value()). find_attr(Attrs, Name) -> case Attrs of [] -> none; [{Entry_name, Entry_value} | Rest] -> case Entry_name =:= Name of true -> {some, Entry_value}; false -> find_attr(Rest, Name) end end. -file("src/lightspeed/component/template_ergonomics.gleam", 132). ?DOC(" Optional string accessor with fallback default.\n"). -spec optional_string( list({binary(), lightspeed@component@template_compiler:attr_value()}), binary(), binary() ) -> {ok, binary()} | {error, binary()}. optional_string(Attrs, Name, Default) -> case find_attr(Attrs, Name) of none -> {ok, Default}; {some, {string_attr, Value}} -> {ok, Value}; {some, Other} -> {error, <<<<<<"invalid_attr_type:"/utf8, Name/binary>>/binary, ":expected=string:actual="/utf8>>/binary, (value_kind_label(Other))/binary>>} end. -file("src/lightspeed/component/template_ergonomics.gleam", 151). ?DOC(" Optional int accessor with fallback default.\n"). -spec optional_int( list({binary(), lightspeed@component@template_compiler:attr_value()}), binary(), integer() ) -> {ok, integer()} | {error, binary()}. optional_int(Attrs, Name, Default) -> case find_attr(Attrs, Name) of none -> {ok, Default}; {some, {int_attr, Value}} -> {ok, Value}; {some, Other} -> {error, <<<<<<"invalid_attr_type:"/utf8, Name/binary>>/binary, ":expected=int:actual="/utf8>>/binary, (value_kind_label(Other))/binary>>} end. -file("src/lightspeed/component/template_ergonomics.gleam", 170). ?DOC(" Optional bool accessor with fallback default.\n"). -spec optional_bool( list({binary(), lightspeed@component@template_compiler:attr_value()}), binary(), boolean() ) -> {ok, boolean()} | {error, binary()}. optional_bool(Attrs, Name, Default) -> case find_attr(Attrs, Name) of none -> {ok, Default}; {some, {bool_attr, Value}} -> {ok, Value}; {some, Other} -> {error, <<<<<<"invalid_attr_type:"/utf8, Name/binary>>/binary, ":expected=bool:actual="/utf8>>/binary, (value_kind_label(Other))/binary>>} end. -file("src/lightspeed/component/template_ergonomics.gleam", 189). ?DOC(" Return one required slot HTML as string.\n"). -spec required_slot_html( list({binary(), lightspeed@component:rendered()}), binary() ) -> {ok, binary()} | {error, binary()}. required_slot_html(Slots, Name) -> case lightspeed@component@template_compiler:require_slot(Slots, Name) of {ok, Rendered} -> {ok, lightspeed@component:to_html(Rendered)}; {error, Reason} -> {error, Reason} end. -file("src/lightspeed/component/template_ergonomics.gleam", 200). ?DOC(" Return one optional slot HTML as string, defaulting to empty.\n"). -spec slot_html_or_empty( list({binary(), lightspeed@component:rendered()}), binary() ) -> binary(). slot_html_or_empty(Slots, Name) -> case lightspeed@component@template_compiler:slot_rendered(Slots, Name) of {some, Rendered} -> lightspeed@component:to_html(Rendered); none -> <<""/utf8>> end. -file("src/lightspeed/component/template_ergonomics.gleam", 642). -spec schema_slot_names( list(lightspeed@component@template_compiler:slot_schema()) ) -> list(binary()). schema_slot_names(Slots) -> _pipe = Slots, gleam@list:map(_pipe, fun(Slot) -> erlang:element(2, Slot) end). -file("src/lightspeed/component/template_ergonomics.gleam", 656). -spec join_with(binary(), list(binary())) -> binary(). join_with(Separator, Values) -> case Values of [] -> <<""/utf8>>; [Value] -> Value; [Value@1 | Rest] -> <<<>/binary, (join_with(Separator, Rest))/binary>> end. -file("src/lightspeed/component/template_ergonomics.gleam", 504). -spec unknown_slot_hint( binary(), lightspeed@component@template_compiler:schema(any(), any()) ) -> binary(). unknown_slot_hint(Slot, Schema) -> <<<<<<"unknown slot `"/utf8, Slot/binary>>/binary, "`, supported slots: "/utf8>>/binary, (join_with(<<","/utf8>>, schema_slot_names(erlang:element(4, Schema))))/binary>>. -file("src/lightspeed/component/template_ergonomics.gleam", 611). -spec slot_default_exists(list(slot_default()), binary()) -> boolean(). slot_default_exists(Defaults, Name) -> case Defaults of [] -> false; [Default | Rest] -> case erlang:element(2, Default) =:= Name of true -> true; false -> slot_default_exists(Rest, Name) end end. -file("src/lightspeed/component/template_ergonomics.gleam", 493). -spec missing_slot_hint(binary(), list(slot_default())) -> binary(). missing_slot_hint(Slot, Defaults) -> case slot_default_exists(Defaults, Slot) of true -> <<<<"slot `"/utf8, Slot/binary>>/binary, "` is required; add it or keep default through `slot_default`"/utf8>>; false -> <<<<"add required slot `"/utf8, Slot/binary>>/binary, "`"/utf8>> end. -file("src/lightspeed/component/template_ergonomics.gleam", 514). -spec expected_helper_label(lightspeed@component@template_compiler:attr_kind()) -> binary(). expected_helper_label(Kind) -> case Kind of attr_string -> <<"string_attr"/utf8>>; attr_int -> <<"int_attr"/utf8>>; attr_bool -> <<"bool_attr"/utf8>> end. -file("src/lightspeed/component/template_ergonomics.gleam", 636). -spec schema_attr_names( list(lightspeed@component@template_compiler:attr_schema()) ) -> list(binary()). schema_attr_names(Attrs) -> _pipe = Attrs, gleam@list:map(_pipe, fun(Attr) -> erlang:element(2, Attr) end). -file("src/lightspeed/component/template_ergonomics.gleam", 601). -spec first_similar_attr( binary(), list(lightspeed@component@template_compiler:attr_schema()) ) -> gleam@option:option(binary()). first_similar_attr(_, Attrs) -> case Attrs of [] -> none; [Attr | _] -> {some, erlang:element(2, Attr)} end. -file("src/lightspeed/component/template_ergonomics.gleam", 550). -spec find_alias(list(attr_alias()), binary()) -> gleam@option:option(attr_alias()). find_alias(Aliases, Name) -> case Aliases of [] -> none; [Alias_rule | Rest] -> case erlang:element(2, Alias_rule) =:= Name of true -> {some, Alias_rule}; false -> find_alias(Rest, Name) end end. -file("src/lightspeed/component/template_ergonomics.gleam", 464). -spec unknown_attribute_hint( binary(), list(attr_alias()), lightspeed@component@template_compiler:schema(any(), any()) ) -> binary(). unknown_attribute_hint(Attribute, Aliases, Schema) -> case find_alias(Aliases, Attribute) of {some, Alias_rule} -> <<<<<<<<<<<<"rename `"/utf8, Attribute/binary>>/binary, "` to `"/utf8>>/binary, (erlang:element(3, Alias_rule))/binary>>/binary, "` ("/utf8>>/binary, (erlang:element(4, Alias_rule))/binary>>/binary, ")"/utf8>>; none -> case first_similar_attr(Attribute, erlang:element(3, Schema)) of {some, Name} -> <<<<<<<<"unknown attr `"/utf8, Attribute/binary>>/binary, "`, did you mean `"/utf8>>/binary, Name/binary>>/binary, "`?"/utf8>>; none -> <<<<<<"unknown attr `"/utf8, Attribute/binary>>/binary, "`, supported attrs: "/utf8>>/binary, (join_with( <<","/utf8>>, schema_attr_names(erlang:element(3, Schema)) ))/binary>> end end. -file("src/lightspeed/component/template_ergonomics.gleam", 568). -spec aliases_for_canonical_loop(list(attr_alias()), binary(), list(binary())) -> list(binary()). aliases_for_canonical_loop(Aliases, Canonical, Acc_rev) -> case Aliases of [] -> lists:reverse(Acc_rev); [Alias_rule | Rest] -> case erlang:element(3, Alias_rule) =:= Canonical of true -> aliases_for_canonical_loop( Rest, Canonical, [erlang:element(2, Alias_rule) | Acc_rev] ); false -> aliases_for_canonical_loop(Rest, Canonical, Acc_rev) end end. -file("src/lightspeed/component/template_ergonomics.gleam", 561). -spec aliases_for_canonical(list(attr_alias()), binary()) -> list(binary()). aliases_for_canonical(Aliases, Canonical) -> aliases_for_canonical_loop(Aliases, Canonical, []). -file("src/lightspeed/component/template_ergonomics.gleam", 443). -spec missing_attribute_hint( binary(), list(attr_alias()), lightspeed@component@template_compiler:schema(any(), any()) ) -> binary(). missing_attribute_hint(Attribute, Aliases, Schema) -> case aliases_for_canonical(Aliases, Attribute) of [] -> <<<<<<<<"provide required attr `"/utf8, Attribute/binary>>/binary, "` (known attrs: "/utf8>>/binary, (join_with( <<","/utf8>>, schema_attr_names(erlang:element(3, Schema)) ))/binary>>/binary, ")"/utf8>>; Alias_names -> <<<<<<"provide required attr `"/utf8, Attribute/binary>>/binary, "` or migrate from alias(es): "/utf8>>/binary, (join_with(<<","/utf8>>, Alias_names))/binary>> end. -file("src/lightspeed/component/template_ergonomics.gleam", 369). -spec diagnostic_with_hint( lightspeed@component@template_compiler:diagnostic(), lightspeed@component@template_compiler:schema(any(), any()), list(attr_alias()), list(slot_default()) ) -> diagnostic(). diagnostic_with_hint(Diagnostic, Schema, Aliases, Slot_defaults) -> Label = lightspeed@component@template_compiler:diagnostic_label(Diagnostic), case Diagnostic of {missing_attribute, _, Attribute} -> {diagnostic, <<"missing_attribute"/utf8>>, Label, missing_attribute_hint(Attribute, Aliases, Schema)}; {duplicate_attribute, _, Attribute@1} -> {diagnostic, <<"duplicate_attribute"/utf8>>, Label, <<<<"keep a single `"/utf8, Attribute@1/binary>>/binary, "` value"/utf8>>}; {unknown_attribute, _, Attribute@2} -> {diagnostic, <<"unknown_attribute"/utf8>>, Label, unknown_attribute_hint(Attribute@2, Aliases, Schema)}; {invalid_attribute_type, _, _, Expected, _} -> {diagnostic, <<"invalid_attribute_type"/utf8>>, Label, <<<<"use the `"/utf8, (expected_helper_label(Expected))/binary>>/binary, "` attr helper"/utf8>>}; {missing_slot, _, Slot} -> {diagnostic, <<"missing_slot"/utf8>>, Label, missing_slot_hint(Slot, Slot_defaults)}; {duplicate_slot, _, Slot@1} -> {diagnostic, <<"duplicate_slot"/utf8>>, Label, <<<<"keep a single `"/utf8, Slot@1/binary>>/binary, "` slot entry"/utf8>>}; {unknown_slot, _, Slot@2} -> {diagnostic, <<"unknown_slot"/utf8>>, Label, unknown_slot_hint(Slot@2, Schema)}; {assign_build_failed, _, _} -> {diagnostic, <<"assign_build_failed"/utf8>>, Label, <<"verify typed assign mapping and migration adapters"/utf8>>}; {slot_build_failed, _, _} -> {diagnostic, <<"slot_build_failed"/utf8>>, Label, <<"verify slot mapping and optional-slot fallback handling"/utf8>>} end. -file("src/lightspeed/component/template_ergonomics.gleam", 352). -spec enhance_diagnostics( list(lightspeed@component@template_compiler:diagnostic()), lightspeed@component@template_compiler:schema(any(), any()), list(attr_alias()), list(slot_default()), list(diagnostic()) ) -> list(diagnostic()). enhance_diagnostics(Diagnostics, Schema, Aliases, Slot_defaults, Acc_rev) -> case Diagnostics of [] -> lists:reverse(Acc_rev); [Diagnostic | Rest] -> enhance_diagnostics( Rest, Schema, Aliases, Slot_defaults, [diagnostic_with_hint( Diagnostic, Schema, Aliases, Slot_defaults ) | Acc_rev] ) end. -file("src/lightspeed/component/template_ergonomics.gleam", 522). -spec compile_signature( lightspeed@component@template_compiler:compiled_template(any(), any()), list({binary(), binary()}), list(binary()) ) -> binary(). compile_signature(Compiled, Applied_aliases, Applied_defaults) -> Alias_signature = case Applied_aliases of [] -> <<"none"/utf8>>; _ -> join_with( <<","/utf8>>, gleam@list:map( Applied_aliases, fun(Value) -> {Alias, Canonical} = Value, <<<"/utf8>>/binary, Canonical/binary>> end ) ) end, Defaults_signature = case Applied_defaults of [] -> <<"none"/utf8>>; _ -> join_with(<<","/utf8>>, Applied_defaults) end, <<<<<<<<(lightspeed@component@template_compiler:signature(Compiled))/binary, "|aliases="/utf8>>/binary, Alias_signature/binary>>/binary, "|defaults="/utf8>>/binary, Defaults_signature/binary>>. -file("src/lightspeed/component/template_ergonomics.gleam", 622). -spec slot_exists(list({binary(), lightspeed@component:rendered()}), binary()) -> boolean(). slot_exists(Slots, Expected) -> case Slots of [] -> false; [{Name, _} | Rest] -> case Name =:= Expected of true -> true; false -> slot_exists(Rest, Expected) end end. -file("src/lightspeed/component/template_ergonomics.gleam", 332). -spec apply_slot_defaults_loop( list({binary(), lightspeed@component:rendered()}), list(slot_default()), list(binary()) ) -> {list({binary(), lightspeed@component:rendered()}), list(binary())}. apply_slot_defaults_loop(Slots, Defaults, Applied_rev) -> case Defaults of [] -> {Slots, Applied_rev}; [Default | Rest] -> case slot_exists(Slots, erlang:element(2, Default)) of true -> apply_slot_defaults_loop(Slots, Rest, Applied_rev); false -> apply_slot_defaults_loop( [{erlang:element(2, Default), erlang:element(3, Default)} | Slots], Rest, [erlang:element(2, Default) | Applied_rev] ) end end. -file("src/lightspeed/component/template_ergonomics.gleam", 324). -spec apply_slot_defaults( list({binary(), lightspeed@component:rendered()}), list(slot_default()), list(binary()) ) -> {list({binary(), lightspeed@component:rendered()}), list(binary())}. apply_slot_defaults(Slots, Defaults, Applied_rev) -> apply_slot_defaults_loop(Slots, Defaults, Applied_rev). -file("src/lightspeed/component/template_ergonomics.gleam", 295). -spec apply_aliases( list({binary(), lightspeed@component@template_compiler:attr_value()}), list(attr_alias()), list({binary(), lightspeed@component@template_compiler:attr_value()}), list({binary(), binary()}) ) -> {list({binary(), lightspeed@component@template_compiler:attr_value()}), list({binary(), binary()})}. apply_aliases(Attrs, Aliases, Normalized_rev, Applied_rev) -> case Attrs of [] -> {lists:reverse(Normalized_rev), Applied_rev}; [{Name, Value} | Rest] -> case find_alias(Aliases, Name) of {some, Alias_rule} -> apply_aliases( Rest, Aliases, [{erlang:element(3, Alias_rule), Value} | Normalized_rev], [{erlang:element(2, Alias_rule), erlang:element(3, Alias_rule)} | Applied_rev] ); none -> apply_aliases( Rest, Aliases, [{Name, Value} | Normalized_rev], Applied_rev ) end end. -file("src/lightspeed/component/template_ergonomics.gleam", 211). ?DOC(" Compile one ergonomic template invocation.\n"). -spec compile( ergonomic_schema(JAS, JAT), list({binary(), lightspeed@component@template_compiler:attr_value()}), list({binary(), lightspeed@component:rendered()}) ) -> {ok, compiled(JAS, JAT)} | {error, list(diagnostic())}. compile(Schema, Attrs, Slots) -> {Normalized_attrs, Applied_aliases} = apply_aliases( Attrs, erlang:element(3, Schema), [], [] ), {Normalized_slots, Applied_defaults} = apply_slot_defaults( Slots, erlang:element(4, Schema), [] ), case lightspeed@component@template_compiler:compile( erlang:element(2, Schema), Normalized_attrs, Normalized_slots ) of {ok, Compiled_template} -> {ok, {compiled, Compiled_template, lists:reverse(Applied_aliases), lists:reverse(Applied_defaults), compile_signature( Compiled_template, lists:reverse(Applied_aliases), lists:reverse(Applied_defaults) )}}; {error, Diagnostics} -> {error, enhance_diagnostics( Diagnostics, erlang:element(2, Schema), erlang:element(3, Schema), erlang:element(4, Schema), [] )} end. -file("src/lightspeed/component/template_ergonomics.gleam", 250). ?DOC(" Stable diagnostic label.\n"). -spec diagnostic_label(diagnostic()) -> binary(). diagnostic_label(Diagnostic) -> <<<<<<<<(erlang:element(2, Diagnostic))/binary, ":"/utf8>>/binary, (erlang:element(3, Diagnostic))/binary>>/binary, ":hint="/utf8>>/binary, (erlang:element(4, Diagnostic))/binary>>. -file("src/lightspeed/component/template_ergonomics.gleam", 255). ?DOC(" Stable diagnostics signature.\n"). -spec diagnostics_signature(list(diagnostic())) -> binary(). diagnostics_signature(Diagnostics) -> join_with(<<";"/utf8>>, gleam@list:map(Diagnostics, fun diagnostic_label/1)). -file("src/lightspeed/component/template_ergonomics.gleam", 260). ?DOC(" Compiled artifact signature.\n"). -spec signature(compiled(any(), any())) -> binary(). signature(Compiled) -> erlang:element(5, Compiled). -file("src/lightspeed/component/template_ergonomics.gleam", 265). ?DOC(" Compiled HTML.\n"). -spec html(compiled(any(), any())) -> binary(). html(Compiled) -> lightspeed@component@template_compiler:html(erlang:element(2, Compiled)). -file("src/lightspeed/component/template_ergonomics.gleam", 270). ?DOC(" Compiled fingerprint.\n"). -spec fingerprint(compiled(any(), any())) -> binary(). fingerprint(Compiled) -> lightspeed@component@template_compiler:fingerprint( erlang:element(2, Compiled) ). -file("src/lightspeed/component/template_ergonomics.gleam", 275). ?DOC(" Underlying compiled template accessor.\n"). -spec compiled_template(compiled(JBQ, JBR)) -> lightspeed@component@template_compiler:compiled_template(JBQ, JBR). compiled_template(Compiled) -> erlang:element(2, Compiled). -file("src/lightspeed/component/template_ergonomics.gleam", 282). ?DOC(" Applied alias migrations.\n"). -spec applied_aliases(compiled(any(), any())) -> list({binary(), binary()}). applied_aliases(Compiled) -> erlang:element(3, Compiled). -file("src/lightspeed/component/template_ergonomics.gleam", 289). ?DOC(" Applied slot defaults.\n"). -spec applied_slot_defaults(compiled(any(), any())) -> list(binary()). applied_slot_defaults(Compiled) -> erlang:element(4, Compiled).