-module(nori@codegen@typescript@types). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/nori/codegen/typescript/types.gleam"). -export([default_config/0, generate_with_config/2, generate/1]). -export_type([config/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. ?MODULEDOC( " TypeScript type definition generator.\n" "\n" " Generates `types.generated.ts` from CodegenIR.\n" ). -type config() :: {config, boolean(), boolean(), boolean()}. -file("src/nori/codegen/typescript/types.gleam", 21). ?DOC(" Default configuration.\n"). -spec default_config() -> config(). default_config() -> {config, true, true, false}. -file("src/nori/codegen/typescript/types.gleam", 31). ?DOC(" Generate TypeScript types with custom config.\n"). -spec generate_with_config(nori@codegen@ir:codegen_i_r(), config()) -> binary(). generate_with_config(Ir, Config) -> Header = <<"// Generated by nori - Do not edit manually"/utf8>>, case erlang:element(5, Ir) of [] -> <
>; _ -> Ts_config = {ts_config, erlang:element(2, Config), erlang:element(3, Config), erlang:element(4, Config)}, Context = nori@codegen@templates:ir_to_ts_types_context( Ir, Ts_config ), Tmpl = nori@codegen@templates:load_template( <<"templates"/utf8>>, <<"typescript_types"/utf8>> ), Body = nori@codegen@templates:render(Tmpl, Context), <<<<<
>/binary, Body/binary>>/binary, "\n"/utf8>> end. -file("src/nori/codegen/typescript/types.gleam", 26). ?DOC(" Generate TypeScript types with default config.\n"). -spec generate(nori@codegen@ir:codegen_i_r()) -> binary(). generate(Ir) -> generate_with_config(Ir, default_config()).