From 35526bef9b6c3fe7cfc5f944463c81195fd7f6c2 Mon Sep 17 00:00:00 2001 From: rhymes Date: Mon, 12 Aug 2019 17:36:04 +0200 Subject: [PATCH] API: OpenAPI 3 spec and auto generated docs (#3650) --- .gitignore | 2 + app/controllers/api/v0/articles_controller.rb | 7 +- app/labor/cache_buster.rb | 1 - app/views/api/v0/articles/index.json.jbuilder | 37 +- app/views/api/v0/articles/show.json.jbuilder | 2 - app/views/pages/api.html.erb | 331 ------- config/routes.rb | 2 +- docs/.gitdocs.json | 5 + docs/Makefile | 12 +- docs/api_template.hbs | 33 + docs/api_v0.yml | 808 ++++++++++++++++++ docs/contributing_api.md | 29 + docs/readme.md | 1 + netlify.toml | 6 + package.json | 4 +- spec/requests/api/v0/articles_spec.rb | 12 +- spec/requests/pages_spec.rb | 4 +- yarn.lock | 730 +++++++++++++++- 18 files changed, 1638 insertions(+), 388 deletions(-) delete mode 100644 app/views/pages/api.html.erb create mode 100644 docs/api_template.hbs create mode 100644 docs/api_v0.yml create mode 100644 docs/contributing_api.md diff --git a/.gitignore b/.gitignore index 1ff4e03e2..9af4b102a 100644 --- a/.gitignore +++ b/.gitignore @@ -58,3 +58,5 @@ _docker-storage/ # YARD generated doc (in the Gitdocs folder) docs/.static/ruby-doc/ +# ReDoc generated API doc (in the Gitdocs folder) +docs/.static/api/ diff --git a/app/controllers/api/v0/articles_controller.rb b/app/controllers/api/v0/articles_controller.rb index 6f80afe6a..54f3af340 100644 --- a/app/controllers/api/v0/articles_controller.rb +++ b/app/controllers/api/v0/articles_controller.rb @@ -31,12 +31,7 @@ module Api end def show - relation = Article.published.includes(:user) - @article = if params[:id] == "by_path" - relation.find_by!(path: params[:url]).decorate - else - relation.find(params[:id]).decorate - end + @article = Article.published.includes(:user).find(params[:id]).decorate end def onboarding diff --git a/app/labor/cache_buster.rb b/app/labor/cache_buster.rb index b17749f2e..c41812158 100644 --- a/app/labor/cache_buster.rb +++ b/app/labor/cache_buster.rb @@ -53,7 +53,6 @@ class CacheBuster bust_home_pages(article) bust_tag_pages(article) bust("/api/articles/#{article.id}") - bust("/api/articles/by_path?url=#{article.path}") return unless article.collection_id article.collection&.articles&.find_each do |a| diff --git a/app/views/api/v0/articles/index.json.jbuilder b/app/views/api/v0/articles/index.json.jbuilder index d5e97cd58..fbc3293f2 100644 --- a/app/views/api/v0/articles/index.json.jbuilder +++ b/app/views/api/v0/articles/index.json.jbuilder @@ -14,31 +14,36 @@ json.array! @articles do |article| json.positive_reactions_count article.positive_reactions_count json.published_timestamp article.published_timestamp + user = article.user + user_profile_image = ProfileImage.new(article.user) json.user do - json.name article.user.name - json.username article.user.username - json.twitter_username article.user.twitter_username - json.github_username article.user.github_username - json.website_url article.user.processed_website_url - json.profile_image ProfileImage.new(article.user).get(640) - json.profile_image_90 ProfileImage.new(article.user).get(90) + json.name user.name + json.username user.username + json.twitter_username user.twitter_username + json.github_username user.github_username + json.website_url user.processed_website_url + json.profile_image user_profile_image.get(640) + json.profile_image_90 user_profile_image.get(90) end if article.organization + organization = article.organization + organization_profile_image = ProfileImage.new(article.organization) json.organization do - json.name article.organization.name - json.username article.organization.username - json.slug article.organization.slug - json.profile_image ProfileImage.new(article.organization).get(640) - json.profile_image_90 ProfileImage.new(article.organization).get(90) + json.name organization.name + json.username organization.username + json.slug organization.slug + json.profile_image organization_profile_image.get(640) + json.profile_image_90 organization_profile_image.get(90) end end - if FlareTag.new(article).tag + flare_tag = FlareTag.new(article).tag + if flare_tag json.flare_tag do - json.name FlareTag.new(article).tag.name - json.bg_color_hex FlareTag.new(article).tag.bg_color_hex - json.text_color_hex FlareTag.new(article).tag.text_color_hex + json.name flare_tag.name + json.bg_color_hex flare_tag.bg_color_hex + json.text_color_hex flare_tag.text_color_hex end end end diff --git a/app/views/api/v0/articles/show.json.jbuilder b/app/views/api/v0/articles/show.json.jbuilder index fdead1c67..68483e81f 100644 --- a/app/views/api/v0/articles/show.json.jbuilder +++ b/app/views/api/v0/articles/show.json.jbuilder @@ -22,8 +22,6 @@ json.last_comment_at @article.last_comment_at&.utc&.iso8601 json.body_html @article.processed_html json.body_markdown @article.body_markdown -json.ltag_style(@article.liquid_tags_used.map { |ltag| Rails.application.assets["ltags/#{ltag}.css"].to_s.html_safe }) -json.ltag_script(@article.liquid_tags_used.map { |ltag| ltag.script.html_safe }) json.user do json.name @article.user.name diff --git a/app/views/pages/api.html.erb b/app/views/pages/api.html.erb deleted file mode 100644 index 2e38c4316..000000000 --- a/app/views/pages/api.html.erb +++ /dev/null @@ -1,331 +0,0 @@ -<% title "DEV API" %> - -<%= content_for :page_meta do %> - - API info and guides"> - - - - - API" /> - - - "> - API"> - - - - - -<% end %> - -
- -
-
-

- DEV Articles API (beta) -

- -

- As of May 16th 2019 DEV has released a beta version of a REST API to create or update articles. - Check back to this page for all updates related to the API. -

-
- -
-
-

- - - About the Articles API -

-

- "Articles" are all the posts that users create on DEV that typically show up in the feed. - They can be a blog post, a discussion question, a help thread etc. but is referred to as - article within the code. - They are different from listings, comments, podcasts, etc. -

- -

- - - Getting an access token -

- -

Authentication for the Articles API requires the DEV API access token. To obtain one, please follow these steps:

- -
    -
  • Connect to https://dev.to/settings/account -
  • -
  • -

    In the DEV API Access Tokens section create a new token by adding a description and clicking on "Generate Token":

    - -

    -

    - DEV Access tokens page -

    -
  • - -
  • You'll see the newly generated token in the same view:

  • -
- -

- DEV access tokens page with a generated token -

- -

- - - Creating an article through the API -

- -

Here is an example of how to create an article:

- -
-
curl -X POST -H "Content-Type: application/json" \
--H "api-key: ACCESS_TOKEN" \
--d '{"article": {"title": "Title", "body_markdown": "Body", "published": false, "tags": ["discuss", "javascript"]}}' \
-https://dev.to/api/articles
- -

If published is set to true then the article will be live instantly.

- -

- - - Successful response -

- -

In case of a successful response (HTTP 201), the full article resource will be returned to the client:

- -
{
-  "type_of": "article",
-  "id": 110878,
-  "title": "Title",
-  "description": "Body\n\n...",
-  "cover_image": null,
-  "readable_publish_date": null,
-  "social_image": "http://dev.to/social_previews/article/110878.png",
-  "tag_list": "discuss, javascript",
-  "tags": [
-    "discuss",
-    "javascript"
-  ],
-  "slug": "title-2bp3-temp-slug-5875367",
-  "path": "/rhymes/title-2bp3-temp-slug-5875367",
-  "url": "https://dev.to/rhymes/title-2bp3-temp-slug-5875367",
-  "canonical_url": "https://dev.to/rhymes/title-2bp3-temp-slug-5875367",
-  "comments_count": 0,
-  "positive_reactions_count": 0,
-  "created_at": "2019-05-21T13:34:26Z",
-  "edited_at": null,
-  "crossposted_at": null,
-  "published_at": null,
-  "last_comment_at": "2017-01-01T05:00:00Z",
-  "body_html": "<p>Body</p>\n\n",
-  "ltag_style": [],
-  "ltag_script": [],
-  "user": {
-    "name": "rhymes",
-    "username": "rhymes",
-    "twitter_username": "rhymes_",
-    "github_username": "rhymes",
-    "website_url": null,
-    "profile_image": "https://res.cloudinary.com/practicaldev/image/fetch/s--qhCNe-v6--/c_fill,f_auto,fl_progressive,h_640,q_auto,w_640/https://thepracticaldev.s3.amazonaws.com/uploads/user/profile_image/2693/146201.jpeg",
-    "profile_image_90": "https://res.cloudinary.com/practicaldev/image/fetch/s--IQPhTQnb--/c_fill,f_auto,fl_progressive,h_90,q_auto,w_90/https://thepracticaldev.s3.amazonaws.com/uploads/user/profile_image/2693/146201.jpeg"
-  }
-}
-

- - - Create an article on behalf an organisation -

- -

Just add organization_id: your_org_id to the JSON request:

-
curl -X POST -H "Content-Type: application/json" \
--H "api-key: ACCESS_TOKEN" \
--d '{"article": {"title": "Title", "body_markdown": "Body", "published": false, "organization_id": 99999}}' \
-https://dev.to/api/articles
-

- - - Using the front matter -

- -

You can omit most JSON parameters by using the markdown front matter. So for example, if you have markdown article similar to the following:

-
---
-title: "A sample article about JavaScript"
-published: false
-description: "this is a sample article about javascript"
-tags: discuss, javascript
-series: intro-to-javascript
-canonical_url: canonical URL of the article
----
-
-This is an intro about JavaScript
- -

you can send it within the body_markdown parameter:

- -
curl -X POST -H "Content-Type: application/json" \
--H "api-key: ACCESS_TOKEN" \
--d '{"article": {"body_markdown": "---\ntitle: A sample article about...\npublished: false\n---\n..."}}' \
-https://dev.to/api/articles
- -

The front matter will take precedence on other JSON params with the same name.

- -

- - - Available JSON parameters -

- -
title: The title of an article (string, optional)
-description: Description of the article (string, optional)
-body_markdown: The Markdown body, with or without a front matter (string, required)
-published: True if the article should be published right away, defaults to false (boolean, optional)
-tags: A list of tags for the article (array, optional)
-series: The name of the series the article should be published within (string, optional)
-organization_id: Your organization's ID, if you wish to create an article under an organization (string, optional)
-main_image: URL of the image to use as the cover (string, optional)
-canonical_url: canonical URL of the article (string, optional)
-

- - - Error responses -

- -

Unauthorized

-
{
-  "error": "unauthorized",
-  "status": 401
-}
- -

Parameter validation error

- -
{
-  "error": "Validation failed: Title can't be blank",
-  "status": 422
-}
- -

- - - Updating an article through the API -

- -

Here is an example of how to update an article:

-
curl -X PUT -H "Content-Type: application/json" \
--H "api-key: ACCESS_TOKEN" \
--d '{"article": {"title": "New Title"}}' \
-https://dev.to/api/articles/ARTICLE_ID
- -

- - - Successful response -

- -

In case of a successful response (HTTP 200), the full article resource will be returned to the client:

-
{
-  "type_of": "article",
-  "id": 110878,
-  "title": "New Title",
-  "description": "Body\n\n...",
-  "cover_image": null,
-  "readable_publish_date": null,
-  "social_image": "http://dev.to/social_previews/article/110878.png",
-  "tag_list": "discuss, javascript",
-  "tags": [
-    "discuss",
-    "javascript"
-  ],
-  "slug": "title-2bp3-temp-slug-5875367",
-  "path": "/rhymes/title-2bp3-temp-slug-5875367",
-  "url": "https://dev.to/rhymes/title-2bp3-temp-slug-5875367",
-  "canonical_url": "https://dev.to/rhymes/title-2bp3-temp-slug-5875367",
-  "comments_count": 0,
-  "positive_reactions_count": 0,
-  "created_at": "2019-05-21T13:34:26Z",
-  "edited_at": null,
-  "crossposted_at": null,
-  "published_at": null,
-  "last_comment_at": "2017-01-01T05:00:00Z",
-  "body_html": "<p>Body</p>\n\n",
-  "ltag_style": [],
-  "ltag_script": [],
-  "user": {
-    "name": "rhymes",
-    "username": "rhymes",
-    "twitter_username": "rhymes_",
-    "github_username": "rhymes",
-    "website_url": null,
-    "profile_image": "https://res.cloudinary.com/practicaldev/image/fetch/s--qhCNe-v6--/c_fill,f_auto,fl_progressive,h_640,q_auto,w_640/https://thepracticaldev.s3.amazonaws.com/uploads/user/profile_image/2693/146201.jpeg",
-    "profile_image_90": "https://res.cloudinary.com/practicaldev/image/fetch/s--IQPhTQnb--/c_fill,f_auto,fl_progressive,h_90,q_auto,w_90/https://thepracticaldev.s3.amazonaws.com/uploads/user/profile_image/2693/146201.jpeg"
-  }
-}
- -

- - - Notes about the front matter during an update -

- -

Keep in mind that if the original article was created with the front matter in the markdown then that front matter will still take precedence over the partial updates. So if you need to change parameters present in the front matter, you should send the whole edited body (with the front matter parameter changed) in the body_markdown parameter.

-

- - - Available JSON parameters -

-
title: The title of an article (optional)
-description: Description of the article (optional)
-body_markdown: The Markdown body, with or without a front matter (required)
-published: True if the article should be published right away, defaults to false (optional)
-series: The name of the series the article should be published within (optional)
-organization_id: Your organization's ID, if you wish to create an article under an organization (string, optional)
-main_image: URL of the image to use as the cover (optional)
-canonical_url: canonical URL of the article (optional)
-

- - - Error responses -

- -

Unauthorized

-
{
-  "error": "unauthorized",
-  "status": 401
-}
- -

Parameter validation error

- -
{
-  "error": "Validation failed: Title can't be blank",
-  "status": 422
-}
-

- - - Rate limiting -

- -

There is a limit of 10 articles created each 30 seconds by the same user.

- -

There are no limits on the updates.

- -

- - - Additional resources -

- - - -
-
-
diff --git a/config/routes.rb b/config/routes.rb index eae9f644b..b899671b7 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -246,7 +246,7 @@ Rails.application.routes.draw do # You can have the root of your site routed with "root get "/about" => "pages#about" - get "/api", to: "pages#api" + get "/api", to: redirect("https://docs.dev.to/api") get "/privacy" => "pages#privacy" get "/terms" => "pages#terms" get "/contact" => "pages#contact" diff --git a/docs/.gitdocs.json b/docs/.gitdocs.json index 1d8bda248..82c122259 100644 --- a/docs/.gitdocs.json +++ b/docs/.gitdocs.json @@ -17,6 +17,11 @@ "title": "Ruby doc", "href": "http://docs.dev.to/ruby-doc", "target": "_blank" + }, + { + "title": "API doc", + "href": "http://docs.dev.to/api", + "target": "_blank" } ] } diff --git a/docs/Makefile b/docs/Makefile index 165fec684..48a325998 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -1,9 +1,17 @@ .PHONY: build -build: ruby-doc gitdocs +build: api-doc ruby-doc gitdocs + +api-doc: + # docs/.static/api will let gitdocs serve the API doc as static content + cd .. && \ + npm install -g redoc-cli@latest && \ + redoc-cli bundle docs/api_v0.yml --options.suppressWarnings --options.pathInMiddlePanel --options.jsonSampleExpandLevel=all --options.menuToggle -t docs/api_template.hbs && \ + mkdir -p docs/.static/api/ && \ + mv redoc-static.html docs/.static/api/index.html ruby-doc: - # docs/.static/ruby-doc will let gitdocs serve the Ruby doc as static content + # docs/.static/ruby-doc will let gitdocs serve the Ruby doc as static content cd .. && yard doc -o docs/.static/ruby-doc gitdocs: diff --git a/docs/api_template.hbs b/docs/api_template.hbs new file mode 100644 index 000000000..84ec1b8a7 --- /dev/null +++ b/docs/api_template.hbs @@ -0,0 +1,33 @@ +{{! This template is used by ReDoc to render the final API doc }} +{{! It is written in HandlerbarsJS syntax }} +{{! Please refer to https://github.com/Redocly/redoc/blob/master/cli/README.md }} +{{! and https://github.com/Redocly/redoc/blob/master/cli/template.hbs }} + + + + + + DEV API (beta) + + + + + + + + + + {{{redocHead}}} + + + + + {{{redocHTML}}} + + + diff --git a/docs/api_v0.yml b/docs/api_v0.yml new file mode 100644 index 000000000..0d0181fa6 --- /dev/null +++ b/docs/api_v0.yml @@ -0,0 +1,808 @@ +openapi: '3.0.2' +info: + title: DEV API + description: Access DEV articles, comments and other resources via API + version: '0.5.0' + termsOfService: https://dev.to/terms + contact: + name: DEV Team + url: https://dev.to/contact + email: yo@dev.to + x-logo: # https://github.com/Redocly/redoc/blob/master/docs/redoc-vendor-extensions.md#x-logo + url: https://practicaldev-herokuapp-com.freetls.fastly.net/assets/devlogo-pwa-128-1a9016906487b8ba17f2d3d3c28f9d1cb3ae9b45d685cc2711e20f6b3c6730df.png + backgroundColor: "#000" + altText: "DEV logo" + +servers: + - url: https://dev.to/api + description: Production server + +components: + securitySchemes: + api_key: + type: apiKey + description: | + API Key authentication. + + ### Getting an API key + + Authentication for the Articles API requires an API key (DEV API access token). + To obtain one, please follow these steps: + + - visit https://dev.to/settings/account + - in the "DEV API Access Tokens" section create a new token by adding a + description and clicking on "Generate Token" + + ![obtain a DEV API access token](https://res.cloudinary.com/practicaldev/image/fetch/s--F4Ya4WgC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/4zm0cbutj9o9eau0jm9t.png) + - You'll see the newly generated token in the same view + ![generated DEV API access token](https://res.cloudinary.com/practicaldev/image/fetch/s--kp5L6-9G--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ra01mo6fp1es261db2ho.png) + name: api-key + in: header + + schemas: + APIError: + type: object + required: + - error + - status + properties: + error: + type: string + status: + type: integer + format: int32 + ArticleIndex: + type: object + required: + - type_of + - id + - title + - description + - cover_image + - published_at + - tag_list + - slug + - path + - url + - canonical_url + - positive_reactions_count + - published_timestamp + - user + properties: + type_of: + type: string + id: + type: integer + format: int32 + title: + type: string + description: + type: string + cover_image: + type: string + format: url + published_at: + type: string + format: date-time + tag_list: + type: array + items: + type: string + slug: + type: string + path: + type: string + format: path + url: + type: string + format: url + canonical_url: + type: string + format: url + positive_reactions_count: + type: integer + format: int32 + published_timestamp: + description: Crossposting or published date time + type: string + format: date-time + user: + type: object + $ref: '#/components/schemas/User' + organization: + description: Organization the article belongs to + type: object + properties: + name: + type: string + username: + type: string + slug: + type: string + profile_image: + description: Profile image (640x640) + type: string + format: url + profile_image_90: + description: Profile image (90x90) + type: string + format: url + flare_tag: + description: Flare tag of the article + type: object + properties: + name: + type: string + bg_color_hex: + description: Background color (hexadecimal) + type: string + text_color_hex: + description: Text color (hexadecimal) + type: string + ArticleShow: + type: object + required: + - type_of + - id + - title + - description + - cover_image + - readable_publish_date + - social_image + - tag_list + - tags + - slug + - path + - url + - canonical_url + - comments_count + - positive_reactions_count + - created_at + - edited_at + - crossposted_at + - published_at + - last_comment_at + - body_html + - body_markdown + - user + properties: + type_of: + type: string + id: + type: integer + format: int32 + title: + type: string + description: + type: string + cover_image: + type: string + format: url + readable_publish_date: + type: string + social_image: + type: string + format: url + tag_list: + type: string + tags: + type: array + items: + type: string + slug: + type: string + path: + type: string + format: path + url: + type: string + format: url + canonical_url: + type: string + format: url + comments_count: + type: integer + format: int32 + positive_reactions_count: + type: integer + format: int32 + created_at: + type: string + format: date-time + edited_at: + type: string + format: date-time + crossposted_at: + type: string + format: date-time + published_at: + type: string + format: date-time + last_comment_at: + type: string + format: date-time + body_html: + type: string + body_markdown: + type: string + user: + type: object + $ref: '#/components/schemas/User' + ArticleCreate: + type: object + properties: + article: + type: object + required: + - title + properties: + title: + type: string + body_markdown: + description: | + The body of the article. + + It can contain an optional front matter. For example + + ```markdown + --- + title: Hello, World! + published: true + tags: discuss, help + date: 20190701T10:00Z + series: Hello series + canonical_url: https://example.com/blog/hello + cover_image: article_published_cover_image + --- + ``` + + `date`, `series` and `canonical_url` are optional. + `date` is the publication date-time + `series` is the name of the series the article belongs to + `canonical_url` is the canonical URL of the article + `cover_image` is the main image of the article + + *If the markdown contains a front matter, it will take precedence + on the equivalent params given in the JSON payload.* + type: string + published: + description: | + True to create a published article, false otherwise. Defaults to false + type: boolean + series: + description: | + Article series name. + + All articles belonging to the same series need to have the same name + in this parameter. + type: string + main_image: + type: string + format: url + canonical_url: + type: string + format: url + description: + type: string + tags: + type: array + items: + type: string + organization_id: + description: | + Only users belonging to an organization can assign the article to it + type: integer + format: int32 + ArticleUpdate: + type: object + properties: + article: + type: object + properties: + title: + type: string + body_markdown: + description: | + The body of the article. + + It can contain an optional front matter. For example + + ```markdown + --- + title: Hello, World! + published: true + tags: discuss, help + date: 20190701T10:00Z + series: Hello series + canonical_url: https://example.com/blog/hello + cover_image: article_published_cover_image + --- + ``` + + `date`, `series` and `canonical_url` are optional. + `date` is the publication date-time + `series` is the name of the series the article belongs to + `canonical_url` is the canonical URL of the article + `cover_image` is the main image of the article + + *If the markdown contains a front matter, it will take precedence + on the equivalent params given in the JSON payload.* + type: string + published: + description: | + True to create a published article, false otherwise. Defaults to false + type: boolean + series: + description: | + Article series name. + + All articles belonging to the same series need to have the same name + in this parameter. + + To remove an article from a series, the `null` value can be used. + type: string + main_image: + type: string + format: url + canonical_url: + type: string + format: url + description: + type: string + tags: + type: array + items: + type: string + organization_id: + description: | + Only users belonging to an organization can assign the article to it + type: integer + format: int32 + + User: + type: object + properties: + name: + type: string + username: + type: string + twitter_username: + type: string + github_username: + type: string + website_url: + type: string + format: url + profile_image: + description: Profile image (640x640) + type: string + profile_image_90: + description: Profile image (90x90) + type: string + + examples: + ErrorNotFound: + value: + error: not found + status: 404 + ErrorUnauthorized: + value: + error: unauthorized + status: 401 + ArticleShow: + value: + type_of: article + id: 150589 + title: 'Byte Sized Episode 2: The Creation of Graph Theory ' + description: The full story of Leonhard Euler and the creation of this fundamental + computer science principle, delivered in a few minutes. + cover_image: https://res.cloudinary.com/practicaldev/image/fetch/s--qgutBUrH--/c_imagga_scale,f_auto,fl_progressive,h_420,q_auto,w_1000/https://thepracticaldev.s3.amazonaws.com/i/88e62fzblbluz1dm7xjf.png + readable_publish_date: Aug 1 + social_image: https://res.cloudinary.com/practicaldev/image/fetch/s--6wSHHfwd--/c_imagga_scale,f_auto,fl_progressive,h_500,q_auto,w_1000/https://thepracticaldev.s3.amazonaws.com/i/88e62fzblbluz1dm7xjf.png + tag_list: computerscience, graphtheory, bytesized, history + tags: + - computerscience + - graphtheory + - bytesized + - history + slug: byte-sized-episode-2-the-creation-of-graph-theory-34g1 + path: "/bytesized/byte-sized-episode-2-the-creation-of-graph-theory-34g1" + url: https://dev.to/bytesized/byte-sized-episode-2-the-creation-of-graph-theory-34g1 + canonical_url: https://dev.to/bytesized/byte-sized-episode-2-the-creation-of-graph-theory-34g1 + comments_count: 19 + positive_reactions_count: 276 + created_at: '2019-07-31T11:15:06Z' + edited_at: + crossposted_at: + published_at: '2019-08-01T15:47:54Z' + last_comment_at: '2019-08-06T09:12:45Z' + body_html: |+ +

Today's episode of Byte Sized is about Leonhard Euler and the creation of Graph Theory.

+ +

For more about how Graph Theory works, check out this video from BaseCS!

... + body_markdown: "---\r\ntitle: Byte Sized Episode 2: The Creation of Graph Theory \r\npublished: + true\r\ndescription: The full story of Leonhard Euler and the creation of this fundamental + computer science principle, delivered in a few minutes.\r\ntags: computerscience, + graphtheory, bytesized, history\r\ncover_image: https://thepracticaldev.s3.amazonaws.com/i/88e62fzblbluz1dm7xjf.png\r\nseries: + Byte Sized Season 1\r\n---\r\n\r\nToday's episode of Byte Sized is about Leonhard + Euler and the creation of [Graph Theory](https://en.wikipedia.org/wiki/Graph_theory).\r\n\r\nFor + more about how Graph Theory works, check out this video from BaseCS!..." + user: + name: Vaidehi Joshi + username: vaidehijoshi + twitter_username: vaidehijoshi + github_username: vaidehijoshi + website_url: http://www.vaidehi.com + profile_image: https://res.cloudinary.com/practicaldev/image/fetch/s--eDGAYAoK--/c_fill,f_auto,fl_progressive,h_640,q_auto,w_640/https://thepracticaldev.s3.amazonaws.com/uploads/user/profile_image/2882/K2evUksb.jpg + profile_image_90: https://res.cloudinary.com/practicaldev/image/fetch/s--htZnqMn3--/c_fill,f_auto,fl_progressive,h_90,q_auto,w_90/https://thepracticaldev.s3.amazonaws.com/uploads/user/profile_image/2882/K2evUksb.jpg + ArticleCreateTitleBody: + value: + article: + title: Hello, World! + published: true + body_markdown: Hello DEV, this is my first post + tags: discuss, help + series: Hello series + canonical_url: https://example.com/blog/hello + ArticleCreateFrontMatter: + value: + article: + body_markdown: | + --- + title: Hello, World! + published: true + tags: discuss, help + date: 20190701T10:00Z + series: Hello series + canonical_url: https://example.com/blog/hello + --- + + Hello DEV, this is my first post + ArticleCreateOrganization: + value: + article: + title: Hello, World! + published: true + body_markdown: Hello DEV, this is my first post + tags: discuss, help + series: Hello series + canonical_url: https://example.com/blog/hello + organization_id: 1234 + + +paths: + /articles: + get: + summary: Published articles + description: | + This endpoint allows the client to retrieve a list of articles. + + "Articles" are all the posts that users create on DEV that typically + show up in the feed. They can be a blog post, a discussion question, + a help thread etc. but is referred to as article within the code. + + By default it will return featured, published articles ordered + by descending popularity. + + Each page will contain `30` articles. + + Responses, according to the combination of params, are cached for 24 hours. + tags: + - articles + parameters: + - name: page + in: query + description: | + Pagination page. + + This param can be used in conjuction with all other params + (except when asking for fresh and rising articles by themselves). + schema: + type: integer + format: int32 + example: 1 + - name: tag + in: query + description: | + Adding this parameter will return articles that contain the + requested tag. + + This param can be used by itself, with `page` or with `top`. + schema: + type: string + example: discuss + - name: username + in: query + description: | + Adding this parameter will return articles belonging to a User or Organization + ordered by descending `published_at`. + + If `state=all` the number of items returned will be `1000` instead of the default `30`. + + This param can be used by itself or only with `page` and `state`. + schema: + type: string + example: ben + - name: state + in: query + description: | + Adding this will allow the client to check which articles are fresh or rising. + + If `state=fresh` the server will return published fresh articles. + If `state=rising` the server will return published rising articles. + + This param can only be used by itself or with `username` if set to `all`. + schema: + type: string + example: ben + - name: top + in: query + description: | + Adding this will allow the client to return the most popular articles + in the last `N` days. + + `top` indicates the number of days since publication of the articles + returned. + + This param can only be used by itself or with `tag`. + schema: + type: integer + format: int32 + example: 2 + responses: + 200: + description: A list of articles + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ArticleIndex' + examples: + articles-success: + summary: Successful response + value: + type_of: article + id: 150589 + title: 'Byte Sized Episode 2: The Creation of Graph Theory' + description: The full story of Leonhard Euler and the creation of this fundamental + computer science principle, delivered in a few minutes. + cover_image: https://res.cloudinary.com/practicaldev/image/fetch/s--qgutBUrH--/c_imagga_scale,f_auto,fl_progressive,h_420,q_auto,w_1000/https://thepracticaldev.s3.amazonaws.com/i/88e62fzblbluz1dm7xjf.png + published_at: '2019-08-01T15:47:54.000Z' + tag_list: + - computerscience + - graphtheory + - bytesized + - history + slug: byte-sized-episode-2-the-creation-of-graph-theory-34g1 + path: "/bytesized/byte-sized-episode-2-the-creation-of-graph-theory-34g1" + url: https://dev.to/bytesized/byte-sized-episode-2-the-creation-of-graph-theory-34g1 + canonical_url: https://dev.to/bytesized/byte-sized-episode-2-the-creation-of-graph-theory-34g1 + comments_count: 15 + positive_reactions_count: 210 + published_timestamp: '2019-08-01T15:47:54Z' + user: + name: Vaidehi Joshi + username: vaidehijoshi + twitter_username: vaidehijoshi + github_username: vaidehijoshi + website_url: http://www.vaidehi.com + profile_image: https://res.cloudinary.com/practicaldev/image/fetch/s--eDGAYAoK--/c_fill,f_auto,fl_progressive,h_640,q_auto,w_640/https://thepracticaldev.s3.amazonaws.com/uploads/user/profile_image/2882/K2evUksb.jpg + profile_image_90: https://res.cloudinary.com/practicaldev/image/fetch/s--htZnqMn3--/c_fill,f_auto,fl_progressive,h_90,q_auto,w_90/https://thepracticaldev.s3.amazonaws.com/uploads/user/profile_image/2882/K2evUksb.jpg + organization: + name: Byte Sized + username: bytesized + slug: bytesized + profile_image: https://res.cloudinary.com/practicaldev/image/fetch/s--sq0DrZfn--/c_fill,f_auto,fl_progressive,h_640,q_auto,w_640/https://thepracticaldev.s3.amazonaws.com/uploads/organization/profile_image/865/652f7998-32a8-4fd9-85ca-dd697d2a9ee9.png + profile_image_90: https://res.cloudinary.com/practicaldev/image/fetch/s--1Pt_ICL---/c_fill,f_auto,fl_progressive,h_90,q_auto,w_90/https://thepracticaldev.s3.amazonaws.com/uploads/organization/profile_image/865/652f7998-32a8-4fd9-85ca-dd697d2a9ee9.png + x-code-samples: # https://github.com/Redocly/redoc/blob/master/docs/redoc-vendor-extensions.md#x-code-samples + - lang: Shell + label: curl (all articles) + source: | + curl https://dev.to/api/articles + - lang: Shell + label: curl (user's articles) + source: | + curl https://dev.to/api/articles?username=ben + post: + summary: Create a new article + description: | + This endpoint allows the client to create a new article. + + "Articles" are all the posts that users create on DEV that typically + show up in the feed. They can be a blog post, a discussion question, + a help thread etc. but is referred to as article within the code. + + ### Rate limiting + + There is a limit of 10 articles created each 30 seconds by the same user. + + ### Additional resources + + - [Rails tests for Articles API](https://github.com/thepracticaldev/dev.to/blob/master/spec/requests/api/v0/articles_spec.rb) + tags: + - articles + requestBody: + description: Article to create + content: + application/json: + schema: + $ref: '#/components/schemas/ArticleCreate' + examples: + article-create-title-body: + $ref: '#/components/examples/ArticleCreateTitleBody' + article-create-front-matter: + $ref: '#/components/examples/ArticleCreateFrontMatter' + article-create-organization: + $ref: '#/components/examples/ArticleCreateOrganization' + + responses: + 201: + description: A newly created article + content: + application/json: + schema: + type: object + $ref: '#/components/schemas/ArticleShow' + examples: + article-success: + $ref: '#/components/examples/ArticleShow' + headers: + Location: + description: The URL of the new article + schema: + type: string + format: url + 401: + description: Unauthorized + content: + application/json: + schema: + type: object + $ref: '#/components/schemas/APIError' + examples: + article-unauthorized: + $ref: '#/components/examples/ErrorUnauthorized' + security: + - api_key: [] + x-code-samples: # https://github.com/Redocly/redoc/blob/master/docs/redoc-vendor-extensions.md#x-code-samples + - lang: Shell + label: curl + source: | + curl -X POST -H "Content-Type: application/json" \ + -H "api-key: ACCESS_TOKEN" \ + -d '{"article":{"title":"Title","body_markdown":"Body","published":false,"tags":["discuss", "javascript"]}}' \ + https://dev.to/api/articles + - lang: Shell + label: curl (with front matter) + source: | + curl -X POST -H "Content-Type: application/json" \ + -H "api-key: ACCESS_TOKEN" \ + -d '{"article":{"body_markdown":"---\ntitle:A sample article about...\npublished:false\n---\n..."}}' \ + https://dev.to/api/articles + + /articles/{id}: + get: + summary: A published article + description: | + This endpoint allows the client to retrieve a single + published article given its `id`. + + Responses are cached for 5 minutes. + tags: + - articles + parameters: + - name: id + in: path + required: true + description: Id of the article + schema: + type: integer + format: int32 + example: 150589 + responses: + 200: + description: An article + content: + application/json: + schema: + type: object + $ref: '#/components/schemas/ArticleShow' + examples: + article-success: + $ref: '#/components/examples/ArticleShow' + 404: + description: Resource not found + content: + application/json: + schema: + type: object + $ref: '#/components/schemas/APIError' + examples: + article-not-found: + $ref: '#/components/examples/ErrorNotFound' + x-code-samples: # https://github.com/Redocly/redoc/blob/master/docs/redoc-vendor-extensions.md#x-code-samples + - lang: Shell + label: curl + source: | + curl https://dev.to/api/articles/150589 + put: + summary: Update an existing article + description: | + This endpoint allows the client to updated an existing article. + + "Articles" are all the posts that users create on DEV that typically + show up in the feed. They can be a blog post, a discussion question, + a help thread etc. but is referred to as article within the code. + + ### Rate limiting + + There are no limits on the amount of updates. + + ### Additional resources + + - [Rails tests for Articles API](https://github.com/thepracticaldev/dev.to/blob/master/spec/requests/api/v0/articles_spec.rb) + tags: + - articles + parameters: + - name: id + in: path + required: true + description: Id of the article + schema: + type: integer + format: int32 + example: 150589 + requestBody: + description: | + Article params to update. + + *Note: if the article contains a front matter in its body, its front + matter properties will still take precedence over any JSON equivalent + params, which means that the full body_markdown with the modified + front matter params needs to be provided for an update to be successful* + content: + application/json: + schema: + $ref: '#/components/schemas/ArticleUpdate' + examples: + article-update-title-body: + $ref: '#/components/examples/ArticleCreateTitleBody' + article-update-front-matter: + $ref: '#/components/examples/ArticleCreateFrontMatter' + article-update-organization: + $ref: '#/components/examples/ArticleCreateOrganization' + responses: + 200: + description: The updated article + content: + application/json: + schema: + type: object + $ref: '#/components/schemas/ArticleShow' + examples: + article-success: + $ref: '#/components/examples/ArticleShow' + 401: + description: Unauthorized + content: + application/json: + schema: + type: object + $ref: '#/components/schemas/APIError' + examples: + article-unauthorized: + $ref: '#/components/examples/ErrorUnauthorized' + security: + - api_key: [] + x-code-samples: # https://github.com/Redocly/redoc/blob/master/docs/redoc-vendor-extensions.md#x-code-samples + - lang: Shell + label: curl + source: | + curl -X PUT -H "Content-Type: application/json" \ + -H "api-key: ACCESS_TOKEN" \ + -d '{"article":{"title":"Title"}' \ + https://dev.to/api/articles/{id} + +security: + - api_key: [] diff --git a/docs/contributing_api.md b/docs/contributing_api.md new file mode 100644 index 000000000..840c1e789 --- /dev/null +++ b/docs/contributing_api.md @@ -0,0 +1,29 @@ +--- +title: Contributing to API spec docs +--- + +# Contributing to API spec docs + +The API docs follow the [OpenAPI 3 specification](http://spec.openapis.org/oas/v3.0.2). + +## Where The Docs Are Located + +We auto generate the documentation from `api_v0.yml` within the `/docs` directory. +We use [ReDoc](https://github.com/Redocly/redoc) to turn the OpenAPI 3 format into a readable and searchable HTML documentation. + +## Running and editing the Docs Locally + +If you want to browse the documentation locally you can use: + +```shell +yarn api-docs:serve +``` + +This will let you browse the auto generated version of the doc locally and it will reload the doc after every modification +of the spec file. + +If you have Visual Studio Code we suggest you install the following extensions that enable validation and navigation within +the spec file: + +- [OpenAPI (Swagger) editor](https://marketplace.visualstudio.com/items?itemName=42Crunch.vscode-openapi) +- [openapi-designer live preview](https://marketplace.visualstudio.com/items?itemName=philosowaffle.openapi-designer) diff --git a/docs/readme.md b/docs/readme.md index 92eb64f4a..08dcb8b46 100644 --- a/docs/readme.md +++ b/docs/readme.md @@ -8,6 +8,7 @@ items: - design - tests - contributing.md + - contributing_api.md - faqs.md - licensing.md - self-hosting.md diff --git a/netlify.toml b/netlify.toml index 37a2b04a5..ac5eaf774 100644 --- a/netlify.toml +++ b/netlify.toml @@ -18,6 +18,12 @@ [[redirects]] from = "http://docs.dev.to/ruby-doc/" to = "https://docs.dev.to/ruby-doc/index.html" +[[redirects]] + from = "http://docs.dev.to/api" + to = "https://docs.dev.to/api/index.html" +[[redirects]] + from = "http://docs.dev.to/api/" + to = "https://docs.dev.to/api/index.html" [[redirects]] from = "http://docs.dev.to/*" to = "https://docs.dev.to/:splat" diff --git a/package.json b/package.json index 79b0c1e82..eab1bbfa5 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,8 @@ "test": "jest app/javascript/ --coverage", "test:watch": "jest app/javascript/ --watch", "storybook": "start-storybook -p 6006 -c app/javascript/.storybook -s app/javascript/.storybook/assets", - "build-storybook": "build-storybook -c app/javascript/.storybook -s app/javascript/.storybook/assets" + "build-storybook": "build-storybook -c app/javascript/.storybook -s app/javascript/.storybook/assets", + "api-docs:serve": "yarn redoc-cli serve docs/api_v0.yml --options.pathInMiddlePanel --options.jsonSampleExpandLevel=all --options.menuToggle -t docs/api_template.hbs --watch" }, "husky": { "hooks": { @@ -82,6 +83,7 @@ "preact-render-spy": "1.3.0", "preact-render-to-json": "^3.6.6", "prettier": "^1.18.2", + "redoc-cli": "0.8.6", "webpack-dev-server": "^2.11.3" }, "dependencies": { diff --git a/spec/requests/api/v0/articles_spec.rb b/spec/requests/api/v0/articles_spec.rb index 5bc6f529d..4c6c17c2a 100644 --- a/spec/requests/api/v0/articles_spec.rb +++ b/spec/requests/api/v0/articles_spec.rb @@ -65,6 +65,16 @@ RSpec.describe "Api::V0::Articles", type: :request do get api_articles_path(tag: tag.name) expect(JSON.parse(response.body).size).to eq(0) end + + it "returns flare tag in the response" do + create(:article, featured: true, tags: "discuss") + + get api_articles_path + response_article = JSON.parse(response.body)[0] + expect(response_article["flare_tag"]).to be_present + expect(response_article["flare_tag"].keys).to eq(%w[name bg_color_hex text_color_hex]) + expect(response_article["flare_tag"]["name"]).to eq("discuss") + end end describe "GET /api/articles/:id" do @@ -453,7 +463,7 @@ RSpec.describe "Api::V0::Articles", type: :request do expect(response).to have_http_status(:ok) end - it "does not update title if only given a title" do + it "does not update title if only given a title because the article has a front matter" do put_article(title: Faker::Book.title + rand(100).to_s) expect(response).to have_http_status(:ok) expect(article.reload.title).to eq(article.title) diff --git a/spec/requests/pages_spec.rb b/spec/requests/pages_spec.rb index 72086fe89..6bbf6c1d6 100644 --- a/spec/requests/pages_spec.rb +++ b/spec/requests/pages_spec.rb @@ -26,9 +26,9 @@ RSpec.describe "Pages", type: :request do end describe "GET /api" do - it "has proper headline" do + it "redirects to the API docs" do get "/api" - expect(response.body).to include("DEV Articles API") + expect(response.body).to redirect_to("https://docs.dev.to/api") end end diff --git a/yarn.lock b/yarn.lock index d5fdff652..c6bd50114 100644 --- a/yarn.lock +++ b/yarn.lock @@ -20,6 +20,13 @@ source-map "^0.5.0" trim-right "^1.0.1" +"@babel/helper-annotate-as-pure@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" + integrity sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q== + dependencies: + "@babel/types" "^7.0.0" + "@babel/helper-function-name@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" @@ -147,7 +154,7 @@ resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.7.2.tgz#53211e564604beb9befa7a4400ebf8147473eeef" integrity sha512-RMtr1i6E8MXaBWwhXL3yeOU8JXRnz8GNxHvaUfVvwxokvayUY0zoBeWbKw1S9XkufmGEEdQd228pSZXFkAln8Q== -"@emotion/is-prop-valid@0.8.2": +"@emotion/is-prop-valid@0.8.2", "@emotion/is-prop-valid@^0.8.1": version "0.8.2" resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.2.tgz#b9692080da79041683021fcc32f96b40c54c59dc" integrity sha512-ZQIMAA2kLUWiUeMZNJDTeCwYRx1l8SQL0kHktze4COT22occKpDML1GDUXP5/sxhOMrZO8vZw773ni4H5Snrsg== @@ -198,7 +205,7 @@ resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.4.tgz#6c51afdf1dd0d73666ba09d2eb6c25c220d6fe4c" integrity sha512-TLmkCVm8f8gH0oLv+HWKiu7e8xmBIaokhxcEKPh1m8pXiV/akCiq50FvYgOwY42rjejck8nsdQxZlXZ7pmyBUQ== -"@emotion/unitless@0.7.4": +"@emotion/unitless@0.7.4", "@emotion/unitless@^0.7.0": version "0.7.4" resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.4.tgz#a87b4b04e5ae14a88d48ebef15015f6b7d1f5677" integrity sha512-kBa+cDHOR9jpRJ+kcGMsysrls0leukrm68DmFQoMIWQcXdr2cZvyvypWuGYT7U+9kAExUE7+T7r6G3C3A6L8MQ== @@ -787,7 +794,7 @@ ajv-keywords@^3.1.0: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== -ajv@^5.0.0: +ajv@^5.0.0, ajv@^5.5.2: version "5.5.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU= @@ -876,6 +883,14 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" +anymatch@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.0.3.tgz#2fb624fe0e84bccab00afee3d0006ed310f22f09" + integrity sha512-c6IvoeBECQlMVuYUjSwimnhmztImpErfxJzWZhIQinIvQWoGOnB0dLIgifbPHQt5heS6mNlaZG16f06H3C8t1g== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + append-transform@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" @@ -1560,6 +1575,16 @@ babel-plugin-react-docgen@^1.9.0: lodash "^4.17.0" react-docgen "^3.0.0-beta11" +"babel-plugin-styled-components@>= 1": + version "1.10.6" + resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-1.10.6.tgz#f8782953751115faf09a9f92431436912c34006b" + integrity sha512-gyQj/Zf1kQti66100PhrCRjI5ldjaze9O0M3emXRPAN80Zsf8+e1thpTpaXJXVHXtaM4/+dJEgZHyS9Its+8SA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-module-imports" "^7.0.0" + babel-plugin-syntax-jsx "^6.18.0" + lodash "^4.17.11" + babel-plugin-syntax-async-functions@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" @@ -2285,6 +2310,32 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" +better-ajv-errors@^0.5.2: + version "0.5.7" + resolved "https://registry.yarnpkg.com/better-ajv-errors/-/better-ajv-errors-0.5.7.tgz#246123954161cc0ef124761c55a121c96b0cdce0" + integrity sha512-O7tpXektKWVwYCH5g6Vs3lKD+sJs7JHh5guapmGJd+RTwxhFZEf4FwvbHBURUnoXsTeFaMvGuhTTmEGiHpNi6w== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/runtime" "^7.0.0" + chalk "^2.4.1" + core-js "^2.5.7" + json-to-ast "^2.0.3" + jsonpointer "^4.0.1" + leven "^2.1.0" + +better-ajv-errors@^0.6.1: + version "0.6.4" + resolved "https://registry.yarnpkg.com/better-ajv-errors/-/better-ajv-errors-0.6.4.tgz#1e3c6b93dc11e72c94a0b042594515eb917f2957" + integrity sha512-+spBhtcCzovXWeHpt5dGylFsn3p5l9w+KcUqh/b4MFdLV+q1sT1olxD9izvwi0D3WuP06eVgeZAGLtxtTnUIDg== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/runtime" "^7.0.0" + chalk "^2.4.1" + core-js "^2.5.7" + json-to-ast "^2.0.3" + jsonpointer "^4.0.1" + leven "^2.1.0" + big.js@^3.1.3: version "3.2.0" resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" @@ -2300,6 +2351,11 @@ binary-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== +binary-extensions@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" + integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== + block-stream@*: version "0.0.9" resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" @@ -2388,7 +2444,7 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" -braces@^3.0.1: +braces@^3.0.1, braces@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== @@ -2589,6 +2645,11 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +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= + caller-callsite@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" @@ -2649,6 +2710,16 @@ camelcase@^4.1.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= +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== + +camelize@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b" + integrity sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs= + can-use-dom@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/can-use-dom/-/can-use-dom-0.1.0.tgz#22cc4a34a0abc43950f42c6411024a3f6366b45a" @@ -2811,6 +2882,21 @@ chokidar@^2.0.2, chokidar@^2.1.2: optionalDependencies: fsevents "^1.2.7" +chokidar@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.0.2.tgz#0d1cd6d04eb2df0327446188cd13736a3367d681" + integrity sha512-c4PR2egjNjI1um6bamCQ6bUNPDiyofNQruHvKgHQ4gDUP/ITSVSzNsiI5OWtHOsX323i5ha/kk4YmOZ1Ktg7KA== + dependencies: + anymatch "^3.0.1" + braces "^3.0.2" + glob-parent "^5.0.0" + is-binary-path "^2.1.0" + is-glob "^4.0.1" + normalize-path "^3.0.0" + readdirp "^3.1.1" + optionalDependencies: + fsevents "^2.0.6" + chownr@^1.0.1, chownr@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.2.tgz#a18f1e0b269c8a6a5d3c86eb298beb14c3dd7bf6" @@ -2851,7 +2937,7 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -classnames@^2.2.5: +classnames@^2.2.0, classnames@^2.2.3, classnames@^2.2.5, 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== @@ -2919,6 +3005,15 @@ cliui@^4.0.0: strip-ansi "^4.0.0" wrap-ansi "^2.0.0" +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + clone-deep@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-2.0.2.tgz#00db3a1e173656730d1188c3d6aced6d7ea97713" @@ -2955,6 +3050,11 @@ coa@~1.0.1: dependencies: q "^1.1.2" +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" @@ -3233,7 +3333,7 @@ core-js@^1.0.0: resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY= -core-js@^2.4.0, core-js@^2.5.0, core-js@^2.5.3: +core-js@^2.4.0, core-js@^2.5.0, core-js@^2.5.3, core-js@^2.5.7: version "2.6.9" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.9.tgz#6b4b214620c834152e179323727fc19741b084f2" integrity sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A== @@ -3377,6 +3477,11 @@ css-color-function@~1.3.3: debug "^3.1.0" rgb "~0.1.0" +css-color-keywords@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" + integrity sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU= + css-color-names@0.0.4, css-color-names@^0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" @@ -3452,6 +3557,15 @@ css-selector-tokenizer@^0.7.0: fastparse "^1.1.1" regexpu-core "^1.0.0" +css-to-react-native@^2.2.2: + version "2.3.1" + resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-2.3.1.tgz#cf0f61e0514846e2d4dc188b0886e29d8bef64a2" + integrity sha512-yO+oEx1Lf+hDKasqQRVrAvzMCz825Huh1VMlEEDlRWyAhFb/FWb6I0KpEF1PkyKQ7NEdcx9d5M2ZEWgJAsgPvQ== + dependencies: + camelize "^1.0.0" + css-color-keywords "^1.0.0" + postcss-value-parser "^3.3.0" + css-tree@1.0.0-alpha.28: version "1.0.0-alpha.28" resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.28.tgz#8e8968190d886c9477bc8d61e96f61af3f7ffa7f" @@ -3703,11 +3817,16 @@ debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: dependencies: ms "^2.1.1" -decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: +decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2, 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= + decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" @@ -3979,6 +4098,11 @@ domhandler@^2.3.0: dependencies: domelementtype "1" +dompurify@^1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-1.0.11.tgz#fe0f4a40d147f7cebbe31a50a1357539cfc1eb4d" + integrity sha512-XywCTXZtc/qCX3iprD1pIklRVk/uhl8BKpkTxr+ZyMVUzSUg7wkQXRBp/euJ5J5moa1QvfpvaPQVP71z1O59dQ== + domutils@1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" @@ -4200,6 +4324,11 @@ es6-map@^0.1.3: es6-symbol "~3.1.1" event-emitter "~0.3.5" +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= + es6-set@~0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" @@ -4524,6 +4653,11 @@ eventemitter3@^3.0.0: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== +eventemitter3@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.0.tgz#d65176163887ee59f386d64c82610b696a4a74eb" + integrity sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg== + events@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/events/-/events-2.1.0.tgz#2a9a1e18e6106e0e812aa9ebd4a819b3c29c0ba5" @@ -4800,7 +4934,7 @@ fast-json-stable-stringify@^2.0.0: resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= -fast-levenshtein@~2.0.4: +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.4: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -4981,6 +5115,13 @@ find-up@^2.0.0, find-up@^2.1.0: dependencies: locate-path "^2.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.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -5057,6 +5198,11 @@ for-own@^1.0.0: dependencies: for-in "^1.0.1" +foreach@^2.0.4: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -5071,6 +5217,11 @@ form-data@~2.3.2: combined-stream "^1.0.6" mime-types "^2.1.12" +format-util@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/format-util/-/format-util-1.0.3.tgz#032dca4a116262a12c43f4c3ec8566416c5b2d95" + integrity sha1-Ay3KShFiYqEsQ/TD7IVmQWxbLZU= + format@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b" @@ -5142,6 +5293,11 @@ fsevents@^1.2.3, fsevents@^1.2.7: nan "^2.12.1" node-pre-gyp "^0.12.0" +fsevents@^2.0.6: + version "2.0.7" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.0.7.tgz#382c9b443c6cbac4c57187cdda23aa3bf1ccfc2a" + integrity sha512-a7YT0SV3RB+DjYcppwVDLtn13UQnmg0SWZS7ezZD0UjnLwXmy8Zm21GMVGLaFGimIqcvyMQaOJBrop8MyOp1kQ== + fstream@^1.0.0, fstream@^1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" @@ -5202,6 +5358,11 @@ get-caller-file@^1.0.1: 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-own-enumerable-property-symbols@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz#b877b49a5c16aefac3655f2ed2ea5b684df8d203" @@ -5340,7 +5501,7 @@ global-prefix@^1.0.1: is-windows "^1.0.1" which "^1.2.14" -global@^4.3.2: +global@^4.3.0, global@^4.3.2: version "4.4.0" resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== @@ -5413,6 +5574,11 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.0.tgz#8d8fdc73977cb04104721cb53666c1ca64cd328b" integrity sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg== +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== + growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" @@ -5435,7 +5601,7 @@ handle-thing@^2.0.0: resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ== -handlebars@^4.0.3: +handlebars@^4.0.3, handlebars@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.2.tgz#b6b37c1ced0306b221e094fc7aca3ec23b131b67" integrity sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw== @@ -5786,6 +5952,11 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.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== + https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" @@ -6048,6 +6219,11 @@ invert-kv@^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== + ip-regex@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" @@ -6112,6 +6288,13 @@ is-binary-path@^1.0.0: dependencies: binary-extensions "^1.0.0" +is-binary-path@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -6461,6 +6644,11 @@ is-utf8@^0.2.0: resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= +is-what@^3.2.4: + version "3.3.1" + resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.3.1.tgz#79502181f40226e2d8c09226999db90ef7c1bcbe" + integrity sha512-seFn10yAXy+yJlTRO+8VfiafC+0QJanGLMPTBWLrJm/QPauuchy0UXh8B6H5o9VA8BAzk0iYievt6mNp6gfaqA== + is-window@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-window/-/is-window-1.0.2.tgz#2c896ca53db97de45d3c33133a65d8c9f563480d" @@ -6481,6 +6669,11 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -6926,7 +7119,7 @@ js-tokens@^3.0.2: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= -js-yaml@^3.12.0, js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.7.0: +js-yaml@^3.12.0, js-yaml@^3.12.1, js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.7.0: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== @@ -7036,6 +7229,22 @@ json-parse-better-errors@^1.0.1: resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== +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-traverse@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" @@ -7061,6 +7270,14 @@ json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= +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" + json3@^3.3.2: version "3.3.3" resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" @@ -7090,6 +7307,11 @@ jsonify@~0.0.0: resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= +jsonpointer@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" + integrity sha1-T9kss04OnbPInIYi7PUfm5eMbLk= + jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -7174,6 +7396,13 @@ lcid@^1.0.0: 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" + left-pad@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" @@ -7313,6 +7542,14 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" +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" @@ -7508,6 +7745,11 @@ lru-cache@^4.0.1, lru-cache@^4.1.1: pseudomap "^1.0.2" yallist "^2.1.2" +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== + make-dir@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" @@ -7527,6 +7769,13 @@ makeerror@1.0.x: dependencies: tmpl "1.0.x" +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" + map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" @@ -7549,6 +7798,11 @@ map-visit@^1.0.0: dependencies: object-visit "^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= + markdown-loader@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/markdown-loader/-/markdown-loader-2.0.2.tgz#1cdcf11307658cd611046d7db34c2fe80542af7c" @@ -7611,6 +7865,20 @@ mem@^1.1.0: dependencies: mimic-fn "^1.0.0" +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, memoize-one@^5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.0.5.tgz#8cd3809555723a07684afafcd6f756072ac75d7e" + integrity sha512-ey6EpYv0tEaIbM/nTDOpHciXUvd+ackQrJgEzBwemhZZIWZjcyodqEcrmqDy2BKRTM3a65kKBV4WtLXJDt26SQ== + memoizerific@^1.11.3: version "1.11.3" resolved "https://registry.yarnpkg.com/memoizerific/-/memoizerific-1.11.3.tgz#7c87a4646444c32d75438570905f2dbd1b1a805a" @@ -7642,6 +7910,13 @@ meow@^3.3.0, meow@^3.7.0: redent "^1.0.0" trim-newlines "^1.0.0" +merge-anything@^2.2.4: + version "2.4.0" + resolved "https://registry.yarnpkg.com/merge-anything/-/merge-anything-2.4.0.tgz#86959caf02bb8969d1ae5e1b652862bc5fe54e44" + integrity sha512-MhJcPOEcDUIbwU0LnEfx5S9s9dfQ/KPu4g2UA5T5G1LRKS0XmpDvJ9+UUfTkfhge+nA1gStE4tJAvx6lXLs+rg== + dependencies: + is-what "^3.2.4" + merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" @@ -7750,7 +8025,7 @@ mimic-fn@^1.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== -mimic-fn@^2.1.0: +mimic-fn@^2.0.0, mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== @@ -7855,6 +8130,23 @@ mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkd dependencies: minimist "0.0.8" +mobx-react-lite@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/mobx-react-lite/-/mobx-react-lite-1.4.0.tgz#193beb5fdddf17ae61542f65ff951d84db402351" + integrity sha512-5xCuus+QITQpzKOjAOIQ/YxNhOl/En+PlNJF+5QU4Qxn9gnNMJBbweAdEW3HnuVQbfqDYEUnkGs5hmkIIStehg== + +mobx-react@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/mobx-react/-/mobx-react-6.1.1.tgz#24a2c8a3393890fa732b4efd34cc6dcccf6e0e7a" + integrity sha512-hjACWCTpxZf9Sv1YgWF/r6HS6Nsly1SYF22qBJeUE3j+FMfoptgjf8Zmcx2d6uzA07Cezwap5Cobq9QYa0MKUw== + dependencies: + mobx-react-lite "1.4.0" + +mobx@^4.2.0: + version "4.13.0" + resolved "https://registry.yarnpkg.com/mobx/-/mobx-4.13.0.tgz#af4be9aac596c622a2bba4bfdaa67a5adb2ed90f" + integrity sha512-+hJTBIBRz4sWKpBTj2t2YbjJVlFJIGYiVoHnNUl03krsiFzXGNtqLjFvTPE1+fnN6Mq6LGfvgRKiGsBtZvZBwg== + moment@^2.10.2: version "2.24.0" resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" @@ -7975,6 +8267,13 @@ node-dir@^0.1.10: dependencies: minimatch "^3.0.2" +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.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.1.2.tgz#ab884e8e7e57e38a944753cec706f788d1768bb5" @@ -8016,7 +8315,7 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= -node-libs-browser@^2.0.0: +node-libs-browser@^2.0.0, node-libs-browser@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== @@ -8072,6 +8371,13 @@ node-pre-gyp@^0.12.0: semver "^5.3.0" tar "^4" +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" + node-releases@^1.1.25: version "1.1.25" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.25.tgz#0c2d7dbc7fed30fbe02a9ee3007b8c90bf0133d3" @@ -8218,6 +8524,53 @@ nwsapi@^2.0.7, nwsapi@^2.1.4: resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.1.4.tgz#e006a878db23636f8e8a67d33ca0e4edf61a842f" integrity sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw== +oas-kit-common@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/oas-kit-common/-/oas-kit-common-1.0.7.tgz#de67dc19a572d82bd5f9ba2e1f606ad02d1fb30e" + integrity sha512-8+P8gBjN9bGfa5HPgyefO78o394PUwHoQjuD4hM0Bpl56BkcxoyW4MpWMPM6ATm+yIIz4qT1igmuVukUtjP/pQ== + dependencies: + safe-json-stringify "^1.2.0" + +oas-linter@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/oas-linter/-/oas-linter-3.0.1.tgz#41e577549a01c93a0c9fe8422f499d1ff0a9acfd" + integrity sha512-vk8Pzqq8iZM8V0/8NJMHAbf4CMyAUnLTJPNKwCkFl6g2W7omomL3yPpseNqihwU7KgqwYDTjxJ31qavmYbeDbg== + dependencies: + should "^13.2.1" + yaml "^1.3.1" + +oas-resolver@^2.2.5: + version "2.2.5" + resolved "https://registry.yarnpkg.com/oas-resolver/-/oas-resolver-2.2.5.tgz#9006e66ee3c0542f3b507ae61afc3e5328d7116c" + integrity sha512-AwARII3hmdXtDAGccvjVsRLked0PNJycIG/koD6lYoGspJjxnQ3a8AmDgp7kHYnG148zusfsl8GM0cfwGmd7EA== + dependencies: + node-fetch-h2 "^2.3.0" + oas-kit-common "^1.0.7" + reftools "^1.0.8" + yaml "^1.3.1" + yargs "^12.0.5" + +oas-schema-walker@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/oas-schema-walker/-/oas-schema-walker-1.1.2.tgz#0ad6b78a01421cb9fda9dd820f23f5db51d51b86" + integrity sha512-Q9xqeUtc17ccP/dpUfARci4kwFFszyJAgR/wbDhrRR/73GqsY5uSmKaIK+RmBqO8J4jVYrrDPjQKvt1IcpQdGw== + +oas-validator@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/oas-validator/-/oas-validator-3.3.1.tgz#4f93207967837fb86efeab86a119fd0342dbd432" + integrity sha512-WFKafxpH2KrxHG6drJiJ7M0mzGZER3XDkLtbeX8z9YNR4JvCMDlhQL7J2i+rnCxyVC8riRZGGeZpxQ0000w2HA== + dependencies: + ajv "^5.5.2" + better-ajv-errors "^0.5.2" + call-me-maybe "^1.0.1" + oas-kit-common "^1.0.7" + oas-linter "^3.0.1" + oas-resolver "^2.2.5" + oas-schema-walker "^1.1.2" + reftools "^1.0.8" + should "^13.2.1" + yaml "^1.3.1" + oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" @@ -8355,6 +8708,20 @@ onetime@^5.1.0: dependencies: mimic-fn "^2.1.0" +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.15: + version "1.0.0-beta.15" + resolved "https://registry.yarnpkg.com/openapi-sampler/-/openapi-sampler-1.0.0-beta.15.tgz#c087143826962fa07a0c7bda9ce5c36d732f45de" + integrity sha512-wUD/vD3iBHKik/sME3uwUu4X3HFA53rDrPcVvLzgEELjHLbnTpSYfm4Jo9qZT1dPfBRowAnrF/VRQfOjL5QRAw== + dependencies: + json-pointer "^0.6.0" + opencollective-postinstall@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz#5657f1bede69b6e33a45939b061eb53d3c6c3a89" @@ -8435,6 +8802,15 @@ os-locale@^2.0.0: lcid "^1.0.0" mem "^1.1.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" + os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -8448,6 +8824,11 @@ osenv@0, osenv@^0.1.4: os-homedir "^1.0.0" os-tmpdir "^1.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" @@ -8458,6 +8839,11 @@ p-finally@^2.0.0: resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== +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@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" @@ -8465,7 +8851,7 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.2.0: +p-limit@^2.0.0, p-limit@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2" integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ== @@ -8479,6 +8865,13 @@ p-locate@^2.0.0: dependencies: p-limit "^1.1.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" @@ -8702,12 +9095,17 @@ pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" +perfect-scrollbar@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/perfect-scrollbar/-/perfect-scrollbar-1.4.0.tgz#5d014ef9775e1f43058a1dbae9ed1daf0e7091f1" + integrity sha512-/2Sk/khljhdrsamjJYS5NjrH+GKEHEwh7zFSiYyxROyYKagkE4kSn2zDQDRTOMo8mpT2jikxx6yI1dG7lNP/hw== + performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -picomatch@^2.0.5: +picomatch@^2.0.4, picomatch@^2.0.5: version "2.0.7" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.0.7.tgz#514169d8c7cd0bdbeecc8a2609e34a7163de69f6" integrity sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA== @@ -8777,7 +9175,7 @@ pn@^1.1.0: resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== -polished@^3.3.1: +polished@^3.3.1, polished@^3.4.1: version "3.4.1" resolved "https://registry.yarnpkg.com/polished/-/polished-3.4.1.tgz#1eb5597ec1792206365635811d465751f5cbf71c" integrity sha512-GflTnlP5rrpDoigjczEkS6Ye7NDA4sFvAnlr5hSDrEvjiVj97Xzev3hZlLi3UB27fpxyTS9rWU64VzVLWkG+mg== @@ -9754,6 +10152,13 @@ pretty-format@^3.5.1: resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-3.8.0.tgz#bfbed56d5e9a776645f4b1ff7aa1a3ac4fa3c385" integrity sha1-v77VbV6ad2ZF9LH/eqGjrE+jw4U= +prismjs@^1.17.1: + version "1.17.1" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.17.1.tgz#e669fcbd4cdd873c35102881c33b14d0d68519be" + integrity sha512-PrEDJAFdUGbOP6xK/UsfkC5ghJsPJviKgnQOoxaDbBjwc8op68Quupwt1DeAFoG8GImPhiKXAvvsH7wDSLsu1Q== + optionalDependencies: + clipboard "^2.0.0" + prismjs@^1.8.4, prismjs@~1.16.0: version "1.16.0" resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.16.0.tgz#406eb2c8aacb0f5f0f1167930cb83835d10a4308" @@ -9824,7 +10229,7 @@ prompts@^0.1.9: kleur "^2.0.1" sisteransi "^0.1.1" -prop-types@15.7.2, prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.8, prop-types@^15.5.9, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: +prop-types@15.7.2, prop-types@^15.5.0, prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.8, prop-types@^15.5.9, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, 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== @@ -10061,7 +10466,7 @@ react-docgen@^3.0.0-beta11: node-dir "^0.1.10" recast "^0.16.0" -react-dom@^16.8.3: +react-dom@^16.8.3, react-dom@^16.8.6: version "16.8.6" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.8.6.tgz#71d6303f631e8b0097f56165ef608f051ff6e10f" integrity sha512-1nL7PIq9LTL3fthPqwkvr2zY7phIPjYrT0jp4HjyEQrEROnw4dG41VVwi/wfoCneoleqrNX7iAD+pXebJZwrwA== @@ -10071,6 +10476,13 @@ react-dom@^16.8.3: prop-types "^15.6.2" scheduler "^0.13.6" +react-dropdown@^1.6.4: + version "1.6.4" + resolved "https://registry.yarnpkg.com/react-dropdown/-/react-dropdown-1.6.4.tgz#8dce141bb26fb6b3c3696d16e06f4517728c57f4" + integrity sha512-zTlNRZ6vzjEPsodBNgh6Xjp9IempEx9sReH3crT2Jw4S6KW2wS/BRIH3d/grYf/iXARadDRD91//uUCs9yjoLg== + dependencies: + classnames "^2.2.3" + react-error-overlay@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-4.0.1.tgz#417addb0814a90f3a7082eacba7cee588d00da89" @@ -10112,6 +10524,20 @@ react-helmet-async@^1.0.2: react-fast-compare "2.0.4" shallowequal "1.1.0" +react-hot-loader@^4.12.10: + version "4.12.10" + resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-4.12.10.tgz#b3457c0f733423c4827c6d2672e50c9f8bedaf6b" + integrity sha512-dX+ZUigxQijWLsKPnxc0khuCt2sYiZ1W59LgSBMOLeGSG3+HkknrTlnJu6BCNdhYxbEQkGvBsr7zXlNWYUIhAQ== + 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-html-attributes@^1.4.2: version "1.4.6" resolved "https://registry.yarnpkg.com/react-html-attributes/-/react-html-attributes-1.4.6.tgz#9558b56bb81c60f6cee9ae7d5e97434a59c086ff" @@ -10149,7 +10575,7 @@ react-inspector@^3.0.2: is-dom "^1.0.9" prop-types "^15.6.1" -react-is@^16.7.0, react-is@^16.8.1: +react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1: version "16.8.6" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16" integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA== @@ -10216,6 +10642,14 @@ react-syntax-highlighter@^8.0.1: prismjs "^1.8.4" refractor "^2.4.1" +react-tabs@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/react-tabs/-/react-tabs-3.0.0.tgz#60311a17c755eb6aa9b3310123e67db421605127" + integrity sha512-z90cDIb+5V7MzjXFHq1VLxYiMH7dDQWan7mXSw6BWQtw+9pYAnq/fEDvsPaXNyevYitvLetdW87C61uu27JVMA== + dependencies: + classnames "^2.2.0" + prop-types "^15.5.0" + react-textarea-autosize@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-7.1.0.tgz#3132cb77e65d94417558d37c0bfe415a5afd3445" @@ -10246,7 +10680,7 @@ react-treebeard@^2.1.0: shallowequal "^0.2.2" velocity-react "^1.3.1" -react@^16.8.3: +react@^16.8.3, react@^16.8.6: version "16.8.6" resolved "https://registry.yarnpkg.com/react/-/react-16.8.6.tgz#ad6c3a9614fd3a4e9ef51117f54d888da01f2bbe" integrity sha512-pC0uMkhLaHm11ZSJULfOBqV4tIZkx87ZLvbbQYunNixAAvjnC+snJCg0XQXn9VIsttVsbZP/H/ewzgsd5fxKXw== @@ -10338,6 +10772,13 @@ readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" +readdirp@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.1.1.tgz#b158123ac343c8b0f31d65680269cc0fc1025db1" + integrity sha512-XXdSXZrQuvqoETj50+JAitxz1UPdt5dupjT6T5nVB+WvjMv2XKYj+s7hPeAVCXvmJrL36O4YYyWlIC3an2ePiQ== + dependencies: + picomatch "^2.0.4" + realpath-native@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" @@ -10399,6 +10840,54 @@ redent@^1.0.0: indent-string "^2.1.0" strip-indent "^1.0.1" +redoc-cli@0.8.6: + version "0.8.6" + resolved "https://registry.yarnpkg.com/redoc-cli/-/redoc-cli-0.8.6.tgz#3f870fa6d57afd3b0a7843c0954502c6d36a562c" + integrity sha512-YjwSts4Yh7mUYYsq064ElNI4xAETPRUIq76A51sZpGZ0+36+2elo23oQYAzCSOBX7/Bj6W5vzMHaPPDewFnZbg== + dependencies: + chokidar "^3.0.2" + handlebars "^4.1.2" + isarray "^2.0.5" + mkdirp "^0.5.1" + mobx "^4.2.0" + node-libs-browser "^2.2.1" + react "^16.8.6" + react-dom "^16.8.6" + redoc "2.0.0-rc.13" + styled-components "^4.3.2" + tslib "^1.10.0" + yargs "^13.3.0" + +redoc@2.0.0-rc.13: + version "2.0.0-rc.13" + resolved "https://registry.yarnpkg.com/redoc/-/redoc-2.0.0-rc.13.tgz#243e4d003ca9bd45006c215d8856a3b1229ca8bb" + integrity sha512-t0vlss1TIUknYXTI9RIZ1nRMyIW/pjo4KMMDFOMdRq5/8jopkNyf37q25BwBuAJfDxQV+tIUoy6o+rAAffeDkQ== + dependencies: + classnames "^2.2.6" + decko "^1.2.0" + dompurify "^1.0.11" + eventemitter3 "^4.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.7.0" + memoize-one "^5.0.5" + mobx-react "^6.1.1" + openapi-sampler "1.0.0-beta.15" + perfect-scrollbar "^1.4.0" + polished "^3.4.1" + prismjs "^1.17.1" + prop-types "^15.7.2" + react-dropdown "^1.6.4" + react-hot-loader "^4.12.10" + react-tabs "^3.0.0" + slugify "^1.3.4" + stickyfill "^1.1.1" + swagger2openapi "^5.3.1" + tslib "^1.10.0" + uri-template-lite "^19.4.0" + reduce-css-calc@^1.2.6, reduce-css-calc@^1.2.7: version "1.3.0" resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716" @@ -10442,6 +10931,11 @@ refractor@^2.4.1: parse-entities "^1.1.2" prismjs "~1.16.0" +reftools@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/reftools/-/reftools-1.0.8.tgz#ec26941f780044420c1d1bb48836112f199e520b" + integrity sha512-hERpM8J+L0q8dzKFh/QqcLlKZYmTgzGZM7m8b1ptS66eg4NA/iMPm7GNw3TKZ876ndVjGpiLt0BCIfAWsUgwGg== + regenerate@^1.2.1: version "1.4.0" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" @@ -10623,6 +11117,11 @@ require-main-filename@^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== + requireindex@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.1.0.tgz#e5404b81557ef75db6e49c5a72004893fe03e162" @@ -10808,6 +11307,11 @@ safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== +safe-json-stringify@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz#356e44bc98f1f93ce45df14bcd7c01cda86e0afd" + integrity sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg== + safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" @@ -11095,6 +11599,50 @@ shellwords@^0.1.1: resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== +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, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" @@ -11156,6 +11704,11 @@ slice-ansi@^2.1.0: astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" +slugify@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.3.4.tgz#78d2792d7222b55cd9fc81fa018df99af779efeb" + integrity sha512-KP0ZYk5hJNBS8/eIjGkFDCzGQIoZ1mnfQRYS5WM3273z+fxGWXeN0fkwf2ebEweydv9tioZIHGZKoF21U07/nw== + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -11266,6 +11819,11 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +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== + space-separated-tokens@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.4.tgz#27910835ae00d0adfcdbd0ad7e611fb9544351fa" @@ -11394,6 +11952,11 @@ stealthy-require@^1.1.1: resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= +stickyfill@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stickyfill/-/stickyfill-1.1.1.tgz#39413fee9d025c74a7e59ceecb23784cc0f17f02" + integrity sha1-OUE/7p0CXHSn5ZzuyyN4TMDxfwI= + store2@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/store2/-/store2-2.7.1.tgz#22070b7dc04748a792fc6912a58ab99d3a21d788" @@ -11466,7 +12029,7 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -string-width@^3.0.0: +string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== @@ -11541,7 +12104,7 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" -strip-ansi@^5.1.0: +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== @@ -11598,6 +12161,25 @@ style-loader@^0.21.0: loader-utils "^1.1.0" schema-utils "^0.4.5" +styled-components@^4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-4.3.2.tgz#4ca81918c812d3006f60ac5fdec7d6b64a9509cc" + integrity sha512-NppHzIFavZ3TsIU3R1omtddJ0Bv1+j50AKh3ZWyXHuFvJq1I8qkQ5mZ7uQgD89Y8zJNx2qRo6RqAH1BmoVafHw== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@emotion/is-prop-valid" "^0.8.1" + "@emotion/unitless" "^0.7.0" + babel-plugin-styled-components ">= 1" + css-to-react-native "^2.2.2" + memoize-one "^5.0.0" + merge-anything "^2.2.4" + prop-types "^15.5.4" + react-is "^16.6.0" + stylis "^3.5.0" + stylis-rule-sheet "^0.0.10" + supports-color "^5.5.0" + stylehacks@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" @@ -11607,6 +12189,16 @@ stylehacks@^4.0.0: postcss "^7.0.0" postcss-selector-parser "^3.0.0" +stylis-rule-sheet@^0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz#44e64a2b076643f4b52e5ff71efc04d8c3c4a430" + integrity sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw== + +stylis@^3.5.0: + version "3.5.4" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.5.4.tgz#f665f25f5e299cf3d64654ab949a57c768b73fbe" + integrity sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q== + supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -11626,7 +12218,7 @@ supports-color@^4.2.1: dependencies: has-flag "^2.0.0" -supports-color@^5.1.0, supports-color@^5.3.0, supports-color@^5.4.0: +supports-color@^5.1.0, supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== @@ -11678,6 +12270,23 @@ svgo@^1.0.0: unquote "~1.1.1" util.promisify "~1.0.0" +swagger2openapi@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/swagger2openapi/-/swagger2openapi-5.3.1.tgz#a60f6ade642c867b13300e1a3c4f265fa5c74685" + integrity sha512-2EIs1gJs9LH4NjrxHPJs6N0Kh9pg66He+H9gIcfn1Q9dvdqPPVTC2NRdXalqT+98rIoV9kSfAtNBD4ASC0Q1mg== + 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.2.5" + oas-schema-walker "^1.1.2" + oas-validator "^3.3.1" + reftools "^1.0.8" + yaml "^1.3.1" + yargs "^12.0.5" + symbol-observable@^1.0.3, symbol-observable@^1.0.4, symbol-observable@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" @@ -11924,7 +12533,7 @@ trim-right@^1.0.1: dependencies: glob "^7.1.2" -tslib@^1.9.0: +tslib@^1.10.0, tslib@^1.9.0: version "1.10.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== @@ -12140,6 +12749,11 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" +uri-template-lite@^19.4.0: + version "19.4.0" + resolved "https://registry.yarnpkg.com/uri-template-lite/-/uri-template-lite-19.4.0.tgz#cbc2c072cf4931428a2f9d3aea36b8254a33cce5" + integrity sha512-VY8dgwyMwnCztkzhq0cA/YhNmO+YZqow//5FdmgE2fZU/JPi+U0rPL7MRDi0F+Ch4vJ7nYidWzeWAeY7uywe9g== + urix@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" @@ -12564,6 +13178,15 @@ wrap-ansi@^3.0.1: string-width "^2.1.1" strip-ansi "^4.0.0" +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -12633,7 +13256,7 @@ y18n@^3.2.1: resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= -y18n@^4.0.0: +"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== @@ -12648,6 +13271,29 @@ yallist@^3.0.0, yallist@^3.0.3: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== +yaml@^1.3.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.6.0.tgz#d8a985cfb26086dd73f91c637f6e6bc909fddd3c" + integrity sha512-iZfse3lwrJRoSlfs/9KQ9iIXxs9++RvBFVzAqbbBiFT+giYtyanevreF9r61ZTbGMgWQBxAua3FzJiniiJXWWw== + dependencies: + "@babel/runtime" "^7.4.5" + +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@^13.1.1: + version "13.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" + integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + yargs-parser@^4.2.0: version "4.2.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" @@ -12713,6 +13359,40 @@ yargs@^11.0.0: y18n "^3.2.1" yargs-parser "^9.0.2" +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@^13.3.0: + version "13.3.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" + integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA== + dependencies: + cliui "^5.0.0" + find-up "^3.0.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 "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.1" + yargs@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8"