-module(nori@builder@document_builder). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/nori/builder/document_builder.gleam"). -export([new/2, openapi_version/2, description/2, terms_of_service/2, contact/2, contact_info/4, license/2, license_info/3, license_spdx/3, summary/2, components/2, external_docs/2, external_docs_with_description/3, server/2, server_with_description/3, add_server/2, path/3, security/2, tag/2, tag_with_description/3, add_tag/2, build/1]). -export_type([document_builder/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(" Builder for constructing OpenAPI documents with a fluent API.\n"). -opaque document_builder() :: {document_builder, nori@internal@version:open_api_version(), binary(), binary(), gleam@option:option(binary()), gleam@option:option(binary()), gleam@option:option(nori@info:contact()), gleam@option:option(nori@info:license()), gleam@option:option(binary()), list(nori@server:server()), list({binary(), nori@operation:path_item()}), gleam@option:option(nori@components:components()), list(gleam@dict:dict(binary(), list(binary()))), list(nori@operation:tag()), gleam@option:option(nori@schema:external_documentation())}. -file("src/nori/builder/document_builder.gleam", 37). ?DOC( " Creates a new document builder with the given title and API version.\n" " Defaults to OpenAPI 3.1.0.\n" ). -spec new(binary(), binary()) -> document_builder(). new(Title, Api_version) -> {document_builder, v310, Title, Api_version, none, none, none, none, none, [], [], none, [], [], none}. -file("src/nori/builder/document_builder.gleam", 57). ?DOC(" Sets the OpenAPI version.\n"). -spec openapi_version( document_builder(), nori@internal@version:open_api_version() ) -> document_builder(). openapi_version(Builder, V) -> {document_builder, V, erlang:element(3, Builder), erlang:element(4, Builder), erlang:element(5, Builder), erlang:element(6, Builder), erlang:element(7, Builder), erlang:element(8, Builder), erlang:element(9, Builder), erlang:element(10, Builder), erlang:element(11, Builder), erlang:element(12, Builder), erlang:element(13, Builder), erlang:element(14, Builder), erlang:element(15, Builder)}. -file("src/nori/builder/document_builder.gleam", 65). ?DOC(" Sets the description.\n"). -spec description(document_builder(), binary()) -> document_builder(). description(Builder, Desc) -> {document_builder, erlang:element(2, Builder), erlang:element(3, Builder), erlang:element(4, Builder), {some, Desc}, erlang:element(6, Builder), erlang:element(7, Builder), erlang:element(8, Builder), erlang:element(9, Builder), erlang:element(10, Builder), erlang:element(11, Builder), erlang:element(12, Builder), erlang:element(13, Builder), erlang:element(14, Builder), erlang:element(15, Builder)}. -file("src/nori/builder/document_builder.gleam", 70). ?DOC(" Sets the terms of service URL.\n"). -spec terms_of_service(document_builder(), binary()) -> document_builder(). terms_of_service(Builder, Url) -> {document_builder, erlang:element(2, Builder), erlang:element(3, Builder), erlang:element(4, Builder), erlang:element(5, Builder), {some, Url}, erlang:element(7, Builder), erlang:element(8, Builder), erlang:element(9, Builder), erlang:element(10, Builder), erlang:element(11, Builder), erlang:element(12, Builder), erlang:element(13, Builder), erlang:element(14, Builder), erlang:element(15, Builder)}. -file("src/nori/builder/document_builder.gleam", 78). ?DOC(" Sets the contact information.\n"). -spec contact(document_builder(), nori@info:contact()) -> document_builder(). contact(Builder, C) -> {document_builder, erlang:element(2, Builder), erlang:element(3, Builder), erlang:element(4, Builder), erlang:element(5, Builder), erlang:element(6, Builder), {some, C}, erlang:element(8, Builder), erlang:element(9, Builder), erlang:element(10, Builder), erlang:element(11, Builder), erlang:element(12, Builder), erlang:element(13, Builder), erlang:element(14, Builder), erlang:element(15, Builder)}. -file("src/nori/builder/document_builder.gleam", 83). ?DOC(" Sets the contact information with name, email, and URL.\n"). -spec contact_info(document_builder(), binary(), binary(), binary()) -> document_builder(). contact_info(Builder, Name, Email, Url) -> C = {contact, {some, Name}, {some, Url}, {some, Email}, maps:new()}, {document_builder, erlang:element(2, Builder), erlang:element(3, Builder), erlang:element(4, Builder), erlang:element(5, Builder), erlang:element(6, Builder), {some, C}, erlang:element(8, Builder), erlang:element(9, Builder), erlang:element(10, Builder), erlang:element(11, Builder), erlang:element(12, Builder), erlang:element(13, Builder), erlang:element(14, Builder), erlang:element(15, Builder)}. -file("src/nori/builder/document_builder.gleam", 100). ?DOC(" Sets the license.\n"). -spec license(document_builder(), nori@info:license()) -> document_builder(). license(Builder, L) -> {document_builder, erlang:element(2, Builder), erlang:element(3, Builder), erlang:element(4, Builder), erlang:element(5, Builder), erlang:element(6, Builder), erlang:element(7, Builder), {some, L}, erlang:element(9, Builder), erlang:element(10, Builder), erlang:element(11, Builder), erlang:element(12, Builder), erlang:element(13, Builder), erlang:element(14, Builder), erlang:element(15, Builder)}. -file("src/nori/builder/document_builder.gleam", 105). ?DOC(" Sets the license with name and URL.\n"). -spec license_info(document_builder(), binary(), binary()) -> document_builder(). license_info(Builder, Name, Url) -> L = {license, Name, none, {some, Url}, maps:new()}, {document_builder, erlang:element(2, Builder), erlang:element(3, Builder), erlang:element(4, Builder), erlang:element(5, Builder), erlang:element(6, Builder), erlang:element(7, Builder), {some, L}, erlang:element(9, Builder), erlang:element(10, Builder), erlang:element(11, Builder), erlang:element(12, Builder), erlang:element(13, Builder), erlang:element(14, Builder), erlang:element(15, Builder)}. -file("src/nori/builder/document_builder.gleam", 121). ?DOC(" Sets the license with SPDX identifier.\n"). -spec license_spdx(document_builder(), binary(), binary()) -> document_builder(). license_spdx(Builder, Name, Identifier) -> L = {license, Name, {some, Identifier}, none, maps:new()}, {document_builder, erlang:element(2, Builder), erlang:element(3, Builder), erlang:element(4, Builder), erlang:element(5, Builder), erlang:element(6, Builder), erlang:element(7, Builder), {some, L}, erlang:element(9, Builder), erlang:element(10, Builder), erlang:element(11, Builder), erlang:element(12, Builder), erlang:element(13, Builder), erlang:element(14, Builder), erlang:element(15, Builder)}. -file("src/nori/builder/document_builder.gleam", 137). ?DOC(" Sets the summary.\n"). -spec summary(document_builder(), binary()) -> document_builder(). summary(Builder, S) -> {document_builder, erlang:element(2, Builder), erlang:element(3, Builder), erlang:element(4, Builder), erlang:element(5, Builder), erlang:element(6, Builder), erlang:element(7, Builder), erlang:element(8, Builder), {some, S}, erlang:element(10, Builder), erlang:element(11, Builder), erlang:element(12, Builder), erlang:element(13, Builder), erlang:element(14, Builder), erlang:element(15, Builder)}. -file("src/nori/builder/document_builder.gleam", 172). ?DOC(" Sets the components.\n"). -spec components(document_builder(), nori@components:components()) -> document_builder(). components(Builder, C) -> {document_builder, erlang:element(2, Builder), erlang:element(3, Builder), erlang:element(4, Builder), erlang:element(5, Builder), erlang:element(6, Builder), erlang:element(7, Builder), erlang:element(8, Builder), erlang:element(9, Builder), erlang:element(10, Builder), erlang:element(11, Builder), {some, C}, erlang:element(13, Builder), erlang:element(14, Builder), erlang:element(15, Builder)}. -file("src/nori/builder/document_builder.gleam", 206). ?DOC(" Sets the external documentation.\n"). -spec external_docs(document_builder(), binary()) -> document_builder(). external_docs(Builder, Url) -> Docs = {external_documentation, Url, none, maps:new()}, {document_builder, erlang:element(2, Builder), erlang:element(3, Builder), erlang:element(4, Builder), erlang:element(5, Builder), erlang:element(6, Builder), erlang:element(7, Builder), erlang:element(8, Builder), erlang:element(9, Builder), erlang:element(10, Builder), erlang:element(11, Builder), erlang:element(12, Builder), erlang:element(13, Builder), erlang:element(14, Builder), {some, Docs}}. -file("src/nori/builder/document_builder.gleam", 217). ?DOC(" Sets the external documentation with description.\n"). -spec external_docs_with_description(document_builder(), binary(), binary()) -> document_builder(). external_docs_with_description(Builder, Url, Desc) -> Docs = {external_documentation, Url, {some, Desc}, maps:new()}, {document_builder, erlang:element(2, Builder), erlang:element(3, Builder), erlang:element(4, Builder), erlang:element(5, Builder), erlang:element(6, Builder), erlang:element(7, Builder), erlang:element(8, Builder), erlang:element(9, Builder), erlang:element(10, Builder), erlang:element(11, Builder), erlang:element(12, Builder), erlang:element(13, Builder), erlang:element(14, Builder), {some, Docs}}. -file("src/nori/builder/document_builder.gleam", 280). -spec do_reverse(list(RJS), list(RJS)) -> list(RJS). do_reverse(Remaining, Acc) -> case Remaining of [] -> Acc; [First | Rest] -> do_reverse(Rest, [First | Acc]) end. -file("src/nori/builder/document_builder.gleam", 276). -spec list_reverse(list(RJP)) -> list(RJP). list_reverse(List) -> do_reverse(List, []). -file("src/nori/builder/document_builder.gleam", 272). -spec append(list(RJM), RJM) -> list(RJM). append(List, Item) -> list_reverse([Item | list_reverse(List)]). -file("src/nori/builder/document_builder.gleam", 142). ?DOC(" Adds a server.\n"). -spec server(document_builder(), binary()) -> document_builder(). server(Builder, Url) -> S = nori@server:new(Url), {document_builder, erlang:element(2, Builder), erlang:element(3, Builder), erlang:element(4, Builder), erlang:element(5, Builder), erlang:element(6, Builder), erlang:element(7, Builder), erlang:element(8, Builder), erlang:element(9, Builder), append(erlang:element(10, Builder), S), erlang:element(11, Builder), erlang:element(12, Builder), erlang:element(13, Builder), erlang:element(14, Builder), erlang:element(15, Builder)}. -file("src/nori/builder/document_builder.gleam", 148). ?DOC(" Adds a server with description.\n"). -spec server_with_description(document_builder(), binary(), binary()) -> document_builder(). server_with_description(Builder, Url, Desc) -> S = nori@server:with_description(Url, Desc), {document_builder, erlang:element(2, Builder), erlang:element(3, Builder), erlang:element(4, Builder), erlang:element(5, Builder), erlang:element(6, Builder), erlang:element(7, Builder), erlang:element(8, Builder), erlang:element(9, Builder), append(erlang:element(10, Builder), S), erlang:element(11, Builder), erlang:element(12, Builder), erlang:element(13, Builder), erlang:element(14, Builder), erlang:element(15, Builder)}. -file("src/nori/builder/document_builder.gleam", 158). ?DOC(" Adds a Server object.\n"). -spec add_server(document_builder(), nori@server:server()) -> document_builder(). add_server(Builder, S) -> {document_builder, erlang:element(2, Builder), erlang:element(3, Builder), erlang:element(4, Builder), erlang:element(5, Builder), erlang:element(6, Builder), erlang:element(7, Builder), erlang:element(8, Builder), erlang:element(9, Builder), append(erlang:element(10, Builder), S), erlang:element(11, Builder), erlang:element(12, Builder), erlang:element(13, Builder), erlang:element(14, Builder), erlang:element(15, Builder)}. -file("src/nori/builder/document_builder.gleam", 163). ?DOC(" Adds a path.\n"). -spec path(document_builder(), binary(), nori@operation:path_item()) -> document_builder(). path(Builder, P, Item) -> {document_builder, erlang:element(2, Builder), erlang:element(3, Builder), erlang:element(4, Builder), erlang:element(5, Builder), erlang:element(6, Builder), erlang:element(7, Builder), erlang:element(8, Builder), erlang:element(9, Builder), erlang:element(10, Builder), append(erlang:element(11, Builder), {P, Item}), erlang:element(12, Builder), erlang:element(13, Builder), erlang:element(14, Builder), erlang:element(15, Builder)}. -file("src/nori/builder/document_builder.gleam", 177). ?DOC(" Adds a security requirement.\n"). -spec security(document_builder(), gleam@dict:dict(binary(), list(binary()))) -> document_builder(). security(Builder, Req) -> {document_builder, erlang:element(2, Builder), erlang:element(3, Builder), erlang:element(4, Builder), erlang:element(5, Builder), erlang:element(6, Builder), erlang:element(7, Builder), erlang:element(8, Builder), erlang:element(9, Builder), erlang:element(10, Builder), erlang:element(11, Builder), erlang:element(12, Builder), append(erlang:element(13, Builder), Req), erlang:element(14, Builder), erlang:element(15, Builder)}. -file("src/nori/builder/document_builder.gleam", 185). ?DOC(" Adds a tag.\n"). -spec tag(document_builder(), binary()) -> document_builder(). tag(Builder, Name) -> T = nori@operation:tag(Name), {document_builder, erlang:element(2, Builder), erlang:element(3, Builder), erlang:element(4, Builder), erlang:element(5, Builder), erlang:element(6, Builder), erlang:element(7, Builder), erlang:element(8, Builder), erlang:element(9, Builder), erlang:element(10, Builder), erlang:element(11, Builder), erlang:element(12, Builder), erlang:element(13, Builder), append(erlang:element(14, Builder), T), erlang:element(15, Builder)}. -file("src/nori/builder/document_builder.gleam", 191). ?DOC(" Adds a tag with description.\n"). -spec tag_with_description(document_builder(), binary(), binary()) -> document_builder(). tag_with_description(Builder, Name, Desc) -> T = nori@operation:tag_with_description(Name, Desc), {document_builder, erlang:element(2, Builder), erlang:element(3, Builder), erlang:element(4, Builder), erlang:element(5, Builder), erlang:element(6, Builder), erlang:element(7, Builder), erlang:element(8, Builder), erlang:element(9, Builder), erlang:element(10, Builder), erlang:element(11, Builder), erlang:element(12, Builder), erlang:element(13, Builder), append(erlang:element(14, Builder), T), erlang:element(15, Builder)}. -file("src/nori/builder/document_builder.gleam", 201). ?DOC(" Adds a Tag object.\n"). -spec add_tag(document_builder(), nori@operation:tag()) -> document_builder(). add_tag(Builder, T) -> {document_builder, erlang:element(2, Builder), erlang:element(3, Builder), erlang:element(4, Builder), erlang:element(5, Builder), erlang:element(6, Builder), erlang:element(7, Builder), erlang:element(8, Builder), erlang:element(9, Builder), erlang:element(10, Builder), erlang:element(11, Builder), erlang:element(12, Builder), erlang:element(13, Builder), append(erlang:element(14, Builder), T), erlang:element(15, Builder)}. -file("src/nori/builder/document_builder.gleam", 287). -spec list_fold(list(RJW), RJY, fun((RJY, RJW) -> RJY)) -> RJY. list_fold(List, Initial, F) -> case List of [] -> Initial; [First | Rest] -> list_fold(Rest, F(Initial, First), F) end. -file("src/nori/builder/document_builder.gleam", 232). ?DOC(" Builds the OpenAPI document.\n"). -spec build(document_builder()) -> nori@document:document(). build(Builder) -> Info = {info, erlang:element(3, Builder), erlang:element(5, Builder), erlang:element(6, Builder), erlang:element(7, Builder), erlang:element(8, Builder), erlang:element(4, Builder), erlang:element(9, Builder), maps:new()}, Paths_dict = case erlang:element(11, Builder) of [] -> none; P -> D = list_fold( P, nori@paths:new(), fun(Acc, Pair) -> nori@paths:add( Acc, erlang:element(1, Pair), erlang:element(2, Pair) ) end ), {some, D} end, {document, erlang:element(2, Builder), Info, none, erlang:element(10, Builder), Paths_dict, maps:new(), erlang:element(12, Builder), erlang:element(13, Builder), erlang:element(14, Builder), erlang:element(15, Builder), maps:new()}.