Packages
oaspec
0.58.1
0.68.0
0.67.0
0.66.0
0.65.0
0.64.0
0.63.0
0.62.0
0.61.0
0.60.0
0.59.0
0.58.1
0.58.0
0.57.0
0.56.0
0.55.0
0.54.0
0.53.0
0.52.0
0.51.0
0.50.0
0.49.0
0.48.0
0.47.0
0.46.0
0.45.0
0.44.0
0.43.0
0.42.0
0.41.0
0.40.0
0.39.0
0.38.0
0.37.0
0.36.0
0.35.0
0.34.0
0.33.0
0.32.0
0.31.0
0.30.0
0.29.0
0.28.0
0.27.0
0.26.0
0.25.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.3
0.6.1
0.6.0
0.5.0
0.4.0
0.3.0
0.1.3
Generate Gleam code from OpenAPI 3.x specifications
Current section
Files
Jump to
Current section
Files
src/oaspec@internal@openapi@external_loader.erl
-module(oaspec@internal@openapi@external_loader).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/oaspec/internal/openapi/external_loader.gleam").
-export([resolve_external_component_refs/3]).
-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).
-file("src/oaspec/internal/openapi/external_loader.gleam", 159).
?DOC(false).
-spec process_components(
oaspec@internal@openapi@spec:components(oaspec@internal@openapi@spec:unresolved()),
binary(),
fun((binary()) -> {ok,
oaspec@internal@openapi@spec:open_api_spec(oaspec@internal@openapi@spec:unresolved())} |
{error, oaspec@openapi@diagnostic:diagnostic()}),
list(binary())
) -> {ok,
{oaspec@internal@openapi@spec:components(oaspec@internal@openapi@spec:unresolved()),
gleam@dict:dict(binary(), binary())}} |
{error, oaspec@openapi@diagnostic:diagnostic()}.
process_components(Components, Base_dir, Parse_file, Original_local_names) ->
Entries = maps:to_list(erlang:element(2, Components)),
gleam@result:'try'(
gleam@list:try_fold(
Entries,
{[], maps:new()},
fun(Acc, Entry) ->
{Pending, Imported} = Acc,
{Name, Schema_ref} = Entry,
case oaspec@internal@openapi@external_loader_planner:extract_external_ref(
Schema_ref
) of
{some, {Rel_path, Fragment_name}} ->
Resolved_path = filepath:join(Base_dir, Rel_path),
gleam@result:'try'(
oaspec@internal@openapi@external_loader_planner:check_local_collision(
Name,
Fragment_name,
Resolved_path,
Original_local_names
),
fun(_) ->
gleam@result:'try'(
oaspec@internal@openapi@external_loader_planner:check_cross_file_collision(
Fragment_name,
Resolved_path,
Imported
),
fun(_) ->
gleam@result:'try'(
Parse_file(Resolved_path),
fun(Loaded) ->
gleam@result:'try'(
oaspec@internal@openapi@external_loader_planner:find_external_schema(
Loaded,
Fragment_name,
Resolved_path
),
fun(Target) ->
Local_ref = {reference,
<<"#/components/schemas/"/utf8,
Fragment_name/binary>>,
Fragment_name},
Pending@1 = [{Name,
Local_ref},
{Fragment_name,
Target} |
Pending],
Imported@1 = gleam@dict:insert(
Imported,
Fragment_name,
Resolved_path
),
{ok,
{Pending@1,
Imported@1}}
end
)
end
)
end
)
end
);
none ->
{ok, {[{Name, Schema_ref} | Pending], Imported}}
end
end
),
fun(_use0) ->
{New_entries, Imported@2} = _use0,
Merged = gleam@list:fold(
New_entries,
maps:new(),
fun(D, Pair) ->
gleam@dict:insert(
D,
erlang:element(1, Pair),
erlang:element(2, Pair)
)
end
),
{ok,
{{components,
Merged,
erlang:element(3, Components),
erlang:element(4, Components),
erlang:element(5, Components),
erlang:element(6, Components),
erlang:element(7, Components),
erlang:element(8, Components),
erlang:element(9, Components),
erlang:element(10, Components),
erlang:element(11, Components)},
Imported@2}}
end
).
-file("src/oaspec/internal/openapi/external_loader.gleam", 273).
?DOC(false).
-spec resolve_ref_or_dict(
gleam@dict:dict(binary(), oaspec@internal@openapi@spec:ref_or(TVX)),
binary(),
fun((binary()) -> {ok,
oaspec@internal@openapi@spec:open_api_spec(oaspec@internal@openapi@spec:unresolved())} |
{error, oaspec@openapi@diagnostic:diagnostic()}),
binary(),
fun((oaspec@internal@openapi@spec:open_api_spec(oaspec@internal@openapi@spec:unresolved()), binary(), binary()) -> {ok,
TVX} |
{error, oaspec@openapi@diagnostic:diagnostic()})
) -> {ok, gleam@dict:dict(binary(), oaspec@internal@openapi@spec:ref_or(TVX))} |
{error, oaspec@openapi@diagnostic:diagnostic()}.
resolve_ref_or_dict(Entries, Base_dir, Parse_file, Target_prefix, Finder) ->
Pairs = maps:to_list(Entries),
gleam@result:'try'(
gleam@list:try_fold(
Pairs,
[],
fun(Acc, Entry) ->
{Name, Ref_or_val} = Entry,
case Ref_or_val of
{ref, Ref_str} ->
case oaspec@internal@openapi@external_loader_planner:extract_external_component_ref(
Ref_str
) of
{some, {File_path, Prefix, Obj_name}} when Prefix =:= Target_prefix ->
Resolved_path = filepath:join(
Base_dir,
File_path
),
gleam@result:'try'(
Parse_file(Resolved_path),
fun(Loaded) ->
gleam@result:'try'(
Finder(
Loaded,
Obj_name,
Resolved_path
),
fun(Target) ->
{ok,
[{Name, {value, Target}} |
Acc]}
end
)
end
);
_ ->
{ok, [{Name, Ref_or_val} | Acc]}
end;
{value, _} ->
{ok, [{Name, Ref_or_val} | Acc]}
end
end
),
fun(New_pairs) ->
{ok,
gleam@list:fold(
New_pairs,
maps:new(),
fun(D, Pair) ->
gleam@dict:insert(
D,
erlang:element(1, Pair),
erlang:element(2, Pair)
)
end
)}
end
).
-file("src/oaspec/internal/openapi/external_loader.gleam", 222).
?DOC(false).
-spec process_whole_object_refs(
oaspec@internal@openapi@spec:components(oaspec@internal@openapi@spec:unresolved()),
binary(),
fun((binary()) -> {ok,
oaspec@internal@openapi@spec:open_api_spec(oaspec@internal@openapi@spec:unresolved())} |
{error, oaspec@openapi@diagnostic:diagnostic()})
) -> {ok,
oaspec@internal@openapi@spec:components(oaspec@internal@openapi@spec:unresolved())} |
{error, oaspec@openapi@diagnostic:diagnostic()}.
process_whole_object_refs(Components, Base_dir, Parse_file) ->
gleam@result:'try'(
resolve_ref_or_dict(
erlang:element(3, Components),
Base_dir,
Parse_file,
<<"/components/parameters/"/utf8>>,
fun oaspec@internal@openapi@external_loader_planner:find_external_parameter/3
),
fun(New_parameters) ->
gleam@result:'try'(
resolve_ref_or_dict(
erlang:element(4, Components),
Base_dir,
Parse_file,
<<"/components/requestBodies/"/utf8>>,
fun oaspec@internal@openapi@external_loader_planner:find_external_request_body/3
),
fun(New_request_bodies) ->
gleam@result:'try'(
resolve_ref_or_dict(
erlang:element(5, Components),
Base_dir,
Parse_file,
<<"/components/responses/"/utf8>>,
fun oaspec@internal@openapi@external_loader_planner:find_external_response/3
),
fun(New_responses) ->
gleam@result:'try'(
resolve_ref_or_dict(
erlang:element(7, Components),
Base_dir,
Parse_file,
<<"/components/pathItems/"/utf8>>,
fun oaspec@internal@openapi@external_loader_planner:find_external_path_item/3
),
fun(New_path_items) ->
{ok,
{components,
erlang:element(2, Components),
New_parameters,
New_request_bodies,
New_responses,
erlang:element(6, Components),
New_path_items,
erlang:element(8, Components),
erlang:element(9, Components),
erlang:element(10, Components),
erlang:element(11, Components)}}
end
)
end
)
end
)
end
).
-file("src/oaspec/internal/openapi/external_loader.gleam", 465).
?DOC(false).
-spec no_target() -> oaspec@internal@openapi@schema:schema_ref().
no_target() ->
{reference, <<""/utf8>>, <<""/utf8>>}.
-file("src/oaspec/internal/openapi/external_loader.gleam", 1420).
?DOC(false).
-spec maybe_hoist_ref(
oaspec@internal@openapi@schema:schema_ref(),
binary(),
fun((binary()) -> {ok,
oaspec@internal@openapi@spec:open_api_spec(oaspec@internal@openapi@spec:unresolved())} |
{error, oaspec@openapi@diagnostic:diagnostic()}),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()}),
list(binary())
) -> {ok,
{oaspec@internal@openapi@schema:schema_ref(),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()})}} |
{error, oaspec@openapi@diagnostic:diagnostic()}.
maybe_hoist_ref(Schema_ref, Base_dir, Parse_file, Imports, Original_local_names) ->
case oaspec@internal@openapi@external_loader_planner:extract_external_ref(
Schema_ref
) of
{some, {Rel_path, Fragment_name}} ->
Resolved_path = filepath:join(Base_dir, Rel_path),
gleam@result:'try'(
oaspec@internal@openapi@external_loader_planner:check_nested_local_collision(
Fragment_name,
Resolved_path,
Original_local_names
),
fun(_) ->
gleam@result:'try'(
oaspec@internal@openapi@external_loader_planner:check_nested_cross_file_collision(
Fragment_name,
Resolved_path,
Imports
),
fun(_) ->
gleam@result:'try'(
Parse_file(Resolved_path),
fun(Loaded) ->
gleam@result:'try'(
oaspec@internal@openapi@external_loader_planner:find_external_schema(
Loaded,
Fragment_name,
Resolved_path
),
fun(Target) ->
Local_ref = {reference,
<<"#/components/schemas/"/utf8,
Fragment_name/binary>>,
Fragment_name},
New_imports = gleam@dict:insert(
Imports,
Fragment_name,
{Resolved_path, Target}
),
{ok, {Local_ref, New_imports}}
end
)
end
)
end
)
end
);
none ->
{ok, {Schema_ref, Imports}}
end.
-file("src/oaspec/internal/openapi/external_loader.gleam", 1151).
?DOC(false).
-spec rewrite_header_map(
gleam@dict:dict(binary(), oaspec@internal@openapi@spec:header()),
binary(),
fun((binary()) -> {ok,
oaspec@internal@openapi@spec:open_api_spec(oaspec@internal@openapi@spec:unresolved())} |
{error, oaspec@openapi@diagnostic:diagnostic()}),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()}),
list(binary())
) -> {ok,
{gleam@dict:dict(binary(), oaspec@internal@openapi@spec:header()),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()})}} |
{error, oaspec@openapi@diagnostic:diagnostic()}.
rewrite_header_map(Headers, Base_dir, Parse_file, Imports, Original_local_names) ->
Entries = maps:to_list(Headers),
gleam@result:'try'(
gleam@list:try_fold(
Entries,
{[], Imports},
fun(Acc, Entry) ->
{Collected, Imports@1} = Acc,
{Name, Header} = Entry,
case erlang:element(4, Header) of
{some, Ref} ->
gleam@result:'try'(
maybe_hoist_ref(
Ref,
Base_dir,
Parse_file,
Imports@1,
Original_local_names
),
fun(_use0) ->
{New_ref, New_imports} = _use0,
New_header = {header,
erlang:element(2, Header),
erlang:element(3, Header),
{some, New_ref}},
{ok,
{[{Name, New_header} | Collected],
New_imports}}
end
);
none ->
{ok, {[{Name, Header} | Collected], Imports@1}}
end
end
),
fun(_use0@1) ->
{Rewritten, New_imports@1} = _use0@1,
New_map = gleam@list:fold(
Rewritten,
maps:new(),
fun(D, Pair) ->
gleam@dict:insert(
D,
erlang:element(1, Pair),
erlang:element(2, Pair)
)
end
),
{ok, {New_map, New_imports@1}}
end
).
-file("src/oaspec/internal/openapi/external_loader.gleam", 1193).
?DOC(false).
-spec process_component_headers(
oaspec@internal@openapi@spec:components(oaspec@internal@openapi@spec:unresolved()),
binary(),
fun((binary()) -> {ok,
oaspec@internal@openapi@spec:open_api_spec(oaspec@internal@openapi@spec:unresolved())} |
{error, oaspec@openapi@diagnostic:diagnostic()}),
list(binary()),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()})
) -> {ok,
{oaspec@internal@openapi@spec:components(oaspec@internal@openapi@spec:unresolved()),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()})}} |
{error, oaspec@openapi@diagnostic:diagnostic()}.
process_component_headers(
Components,
Base_dir,
Parse_file,
Original_local_names,
Seeded_imports
) ->
gleam@result:'try'(
rewrite_header_map(
erlang:element(8, Components),
Base_dir,
Parse_file,
Seeded_imports,
Original_local_names
),
fun(_use0) ->
{New_headers, Final_imports} = _use0,
New_schemas = gleam@dict:fold(
Final_imports,
erlang:element(2, Components),
fun(D, Frag_name, Pair) ->
{_, Target_schema} = Pair,
case {gleam@dict:has_key(D, Frag_name), Target_schema} of
{true, _} ->
D;
{false, {inline, _}} ->
gleam@dict:insert(D, Frag_name, Target_schema);
{false, _} ->
D
end
end
),
{ok,
{{components,
New_schemas,
erlang:element(3, Components),
erlang:element(4, Components),
erlang:element(5, Components),
erlang:element(6, Components),
erlang:element(7, Components),
New_headers,
erlang:element(9, Components),
erlang:element(10, Components),
erlang:element(11, Components)},
Final_imports}}
end
).
-file("src/oaspec/internal/openapi/external_loader.gleam", 1282).
?DOC(false).
-spec rewrite_media_type_map(
gleam@dict:dict(binary(), oaspec@internal@openapi@spec:media_type()),
binary(),
fun((binary()) -> {ok,
oaspec@internal@openapi@spec:open_api_spec(oaspec@internal@openapi@spec:unresolved())} |
{error, oaspec@openapi@diagnostic:diagnostic()}),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()}),
list(binary())
) -> {ok,
{gleam@dict:dict(binary(), oaspec@internal@openapi@spec:media_type()),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()})}} |
{error, oaspec@openapi@diagnostic:diagnostic()}.
rewrite_media_type_map(
Content,
Base_dir,
Parse_file,
Imports,
Original_local_names
) ->
Entries = maps:to_list(Content),
gleam@result:'try'(
gleam@list:try_fold(
Entries,
{[], Imports},
fun(Acc, Entry) ->
{Collected, Imports@1} = Acc,
{Media_key, Media} = Entry,
case erlang:element(2, Media) of
{some, Ref} ->
gleam@result:'try'(
maybe_hoist_ref(
Ref,
Base_dir,
Parse_file,
Imports@1,
Original_local_names
),
fun(_use0) ->
{New_ref, New_imports} = _use0,
New_media = {media_type,
{some, New_ref},
erlang:element(3, Media),
erlang:element(4, Media),
erlang:element(5, Media)},
{ok,
{[{Media_key, New_media} | Collected],
New_imports}}
end
);
none ->
{ok, {[{Media_key, Media} | Collected], Imports@1}}
end
end
),
fun(_use0@1) ->
{Rewritten, New_imports@1} = _use0@1,
New_content = gleam@list:fold(
Rewritten,
maps:new(),
fun(D, Pair) ->
gleam@dict:insert(
D,
erlang:element(1, Pair),
erlang:element(2, Pair)
)
end
),
{ok, {New_content, New_imports@1}}
end
).
-file("src/oaspec/internal/openapi/external_loader.gleam", 852).
?DOC(false).
-spec rewrite_optional_request_body(
gleam@option:option(oaspec@internal@openapi@spec:ref_or(oaspec@internal@openapi@spec:request_body(oaspec@internal@openapi@spec:unresolved()))),
binary(),
fun((binary()) -> {ok,
oaspec@internal@openapi@spec:open_api_spec(oaspec@internal@openapi@spec:unresolved())} |
{error, oaspec@openapi@diagnostic:diagnostic()}),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()}),
list(binary())
) -> {ok,
{gleam@option:option(oaspec@internal@openapi@spec:ref_or(oaspec@internal@openapi@spec:request_body(oaspec@internal@openapi@spec:unresolved()))),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()})}} |
{error, oaspec@openapi@diagnostic:diagnostic()}.
rewrite_optional_request_body(
Body,
Base_dir,
Parse_file,
Imports,
Original_local_names
) ->
case Body of
{some, {value, Rb}} ->
gleam@result:'try'(
rewrite_media_type_map(
erlang:element(3, Rb),
Base_dir,
Parse_file,
Imports,
Original_local_names
),
fun(_use0) ->
{New_content, New_imports} = _use0,
New_rb = {request_body,
erlang:element(2, Rb),
New_content,
erlang:element(4, Rb)},
{ok, {{some, {value, New_rb}}, New_imports}}
end
);
{some, {ref, _}} ->
{ok, {Body, Imports}};
none ->
{ok, {none, Imports}}
end.
-file("src/oaspec/internal/openapi/external_loader.gleam", 1066).
?DOC(false).
-spec rewrite_ref_or_parameter(
oaspec@internal@openapi@spec:ref_or(oaspec@internal@openapi@spec:parameter(oaspec@internal@openapi@spec:unresolved())),
binary(),
fun((binary()) -> {ok,
oaspec@internal@openapi@spec:open_api_spec(oaspec@internal@openapi@spec:unresolved())} |
{error, oaspec@openapi@diagnostic:diagnostic()}),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()}),
list(binary())
) -> {ok,
{oaspec@internal@openapi@spec:ref_or(oaspec@internal@openapi@spec:parameter(oaspec@internal@openapi@spec:unresolved())),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()})}} |
{error, oaspec@openapi@diagnostic:diagnostic()}.
rewrite_ref_or_parameter(
Ref_or_param,
Base_dir,
Parse_file,
Imports,
Original_local_names
) ->
case Ref_or_param of
{value, P} ->
case erlang:element(6, P) of
{parameter_schema, Schema_ref} ->
gleam@result:'try'(
maybe_hoist_ref(
Schema_ref,
Base_dir,
Parse_file,
Imports,
Original_local_names
),
fun(_use0) ->
{New_ref, New_imports} = _use0,
New_param = {parameter,
erlang:element(2, P),
erlang:element(3, P),
erlang:element(4, P),
erlang:element(5, P),
{parameter_schema, New_ref},
erlang:element(7, P),
erlang:element(8, P),
erlang:element(9, P),
erlang:element(10, P),
erlang:element(11, P)},
{ok, {{value, New_param}, New_imports}}
end
);
{parameter_content, Content} ->
gleam@result:'try'(
rewrite_media_type_map(
Content,
Base_dir,
Parse_file,
Imports,
Original_local_names
),
fun(_use0@1) ->
{New_content, New_imports@1} = _use0@1,
New_param@1 = {parameter,
erlang:element(2, P),
erlang:element(3, P),
erlang:element(4, P),
erlang:element(5, P),
{parameter_content, New_content},
erlang:element(7, P),
erlang:element(8, P),
erlang:element(9, P),
erlang:element(10, P),
erlang:element(11, P)},
{ok, {{value, New_param@1}, New_imports@1}}
end
)
end;
{ref, _} ->
{ok, {Ref_or_param, Imports}}
end.
-file("src/oaspec/internal/openapi/external_loader.gleam", 530).
?DOC(false).
-spec rewrite_parameter_list(
list(oaspec@internal@openapi@spec:ref_or(oaspec@internal@openapi@spec:parameter(oaspec@internal@openapi@spec:unresolved()))),
binary(),
fun((binary()) -> {ok,
oaspec@internal@openapi@spec:open_api_spec(oaspec@internal@openapi@spec:unresolved())} |
{error, oaspec@openapi@diagnostic:diagnostic()}),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()}),
list(binary())
) -> {ok,
{list(oaspec@internal@openapi@spec:ref_or(oaspec@internal@openapi@spec:parameter(oaspec@internal@openapi@spec:unresolved()))),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()})}} |
{error, oaspec@openapi@diagnostic:diagnostic()}.
rewrite_parameter_list(
Parameters,
Base_dir,
Parse_file,
Imports,
Original_local_names
) ->
gleam@result:'try'(
gleam@list:try_fold(
Parameters,
{[], Imports},
fun(Acc, Item) ->
{Done, Imports@1} = Acc,
gleam@result:'try'(
rewrite_ref_or_parameter(
Item,
Base_dir,
Parse_file,
Imports@1,
Original_local_names
),
fun(_use0) ->
{New_item, New_imports} = _use0,
{ok, {[New_item | Done], New_imports}}
end
)
end
),
fun(_use0@1) ->
{Collected, New_imports@1} = _use0@1,
{ok, {lists:reverse(Collected), New_imports@1}}
end
).
-file("src/oaspec/internal/openapi/external_loader.gleam", 930).
?DOC(false).
-spec process_parameter_schemas(
oaspec@internal@openapi@spec:components(oaspec@internal@openapi@spec:unresolved()),
binary(),
fun((binary()) -> {ok,
oaspec@internal@openapi@spec:open_api_spec(oaspec@internal@openapi@spec:unresolved())} |
{error, oaspec@openapi@diagnostic:diagnostic()}),
list(binary()),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()})
) -> {ok,
{oaspec@internal@openapi@spec:components(oaspec@internal@openapi@spec:unresolved()),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()})}} |
{error, oaspec@openapi@diagnostic:diagnostic()}.
process_parameter_schemas(
Components,
Base_dir,
Parse_file,
Original_local_names,
Seeded_imports
) ->
Entries = maps:to_list(erlang:element(3, Components)),
gleam@result:'try'(
gleam@list:try_fold(
Entries,
{[], Seeded_imports},
fun(Acc, Entry) ->
{Collected, Imports} = Acc,
{Name, Ref_or_param} = Entry,
gleam@result:'try'(
rewrite_ref_or_parameter(
Ref_or_param,
Base_dir,
Parse_file,
Imports,
Original_local_names
),
fun(_use0) ->
{New_param, New_imports} = _use0,
{ok, {[{Name, New_param} | Collected], New_imports}}
end
)
end
),
fun(_use0@1) ->
{Rewritten, Imports@1} = _use0@1,
New_parameters = gleam@list:fold(
Rewritten,
maps:new(),
fun(D, Pair) ->
gleam@dict:insert(
D,
erlang:element(1, Pair),
erlang:element(2, Pair)
)
end
),
New_schemas = gleam@dict:fold(
Imports@1,
erlang:element(2, Components),
fun(D@1, Frag_name, Pair@1) ->
{_, Target_schema} = Pair@1,
case {gleam@dict:has_key(D@1, Frag_name), Target_schema} of
{true, _} ->
D@1;
{false, {inline, _}} ->
gleam@dict:insert(D@1, Frag_name, Target_schema);
{false, _} ->
D@1
end
end
),
{ok,
{{components,
New_schemas,
New_parameters,
erlang:element(4, Components),
erlang:element(5, Components),
erlang:element(6, Components),
erlang:element(7, Components),
erlang:element(8, Components),
erlang:element(9, Components),
erlang:element(10, Components),
erlang:element(11, Components)},
Imports@1}}
end
).
-file("src/oaspec/internal/openapi/external_loader.gleam", 1115).
?DOC(false).
-spec rewrite_response_value(
oaspec@internal@openapi@spec:response(oaspec@internal@openapi@spec:unresolved()),
binary(),
fun((binary()) -> {ok,
oaspec@internal@openapi@spec:open_api_spec(oaspec@internal@openapi@spec:unresolved())} |
{error, oaspec@openapi@diagnostic:diagnostic()}),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()}),
list(binary())
) -> {ok,
{oaspec@internal@openapi@spec:response(oaspec@internal@openapi@spec:unresolved()),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()})}} |
{error, oaspec@openapi@diagnostic:diagnostic()}.
rewrite_response_value(
Response,
Base_dir,
Parse_file,
Imports,
Original_local_names
) ->
gleam@result:'try'(
rewrite_media_type_map(
erlang:element(3, Response),
Base_dir,
Parse_file,
Imports,
Original_local_names
),
fun(_use0) ->
{New_content, Imports_after_content} = _use0,
gleam@result:'try'(
rewrite_header_map(
erlang:element(4, Response),
Base_dir,
Parse_file,
Imports_after_content,
Original_local_names
),
fun(_use0@1) ->
{New_headers, New_imports} = _use0@1,
{ok,
{{response,
erlang:element(2, Response),
New_content,
New_headers,
erlang:element(5, Response)},
New_imports}}
end
)
end
).
-file("src/oaspec/internal/openapi/external_loader.gleam", 882).
?DOC(false).
-spec rewrite_response_map(
gleam@dict:dict(oaspec@internal@util@http:http_status_code(), oaspec@internal@openapi@spec:ref_or(oaspec@internal@openapi@spec:response(oaspec@internal@openapi@spec:unresolved()))),
binary(),
fun((binary()) -> {ok,
oaspec@internal@openapi@spec:open_api_spec(oaspec@internal@openapi@spec:unresolved())} |
{error, oaspec@openapi@diagnostic:diagnostic()}),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()}),
list(binary())
) -> {ok,
{gleam@dict:dict(oaspec@internal@util@http:http_status_code(), oaspec@internal@openapi@spec:ref_or(oaspec@internal@openapi@spec:response(oaspec@internal@openapi@spec:unresolved()))),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()})}} |
{error, oaspec@openapi@diagnostic:diagnostic()}.
rewrite_response_map(
Responses,
Base_dir,
Parse_file,
Imports,
Original_local_names
) ->
Entries = maps:to_list(Responses),
gleam@result:'try'(
gleam@list:try_fold(
Entries,
{[], Imports},
fun(Acc, Entry) ->
{Collected, Imports@1} = Acc,
{Status, Ref_or_resp} = Entry,
case Ref_or_resp of
{value, Resp} ->
gleam@result:'try'(
rewrite_response_value(
Resp,
Base_dir,
Parse_file,
Imports@1,
Original_local_names
),
fun(_use0) ->
{New_resp, New_imports} = _use0,
{ok,
{[{Status, {value, New_resp}} | Collected],
New_imports}}
end
);
{ref, _} ->
{ok, {[{Status, Ref_or_resp} | Collected], Imports@1}}
end
end
),
fun(_use0@1) ->
{Rewritten, New_imports@1} = _use0@1,
New_map = gleam@list:fold(
Rewritten,
maps:new(),
fun(D, Pair) ->
gleam@dict:insert(
D,
erlang:element(1, Pair),
erlang:element(2, Pair)
)
end
),
{ok, {New_map, New_imports@1}}
end
).
-file("src/oaspec/internal/openapi/external_loader.gleam", 984).
?DOC(false).
-spec process_body_response_schemas(
oaspec@internal@openapi@spec:components(oaspec@internal@openapi@spec:unresolved()),
binary(),
fun((binary()) -> {ok,
oaspec@internal@openapi@spec:open_api_spec(oaspec@internal@openapi@spec:unresolved())} |
{error, oaspec@openapi@diagnostic:diagnostic()}),
list(binary()),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()})
) -> {ok,
{oaspec@internal@openapi@spec:components(oaspec@internal@openapi@spec:unresolved()),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()})}} |
{error, oaspec@openapi@diagnostic:diagnostic()}.
process_body_response_schemas(
Components,
Base_dir,
Parse_file,
Original_local_names,
Seeded_imports
) ->
Body_entries = maps:to_list(erlang:element(4, Components)),
gleam@result:'try'(
gleam@list:try_fold(
Body_entries,
{[], Seeded_imports},
fun(Acc, Entry) ->
{Collected, Imports} = Acc,
{Name, Ref_or_body} = Entry,
case Ref_or_body of
{value, Body} ->
gleam@result:'try'(
rewrite_media_type_map(
erlang:element(3, Body),
Base_dir,
Parse_file,
Imports,
Original_local_names
),
fun(_use0) ->
{New_content, New_imports} = _use0,
New_body = {request_body,
erlang:element(2, Body),
New_content,
erlang:element(4, Body)},
{ok,
{[{Name, {value, New_body}} | Collected],
New_imports}}
end
);
{ref, _} ->
{ok, {[{Name, Ref_or_body} | Collected], Imports}}
end
end
),
fun(_use0@1) ->
{New_bodies, Imports_after_bodies} = _use0@1,
Response_entries = maps:to_list(erlang:element(5, Components)),
gleam@result:'try'(
gleam@list:try_fold(
Response_entries,
{[], Imports_after_bodies},
fun(Acc@1, Entry@1) ->
{Collected@1, Imports@1} = Acc@1,
{Name@1, Ref_or_resp} = Entry@1,
case Ref_or_resp of
{value, Resp} ->
gleam@result:'try'(
rewrite_response_value(
Resp,
Base_dir,
Parse_file,
Imports@1,
Original_local_names
),
fun(_use0@2) ->
{New_resp, New_imports@1} = _use0@2,
{ok,
{[{Name@1, {value, New_resp}} |
Collected@1],
New_imports@1}}
end
);
{ref, _} ->
{ok,
{[{Name@1, Ref_or_resp} | Collected@1],
Imports@1}}
end
end
),
fun(_use0@3) ->
{New_responses, Final_imports} = _use0@3,
New_request_bodies = gleam@list:fold(
New_bodies,
maps:new(),
fun(D, Pair) ->
gleam@dict:insert(
D,
erlang:element(1, Pair),
erlang:element(2, Pair)
)
end
),
New_responses_dict = gleam@list:fold(
New_responses,
maps:new(),
fun(D@1, Pair@1) ->
gleam@dict:insert(
D@1,
erlang:element(1, Pair@1),
erlang:element(2, Pair@1)
)
end
),
New_schemas = gleam@dict:fold(
Final_imports,
erlang:element(2, Components),
fun(D@2, Frag_name, Pair@2) ->
{_, Target_schema} = Pair@2,
case {gleam@dict:has_key(D@2, Frag_name),
Target_schema} of
{true, _} ->
D@2;
{false, {inline, _}} ->
gleam@dict:insert(
D@2,
Frag_name,
Target_schema
);
{false, _} ->
D@2
end
end
),
{ok,
{{components,
New_schemas,
erlang:element(3, Components),
New_request_bodies,
New_responses_dict,
erlang:element(6, Components),
erlang:element(7, Components),
erlang:element(8, Components),
erlang:element(9, Components),
erlang:element(10, Components),
erlang:element(11, Components)},
Final_imports}}
end
)
end
).
-file("src/oaspec/internal/openapi/external_loader.gleam", 1324).
?DOC(false).
-spec rewrite_object_properties(
gleam@dict:dict(binary(), oaspec@internal@openapi@schema:schema_ref()),
binary(),
fun((binary()) -> {ok,
oaspec@internal@openapi@spec:open_api_spec(oaspec@internal@openapi@spec:unresolved())} |
{error, oaspec@openapi@diagnostic:diagnostic()}),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()}),
list(binary())
) -> {ok,
{gleam@dict:dict(binary(), oaspec@internal@openapi@schema:schema_ref()),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()})}} |
{error, oaspec@openapi@diagnostic:diagnostic()}.
rewrite_object_properties(
Properties,
Base_dir,
Parse_file,
Imports,
Original_local_names
) ->
Entries = maps:to_list(Properties),
gleam@result:'try'(
gleam@list:try_fold(
Entries,
{[], Imports},
fun(Acc, Entry) ->
{Prop_acc, Imports@1} = Acc,
{Prop_name, Prop_ref} = Entry,
gleam@result:'try'(
maybe_hoist_ref(
Prop_ref,
Base_dir,
Parse_file,
Imports@1,
Original_local_names
),
fun(_use0) ->
{New_ref, New_imports} = _use0,
{ok, {[{Prop_name, New_ref} | Prop_acc], New_imports}}
end
)
end
),
fun(_use0@1) ->
{New_entries, New_imports@1} = _use0@1,
New_properties = gleam@list:fold(
New_entries,
maps:new(),
fun(D, Pair) ->
gleam@dict:insert(
D,
erlang:element(1, Pair),
erlang:element(2, Pair)
)
end
),
{ok, {New_properties, New_imports@1}}
end
).
-file("src/oaspec/internal/openapi/external_loader.gleam", 1360).
?DOC(false).
-spec rewrite_additional_properties(
oaspec@internal@openapi@schema:additional_properties(),
binary(),
fun((binary()) -> {ok,
oaspec@internal@openapi@spec:open_api_spec(oaspec@internal@openapi@spec:unresolved())} |
{error, oaspec@openapi@diagnostic:diagnostic()}),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()}),
list(binary())
) -> {ok,
{oaspec@internal@openapi@schema:additional_properties(),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()})}} |
{error, oaspec@openapi@diagnostic:diagnostic()}.
rewrite_additional_properties(
Additional,
Base_dir,
Parse_file,
Imports,
Original_local_names
) ->
case Additional of
{typed, Ref} ->
gleam@result:'try'(
maybe_hoist_ref(
Ref,
Base_dir,
Parse_file,
Imports,
Original_local_names
),
fun(_use0) ->
{New_ref, New_imports} = _use0,
{ok, {{typed, New_ref}, New_imports}}
end
);
_ ->
{ok, {Additional, Imports}}
end.
-file("src/oaspec/internal/openapi/external_loader.gleam", 1389).
?DOC(false).
-spec rewrite_schema_list(
list(oaspec@internal@openapi@schema:schema_ref()),
binary(),
fun((binary()) -> {ok,
oaspec@internal@openapi@spec:open_api_spec(oaspec@internal@openapi@spec:unresolved())} |
{error, oaspec@openapi@diagnostic:diagnostic()}),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()}),
list(binary())
) -> {ok,
{list(oaspec@internal@openapi@schema:schema_ref()),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()})}} |
{error, oaspec@openapi@diagnostic:diagnostic()}.
rewrite_schema_list(
Branches,
Base_dir,
Parse_file,
Imports,
Original_local_names
) ->
gleam@result:'try'(
gleam@list:try_fold(
Branches,
{[], Imports},
fun(Acc, Branch) ->
{Collected, Imports@1} = Acc,
gleam@result:'try'(
maybe_hoist_ref(
Branch,
Base_dir,
Parse_file,
Imports@1,
Original_local_names
),
fun(_use0) ->
{New_branch, New_imports} = _use0,
{ok, {[New_branch | Collected], New_imports}}
end
)
end
),
fun(_use0@1) ->
{Rewritten, New_imports@1} = _use0@1,
{ok, {lists:reverse(Rewritten), New_imports@1}}
end
).
-file("src/oaspec/internal/openapi/external_loader.gleam", 318).
?DOC(false).
-spec process_nested_property_refs(
oaspec@internal@openapi@spec:components(oaspec@internal@openapi@spec:unresolved()),
binary(),
fun((binary()) -> {ok,
oaspec@internal@openapi@spec:open_api_spec(oaspec@internal@openapi@spec:unresolved())} |
{error, oaspec@openapi@diagnostic:diagnostic()}),
list(binary()),
gleam@dict:dict(binary(), binary())
) -> {ok,
{oaspec@internal@openapi@spec:components(oaspec@internal@openapi@spec:unresolved()),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()})}} |
{error, oaspec@openapi@diagnostic:diagnostic()}.
process_nested_property_refs(
Components,
Base_dir,
Parse_file,
Original_local_names,
Top_imported
) ->
Entries = maps:to_list(erlang:element(2, Components)),
Seeded_imports = gleam@dict:fold(
Top_imported,
maps:new(),
fun(D, Frag_name, Source_path) ->
gleam@dict:insert(D, Frag_name, {Source_path, no_target()})
end
),
gleam@result:'try'(
gleam@list:try_fold(
Entries,
{[], Seeded_imports},
fun(Acc, Entry) ->
{Rewritten_acc, Imports} = Acc,
{Name, Schema_ref} = Entry,
case Schema_ref of
{inline,
{object_schema,
Metadata,
Properties,
Required,
Additional_properties,
Min_properties,
Max_properties}} ->
gleam@result:'try'(
rewrite_object_properties(
Properties,
Base_dir,
Parse_file,
Imports,
Original_local_names
),
fun(_use0) ->
{New_properties, Props_imports} = _use0,
gleam@result:'try'(
rewrite_additional_properties(
Additional_properties,
Base_dir,
Parse_file,
Props_imports,
Original_local_names
),
fun(_use0@1) ->
{New_additional_properties, New_imports} = _use0@1,
New_obj = {object_schema,
Metadata,
New_properties,
Required,
New_additional_properties,
Min_properties,
Max_properties},
{ok,
{[{Name, {inline, New_obj}} |
Rewritten_acc],
New_imports}}
end
)
end
);
{inline,
{array_schema,
Metadata@1,
Items,
Min_items,
Max_items,
Unique_items}} ->
gleam@result:'try'(
maybe_hoist_ref(
Items,
Base_dir,
Parse_file,
Imports,
Original_local_names
),
fun(_use0@2) ->
{New_items, New_imports@1} = _use0@2,
New_arr = {array_schema,
Metadata@1,
New_items,
Min_items,
Max_items,
Unique_items},
{ok,
{[{Name, {inline, New_arr}} | Rewritten_acc],
New_imports@1}}
end
);
{inline, {all_of_schema, Metadata@2, Branches}} ->
gleam@result:'try'(
rewrite_schema_list(
Branches,
Base_dir,
Parse_file,
Imports,
Original_local_names
),
fun(_use0@3) ->
{New_branches, New_imports@2} = _use0@3,
New_all = {all_of_schema,
Metadata@2,
New_branches},
{ok,
{[{Name, {inline, New_all}} | Rewritten_acc],
New_imports@2}}
end
);
{inline,
{one_of_schema, Metadata@3, Branches@1, Discriminator}} ->
gleam@result:'try'(
rewrite_schema_list(
Branches@1,
Base_dir,
Parse_file,
Imports,
Original_local_names
),
fun(_use0@4) ->
{New_branches@1, New_imports@3} = _use0@4,
New_one = {one_of_schema,
Metadata@3,
New_branches@1,
Discriminator},
{ok,
{[{Name, {inline, New_one}} | Rewritten_acc],
New_imports@3}}
end
);
{inline,
{any_of_schema, Metadata@4, Branches@2, Discriminator@1}} ->
gleam@result:'try'(
rewrite_schema_list(
Branches@2,
Base_dir,
Parse_file,
Imports,
Original_local_names
),
fun(_use0@5) ->
{New_branches@2, New_imports@4} = _use0@5,
New_any = {any_of_schema,
Metadata@4,
New_branches@2,
Discriminator@1},
{ok,
{[{Name, {inline, New_any}} | Rewritten_acc],
New_imports@4}}
end
);
_ ->
{ok, {[{Name, Schema_ref} | Rewritten_acc], Imports}}
end
end
),
fun(_use0@6) ->
{Rewritten, Imports@1} = _use0@6,
Merged = gleam@list:fold(
Rewritten,
maps:new(),
fun(D@1, Pair) ->
gleam@dict:insert(
D@1,
erlang:element(1, Pair),
erlang:element(2, Pair)
)
end
),
Merged@1 = gleam@dict:fold(
Imports@1,
Merged,
fun(D@2, Frag_name@1, Pair@1) ->
{_, Target_schema} = Pair@1,
case {gleam@dict:has_key(D@2, Frag_name@1), Target_schema} of
{true, _} ->
D@2;
{false, {inline, _}} ->
gleam@dict:insert(D@2, Frag_name@1, Target_schema);
{false, _} ->
D@2
end
end
),
{ok,
{{components,
Merged@1,
erlang:element(3, Components),
erlang:element(4, Components),
erlang:element(5, Components),
erlang:element(6, Components),
erlang:element(7, Components),
erlang:element(8, Components),
erlang:element(9, Components),
erlang:element(10, Components),
erlang:element(11, Components)},
Imports@1}}
end
).
-file("src/oaspec/internal/openapi/external_loader.gleam", 809).
?DOC(false).
-spec rewrite_callback_entries(
gleam@dict:dict(binary(), oaspec@internal@openapi@spec:ref_or(oaspec@internal@openapi@spec:path_item(oaspec@internal@openapi@spec:unresolved()))),
binary(),
fun((binary()) -> {ok,
oaspec@internal@openapi@spec:open_api_spec(oaspec@internal@openapi@spec:unresolved())} |
{error, oaspec@openapi@diagnostic:diagnostic()}),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()}),
list(binary())
) -> {ok,
{gleam@dict:dict(binary(), oaspec@internal@openapi@spec:ref_or(oaspec@internal@openapi@spec:path_item(oaspec@internal@openapi@spec:unresolved()))),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()})}} |
{error, oaspec@openapi@diagnostic:diagnostic()}.
rewrite_callback_entries(
Entries,
Base_dir,
Parse_file,
Imports,
Original_local_names
) ->
Pairs = maps:to_list(Entries),
gleam@result:'try'(
gleam@list:try_fold(
Pairs,
{[], Imports},
fun(Acc, Entry) ->
{Collected, Imports@1} = Acc,
{Url_expr, Ref_or_item} = Entry,
case Ref_or_item of
{value, Path_item} ->
gleam@result:'try'(
rewrite_path_item(
Path_item,
Base_dir,
Parse_file,
Imports@1,
Original_local_names
),
fun(_use0) ->
{New_path_item, New_imports} = _use0,
{ok,
{[{Url_expr, {value, New_path_item}} |
Collected],
New_imports}}
end
);
{ref, _} ->
{ok, {[{Url_expr, Ref_or_item} | Collected], Imports@1}}
end
end
),
fun(_use0@1) ->
{Rewritten, New_imports@1} = _use0@1,
New_map = gleam@list:fold(
Rewritten,
maps:new(),
fun(D, Pair) ->
gleam@dict:insert(
D,
erlang:element(1, Pair),
erlang:element(2, Pair)
)
end
),
{ok, {New_map, New_imports@1}}
end
).
-file("src/oaspec/internal/openapi/external_loader.gleam", 562).
?DOC(false).
-spec rewrite_path_item(
oaspec@internal@openapi@spec:path_item(oaspec@internal@openapi@spec:unresolved()),
binary(),
fun((binary()) -> {ok,
oaspec@internal@openapi@spec:open_api_spec(oaspec@internal@openapi@spec:unresolved())} |
{error, oaspec@openapi@diagnostic:diagnostic()}),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()}),
list(binary())
) -> {ok,
{oaspec@internal@openapi@spec:path_item(oaspec@internal@openapi@spec:unresolved()),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()})}} |
{error, oaspec@openapi@diagnostic:diagnostic()}.
rewrite_path_item(
Path_item,
Base_dir,
Parse_file,
Imports,
Original_local_names
) ->
gleam@result:'try'(
rewrite_parameter_list(
erlang:element(12, Path_item),
Base_dir,
Parse_file,
Imports,
Original_local_names
),
fun(_use0) ->
{New_parameters, Imports_after_params} = _use0,
rewrite_path_item_methods(
{path_item,
erlang:element(2, Path_item),
erlang:element(3, Path_item),
erlang:element(4, Path_item),
erlang:element(5, Path_item),
erlang:element(6, Path_item),
erlang:element(7, Path_item),
erlang:element(8, Path_item),
erlang:element(9, Path_item),
erlang:element(10, Path_item),
erlang:element(11, Path_item),
New_parameters,
erlang:element(13, Path_item)},
Base_dir,
Parse_file,
Imports_after_params,
Original_local_names
)
end
).
-file("src/oaspec/internal/openapi/external_loader.gleam", 593).
?DOC(false).
-spec rewrite_path_item_methods(
oaspec@internal@openapi@spec:path_item(oaspec@internal@openapi@spec:unresolved()),
binary(),
fun((binary()) -> {ok,
oaspec@internal@openapi@spec:open_api_spec(oaspec@internal@openapi@spec:unresolved())} |
{error, oaspec@openapi@diagnostic:diagnostic()}),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()}),
list(binary())
) -> {ok,
{oaspec@internal@openapi@spec:path_item(oaspec@internal@openapi@spec:unresolved()),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()})}} |
{error, oaspec@openapi@diagnostic:diagnostic()}.
rewrite_path_item_methods(
Path_item,
Base_dir,
Parse_file,
Imports,
Original_local_names
) ->
gleam@result:'try'(
rewrite_optional_operation(
erlang:element(4, Path_item),
Base_dir,
Parse_file,
Imports,
Original_local_names
),
fun(_use0) ->
{Get_op, Imports1} = _use0,
gleam@result:'try'(
rewrite_optional_operation(
erlang:element(5, Path_item),
Base_dir,
Parse_file,
Imports1,
Original_local_names
),
fun(_use0@1) ->
{Post_op, Imports2} = _use0@1,
gleam@result:'try'(
rewrite_optional_operation(
erlang:element(6, Path_item),
Base_dir,
Parse_file,
Imports2,
Original_local_names
),
fun(_use0@2) ->
{Put_op, Imports3} = _use0@2,
gleam@result:'try'(
rewrite_optional_operation(
erlang:element(7, Path_item),
Base_dir,
Parse_file,
Imports3,
Original_local_names
),
fun(_use0@3) ->
{Delete_op, Imports4} = _use0@3,
gleam@result:'try'(
rewrite_optional_operation(
erlang:element(8, Path_item),
Base_dir,
Parse_file,
Imports4,
Original_local_names
),
fun(_use0@4) ->
{Patch_op, Imports5} = _use0@4,
gleam@result:'try'(
rewrite_optional_operation(
erlang:element(9, Path_item),
Base_dir,
Parse_file,
Imports5,
Original_local_names
),
fun(_use0@5) ->
{Head_op, Imports6} = _use0@5,
gleam@result:'try'(
rewrite_optional_operation(
erlang:element(
10,
Path_item
),
Base_dir,
Parse_file,
Imports6,
Original_local_names
),
fun(_use0@6) ->
{Options_op,
Imports7} = _use0@6,
gleam@result:'try'(
rewrite_optional_operation(
erlang:element(
11,
Path_item
),
Base_dir,
Parse_file,
Imports7,
Original_local_names
),
fun(_use0@7) ->
{Trace_op,
Final_imports} = _use0@7,
{ok,
{{path_item,
erlang:element(
2,
Path_item
),
erlang:element(
3,
Path_item
),
Get_op,
Post_op,
Put_op,
Delete_op,
Patch_op,
Head_op,
Options_op,
Trace_op,
erlang:element(
12,
Path_item
),
erlang:element(
13,
Path_item
)},
Final_imports}}
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
).
-file("src/oaspec/internal/openapi/external_loader.gleam", 675).
?DOC(false).
-spec rewrite_optional_operation(
gleam@option:option(oaspec@internal@openapi@spec:operation(oaspec@internal@openapi@spec:unresolved())),
binary(),
fun((binary()) -> {ok,
oaspec@internal@openapi@spec:open_api_spec(oaspec@internal@openapi@spec:unresolved())} |
{error, oaspec@openapi@diagnostic:diagnostic()}),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()}),
list(binary())
) -> {ok,
{gleam@option:option(oaspec@internal@openapi@spec:operation(oaspec@internal@openapi@spec:unresolved())),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()})}} |
{error, oaspec@openapi@diagnostic:diagnostic()}.
rewrite_optional_operation(
Op,
Base_dir,
Parse_file,
Imports,
Original_local_names
) ->
case Op of
{some, Operation} ->
gleam@result:'try'(
rewrite_operation(
Operation,
Base_dir,
Parse_file,
Imports,
Original_local_names
),
fun(_use0) ->
{New_op, New_imports} = _use0,
{ok, {{some, New_op}, New_imports}}
end
);
none ->
{ok, {none, Imports}}
end.
-file("src/oaspec/internal/openapi/external_loader.gleam", 703).
?DOC(false).
-spec rewrite_operation(
oaspec@internal@openapi@spec:operation(oaspec@internal@openapi@spec:unresolved()),
binary(),
fun((binary()) -> {ok,
oaspec@internal@openapi@spec:open_api_spec(oaspec@internal@openapi@spec:unresolved())} |
{error, oaspec@openapi@diagnostic:diagnostic()}),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()}),
list(binary())
) -> {ok,
{oaspec@internal@openapi@spec:operation(oaspec@internal@openapi@spec:unresolved()),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()})}} |
{error, oaspec@openapi@diagnostic:diagnostic()}.
rewrite_operation(
Operation,
Base_dir,
Parse_file,
Imports,
Original_local_names
) ->
gleam@result:'try'(
rewrite_parameter_list(
erlang:element(6, Operation),
Base_dir,
Parse_file,
Imports,
Original_local_names
),
fun(_use0) ->
{New_params, Imports_after_params} = _use0,
gleam@result:'try'(
rewrite_optional_request_body(
erlang:element(7, Operation),
Base_dir,
Parse_file,
Imports_after_params,
Original_local_names
),
fun(_use0@1) ->
{New_body, Imports_after_body} = _use0@1,
gleam@result:'try'(
rewrite_response_map(
erlang:element(8, Operation),
Base_dir,
Parse_file,
Imports_after_body,
Original_local_names
),
fun(_use0@2) ->
{New_responses, Imports_after_responses} = _use0@2,
gleam@result:'try'(
rewrite_callback_map(
erlang:element(11, Operation),
Base_dir,
Parse_file,
Imports_after_responses,
Original_local_names
),
fun(_use0@3) ->
{New_callbacks, Final_imports} = _use0@3,
{ok,
{{operation,
erlang:element(2, Operation),
erlang:element(3, Operation),
erlang:element(4, Operation),
erlang:element(5, Operation),
New_params,
New_body,
New_responses,
erlang:element(9, Operation),
erlang:element(10, Operation),
New_callbacks,
erlang:element(12, Operation),
erlang:element(13, Operation)},
Final_imports}}
end
)
end
)
end
)
end
).
-file("src/oaspec/internal/openapi/external_loader.gleam", 763).
?DOC(false).
-spec rewrite_callback_map(
gleam@dict:dict(binary(), oaspec@internal@openapi@spec:ref_or(oaspec@internal@openapi@spec:callback(oaspec@internal@openapi@spec:unresolved()))),
binary(),
fun((binary()) -> {ok,
oaspec@internal@openapi@spec:open_api_spec(oaspec@internal@openapi@spec:unresolved())} |
{error, oaspec@openapi@diagnostic:diagnostic()}),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()}),
list(binary())
) -> {ok,
{gleam@dict:dict(binary(), oaspec@internal@openapi@spec:ref_or(oaspec@internal@openapi@spec:callback(oaspec@internal@openapi@spec:unresolved()))),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()})}} |
{error, oaspec@openapi@diagnostic:diagnostic()}.
rewrite_callback_map(
Callbacks,
Base_dir,
Parse_file,
Imports,
Original_local_names
) ->
Entries = maps:to_list(Callbacks),
gleam@result:'try'(
gleam@list:try_fold(
Entries,
{[], Imports},
fun(Acc, Entry) ->
{Collected, Imports@1} = Acc,
{Name, Ref_or_callback} = Entry,
case Ref_or_callback of
{ref, _} = R ->
{ok, {[{Name, R} | Collected], Imports@1}};
{value, Callback} ->
gleam@result:'try'(
rewrite_callback_entries(
erlang:element(2, Callback),
Base_dir,
Parse_file,
Imports@1,
Original_local_names
),
fun(_use0) ->
{New_entries, New_imports} = _use0,
New_callback = {value, {callback, New_entries}},
{ok,
{[{Name, New_callback} | Collected],
New_imports}}
end
)
end
end
),
fun(_use0@1) ->
{Rewritten, New_imports@1} = _use0@1,
New_callbacks = gleam@list:fold(
Rewritten,
maps:new(),
fun(D, Pair) ->
gleam@dict:insert(
D,
erlang:element(1, Pair),
erlang:element(2, Pair)
)
end
),
{ok, {New_callbacks, New_imports@1}}
end
).
-file("src/oaspec/internal/openapi/external_loader.gleam", 474).
?DOC(false).
-spec process_operation_schemas(
gleam@dict:dict(binary(), oaspec@internal@openapi@spec:ref_or(oaspec@internal@openapi@spec:path_item(oaspec@internal@openapi@spec:unresolved()))),
oaspec@internal@openapi@spec:components(oaspec@internal@openapi@spec:unresolved()),
binary(),
fun((binary()) -> {ok,
oaspec@internal@openapi@spec:open_api_spec(oaspec@internal@openapi@spec:unresolved())} |
{error, oaspec@openapi@diagnostic:diagnostic()}),
list(binary()),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()})
) -> {ok,
{gleam@dict:dict(binary(), oaspec@internal@openapi@spec:ref_or(oaspec@internal@openapi@spec:path_item(oaspec@internal@openapi@spec:unresolved()))),
oaspec@internal@openapi@spec:components(oaspec@internal@openapi@spec:unresolved())}} |
{error, oaspec@openapi@diagnostic:diagnostic()}.
process_operation_schemas(
Paths,
Components,
Base_dir,
Parse_file,
Original_local_names,
Seeded_imports
) ->
Entries = maps:to_list(Paths),
gleam@result:'try'(
gleam@list:try_fold(
Entries,
{[], Seeded_imports},
fun(Acc, Entry) ->
{Collected, Imports} = Acc,
{Path_key, Ref_or_item} = Entry,
case Ref_or_item of
{value, Path_item} ->
gleam@result:'try'(
rewrite_path_item(
Path_item,
Base_dir,
Parse_file,
Imports,
Original_local_names
),
fun(_use0) ->
{New_path_item, New_imports} = _use0,
{ok,
{[{Path_key, {value, New_path_item}} |
Collected],
New_imports}}
end
);
{ref, _} ->
{ok, {[{Path_key, Ref_or_item} | Collected], Imports}}
end
end
),
fun(_use0@1) ->
{Rewritten, Final_imports} = _use0@1,
New_paths = gleam@list:fold(
Rewritten,
maps:new(),
fun(D, Pair) ->
gleam@dict:insert(
D,
erlang:element(1, Pair),
erlang:element(2, Pair)
)
end
),
New_schemas = gleam@dict:fold(
Final_imports,
erlang:element(2, Components),
fun(D@1, Frag_name, Pair@1) ->
{_, Target_schema} = Pair@1,
case {gleam@dict:has_key(D@1, Frag_name), Target_schema} of
{true, _} ->
D@1;
{false, {inline, _}} ->
gleam@dict:insert(D@1, Frag_name, Target_schema);
{false, _} ->
D@1
end
end
),
{ok,
{New_paths,
{components,
New_schemas,
erlang:element(3, Components),
erlang:element(4, Components),
erlang:element(5, Components),
erlang:element(6, Components),
erlang:element(7, Components),
erlang:element(8, Components),
erlang:element(9, Components),
erlang:element(10, Components),
erlang:element(11, Components)}}}
end
).
-file("src/oaspec/internal/openapi/external_loader.gleam", 1230).
?DOC(false).
-spec process_component_path_items(
oaspec@internal@openapi@spec:components(oaspec@internal@openapi@spec:unresolved()),
binary(),
fun((binary()) -> {ok,
oaspec@internal@openapi@spec:open_api_spec(oaspec@internal@openapi@spec:unresolved())} |
{error, oaspec@openapi@diagnostic:diagnostic()}),
list(binary()),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()})
) -> {ok,
{oaspec@internal@openapi@spec:components(oaspec@internal@openapi@spec:unresolved()),
gleam@dict:dict(binary(), {binary(),
oaspec@internal@openapi@schema:schema_ref()})}} |
{error, oaspec@openapi@diagnostic:diagnostic()}.
process_component_path_items(
Components,
Base_dir,
Parse_file,
Original_local_names,
Seeded_imports
) ->
Entries = maps:to_list(erlang:element(7, Components)),
gleam@result:'try'(
gleam@list:try_fold(
Entries,
{[], Seeded_imports},
fun(Acc, Entry) ->
{Collected, Imports} = Acc,
{Name, Ref_or_item} = Entry,
case Ref_or_item of
{value, Path_item} ->
gleam@result:'try'(
rewrite_path_item(
Path_item,
Base_dir,
Parse_file,
Imports,
Original_local_names
),
fun(_use0) ->
{New_path_item, New_imports} = _use0,
{ok,
{[{Name, {value, New_path_item}} |
Collected],
New_imports}}
end
);
{ref, _} ->
{ok, {[{Name, Ref_or_item} | Collected], Imports}}
end
end
),
fun(_use0@1) ->
{Rewritten, Final_imports} = _use0@1,
New_path_items = gleam@list:fold(
Rewritten,
maps:new(),
fun(D, Pair) ->
gleam@dict:insert(
D,
erlang:element(1, Pair),
erlang:element(2, Pair)
)
end
),
New_schemas = gleam@dict:fold(
Final_imports,
erlang:element(2, Components),
fun(D@1, Frag_name, Pair@1) ->
{_, Target_schema} = Pair@1,
case {gleam@dict:has_key(D@1, Frag_name), Target_schema} of
{true, _} ->
D@1;
{false, {inline, _}} ->
gleam@dict:insert(D@1, Frag_name, Target_schema);
{false, _} ->
D@1
end
end
),
{ok,
{{components,
New_schemas,
erlang:element(3, Components),
erlang:element(4, Components),
erlang:element(5, Components),
erlang:element(6, Components),
New_path_items,
erlang:element(8, Components),
erlang:element(9, Components),
erlang:element(10, Components),
erlang:element(11, Components)},
Final_imports}}
end
).
-file("src/oaspec/internal/openapi/external_loader.gleam", 72).
?DOC(false).
-spec resolve_external_component_refs(
oaspec@internal@openapi@spec:open_api_spec(oaspec@internal@openapi@spec:unresolved()),
gleam@option:option(binary()),
fun((binary()) -> {ok,
oaspec@internal@openapi@spec:open_api_spec(oaspec@internal@openapi@spec:unresolved())} |
{error, oaspec@openapi@diagnostic:diagnostic()})
) -> {ok,
oaspec@internal@openapi@spec:open_api_spec(oaspec@internal@openapi@spec:unresolved())} |
{error, oaspec@openapi@diagnostic:diagnostic()}.
resolve_external_component_refs(Spec, Base_dir, Parse_file) ->
case {erlang:element(5, Spec), Base_dir} of
{{some, Components}, {some, Dir}} ->
Original_local_names = oaspec@internal@openapi@external_loader_planner:local_schema_names(
maps:to_list(erlang:element(2, Components))
),
gleam@result:'try'(
process_components(
Components,
Dir,
Parse_file,
Original_local_names
),
fun(_use0) ->
{Top_resolved, Top_imported} = _use0,
gleam@result:'try'(
process_whole_object_refs(Top_resolved, Dir, Parse_file),
fun(Whole_resolved) ->
gleam@result:'try'(
process_nested_property_refs(
Whole_resolved,
Dir,
Parse_file,
Original_local_names,
Top_imported
),
fun(_use0@1) ->
{Nested_resolved, Nested_imports} = _use0@1,
gleam@result:'try'(
process_parameter_schemas(
Nested_resolved,
Dir,
Parse_file,
Original_local_names,
Nested_imports
),
fun(_use0@2) ->
{Param_resolved, Param_imports} = _use0@2,
gleam@result:'try'(
process_body_response_schemas(
Param_resolved,
Dir,
Parse_file,
Original_local_names,
Param_imports
),
fun(_use0@3) ->
{Body_resolved,
Body_imports} = _use0@3,
gleam@result:'try'(
process_component_headers(
Body_resolved,
Dir,
Parse_file,
Original_local_names,
Body_imports
),
fun(_use0@4) ->
{Header_resolved,
Header_imports} = _use0@4,
gleam@result:'try'(
process_component_path_items(
Header_resolved,
Dir,
Parse_file,
Original_local_names,
Header_imports
),
fun(_use0@5) ->
{Path_items_resolved,
Path_items_imports} = _use0@5,
gleam@result:'try'(
process_operation_schemas(
erlang:element(
4,
Spec
),
Path_items_resolved,
Dir,
Parse_file,
Original_local_names,
Path_items_imports
),
fun(
_use0@6
) ->
{New_paths,
Op_final_components} = _use0@6,
{ok,
{open_api_spec,
erlang:element(
2,
Spec
),
erlang:element(
3,
Spec
),
New_paths,
{some,
Op_final_components},
erlang:element(
6,
Spec
),
erlang:element(
7,
Spec
),
erlang:element(
8,
Spec
),
erlang:element(
9,
Spec
),
erlang:element(
10,
Spec
),
erlang:element(
11,
Spec
)}}
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
);
{_, _} ->
{ok, Spec}
end.