UNPKG

@rxap/open-api

Version:

This package provides tools for working with OpenAPI specifications in Angular applications. It includes services for configuring and loading OpenAPI definitions, validating requests and responses against schemas, and handling errors. It also offers utili

1,290 lines 51.9 kB
<!doctype html>
<html class="no-js" lang="">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="x-ua-compatible" content="ie=edge">
        <title>angular-open-api</title>
        <meta name="description" content="">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <link rel="icon" type="image/x-icon" href="../images/favicon.ico">
	   <link rel="stylesheet" href="../styles/style.css">
        <link rel="stylesheet" href="../styles/dark.css">
    </head>
    <body>
          <script>
               // Blocking script to avoid flickering dark mode
               // Dark mode toggle button
               var useDark = window.matchMedia('(prefers-color-scheme: dark)');
               var darkModeState = useDark.matches;
               var $darkModeToggleSwitchers = document.querySelectorAll('.dark-mode-switch input');
               var $darkModeToggles = document.querySelectorAll('.dark-mode-switch');
               var darkModeStateLocal = localStorage.getItem('compodoc_darkmode-state');

               function checkToggle(check) {
                    for (var i = 0; i < $darkModeToggleSwitchers.length; i++) {
                         $darkModeToggleSwitchers[i].checked = check;
                    }
               }

               function toggleDarkMode(state) {
                    if (window.localStorage) {
                         localStorage.setItem('compodoc_darkmode-state', state);
                    }

                    checkToggle(state);

                    const hasClass = document.body.classList.contains('dark');

                    if (state) {
                         for (var i = 0; i < $darkModeToggles.length; i++) {
                              $darkModeToggles[i].classList.add('dark');
                         }
                         if (!hasClass) {
                              document.body.classList.add('dark');
                         }
                    } else {
                         for (var i = 0; i < $darkModeToggles.length; i++) {
                              $darkModeToggles[i].classList.remove('dark');
                         }
                         if (hasClass) {
                              document.body.classList.remove('dark');
                         }
                    }
               }

               useDark.addEventListener('change', function (evt) {
                    toggleDarkMode(evt.matches);
               });
               if (darkModeStateLocal) {
                    darkModeState = darkModeStateLocal === 'true';
               }
               toggleDarkMode(darkModeState);
          </script>

        <div class="navbar navbar-default navbar-fixed-top d-md-none p-0">
               <div class="d-flex">
                    <a href="../" class="navbar-brand">angular-open-api</a>
                    <button type="button" class="btn btn-default btn-menu ion-ios-menu" id="btn-menu"></button>
               </div>
        </div>

        <div class="xs-menu menu" id="mobile-menu">
                <div id="book-search-input" role="search"><input type="text" placeholder="Type to search"></div>            <compodoc-menu></compodoc-menu>
        </div>

        <div class="container-fluid main">
           <div class="row main">
               <div class="d-none d-md-block menu">
                   <compodoc-menu mode="normal"></compodoc-menu>
               </div>
               <!-- START CONTENT -->
               <div class="content injectable">
                   <div class="content-data">








<ol class="breadcrumb">
  <li class="breadcrumb-item">Injectables</li>
  <li class="breadcrumb-item" >OpenApiConfigService</li>
</ol>

<ul class="nav nav-tabs" role="tablist">
        <li class="nav-item">
            <a href="#info" 
                class="nav-link"
                class="nav-link active"
                role="tab" id="info-tab" data-bs-toggle="tab" data-link="info">Info</a>
        </li>
        <li class="nav-item">
            <a href="#source" 
                class="nav-link"
                
                role="tab" id="source-tab" data-bs-toggle="tab" data-link="source">Source</a>
        </li>
</ul>

<div class="tab-content">
    <div class="tab-pane fade active in" id="info">
        <p class="comment">
            <h3>File</h3>
        </p>
        <p class="comment">
            <code>src/lib/open-api-config.service.ts</code>
        </p>





            <section data-compodoc="block-index">
    <h3 id="index">Index</h3>
    <table class="table table-sm table-bordered index-table">
        <tbody>
                <tr>
                    <td class="col-md-4">
                        <h6><b>Properties</b></h6>
                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <ul class="index-list">
                            <li>
                                    <span class="modifier">Static</span>
                                <a href="#Config" >Config</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#defaultServerIndex" >defaultServerIndex</a>
                            </li>
                            <li>
                                    <span class="modifier">Static</span>
                                <a href="#DefaultServerIndex" >DefaultServerIndex</a>
                            </li>
                        </ul>
                    </td>
                </tr>

                <tr>
                    <td class="col-md-4">
                        <h6><b>Methods</b></h6>
                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <ul class="index-list">
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#getBaseUrl" >getBaseUrl</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#getOperation" >getOperation</a>
                            </li>
                            <li>
                                    <span class="modifier">Static</span>
                                <a href="#GetOperation" >GetOperation</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#insertServer" >insertServer</a>
                            </li>
                            <li>
                                    <span class="modifier">Static</span>
                                <a href="#InsertServer" >InsertServer</a>
                            </li>
                            <li>
                                    <span class="modifier">Static</span>
                                    <span class="modifier">Async</span>
                                <a href="#Load" >Load</a>
                            </li>
                        </ul>
                    </td>
                </tr>





                    <tr>
                        <td class="col-md-4">
                            <h6><b>Accessors</b></h6>
                        </td>
                    </tr>
                    <tr>
                        <td class="col-md-4">
                            <ul class="index-list">
                                <li>
                                    <a href="#serverIds" >serverIds</a>
                                </li>
                                <li>
                                    <a href="#config" >config</a>
                                </li>
                            </ul>
                        </td>
                    </tr>
        </tbody>
    </table>
</section>

            <section data-compodoc="block-constructor">
    <h3 id="constructor">Constructor</h3>
        <table class="table table-sm table-bordered">
            <tbody>
                <tr>
                    <td class="col-md-4">
<code>constructor(config: OpenAPIV3.Document | null)</code>
                    </td>
                </tr>
                        <tr>
                            <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="34" class="link-to-prism">src/lib/open-api-config.service.ts:34</a></div>
                            </td>
                        </tr>

                <tr>
                    <td class="col-md-4">
                            <div>
                                    <b>Parameters :</b>
                                    <table class="params">
                                        <thead>
                                            <tr>
                                                <td>Name</td>
                                                    <td>Type</td>
                                                <td>Optional</td>
                                            </tr>
                                        </thead>
                                        <tbody>
                                                <tr>
                                                        <td>config</td>
                                                  
                                                        <td>
                                                                    <code>OpenAPIV3.Document | null</code>
                                                        </td>
                                                  
                                                    <td>
                                                            No
                                                    </td>
                                                    
                                                </tr>
                                        </tbody>
                                    </table>
                            </div>
                    </td>
                </tr>
            </tbody>
        </table>
</section>

            <section data-compodoc="block-methods">
    
    <h3 id="methods">
        Methods
    </h3>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="getBaseUrl"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>getBaseUrl</b></span>
                        <a href="#getBaseUrl"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>getBaseUrl(serverIndex: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/number" target="_blank">number</a>, serverId?: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="208"
                                    class="link-to-prism">src/lib/open-api-config.service.ts:208</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                                <td>Default value</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>serverIndex</td>
                                            <td>
                                                            <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/number" target="_blank" >number</a></code>
                                            </td>

                                            <td>
                                                    No
                                            </td>

                                            <td>
                                                    <code>this.defaultServerIndex</code>
                                            </td>

                                        </tr>
                                        <tr>
                                                <td>serverId</td>
                                            <td>
                                                            <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
                                            </td>

                                            <td>
                                                    Yes
                                            </td>

                                            <td>
                                            </td>

                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>        <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="getOperation"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>getOperation</b></span>
                        <a href="#getOperation"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>getOperation(operationId: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="189"
                                    class="link-to-prism">src/lib/open-api-config.service.ts:189</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>operationId</td>
                                            <td>
                                                            <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
                                            </td>

                                            <td>
                                                    No
                                            </td>


                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>        <code><a href="../interfaces/OperationObjectWithMetadata.html" target="_self" >OperationObjectWithMetadata</a></code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="GetOperation"></a>
                    <span class="name">
                            <span class="modifier">Static</span>
                        <span ><b>GetOperation</b></span>
                        <a href="#GetOperation"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>GetOperation(operationId: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="97"
                                    class="link-to-prism">src/lib/open-api-config.service.ts:97</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>operationId</td>
                                            <td>
                                                            <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
                                            </td>

                                            <td>
                                                    No
                                            </td>


                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>        <code><a href="../interfaces/OperationObjectWithMetadata.html" target="_self" >OperationObjectWithMetadata</a></code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="insertServer"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>insertServer</b></span>
                        <a href="#insertServer"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>insertServer(serverConfig: OpenAPIV3.ServerObject, index: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/number" target="_blank">number</a>, serverId?: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="247"
                                    class="link-to-prism">src/lib/open-api-config.service.ts:247</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                                <td>Default value</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>serverConfig</td>
                                            <td>
                                                        <code>OpenAPIV3.ServerObject</code>
                                            </td>

                                            <td>
                                                    No
                                            </td>

                                            <td>
                                            </td>

                                        </tr>
                                        <tr>
                                                <td>index</td>
                                            <td>
                                                            <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/number" target="_blank" >number</a></code>
                                            </td>

                                            <td>
                                                    No
                                            </td>

                                            <td>
                                                    <code>this.defaultServerIndex</code>
                                            </td>

                                        </tr>
                                        <tr>
                                                <td>serverId</td>
                                            <td>
                                                            <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
                                            </td>

                                            <td>
                                                    Yes
                                            </td>

                                            <td>
                                            </td>

                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="InsertServer"></a>
                    <span class="name">
                            <span class="modifier">Static</span>
                        <span ><b>InsertServer</b></span>
                        <a href="#InsertServer"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>InsertServer(serverConfig: OpenAPIV3.ServerObject, index: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/number" target="_blank">number</a>, serverId?: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>, config: OpenAPIV3.Document)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="227"
                                    class="link-to-prism">src/lib/open-api-config.service.ts:227</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                                <td>Default value</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>serverConfig</td>
                                            <td>
                                                        <code>OpenAPIV3.ServerObject</code>
                                            </td>

                                            <td>
                                                    No
                                            </td>

                                            <td>
                                            </td>

                                        </tr>
                                        <tr>
                                                <td>index</td>
                                            <td>
                                                            <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/number" target="_blank" >number</a></code>
                                            </td>

                                            <td>
                                                    No
                                            </td>

                                            <td>
                                            </td>

                                        </tr>
                                        <tr>
                                                <td>serverId</td>
                                            <td>
                                                            <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
                                            </td>

                                            <td>
                                                    Yes
                                            </td>

                                            <td>
                                            </td>

                                        </tr>
                                        <tr>
                                                <td>config</td>
                                            <td>
                                                        <code>OpenAPIV3.Document</code>
                                            </td>

                                            <td>
                                                    No
                                            </td>

                                            <td>
                                                    <code>this.Config!</code>
                                            </td>

                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="Load"></a>
                    <span class="name">
                            <span class="modifier">Static</span>
                            <span class="modifier">Async</span>
                        <span ><b>Load</b></span>
                        <a href="#Load"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>Load(openApiUrl: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="66"
                                    class="link-to-prism">src/lib/open-api-config.service.ts:66</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">
                        <div class="io-description"><p>Used to load the app open api config from a remote resource.</p>
<p>Promise.all([ OpenApiDataSourceLoader.Load() ])
.then(() =&gt; platformBrowserDynamic().bootstrapModule(AppModule))
.catch(err =&gt; console.error(err))</p>
</div>

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                                <td>Default value</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>openApiUrl</td>
                                            <td>
                                                            <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
                                            </td>

                                            <td>
                                                    No
                                            </td>

                                            <td>
                                                    <code>&#x27;openapi.json&#x27;</code>
                                            </td>

                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>    <code>Promise&lt;void&gt;</code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
</section>
            <section data-compodoc="block-properties">
    
    <h3 id="inputs">
        Properties
    </h3>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="Config"></a>
                    <span class="name">
                            <span class="modifier">Static</span>
                        <span ><b>Config</b></span>
                        <a href="#Config"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>    <code>OpenAPIV3.Document | null</code>

                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Default value : </i><code>null</code>
                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="19" class="link-to-prism">src/lib/open-api-config.service.ts:19</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="defaultServerIndex"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>defaultServerIndex</b></span>
                        <a href="#defaultServerIndex"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>        <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/number" target="_blank" >number</a></code>

                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Default value : </i><code>OpenApiConfigService.DefaultServerIndex</code>
                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="24" class="link-to-prism">src/lib/open-api-config.service.ts:24</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="DefaultServerIndex"></a>
                    <span class="name">
                            <span class="modifier">Static</span>
                        <span ><b>DefaultServerIndex</b></span>
                        <a href="#DefaultServerIndex"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>        <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/number" target="_blank" >number</a></code>

                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Default value : </i><code>0</code>
                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="21" class="link-to-prism">src/lib/open-api-config.service.ts:21</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
</section>

            <section data-compodoc="block-accessors">
    <h3 id="accessors">
        Accessors
    </h3>
        <table class="table table-sm table-bordered">
            <tbody>
                <tr>
                    <td class="col-md-4">
                        <a name="serverIds"></a>
                        <span class="name"><b>serverIds</b><a href="#serverIds"><span class="icon ion-ios-link"></span></a></span>
                    </td>
                </tr>

                <tr>
                    <td class="col-md-4">
                        <span class="accessor"><b>get</b><code>serverIds()</code></span>
                    </td>
                </tr>
                            <tr>
                                <td class="col-md-4">
                                    <div class="io-line">Defined in <a href="" data-line="32" class="link-to-prism">src/lib/open-api-config.service.ts:32</a></div>
                                </td>
                            </tr>

            </tbody>
        </table>
        <table class="table table-sm table-bordered">
            <tbody>
                <tr>
                    <td class="col-md-4">
                        <a name="config"></a>
                        <span class="name"><b>config</b><a href="#config"><span class="icon ion-ios-link"></span></a></span>
                    </td>
                </tr>

                <tr>
                    <td class="col-md-4">
                        <span class="accessor"><b>get</b><code>config()</code></span>
                    </td>
                </tr>
                            <tr>
                                <td class="col-md-4">
                                    <div class="io-line">Defined in <a href="" data-line="51" class="link-to-prism">src/lib/open-api-config.service.ts:51</a></div>
                                </td>
                            </tr>

            </tbody>
        </table>
</section>
    </div>


    <div class="tab-pane fade  tab-source-code" id="source">
        <pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import {
  Inject,
  Injectable,
  isDevMode,
  Optional,
} from &#x27;@angular/core&#x27;;
import {
  OpenAPI,
  OpenAPIV3,
} from &#x27;openapi-types&#x27;;
import { OperationObjectWithMetadata } from &#x27;./open-api&#x27;;
import { RXAP_OPEN_API_CONFIG } from &#x27;./tokens&#x27;;
import { AssertOpenApiV3 } from &#x27;./utilities&#x27;;

export type OperationMap &#x3D; Map&lt;string, OperationObjectWithMetadata&gt;;

@Injectable({ providedIn: &#x27;root&#x27; })
export class OpenApiConfigService {
  public static Config: OpenAPIV3.Document | null &#x3D; null;

  public static DefaultServerIndex &#x3D; 0;

  private static _operations: OperationMap | null &#x3D; null;
  public defaultServerIndex: number &#x3D; OpenApiConfigService.DefaultServerIndex;
  private _operations: OperationMap | null &#x3D; null;
  private static serverConfigMap &#x3D; new Map&lt;string | undefined, OpenAPIV3.ServerObject[]&gt;();

  private get serverConfigMap(): Map&lt;string | undefined, OpenAPIV3.ServerObject[]&gt; {
    return OpenApiConfigService.serverConfigMap;
  }

  get serverIds(): string[] {
    return Object.keys(this.serverConfigMap);
  }

  constructor(
    @Optional()
    @Inject(RXAP_OPEN_API_CONFIG)
      config: OpenAPIV3.Document | null &#x3D; null,
  ) {
    config &#x3D; config ?? OpenApiConfigService.Config;
    if (config) {
      this._config &#x3D; config;
      this._operations &#x3D; OpenApiConfigService.LoadOperations(config);
    }
    OpenApiConfigService.Config ??&#x3D; config;
  }

  private _config: OpenAPIV3.Document | null &#x3D; null;

  public get config(): OpenAPIV3.Document {
    if (!this._config) {
      throw new Error(&#x27;Could not load open api config&#x27;);
    }
    return this._config;
  }

  /**
   * Used to load the app open api config from a remote resource.
   *
   * Promise.all([ OpenApiDataSourceLoader.Load() ])
   * .then(() &#x3D;&gt; platformBrowserDynamic().bootstrapModule(AppModule))
   * .catch(err &#x3D;&gt; console.error(err))
   *
   */
  public static async Load(openApiUrl &#x3D; &#x27;openapi.json&#x27;): Promise&lt;void&gt; {
    if (!openApiUrl) {
      throw new Error(&#x27;The open api url is not defined!&#x27;);
    }

    let config: OpenAPIV3.Document | null &#x3D; null;
    try {
      const response &#x3D; await fetch(openApiUrl);
      config &#x3D; await response.json();
    } catch (error: any) {
      console.debug(
        &#x60;Could not load the open api config from &#x27;${ openApiUrl }&#x27;!&#x60;,
        error,
      );
      console.error(
        &#x60;Could not load the open api config from &#x27;${ openApiUrl }&#x27;!&#x60;,
        error.message,
      );
    }

    if (config) {
      const expandedConfig &#x3D; await this.ExpandOpenApi(config);

      AssertOpenApiV3(expandedConfig);

      this.Config &#x3D; expandedConfig;
    } else {
      this.Config &#x3D; null;
    }
  }

  public static GetOperation(operationId: string): OperationObjectWithMetadata {
    if (!this.Config) {
      throw new Error(&#x27;Could not load open api config&#x27;);
    }

    if (!this._operations) {
      this._operations &#x3D; this.LoadOperations(this.Config);
    }
    if (!this._operations!.has(operationId)) {
      throw new Error(
        &#x60;The operation &#x27;${ operationId }&#x27; is not defined in the openapi-json&#x60;,
      );
    }
    return this._operations!.get(operationId)!;
  }

  private static LoadOperations(config: OpenAPIV3.Document): OperationMap {
    const operations &#x3D; new Map&lt;string, OperationObjectWithMetadata&gt;();

    Object.entries(config.paths)
          .filter(
            (item): item is [ string, OpenAPIV3.PathItemObject ] &#x3D;&gt;
              item[0] !&#x3D;&#x3D; undefined,
          )
          .filter(
            ([ _, methods ]: [ string, OpenAPIV3.PathItemObject ]) &#x3D;&gt;
              methods &amp;&amp;
              Object.keys(methods).some((method) &#x3D;&gt;
                [ &#x27;get&#x27;, &#x27;put&#x27;, &#x27;post&#x27;, &#x27;delete&#x27;, &#x27;patch&#x27; ].includes(method),
              ),
          )
          .forEach(([ path, methods ]: [ string, OpenAPIV3.PathItemObject ]) &#x3D;&gt;
            Object.entries(methods)
                  .filter(
                    (item): item is [ string, OpenAPIV3.OperationObject ] &#x3D;&gt;
                      item[0] !&#x3D;&#x3D; undefined,
                  )
                  .forEach(
                    ([ method, operation ]: [ string, OpenAPIV3.OperationObject ]) &#x3D;&gt; {
                      if (!operation.operationId) {
                        throw new Error(&#x27;The OpenApu OperationId is not defined&#x27;);
                      }

                      if (operations!.has(operation.operationId)) {
                        throw new Error(
                          &#x60;The OpenApi Operation &#x27;${ operation.operationId }&#x27; is already defined.&#x60;,
                        );
                      }

                      operations!.set(operation.operationId, {
                        ...operation,
                        path: path,
                        method: method.toUpperCase(),
                      });
                    },
                  ),
          );

    return operations;
  }

  private static GetBaseUrl(
    config: OpenAPIV3.Document,
    serverIndex: number &#x3D; this.DefaultServerIndex,
  ): string {
    const server &#x3D; config.servers ? config.servers[serverIndex] : null;

    if (!server) {
      console.debug(
        &#x60;Could not extract the server config with the index &#x27;${ serverIndex }&#x27; from the open api config&#x60;,
        config,
      );
      throw new Error(
        &#x60;Could not extract the server config with the index &#x27;${ serverIndex }&#x27; from the open api config&#x60;,
      );
    }

    return server.url;
  }

  /**
   * Replaces all $ref with the concrete definition
   *
   * @param config
   * @private
   */
  private static ExpandOpenApi(
    config: OpenAPI.Document,
  ): Promise&lt;OpenAPI.Document&gt; {
    return Promise.resolve(config);
  }

  public getOperation(operationId: string): OperationObjectWithMetadata {
    if (!this._operations) {
      if (!this._config) {
        throw new Error(&#x27;The operations map is not loaded and the config object is not loaded&#x27;);
      }
      this._operations &#x3D; OpenApiConfigService.LoadOperations(this._config);
    }
    if (!this._operations.has(operationId)) {
      console.error(
        &#x60;The operation &#x27;${ operationId }&#x27; is not defined in the openapi-json&#x60;,
        isDevMode() ? this.config : undefined,
      );
      throw new Error(
        &#x60;The operation &#x27;${ operationId }&#x27; is not defined in the openapi-json&#x60;,
      );
    }
    return this._operations.get(operationId)!;
  }

  public getBaseUrl(serverIndex: number &#x3D; this.defaultServerIndex, serverId?: string): string {
    let serverConfig: OpenAPIV3.ServerObject | undefined;
    const servers &#x3D; this._config?.servers ?? [];
    if (!serverId &amp;&amp; servers) {
      serverConfig &#x3D; servers[serverIndex];
    }
    if (this.serverConfigMap.has(serverId)) {
      serverConfig &#x3D; this.serverConfigMap.get(serverId)![serverIndex];
    }
    if (!serverConfig) {
      console.error(
        &#x60;Could not determine the base url with the index &#x27;${ serverIndex }&#x27; and the serverId &#x27;${ serverId }&#x27;&#x60;,
        isDevMode() ? servers : undefined,
      );
      throw new Error(&#x60;Could not determine the base url with the index &#x27;${ serverIndex }&#x27; and the serverId &#x27;${ serverId }&#x27;&#x60;);
    }
    return serverConfig.url;
  }

  public static InsertServer(
    serverConfig: OpenAPIV3.ServerObject,
    index: number,
    serverId?: string,
    config: OpenAPIV3.Document &#x3D; this.Config!,
  ): void {
    if (!serverId &amp;&amp; config) {
      if (!config.servers) {
        config.servers &#x3D; [];
      }
      config.servers.splice(index, 1, serverConfig);
    }
    if (!this.serverConfigMap.has(serverId)) {
      this.serverConfigMap.set(serverId, []);
    }
    const list &#x3D; this.serverConfigMap.get(serverId)!;
    list[index] &#x3D; serverConfig;
    this.serverConfigMap.set(serverId, list);
  }

  public insertServer(
    serverConfig: OpenAPIV3.ServerObject,
    index: number &#x3D; this.defaultServerIndex,
    serverId?: string,
  ): void {
    OpenApiConfigService.InsertServer(serverConfig, index, serverId, this.config);
  }

}
</code></pre>
    </div>

</div>













                   </div><div class="search-results">
    <div class="has-results">
        <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
        <ul class="search-results-list"></ul>
    </div>
    <div class="no-results">
        <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
    </div>
</div>
</div>
               <!-- END CONTENT -->
           </div>
       </div>

          <label class="dark-mode-switch">
               <input type="checkbox">
               <span class="slider">
                    <svg class="slider-icon" viewBox="0 0 24 24" fill="none" height="20" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="20" xmlns="http://www.w3.org/2000/svg">
                    <path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"></path>
                    </svg>
               </span>
          </label>

       <script>
            var COMPODOC_CURRENT_PAGE_DEPTH = 1;
            var COMPODOC_CURRENT_PAGE_CONTEXT = 'injectable';
            var COMPODOC_CURRENT_PAGE_URL = 'OpenApiConfigService.html';
            var MAX_SEARCH_RESULTS = 15;
       </script>

       <script>
               $darkModeToggleSwitchers = document.querySelectorAll('.dark-mode-switch input');
               checkToggle(darkModeState);
               if ($darkModeToggleSwitchers.length > 0) {
                    for (var i = 0; i < $darkModeToggleSwitchers.length; i++) {
                         $darkModeToggleSwitchers[i].addEventListener('change', function (event) {
                              darkModeState = !darkModeState;
                              toggleDarkMode(darkModeState);
                         });
                    }
               }
          </script>

       <script src="../js/libs/custom-elements.min.js"></script>
       <script src="../js/libs/lit-html.js"></script>

       <script src="../js/menu-wc.js" defer></script>
       <script nomodule src="../js/menu-wc_es5.js" defer></script>

       <script src="../js/libs/bootstrap-native.js"></script>

       <script src="../js/libs/es6-shim.min.js"></script>
       <script src="../js/libs/EventDispatcher.js"></script>
       <script src="../js/libs/promise.min.js"></script>
       <script src="../js/libs/zepto.min.js"></script>

       <script src="../js/compodoc.js"></script>

       <script src="../js/tabs.js"></script>
       <script src="../js/menu.js"></script>
       <script src="../js/libs/clipboard.min.js"></script>
       <script src="../js/libs/prism.js"></script>
       <script src="../js/sourceCode.js"></script>
          <script src="../js/search/search.js"></script>
          <script src="../js/search/lunr.min.js"></script>
          <script src="../js/search/search-lunr.js"></script>
          <script src="../js/search/search_index.js"></script>
       <script src="../js/lazy-load-graphs.js"></script>


    </body>
</html>