From 037bf43b407cd6e5b2ad0ea936ec248336d766b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Markle=CC=81n?= Date: Thu, 16 Apr 2020 22:04:00 +0200 Subject: [PATCH 1/3] Updated openapi.yaml to OpenAPI 3.0 Included lint to validate yaml file --- openapi/openapi.yaml | 2893 ++++++++++++++++++++---------------------- openapi/package.json | 7 +- openapi/yarn.lock | 1593 +++++++++++++++++++++-- 3 files changed, 2848 insertions(+), 1645 deletions(-) diff --git a/openapi/openapi.yaml b/openapi/openapi.yaml index 9653af5a..dc8a923e 100644 --- a/openapi/openapi.yaml +++ b/openapi/openapi.yaml @@ -1,1035 +1,915 @@ -swagger: '2.0' +openapi: 3.0.3 info: - title: 'AdGuard Home' - description: 'AdGuard Home REST API. Admin web interface is built on top of this REST API.' - version: '0.101' -schemes: - - http -basePath: /control -produces: - - application/json + title: AdGuard Home + description: AdGuard Home REST API. Admin web interface is built on top of this REST API. + version: "0.101" + contact: + name: "AdGuard Home" + url: "https://github.com/AdguardTeam/AdGuardHome" + +servers: + - url: /control + tags: - - - name: global - description: 'AdGuard Home server general settings and controls' - - - name: tls - description: 'AdGuard Home HTTPS/DOH/DOT settings' - - - name: log - description: 'AdGuard Home query log' - - - name: stats - description: 'AdGuard Home statistics' - - - name: i18n - description: 'Application localization' - - - name: filtering - description: 'Rule-based filtering' - - - name: safebrowsing - description: 'Blocking malware/phishing sites' - - - name: parental - description: 'Blocking adult and explicit materials' - - - name: safesearch - description: 'Enforce family-friendly results in search engines' - - - name: dhcp - description: 'Built-in DHCP server controls' - - - name: clients - description: 'Clients list operations' - - - name: install - description: 'First-time install configuration handlers' + - name: clients + description: Clients list operations + - name: dhcp + description: Built-in DHCP server controls + - name: filtering + description: Rule-based filtering + - name: global + description: AdGuard Home server general settings and controls + - name: i18n + description: Application localization + - name: install + description: First-time install configuration handlers + - name: log + description: AdGuard Home query log + - name: parental + description: Blocking adult and explicit materials + - name: safebrowsing + description: Blocking malware/phishing sites + - name: safesearch + description: Enforce family-friendly results in search engines + - name: stats + description: AdGuard Home statistics + - name: tls + description: AdGuard Home HTTPS/DOH/DOT settings + paths: - - # API TO-DO LIST - # TODO: Use JSON where it is possible - # TODO: Use lower_case for all objects' properties - # TODO: Move to definitions what's missing from there - - # -------------------------------------------------- - # General settings and controls - # -------------------------------------------------- - /status: get: tags: - global operationId: status - summary: 'Get DNS server current status and general settings' - produces: - - application/json + summary: Get DNS server current status and general settings responses: - 200: + "200": description: OK - schema: - $ref: "#/definitions/ServerStatus" - + content: + application/json: + schema: + $ref: "#/components/schemas/ServerStatus" /dns_info: get: tags: - global operationId: dnsInfo - summary: 'Get general DNS parameters' + summary: Get general DNS parameters responses: - 200: + "200": description: OK - schema: - $ref: "#/definitions/DNSConfig" - + content: + application/json: + schema: + $ref: "#/components/schemas/DNSConfig" /dns_config: post: tags: - global operationId: dnsConfig - summary: "Set general DNS parameters" - consumes: - - application/json - parameters: - - in: "body" - name: "body" - schema: - $ref: "#/definitions/DNSConfig" + summary: Set general DNS parameters + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/DNSConfig" responses: - 200: + "200": description: OK - /set_upstreams_config: post: tags: - global operationId: setUpstreamsConfig - summary: "Updates the current upstreams configuration" - consumes: - - application/json - parameters: - - in: "body" - name: "body" - description: "Upstreams configuration JSON" - required: true - schema: - $ref: "#/definitions/UpstreamsConfig" + summary: Updates the current upstreams configuration + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/UpstreamsConfig" + description: Upstreams configuration JSON + required: true responses: - 200: + "200": description: OK - /test_upstream_dns: post: tags: - global operationId: testUpstreamDNS - summary: "Test upstream configuration" - consumes: - - application/json - parameters: - - in: "body" - name: "body" - description: "Upstream configuration to be tested" - schema: - $ref: "#/definitions/UpstreamsConfig" + summary: Test upstream configuration + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/UpstreamsConfig" + description: Upstream configuration to be tested responses: - 200: - description: 'Status of testing each requested server, with "OK" meaning that server works, any other text means an error.' - examples: + "200": + description: Status of testing each requested server, with "OK" meaning that + server works, any other text means an error. + content: application/json: - 1.1.1.1: OK - 1.0.0.1: OK - 8.8.8.8: OK - 8.8.4.4: OK - "192.168.1.104:53535": "Couldn't communicate with DNS server" - + examples: + response: + value: + 1.1.1.1: OK + 1.0.0.1: OK + 8.8.8.8: OK + 8.8.4.4: OK + 192.168.1.104:53535: Couldn't communicate with DNS server /version.json: post: tags: - global operationId: getVersionJson - summary: 'Gets information about the latest available version of AdGuard' - consumes: - - application/json - parameters: - - in: "body" - name: "body" - required: true - schema: - $ref: "#/definitions/GetVersionRequest" - produces: - - 'application/json' + summary: Gets information about the latest available version of AdGuard + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/GetVersionRequest" + required: true responses: - 200: - description: 'Version info. If response message is empty, UI does not show a version update message.' - schema: - $ref: "#/definitions/VersionInfo" - 500: - description: 'Cannot write answer' - 502: - description: 'Cannot retrieve the version.json file contents' + "200": + description: Version info. If response message is empty, UI does not show a + version update message. + content: + application/json: + schema: + $ref: "#/components/schemas/VersionInfo" + "500": + description: Cannot write answer + "502": + description: Cannot retrieve the version.json file contents /update: post: tags: - global operationId: beginUpdate - summary: 'Begin auto-upgrade procedure' + summary: Begin auto-upgrade procedure responses: - 200: + "200": description: OK - 500: + "500": description: Failed - - # -------------------------------------------------- - # Query log methods - # -------------------------------------------------- - /querylog: get: tags: - log operationId: queryLog - summary: 'Get DNS server query log' + summary: Get DNS server query log parameters: - name: older_than in: query - type: string + description: Filter by older than + schema: + type: string - name: filter_domain in: query - type: string - description: "Filter by domain name" + description: Filter by domain name + schema: + type: string - name: filter_client in: query - type: string - description: "Filter by client" + description: Filter by client + schema: + type: string - name: filter_question_type in: query - type: string - description: "Filter by question type" + description: Filter by question type + schema: + type: string - name: filter_response_status in: query - type: string - description: "Filter by response status" - enum: - - - - filtered + description: Filter by response status + schema: + type: string + enum: + - null + - filtered responses: - 200: + "200": description: OK - schema: - $ref: '#/definitions/QueryLog' - + content: + application/json: + schema: + $ref: "#/components/schemas/QueryLog" /querylog_info: get: tags: - log operationId: queryLogInfo - summary: 'Get query log parameters' + summary: Get query log parameters responses: - 200: + "200": description: OK - schema: - $ref: "#/definitions/QueryLogConfig" - + content: + application/json: + schema: + $ref: "#/components/schemas/QueryLogConfig" /querylog_config: post: tags: - log operationId: queryLogConfig - summary: "Set query log parameters" - consumes: - - application/json - parameters: - - in: "body" - name: "body" - schema: - $ref: "#/definitions/QueryLogConfig" + summary: Set query log parameters + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/QueryLogConfig" responses: - 200: + "200": description: OK - /querylog_clear: post: tags: - log operationId: querylogClear - summary: 'Clear query log' + summary: Clear query log responses: - 200: + "200": description: OK - - # -------------------------------------------------- - # General statistics methods - # -------------------------------------------------- - /stats: get: tags: - stats operationId: stats - summary: 'Get DNS server statistics' + summary: Get DNS server statistics responses: - 200: - description: 'Returns statistics data' - schema: - $ref: "#/definitions/Stats" - + "200": + description: Returns statistics data + content: + application/json: + schema: + $ref: "#/components/schemas/Stats" /stats_reset: post: tags: - stats operationId: statsReset - summary: "Reset all statistics to zeroes" + summary: Reset all statistics to zeroes responses: - 200: + "200": description: OK - /stats_info: get: tags: - stats operationId: statsInfo - summary: 'Get statistics parameters' + summary: Get statistics parameters responses: - 200: + "200": description: OK - schema: - $ref: "#/definitions/StatsConfig" - + content: + application/json: + schema: + $ref: "#/components/schemas/StatsConfig" /stats_config: post: tags: - stats operationId: statsConfig - summary: "Set statistics parameters" - consumes: - - application/json - parameters: - - in: "body" - name: "body" - schema: - $ref: "#/definitions/StatsConfig" + summary: Set statistics parameters + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/StatsConfig" responses: - 200: + "200": description: OK - - # -------------------------------------------------- - # TLS server methods - # -------------------------------------------------- - /tls/status: get: tags: - tls operationId: tlsStatus - summary: "Returns TLS configuration and its status" + summary: Returns TLS configuration and its status responses: - 200: + "200": description: OK - schema: - $ref: "#/definitions/TlsConfig" - + content: + application/json: + schema: + $ref: "#/components/schemas/TlsConfig" /tls/configure: post: tags: - tls operationId: tlsConfigure - summary: "Updates current TLS configuration" - consumes: - - application/json - parameters: - - in: "body" - name: "body" - description: "TLS configuration JSON" - required: true - schema: - $ref: "#/definitions/TlsConfig" + summary: Updates current TLS configuration + requestBody: + $ref: "#/components/requestBodies/TlsConfig" responses: - 200: - description: "TLS configuration and its status" - schema: - $ref: "#/definitions/TlsConfig" - 400: - description: "Invalid configuration or unavailable port" - 500: - description: "Error occurred while applying configuration" - + "200": + description: TLS configuration and its status + content: + application/json: + schema: + $ref: "#/components/schemas/TlsConfig" + "400": + description: Invalid configuration or unavailable port + "500": + description: Error occurred while applying configuration /tls/validate: post: tags: - tls operationId: tlsValidate - summary: "Checks if the current TLS configuration is valid" - consumes: - - application/json - parameters: - - in: "body" - name: "body" - description: "TLS configuration JSON" - required: true - schema: - $ref: "#/definitions/TlsConfig" + summary: Checks if the current TLS configuration is valid + requestBody: + $ref: "#/components/requestBodies/TlsConfig" responses: - 200: - description: "TLS configuration and its status" - schema: - $ref: "#/definitions/TlsConfig" - 400: - description: "Invalid configuration or unavailable port" - - # -------------------------------------------------- - # DHCP server methods - # -------------------------------------------------- - + "200": + description: TLS configuration and its status + content: + application/json: + schema: + $ref: "#/components/schemas/TlsConfig" + "400": + description: Invalid configuration or unavailable port /dhcp/status: get: tags: - dhcp operationId: dhcpStatus - summary: "Gets the current DHCP settings and status" + summary: Gets the current DHCP settings and status responses: - 200: + "200": description: OK - schema: - $ref: "#/definitions/DhcpStatus" - + content: + application/json: + schema: + $ref: "#/components/schemas/DhcpStatus" /dhcp/set_config: post: tags: - dhcp operationId: dhcpSetConfig - summary: "Updates the current DHCP server configuration" - consumes: - - application/json - parameters: - - in: "body" - name: "body" - description: "DHCP configuration JSON" - required: true - schema: - $ref: "#/definitions/DhcpConfig" + summary: Updates the current DHCP server configuration + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/DhcpConfig" + description: DHCP configuration JSON + required: true responses: - 200: + "200": description: OK - /dhcp/find_active_dhcp: - post: - tags: - - dhcp - operationId: checkActiveDhcp - summary: "Searches for an active DHCP server on the network" - responses: - 200: - description: OK - schema: - $ref: "#/definitions/DhcpSearchResult" - + post: + tags: + - dhcp + operationId: checkActiveDhcp + summary: Searches for an active DHCP server on the network + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/DhcpSearchResult" /dhcp/add_static_lease: post: tags: - dhcp operationId: dhcpAddStaticLease - summary: "Adds a static lease" - consumes: - - application/json - parameters: - - in: "body" - name: "body" - required: true - schema: - $ref: "#/definitions/DhcpStaticLease" + summary: Adds a static lease + requestBody: + $ref: "#/components/requestBodies/DhcpStaticLease" responses: - 200: + "200": description: OK - /dhcp/remove_static_lease: post: tags: - dhcp operationId: dhcpRemoveStaticLease - summary: "Removes a static lease" - consumes: - - application/json - parameters: - - in: "body" - name: "body" - required: true - schema: - $ref: "#/definitions/DhcpStaticLease" + summary: Removes a static lease + requestBody: + $ref: "#/components/requestBodies/DhcpStaticLease" responses: - 200: + "200": description: OK - /dhcp/reset: post: tags: - dhcp operationId: dhcpReset - summary: "Reset DHCP configuration" + summary: Reset DHCP configuration responses: - 200: + "200": description: OK - - # -------------------------------------------------- - # Filtering status methods - # -------------------------------------------------- - /filtering/status: get: tags: - filtering operationId: filteringStatus - summary: 'Get filtering parameters' + summary: Get filtering parameters responses: - 200: + "200": description: OK - schema: - $ref: "#/definitions/FilterStatus" - + content: + application/json: + schema: + $ref: "#/components/schemas/FilterStatus" /filtering/config: post: tags: - filtering operationId: filteringConfig - summary: 'Set filtering parameters' - parameters: - - in: "body" - name: "body" - required: true - schema: - $ref: "#/definitions/FilterConfig" + summary: Set filtering parameters + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/FilterConfig" + required: true responses: - 200: + "200": description: OK - /filtering/add_url: post: tags: - filtering operationId: filteringAddURL - summary: 'Add filter URL or an absolute file path' - consumes: - - application/json - parameters: - - in: "body" - name: "body" - required: true - schema: - $ref: "#/definitions/AddUrlRequest" + summary: Add filter URL or an absolute file path + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/AddUrlRequest" + required: true responses: - 200: + "200": description: OK - /filtering/remove_url: post: tags: - filtering operationId: filteringRemoveURL - summary: 'Remove filter URL' - consumes: - - application/json - parameters: - - in: "body" - name: "body" - required: true - schema: - $ref: "#/definitions/RemoveUrlRequest" + summary: Remove filter URL + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/RemoveUrlRequest" + required: true responses: - 200: + "200": description: OK - /filtering/set_url: post: tags: - filtering operationId: filteringSetURL - summary: 'Set URL parameters' - consumes: - - application/json - parameters: - - in: "body" - name: "body" - schema: - $ref: "#/definitions/FilterSetUrl" + summary: Set URL parameters + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/FilterSetUrl" responses: - 200: + "200": description: OK - /filtering/refresh: post: tags: - filtering operationId: filteringRefresh - summary: | + summary: > Reload filtering rules from URLs + This might be needed if new URL was just added and you dont want to wait for automatic refresh to kick in. + This API request is ratelimited, so you can call it freely as often as you like, it wont create unneccessary burden on servers that host the URL. + This should work as intended, a `force` parameter is offered as last-resort attempt to make filter lists fresh. - If you ever find yourself using `force` to make something work that otherwise wont, this is a bug and report it accordingly. - consumes: - - application/json - parameters: - - in: "body" - name: "body" - schema: - $ref: "#/definitions/FilterRefreshRequest" - responses: - 200: - description: OK - schema: - $ref: "#/definitions/FilterRefreshResponse" + If you ever find yourself using `force` to make something work that otherwise wont, this is a bug and report it accordingly. + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/FilterRefreshRequest" + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/FilterRefreshResponse" /filtering/set_rules: post: tags: - filtering operationId: filteringSetRules - summary: 'Set user-defined filter rules' - consumes: - - text/plain - parameters: - - in: body - name: rules - description: 'All filtering rules, one line per rule' - schema: - # TODO: move to definitions - type: string - example: '@@||yandex.ru^|' + summary: Set user-defined filter rules + requestBody: + content: + text/plain: + schema: + type: string + example: "@@||yandex.ru^|" + description: All filtering rules, one line per rule responses: - 200: + "200": description: OK - /filtering/check_host: get: tags: - filtering operationId: filteringCheckHost - summary: 'Check if host name is filtered' + summary: Check if host name is filtered parameters: - name: name in: query - type: string + description: Host name + schema: + type: string responses: - 200: + "200": description: OK - schema: - $ref: "#/definitions/FilterCheckHostResponse" - - # -------------------------------------------------- - # Safebrowsing methods - # -------------------------------------------------- - + content: + application/json: + schema: + $ref: "#/components/schemas/FilterCheckHostResponse" /safebrowsing/enable: post: tags: - safebrowsing operationId: safebrowsingEnable - summary: 'Enable safebrowsing' + summary: Enable safebrowsing responses: - 200: + "200": description: OK - /safebrowsing/disable: post: tags: - safebrowsing operationId: safebrowsingDisable - summary: 'Disable safebrowsing' + summary: Disable safebrowsing responses: - 200: + "200": description: OK - /safebrowsing/status: get: tags: - safebrowsing operationId: safebrowsingStatus - summary: 'Get safebrowsing status' + summary: Get safebrowsing status responses: - 200: + "200": description: OK - examples: + content: application/json: - enabled: false - - # -------------------------------------------------- - # Parental control methods - # -------------------------------------------------- - + examples: + response: + value: + enabled: false /parental/enable: post: tags: - parental operationId: parentalEnable - summary: 'Enable parental filtering' - consumes: - - text/plain - parameters: - - in: body - name: sensitivity - description: | - Age sensitivity for parental filtering, - EARLY_CHILDHOOD is 3 - YOUNG is 10 - TEEN is 13 - MATURE is 17 - - required: true - schema: - type: string - enum: - - EARLY_CHILDHOOD - - YOUNG - - TEEN - - MATURE - example: 'sensitivity=TEEN' + summary: Enable parental filtering + requestBody: + content: + text/plain: + schema: + type: string + enum: + - EARLY_CHILDHOOD + - YOUNG + - TEEN + - MATURE + example: sensitivity=TEEN + description: | + Age sensitivity for parental filtering, + EARLY_CHILDHOOD is 3 + YOUNG is 10 + TEEN is 13 + MATURE is 17 + required: true responses: - 200: + "200": description: OK - /parental/disable: post: tags: - parental operationId: parentalDisable - summary: 'Disable parental filtering' + summary: Disable parental filtering responses: - 200: + "200": description: OK - /parental/status: get: tags: - parental operationId: parentalStatus - summary: 'Get parental filtering status' + summary: Get parental filtering status responses: - 200: + "200": description: OK - examples: + content: application/json: - enabled: true - sensitivity: 13 - - # -------------------------------------------------- - # Safe search methods - # -------------------------------------------------- - + examples: + response: + value: + enabled: true + sensitivity: 13 /safesearch/enable: post: tags: - safesearch operationId: safesearchEnable - summary: 'Enable safesearch' + summary: Enable safesearch responses: - 200: + "200": description: OK - /safesearch/disable: post: tags: - safesearch operationId: safesearchDisable - summary: 'Disable safesearch' + summary: Disable safesearch responses: - 200: + "200": description: OK - /safesearch/status: get: tags: - safesearch operationId: safesearchStatus - summary: 'Get safesearch status' + summary: Get safesearch status responses: - 200: + "200": description: OK - examples: + content: application/json: - enabled: false - - # -------------------------------------------------- - # Clients list methods - # -------------------------------------------------- - + examples: + response: + value: + enabled: false /clients: get: tags: - clients operationId: clientsStatus - summary: 'Get information about configured clients' + summary: Get information about configured clients responses: - 200: + "200": description: OK - schema: - $ref: "#/definitions/Clients" - + content: + application/json: + schema: + $ref: "#/components/schemas/Clients" /clients/add: post: tags: - clients operationId: clientsAdd - summary: 'Add a new client' - parameters: - - in: "body" - name: "body" - required: true - schema: - $ref: "#/definitions/Client" + summary: Add a new client + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/Client" + required: true responses: - 200: + "200": description: OK - /clients/delete: post: tags: - clients operationId: clientsDelete - summary: 'Remove a client' - parameters: - - in: "body" - name: "body" - required: true - schema: - $ref: "#/definitions/ClientDelete" + summary: Remove a client + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ClientDelete" + required: true responses: - 200: + "200": description: OK - /clients/update: post: tags: - clients operationId: clientsUpdate - summary: 'Update client information' - parameters: - - in: "body" - name: "body" - required: true - schema: - $ref: "#/definitions/ClientUpdate" + summary: Update client information + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ClientUpdate" + required: true responses: - 200: + "200": description: OK - /clients/find: get: tags: - clients operationId: clientsFind - summary: 'Get information about selected clients by their IP address' + summary: Get information about selected clients by their IP address parameters: - name: ip0 + description: IP in: query - type: string + schema: + type: string responses: - 200: + "200": description: OK - schema: - $ref: "#/definitions/ClientsFindResponse" - - + content: + application/json: + schema: + $ref: "#/components/schemas/ClientsFindResponse" /blocked_services/list: get: tags: - blocked_services operationId: blockedServicesList - summary: 'Get blocked services list' + summary: Get blocked services list responses: - 200: + "200": description: OK - schema: - $ref: "#/definitions/BlockedServicesArray" - + content: + application/json: + schema: + $ref: "#/components/schemas/BlockedServicesArray" /blocked_services/set: post: tags: - blocked_services operationId: blockedServicesSet - summary: 'Set blocked services list' - parameters: - - in: body - name: "body" - schema: - $ref: "#/definitions/BlockedServicesArray" + summary: Set blocked services list + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/BlockedServicesArray" responses: - 200: + "200": description: OK - - - # -------------------------------------------------- - # Rewrite methods - # -------------------------------------------------- - /rewrite/list: get: tags: - rewrite operationId: rewriteList - summary: 'Get list of Rewrite rules' + summary: Get list of Rewrite rules responses: - 200: + "200": description: OK - schema: - $ref: "#/definitions/RewriteList" - + content: + application/json: + schema: + $ref: "#/components/schemas/RewriteList" /rewrite/add: post: tags: - rewrite operationId: rewriteAdd - summary: 'Add a new Rewrite rule' - parameters: - - in: "body" - name: "body" - required: true - schema: - $ref: "#/definitions/RewriteEntry" + summary: Add a new Rewrite rule + requestBody: + $ref: "#/components/requestBodies/RewriteEntry" responses: - 200: + "200": description: OK - /rewrite/delete: post: tags: - rewrite operationId: rewriteDelete - summary: 'Remove a Rewrite rule' - parameters: - - in: "body" - name: "body" - required: true - schema: - $ref: "#/definitions/RewriteEntry" + summary: Remove a Rewrite rule + requestBody: + $ref: "#/components/requestBodies/RewriteEntry" responses: - 200: + "200": description: OK - - # -------------------------------------------------- - # I18N methods - # -------------------------------------------------- - /i18n/change_language: post: tags: - i18n operationId: changeLanguage - summary: "Change current language. Argument must be an ISO 639-1 two-letter code" - consumes: - - text/plain - parameters: - - in: body - name: language - description: "New language. It must be known to the server and must be an ISO 639-1 two-letter code" - schema: - # TODO: use JSON? - type: string - example: en + summary: Change current language. Argument must be an ISO 639-1 two-letter code + requestBody: + content: + text/plain: + schema: + type: string + example: en + description: New language. It must be known to the server and must be an ISO 639-1 + two-letter code responses: - 200: + "200": description: OK - /i18n/current_language: get: tags: - i18n operationId: currentLanguage - summary: "Get currently set language. Result is ISO 639-1 two-letter code. Empty result means default language." + summary: Get currently set language. Result is ISO 639-1 two-letter code. Empty + result means default language. responses: - 200: + "200": description: OK - examples: + content: text/plain: - en - - # -------------------------------------------------- - # First-time install configuration methods - # -------------------------------------------------- - + examples: + response: + value: en /install/get_addresses: get: tags: - install operationId: installGetAddresses - summary: "Gets the network interfaces information." + summary: Gets the network interfaces information. responses: - 200: + "200": description: OK - schema: - $ref: "#/definitions/AddressesInfo" + content: + application/json: + schema: + $ref: "#/components/schemas/AddressesInfo" /install/check_config: post: tags: - install operationId: installCheckConfig - summary: "Checks configuration" - parameters: - - in: "body" - name: "body" - description: "Configuration to be checked" - required: true - schema: - $ref: "#/definitions/CheckConfigRequest" + summary: Checks configuration + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/CheckConfigRequest" + description: Configuration to be checked + required: true responses: - 200: + "200": description: OK - schema: - $ref: "#/definitions/CheckConfigResponse" - 400: - description: "Failed to parse JSON or cannot listen on the specified address" + content: + application/json: + schema: + $ref: "#/components/schemas/CheckConfigResponse" + "400": + description: Failed to parse JSON or cannot listen on the specified address /install/configure: post: tags: - install operationId: installConfigure - summary: "Applies the initial configuration." - parameters: - - in: "body" - name: "body" - description: "Initial configuration JSON" - required: true - schema: - $ref: "#/definitions/InitialConfiguration" + summary: Applies the initial configuration. + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/InitialConfiguration" + description: Initial configuration JSON + required: true responses: - 200: + "200": description: OK - 400: - description: "Failed to parse initial configuration or cannot listen to the specified addresses" - 500: - description: "Cannot start the DNS server" - + "400": + description: Failed to parse initial configuration or cannot listen to the + specified addresses + "500": + description: Cannot start the DNS server /login: post: tags: - global operationId: login - summary: "Perform administrator log-in" - consumes: - - application/json - parameters: - - in: "body" - name: "body" - required: true - schema: - $ref: "#/definitions/Login" + summary: Perform administrator log-in + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/Login" + required: true responses: - 200: + "200": description: OK - /logout: get: tags: - global operationId: logout - summary: "Perform administrator log-out" + summary: Perform administrator log-out responses: - 302: + "302": description: OK - /profile: get: tags: @@ -1037,904 +917,911 @@ paths: operationId: getProfile summary: "" responses: - 200: + "200": description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/ProfileInfo" + +components: + requestBodies: + TlsConfig: + content: + application/json: schema: - $ref: "#/definitions/ProfileInfo" - -definitions: - ServerStatus: - type: "object" - description: "AdGuard Home server status and configuration" - required: - - "dns_address" - - "dns_port" - - "protection_enabled" - - "querylog_enabled" - - "running" - - "bootstrap_dns" - - "upstream_dns" - - "version" - - "language" - properties: - dns_address: - type: "string" - example: "127.0.0.1" - dns_port: - type: "integer" - format: "int32" - example: 53 - minimum: 1 - maximum: 65535 - protection_enabled: - type: "boolean" - querylog_enabled: - type: "boolean" - running: - type: "boolean" - bootstrap_dns: - type: "string" - example: "8.8.8.8:53" - upstream_dns: - type: "array" - items: - type: "string" - example: - - "tls://1.1.1.1" - - "tls://1.0.0.1" - version: - type: "string" - example: "0.1" - language: - type: "string" - example: "en" - - DNSConfig: - type: "object" - description: "Query log configuration" - properties: - protection_enabled: - type: "boolean" - ratelimit: - type: "integer" - blocking_mode: - type: "string" - enum: - - "default" - - "nxdomain" - - "null_ip" - - "custom_ip" - blocking_ipv4: - type: "string" - blocking_ipv6: - type: "string" - edns_cs_enabled: - type: "boolean" - dnssec_enabled: - type: "boolean" - - UpstreamsConfig: - type: "object" - description: "Upstreams configuration" - required: - - "bootstrap_dns" - - "upstream_dns" - - "all_servers" - properties: - bootstrap_dns: - type: "array" - description: 'Bootstrap servers, port is optional after colon. Empty value will reset it to default values' - items: - type: "string" - example: - - "8.8.8.8:53" - - "1.1.1.1:53" - upstream_dns: - type: "array" - description: 'Upstream servers, port is optional after colon. Empty value will reset it to default values' - items: - type: "string" - example: - - "tls://1.1.1.1" - - "tls://1.0.0.1" - all_servers: - type: "boolean" - description: "If true, parallel queries to all configured upstream servers are enabled" - Filter: - type: "object" - description: "Filter subscription info" - required: - - "enabled" - - "id" - - "lastUpdated" - - "name" - - "rulesCount" - - "url" - properties: - enabled: - type: "boolean" - id: - type: "integer" - example: 1234 - lastUpdated: - type: "string" - format: "date-time" - example: "2018-10-30T12:18:57+03:00" - name: - type: "string" - example: "AdGuard Simplified Domain Names filter" - rulesCount: - type: "integer" - example: 5912 - url: - type: "string" - example: "https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt" - - FilterStatus: - type: "object" - description: "Filtering settings" - properties: - enabled: - type: "boolean" - interval: - type: "integer" - filters: - type: "array" - items: - $ref: "#/definitions/Filter" - user_rules: - type: "array" - items: - type: "string" - - FilterConfig: - type: "object" - description: "Filtering settings" - properties: - enabled: - type: "boolean" - interval: - type: "integer" - - FilterSetUrl: - type: "object" - description: "Filtering URL settings" - properties: - url: - type: "string" - enabled: - type: "boolean" - - FilterRefreshRequest: - type: "object" - description: "Refresh Filters request data" - properties: - whitelist: - type: "boolean" - - FilterCheckHostResponse: - type: "object" - description: "Check Host Result" - properties: - reason: - type: "string" - description: "DNS filter status" - enum: - - "NotFilteredNotFound" - - "NotFilteredWhiteList" - - "NotFilteredError" - - "FilteredBlackList" - - "FilteredSafeBrowsing" - - "FilteredParental" - - "FilteredInvalid" - - "FilteredSafeSearch" - - "FilteredBlockedService" - - "ReasonRewrite" - filter_id: - type: "integer" - rule: - type: "string" - example: "||example.org^" - description: "Filtering rule applied to the request (if any)" - service_name: - type: "string" - description: "Set if reason=FilteredBlockedService" - cname: - type: "string" - description: "Set if reason=ReasonRewrite" - ip_addrs: - type: "array" - items: - type: "string" - description: "Set if reason=ReasonRewrite" - - FilterRefreshResponse: - type: "object" - description: "/filtering/refresh response data" - properties: - updated: - type: "integer" - - GetVersionRequest: - type: "object" - description: "/version.json request data" - properties: - recheck_now: - description: "If false, server will check for a new version data only once in several hours" - type: "boolean" - VersionInfo: - type: "object" - description: "Information about the latest available version of AdGuard Home" - properties: - new_version: - type: "string" - example: "v0.9" - announcement: - type: "string" - example: "AdGuard Home v0.9 is now available!" - announcement_url: - type: "string" - example: "https://github.com/AdguardTeam/AdGuardHome/releases/tag/v0.9" - can_autoupdate: - type: "boolean" - Stats: - type: "object" - description: "Server statistics data" - properties: - time_units: - type: "string" - description: "Time units (hours | days)" - example: "hours" - num_dns_queries: - type: "integer" - description: "Total number of DNS queries" - example: 123 - num_blocked_filtering: - type: "integer" - description: "Number of requests blocked by filtering rules" - example: 50 - num_replaced_safebrowsing: - type: "integer" - description: "Number of requests blocked by safebrowsing module" - example: 5 - num_replaced_safesearch: - type: "integer" - description: "Number of requests blocked by safesearch module" - example: 5 - num_replaced_parental: - type: "integer" - description: "Number of blocked adult websites" - example: 15 - avg_processing_time: - type: "number" - format: "float" - description: "Average time in milliseconds on processing a DNS" - example: 0.34 - top_queried_domains: - type: "array" - items: - type: "object" - top_clients: - type: "array" - items: - type: "object" - top_blocked_domains: - type: "array" - items: - type: "object" - dns_queries: - type: "array" - items: - type: "integer" - blocked_filtering: - type: "array" - items: - type: "integer" - replaced_safebrowsing: - type: "array" - items: - type: "integer" - replaced_parental: - type: "array" - items: - type: "integer" - - StatsConfig: - type: "object" - description: "Statistics configuration" - properties: - interval: - type: "integer" - description: "Time period to keep data (1 | 7 | 30 | 90)" - - DhcpConfig: - type: "object" - description: "Built-in DHCP server configuration" - required: - - "enabled" - - "gateway_ip" - - "subnet_mask" - - "range_start" - - "range_end" - - "lease_duration" - properties: - enabled: - type: "boolean" - gateway_ip: - type: "string" - example: "192.168.1.1" - subnet_mask: - type: "string" - example: "255.255.255.0" - range_start: - type: "string" - example: "192.168.1.2" - range_end: - type: "string" - example: "192.168.10.50" - lease_duration: - type: "string" - example: "12h" - DhcpLease: - type: "object" - description: "DHCP lease information" - required: - - "mac" - - "ip" - - "hostname" - - "expires" - properties: - mac: - type: "string" - example: "00:11:09:b3:b3:b8" - ip: - type: "string" - example: "192.168.1.22" - hostname: - type: "string" - example: "dell" - expires: - type: "string" - format: "date-time" - example: "2017-07-21T17:32:28Z" - DhcpStaticLease: - type: "object" - description: "DHCP static lease information" - required: - - "mac" - - "ip" - - "hostname" - - "expires" - properties: - mac: - type: "string" - example: "00:11:09:b3:b3:b8" - ip: - type: "string" - example: "192.168.1.22" - hostname: - type: "string" - example: "dell" - DhcpStatus: - type: "object" - description: "Built-in DHCP server configuration and status" - required: - - "config" - - "leases" - properties: - config: - $ref: "#/definitions/DhcpConfig" - leases: - type: "array" - items: - $ref: "#/definitions/DhcpLease" - static_leases : - type: "array" - items: - $ref: "#/definitions/DhcpStaticLease" - DhcpSearchResult: - type: "object" - description: "Information about a DHCP server discovered in the current network" - properties: - other_server: - $ref: "#/definitions/DhcpSearchResultOtherServer" - static_ip: - $ref: "#/definitions/DhcpSearchResultStaticIP" - DhcpSearchResultOtherServer: - type: "object" - properties: - found: - type: "string" - description: "yes|no|error" - example: "no" - error: - type: "string" - description: "Set if found=error" - example: "" - DhcpSearchResultStaticIP: - type: "object" - properties: - static: - type: "string" - description: "yes|no|error" - example: "yes" - ip: - type: "string" - description: "Set if static=no" - example: "" - DnsAnswer: - type: "object" - description: "DNS answer section" - properties: - ttl: - type: "integer" - example: 55 - type: - type: "string" - example: "A" - value: - type: "string" - example: "217.69.139.201" - DnsQuestion: - type: "object" - description: "DNS question section" - properties: - class: - type: "string" - example: "IN" - host: - type: "string" - example: "example.org" - type: - type: "string" - example: "A" - AddUrlRequest: - type: "object" - description: "/add_url request data" - properties: - name: - type: "string" - url: - description: "URL or an absolute path to the file containing filtering rules" - type: "string" - example: "https://filters.adtidy.org/windows/filters/15.txt" - RemoveUrlRequest: - type: "object" - description: "/remove_url request data" - properties: - url: - description: "Previously added URL containing filtering rules" - type: "string" - example: "https://filters.adtidy.org/windows/filters/15.txt" - QueryLogItem: - type: "object" - description: "Query log item" - properties: - answer: - type: "array" - items: - $ref: "#/definitions/DnsAnswer" - original_answer: - type: "array" - description: "Answer from upstream server (optional)" - items: - $ref: "#/definitions/DnsAnswer" - answer_dnssec: - type: "boolean" - client: - type: "string" - example: "192.168.0.1" - elapsedMs: - type: "string" - example: "54.023928" - question: - $ref: "#/definitions/DnsQuestion" - filterId: - type: "integer" - example: 123123 - description: "In case if there's a rule applied to this DNS request, this is ID of the filter that rule belongs to." - rule: - type: "string" - example: "||example.org^" - description: "Filtering rule applied to the request (if any)" - reason: - type: "string" - description: "DNS filter status" - enum: - - "NotFilteredNotFound" - - "NotFilteredWhiteList" - - "NotFilteredError" - - "FilteredBlackList" - - "FilteredSafeBrowsing" - - "FilteredParental" - - "FilteredInvalid" - - "FilteredSafeSearch" - - "FilteredBlockedService" - - "ReasonRewrite" - service_name: - type: "string" - description: "Set if reason=FilteredBlockedService" - status: - type: "string" - description: "DNS response status" - example: "NOERROR" - time: - type: "string" - description: "DNS request processing start time" - example: "2018-11-26T00:02:41+03:00" - - QueryLog: - type: "object" - description: "Query log" - properties: - oldest: - type: "string" - example: "2018-11-26T00:02:41+03:00" - data: - type: "array" - items: - $ref: "#/definitions/QueryLogItem" - - QueryLogConfig: - type: "object" - description: "Query log configuration" - properties: - enabled: - type: "boolean" - description: "Is query log enabled" - interval: - type: "integer" - description: "Time period to keep data (1 | 7 | 30 | 90)" - anonymize_client_ip: - type: "boolean" - description: "Anonymize clients' IP addresses" - - TlsConfig: - type: "object" - description: "TLS configuration settings and status" - properties: - # TLS configuration - enabled: - type: "boolean" - example: "true" - description: "enabled is the encryption (DOT/DOH/HTTPS) status" - server_name: - type: "string" - example: "example.org" - description: "server_name is the hostname of your HTTPS/TLS server" - force_https: - type: "boolean" - example: "true" - description: "if true, forces HTTP->HTTPS redirect" - port_https: - type: "integer" - format: "int32" - example: 443 - description: "HTTPS port. If 0, HTTPS will be disabled." - port_dns_over_tls: - type: "integer" - format: "int32" - example: 853 - description: "DNS-over-TLS port. If 0, DOT will be disabled." - certificate_chain: - type: "string" - description: "Base64 string with PEM-encoded certificates chain" - private_key: - type: "string" - description: "Base64 string with PEM-encoded private key" - certificate_path: - type: "string" - description: "Path to certificate file" - private_key_path: - type: "string" - description: "Path to private key file" - # Below goes validation fields - valid_cert: - type: "boolean" - example: "true" - description: "valid_cert is true if the specified certificates chain is a valid chain of X509 certificates" - valid_chain: - type: "boolean" - example: "true" - description: "valid_chain is true if the specified certificates chain is verified and issued by a known CA" - subject: - type: "string" - example: "CN=example.org" - description: "subject is the subject of the first certificate in the chain" - issuer: - type: "string" - example: "CN=Let's Encrypt Authority X3,O=Let's Encrypt,C=US" - description: "issuer is the issuer of the first certificate in the chain" - not_before: - type: "string" - example: "2019-01-31T10:47:32Z" - description: "not_before is the NotBefore field of the first certificate in the chain" - not_after: - type: "string" - example: "2019-05-01T10:47:32Z" - description: "not_after is the NotAfter field of the first certificate in the chain" - dns_names: - type: "array" - items: - type: "string" - description: "dns_names is the value of SubjectAltNames field of the first certificate in the chain" - example: - - "*.example.org" - valid_key: - type: "boolean" - example: "true" - description: "valid_key is true if the key is a valid private key" - key_type: - type: "string" - example: "RSA" - description: "key_type is either RSA or ECDSA" - warning_validation: - type: "string" - example: "You have specified an empty certificate" - description: "warning_validation is a validation warning message with the issue description" - valid_pair: - type: "boolean" - example: "true" - description: "valid_pair is true if both certificate and private key are correct" - NetInterface: - type: "object" - description: "Network interface info" - properties: - flags: - type: "string" - example: "up|broadcast|multicast" - hardware_address: - type: "string" - example: "52:54:00:11:09:ba" - mtu: - type: "integer" - format: "int32" - example: 1500 - name: - type: "string" - example: "eth0" - ip_addresses: - type: "array" - items: - type: "string" - example: - - "127.0.0.1" - AddressInfo: - type: "object" - description: "Port information" - properties: - ip: - type: "string" - example: "127.0.0.1" - port: - type: "integer" - format: "int32" - example: 53 - AddressesInfo: - type: "object" - description: "AdGuard Home addresses configuration" - properties: - dns_port: - type: "integer" - format: "int32" - example: 53 - web_port: - type: "integer" - format: "int32" - example: 80 - interfaces: - type: "object" - description: "Network interfaces dictionary (key is the interface name)" - additionalProperties: - $ref: "#/definitions/NetInterface" - - ProfileInfo: - type: "object" - description: "Information about the current user" - properties: - name: - type: "string" - - Client: - type: "object" - description: "Client information" - properties: - name: - type: "string" - description: "Name" - example: "localhost" - ids: - type: "array" - description: "IP, CIDR or MAC address" - items: - type: "string" - use_global_settings: - type: "boolean" - filtering_enabled: - type: "boolean" - parental_enabled: - type: "boolean" - safebrowsing_enabled: - type: "boolean" - safesearch_enabled: - type: "boolean" - use_global_blocked_services: - type: "boolean" - blocked_services: - type: "array" - items: - type: "string" - upstreams: - type: "array" - items: - type: "string" - ClientAuto: - type: "object" - description: "Auto-Client information" - properties: - ip: - type: "string" - description: "IP address" - example: "127.0.0.1" - name: - type: "string" - description: "Name" - example: "localhost" - source: - type: "string" - description: "The source of this information" - example: "etc/hosts" - ClientUpdate: - type: "object" - description: "Client update request" - properties: - name: - type: "string" - data: - $ref: "#/definitions/Client" - ClientDelete: - type: "object" - description: "Client delete request" - properties: - name: - type: "string" - - ClientsFindResponse: - type: "array" - description: "Response to clients find operation" - items: - $ref: "#/definitions/ClientsFindEntry" - - ClientsFindEntry: - type: "object" - properties: - "1.2.3.4": - items: - $ref: "#/definitions/Client" - - Clients: - type: "object" - properties: - clients: - $ref: "#/definitions/ClientsArray" - auto_clients: - $ref: "#/definitions/ClientsAutoArray" - ClientsArray: - type: "array" - items: - $ref: "#/definitions/Client" - description: "Clients array" - ClientsAutoArray: - type: "array" - items: - $ref: "#/definitions/ClientAuto" - description: "Auto-Clients array" - - RewriteList: - type: "array" - items: - $ref: "#/definitions/RewriteEntry" - description: "Rewrite rules array" - RewriteEntry: - type: "object" - description: "Rewrite rule" - properties: - domain: - type: "string" - description: "Domain name" - example: "example.org" - answer: - type: "string" - description: "value of A, AAAA or CNAME DNS record" - example: "127.0.0.1" - - BlockedServicesArray: - type: "array" - items: - type: "string" - - CheckConfigRequest: - type: "object" - description: "Configuration to be checked" - properties: - dns: - $ref: "#/definitions/CheckConfigRequestInfo" - web: - $ref: "#/definitions/CheckConfigRequestInfo" - set_static_ip: - type: "boolean" - example: false - CheckConfigRequestInfo: - type: "object" - properties: - ip: - type: "string" - example: "127.0.0.1" - port: - type: "integer" - format: "int32" - example: 53 - autofix: - type: "boolean" - example: false - CheckConfigResponse: - type: "object" - properties: - dns: - $ref: "#/definitions/CheckConfigResponseInfo" - web: - $ref: "#/definitions/CheckConfigResponseInfo" - static_ip: - $ref: "#/definitions/CheckConfigStaticIpInfo" - CheckConfigResponseInfo: - type: "object" - properties: - status: - type: "string" - example: "" - can_autofix: - type: "boolean" - example: false - CheckConfigStaticIpInfo: - type: "object" - properties: - static: - type: "string" - example: "no" - description: "Can be: yes, no, error" - ip: - type: "string" - example: "192.168.1.1" - description: "Current dynamic IP address. Set if static=no" - error: - type: "string" - example: "" - description: "Error text. Set if static=error" - - - InitialConfiguration: - type: "object" - description: "AdGuard Home initial configuration (for the first-install wizard)" - properties: - dns: - $ref: "#/definitions/AddressInfo" - web: - $ref: "#/definitions/AddressInfo" - username: - type: "string" - description: "Basic auth username" - example: "admin" - password: - type: "string" - description: "Basic auth password" - example: "password" - Login: - type: "object" - description: "Login request data" - properties: - username: - type: "string" - description: "User name" - password: - type: "string" - description: "Password" + $ref: "#/components/schemas/TlsConfig" + description: TLS configuration JSON + required: true + DhcpStaticLease: + content: + application/json: + schema: + $ref: "#/components/schemas/DhcpStaticLease" + required: true + RewriteEntry: + content: + application/json: + schema: + $ref: "#/components/schemas/RewriteEntry" + required: true + schemas: + ServerStatus: + type: object + description: AdGuard Home server status and configuration + required: + - dns_address + - dns_port + - protection_enabled + - querylog_enabled + - running + - bootstrap_dns + - upstream_dns + - version + - language + properties: + dns_address: + type: string + example: 127.0.0.1 + dns_port: + type: integer + format: int32 + example: 53 + minimum: 1 + maximum: 65535 + protection_enabled: + type: boolean + querylog_enabled: + type: boolean + running: + type: boolean + bootstrap_dns: + type: string + example: 8.8.8.8:53 + upstream_dns: + type: array + items: + type: string + example: + - tls://1.1.1.1 + - tls://1.0.0.1 + version: + type: string + example: "0.1" + language: + type: string + example: en + DNSConfig: + type: object + description: Query log configuration + properties: + protection_enabled: + type: boolean + ratelimit: + type: integer + blocking_mode: + type: string + enum: + - default + - nxdomain + - null_ip + - custom_ip + blocking_ipv4: + type: string + blocking_ipv6: + type: string + edns_cs_enabled: + type: boolean + dnssec_enabled: + type: boolean + UpstreamsConfig: + type: object + description: Upstreams configuration + required: + - bootstrap_dns + - upstream_dns + - all_servers + properties: + bootstrap_dns: + type: array + description: Bootstrap servers, port is optional after colon. Empty value will + reset it to default values + items: + type: string + example: + - 8.8.8.8:53 + - 1.1.1.1:53 + upstream_dns: + type: array + description: Upstream servers, port is optional after colon. Empty value will + reset it to default values + items: + type: string + example: + - tls://1.1.1.1 + - tls://1.0.0.1 + all_servers: + type: boolean + description: If true, parallel queries to all configured upstream servers are + enabled + Filter: + type: object + description: Filter subscription info + required: + - enabled + - id + - lastUpdated + - name + - rulesCount + - url + properties: + enabled: + type: boolean + id: + type: integer + example: 1234 + lastUpdated: + type: string + format: date-time + example: 2018-10-30T12:18:57+03:00 + name: + type: string + example: AdGuard Simplified Domain Names filter + rulesCount: + type: integer + example: 5912 + url: + type: string + example: https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt + FilterStatus: + type: object + description: Filtering settings + properties: + enabled: + type: boolean + interval: + type: integer + filters: + type: array + items: + $ref: "#/components/schemas/Filter" + user_rules: + type: array + items: + type: string + FilterConfig: + type: object + description: Filtering settings + properties: + enabled: + type: boolean + interval: + type: integer + FilterSetUrl: + type: object + description: Filtering URL settings + properties: + url: + type: string + enabled: + type: boolean + FilterRefreshRequest: + type: object + description: Refresh Filters request data + properties: + whitelist: + type: boolean + FilterCheckHostResponse: + type: object + description: Check Host Result + properties: + reason: + type: string + description: DNS filter status + enum: + - NotFilteredNotFound + - NotFilteredWhiteList + - NotFilteredError + - FilteredBlackList + - FilteredSafeBrowsing + - FilteredParental + - FilteredInvalid + - FilteredSafeSearch + - FilteredBlockedService + - ReasonRewrite + filter_id: + type: integer + rule: + type: string + example: "||example.org^" + description: Filtering rule applied to the request (if any) + service_name: + type: string + description: Set if reason=FilteredBlockedService + cname: + type: string + description: Set if reason=ReasonRewrite + ip_addrs: + type: array + items: + type: string + description: Set if reason=ReasonRewrite + FilterRefreshResponse: + type: object + description: /filtering/refresh response data + properties: + updated: + type: integer + GetVersionRequest: + type: object + description: /version.json request data + properties: + recheck_now: + description: If false, server will check for a new version data only once in + several hours + type: boolean + VersionInfo: + type: object + description: Information about the latest available version of AdGuard Home + properties: + new_version: + type: string + example: v0.9 + announcement: + type: string + example: AdGuard Home v0.9 is now available! + announcement_url: + type: string + example: https://github.com/AdguardTeam/AdGuardHome/releases/tag/v0.9 + can_autoupdate: + type: boolean + Stats: + type: object + description: Server statistics data + properties: + time_units: + type: string + description: Time units (hours | days) + example: hours + num_dns_queries: + type: integer + description: Total number of DNS queries + example: 123 + num_blocked_filtering: + type: integer + description: Number of requests blocked by filtering rules + example: 50 + num_replaced_safebrowsing: + type: integer + description: Number of requests blocked by safebrowsing module + example: 5 + num_replaced_safesearch: + type: integer + description: Number of requests blocked by safesearch module + example: 5 + num_replaced_parental: + type: integer + description: Number of blocked adult websites + example: 15 + avg_processing_time: + type: number + format: float + description: Average time in milliseconds on processing a DNS + example: 0.34 + top_queried_domains: + type: array + items: + type: object + top_clients: + type: array + items: + type: object + top_blocked_domains: + type: array + items: + type: object + dns_queries: + type: array + items: + type: integer + blocked_filtering: + type: array + items: + type: integer + replaced_safebrowsing: + type: array + items: + type: integer + replaced_parental: + type: array + items: + type: integer + StatsConfig: + type: object + description: Statistics configuration + properties: + interval: + type: integer + description: Time period to keep data (1 | 7 | 30 | 90) + DhcpConfig: + type: object + description: Built-in DHCP server configuration + required: + - enabled + - gateway_ip + - subnet_mask + - range_start + - range_end + - lease_duration + properties: + enabled: + type: boolean + gateway_ip: + type: string + example: 192.168.1.1 + subnet_mask: + type: string + example: 255.255.255.0 + range_start: + type: string + example: 192.168.1.2 + range_end: + type: string + example: 192.168.10.50 + lease_duration: + type: string + example: 12h + DhcpLease: + type: object + description: DHCP lease information + required: + - mac + - ip + - hostname + - expires + properties: + mac: + type: string + example: 00:11:09:b3:b3:b8 + ip: + type: string + example: 192.168.1.22 + hostname: + type: string + example: dell + expires: + type: string + format: date-time + example: 2017-07-21T17:32:28Z + DhcpStaticLease: + type: object + description: DHCP static lease information + required: + - mac + - ip + - hostname + - expires + properties: + mac: + type: string + example: 00:11:09:b3:b3:b8 + ip: + type: string + example: 192.168.1.22 + hostname: + type: string + example: dell + DhcpStatus: + type: object + description: Built-in DHCP server configuration and status + required: + - config + - leases + properties: + config: + $ref: "#/components/schemas/DhcpConfig" + leases: + type: array + items: + $ref: "#/components/schemas/DhcpLease" + static_leases: + type: array + items: + $ref: "#/components/schemas/DhcpStaticLease" + DhcpSearchResult: + type: object + description: Information about a DHCP server discovered in the current network + properties: + other_server: + $ref: "#/components/schemas/DhcpSearchResultOtherServer" + static_ip: + $ref: "#/components/schemas/DhcpSearchResultStaticIP" + DhcpSearchResultOtherServer: + type: object + properties: + found: + type: string + description: yes|no|error + example: no + error: + type: string + description: Set if found=error + example: "" + DhcpSearchResultStaticIP: + type: object + properties: + static: + type: string + description: yes|no|error + example: yes + ip: + type: string + description: Set if static=no + example: "" + DnsAnswer: + type: object + description: DNS answer section + properties: + ttl: + type: integer + example: 55 + type: + type: string + example: A + value: + type: string + example: 217.69.139.201 + DnsQuestion: + type: object + description: DNS question section + properties: + class: + type: string + example: IN + host: + type: string + example: example.org + type: + type: string + example: A + AddUrlRequest: + type: object + description: /add_url request data + properties: + name: + type: string + url: + description: URL or an absolute path to the file containing filtering rules + type: string + example: https://filters.adtidy.org/windows/filters/15.txt + RemoveUrlRequest: + type: object + description: /remove_url request data + properties: + url: + description: Previously added URL containing filtering rules + type: string + example: https://filters.adtidy.org/windows/filters/15.txt + QueryLogItem: + type: object + description: Query log item + properties: + answer: + type: array + items: + $ref: "#/components/schemas/DnsAnswer" + original_answer: + type: array + description: Answer from upstream server (optional) + items: + $ref: "#/components/schemas/DnsAnswer" + answer_dnssec: + type: boolean + client: + type: string + example: 192.168.0.1 + elapsedMs: + type: string + example: "54.023928" + question: + $ref: "#/components/schemas/DnsQuestion" + filterId: + type: integer + example: 123123 + description: In case if there's a rule applied to this DNS request, this is ID of + the filter that rule belongs to. + rule: + type: string + example: "||example.org^" + description: Filtering rule applied to the request (if any) + reason: + type: string + description: DNS filter status + enum: + - NotFilteredNotFound + - NotFilteredWhiteList + - NotFilteredError + - FilteredBlackList + - FilteredSafeBrowsing + - FilteredParental + - FilteredInvalid + - FilteredSafeSearch + - FilteredBlockedService + - ReasonRewrite + service_name: + type: string + description: Set if reason=FilteredBlockedService + status: + type: string + description: DNS response status + example: NOERROR + time: + type: string + description: DNS request processing start time + example: 2018-11-26T00:02:41+03:00 + QueryLog: + type: object + description: Query log + properties: + oldest: + type: string + example: 2018-11-26T00:02:41+03:00 + data: + type: array + items: + $ref: "#/components/schemas/QueryLogItem" + QueryLogConfig: + type: object + description: Query log configuration + properties: + enabled: + type: boolean + description: Is query log enabled + interval: + type: integer + description: Time period to keep data (1 | 7 | 30 | 90) + anonymize_client_ip: + type: boolean + description: Anonymize clients' IP addresses + TlsConfig: + type: object + description: TLS configuration settings and status + properties: + enabled: + type: boolean + example: "true" + description: enabled is the encryption (DOT/DOH/HTTPS) status + server_name: + type: string + example: example.org + description: server_name is the hostname of your HTTPS/TLS server + force_https: + type: boolean + example: "true" + description: if true, forces HTTP->HTTPS redirect + port_https: + type: integer + format: int32 + example: 443 + description: HTTPS port. If 0, HTTPS will be disabled. + port_dns_over_tls: + type: integer + format: int32 + example: 853 + description: DNS-over-TLS port. If 0, DOT will be disabled. + certificate_chain: + type: string + description: Base64 string with PEM-encoded certificates chain + private_key: + type: string + description: Base64 string with PEM-encoded private key + certificate_path: + type: string + description: Path to certificate file + private_key_path: + type: string + description: Path to private key file + valid_cert: + type: boolean + example: "true" + description: valid_cert is true if the specified certificates chain is a valid + chain of X509 certificates + valid_chain: + type: boolean + example: "true" + description: valid_chain is true if the specified certificates chain is verified + and issued by a known CA + subject: + type: string + example: CN=example.org + description: subject is the subject of the first certificate in the chain + issuer: + type: string + example: CN=Let's Encrypt Authority X3,O=Let's Encrypt,C=US + description: issuer is the issuer of the first certificate in the chain + not_before: + type: string + example: 2019-01-31T10:47:32Z + description: not_before is the NotBefore field of the first certificate in the + chain + not_after: + type: string + example: 2019-05-01T10:47:32Z + description: not_after is the NotAfter field of the first certificate in the chain + dns_names: + type: array + items: + type: string + description: dns_names is the value of SubjectAltNames field of the first + certificate in the chain + example: + - "*.example.org" + valid_key: + type: boolean + example: "true" + description: valid_key is true if the key is a valid private key + key_type: + type: string + example: RSA + description: key_type is either RSA or ECDSA + warning_validation: + type: string + example: You have specified an empty certificate + description: warning_validation is a validation warning message with the issue + description + valid_pair: + type: boolean + example: "true" + description: valid_pair is true if both certificate and private key are correct + NetInterface: + type: object + description: Network interface info + properties: + flags: + type: string + example: up|broadcast|multicast + hardware_address: + type: string + example: 52:54:00:11:09:ba + mtu: + type: integer + format: int32 + example: 1500 + name: + type: string + example: eth0 + ip_addresses: + type: array + items: + type: string + example: + - 127.0.0.1 + AddressInfo: + type: object + description: Port information + properties: + ip: + type: string + example: 127.0.0.1 + port: + type: integer + format: int32 + example: 53 + AddressesInfo: + type: object + description: AdGuard Home addresses configuration + properties: + dns_port: + type: integer + format: int32 + example: 53 + web_port: + type: integer + format: int32 + example: 80 + interfaces: + type: object + description: Network interfaces dictionary (key is the interface name) + additionalProperties: + $ref: "#/components/schemas/NetInterface" + ProfileInfo: + type: object + description: Information about the current user + properties: + name: + type: string + Client: + type: object + description: Client information + properties: + name: + type: string + description: Name + example: localhost + ids: + type: array + description: IP, CIDR or MAC address + items: + type: string + use_global_settings: + type: boolean + filtering_enabled: + type: boolean + parental_enabled: + type: boolean + safebrowsing_enabled: + type: boolean + safesearch_enabled: + type: boolean + use_global_blocked_services: + type: boolean + blocked_services: + type: array + items: + type: string + upstreams: + type: array + items: + type: string + ClientAuto: + type: object + description: Auto-Client information + properties: + ip: + type: string + description: IP address + example: 127.0.0.1 + name: + type: string + description: Name + example: localhost + source: + type: string + description: The source of this information + example: etc/hosts + ClientUpdate: + type: object + description: Client update request + properties: + name: + type: string + data: + $ref: "#/components/schemas/Client" + ClientDelete: + type: object + description: Client delete request + properties: + name: + type: string + ClientsFindResponse: + type: array + description: Response to clients find operation + items: + $ref: "#/components/schemas/ClientsFindEntry" + ClientsFindEntry: + type: object + properties: + 1.2.3.4: + items: + $ref: "#/components/schemas/Client" + Clients: + type: object + properties: + clients: + $ref: "#/components/schemas/ClientsArray" + auto_clients: + $ref: "#/components/schemas/ClientsAutoArray" + ClientsArray: + type: array + items: + $ref: "#/components/schemas/Client" + description: Clients array + ClientsAutoArray: + type: array + items: + $ref: "#/components/schemas/ClientAuto" + description: Auto-Clients array + RewriteList: + type: array + items: + $ref: "#/components/schemas/RewriteEntry" + description: Rewrite rules array + RewriteEntry: + type: object + description: Rewrite rule + properties: + domain: + type: string + description: Domain name + example: example.org + answer: + type: string + description: value of A, AAAA or CNAME DNS record + example: 127.0.0.1 + BlockedServicesArray: + type: array + items: + type: string + CheckConfigRequest: + type: object + description: Configuration to be checked + properties: + dns: + $ref: "#/components/schemas/CheckConfigRequestInfo" + web: + $ref: "#/components/schemas/CheckConfigRequestInfo" + set_static_ip: + type: boolean + example: false + CheckConfigRequestInfo: + type: object + properties: + ip: + type: string + example: 127.0.0.1 + port: + type: integer + format: int32 + example: 53 + autofix: + type: boolean + example: false + CheckConfigResponse: + type: object + properties: + dns: + $ref: "#/components/schemas/CheckConfigResponseInfo" + web: + $ref: "#/components/schemas/CheckConfigResponseInfo" + static_ip: + $ref: "#/components/schemas/CheckConfigStaticIpInfo" + CheckConfigResponseInfo: + type: object + properties: + status: + type: string + example: "" + can_autofix: + type: boolean + example: false + CheckConfigStaticIpInfo: + type: object + properties: + static: + type: string + example: no + description: "Can be: yes, no, error" + ip: + type: string + example: 192.168.1.1 + description: Current dynamic IP address. Set if static=no + error: + type: string + example: "" + description: Error text. Set if static=error + InitialConfiguration: + type: object + description: AdGuard Home initial configuration (for the first-install wizard) + properties: + dns: + $ref: "#/components/schemas/AddressInfo" + web: + $ref: "#/components/schemas/AddressInfo" + username: + type: string + description: Basic auth username + example: admin + password: + type: string + description: Basic auth password + example: password + Login: + type: object + description: Login request data + properties: + username: + type: string + description: User name + password: + type: string + description: Password \ No newline at end of file diff --git a/openapi/package.json b/openapi/package.json index 9b3d78ed..d5644748 100644 --- a/openapi/package.json +++ b/openapi/package.json @@ -3,10 +3,13 @@ "version": "0.1.0", "private": true, "scripts": { - "start": "node index.js" + "start": "node_modules/.bin/speccy serve -p 4000 openapi.yaml", + "start-old": "node index.js", + "test": "node_modules/.bin/speccy lint openapi.yaml" }, "dependencies": { "express": "^4.16.4", - "swagger-ui-dist": "^3.20.1" + "swagger-ui-dist": "^3.20.1", + "speccy": "^0.11.0" } } diff --git a/openapi/yarn.lock b/openapi/yarn.lock index 2eeacbe0..b111fca7 100644 --- a/openapi/yarn.lock +++ b/openapi/yarn.lock @@ -2,44 +2,263 @@ # yarn lockfile v1 -accepts@~1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" - integrity sha1-63d99gEXI6OxTopywIBcjoZ0a9I= +"@babel/code-frame@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" + integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== dependencies: - mime-types "~2.1.18" - negotiator "0.6.1" + "@babel/highlight" "^7.8.3" + +"@babel/helper-validator-identifier@^7.9.0": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80" + integrity sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g== + +"@babel/highlight@^7.8.3": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" + integrity sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ== + dependencies: + "@babel/helper-validator-identifier" "^7.9.0" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/runtime@^7.0.0", "@babel/runtime@^7.8.7": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06" + integrity sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q== + dependencies: + regenerator-runtime "^0.13.4" + +"@cloudflare/json-schema-walker@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@cloudflare/json-schema-walker/-/json-schema-walker-0.1.1.tgz#d1cc94065327b0b3800158db40cb78124a3476de" + integrity sha512-P3n0hEgk1m6uKWgL4Yb1owzXVG4pM70G4kRnDQxZXiVvfCRtaqiHu+ZRiRPzmwGBiLTO1LWc2yR1M8oz0YkXww== + +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + +accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" + +ajv@^5.5.2: + version "5.5.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" + integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU= + dependencies: + co "^4.6.0" + fast-deep-equal "^1.0.0" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.3.0" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= -body-parser@1.18.3: - version "1.18.3" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" - integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ= +async@^1.4.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= + +better-ajv-errors@^0.6.1, better-ajv-errors@^0.6.7: + version "0.6.7" + resolved "https://registry.yarnpkg.com/better-ajv-errors/-/better-ajv-errors-0.6.7.tgz#b5344af1ce10f434fe02fc4390a5a9c811e470d1" + integrity sha512-PYgt/sCzR4aGpyNy5+ViSQ77ognMnWq7745zM+/flYO4/Yisdtp9wDQW2IKCyVYPUxQt3E/b5GBSwfhd1LPdlg== dependencies: - bytes "3.0.0" + "@babel/code-frame" "^7.0.0" + "@babel/runtime" "^7.0.0" + chalk "^2.4.1" + core-js "^3.2.1" + json-to-ast "^2.0.3" + jsonpointer "^4.0.1" + leven "^3.1.0" + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +body-parser@1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" + integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== + dependencies: + bytes "3.1.0" content-type "~1.0.4" debug "2.6.9" depd "~1.1.2" - http-errors "~1.6.3" - iconv-lite "0.4.23" + http-errors "1.7.2" + iconv-lite "0.4.24" on-finished "~2.3.0" - qs "6.5.2" - raw-body "2.3.3" - type-is "~1.6.16" + qs "6.7.0" + raw-body "2.4.0" + type-is "~1.6.17" -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== -content-disposition@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" - integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ= +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + +camelcase@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= + +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +chalk@^2.0.0, chalk@^2.4.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +classnames@^2.2.0, classnames@^2.2.3, classnames@^2.2.6: + version "2.2.6" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" + integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== + +clipboard@^2.0.0: + version "2.0.6" + resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-2.0.6.tgz#52921296eec0fdf77ead1749421b21c968647376" + integrity sha512-g5zbiixBRk/wyKakSwCKd7vQXDjFnAMGHoEyBogG/bw9kTD9GvdAvaoRR1ALcEzt3pVKxZR0pViekPMIS0QyGg== + dependencies: + good-listener "^1.2.2" + select "^1.1.2" + tiny-emitter "^2.0.0" + +cliui@^3.0.3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +cliui@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + +code-error-fragment@0.0.230: + version "0.0.230" + resolved "https://registry.yarnpkg.com/code-error-fragment/-/code-error-fragment-0.0.230.tgz#d736d75c832445342eca1d1fedbf17d9618b14d7" + integrity sha512-cadkfKp6932H8UkhzE/gcUqhRMNf8jHzkAN7+5Myabswaghu4xABTgPHDCjW+dBAJxj/SpkTYokpzDqY4pCzQw== + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +commander@^2.18.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +content-disposition@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== + dependencies: + safe-buffer "5.1.2" content-type@~1.0.4: version "1.0.4" @@ -51,10 +270,26 @@ cookie-signature@1.0.6: resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= -cookie@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" - integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= +cookie@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== + +core-js@^3.2.1: + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a" + integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA== + +cross-spawn@^6.0.0: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" debug@2.6.9: version "2.6.9" @@ -63,6 +298,21 @@ debug@2.6.9: dependencies: ms "2.0.0" +decamelize@^1.1.1, decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decko@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decko/-/decko-1.2.0.tgz#fd43c735e967b8013306884a56fbe665996b6817" + integrity sha1-/UPHNelnuAEzBohKVvvmZZlraBc= + +delegate@^3.1.2: + version "3.2.0" + resolved "https://registry.yarnpkg.com/delegate/-/delegate-3.2.0.tgz#b66b71c3158522e8ab5744f720d8ca0c2af59166" + integrity sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw== + depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" @@ -73,75 +323,185 @@ destroy@~1.0.4: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= +dom-walk@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" + integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== + +dompurify@^1.0.10: + version "1.0.11" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-1.0.11.tgz#fe0f4a40d147f7cebbe31a50a1357539cfc1eb4d" + integrity sha512-XywCTXZtc/qCX3iprD1pIklRVk/uhl8BKpkTxr+ZyMVUzSUg7wkQXRBp/euJ5J5moa1QvfpvaPQVP71z1O59dQ== + ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= +ejs@^2.5.2: + version "2.7.4" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" + integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= +end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +es6-promise@^3.2.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" + integrity sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM= + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= -express@^4.16.4: - version "4.16.4" - resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e" - integrity sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg== +eventemitter3@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" + integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== dependencies: - accepts "~1.3.5" + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +express@^4.14.0, express@^4.16.4: + version "4.17.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" + integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== + dependencies: + accepts "~1.3.7" array-flatten "1.1.1" - body-parser "1.18.3" - content-disposition "0.5.2" + body-parser "1.19.0" + content-disposition "0.5.3" content-type "~1.0.4" - cookie "0.3.1" + cookie "0.4.0" cookie-signature "1.0.6" debug "2.6.9" depd "~1.1.2" encodeurl "~1.0.2" escape-html "~1.0.3" etag "~1.8.1" - finalhandler "1.1.1" + finalhandler "~1.1.2" fresh "0.5.2" merge-descriptors "1.0.1" methods "~1.1.2" on-finished "~2.3.0" - parseurl "~1.3.2" + parseurl "~1.3.3" path-to-regexp "0.1.7" - proxy-addr "~2.0.4" - qs "6.5.2" - range-parser "~1.2.0" + proxy-addr "~2.0.5" + qs "6.7.0" + range-parser "~1.2.1" safe-buffer "5.1.2" - send "0.16.2" - serve-static "1.13.2" - setprototypeof "1.1.0" - statuses "~1.4.0" - type-is "~1.6.16" + send "0.17.1" + serve-static "1.14.1" + setprototypeof "1.1.1" + statuses "~1.5.0" + type-is "~1.6.18" utils-merge "1.0.1" vary "~1.1.2" -finalhandler@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105" - integrity sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg== +fast-deep-equal@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" + integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ= + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +fast-safe-stringify@^2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz#124aa885899261f68aedb42a7c080de9da608743" + integrity sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA== + +finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== dependencies: debug "2.6.9" encodeurl "~1.0.2" escape-html "~1.0.3" on-finished "~2.3.0" - parseurl "~1.3.2" - statuses "~1.4.0" + parseurl "~1.3.3" + statuses "~1.5.0" unpipe "~1.0.0" +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +foreach@^2.0.4: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= + +format-util@^1.0.3: + version "1.0.5" + resolved "https://registry.yarnpkg.com/format-util/-/format-util-1.0.5.tgz#1ffb450c8a03e7bccffe40643180918cc297d271" + integrity sha512-varLbTj0e0yVyRpqQhuWV+8hlePAgaoFRhNFj50BNjEIrw1/DphHSObtqwskVCPWNgzwPoQrZAbfa/SBiicNeg== + forwarded@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" @@ -152,20 +512,86 @@ fresh@0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= -http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +global@^4.3.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" + integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== + dependencies: + min-document "^2.19.0" + process "^0.11.10" + +good-listener@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50" + integrity sha1-1TswzfkxPf+33JoNR3CWqm0UXFA= + dependencies: + delegate "^3.1.2" + +grapheme-splitter@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" + integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.3.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + +http-errors@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== dependencies: depd "~1.1.2" inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" -iconv-lite@0.4.23: - version "0.4.23" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" - integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA== +http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http2-client@^1.2.5: + version "1.3.3" + resolved "https://registry.yarnpkg.com/http2-client/-/http2-client-1.3.3.tgz#90fc15d646cca86956b156d07c83947d57d659a9" + integrity sha512-nUxLymWQ9pzkzTmir24p2RtsgruLmhje7lH3hLX1IpwvyTg77fW+1brenPPP3USAR+rQ36p5sTA/x7sjCJVkAA== + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" @@ -174,16 +600,210 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ipaddr.js@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz#eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e" - integrity sha1-6qM9bd16zo9/b+DJygRA5wZzix4= +inherits@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ini@^1.3.0: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= + +invert-kv@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== + +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.12.1, js-yaml@^3.2.3: + version "3.13.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" + integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +json-pointer@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/json-pointer/-/json-pointer-0.6.0.tgz#8e500550a6aac5464a473377da57aa6cc22828d7" + integrity sha1-jlAFUKaqxUZKRzN32leqbMIoKNc= + dependencies: + foreach "^2.0.4" + +json-schema-ref-parser@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/json-schema-ref-parser/-/json-schema-ref-parser-6.1.0.tgz#30af34aeab5bee0431da805dac0eb21b574bf63d" + integrity sha512-pXe9H1m6IgIpXmE5JSb8epilNTGsmTb2iPohAXpOdhqGFbQjNeHHsZxU+C8w6T81GZxSPFLeUoqDJmzxx5IGuw== + dependencies: + call-me-maybe "^1.0.1" + js-yaml "^3.12.1" + ono "^4.0.11" + +json-schema-to-openapi-schema@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/json-schema-to-openapi-schema/-/json-schema-to-openapi-schema-0.3.0.tgz#d8d4a1a321b3aa00dce71fa27ba5016f2d50288b" + integrity sha512-UaaAmmbAq61yQM5yLoVOM99GP1JI8YNVEv3QWbD/79YDNNKk99uGn1k2pa+ZSfdLILi/euGguVG8URmv5gR/Bw== + dependencies: + "@cloudflare/json-schema-walker" "^0.1.1" + +json-schema-traverse@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" + integrity sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A= + +json-to-ast@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/json-to-ast/-/json-to-ast-2.1.0.tgz#041a9fcd03c0845036acb670d29f425cea4faaf9" + integrity sha512-W9Lq347r8tA1DfMvAGn9QNcgYm4Wm7Yc+k8e6vezpMnRT+NHbtlxgNBXRVjXe9YM6eTn6+p/MKOlV/aABJcSnQ== + dependencies: + code-error-fragment "0.0.230" + grapheme-splitter "^1.0.4" + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +jsonpointer@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" + integrity sha1-T9kss04OnbPInIYi7PUfm5eMbLk= + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + dependencies: + invert-kv "^1.0.0" + +lcid@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== + dependencies: + invert-kv "^2.0.0" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +loader-utils@^1.1.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lunr@2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.6.tgz#f278beee7ffd56ad86e6e478ce02ab2b98c78dd5" + integrity sha512-swStvEyDqQ85MGpABCMBclZcLI/pBIlu8FFDtmX197+oEgKloJ67QnB+Tidh0340HmLMs39c4GrkPY3cmkXp6Q== + +map-age-cleaner@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== + dependencies: + p-defer "^1.0.0" + +mark.js@^8.11.1: + version "8.11.1" + resolved "https://registry.yarnpkg.com/mark.js/-/mark.js-8.11.1.tgz#180f1f9ebef8b0e638e4166ad52db879beb2ffc5" + integrity sha1-GA8fnr74sOY45BZq1S24eb6y/8U= + +marked@^0.6.1: + version "0.6.3" + resolved "https://registry.yarnpkg.com/marked/-/marked-0.6.3.tgz#79babad78af638ba4d522a9e715cdfdd2429e946" + integrity sha512-Fqa7eq+UaxfMriqzYLayfqAE40WN03jf+zHjT18/uXNuzjq3TY0XTbrAoPeqSJrAmPz11VuUA+kBPYOhHt9oOQ== media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= +mem@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" + integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== + dependencies: + map-age-cleaner "^0.1.1" + mimic-fn "^2.0.0" + p-is-promise "^2.0.0" + +memoize-one@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.1.1.tgz#047b6e3199b508eaec03504de71229b8eb1d75c0" + integrity sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA== + merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" @@ -194,32 +814,167 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -mime-db@~1.37.0: - version "1.37.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8" - integrity sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg== +mime-db@1.43.0: + version "1.43.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" + integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== -mime-types@~2.1.18: - version "2.1.21" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96" - integrity sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg== +mime-types@~2.1.24: + version "2.1.26" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" + integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== dependencies: - mime-db "~1.37.0" + mime-db "1.43.0" -mime@1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" - integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mimic-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" + integrity sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU= + dependencies: + dom-walk "^0.1.0" + +minimist@^1.2.0: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +mobx-react@^5.4.3: + version "5.4.4" + resolved "https://registry.yarnpkg.com/mobx-react/-/mobx-react-5.4.4.tgz#b3de9c6eabcd0ed8a40036888cb0221ab9568b80" + integrity sha512-2mTzpyEjVB/RGk2i6KbcmP4HWcAUFox5ZRCrGvSyz49w20I4C4qql63grPpYrS9E9GKwgydBHQlA4y665LuRCQ== + dependencies: + hoist-non-react-statics "^3.0.0" + react-lifecycles-compat "^3.0.2" ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -negotiator@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" - integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk= +ms@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +nconf-yaml@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nconf-yaml/-/nconf-yaml-1.0.2.tgz#fea065333cf42b77a5e8060517969799d4156575" + integrity sha1-/qBlMzz0K3el6AYFF5aXmdQVZXU= + dependencies: + js-yaml "^3.2.3" + +nconf@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/nconf/-/nconf-0.10.0.tgz#da1285ee95d0a922ca6cee75adcf861f48205ad2" + integrity sha512-fKiXMQrpP7CYWJQzKkPPx9hPgmq+YLDyxcG9N8RpiE9FoCkCbzD0NyW0YhE3xn3Aupe7nnDeIx4PFzYehpHT9Q== + dependencies: + async "^1.4.0" + ini "^1.3.0" + secure-keys "^1.0.0" + yargs "^3.19.0" + +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +node-fetch-h2@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/node-fetch-h2/-/node-fetch-h2-2.3.0.tgz#c6188325f9bd3d834020bf0f2d6dc17ced2241ac" + integrity sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg== + dependencies: + http2-client "^1.2.5" + +node-fetch@^2.3.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" + integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== + +node-readfiles@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/node-readfiles/-/node-readfiles-0.2.0.tgz#dbbd4af12134e2e635c245ef93ffcf6f60673a5d" + integrity sha1-271K8SE04uY1wkXvk//Pb2BnOl0= + dependencies: + es6-promise "^3.2.1" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +oas-kit-common@^1.0.7, oas-kit-common@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/oas-kit-common/-/oas-kit-common-1.0.8.tgz#6d8cacf6e9097967a4c7ea8bcbcbd77018e1f535" + integrity sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ== + dependencies: + fast-safe-stringify "^2.0.7" + +oas-linter@^3.0.0, oas-linter@^3.1.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/oas-linter/-/oas-linter-3.1.2.tgz#ff5eae63290cd2c0ef195bae9bcf5e91b6884c19" + integrity sha512-mv3HBG9aQz8PLGvonewIN9Y2Ra8QL6jvotRvf7NCdZ20n5vg4dO4y61UZh6s+KRDfJaU1PO+9Oxrn3EUN4Xygw== + dependencies: + should "^13.2.1" + yaml "^1.8.3" + +oas-resolver@^2.2.4, oas-resolver@^2.3.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/oas-resolver/-/oas-resolver-2.3.2.tgz#990a722ddcafe9b0b85893362963b829190b236f" + integrity sha512-toGCUv8wyZZmUAAsw4jn+511xNpUFW2ZLp4sAZ7xpERIeosrbxBxtkVxot9kXvdUHtPjRafi5+bkJ56TwQeYSQ== + dependencies: + node-fetch-h2 "^2.3.0" + oas-kit-common "^1.0.8" + reftools "^1.1.1" + yaml "^1.8.3" + yargs "^15.3.1" + +oas-schema-walker@^1.1.3: + version "1.1.4" + resolved "https://registry.yarnpkg.com/oas-schema-walker/-/oas-schema-walker-1.1.4.tgz#4b9d090c3622039741334d3e138510ff38197618" + integrity sha512-foVDDS0RJYMfhQEDh/WdBuCzydTcsCnGo9EeD8SpWq1uW10JXiz+8SfYVDA7LO87kjmlnTRZle/2gr5qxabaEA== + +oas-validator@^3.0.1, oas-validator@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/oas-validator/-/oas-validator-3.4.0.tgz#7633b02e495af4a4e0224b249288b0928748476d" + integrity sha512-l/SxykuACi2U51osSsBXTxdsFc8Fw41xI7AsZkzgVgWJAzoEFaaNptt35WgY9C3757RUclsm6ye5GvSyYoozLQ== + dependencies: + ajv "^5.5.2" + better-ajv-errors "^0.6.7" + call-me-maybe "^1.0.1" + oas-kit-common "^1.0.7" + oas-linter "^3.1.0" + oas-resolver "^2.3.0" + oas-schema-walker "^1.1.3" + reftools "^1.1.0" + should "^13.2.1" + yaml "^1.8.3" + +object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= on-finished@~2.3.0: version "2.3.0" @@ -228,44 +983,271 @@ on-finished@~2.3.0: dependencies: ee-first "1.1.1" -parseurl@~1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" - integrity sha1-/CidTtiZMRlGDBViUyYs3I3mW/M= +once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +ono@^4.0.11: + version "4.0.11" + resolved "https://registry.yarnpkg.com/ono/-/ono-4.0.11.tgz#c7f4209b3e396e8a44ef43b9cedc7f5d791d221d" + integrity sha512-jQ31cORBFE6td25deYeD80wxKBMj+zBmHTrVxnc6CKhx8gho6ipmWM5zj/oeoqioZ99yqBls9Z/9Nss7J26G2g== + dependencies: + format-util "^1.0.3" + +openapi-sampler@1.0.0-beta.14: + version "1.0.0-beta.14" + resolved "https://registry.yarnpkg.com/openapi-sampler/-/openapi-sampler-1.0.0-beta.14.tgz#e06807f33a9c0fab841e212f5fb90e7af4acf30c" + integrity sha512-NNmH9YAN5AaCE4w6MQXdCrmsOJJQTswHVSp075+h+iiG+OTonpZE8HzwocozovD2imx4lamkuxGLs4E4bO4Z+g== + dependencies: + json-pointer "^0.6.0" + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= + dependencies: + lcid "^1.0.0" + +os-locale@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" + integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== + dependencies: + execa "^1.0.0" + lcid "^2.0.0" + mem "^4.0.0" + +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-is-promise@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" + integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== + +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= -proxy-addr@~2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93" - integrity sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA== +perfect-scrollbar@^1.4.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/perfect-scrollbar/-/perfect-scrollbar-1.5.0.tgz#821d224ed8ff61990c23f26db63048cdc75b6b83" + integrity sha512-NrNHJn5mUGupSiheBTy6x+6SXCFbLlm8fVZh9moIzw/LgqElN5q4ncR4pbCBCYuCJ8Kcl9mYM0NgDxvW+b4LxA== + +polished@^3.0.3: + version "3.5.1" + resolved "https://registry.yarnpkg.com/polished/-/polished-3.5.1.tgz#657b6faf4c2308f3e0b1951196803a5e5d67b122" + integrity sha512-GVbvskpBiDV5TknurGL6OyFfLHsCknxbU8w5iMppT8rW0tLEoQHrIRfrPNPqGXNj3HGhkjRvhmg59Fy7HSnCAw== + dependencies: + "@babel/runtime" "^7.8.7" + +prismjs@^1.15.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.20.0.tgz#9b685fc480a3514ee7198eac6a3bf5024319ff03" + integrity sha512-AEDjSrVNkynnw6A+B1DsFkd6AVdTnp+/WoUixFRULlCLZVRZlVQMVWio/16jv7G1FscUxQxOQhWwApgbnxr6kQ== + optionalDependencies: + clipboard "^2.0.0" + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + +prop-types@^15.5.0, prop-types@^15.6.1, prop-types@^15.7.2: + version "15.7.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + +proxy-addr@~2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" + integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== dependencies: forwarded "~0.1.2" - ipaddr.js "1.8.0" + ipaddr.js "1.9.1" -qs@6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - -range-parser@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" - integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= - -raw-body@2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" - integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw== +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== dependencies: - bytes "3.0.0" - http-errors "1.6.3" - iconv-lite "0.4.23" + end-of-stream "^1.1.0" + once "^1.3.1" + +qs@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" + integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" + integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== + dependencies: + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" unpipe "1.0.0" +react-dropdown@^1.6.4: + version "1.7.0" + resolved "https://registry.yarnpkg.com/react-dropdown/-/react-dropdown-1.7.0.tgz#20287aafabdece49a6595ebe40e3fa1a37c26456" + integrity sha512-zFZ73pgLA32hArpE4j/7DtOEhOMg240XG5QvbAb0/VinGekkHDVIakMyAFUKC5jDz8jqXEltgriqFW9R5iCtPQ== + dependencies: + classnames "^2.2.3" + +react-hot-loader@^4.8.0: + version "4.12.20" + resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-4.12.20.tgz#c2c42362a7578e5c30357a5ff7afa680aa0bef8a" + integrity sha512-lPlv1HVizi0lsi+UFACBJaydtRYILWkfHAC/lyCs6ZlAxlOZRQIfYHDqiGaRvL/GF7zyti+Qn9XpnDAUvdFA4A== + dependencies: + fast-levenshtein "^2.0.6" + global "^4.3.0" + hoist-non-react-statics "^3.3.0" + loader-utils "^1.1.0" + prop-types "^15.6.1" + react-lifecycles-compat "^3.0.4" + shallowequal "^1.1.0" + source-map "^0.7.3" + +react-is@^16.7.0, react-is@^16.8.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-lifecycles-compat@^3.0.2, react-lifecycles-compat@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" + integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== + +react-tabs@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/react-tabs/-/react-tabs-3.1.0.tgz#ecc50f034c1d6da2606fab9293055bbc861b382e" + integrity sha512-9RKc77HCPsjQDVPyZEw37g3JPtg26oSQ9o4mtaVXjJuLedDX5+TQcE+MRNKR+4aO3GMAY4YslCePGG1//MQ3Jg== + dependencies: + classnames "^2.2.0" + prop-types "^15.5.0" + +redoc@v2.0.0-rc.8-1: + version "2.0.0-rc.8-1" + resolved "https://registry.yarnpkg.com/redoc/-/redoc-2.0.0-rc.8-1.tgz#53e441f54e79ce25782525d937cd499af3b25e2d" + integrity sha512-/YoCdcl2QtveKz4CTXaqtOfCIaVgZZgcnfUNC5xK7xBl/LxTiNj3tUbgFmrYMLTZGzNdQ9TUJpsa7lXDKcr8Pw== + dependencies: + classnames "^2.2.6" + decko "^1.2.0" + dompurify "^1.0.10" + eventemitter3 "^3.0.0" + json-pointer "^0.6.0" + json-schema-ref-parser "^6.1.0" + lunr "2.3.6" + mark.js "^8.11.1" + marked "^0.6.1" + memoize-one "^5.0.0" + mobx-react "^5.4.3" + openapi-sampler "1.0.0-beta.14" + perfect-scrollbar "^1.4.0" + polished "^3.0.3" + prismjs "^1.15.0" + prop-types "^15.7.2" + react-dropdown "^1.6.4" + react-hot-loader "^4.8.0" + react-tabs "^3.0.0" + slugify "^1.3.4" + stickyfill "^1.1.1" + swagger2openapi "^5.2.3" + tslib "^1.9.3" + +reftools@^1.1.0, reftools@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/reftools/-/reftools-1.1.1.tgz#09cff48f62c09cae40bd1fe9683f5412d2a4656d" + integrity sha512-7ySkzK7YpUeJP16rzJqEXTZ7IrAq/AL/p+wWejD9wdKQOe+mYYVAOB3w5ZTs2eoHfmAidwr/6PcC+q+LzPF/DQ== + +regenerator-runtime@^0.13.4: + version "0.13.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" + integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + safe-buffer@5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -276,10 +1258,25 @@ safe-buffer@5.1.2: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -send@0.16.2: - version "0.16.2" - resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" - integrity sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw== +secure-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/secure-keys/-/secure-keys-1.0.0.tgz#f0c82d98a3b139a8776a8808050b824431087fca" + integrity sha1-8MgtmKOxOah3aogIBQuCRDEIf8o= + +select@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d" + integrity sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0= + +semver@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +send@0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== dependencies: debug "2.6.9" depd "~1.1.2" @@ -288,50 +1285,246 @@ send@0.16.2: escape-html "~1.0.3" etag "~1.8.1" fresh "0.5.2" - http-errors "~1.6.2" - mime "1.4.1" - ms "2.0.0" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" on-finished "~2.3.0" - range-parser "~1.2.0" - statuses "~1.4.0" + range-parser "~1.2.1" + statuses "~1.5.0" -serve-static@1.13.2: - version "1.13.2" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" - integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw== +serve-static@1.14.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== dependencies: encodeurl "~1.0.2" escape-html "~1.0.3" - parseurl "~1.3.2" - send "0.16.2" + parseurl "~1.3.3" + send "0.17.1" -setprototypeof@1.1.0: +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +shallowequal@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== -"statuses@>= 1.4.0 < 2": +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +should-equal@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/should-equal/-/should-equal-2.0.0.tgz#6072cf83047360867e68e98b09d71143d04ee0c3" + integrity sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA== + dependencies: + should-type "^1.4.0" + +should-format@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/should-format/-/should-format-3.0.3.tgz#9bfc8f74fa39205c53d38c34d717303e277124f1" + integrity sha1-m/yPdPo5IFxT04w01xcwPidxJPE= + dependencies: + should-type "^1.3.0" + should-type-adaptors "^1.0.1" + +should-type-adaptors@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/should-type-adaptors/-/should-type-adaptors-1.1.0.tgz#401e7f33b5533033944d5cd8bf2b65027792e27a" + integrity sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA== + dependencies: + should-type "^1.3.0" + should-util "^1.0.0" + +should-type@^1.3.0, should-type@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/should-type/-/should-type-1.4.0.tgz#0756d8ce846dfd09843a6947719dfa0d4cff5cf3" + integrity sha1-B1bYzoRt/QmEOmlHcZ36DUz/XPM= + +should-util@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/should-util/-/should-util-1.0.1.tgz#fb0d71338f532a3a149213639e2d32cbea8bcb28" + integrity sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g== + +should@^13.2.1: + version "13.2.3" + resolved "https://registry.yarnpkg.com/should/-/should-13.2.3.tgz#96d8e5acf3e97b49d89b51feaa5ae8d07ef58f10" + integrity sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ== + dependencies: + should-equal "^2.0.0" + should-format "^3.0.3" + should-type "^1.4.0" + should-type-adaptors "^1.0.1" + should-util "^1.0.0" + +signal-exit@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + +slugify@^1.3.4: + version "1.4.0" + resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.4.0.tgz#c9557c653c54b0c7f7a8e786ef3431add676d2cb" + integrity sha512-FtLNsMGBSRB/0JOE2A0fxlqjI6fJsgHGS13iTuVT28kViI4JjUiNqp/vyis0ZXYcMnpR3fzGNkv+6vRlI2GwdQ== + +source-map@^0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + +speccy@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/speccy/-/speccy-0.11.0.tgz#8edcb76d3ebc146ae39a44f5ed095bd326fb07ff" + integrity sha512-f9XXngfae43WR9uz8m3yk935nsJIJH1YaRNNjEYqF+uL3yNlabFgixPKncJKXT2LfiMhhszwVSgrDgUaUvGBVQ== + dependencies: + commander "^2.18.0" + ejs "^2.5.2" + express "^4.14.0" + json-schema-to-openapi-schema "^0.3.0" + nconf "^0.10.0" + nconf-yaml "^1.0.2" + node-fetch "^2.3.0" + node-readfiles "^0.2.0" + oas-linter "^3.0.0" + oas-resolver "^2.2.4" + oas-validator "^3.0.1" + redoc v2.0.0-rc.8-1 + yaml "^1.5.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +"statuses@>= 1.5.0 < 2", statuses@~1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= -statuses@~1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" - integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== +stickyfill@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stickyfill/-/stickyfill-1.1.1.tgz#39413fee9d025c74a7e59ceecb23784cc0f17f02" + integrity sha1-OUE/7p0CXHSn5ZzuyyN4TMDxfwI= + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string-width@^2.0.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" swagger-ui-dist@^3.20.1: - version "3.20.1" - resolved "https://registry.yarnpkg.com/swagger-ui-dist/-/swagger-ui-dist-3.20.1.tgz#2e871faf29984bc5f253b8641ba38b244001cfa4" - integrity sha512-iqFNNmJWH24leUj/ohS5iZTHLZSPZse8c9F+WSCMi6ZJcRBgYKcT413c8BR5BEdKvU1kkIwvYy7C8DOjTRq9hQ== + version "3.25.0" + resolved "https://registry.yarnpkg.com/swagger-ui-dist/-/swagger-ui-dist-3.25.0.tgz#90279cdcc56e591fcfbe7b5240a9d653b989336d" + integrity sha512-vwvJPPbdooTvDwLGzjIXinOXizDJJ6U1hxnJL3y6U3aL1d2MSXDmKg2139XaLBhsVZdnQJV2bOkX4reB+RXamg== -type-is@~1.6.16: - version "1.6.16" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" - integrity sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q== +swagger2openapi@^5.2.3: + version "5.4.0" + resolved "https://registry.yarnpkg.com/swagger2openapi/-/swagger2openapi-5.4.0.tgz#1e1c8909f7966b1f455bf1b66490093ac1c0029c" + integrity sha512-f5QqfXawiVijhjMtYqWZ55ESHPZFqrPC8L9idhIiuSX8O2qsa1i4MVGtCM3TQF+Smzr/6WfT/7zBuzG3aTgPAA== + dependencies: + better-ajv-errors "^0.6.1" + call-me-maybe "^1.0.1" + node-fetch-h2 "^2.3.0" + node-readfiles "^0.2.0" + oas-kit-common "^1.0.7" + oas-resolver "^2.3.0" + oas-schema-walker "^1.1.3" + oas-validator "^3.4.0" + reftools "^1.1.0" + yaml "^1.8.3" + yargs "^12.0.5" + +tiny-emitter@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423" + integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q== + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +tslib@^1.9.3: + version "1.11.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" + integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA== + +type-is@~1.6.17, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== dependencies: media-typer "0.3.0" - mime-types "~2.1.18" + mime-types "~2.1.24" unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" @@ -347,3 +1540,123 @@ vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@^1.2.9: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +window-size@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" + integrity sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY= + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +y18n@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= + +"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + +yaml@^1.5.0, yaml@^1.8.3: + version "1.8.3" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.8.3.tgz#2f420fca58b68ce3a332d0ca64be1d191dd3f87a" + integrity sha512-X/v7VDnK+sxbQ2Imq4Jt2PRUsRsP7UcpSl3Llg6+NRRqWLIvxkMFYtH1FmvwNGYRKKPa+EPA4qDBlI9WVG1UKw== + dependencies: + "@babel/runtime" "^7.8.7" + +yargs-parser@^11.1.1: + version "11.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" + integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^18.1.1: + version "18.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.2.tgz#2f482bea2136dbde0861683abea7756d30b504f1" + integrity sha512-hlIPNR3IzC1YuL1c2UwwDKpXlNFBqD1Fswwh1khz5+d8Cq/8yc/Mn0i+rQXduu8hcrFKvO7Eryk+09NecTQAAQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@^12.0.5: + version "12.0.5" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" + integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== + dependencies: + cliui "^4.0.0" + decamelize "^1.2.0" + find-up "^3.0.0" + get-caller-file "^1.0.1" + os-locale "^3.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1 || ^4.0.0" + yargs-parser "^11.1.1" + +yargs@^15.3.1: + version "15.3.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" + integrity sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.1" + +yargs@^3.19.0: + version "3.32.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" + integrity sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU= + dependencies: + camelcase "^2.0.1" + cliui "^3.0.3" + decamelize "^1.1.1" + os-locale "^1.4.0" + string-width "^1.0.1" + window-size "^0.1.4" + y18n "^3.2.0" From 8f77a89fceb3d08c289bb745dfd7338a83b13464 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Markle=CC=81n?= Date: Sat, 2 May 2020 10:39:37 +0200 Subject: [PATCH 2/3] resolve conflicts --- openapi/openapi.yaml | 109 ++++++++++++++++++++----------------------- openapi/package.json | 4 +- 2 files changed, 53 insertions(+), 60 deletions(-) diff --git a/openapi/openapi.yaml b/openapi/openapi.yaml index dc8a923e..a72bd816 100644 --- a/openapi/openapi.yaml +++ b/openapi/openapi.yaml @@ -2,7 +2,7 @@ openapi: 3.0.3 info: title: AdGuard Home description: AdGuard Home REST API. Admin web interface is built on top of this REST API. - version: "0.101" + version: "0.102" contact: name: "AdGuard Home" url: "https://github.com/AdguardTeam/AdGuardHome" @@ -77,22 +77,6 @@ paths: responses: "200": description: OK - /set_upstreams_config: - post: - tags: - - global - operationId: setUpstreamsConfig - summary: Updates the current upstreams configuration - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/UpstreamsConfig" - description: Upstreams configuration JSON - required: true - responses: - "200": - description: OK /test_upstream_dns: post: tags: @@ -531,7 +515,7 @@ paths: parameters: - name: name in: query - description: Host name + description: Filter by host name schema: type: string responses: @@ -725,8 +709,8 @@ paths: summary: Get information about selected clients by their IP address parameters: - name: ip0 - description: IP in: query + description: Filter by IP address schema: type: string responses: @@ -975,16 +959,6 @@ components: type: boolean running: type: boolean - bootstrap_dns: - type: string - example: 8.8.8.8:53 - upstream_dns: - type: array - items: - type: string - example: - - tls://1.1.1.1 - - tls://1.0.0.1 version: type: string example: "0.1" @@ -994,33 +968,6 @@ components: DNSConfig: type: object description: Query log configuration - properties: - protection_enabled: - type: boolean - ratelimit: - type: integer - blocking_mode: - type: string - enum: - - default - - nxdomain - - null_ip - - custom_ip - blocking_ipv4: - type: string - blocking_ipv6: - type: string - edns_cs_enabled: - type: boolean - dnssec_enabled: - type: boolean - UpstreamsConfig: - type: object - description: Upstreams configuration - required: - - bootstrap_dns - - upstream_dns - - all_servers properties: bootstrap_dns: type: array @@ -1040,10 +987,56 @@ components: example: - tls://1.1.1.1 - tls://1.0.0.1 - all_servers: + protection_enabled: + type: boolean + ratelimit: + type: integer + blocking_mode: + type: string + enum: + - default + - nxdomain + - null_ip + - custom_ip + blocking_ipv4: + type: string + blocking_ipv6: + type: string + edns_cs_enabled: + type: boolean + dnssec_enabled: + type: boolean + fastest_addr: + type: boolean + parallel_requests: type: boolean description: If true, parallel queries to all configured upstream servers are enabled + UpstreamsConfig: + type: object + description: Upstreams configuration + required: + - bootstrap_dns + - upstream_dns + properties: + bootstrap_dns: + type: array + description: Bootstrap servers, port is optional after colon. Empty value will + reset it to default values + items: + type: string + example: + - 8.8.8.8:53 + - 1.1.1.1:53 + upstream_dns: + type: array + description: Upstream servers, port is optional after colon. Empty value will + reset it to default values + items: + type: string + example: + - tls://1.1.1.1 + - tls://1.0.0.1 Filter: type: object description: Filter subscription info @@ -1824,4 +1817,4 @@ components: description: User name password: type: string - description: Password \ No newline at end of file + description: Password diff --git a/openapi/package.json b/openapi/package.json index d5644748..34faf487 100644 --- a/openapi/package.json +++ b/openapi/package.json @@ -9,7 +9,7 @@ }, "dependencies": { "express": "^4.16.4", - "swagger-ui-dist": "^3.20.1", - "speccy": "^0.11.0" + "speccy": "^0.11.0", + "swagger-ui-dist": "^3.25.1" } } From 694e6493559b796c4e8ac103d639599e9f596ea4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Markle=CC=81n?= Date: Sat, 2 May 2020 10:57:59 +0200 Subject: [PATCH 3/3] Update index.html --- openapi/index.html | 64 ++++++++++------------------------------------ 1 file changed, 14 insertions(+), 50 deletions(-) diff --git a/openapi/index.html b/openapi/index.html index e02e40e5..07403a01 100644 --- a/openapi/index.html +++ b/openapi/index.html @@ -1,60 +1,24 @@ - - + - AdGuard Home API - - - + + + + + + - -
- - - - + + \ No newline at end of file