-**This is README for `2.0` version of ReDoc (React based). README for `1.x` version is on the branch [v1.x](https://github.com/Redocly/redoc/tree/v1.x)**
+**This is the README for the `2.x` version of Redoc (React-based).**
+**The README for the `1.x` version is on the [v1.x](https://github.com/Redocly/redoc/tree/v1.x) branch**
+## About Redoc
-
+Redoc is an open-source tool for generating documentation from OpenAPI (fka Swagger) definitions.
-## [Live demo](http://redocly.github.io/redoc/)
+By default Redoc offers a three-panel, responsive layout:
-[](https://github.com/Rebilly/generator-openapi-repo#generator-openapi-repo--) [](https://redoc.ly) [](https://redoc.ly/#services)
+- The left panel contains a search bar and navigation menu.
+- The central panel contains the documentation.
+- The right panel contains request and response examples.
+
+
+
+## Live demo
+
+If you want to see how Redoc will render your OpenAPI definition,
+you can try it out online at https://redocly.github.io/redoc/.
+
+A version of the Swagger Petstore API is displayed by default.
+To test it with your own OpenAPI definition,
+enter the URL for your definition and select **TRY IT**.
+
+## Redoc vs. Reference vs. Portals
+
+Redoc is Redocly's community-edition product. Looking for something more?
+Checkout the following feature comparison of Redocly's premium products versus Redoc:
+
+| Features | Redoc | Reference | Portals |
+|------------------------------|:---------:|:---------:|:-----------:|
+| **Specs** | | | |
+| Swagger 2.0 | √ | √ | √ |
+| OpenAPI 3.0 | √ | √ | √ |
+| OpenAPI 3.1 | √ (basic) | √ | √ |
+| | | | |
+| **Theming** | | | |
+| Fonts/colors | √ | √ | √ |
+| Extra theme options | | √ | √ |
+| | | | |
+| **Performance** | | | |
+| Pagination | | √ | √ |
+| Search (enhanced) | | √ | √ |
+| Search (server-side) | | | √ |
+| | | | |
+| **Multiple APIs** | | | |
+| Multiple versions | | √ | √ |
+| Multiple APIs | | | √ |
+| API catalog | | | √ |
+| | | | |
+| **Additional features** | | | |
+| Try-it console | | √ | √ |
+| Automated code samples | | √ | √ |
+| Deep links | | √ | √ |
+| More SEO control | | | √ |
+| Contextual docs | | | √ |
+| Landing pages | | | √ |
+| React hooks for more control | | | √ |
+| Personalization | | | √ |
+| Analytics integrations | | | √ |
+| Feedback | | | Coming Soon |
+
+Refer to the Redocly's documentation for more information on these products:
+
+- [Portals](https://redoc.ly/docs/developer-portal/introduction/)
+- [Reference](https://redoc.ly/docs/api-reference-docs/getting-started/)
+- [Redoc](https://redoc.ly/docs/redoc/quickstart/intro/)
## Features
-- Extremely easy deployment
-- [redoc-cli](https://github.com/Redocly/redoc/blob/master/cli/README.md) with ability to bundle your docs into **zero-dependency** HTML file
-- Server Side Rendering ready
-- The widest OpenAPI v2.0 features support (yes, it supports even `discriminator`)
-
-- OpenAPI 3.0 support
-- Basic OpenAPI 3.1 support
-- Neat **interactive** documentation for nested objects
-
-- Code samples support (via vendor extension)
-
- Responsive three-panel design with menu/scrolling synchronization
-- Integrate API Introduction into side menu - ReDoc takes advantage of markdown headings from OpenAPI description field. It pulls them into side menu and also supports deep linking.
-- High-level grouping in side-menu via [`x-tagGroups`](docs/redoc-vendor-extensions.md#x-tagGroups) vendor extension
-- Simple integration with `create-react-app` ([sample](https://github.com/APIs-guru/create-react-app-redoc))
-- Branding/customizations via [`theme` option](#redoc-options-object)
+- [Multiple deployment options](https://redoc.ly/docs/redoc/quickstart/intro/)
+- [Server-side rendering (SSR) ready](https://redoc.ly/docs/redoc/quickstart/cli/#redoc-cli-commands)
+- Ability to integrate your API introduction into the side menu
+- [Simple integration with `create-react-app`](https://redoc.ly/docs/redoc/quickstart/react/)
-## Roadmap
- - [x] ~~[OpenAPI v3.0 support](https://github.com/Redocly/redoc/issues/312)~~
- - [x] ~~performance optimizations~~
- - [x] ~~better navigation (menu improvements + search)~~
- - [x] ~~React rewrite~~
- - [x] ~~docs pre-rendering (performance and SEO)~~
- - [ ] ability to simple branding/styling
+ [Example repo](https://github.com/APIs-guru/create-react-app-redoc)
+- [Command-line interface to bundle your docs into a **zero-dependency** HTML file](https://redoc.ly/docs/redoc/quickstart/cli/)
+- Neat **interactive** documentation for nested objects
+ 
+
+## Customization options
+[](https://redoc.ly/#services)
+- High-level grouping in side-menu with the [`x-tagGroups`](https://redoc.ly/docs/api-reference-docs/specification-extensions/x-tag-groups/) specification extension
+- Branding/customizations using the [`theme` option](https://redoc.ly/docs/api-reference-docs/configuration/theming/)
+
+## Support
+- OpenAPI v3.0 support
+- Basic OpenAPI v3.1 support
+- Broad OpenAPI v2.0 feature support (yes, it supports even `discriminator`)
+ 
+- Code samples support (via vendor extension)
+ 
## Releases
-**Important:** all the 2.x releases are deployed to npm and can be used via jsdeliver:
-- particular release, e.g. `v2.0.0-alpha.15`: https://cdn.jsdelivr.net/npm/redoc@2.0.0-alpha.17/bundles/redoc.standalone.js
+**Important:** all the 2.x releases are deployed to npm and can be used with jsdeliver:
+- particular release, for example, `v2.0.0-alpha.15`: https://cdn.jsdelivr.net/npm/redoc@2.0.0-alpha.17/bundles/redoc.standalone.js
- `next` release: https://cdn.jsdelivr.net/npm/redoc@next/bundles/redoc.standalone.js
Additionally, all the 1.x releases are hosted on our GitHub Pages-based CDN **(deprecated)**:
-- particular release, e.g. `v1.2.0`: https://rebilly.github.io/ReDoc/releases/v1.2.0/redoc.min.js
+- particular release, for example `v1.2.0`: https://rebilly.github.io/ReDoc/releases/v1.2.0/redoc.min.js
- `v1.x.x` release: https://rebilly.github.io/ReDoc/releases/v1.x.x/redoc.min.js
- `latest` release: https://rebilly.github.io/ReDoc/releases/latest/redoc.min.js - it will point to latest 1.x.x release since 2.x releases are not hosted on this CDN but on unpkg.
## Version Guidance
-| ReDoc Release | OpenAPI Specification |
+| Redoc Release | OpenAPI Specification |
|:--------------|:----------------------|
| 2.0.0-alpha.54| 3.1, 3.0.x, 2.0 |
| 2.0.0-alpha.x | 3.0, 2.0 |
@@ -64,31 +120,42 @@ Additionally, all the 1.x releases are hosted on our GitHub Pages-based CDN **(d
| 1.18.x | 2.0 |
| 1.17.x | 2.0 |
-## Some Real-life usages
+## Showcase
- [Rebilly](https://api-reference.rebilly.com/)
- [Docker Engine](https://docs.docker.com/engine/api/v1.25/)
- [Zuora](https://www.zuora.com/developer/api-reference/)
- [Discourse](http://docs.discourse.org)
- [Commbox](https://www.commbox.io/api/)
- [APIs.guru](https://apis.guru/api-doc/)
-- [FastAPI](https://github.com/tiangolo/fastapi)
+- [BoxKnight](https://www.docs.boxknight.com/)
+
+## Lint OpenAPI definitions
+
+Redocly's OpenAPI CLI is an open source command-line tool that you can use to lint
+your OpenAPI definition. Linting helps you to catch errors and inconsistencies in your
+OpenAPI definition before publishing.
+
+Refer to [Lint configuration](https://redoc.ly/docs/cli/guides/lint/) in the OpenAPI documentation for more information.
## Deployment
-### TL;DR
+### TL;DR final code example
+
+To render your OpenAPI definition using Redoc, use the following HTML code sample and
+replace the `spec-url` attribute with the url or local file address to your definition.
```html
- ReDoc
+ Redoc
+ {{{redocHead}}}
+ {{#unless disableGoogleFont}}{{/unless}}
+
+
+ {{{redocHTML}}}
+
+
+```
+
+#### Serve
+
+Serve with the `nativeScrollbars` option set to `true`:
+
+```bash
+redoc-cli serve openapi/dist.yaml --options.nativeScrollbars
+```
diff --git a/docs/quickstart/docker.md b/docs/quickstart/docker.md
new file mode 100644
index 00000000..31539fdb
--- /dev/null
+++ b/docs/quickstart/docker.md
@@ -0,0 +1,39 @@
+---
+title: Using the Redoc Docker image
+---
+
+# Using the Redoc Docker image
+
+Redoc is available as a pre-built Docker image in [Docker Hub](https://hub.docker.com/r/redocly/redoc/).
+
+If you have [Docker](https://docs.docker.com/get-docker/) installed, pull the image with the following command:
+
+```docker
+docker pull redocly/redoc
+```
+
+Then run the image with the following command:
+
+```docker
+docker run -p 8080:80 redocly/redoc
+```
+
+The preview starts on port 8080, based on the port used in the command,
+and can be accessed at `http://localhost:8080`.
+To exit the preview, use `control+C`.
+
+By default Redoc starts with a demo Swagger Petstore OpenAPI definition located at
+http://petstore.swagger.io/v2/swagger.json. You can update this URL using
+the environment variable `SPEC_URL`.
+
+For example:
+
+```bash
+docker run -p 8080:80 -e SPEC_URL=https://api.example.com/openapi.json redocly/redoc
+```
+
+## Using a Dockerfile
+
+You can also create a Dockerfile with some predefined environment variables. Check out
+a sample [Dockerfile](https://github.com/Redocly/redoc/blob/master/config/docker/Dockerfile)
+in our code repo.
\ No newline at end of file
diff --git a/docs/quickstart/html.md b/docs/quickstart/html.md
new file mode 100644
index 00000000..bfc8d267
--- /dev/null
+++ b/docs/quickstart/html.md
@@ -0,0 +1,214 @@
+---
+title: Using the Redoc HTML element
+---
+
+# Using the Redoc HTML element
+
+## TL;DR final code example
+
+```html
+
+
+
+ Redoc
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+:::attention Running Redoc locally requires an HTTP server
+Loading local OpenAPI definitions is impossible without running a web server because of issues with
+[same-origin policy](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy) and
+other security reasons.
+:::
+
+### Running Redoc locally
+
+If you want to view your Redoc output locally, you can simulate an HTTP server.
+
+#### Using Redocly OpenAPI CLI
+
+Redocly OpenAPI CLI is an open source command-line tool that includes a command
+for simulating an HTTP server to provide a preview of your OpenAPI definition locally.
+
+If you have [OpenAPI CLI](https://redoc.ly/docs/cli/#installation-and-usage) installed, `cd` into your
+project directory and run the following command:
+
+```bash
+openapi preview-docs openapi.yaml
+```
+
+By default, without providing a port, the preview starts on port 8080, and can be accessed at `http://localhost:8080`.
+To exit the preview, use `control+C`.
+
+#### Using Python
+
+If you have [Python 3](https://www.python.org/downloads/) installed, `cd` into your
+project directory and run the following command:
+
+```python
+python3 -m http.server
+```
+
+If you have [Python 2](https://www.python.org/downloads/) installed, `cd` into your
+project directory and run the following command:
+
+```python
+python -m SimpleHTTPServer 8000
+```
+
+The output after entering the command provides the local URL where the preview can be accessed.
+To exit the preview, use `control-C`.
+
+#### Using Node.js
+
+If you have [Node.js](https://nodejs.org/en/download/) installed, install `http-server`
+using the following npm command:
+
+```bash
+npm install -g http-server
+```
+
+Then, `cd` into your project directory and run the following command:
+
+```node
+http-server
+```
+
+The output after entering the command provides the local URL where the preview can be accessed.
+To exit the preview, use `control-C`.
+
+## Step 1 - Install Redoc
+
+You can install Redoc using one of the following package managers:
+
+- [npm](https://docs.npmjs.com/about-npm)
+- [yarn](https://classic.yarnpkg.com/en/docs/getting-started)
+
+:::attention Initialize your package manager
+If you do not have a `package.json` file in your project directory,
+you need to add one by initializing npm or yarn in your project. Use the command `npm init` for npm,
+or `yarn init` for yarn. These initialization commands will lead you through the process
+of creating a `package.json` file in your project.
+
+For more information, see
+[Creating a package.json file](https://docs.npmjs.com/creating-a-package-json-file)
+in the npm documentation or [Yarn init](https://classic.yarnpkg.com/en/docs/cli/init/)
+in the yarn documentation.
+
+:::
+
+### Install Redoc with yarn
+
+After navigating to your project directory in your terminal, use the following command:
+
+```bash
+yarn add redoc
+```
+
+### Install Redoc with npm
+
+After navigating to your project directory in your terminal, use the following command:
+
+```bash
+npm i redoc
+```
+
+## Step 2 - Reference the Redoc script
+
+You can reference the Redoc script using either a link to the files hosted on a CDN
+or the files located in your `node modules` folder.
+
+### CDN link
+
+To reference the Redoc script with a CDN link:
+
+```html
+
+```
+
+### Node modules link
+
+To reference the Redoc script with a node modules link:
+
+```html
+
+```
+
+## Step 3 - Add the element
+
+You can add the element to your HTML page and reference your OpenAPI
+definition using the `spec-url` attribute, or you can initialize Redoc using
+a globally exposed Redoc object.
+
+### Using the `spec-url` attribute
+
+To add the element with the `spec-url` attribute:
+
+```html
+
+```
+
+#### Examples
+
+```html
+
+```
+
+You can also use a local file (JSON or YAML) in your project, for instance:
+
+```html
+
+```
+
+### Using a Redoc object
+
+To add the element with a globally exposed Redoc object:
+
+```js
+Redoc.init(specOrSpecUrl, options, element, callback)
+```
+- `specOrSpecUrl`: Either a JSON object with the OpenAPI definition or a URL to the
+ definition in JSON or YAML format.
+- `options`: See [options object](https://redoc.ly/docs/api-reference-docs/configuration/) reference.
+- `element`: DOM element Redoc will be inserted into.
+- `callback`(optional): Callback to be called after Redoc has been fully rendered.
+ It is also called on errors with `error` as the first argument.
+
+#### Examples
+
+```html
+
+```
+
+You can also use a local file (JSON or YAML) in your project, for instance:
+
+```html
+
+```
\ No newline at end of file
diff --git a/docs/quickstart/intro.md b/docs/quickstart/intro.md
new file mode 100644
index 00000000..e23f9d00
--- /dev/null
+++ b/docs/quickstart/intro.md
@@ -0,0 +1,44 @@
+---
+title: Redoc quickstart guide
+---
+
+# Redoc quickstart guide
+
+This guide includes step-by-step instructions for how to get started using
+Redoc to render your OpenAPI definition.
+
+Redoc offers multiple options for rendering your OpenAPI definition.
+You should select the option that best fits your needs.
+
+The following options are supported:
+
+- **[Live demo](https://redocly.github.io/redoc/):**
+ The live demo offers a fast way to see how your OpenAPI will render with Redoc.
+- **[HTML element](./html.md):**
+ Using the HTML element works well for typical website deployments.
+- **[React component](./react.md):**
+ Using the React component is an option for users with a React-based application.
+- **[Docker image](./docker.md):**
+ Using the Docker image works in a container-based deployment.
+- **[CLI](./cli.md):**
+ Using the CLI is an option for users who prefer to use a command-line interface.
+
+## Before you start
+
+You will need an OpenAPI definition. For testing purposes, you can use one of the following sample OpenAPI definitions:
+- OpenAPI 3.0
+ - [Rebilly Users OpenAPI Definition](https://raw.githubusercontent.com/Rebilly/api-definitions/main/openapi/users.yaml)
+ - [Swagger Petstore Sample OpenAPI Definition](https://petstore3.swagger.io/api/v3/openapi.json)
+- OpenAPI 2.0
+ - [Thingful OpenAPI Definition](https://raw.githubusercontent.com/thingful/openapi-spec/master/spec/swagger.yaml)
+ - [Fitbit Plus OpenAPI Definition](https://raw.githubusercontent.com/TwineHealth/TwineDeveloperDocs/master/spec/swagger.yaml)
+
+For more information on the OpenAPI specification, refer to the [Learning OpenAPI 3](https://redoc.ly/docs/resources/learning-openapi/)
+section in the documentation.
+
+## Live demo online
+
+If you want to see how ReDoc will render your OpenAPI definition, you can try it out online at https://redocly.github.io/redoc/.
+
+A version of the Swagger Petstore API is displayed by default. To test it with your own OpenAPI definition, enter the URL for your
+definition and select the **TRY IT** button.
diff --git a/docs/quickstart/react.md b/docs/quickstart/react.md
new file mode 100644
index 00000000..ebc19845
--- /dev/null
+++ b/docs/quickstart/react.md
@@ -0,0 +1,78 @@
+---
+title: Using the Redoc React component
+---
+
+# Using the Redoc React component
+
+## Before you start
+
+Install the following dependencies required by Redoc if you do not already have them installed:
+
+- `react`
+- `react-dom`
+- `mobx`
+- `styled-components`
+- `core-js`
+
+If you have npm installed, you can install these dependencies using the following command:
+
+```js
+npm i react react-dom mobx styled-components core-js
+```
+
+## Step 1 - Import the `RedocStandalone` component
+
+```js
+import { RedocStandalone } from 'redoc';
+```
+
+## Step 2 - Use the component
+
+You can either link to your OpenAPI definition with a URL, using the following format:
+
+```react
+
+```
+
+Or you can pass your OpenAPI definition as an object, using the following format:
+
+```js
+
+```
+
+## Optional - Pass options
+
+Options can be passed into the RedocStandalone component to alter how it renders.
+
+For example:
+
+```js
+
+```
+
+For more information on configuration options, refer to the
+[Configuration options for Reference docs](https://redoc.ly/docs/api-reference-docs/configuration/)
+section of the documentation. Options available for Redoc are noted,
+"Supported in Redoc CE".
+
+## Optional - Specify `onLoaded` callback
+
+You can also specify the `onLoaded` callback, which is called each time Redoc
+is fully rendered or when an error occurs (with an error as the first argument).
+
+```js
+ {
+ if (!error) {
+ console.log('Yay!');
+ }
+ }}
+/>
+```
diff --git a/docs/sidebars.yaml b/docs/sidebars.yaml
new file mode 100644
index 00000000..2189f25b
--- /dev/null
+++ b/docs/sidebars.yaml
@@ -0,0 +1,13 @@
+redoc:
+ - group: Quickstart
+ expanded: false
+ page: redoc/quickstart/intro.md
+ pages:
+ - label: HTML element
+ page: redoc/quickstart/html.md
+ - label: React component
+ page: redoc/quickstart/react.md
+ - label: Docker image
+ page: redoc/quickstart/docker.md
+ - label: Command-line interface
+ page: redoc/quickstart/cli.md
\ No newline at end of file
diff --git a/e2e/integration/menu.e2e.ts b/e2e/integration/menu.e2e.ts
index e1b053d1..533fb0ea 100644
--- a/e2e/integration/menu.e2e.ts
+++ b/e2e/integration/menu.e2e.ts
@@ -25,6 +25,29 @@ describe('Menu', () => {
.should('be.visible');
});
+ it('should sync active menu items while scroll back and scroll again', () => {
+ cy.contains('h2', 'Add a new pet to the store')
+ .scrollIntoView()
+ .wait(100)
+ .get('[role=menuitem].active')
+ .children()
+ .last()
+ .should('have.text', 'Add a new pet to the store')
+ .should('be.visible');
+
+ cy.contains('h1', 'Swagger Petstore')
+ .scrollIntoView()
+ .wait(100)
+
+ cy.contains('h1', 'Introduction')
+ .scrollIntoView()
+ .wait(100)
+ .get('[role=menuitem].active')
+ .should('have.text', 'Introduction');
+
+ cy.url().should('include', '#section/Introduction');
+ });
+
it('should update URL hash when clicking on menu items', () => {
cy.contains('[role=menuitem].-depth1', 'pet').click({ force: true });
cy.location('hash').should('equal', '#tag/pet');
diff --git a/package-lock.json b/package-lock.json
index 5601ef16..41b9dcc2 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,17 +1,16 @@
{
"name": "redoc",
- "version": "2.0.0-rc.55",
+ "version": "2.0.0-rc.56",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
- "version": "2.0.0-rc.55",
+ "version": "2.0.0-rc.56",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.14.0",
- "@redocly/openapi-core": "^1.0.0-beta.50",
+ "@redocly/openapi-core": "^1.0.0-beta.54",
"@redocly/react-dropdown-aria": "^2.0.11",
- "@types/node": "^15.6.1",
"classnames": "^2.3.1",
"decko": "^1.2.0",
"dompurify": "^2.2.8",
@@ -26,7 +25,7 @@
"path-browserify": "^1.0.1",
"perfect-scrollbar": "^1.5.1",
"polished": "^4.1.3",
- "prismjs": "^1.24.0",
+ "prismjs": "^1.24.1",
"prop-types": "^15.7.2",
"react-tabs": "^3.2.2",
"slugify": "~1.4.7",
@@ -59,6 +58,7 @@
"@types/lunr": "^2.3.3",
"@types/mark.js": "^8.11.5",
"@types/marked": "^1.1.0",
+ "@types/node": "^15.6.1",
"@types/prismjs": "^1.16.5",
"@types/prop-types": "^15.7.3",
"@types/react": "^17.0.8",
@@ -2672,13 +2672,13 @@
}
},
"node_modules/@redocly/ajv": {
- "version": "6.12.4",
- "resolved": "https://registry.npmjs.org/@redocly/ajv/-/ajv-6.12.4.tgz",
- "integrity": "sha512-RB6vWO78v6c+SW/3bZh+XZMr4nGdJKAiPGsBALuUZnLuCiQ7aXCT1AuFHqnfS2gyXbEUEj+kw8p4ux8KdAfs3A==",
+ "version": "8.6.2",
+ "resolved": "https://registry.npmjs.org/@redocly/ajv/-/ajv-8.6.2.tgz",
+ "integrity": "sha512-tU8fQs0D76ZKhJ2cWtnfQthWqiZgGBx0gH0+5D8JvaBEBaqA8foPPBt3Nonwr3ygyv5xrw2IzKWgIY86BlGs+w==",
"dependencies": {
"fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
"uri-js": "^4.2.2"
},
"funding": {
@@ -2686,12 +2686,17 @@
"url": "https://github.com/sponsors/epoberezkin"
}
},
+ "node_modules/@redocly/ajv/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
+ },
"node_modules/@redocly/openapi-core": {
- "version": "1.0.0-beta.50",
- "resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-1.0.0-beta.50.tgz",
- "integrity": "sha512-GuXn4IETxpbRd8dlAQDQPtvqOpbMvPMeC/e5mv5MOXkLIznNk4vjiQVe6QSCbZbCHzzpb2+89B6S7asebPm4Rg==",
+ "version": "1.0.0-beta.54",
+ "resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-1.0.0-beta.54.tgz",
+ "integrity": "sha512-uYs0N1Trjkh7u8IMIuCU2VxCXhMyGWSZUkP/WNdTR1OgBUtvNdF9C32zoQV+hyCIH4gVu42ROHkjisy333ZX+w==",
"dependencies": {
- "@redocly/ajv": "^6.12.3",
+ "@redocly/ajv": "^8.6.2",
"@types/node": "^14.11.8",
"colorette": "^1.2.0",
"js-levenshtein": "^1.1.6",
@@ -3038,7 +3043,8 @@
"node_modules/@types/node": {
"version": "15.12.2",
"resolved": "https://registry.npmjs.org/@types/node/-/node-15.12.2.tgz",
- "integrity": "sha512-zjQ69G564OCIWIOHSXyQEEDpdpGl+G348RAKY0XXy9Z5kU9Vzv1GMNnkar/ZJ8dzXB3COzD9Mo9NtRZ4xfgUww=="
+ "integrity": "sha512-zjQ69G564OCIWIOHSXyQEEDpdpGl+G348RAKY0XXy9Z5kU9Vzv1GMNnkar/ZJ8dzXB3COzD9Mo9NtRZ4xfgUww==",
+ "dev": true
},
"node_modules/@types/normalize-package-data": {
"version": "2.4.0",
@@ -8358,7 +8364,8 @@
"node_modules/fast-json-stable-stringify": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true
},
"node_modules/fast-levenshtein": {
"version": "2.0.6",
@@ -13267,7 +13274,8 @@
"node_modules/json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
},
"node_modules/json-stable-stringify-without-jsonify": {
"version": "1.0.1",
@@ -15962,9 +15970,9 @@
}
},
"node_modules/prismjs": {
- "version": "1.24.0",
- "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.24.0.tgz",
- "integrity": "sha512-SqV5GRsNqnzCL8k5dfAjCNhUrF3pR0A9lTDSCUZeh/LIshheXJEaP0hwLz2t4XHivd2J/v2HR+gRnigzeKe3cQ=="
+ "version": "1.24.1",
+ "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.24.1.tgz",
+ "integrity": "sha512-mNPsedLuk90RVJioIky8ANZEwYm5w9LcvCXrxHlwf4fNVSn8jEipMybMkWUyyF0JhnC+C4VcOVSBuHRKs1L5Ow=="
},
"node_modules/process": {
"version": "0.11.10",
@@ -16757,7 +16765,6 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
- "dev": true,
"engines": {
"node": ">=0.10.0"
}
@@ -22961,22 +22968,29 @@
}
},
"@redocly/ajv": {
- "version": "6.12.4",
- "resolved": "https://registry.npmjs.org/@redocly/ajv/-/ajv-6.12.4.tgz",
- "integrity": "sha512-RB6vWO78v6c+SW/3bZh+XZMr4nGdJKAiPGsBALuUZnLuCiQ7aXCT1AuFHqnfS2gyXbEUEj+kw8p4ux8KdAfs3A==",
+ "version": "8.6.2",
+ "resolved": "https://registry.npmjs.org/@redocly/ajv/-/ajv-8.6.2.tgz",
+ "integrity": "sha512-tU8fQs0D76ZKhJ2cWtnfQthWqiZgGBx0gH0+5D8JvaBEBaqA8foPPBt3Nonwr3ygyv5xrw2IzKWgIY86BlGs+w==",
"requires": {
"fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
"uri-js": "^4.2.2"
+ },
+ "dependencies": {
+ "json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
+ }
}
},
"@redocly/openapi-core": {
- "version": "1.0.0-beta.50",
- "resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-1.0.0-beta.50.tgz",
- "integrity": "sha512-GuXn4IETxpbRd8dlAQDQPtvqOpbMvPMeC/e5mv5MOXkLIznNk4vjiQVe6QSCbZbCHzzpb2+89B6S7asebPm4Rg==",
+ "version": "1.0.0-beta.54",
+ "resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-1.0.0-beta.54.tgz",
+ "integrity": "sha512-uYs0N1Trjkh7u8IMIuCU2VxCXhMyGWSZUkP/WNdTR1OgBUtvNdF9C32zoQV+hyCIH4gVu42ROHkjisy333ZX+w==",
"requires": {
- "@redocly/ajv": "^6.12.3",
+ "@redocly/ajv": "^8.6.2",
"@types/node": "^14.11.8",
"colorette": "^1.2.0",
"js-levenshtein": "^1.1.6",
@@ -23312,7 +23326,8 @@
"@types/node": {
"version": "15.12.2",
"resolved": "https://registry.npmjs.org/@types/node/-/node-15.12.2.tgz",
- "integrity": "sha512-zjQ69G564OCIWIOHSXyQEEDpdpGl+G348RAKY0XXy9Z5kU9Vzv1GMNnkar/ZJ8dzXB3COzD9Mo9NtRZ4xfgUww=="
+ "integrity": "sha512-zjQ69G564OCIWIOHSXyQEEDpdpGl+G348RAKY0XXy9Z5kU9Vzv1GMNnkar/ZJ8dzXB3COzD9Mo9NtRZ4xfgUww==",
+ "dev": true
},
"@types/normalize-package-data": {
"version": "2.4.0",
@@ -27480,7 +27495,8 @@
"fast-json-stable-stringify": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true
},
"fast-levenshtein": {
"version": "2.0.6",
@@ -31180,7 +31196,8 @@
"json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
},
"json-stable-stringify-without-jsonify": {
"version": "1.0.1",
@@ -33230,9 +33247,9 @@
}
},
"prismjs": {
- "version": "1.24.0",
- "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.24.0.tgz",
- "integrity": "sha512-SqV5GRsNqnzCL8k5dfAjCNhUrF3pR0A9lTDSCUZeh/LIshheXJEaP0hwLz2t4XHivd2J/v2HR+gRnigzeKe3cQ=="
+ "version": "1.24.1",
+ "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.24.1.tgz",
+ "integrity": "sha512-mNPsedLuk90RVJioIky8ANZEwYm5w9LcvCXrxHlwf4fNVSn8jEipMybMkWUyyF0JhnC+C4VcOVSBuHRKs1L5Ow=="
},
"process": {
"version": "0.11.10",
@@ -33869,8 +33886,7 @@
"require-from-string": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
- "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
- "dev": true
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="
},
"require-main-filename": {
"version": "2.0.0",
diff --git a/package.json b/package.json
index 6f85f321..b4fb9912 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "redoc",
- "version": "2.0.0-rc.55",
+ "version": "2.0.0-rc.56",
"description": "ReDoc",
"repository": {
"type": "git",
@@ -79,6 +79,7 @@
"@types/json-pointer": "^1.0.30",
"@types/lodash": "^4.14.170",
"@types/lunr": "^2.3.3",
+ "@types/node": "^15.6.1",
"@types/mark.js": "^8.11.5",
"@types/marked": "^1.1.0",
"@types/prismjs": "^1.16.5",
@@ -146,9 +147,8 @@
},
"dependencies": {
"@babel/runtime": "^7.14.0",
- "@redocly/openapi-core": "^1.0.0-beta.50",
+ "@redocly/openapi-core": "^1.0.0-beta.54",
"@redocly/react-dropdown-aria": "^2.0.11",
- "@types/node": "^15.6.1",
"classnames": "^2.3.1",
"decko": "^1.2.0",
"dompurify": "^2.2.8",
@@ -163,7 +163,7 @@
"path-browserify": "^1.0.1",
"perfect-scrollbar": "^1.5.1",
"polished": "^4.1.3",
- "prismjs": "^1.24.0",
+ "prismjs": "^1.24.1",
"prop-types": "^15.7.2",
"react-tabs": "^3.2.2",
"slugify": "~1.4.7",
diff --git a/src/components/ApiInfo/ApiInfo.tsx b/src/components/ApiInfo/ApiInfo.tsx
index ae4b4b20..6debaf7e 100644
--- a/src/components/ApiInfo/ApiInfo.tsx
+++ b/src/components/ApiInfo/ApiInfo.tsx
@@ -14,6 +14,7 @@ import {
InfoSpanBox,
InfoSpanBoxWrap,
} from './styled.elements';
+import { l } from '../../services/Labels';
export interface ApiInfoProps {
store: AppStore;
@@ -79,14 +80,14 @@ export class ApiInfo extends React.Component {
{!hideDownloadButton && (