-module(oaspec@internal@openapi@provenance). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/oaspec/internal/openapi/provenance.gleam"). -export([total_hoisted/1, hoisted_schema_summary/1]). -export_type([hoisted_summary/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(false). -type hoisted_summary() :: {hoisted_summary, list(binary()), list({binary(), binary(), binary()}), list({binary(), binary()}), list({binary(), binary(), integer()}), list({binary(), binary(), integer()}), list({binary(), binary(), integer()}), list({binary(), binary()}), list({binary(), binary(), binary()}), list({binary(), binary(), binary()}), list({binary(), binary()})}. -file("src/oaspec/internal/openapi/provenance.gleam", 32). ?DOC(false). -spec total_hoisted(hoisted_summary()) -> integer(). total_hoisted(Summary) -> (((((((erlang:length(erlang:element(3, Summary)) + erlang:length( erlang:element(4, Summary) )) + erlang:length(erlang:element(5, Summary))) + erlang:length(erlang:element(6, Summary))) + erlang:length(erlang:element(7, Summary))) + erlang:length(erlang:element(8, Summary))) + erlang:length(erlang:element(9, Summary))) + erlang:length(erlang:element(10, Summary))) + erlang:length(erlang:element(11, Summary)). -file("src/oaspec/internal/openapi/provenance.gleam", 47). ?DOC(false). -spec hoisted_schema_summary(oaspec@internal@openapi@spec:open_api_spec(any())) -> hoisted_summary(). hoisted_schema_summary(Spec) -> Empty = {hoisted_summary, [], [], [], [], [], [], [], [], [], []}, Schemas = case erlang:element(5, Spec) of {some, Components} -> erlang:element(2, Components); none -> maps:new() end, _pipe = maps:to_list(Schemas), gleam@list:fold( _pipe, Empty, fun(Acc, Entry) -> {Name, Schema_ref} = Entry, case Schema_ref of {inline, Obj} -> case oaspec@internal@openapi@schema:get_provenance(Obj) of user_authored -> {hoisted_summary, [Name | erlang:element(2, Acc)], erlang:element(3, Acc), erlang:element(4, Acc), erlang:element(5, Acc), erlang:element(6, Acc), erlang:element(7, Acc), erlang:element(8, Acc), erlang:element(9, Acc), erlang:element(10, Acc), erlang:element(11, Acc)}; {hoisted_property, Parent, Property} -> {hoisted_summary, erlang:element(2, Acc), [{Name, Parent, Property} | erlang:element(3, Acc)], erlang:element(4, Acc), erlang:element(5, Acc), erlang:element(6, Acc), erlang:element(7, Acc), erlang:element(8, Acc), erlang:element(9, Acc), erlang:element(10, Acc), erlang:element(11, Acc)}; {hoisted_array_item, Parent@1} -> {hoisted_summary, erlang:element(2, Acc), erlang:element(3, Acc), [{Name, Parent@1} | erlang:element(4, Acc)], erlang:element(5, Acc), erlang:element(6, Acc), erlang:element(7, Acc), erlang:element(8, Acc), erlang:element(9, Acc), erlang:element(10, Acc), erlang:element(11, Acc)}; {hoisted_one_of_variant, Parent@2, Index} -> {hoisted_summary, erlang:element(2, Acc), erlang:element(3, Acc), erlang:element(4, Acc), [{Name, Parent@2, Index} | erlang:element(5, Acc)], erlang:element(6, Acc), erlang:element(7, Acc), erlang:element(8, Acc), erlang:element(9, Acc), erlang:element(10, Acc), erlang:element(11, Acc)}; {hoisted_any_of_variant, Parent@3, Index@1} -> {hoisted_summary, erlang:element(2, Acc), erlang:element(3, Acc), erlang:element(4, Acc), erlang:element(5, Acc), [{Name, Parent@3, Index@1} | erlang:element(6, Acc)], erlang:element(7, Acc), erlang:element(8, Acc), erlang:element(9, Acc), erlang:element(10, Acc), erlang:element(11, Acc)}; {hoisted_all_of_part, Parent@4, Index@2} -> {hoisted_summary, erlang:element(2, Acc), erlang:element(3, Acc), erlang:element(4, Acc), erlang:element(5, Acc), erlang:element(6, Acc), [{Name, Parent@4, Index@2} | erlang:element(7, Acc)], erlang:element(8, Acc), erlang:element(9, Acc), erlang:element(10, Acc), erlang:element(11, Acc)}; {hoisted_request_body, Operation_id} -> {hoisted_summary, erlang:element(2, Acc), erlang:element(3, Acc), erlang:element(4, Acc), erlang:element(5, Acc), erlang:element(6, Acc), erlang:element(7, Acc), [{Name, Operation_id} | erlang:element(8, Acc)], erlang:element(9, Acc), erlang:element(10, Acc), erlang:element(11, Acc)}; {hoisted_response, Operation_id@1, Status} -> {hoisted_summary, erlang:element(2, Acc), erlang:element(3, Acc), erlang:element(4, Acc), erlang:element(5, Acc), erlang:element(6, Acc), erlang:element(7, Acc), erlang:element(8, Acc), [{Name, Operation_id@1, Status} | erlang:element(9, Acc)], erlang:element(10, Acc), erlang:element(11, Acc)}; {hoisted_parameter, Operation_id@2, Param_name} -> {hoisted_summary, erlang:element(2, Acc), erlang:element(3, Acc), erlang:element(4, Acc), erlang:element(5, Acc), erlang:element(6, Acc), erlang:element(7, Acc), erlang:element(8, Acc), erlang:element(9, Acc), [{Name, Operation_id@2, Param_name} | erlang:element(10, Acc)], erlang:element(11, Acc)}; {hoisted_additional_properties, Parent@5} -> {hoisted_summary, erlang:element(2, Acc), erlang:element(3, Acc), erlang:element(4, Acc), erlang:element(5, Acc), erlang:element(6, Acc), erlang:element(7, Acc), erlang:element(8, Acc), erlang:element(9, Acc), erlang:element(10, Acc), [{Name, Parent@5} | erlang:element(11, Acc)]} end; _ -> Acc end end ).