Showing preview only (2,142K chars total). Download the full file or copy to clipboard to get everything.
Repository: Redocly/redoc
Branch: main
Commit: d41fd46f7cbe
Files: 306
Total size: 2.0 MB
Directory structure:
gitextract_80j5pnbk/
├── .dockerignore
├── .editorconfig
├── .eslintrc.js
├── .github/
│ ├── CODEOWNERS
│ ├── CONTRIBUTING.md
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.md
│ │ └── feature_request.md
│ ├── pull_request_template.md
│ ├── styles/
│ │ ├── Rules/
│ │ │ ├── BritishEnglish.yml
│ │ │ ├── FutureTense.yml
│ │ │ ├── HeaderGerunds.yml
│ │ │ ├── InclusionGenderCulture.yml
│ │ │ └── OxfordComma.yml
│ │ └── config/
│ │ └── vocabularies/
│ │ └── Rules/
│ │ ├── accept.txt
│ │ └── reject.txt
│ └── workflows/
│ ├── docs-tests.yaml
│ ├── e2e-tests.yml
│ ├── main.yml
│ ├── publish.yml
│ └── unit-tests.yml
├── .gitignore
├── .husky/
│ └── pre-commit
├── .markdownlint.yaml
├── .mlc.toml
├── .npmignore
├── .prettierignore
├── .vale.ini
├── CHANGELOG.md
├── LICENSE
├── README.md
├── benchmark/
│ ├── benchmark.js
│ ├── index.html
│ └── index.tsx
├── config/
│ ├── docker/
│ │ ├── Dockerfile
│ │ ├── README.md
│ │ ├── docker-run.sh
│ │ ├── hooks/
│ │ │ └── build
│ │ ├── index.tpl.html
│ │ └── nginx.conf
│ └── webpack-utils.ts
├── custom.d.ts
├── cypress.config.ts
├── demo/
│ ├── ComboBox.tsx
│ ├── big-openapi.json
│ ├── components/
│ │ └── FileInput.tsx
│ ├── index.html
│ ├── index.tsx
│ ├── museum.yaml
│ ├── openapi-3-1.yaml
│ ├── openapi.yaml
│ ├── playground/
│ │ ├── hmr-playground.tsx
│ │ └── index.html
│ ├── ssr/
│ │ └── index.ts
│ ├── swagger.yaml
│ └── webpack.config.ts
├── docs/
│ ├── config.md
│ ├── deployment/
│ │ ├── cli.md
│ │ ├── docker.md
│ │ ├── html.md
│ │ ├── intro.md
│ │ └── react.md
│ ├── index.md
│ ├── quickstart.md
│ ├── redoc-vendor-extensions.md
│ └── security-definitions-injection.md
├── e2e/
│ ├── e2e.html
│ ├── index.html
│ ├── integration/
│ │ ├── menu.e2e.ts
│ │ ├── misc.e2e.ts
│ │ ├── search.e2e.ts
│ │ ├── standalone.e2e.ts
│ │ └── urls.e2e.ts
│ ├── plugins/
│ │ ├── cy-ts-preprocessor.js
│ │ └── index.js
│ ├── standalone-3-1.html
│ ├── standalone-compatibility.html
│ ├── standalone.html
│ └── tsconfig.json
├── package.json
├── scripts/
│ ├── invalidate-cache.sh
│ ├── publish-cdn.sh
│ └── version.js
├── src/
│ ├── __tests__/
│ │ ├── ssr.test.tsx
│ │ └── standalone.test.tsx
│ ├── common-elements/
│ │ ├── CopyButtonWrapper.tsx
│ │ ├── Dropdown/
│ │ │ ├── Dropdown.tsx
│ │ │ ├── index.ts
│ │ │ ├── styled.ts
│ │ │ └── types.ts
│ │ ├── PrismDiv.tsx
│ │ ├── Tooltip.tsx
│ │ ├── fields-layout.ts
│ │ ├── fields.ts
│ │ ├── headers.ts
│ │ ├── index.ts
│ │ ├── linkify.tsx
│ │ ├── mixins.ts
│ │ ├── panels.ts
│ │ ├── perfect-scrollbar.tsx
│ │ ├── samples.tsx
│ │ ├── schema.ts
│ │ ├── shelfs.tsx
│ │ └── tabs.ts
│ ├── components/
│ │ ├── ApiInfo/
│ │ │ ├── ApiInfo.tsx
│ │ │ ├── index.ts
│ │ │ └── styled.elements.ts
│ │ ├── ApiLogo/
│ │ │ ├── ApiLogo.tsx
│ │ │ └── styled.elements.tsx
│ │ ├── CallbackSamples/
│ │ │ ├── CallbackReqSamples.tsx
│ │ │ └── CallbackSamples.tsx
│ │ ├── Callbacks/
│ │ │ ├── CallbackDetails.tsx
│ │ │ ├── CallbackOperation.tsx
│ │ │ ├── CallbackTitle.tsx
│ │ │ ├── CallbacksList.tsx
│ │ │ ├── index.ts
│ │ │ └── styled.elements.ts
│ │ ├── ContentItems/
│ │ │ └── ContentItems.tsx
│ │ ├── DropdownOrLabel/
│ │ │ └── DropdownOrLabel.tsx
│ │ ├── Endpoint/
│ │ │ ├── Endpoint.tsx
│ │ │ └── styled.elements.ts
│ │ ├── ErrorBoundary.tsx
│ │ ├── ExternalDocumentation/
│ │ │ └── ExternalDocumentation.tsx
│ │ ├── Fields/
│ │ │ ├── ArrayItemDetails.tsx
│ │ │ ├── EnumValues.tsx
│ │ │ ├── Examples.tsx
│ │ │ ├── Extensions.tsx
│ │ │ ├── Field.tsx
│ │ │ ├── FieldConstraints.tsx
│ │ │ ├── FieldDetail.tsx
│ │ │ ├── FieldDetails.tsx
│ │ │ └── Pattern.tsx
│ │ ├── GenericChildrenSwitcher/
│ │ │ └── GenericChildrenSwitcher.tsx
│ │ ├── JsonViewer/
│ │ │ ├── JsonViewer.tsx
│ │ │ ├── index.tsx
│ │ │ └── style.ts
│ │ ├── Loading/
│ │ │ ├── Loading.tsx
│ │ │ └── Spinner.svg.tsx
│ │ ├── Markdown/
│ │ │ ├── AdvancedMarkdown.tsx
│ │ │ ├── Markdown.tsx
│ │ │ ├── SanitizedMdBlock.tsx
│ │ │ └── styled.elements.tsx
│ │ ├── MediaTypeSwitch/
│ │ │ └── MediaTypesSwitch.tsx
│ │ ├── Operation/
│ │ │ └── Operation.tsx
│ │ ├── OptionsProvider.ts
│ │ ├── Parameters/
│ │ │ ├── Parameters.tsx
│ │ │ └── ParametersGroup.tsx
│ │ ├── PayloadSamples/
│ │ │ ├── Example.tsx
│ │ │ ├── ExampleValue.tsx
│ │ │ ├── MediaTypeSamples.tsx
│ │ │ ├── PayloadSamples.tsx
│ │ │ ├── exernalExampleHook.ts
│ │ │ └── styled.elements.ts
│ │ ├── Redoc/
│ │ │ ├── Redoc.tsx
│ │ │ └── styled.elements.tsx
│ │ ├── RedocStandalone.tsx
│ │ ├── RequestSamples/
│ │ │ └── RequestSamples.tsx
│ │ ├── ResponseSamples/
│ │ │ └── ResponseSamples.tsx
│ │ ├── Responses/
│ │ │ ├── Response.tsx
│ │ │ ├── ResponseDetails.tsx
│ │ │ ├── ResponseHeaders.tsx
│ │ │ ├── ResponseTitle.tsx
│ │ │ ├── ResponsesList.tsx
│ │ │ └── styled.elements.ts
│ │ ├── Schema/
│ │ │ ├── ArraySchema.tsx
│ │ │ ├── DiscriminatorDropdown.tsx
│ │ │ ├── ObjectSchema.tsx
│ │ │ ├── OneOfSchema.tsx
│ │ │ ├── RecursiveSchema.tsx
│ │ │ ├── Schema.tsx
│ │ │ └── index.ts
│ │ ├── SchemaDefinition/
│ │ │ └── SchemaDefinition.tsx
│ │ ├── SearchBox/
│ │ │ ├── SearchBox.tsx
│ │ │ └── styled.elements.tsx
│ │ ├── SecurityRequirement/
│ │ │ ├── OAuthFlow.tsx
│ │ │ ├── RequiredScopesRow.tsx
│ │ │ ├── SecurityDetails.tsx
│ │ │ ├── SecurityHeader.tsx
│ │ │ ├── SecurityRequirement.tsx
│ │ │ └── styled.elements.ts
│ │ ├── SecuritySchemes/
│ │ │ └── SecuritySchemes.tsx
│ │ ├── SeeMore/
│ │ │ └── SeeMore.tsx
│ │ ├── SelectOnClick/
│ │ │ └── SelectOnClick.tsx
│ │ ├── SideMenu/
│ │ │ ├── Logo.tsx
│ │ │ ├── MenuItem.tsx
│ │ │ ├── MenuItems.tsx
│ │ │ ├── SideMenu.tsx
│ │ │ ├── index.ts
│ │ │ └── styled.elements.ts
│ │ ├── SourceCode/
│ │ │ └── SourceCode.tsx
│ │ ├── StickySidebar/
│ │ │ ├── ChevronSvg.tsx
│ │ │ └── StickyResponsiveSidebar.tsx
│ │ ├── StoreBuilder.ts
│ │ ├── __tests__/
│ │ │ ├── Callbacks.test.tsx
│ │ │ ├── DiscriminatorDropdown.test.tsx
│ │ │ ├── FieldDetails.test.tsx
│ │ │ ├── JsonViewer.tsx
│ │ │ ├── OneOfSchema.test.tsx
│ │ │ ├── Schema.test.tsx
│ │ │ ├── SchemaDefinition.test.tsx
│ │ │ ├── SecurityRequirement.test.tsx
│ │ │ ├── __snapshots__/
│ │ │ │ ├── DiscriminatorDropdown.test.tsx.snap
│ │ │ │ ├── FieldDetails.test.tsx.snap
│ │ │ │ ├── OneOfSchema.test.tsx.snap
│ │ │ │ └── SecurityRequirement.test.tsx.snap
│ │ │ └── fixtures/
│ │ │ ├── simple-callback.json
│ │ │ ├── simple-discriminator.json
│ │ │ └── simple-security-fixture.json
│ │ ├── index.ts
│ │ └── testProviders.tsx
│ ├── empty.js
│ ├── index.ts
│ ├── polyfills.ts
│ ├── services/
│ │ ├── AppStore.ts
│ │ ├── ClipboardService.ts
│ │ ├── HistoryService.ts
│ │ ├── Labels.ts
│ │ ├── MarkdownRenderer.ts
│ │ ├── MarkerService.ts
│ │ ├── MenuBuilder.ts
│ │ ├── MenuStore.ts
│ │ ├── OpenAPIParser.ts
│ │ ├── RedocNormalizedOptions.ts
│ │ ├── ScrollService.ts
│ │ ├── SearchStore.ts
│ │ ├── SearchWorker.worker.ts
│ │ ├── SpecStore.ts
│ │ ├── __tests__/
│ │ │ ├── MarkdownRenderer.test.ts
│ │ │ ├── MarkerService.test.ts
│ │ │ ├── OpenAPIParser.test.ts
│ │ │ ├── __snapshots__/
│ │ │ │ ├── OpenAPIParser.test.ts.snap
│ │ │ │ └── prism.test.ts.snap
│ │ │ ├── fixtures/
│ │ │ │ ├── 3.1/
│ │ │ │ │ ├── conditionalField.json
│ │ │ │ │ ├── conditionalSchema.json
│ │ │ │ │ ├── pathItems.json
│ │ │ │ │ ├── patternProperties.json
│ │ │ │ │ ├── prefixItems.json
│ │ │ │ │ ├── schemaDefinition.json
│ │ │ │ │ └── unevaluatedProperties.json
│ │ │ │ ├── arrayItems.json
│ │ │ │ ├── callback.json
│ │ │ │ ├── discriminator.json
│ │ │ │ ├── fields.json
│ │ │ │ ├── mergeAllOf.json
│ │ │ │ ├── nestedEnumDescroptionSample.json
│ │ │ │ ├── oneOfHoist.json
│ │ │ │ ├── oneOfTitles.json
│ │ │ │ └── siblingRefDescription.json
│ │ │ ├── history.service.test.ts
│ │ │ ├── models/
│ │ │ │ ├── ApiInfo.test.ts
│ │ │ │ ├── Callback.test.ts
│ │ │ │ ├── FieldModel.test.ts
│ │ │ │ ├── MenuBuilder.test.ts
│ │ │ │ ├── RequestBody.test.ts
│ │ │ │ ├── Response.test.ts
│ │ │ │ ├── Schema.circular.test.ts
│ │ │ │ ├── Schema.test.ts
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ └── Schema.test.ts.snap
│ │ │ │ └── helpers.ts
│ │ │ └── prism.test.ts
│ │ ├── index.ts
│ │ ├── models/
│ │ │ ├── ApiInfo.ts
│ │ │ ├── Callback.ts
│ │ │ ├── Example.ts
│ │ │ ├── Field.ts
│ │ │ ├── Group.model.ts
│ │ │ ├── MediaContent.ts
│ │ │ ├── MediaType.ts
│ │ │ ├── Operation.ts
│ │ │ ├── RequestBody.ts
│ │ │ ├── Response.ts
│ │ │ ├── Schema.ts
│ │ │ ├── SecurityRequirement.ts
│ │ │ ├── SecuritySchemes.ts
│ │ │ ├── Webhook.ts
│ │ │ └── index.ts
│ │ └── types.ts
│ ├── setupTests.ts
│ ├── standalone.tsx
│ ├── styled-components.ts
│ ├── theme.ts
│ ├── types/
│ │ ├── index.ts
│ │ └── open-api.ts
│ └── utils/
│ ├── JsonPointer.ts
│ ├── __tests__/
│ │ ├── __snapshots__/
│ │ │ └── loadAndBundleSpec.test.ts.snap
│ │ ├── helpers.test.ts
│ │ ├── loadAndBundleSpec.test.ts
│ │ ├── object.test.ts
│ │ └── openapi.test.ts
│ ├── debug.ts
│ ├── decorators.ts
│ ├── dom.ts
│ ├── helpers.ts
│ ├── highlight.ts
│ ├── index.ts
│ ├── jsonToHtml.ts
│ ├── loadAndBundleSpec.ts
│ ├── memoize.ts
│ ├── object.ts
│ ├── openapi.ts
│ ├── sort.ts
│ └── test-utils.ts
├── tsconfig.json
├── tsconfig.lib.json
├── tslint.json
├── typings/
│ └── styled-patch.d.ts
└── webpack.config.ts
================================================
FILE CONTENTS
================================================
================================================
FILE: .dockerignore
================================================
*
!src/
!config
!demo/favicon.png
!custom.d.ts
!typings/styled-patch.d.ts
!tsconfig.json
!webpack.config.ts
!package.json
!package-lock.json
================================================
FILE: .editorconfig
================================================
root = true
[*]
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
indent_style = space
indent_size = 2
trim_trailing_whitespace = true
================================================
FILE: .eslintrc.js
================================================
module.exports = {
env: {
browser: true,
},
parser: '@typescript-eslint/parser',
extends: ['plugin:react/recommended', 'plugin:@typescript-eslint/recommended'],
parserOptions: {
project: 'tsconfig.json',
sourceType: 'module',
createDefaultProgram: true,
ecmaFeatures: {
jsx: true,
},
},
settings: {
react: {
version: 'detect',
},
},
plugins: ['react', 'react-hooks', '@typescript-eslint', 'import'],
rules: {
'@typescript-eslint/explicit-function-return-type': 'off',
'@typescript-eslint/explicit-module-boundary-types': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-use-before-define': 'off',
'@typescript-eslint/interface-name-prefix': 'off',
'@typescript-eslint/no-inferrable-types': 'off',
'@typescript-eslint/no-non-null-assertion': 'off',
'@typescript-eslint/ban-ts-ignore': 'off',
'@typescript-eslint/ban-types': ['error', { types: { object: false }, extendDefaults: true }],
'@typescript-eslint/no-var-requires': 'off',
'react/prop-types': 'off',
'react-hooks/rules-of-hooks': 'error',
'react-hooks/exhaustive-deps': 'warn',
'import/no-extraneous-dependencies': 'error',
'import/no-internal-modules': [
'error',
{
allow: [
'prismjs/**',
'perfect-scrollbar/**',
'react-dom/*',
'core-js/**',
'memoize-one/**',
'unfetch/**',
'raf/polyfill',
'**/fixtures/**', // for tests
],
},
],
},
};
================================================
FILE: .github/CODEOWNERS
================================================
* @Redocly/keyboard-warriors
/docs/ @Redocly/technical-writers
================================================
FILE: .github/CONTRIBUTING.md
================================================
# Redoc Contributing Guide
Hi! We're really excited that you are interested in contributing to Redoc. Before submitting your contribution though, please make sure to take a moment and read through the following guidelines.
- [Redoc Contributing Guide](#redoc-contributing-guide)
- [Issue Reporting Guidelines](#issue-reporting-guidelines)
- [Pull Request Guidelines](#pull-request-guidelines)
- [Development Setup](#development-setup)
- [Commonly used NPM scripts](#commonly-used-npm-scripts)
- [Project Structure](#project-structure)
## Issue Reporting Guidelines
- Before filing a new issue, try to make sure your problem doesn’t already exist.
- The best way to get your bug fixed is to provide a reduced test case.
## Pull Request Guidelines
Before submitting a pull request, please make sure the following is done:
1. Fork the repository and create your branch from main.
2. Run `npm install` in the repository root.
3. If you’ve fixed a bug or added code that should be tested, add tests!
4. Ensure the test suite passes (`npm test`). Tip: `npm test -- --watch TestName` is helpful in development.
5. Format your code with prettier (`npm run prettier`).
## Development Setup
You need [Node.js](http://nodejs.org) at `v12.0.0+`.
After cloning the repo, run:
```bash
$ npm install # or npm
```
### Commonly used NPM scripts
``` bash
# dev-server, watch and auto reload playground
$ npm start
# start playground app in production environment
$ npm run start:prod
# runt tslint
$ npm run lint
# try autofix tslint issues
$ npm run lint -- --fix
# run unit tests
$ npm run unit
# run e2e tests
$ npm run e2e
# Make sure you have created bundle before running e2e test
# E.g. run `npm run bundle` and wait for the finishing process.
# open cypress UI to debug e2e test
$ npm run cy:open
# run the unit tests (includes linting and license checks)
$ npm test
# prepare bundles
$ npm run bundle
# format the code using prettier
$ npm run prettier
# auto-generate changelog
$ npm run changelog
```
There are some other scripts available in the `scripts` section of the `package.json` file.
## Project Structure
- **`benchmark`**: contains basic perf benchmark. Not fully ready yet
- **`demo`**: contains project demo with demo specs and HMR playground used in development
- `demo/playground`: HMR Playground used in development
- **`docs`**: contains extra docs (linked from README.md)
- **`e2e`**: contains e2e tests. The e2e tests are written and run with [Cypress](https://www.cypress.io/).
- **`src`**: contains the source code. The codebase is written in Typescript. CSS styles are managed with [Styled components](https://www.styled-components.com/). State is managed by [MobX](https://github.com/mobxjs/mobx)
- **`src/common-elements`**: contains common Styled elements or components used in multiple places
- **`src/components`**: contains main visual components
- **`src/services`**: contains different services used by Redoc including MobX stores
- **`src/services/models`**: contains classes for OpenAPI entities (e.g. Response, Operations, etc)
- **`src/types`**: contains extra typescript typings including OpenAPI doc typings
- **`src/utils`**: utility functions
- **`src/styled-components.ts`**: - reexports styled-components with proper typescript annotations using theme
- **`src/theme.ts`**: - default theme (colors, fonts, etc) used by all the components
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: 'Type: Bug'
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**Expected behavior**
A clear and concise description of what you expected to happen.
**Minimal reproducible OpenAPI snippet(if possible)**
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Additional context**
Add any other context about the problem here.
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: 'Type: Enhancement'
assignees: ''
---
**Describe the problem to be solved**
A clear and concise description of what problem to be solved
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.
================================================
FILE: .github/pull_request_template.md
================================================
## What/Why/How?
## Reference
## Tests
## Screenshots (optional)
## Check yourself
- [ ] Code is linted
- [ ] Tested
- [ ] All new/updated code is covered with tests
================================================
FILE: .github/styles/Rules/BritishEnglish.yml
================================================
extends: substitution
message: 'Use the US spelling "%s" instead of British "%s".'
link: https://docs.microsoft.com/en-us/style-guide/word-choice/use-us-spelling-avoid-non-english-words
level: error
ignorecase: true
swap:
aeon: eon
aeroplane: airplane
ageing: aging
aluminium: aluminum
anaemia: anemia
anaesthesia: anesthesia
analyse: analyze
annexe: annex
apologise: apologize
behaviour: behavior
busses: buses
calibre: caliber
cancelled: canceled
cancellation: cancelation
catalogue: catalog
categorise: categorize
categorised: categorized
categorises: categorizes
categorising: categorizing
centre: center
cheque: check
civilisation: civilization
civilise: civilize
colour: color
cosy: cozy
cypher: cipher
dependant: dependent
defence: defense
distil: distill
draught: draft
encyclopaedia: encyclopedia
enquiry: inquiry
enrol: enroll
enrolment: enrollment
enthral: enthrall
expiry: expiration
favourite: favorite
fibre: fiber
fillet: filet
flavour: flavor
furore: furor
fulfil: fulfill
gaol: jail
grey: gray
humour: humor
honour: honor
initialled: initialed
initialling: initialing
instil: instill
jewellery: jewelry
labelling: labeling
labelled: labeled
labour: labor
libellous: libelous
licence: license
likeable: likable
liveable: livable
lustre: luster
manoeuvre: maneuver
marvellous: marvelous
matt: matte
meagre: meager
metre: meter
modelling: modeling
moustache: mustache
neighbour: neighbor
normalise: normalize
offence: offense
organise: organize
organisation: organization
orientated: oriented
paralyse: paralyze
plough: plow
pretence: pretense
programme: program
pyjamas: pajamas
rateable: ratable
realise: realize
recognise: recognize
reconnoitre: reconnoiter
rumour: rumor
sabre: saber
saleable: salable
saltpetre: saltpeter
sceptic: skeptic
sepulchre: sepulcher
signalling: signaling
sizeable: sizable
skilful: skillful
sombre: somber
smoulder: smolder
speciality: specialty
spectre: specter
splendour: splendor
standardise: standardize
standardised: standardized
sulphur: sulfur
theatre: theater
travelled: traveled
traveller: traveler
travelling: traveling
unshakeable: unshakable
wilful: willful
yoghurt: yogurt
================================================
FILE: .github/styles/Rules/FutureTense.yml
================================================
extends: existence
message: 'Avoid using future tense: "%s". Use present tense instead.'
link: https://intranet.redoc.ly/contributing/documentation-style-guide/#tone-and-audience
ignorecase: true
level: error
raw:
- "(going to( |\n|[[:punct:]])[a-zA-Z]*|"
- "will( |\n|[[:punct:]])[a-zA-Z]*|"
- "won't( |\n|[[:punct:]])[a-zA-Z]*|"
- "[a-zA-Z]*'ll( |\n|[[:punct:]])[a-zA-Z]*)"
================================================
FILE: .github/styles/Rules/HeaderGerunds.yml
================================================
extends: existence
message: 'Do not start headings with with a gerund (ing word). Use an imperative verb instead.'
link: https://intranet.redoc.ly/contributing/documentation-style-guide/#content-organization
level: error
scope: heading
tokens:
- '^\w*ing.*'
exceptions:
- expandSingleSchemaField
- hideLoading
- hideSingleRequestSampleTab
================================================
FILE: .github/styles/Rules/InclusionGenderCulture.yml
================================================
extends: substitution
message: 'Use inclusive language. Consider "%s" instead of "%s".'
link: https://intranet.redoc.ly/contributing/documentation-style-guide/#grammar-and-syntax
level: error
ignorecase: true
swap:
he: they
his: their
she: they
hers: their
blacklist(?:ed|ing|s)?: blocklist
whitelist(?:ed|ing|s)?: allowlist
master: primary, main
slave: replica
he/she: they
s/he: they
================================================
FILE: .github/styles/Rules/OxfordComma.yml
================================================
extends: existence
message: "Use the Oxford comma in '%s'."
link: https://docs.microsoft.com/en-us/style-guide/punctuation/commas
scope: sentence
level: error
nonword: true
tokens:
- '(?:[^\s,]+,){1,} \w+ (?:and|or) \w+[.?!]'
================================================
FILE: .github/styles/config/vocabularies/Rules/accept.txt
================================================
[Aa]nsible
[Aa]utostart
[Bb]locklist
[Bb]locklists
[Bb]oolean
[Bb]reakpoint
[B]reakpoints
[Cc]ancelation
[Cc]lassloading
[Cc]hargeback
[Cc]hargebacks
[Cc]he
[Cc]rypto
[Cc]ryptocurrency
[Dd]evfile|[Dd]evfiles
[Dd]ownstream
[Dd]ownstreaming
[Ff]actories|[Ff]actory
[Gg]it
[Gg]rafana
[Hh]eatmap
[Hh]elm
[Hh]ostname
[Ii]tem
[Jj]etbrains
[Kk]eycloak
[Ll]iveness
[Ll]ombok
[Ll]oopback
[Mm]aven
[Mm]inikube
[Mm]inishift
[Mm]ixin|[Mm]ixins
[Mm]odularization
[Mm]ulticluster
[Mm]ultihost
[Mm]ultinode
[Mm]ultitenant
[Mm]ultiuser
[Mm]ultizone
[Nn]amespace|[Nn]amespaces
[Nn]etcoredebug[Oo]utput
[Nn]ginx
[Oo]nboarding
[Pp]podman
[Pp]reconfigured
[Rr]eadonly
[Rr]epresentment
[Rr]ollout|[Rr]ollouts
[Rr]untime|[Rr]untimes
[Ss]erializer
[Ss]erverless
[Ss]ubnetwork
[Ss]ubpath|[Ss]ubpaths
[Tt]heia
[Tt]olerations
[Tt]ruststore
[Uu]ninstallation
[Uu]nstaged
[Uu]ntrusted
[Ww]orkspace|[Ww]orkspaces
[Yy]eoman
\.NET
adoc
Antora
API
Apigee
AsciiDoc
AWS|aws
Azure
Bierner
Bitbucket
btn
Btrfs
CentOS
Ceph
Che-Theia
CLI
ConfigMap|ConfigMaps
Ctrl
DaemonSet
Dev Workspace
Developer Perspective
DNS
Docker
Dockerfile
Dotnet
Endevor
endif
GitHub|github
GitLab
Gluster
Gradle
Grafana
GUI
HTTPS|https
I/O
IDE|ide|IDEs
Intelephense
IntelliJ IDEA
Java
Java Lombok
JSON|json
JVM|jvm
kbd
Kubespray
Laravel
Let\'s Encrypt
Mattermost
mebibytes
Microsoft Azure
millicores
Mulesoft
MySQL
Netlify
Node.js
npm
NuGet
OAuth
ocp
OmniSharp
OpenShift
OpenTracing
Operator
OperatorHub
OpenAPI
osd
PHP
PostgreSQL
Quarkus
Rebilly
Redoc
Redocly
Redocly-cli
SCM
Sharding
SonarLint
Spring Boot
SVG
Uber
URI|URIs
URL|url|URLs
Velero
Vercel
Visual Studio Code
vsix
Webview|Webviews
Woopra
YAML|yaml
Zowe
================================================
FILE: .github/styles/config/vocabularies/Rules/reject.txt
================================================
================================================
FILE: .github/workflows/docs-tests.yaml
================================================
name: Documentation tests
on:
pull_request:
types: [opened, synchronize, reopened]
jobs:
markdownlint:
name: markdownlint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: DavidAnson/markdownlint-cli2-action@v15
with:
config: .markdownlint.yaml
globs: |
docs/**/*.md
README.md
vale:
name: vale action
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: errata-ai/vale-action@reviewdog
with:
files: '["README.md", "docs"]'
filter_mode: file
linkcheck:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Markup Link Checker (mlc)
uses: becheran/mlc@v0.16.1
with:
args: ./docs
================================================
FILE: .github/workflows/e2e-tests.yml
================================================
name: Tests e2e
on: [push]
jobs:
build-and-e2e:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: npm ci
- run: npm run bundle
- run: npm run e2e
================================================
FILE: .github/workflows/main.yml
================================================
name: Publish Docker image
on:
release:
types: [published]
jobs:
dockerhub:
name: Publish redoc image to DockerHub
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Docker meta
id: docker_meta
uses: crazy-max/ghaction-docker-meta@v1
with:
images: redocly/redoc
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v3
with:
context: .
file: ./config/docker/Dockerfile
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ steps.docker_meta.outputs.tags }}
labels: ${{ steps.docker_meta.outputs.labels }}
================================================
FILE: .github/workflows/publish.yml
================================================
name: Publish
on:
push:
branches: [main]
jobs:
bundle:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- name: Cache node modules
uses: actions/cache@v3
with:
path: ~/.npm # npm cache files are stored in `~/.npm` on Linux/macOS
key: npm-${{ hashFiles('package-lock.json') }}
restore-keys: |
npm-${{ hashFiles('package-lock.json') }}
npm-
- run: npm ci
- run: npm run bundle
- name: Store bundle artifact
uses: actions/upload-artifact@v4
with:
name: bundles
path: bundles
retention-days: 1
unit-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: npm ci
- run: npm test
e2e-tests:
needs: [bundle]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: npm ci
- name: Download bundled artifact
uses: actions/download-artifact@v4
with:
name: bundles
path: bundles
- run: npm run e2e
check-version:
name: Check Version
runs-on: ubuntu-latest
needs: [bundle, unit-tests, e2e-tests]
outputs:
changed: ${{ steps.check.outputs.changed }}
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v3
- name: Check if version has been updated
id: check
uses: EndBug/version-check@v2.0.1
with:
file-url: https://cdn.jsdelivr.net/npm/redoc/package.json
static-checking: localIsNew
publish:
name: Publish to NPM
needs: [check-version]
if: needs.check-version.outputs.changed == 'true'
runs-on: ubuntu-latest
steps:
- uses: actions/setup-node@v3
with:
node-version: '14.x'
registry-url: 'https://registry.npmjs.org'
- uses: actions/checkout@v3
- name: Download bundled artifacts
uses: actions/download-artifact@v4
with:
name: bundles
path: bundles
- name: Cache node modules
uses: actions/cache@v3
with:
path: ~/.npm # npm cache files are stored in `~/.npm` on Linux/macOS
key: npm-${{ hashFiles('package-lock.json') }}
restore-keys: |
npm-${{ hashFiles('package-lock.json') }}
npm-
- name: Before deploy
run: npm ci && npm run declarations
- name: Publish to NPM
run: npm publish
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
publish-cdn:
name: Publish to CDN
needs: [check-version]
if: needs.check-version.outputs.changed == 'true'
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Configure AWS
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-1
- name: Download all artifact
uses: actions/download-artifact@v4
- name: Publish to S3
run: npm run publish-cdn
invalidate-cache:
name: Clear cache
runs-on: ubuntu-latest
needs: [check-version, publish, publish-cdn]
if: needs.check-version.outputs.changed == 'true'
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Configure AWS
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-1
- name: Invalidate cache
run: ./scripts/invalidate-cache.sh
shell: bash
env:
DISTRIBUTION: ${{ secrets.DISTRIBUTION }}
================================================
FILE: .github/workflows/unit-tests.yml
================================================
name: Unit Tests
on: [push]
jobs:
build-and-unit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: npm ci
- run: npm run bundle
- run: npm test
================================================
FILE: .gitignore
================================================
### Linux ###
*~
# KDE directory preferences
.directory
# OS X folder attributes
.DS_Store
# Linux trash folder which might appear on any partition or disk
.Trash-*
demo/dist/
### Node ###
# Logs
logs
*.log
npm-debug.log*
# Dependency directory
# https://docs.npmjs.com/misc/faq#should-i-check-my-node-modules-folder-into-git
node_modules
lib/
stats.json
cypress/
bundles/
typings/*
!typings/styled-patch.d.ts
/benchmark/revisions
/coverage
.ghpages-tmp
stats.json
yarn.lock
.idea
.vscode
.eslintcache
================================================
FILE: .husky/pre-commit
================================================
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npm run pre-commit
================================================
FILE: .markdownlint.yaml
================================================
---
# Default rules: https://github.com/github/super-linter/blob/master/TEMPLATES/.markdown-lint.yml
# Rules by id
# Unordered list style
MD004: false
# Unordered list indentation
MD007:
indent: 2
MD013:
# TODO: Consider to decrease allowed line length
line_length: 800
tables: false
## Allow same headers in siblings
MD024:
siblings_only: true
# Multiple top level headings in the same document
MD025:
front_matter_title: ''
# Trailing punctuation in heading
MD026:
punctuation: '.,;:。,;:'
# Ordered list item prefix
MD029: false
# Unordered lists inside of ordered lists
MD030: false
# Inline HTML
MD033: false
# No bare urls
MD034: false
# Emphasis used instead of a heading
MD036: false
# Disable "First line in file should be a top level heading"
# We use uncommon format to add metadata.
# TODO: Consider to use "YAML front matter".
MD041: false
# Rules by tags
blank_lines: false
MD046: false
# code-block-style
================================================
FILE: .mlc.toml
================================================
# Ignore these links, we can't check them from this subproject
ignore-links=["../*", "/docs/*"]
# Path to the root folder used to resolve all relative paths
root-dir="./docs"
================================================
FILE: .npmignore
================================================
*
!bundles/*
!typings/**/*
!package.json
!README.md
!LICENSE
================================================
FILE: .prettierignore
================================================
*.md
================================================
FILE: .vale.ini
================================================
# Vale configuration file.
# See: https://docs.errata.ai/vale/config
# The relative path to the folder containing linting rules (styles).
StylesPath = .github/styles
# Vocab define the exceptions to use in *all* `BasedOnStyles`.
# spelling-exceptions.txt triggers `Vale.Terms`
# reject.txt triggers `Vale.Avoid`
# See: https://docs.errata.ai/vale/vocab
Vocab = Rules
# Minimum alert level
# -------------------
# The minimum alert level in the output (suggestion, warning, or error).
# If integrated into CI, builds fail by default on error-level alerts, unless you run Vale with the --no-exit flag
MinAlertLevel = suggestion
# IgnoredScopes specifies inline-level HTML tags to ignore.
# These tags may occur in an active scope (unlike SkippedScopes, skipped entirely) but their content still won't raise any alerts.
# Default: ignore `code` and `tt`.
IgnoredScopes = code, tt, img, url, a, body.id
# SkippedScopes specifies block-level HTML tags to ignore. Ignore any content in these scopes.
# Default: ignore `script`, `style`, `pre`, and `figure`.
# For AsciiDoc: by default, listingblock, and literalblock.
SkippedScopes = script, style, pre, figure, code, tt, listingblock, literalblock
# Rules for matching file types. See: https://docs.errata.ai/vale/scoping
[formats]
properties = md
mdx = md
# Rules for .MD, .MDX
[*.{md,mdx}]
BasedOnStyles = Rules
# Ignore code surrounded by backticks or plus sign, parameters defaults, URLs.
TokenIgnores = (\x60[^\n\x60]+\x60), ([^\n]+=[^\n]*), (\+[^\n]+\+), (http[^\n]+\[)
Vale.Repetition = NO
Vale.SentenceSpacing = NO
Vale.Spelling = NO
# /End of rules for .MD, .MDX
# Process .ini files
[*.ini]
================================================
FILE: CHANGELOG.md
================================================
# [2.5.2](https://github.com/Redocly/redoc/compare/v2.5.1...v2.5.2) (2025-10-15)
### Bug Fixes
* Bumped `openapi-sampler` dependency to include the fix for `readOnly`/`writeOnly` handling in allOf.
# [2.5.1](https://github.com/Redocly/redoc/compare/v2.4.0...v2.5.1) (2025-09-26)
### Bug Fixes
* Bumped `mobx-react` dependency to address a security vulnerability.
# [2.5.0](https://github.com/Redocly/redoc/compare/v2.4.0...v2.5.0) (2025-04-14)
### Bug Fixes
* enhance accessibility for menu items with keyboard support ([#2655](https://github.com/Redocly/redoc/issues/2655)) ([2db293b](https://github.com/Redocly/redoc/commit/2db293bfb2973497dd33f31dc99e97f5bb90bbe8))
### Features
* add keyboard navigation support to JsonViewer component ([#2654](https://github.com/Redocly/redoc/issues/2654)) ([1b4126f](https://github.com/Redocly/redoc/commit/1b4126fde4531387f49c90f52efbd0c0e5f7b6ea))
# [2.4.0](https://github.com/Redocly/redoc/compare/v2.3.0...v2.4.0) (2025-02-07)
### Bug Fixes
* Prototype Pollution Vulnerability Affecting redoc <=2.2.0 ([#2638](https://github.com/Redocly/redoc/issues/2638)) ([153ec7a](https://github.com/Redocly/redoc/commit/153ec7a0b7245639f404c0b038b612ae7377c7db))
* unify redoc config ([#2647](https://github.com/Redocly/redoc/issues/2647)) ([53a6afc](https://github.com/Redocly/redoc/commit/53a6afc59624fe4591b0a0f1f20f41c0fbb5f1cf))
### Features
* add supporting react 19 in package.json ([#2652](https://github.com/Redocly/redoc/issues/2652)) ([3a74802](https://github.com/Redocly/redoc/commit/3a748022be3a7dc7f98669e1645dd5cda72f1abc))
# [2.3.0](https://github.com/Redocly/redoc/compare/v2.2.0...v2.3.0) (2025-01-16)
### Bug Fixes
* displaying json example when showObjectSchemaExamples enabled ([#2635](https://github.com/Redocly/redoc/issues/2635)) ([59ee73f](https://github.com/Redocly/redoc/commit/59ee73fefa8e8edb398940076bdd721fc284caa3))
* displaying nested items with type string ([#2634](https://github.com/Redocly/redoc/issues/2634)) ([85b622f](https://github.com/Redocly/redoc/commit/85b622fc581eb96303aeb85056aef36c74ea9f9d))
* passing inline parameters after support react 18 for response title ([#2640](https://github.com/Redocly/redoc/issues/2640)) ([d614d2d](https://github.com/Redocly/redoc/commit/d614d2d022df8bd1989cb0eaf76d087b52120d36))
### Features
* update pattern styling ([#2196](https://github.com/Redocly/redoc/issues/2196)) ([#2600](https://github.com/Redocly/redoc/issues/2600)) ([aa0879c](https://github.com/Redocly/redoc/commit/aa0879ca0235112918428fdff8f4c48d2c6c4adf))
# [2.2.0](https://github.com/Redocly/redoc/compare/v2.1.5...v2.2.0) (2024-10-16)
### Bug Fixes
* show siblings schema with oneOf ([#2576](https://github.com/Redocly/redoc/issues/2576)) ([60d131b](https://github.com/Redocly/redoc/commit/60d131b0a9dab4710e900323c9ba81160cecf7d8))
### Features
* add support x-badges ([#2605](https://github.com/Redocly/redoc/issues/2605)) ([64f1877](https://github.com/Redocly/redoc/commit/64f18779e5fe7e03f25862463cbc5062e85c867c))
## [2.1.5](https://github.com/Redocly/redoc/compare/v2.1.4...v2.1.5) (2024-06-10)
### Bug Fixes
* update react to 18 and react-tabs to 6 ([#2547](https://github.com/Redocly/redoc/issues/2547)) ([c664dd0](https://github.com/Redocly/redoc/commit/c664dd0d56571ce799b8eadd081d86a6b2cdefae))
## [2.1.4](https://github.com/Redocly/redoc/compare/v2.1.3...v2.1.4) (2024-04-25)
### Bug Fixes
* add deprecated css to clickable property name ([#2526](https://github.com/Redocly/redoc/issues/2526)) ([b0d03d0](https://github.com/Redocly/redoc/commit/b0d03d02069c1508447ddebc2f8a3fffa9b03ce5))
* use h2/h3 for headings instead of h1/h2 for better seo ([#2514](https://github.com/Redocly/redoc/issues/2514)) ([2b72dc0](https://github.com/Redocly/redoc/commit/2b72dc0e90f759a8ee2e47691c844e7f05928a24))
* security vulnerability ([#2445](https://github.com/Redocly/redoc/pull/2445)) ([1f11f5](https://github.com/Redocly/redoc/commit/1f11f597c4f10ddd601db247f5034052b6ca689f))
## [2.1.3](https://github.com/Redocly/redoc/compare/v2.1.2...v2.1.3) (2023-10-24)
### Bug Fixes
* default value as object in request body ([#2437](https://github.com/Redocly/redoc/issues/2437)) ([b36a6e2](https://github.com/Redocly/redoc/commit/b36a6e27bb3e03d39ee74c3e71f18a504539d91b))
* display string pattern in array items ([#2438](https://github.com/Redocly/redoc/issues/2438)) ([8ddeb6d](https://github.com/Redocly/redoc/commit/8ddeb6dfda686ec8a6948eb2d96efb99bf422429))
* hideRequestPayloadSample ([#2436](https://github.com/Redocly/redoc/issues/2436)) ([bf96061](https://github.com/Redocly/redoc/commit/bf960612a47bfe10ff205b9d78f3040515a5467d))
* more cases for react18 and cli integration ([#2416](https://github.com/Redocly/redoc/issues/2416)) ([26674e7](https://github.com/Redocly/redoc/commit/26674e70c66b686d0f0baa569b186292c41e5726))
## [2.1.2](https://github.com/Redocly/redoc/compare/v2.1.1...v2.1.2) (2023-09-11)
### Bug Fixes
* react18 cli integration ([#2404](https://github.com/Redocly/redoc/issues/2404)) ([76edc15](https://github.com/Redocly/redoc/commit/76edc159399150778b384be87ee958a93e5c491c))
* style RefreshToken URL as <code> in the authorization section ([1d61001](https://github.com/Redocly/redoc/commit/1d6100111a0f3b609dadbd706354ce6125947df2))
## [2.1.1](https://github.com/Redocly/redoc/compare/v2.1.0...v2.1.1) (2023-08-17)
### Bug Fixes
* hotfix, crash after 2.1 release ([0ab3428](https://github.com/Redocly/redoc/commit/0ab3428664f857ea07381686a2b4beb4c22b17c3))
# [2.1.0](https://github.com/Redocly/redoc/compare/v2.0.0...v2.1.0) (2023-08-10)
### Bug Fixes
* call onLoaded if specs are not found ([#2182](https://github.com/Redocly/redoc/issues/2182)) ([0753bbe](https://github.com/Redocly/redoc/commit/0753bbea4b1425bdb09225fca45effae8003dce8))
* default value for array query parameter ([#2186](https://github.com/Redocly/redoc/issues/2186)) ([3d410b6](https://github.com/Redocly/redoc/commit/3d410b6002c656efa780254c9c45c6249f90bce1))
* **demo:** Get CORS proxy to work in Chrome on Windows ([#2220](https://github.com/Redocly/redoc/issues/2220)) ([1597bae](https://github.com/Redocly/redoc/commit/1597bae4032b65a94211e80aad51867e5af1ceb3))
* error with immutable object spec ([#2179](https://github.com/Redocly/redoc/issues/2179)) ([53c4f36](https://github.com/Redocly/redoc/commit/53c4f36fad3e4453a72c1d136e37929de47cd35e))
* improve accessible label by using the property name ([#2224](https://github.com/Redocly/redoc/issues/2224)) ([12be1bc](https://github.com/Redocly/redoc/commit/12be1bc5ffa11f9092c2faacd69d787f4e899960))
* move role to list item to meet ARIA spec ([#2228](https://github.com/Redocly/redoc/issues/2228)) ([b8f7da6](https://github.com/Redocly/redoc/commit/b8f7da6b003ca12c1e2f0f4d42f3dd6d6f86ccac))
* remove GenericObject shim ([#2177](https://github.com/Redocly/redoc/issues/2177)) ([127ef26](https://github.com/Redocly/redoc/commit/127ef260b961e07c5f82a7494b51dd3f04294e87))
* renames 'FieldContstraints' to 'FieldConstraints' ([#2352](https://github.com/Redocly/redoc/issues/2352)) ([7e05202](https://github.com/Redocly/redoc/commit/7e052028d965624feb72d5f4b74fdb3c2d5df21f))
* schema oneOf title with const ([#2350](https://github.com/Redocly/redoc/issues/2350)) ([4386867](https://github.com/Redocly/redoc/commit/4386867d908eae2aed2b9fd86e9f5476aadce52b))
* **types/open-api:** import type ([#2213](https://github.com/Redocly/redoc/issues/2213)) ([33be51a](https://github.com/Redocly/redoc/commit/33be51a7a4068f44fd914314002c058a204ba0c2))
### Features
* add deprecation label to redoc-cli ([#2172](https://github.com/Redocly/redoc/issues/2172)) ([2ae7e08](https://github.com/Redocly/redoc/commit/2ae7e08af49321cea9bf2078f309b48bacf76ad6))
* add option to hide the example code when using the `SchemaDefinition` component ([#2157](https://github.com/Redocly/redoc/issues/2157)) ([168189b](https://github.com/Redocly/redoc/commit/168189b2fdcf3667422ce3940ace3eedd0bdf284))
* add support of react 18 ([#2369](https://github.com/Redocly/redoc/issues/2369)) ([054f604](https://github.com/Redocly/redoc/commit/054f604195629197aa8bd0fc46e91383ca5a05af))
* add x-tags ([#2355](https://github.com/Redocly/redoc/issues/2355)) ([0bb21c8](https://github.com/Redocly/redoc/commit/0bb21c812840999d2dd2d96da42124746440b035))
* enable keyboard navigation ([#2361](https://github.com/Redocly/redoc/issues/2361)) ([d21af58](https://github.com/Redocly/redoc/commit/d21af5841455901f0572ab475b7dc661acb86a71))
* indicate whether request body is required or optional ([#2175](https://github.com/Redocly/redoc/issues/2175)) ([d3ad792](https://github.com/Redocly/redoc/commit/d3ad7925cfbd90b59b502b5ef53228fcd34b8a1e))
# [2.0.0](https://github.com/Redocly/redoc/compare/v2.0.0-rc.77...v2.0.0) (2022-09-12)
# [2.0.0-rc.77](https://github.com/Redocly/redoc/compare/v2.0.0-rc.76...v2.0.0-rc.77) (2022-09-06)
### Bug Fixes
* add hard limit on deref depth to prevent crashes ([ddde105](https://github.com/Redocly/redoc/commit/ddde105acaf0a77b0bb5d13df5fd6180bc8169e9))
* do not use discriminator when specific schema was referenced in oneOf or anyOf ([#2153](https://github.com/Redocly/redoc/issues/2153)) ([6ac1e1e](https://github.com/Redocly/redoc/commit/6ac1e1eb183e97e2cd67ad14d8a39fac8289ebcc))
* hoistOneOf missing refs stack and improve allOf for same $ref ([bb325d0](https://github.com/Redocly/redoc/commit/bb325d0d285c4cf4ee7c6d70878d2dd0dc9c6ed7))
* latest docker cli tag ([#2140](https://github.com/Redocly/redoc/issues/2140)) ([8dc03eb](https://github.com/Redocly/redoc/commit/8dc03eb7ed262d6b1d460425ce43990710470845))
* markdown parent name ([#2062](https://github.com/Redocly/redoc/issues/2062)) ([da9ed0b](https://github.com/Redocly/redoc/commit/da9ed0b4d1a4070d326ecb472459f0ff916c6036))
### Features
* feet: search feature to support path ([#2145](https://github.com/Redocly/redoc/issues/2145)) ([c52ee83f](https://github.com/Redocly/redoc/commit/c52ee83f77ccfc79137c85deafe8d93e68465d45))
# [2.0.0-rc.76](https://github.com/Redocly/redoc/compare/v2.0.0-rc.75...v2.0.0-rc.76) (2022-08-18)
### Bug Fixes
* "API Docs By Redocly" overlapping last element in sidebar ([#2132](https://github.com/Redocly/redoc/issues/2132)) ([c60c6f5](https://github.com/Redocly/redoc/commit/c60c6f58917563d57c0eef650b9dfcece2e15049))
* encoding issue in CDN responses ([#2130](https://github.com/Redocly/redoc/issues/2130)) ([7816902](https://github.com/Redocly/redoc/commit/781690284a45b2b8af9eb525757632d0d19ef453))
* Optional authentication not rendered properly ([#2117](https://github.com/Redocly/redoc/issues/2117)) ([#2134](https://github.com/Redocly/redoc/issues/2134)) ([efd5e09](https://github.com/Redocly/redoc/commit/efd5e09c907b36a3999f4c9c3165b6b2bdc1d536))
### Features
* add clear cache for publish action ([#2129](https://github.com/Redocly/redoc/issues/2129)) ([d8093e3](https://github.com/Redocly/redoc/commit/d8093e3e2086874242eac82ddd202f35d5b8d558))
# [2.0.0-rc.75](https://github.com/Redocly/redoc/compare/v2.0.0-rc.74...v2.0.0-rc.75) (2022-08-10)
### Bug Fixes
* duplication of title ([#2119](https://github.com/Redocly/redoc/issues/2119)) ([40ebfd2](https://github.com/Redocly/redoc/commit/40ebfd2d63758b37665e2e4447732f671811e2a5))
* handle error if security scopes is invalid ([#2113](https://github.com/Redocly/redoc/issues/2113)) ([428fd69](https://github.com/Redocly/redoc/commit/428fd6983dc257f524121d98aeb1c58b39cf81f7))
* publishing docker image to github packages ([#2115](https://github.com/Redocly/redoc/issues/2115)) ([250f6d1](https://github.com/Redocly/redoc/commit/250f6d12b2d31d2166990bd9cb83ca1c63509686))
* Redocly logo ([#2109](https://github.com/Redocly/redoc/issues/2109)) ([a35bb3f](https://github.com/Redocly/redoc/commit/a35bb3ff26bf10b0e54383222df283800d6ee2c8))
* search and navigate error ([cfd810f](https://github.com/Redocly/redoc/commit/cfd810fdf9d37862e07458fa1c3c04046e22f315))
* sibling for openapi 3.1 ([#2112](https://github.com/Redocly/redoc/issues/2112)) ([0b1a790](https://github.com/Redocly/redoc/commit/0b1a79009010f0640a3030093b7c0dcf8caa49e4))
### Features
* add notification about new version available ([#2100](https://github.com/Redocly/redoc/issues/2100)) ([d6ca8cc](https://github.com/Redocly/redoc/commit/d6ca8cc53b9667f09ce8fef88dfac1039c562b78))
# [2.0.0-rc.74](https://github.com/Redocly/redoc/compare/v2.0.0-rc.73...v2.0.0-rc.74) (2022-07-28)
### Bug Fixes
* invalid url when href is empty ([#2105](https://github.com/Redocly/redoc/issues/2105)) ([e5f0235](https://github.com/Redocly/redoc/commit/e5f02359851a3797283ee513d734ab8e27266b92))
# [2.0.0-rc.73](https://github.com/Redocly/redoc/compare/v2.0.0-rc.72...v2.0.0-rc.73) (2022-07-28)
### Bug Fixes
* add label API docs by Redocly ([#2099](https://github.com/Redocly/redoc/issues/2099)) ([dcdab83](https://github.com/Redocly/redoc/commit/dcdab838903a5d923c5e327d07d7743214769a61))
* add the latest tag for the CLI docker image ([#2087](https://github.com/Redocly/redoc/issues/2087)) ([80ecd0f](https://github.com/Redocly/redoc/commit/80ecd0f19746379b056bfb1b11950693f3dc3724))
* correct URLs of OperationModel servers for static site generation ([#2081](https://github.com/Redocly/redoc/issues/2081)) ([b1afd08](https://github.com/Redocly/redoc/commit/b1afd08bcf83770b537ed1eb9c90341de0162a1c))
* enum duplication values when schema uses a specific combination of oneOf and allOf([#2088](https://github.com/Redocly/redoc/issues/2088)) ([e411847](https://github.com/Redocly/redoc/commit/e4118479f69209c5dd09a2be0e978834dcd9eb8f))
* highlight text syntax ([#2069](https://github.com/Redocly/redoc/issues/2069)) ([4fc6aa0](https://github.com/Redocly/redoc/commit/4fc6aa0859c94e25fd30c4a4250455e44cc76488))
* merge reference for openapi 3.1 ([#2063](https://github.com/Redocly/redoc/issues/2063)) ([87541e4](https://github.com/Redocly/redoc/commit/87541e45dc2526696deb32a6350a14a44a709b54))
* nested patternProperties ([#2073](https://github.com/Redocly/redoc/issues/2073)) ([9920991](https://github.com/Redocly/redoc/commit/99209910806b85289a89fb3131049ed79118bc72))
* operation url in static page ([#2093](https://github.com/Redocly/redoc/issues/2093)) ([98eec19](https://github.com/Redocly/redoc/commit/98eec19647b63f3598ec30fdeb428f614cf93ad4))
* property with nested allOf ([#2083](https://github.com/Redocly/redoc/issues/2083)) ([7cc0500](https://github.com/Redocly/redoc/commit/7cc0500f3c1ddd1da17ee31278468207093f9281))
* recursion for boolean items ([#2097](https://github.com/Redocly/redoc/issues/2097)) ([a5804db](https://github.com/Redocly/redoc/commit/a5804db1ce60ee6d90db8a3b54138eb1ca420c6f))
* resolve dependency conflict in installing ([#2060](https://github.com/Redocly/redoc/issues/2060)) ([e26c8b2](https://github.com/Redocly/redoc/commit/e26c8b23d9b36abd5572bd0fe350d74a5cf65afb))
* restore old variant security injections ([#2075](https://github.com/Redocly/redoc/issues/2075)) ([1a1bc26](https://github.com/Redocly/redoc/commit/1a1bc26503c06b6a7022289e5b9353bd59e48a9a))
* rewrite recursive checks ([#2072](https://github.com/Redocly/redoc/issues/2072)) ([2970f95](https://github.com/Redocly/redoc/commit/2970f959cfa31cb4d5288ca23ca05cd34357dcec))
* Scrolling keeps rewriting url after a Redoc element was removed [#2051](https://github.com/Redocly/redoc/issues/2051) ([#2085](https://github.com/Redocly/redoc/issues/2085)) ([0045be0](https://github.com/Redocly/redoc/commit/0045be0b753b8fb7d8d58a4e511783a6ba858444))
* mis-nesting of aria roles on sidebar navigation ([#2050](https://github.com/Redocly/redoc/issues/2050)) ([7ca10da](https://github.com/Redocly/redoc/commit/7ca10daf12f2cac9fecf559b11f0f0c8bd21ae43))
* 404 on the documentation page ([#2092](https://github.com/Redocly/redoc/issues/2050)) ([17bb08](https://github.com/Redocly/redoc/commit/17bb08909a1734e6e59c83ce29f31ae7cf6fc784))
# [2.0.0-rc.72](https://github.com/Redocly/redoc/compare/v2.0.0-rc.71...v2.0.0-rc.72) (2022-06-02)
### Bug Fixes
* handled style change in ServerUrl and ServersOverlay dynamically ([#1989](https://github.com/Redocly/redoc/issues/1989)) ([a366de4](https://github.com/Redocly/redoc/commit/a366de4cf67fb94baa33b7b5c311cc1f54a63e53))
* nested items with refs ([#2035](https://github.com/Redocly/redoc/issues/2035)) ([51127aa](https://github.com/Redocly/redoc/commit/51127aadc3e6b0f8e4066afb1c3b2ea6db453da2))
# [2.0.0-rc.71](https://github.com/Redocly/redoc/compare/v2.0.0-rc.70...v2.0.0-rc.71) (2022-05-31)
### Bug Fixes
* constraints label details ([eb0917d](https://github.com/Redocly/redoc/commit/eb0917d002e57353027fee9c8f07605de8f1ff6f))
* merge allOf in correct order ([#2020](https://github.com/Redocly/redoc/issues/2020)) ([1e4ea03](https://github.com/Redocly/redoc/commit/1e4ea03d4a9b7eddf3e4cc7cbdbd4d913583e837))
### Features
* add hideSecuritySection option allowing to disable the Security panel ([#2027](https://github.com/Redocly/redoc/issues/2027)) ([49cc11d](https://github.com/Redocly/redoc/commit/49cc11d91795653ca870e9276a1e0cd617964e25))
* add Redoc to Redocly CDN ([#2026](https://github.com/Redocly/redoc/issues/2026)) ([77104d6](https://github.com/Redocly/redoc/commit/77104d6c0d6f457aa08a158e93b52a45877be84e))
* add support prefix items ([27a9dba](https://github.com/Redocly/redoc/commit/27a9dbaf46aded01a6512645dab27870a85cc73b))
* remove auth section ([#2022](https://github.com/Redocly/redoc/issues/2022)) ([a863302](https://github.com/Redocly/redoc/commit/a863302cc803bdf27187c613157ba90af1040fc4))
* show minProperties maxProperties ([#2015](https://github.com/Redocly/redoc/issues/2015)) ([82712c5](https://github.com/Redocly/redoc/commit/82712c5b408dc6bc142307d45fb962de2a43ffba))
# [2.0.0-rc.70](https://github.com/Redocly/redoc/compare/2.0.0-rc.69...2.0.0-rc.70) (2022-05-17)
### Features
* display patternProperties ([#2008](https://github.com/Redocly/redoc/issues/2008)) ([660cc85](https://github.com/Redocly/redoc/commit/660cc857bc86787e16237b407fe5f5d7a493bb48))
* support conditional operators ([#1939](https://github.com/Redocly/redoc/issues/1939)) ([291b62a](https://github.com/Redocly/redoc/commit/291b62a206b68f8b4d98e4b74b71c0cad20a8b9b))
* theme add links textDecoration options ([#1599](https://github.com/Redocly/redoc/issues/1599)) ([ba06485](https://github.com/Redocly/redoc/commit/ba06485ece27acbb6b846500817f4bff3e4997ba))
# [2.0.0-rc.69](https://github.com/Redocly/redoc/compare/v2.0.0-rc.68.1...v2.0.0-rc.69) (2022-05-12)
### Bug Fixes
* wrong base url format causing error when constructing new URL ([#1996](https://github.com/Redocly/redoc/issues/1996)) ([d2cdaa1](https://github.com/Redocly/redoc/commit/d2cdaa1221b6a5e7b5da2418414bce1586069deb))
### Features
* add download file option ([#1699](https://github.com/Redocly/redoc/issues/1699)) ([b601c9a](https://github.com/Redocly/redoc/commit/b601c9ae9e3288286f28e06854bd93cb3507706e))
* add option to display verb in webhooks ([#1994](https://github.com/Redocly/redoc/issues/1994)) ([311d2ce](https://github.com/Redocly/redoc/commit/311d2ce64dcf1e68c2563a276b34dda0e08b709c))
* support .redocly.yaml for options for redoc-cli ([#1981](https://github.com/Redocly/redoc/issues/1981)) ([1f417d6](https://github.com/Redocly/redoc/commit/1f417d67c6b2e0b49e41c713958c100d8e1ad19d))
# [2.0.0-rc.68](https://github.com/Redocly/redoc/compare/v2.0.0-rc.67...v2.0.0-rc.68) (2022-05-10)
### Bug Fixes
* examples in json schema object([5b9aa27](https://github.com/Redocly/redoc/commit/5b9aa27af03a1c4616f7e0195afeba47d1deeaa0))
* handle error when definition load fails ([#1979](https://github.com/Redocly/redoc/issues/1979)) ([508ebd5](https://github.com/Redocly/redoc/commit/508ebd58a3d66f2337e9641852322458a1bd9e6b))
* large text in examples value ([#1974](https://github.com/Redocly/redoc/issues/1974)) ([60bc603](https://github.com/Redocly/redoc/commit/60bc603e9bb85a0c9c7ac38f7014876d397f0191))
* not show scopes if keys empty or not exist ([#1975](https://github.com/Redocly/redoc/issues/1975)) ([4e793f0](https://github.com/Redocly/redoc/commit/4e793f07a81fa8bcd4ad384d1f87b3e6c290edb7))
* remove dropdown-aria and use native select ([#1954](https://github.com/Redocly/redoc/issues/1954)) ([186f5a9](https://github.com/Redocly/redoc/commit/186f5a98bd466b1820121aadb865291bef8c6755))
* make Redoc lib compatible with Webpack 5 ([#1982](https://github.com/Redocly/redoc/issues/1982)) ([867861](https://github.com/Redocly/redoc/commit/8678615a0e19c9484b4cd495d70293b542d196a5))
### Features
* implement configurable minimum characer length to init search ([#1402](https://github.com/Redocly/redoc/issues/1402)) ([0fa08fa](https://github.com/Redocly/redoc/commit/0fa08faab1c176a4bfc5a553e8e8f8b07aca659f))
* support OAS 3.1 unevaluatedProperties ([#1978](https://github.com/Redocly/redoc/issues/1978)) ([0755ac6](https://github.com/Redocly/redoc/commit/0755ac6f04514eb0c08f90afceeda7858206b435))
* publish dockerhub ([#1971](https://github.com/Redocly/redoc/issues/1971)) ([7e01a0](https://github.com/Redocly/redoc/commit/7e01a0cfe2ad8d06075bfc66ef3860edbef033f8))
# [2.0.0-rc.67](https://github.com/Redocly/redoc/compare/v2.0.0-rc.66...v2.0.0-rc.67) (2022-04-28)
### Bug Fixes
* Expand/Collapse all buttons disappears for flat structures ([#1424](https://github.com/Redocly/redoc/issues/1424)) ([2ca8e08](https://github.com/Redocly/redoc/commit/2ca8e081baea6996eb01b5df27b8cd88331d5c96))
* improve markdown render with CRLF ([#1953](https://github.com/Redocly/redoc/issues/1953)) ([aba2d1a](https://github.com/Redocly/redoc/commit/aba2d1ad2d8dda9f52055c36ebde1323457dfd3e))
* issue with navigation when operationId contains backslash or quotes ([#1513](https://github.com/Redocly/redoc/issues/1513)) ([8f7e56c](https://github.com/Redocly/redoc/commit/8f7e56c747d88be5c5eb5c4bbaee0ff69e9cb2ec))
* prefix operation ids with parent id ([#1245](https://github.com/Redocly/redoc/issues/1245)) ([fd8917e](https://github.com/Redocly/redoc/commit/fd8917e5c109840c1bfa4c2c0902b6dcec200286))
### Features
* add optional BASE_PATH to Docker config ([#1378](https://github.com/Redocly/redoc/issues/1378)) ([90f71c0](https://github.com/Redocly/redoc/commit/90f71c0d77719871910cfba883a32ad131bef059))
* theme add sidebar activeBackgroundColor and activeTextColor ([#1600](https://github.com/Redocly/redoc/issues/1600)) ([6716b08](https://github.com/Redocly/redoc/commit/6716b08e8871d95880e9f5a6c5491038002754e8))
# [2.0.0-rc.66](https://github.com/Redocly/redoc/compare/v2.0.0-rc.65...v2.0.0-rc.66) (2022-03-30)
### Bug Fixes
* add handle local files for serve command ([#1810](https://github.com/Redocly/redoc/issues/1810)) ([117071e](https://github.com/Redocly/redoc/commit/117071ee83a32d9b3350d8afe2bdb6365a44e2ec))
* move comma out of code block in SecurityRequirement.tsx ([#1924](https://github.com/Redocly/redoc/issues/1924)) ([ab3e8a8](https://github.com/Redocly/redoc/commit/ab3e8a8f80f453066c5495e73ac932a8fef0830a))
* rename bandle command and add deprecate notice ([#1935](https://github.com/Redocly/redoc/issues/1935)) ([eb096b6](https://github.com/Redocly/redoc/commit/eb096b69be52568fc581027161c7d0c4b26c56c1))
### Features
* add support for displaying operationId in the sidebar ([#1927](https://github.com/Redocly/redoc/issues/1927)) ([09786f2](https://github.com/Redocly/redoc/commit/09786f2a5ade6303ea00512483b172347721ca70))
* add nonce support ([#1566](https://github.com/Redocly/redoc/issues/1566)) ([c75ac9c](https://github.com/Redocly/redoc/commit/c75ac9cf70012e2d539b379aab2f0974d088db07))
* h2 set color form theme.colors.text.primary ([#1491](https://github.com/Redocly/redoc/pull/1491)) ([25be93](https://github.com/Redocly/redoc/commit/25be934bb184d7b2b6b47d004b3c83ce4d16a2c6))
# [2.0.0-rc.65](https://github.com/Redocly/redoc/compare/v2.0.0-rc.64...v2.0.0-rc.65) (2022-03-15)
### Bug Fixes
* auth link scroll for Firerox ([#1922](https://github.com/Redocly/redoc/issues/1922)) ([fe67e9c](https://github.com/Redocly/redoc/commit/fe67e9c332fee716582a00d60fdf34767bff22d4))
* improve customization fab ([#1891](https://github.com/Redocly/redoc/issues/1891)) ([635f379](https://github.com/Redocly/redoc/commit/635f379eb086268c91eef715148eca8f080cfb86))
* sanitize array of items ([#1920](https://github.com/Redocly/redoc/issues/1920)) ([059bd80](https://github.com/Redocly/redoc/commit/059bd8000e5fd65753d5ca9e0c47940394e0c79b))
* use x-displayName in securityDefinitions ([#1444](https://github.com/Redocly/redoc/pull/1444)) ([ac6fb4](https://github.com/Redocly/redoc/commit/ac6fb458a4eee8d0da4b63f9bafc7669adc8af03))
* deprecated badge on one of any of buttons ([#1930](https://github.com/Redocly/redoc/pull/1930)) ([f60b47](https://github.com/Redocly/redoc/commit/f60b4758330dd756d670309827da60d3465b672a))
# [2.0.0-rc.64](https://github.com/Redocly/redoc/compare/v2.0.0-rc.63...v2.0.0-rc.64) (2022-02-24)
### Bug Fixes
* bump json-pointer version to avoid CVE-2021-23820 ([#1910](https://github.com/Redocly/redoc/issues/1910)) ([777efdd](https://github.com/Redocly/redoc/commit/777efdde35c1c8dc79dd714e1666279e9192dddb))
* external ref in schema definition ([#1894](https://github.com/Redocly/redoc/issues/1894)) ([57cdd9f](https://github.com/Redocly/redoc/commit/57cdd9f6da38418d6214ac3c6480c5847ecd0228))
# [2.0.0-rc.63](https://github.com/Redocly/redoc/compare/v2.0.0-rc.61...v2.0.0-rc.63) (2022-01-27)
### Bug Fixes
* scroll in sidebar ([b5b0d61](https://github.com/Redocly/redoc/commit/b5b0d61b3568ac2a8aaceafa96ffa6d2f86ed323))
# [2.0.0-rc.62](https://github.com/Redocly/redoc/compare/v2.0.0-rc.61...v2.0.0-rc.62) (2022-01-26)
### Bug Fixes
* fix field expand does not work ([#1875](https://github.com/Redocly/redoc/issues/1875))
# [2.0.0-rc.61](https://github.com/Redocly/redoc/compare/v2.0.0-rc.60...v2.0.0-rc.61) (2022-01-26)
### Bug Fixes
* fix crash in redoc-cli after migrating to esbuild ([#1872](https://github.com/Redocly/redoc/issues/1872))
# [2.0.0-rc.60](https://github.com/Redocly/redoc/compare/v2.0.0-rc.59...v2.0.0-rc.60) (2022-01-25)
### Bug Fixes
* add schema expansion level ([#1868](https://github.com/Redocly/redoc/issues/1868)) ([250d53a](https://github.com/Redocly/redoc/commit/250d53a59fb4bf881875ba466c5a7f3b55d80007))
* attachHeadingsDescriptions match headings incorrectly ([#1845](https://github.com/Redocly/redoc/issues/1845)) ([ea8573d](https://github.com/Redocly/redoc/commit/ea8573dbd78439be50aa2b38f1c83658c16783e3))
* definition name util ([#1865](https://github.com/Redocly/redoc/issues/1865)) ([95a7347](https://github.com/Redocly/redoc/commit/95a734793158d4749e98ee4a7e90e70713a04ced))
* No maxLength label is displayed for arrays of items [#1701](https://github.com/Redocly/redoc/issues/1701) ([#1765](https://github.com/Redocly/redoc/issues/1765)) ([6c7685e](https://github.com/Redocly/redoc/commit/6c7685e5fa04314328a445d7077600692c49489c))
* Response objects couldn't open ([#1867](https://github.com/Redocly/redoc/issues/1867)) ([18f943d](https://github.com/Redocly/redoc/commit/18f943d2b5668f1552d212dee1c3a2ed59054095))
* writeOnly params displaying in webhook ([#1866](https://github.com/Redocly/redoc/issues/1866)) ([5694913](https://github.com/Redocly/redoc/commit/5694913e71f0e8c3a5d9393f1b4ae92534127841))
### Features
* **#1251:** Add file selector to demo application ([#1859](https://github.com/Redocly/redoc/issues/1859)) ([b74dcde](https://github.com/Redocly/redoc/commit/b74dcde42b45ebe5ae617f1ec3cfea2ea1aff922)), closes [#1251](https://github.com/Redocly/redoc/issues/1251) [#1251](https://github.com/Redocly/redoc/issues/1251) [#1251](https://github.com/Redocly/redoc/issues/1251)
* redoc-cli add host option ([#1598](https://github.com/Redocly/redoc/issues/1598)) ([fb104e6](https://github.com/Redocly/redoc/commit/fb104e696618b0b81439da134887830a0f2439ea))
* support examples in object schema ([#1832](https://github.com/Redocly/redoc/issues/1832)) ([c986f0e](https://github.com/Redocly/redoc/commit/c986f0ef1a38bc1e61cae70830d84de03b684b89))
# [2.0.0-rc.59](https://github.com/Redocly/redoc/compare/v2.0.0-rc.58...v2.0.0-rc.59) (2021-12-09)
### Bug Fixes
* fix scroll in example dropdown ([#1803](https://github.com/Redocly/redoc/issues/1803)) ([bc2d9a7](https://github.com/Redocly/redoc/commit/bc2d9a7d9cd530274483fecd136db290a5b46ff7))
* x-examples for request body param does not display [#1743](https://github.com/Redocly/redoc/issues/1743) ([#1826](https://github.com/Redocly/redoc/issues/1826)) ([aaa3b32](https://github.com/Redocly/redoc/commit/aaa3b3280c8422d450e8849ae02135dde199d6d5))
### Features
* add option sideNavStyle ([#1805](https://github.com/Redocly/redoc/pull/1805)) ([2e4663b](https://github.com/Redocly/redoc/commit/2e4663b3b7022f25d3dc808afbcb3b3ad9483c41))
# [2.0.0-rc.58](https://github.com/Redocly/redoc/compare/v2.0.0-rc.57...v2.0.0-rc.58) (2021-11-29)
### Bug Fixes
* add browser build for webpack 5 ([#1796](https://github.com/Redocly/redoc/issues/1796)) ([0e43ad3](https://github.com/Redocly/redoc/commit/0e43ad3102cfba8c4b30e59500ad4efc53f01c2d))
* Default boolean property value not rendered [#1779](https://github.com/Redocly/redoc/issues/1779) ([#1781](https://github.com/Redocly/redoc/issues/1781)) ([734080c](https://github.com/Redocly/redoc/commit/734080c35471d16f87004f7f9a51dcdeee1278a6))
* exclusiveMin/Max shows incorect range ([#1799](https://github.com/Redocly/redoc/issues/1799)) ([b604bd8](https://github.com/Redocly/redoc/commit/b604bd8da874f07e9e9f8b193ad10117a5f5059c))
* mobile view in docker image ([#1795](https://github.com/Redocly/redoc/issues/1795)) ([ad652b9](https://github.com/Redocly/redoc/commit/ad652b9c7fbcd84a6e83397272de64e57213fe9a))
# [2.0.0-rc.57](https://github.com/Redocly/redoc/compare/v2.0.0-rc.56...v2.0.0-rc.57) (2021-10-11)
### Bug Fixes
* fix deref logic for oas3.1 ([#1767](https://github.com/Redocly/redoc/issues/1767)) ([4fb9c83](https://github.com/Redocly/redoc/commit/4fb9c835256b9e44bcecabde7baf0f0f3e5beb3f))
* improve publish action scripts ([#1729](https://github.com/Redocly/redoc/issues/1729)) ([952c05c](https://github.com/Redocly/redoc/commit/952c05c6b4b95fe6082611fed9e2f0913272b904))
* No match scenario in search ([#1667](https://github.com/Redocly/redoc/issues/1667)) ([352a851](https://github.com/Redocly/redoc/commit/352a8518576dfb6b240ec41212a64f1c7312ab67))
* OpenAPI 3.1: Missing description when $ref used [#1727](https://github.com/Redocly/redoc/issues/1727) ([fe6909e](https://github.com/Redocly/redoc/commit/fe6909ed80dd6053b48c30f63a2460614bf957a9))
* OpenAPI 3.1: Missing description when $ref used [#1727](https://github.com/Redocly/redoc/issues/1727) ([35f7787](https://github.com/Redocly/redoc/commit/35f77878de7d1dd250040771f17757a5a6ce85f9))
* Redoc spelling ([c87600d](https://github.com/Redocly/redoc/commit/c87600d520f037d291169b44b5803a35af16b5a5))
* Schema for events incorrectly omits readOnly and includes writeOnly ([#1720](https://github.com/Redocly/redoc/issues/1720) [#1540](https://github.com/Redocly/redoc/issues/1540)) ([a8e0c29](https://github.com/Redocly/redoc/commit/a8e0c296852661dec1dcad2388d7589f9e0d3609))
* scrolling to the first item ([#1753](https://github.com/Redocly/redoc/issues/1753)) ([bccd213](https://github.com/Redocly/redoc/commit/bccd21394ef79940c2efbe24a0d866c7af103d94))
* The number of items in the array in the array is incorrect [#1762](https://github.com/Redocly/redoc/issues/1762) ([#1763](https://github.com/Redocly/redoc/issues/1763)) ([3b8d644](https://github.com/Redocly/redoc/commit/3b8d6441bd9978b849a53021d40fd4fe150272ea))
### Features
* add q/kdb+ syntax highlighting ([#1605](https://github.com/Redocly/redoc/issues/1605)) ([43451ba](https://github.com/Redocly/redoc/commit/43451ba4cd24270b8629a967d3fd2ce2eed8912e))
* new option generatedPayloadSamplesMaxDepth ([#1642](https://github.com/Redocly/redoc/issues/1642)) ([bd9390a](https://github.com/Redocly/redoc/commit/bd9390a5bfc5458c06121110db33968a20fcebe4))
# [2.0.0-rc.56](https://github.com/Redocly/redoc/compare/v2.0.0-rc.53...v2.0.0-rc.56) (2021-08-11)
### Bug Fixes
* handle empty object in security array ([#1678](https://github.com/Redocly/redoc/issues/1678)) ([9e1ea70](https://github.com/Redocly/redoc/commit/9e1ea703e56a71567b13d0d22e2d69945a22de4d))
* hideLoading options in redoc standalone ([#1709](https://github.com/Redocly/redoc/issues/1709)) ([6a52a16](https://github.com/Redocly/redoc/commit/6a52a16d5b75a2955da7217c4a264f0fa8e98c89))
* improve openapi 3.1 ([#1700](https://github.com/Redocly/redoc/issues/1700)) ([cd2d6f7](https://github.com/Redocly/redoc/commit/cd2d6f76e87c8385786a9c8e51c0d11c79d9707c))
- show contentEncoding on fields
- crash with OpenAPI 3.1 type as array of strings in requestBody
- nullable label not shown
* nullable object's fields were missing ([#1721](https://github.com/Redocly/redoc/issues/1721)) ([ddf297b](https://github.com/Redocly/redoc/commit/ddf297b11269ef515bd62771912a5609721d5e39))
### Features
* add github action to build docker images and push to ghcr.io on release ([#1614](https://github.com/Redocly/redoc/issues/1614)) ([919a5f0](https://github.com/Redocly/redoc/commit/919a5f02fb94ca869011d5eaf63ee71b61b60150))
* add yaml highlight ([#1684](https://github.com/Redocly/redoc/issues/1684)) ([d724440](https://github.com/Redocly/redoc/commit/d72444008533623c87f238fe8758b1dd518b89eb))
* added localization for some labels ([#1675](https://github.com/Redocly/redoc/issues/1675)) ([ec50858](https://github.com/Redocly/redoc/commit/ec50858ec47af08c5fe553266fe3c209fba97eae))
# [2.0.0-rc.55](https://github.com/Redocly/redoc/compare/v2.0.0-rc.54...v2.0.0-rc.55) (2021-07-01)
### Bug Fixes
* broken linkify ([3df72fb](https://github.com/Redocly/redoc/commit/3df72fb99ff24fb9a551565b7568d96f8614ed6f)), closes [#1655](https://github.com/Redocly/redoc/issues/1655)
* fix accidentally removed onLoaded ([b41a8b4](https://github.com/Redocly/redoc/commit/b41a8b4ac714084dc25de7914fa1f99386e907e2)), closes [#1656](https://github.com/Redocly/redoc/issues/1656)
### Features
* added git folder sync config ([a69f0fb](https://github.com/Redocly/redoc/commit/a69f0fb00986a04c812ab273711e8f3501b98139))
# [2.0.0-rc.54](https://github.com/Redocly/redoc/compare/v2.0.0-rc.53...v2.0.0-rc.54) (2021-06-09)
### Bug Fixes
* added missing semicolon to styling ([#1578](https://github.com/Redocly/redoc/issues/1578)) ([dfc4cf1](https://github.com/Redocly/redoc/commit/dfc4cf1caa131aa7bc6da6d489e3a8425d800326))
* parse json theme string for standalone tag ([#1492](https://github.com/Redocly/redoc/issues/1492)) ([d7a0a4d](https://github.com/Redocly/redoc/commit/d7a0a4da17241dd9c089202dba76a8312248616e))
* right absolute path for load and bundle definition ([#1579](https://github.com/Redocly/redoc/issues/1579)) ([ab2d57a](https://github.com/Redocly/redoc/commit/ab2d57a5a2ac5df007d76be0d664f3fb5f909566))
* use operation path if operation summary/description is not provided ([#1596](https://github.com/Redocly/redoc/issues/1596)) ([4b072be](https://github.com/Redocly/redoc/commit/4b072be8d1c0dc4f1fa627168eebaed0a0213e08)), closes [#1270](https://github.com/Redocly/redoc/issues/1270)
### Features
* add basic support OpenAPI 3.1 ([#1622](https://github.com/Redocly/redoc/issues/1622)) ([823be24](https://github.com/Redocly/redoc/commit/823be24b313c3a2445df7e0801a0cc79c20bacd1))
* merge refs oas 3.1 ([#1640](https://github.com/Redocly/redoc/issues/1640)) ([f4ea368](https://github.com/Redocly/redoc/commit/f4ea368f78a693fd70d48b5e0e5ffce3560432f4))
# [2.0.0-rc.51](https://github.com/Redocly/redoc/compare/v2.0.0-rc.50...v2.0.0-rc.51) (2021-04-08)
### Bug Fixes
* use openapi-core to bundle definition instead of json-schema-ref-parser ([5033946](https://github.com/Redocly/redoc/commit/503394655da2aac544e278796098cba93d9194b9)),
closes: [#1506](https://github.com/Redocly/redoc/issues/1506), [#1478](https://github.com/Redocly/redoc/issues/1478)
* add disable-google-font parameter to serve command in cli ([c7bbef5](https://github.com/Redocly/redoc/commit/c7bbef515524095e957729eac35a5b7a97619b55)), closes [#1501](https://github.com/Redocly/redoc/issues/1501)
# [2.0.0-rc.50](https://github.com/Redocly/redoc/compare/v2.0.0-rc.49...v2.0.0-rc.50) (2021-02-15)
### Bug Fixes
* add includes polyfill ([3ba622f](https://github.com/Redocly/redoc/commit/3ba622f3ab9e28c954fe05f42e7b90862fc3d544)), closes [#1530](https://github.com/Redocly/redoc/issues/1530)
* background-color in search results ([#1531](https://github.com/Redocly/redoc/issues/1531)) ([d288165](https://github.com/Redocly/redoc/commit/d288165a4ea04aedc23dba12020a73e86f20755b))
* false-positive recursive tag case when using oneOf + allOf ([#1534](https://github.com/Redocly/redoc/issues/1534)) ([8270481](https://github.com/Redocly/redoc/commit/8270481e9f0f381b392f7921d21cb06e0e673b6d))
# [2.0.0-rc.49](https://github.com/Redocly/redoc/compare/v2.0.0-rc.48...v2.0.0-rc.49) (2021-01-30)
### Bug Fixes
* crash on multiple examples on parameter object ([0dce880](https://github.com/Redocly/redoc/commit/0dce880dce1e489c7e8963e352d97603262f4b86)), closes [#1485](https://github.com/Redocly/redoc/issues/1485)
* fix SourceCodeWithCopy component to be non-pure ([040ce72](https://github.com/Redocly/redoc/commit/040ce72a8ae0c1ca7504e10e44d0b2ac7ba04977))
* pass boolean and number values as a string in highlight function ([#1512](https://github.com/Redocly/redoc/issues/1512)) ([c874a59](https://github.com/Redocly/redoc/commit/c874a5942c3bf9f6a2dc5909e31d57925d40aa86))
# [2.0.0-rc.48](https://github.com/Redocly/redoc/compare/v2.0.0-rc.47...v2.0.0-rc.48) (2020-11-30)
### Bug Fixes
* add missed labels to elements ([#1445](https://github.com/Redocly/redoc/issues/1445)) ([8c559bc](https://github.com/Redocly/redoc/commit/8c559bcbcde39efee7f1570b88840468bfdfb17c))
### Features
* add new option hideSchemaPattern ([#1475](https://github.com/Redocly/redoc/issues/1475)) ([bb4594e](https://github.com/Redocly/redoc/commit/bb4594ee58d89819c975bdb575083c0667e3d940))
* support multiple examples for parameters ([#1470](https://github.com/Redocly/redoc/issues/1470)) ([d12e410](https://github.com/Redocly/redoc/commit/d12e410d99a988948b359093159df79572bc78ab))
# [2.0.0-rc.46](https://github.com/Redocly/redoc/compare/v2.0.0-rc.45...v2.0.0-rc.46) (2020-11-05)
### Bug Fixes
* fix arrow color in responses ([#1452](https://github.com/Redocly/redoc/issues/1452)) ([6bedcf9](https://github.com/Redocly/redoc/commit/6bedcf94b26d820101ab510b28d2b76a38999eea))
* remove duplicated slash if hideHostname option enabled ([#1448](https://github.com/Redocly/redoc/issues/1448)) ([4729fc3](https://github.com/Redocly/redoc/commit/4729fc3d8fc83f4af087cd7932adf500b45bab4e))
* use shrinkwrap for cli package ([#1446](https://github.com/Redocly/redoc/issues/1446)) ([4567534](https://github.com/Redocly/redoc/commit/4567534cbb26f13a72a64d49faca64fc992d6dd8))
### Features
* add tabTextColor option for responses ([#1451](https://github.com/Redocly/redoc/issues/1451)) ([702fea0](https://github.com/Redocly/redoc/commit/702fea0f410499101efc554983c6db58acc84889))
# [2.0.0-rc.45](https://github.com/Redocly/redoc/compare/v2.0.0-rc.43...v2.0.0-rc.45) (2020-10-27)
### Bug Fixes
* fix the name of OpenID Connect security scheme ([#1425](https://github.com/Redocly/redoc/issues/1425)) ([c11f679](https://github.com/Redocly/redoc/commit/c11f679f82586a96225488c8a96d0c908bfd2e09))
* increase colors contrast to make them more accessible ([#1433](https://github.com/Redocly/redoc/issues/1433)) ([e2de5b0](https://github.com/Redocly/redoc/commit/e2de5b065eabd00d301ea61106ddafc65bd83afa))
### Features
* add field constraint indicator for uniqueItems ([#1423](https://github.com/Redocly/redoc/issues/1423)) ([c0ae9de](https://github.com/Redocly/redoc/commit/c0ae9de60758aa7561ce8a04b6e0060d0bc4a258)), closes [#1353](https://github.com/Redocly/redoc/issues/1353)
* new extensions hook PropertyDetailsCell + wrap property name into span ([0703f73](https://github.com/Redocly/redoc/commit/0703f73f79a1cabafdc1a908ebb0c5ab142ca825))
# [2.0.0-rc.44](https://github.com/Redocly/redoc/compare/v2.0.0-rc.43...v2.0.0-rc.44) (2020-10-16)
### Features
* new extensions hook PropertyDetailsCell + wrap property name into span ([0fae030](https://github.com/Redocly/redoc/commit/0fae03099645bd9d3795709175640583b08dfc3d))
# [2.0.0-rc.43](https://github.com/Redocly/redoc/compare/v2.0.0-rc.42...v2.0.0-rc.43) (2020-10-13)
### Bug Fixes
* fix broken observable after mobx upgrade ([#1415](https://github.com/Redocly/redoc/issues/1415)) ([26c407b](https://github.com/Redocly/redoc/commit/26c407bd0f2bc1ec9881e0a3668e09e645fc0cc0))
# [2.0.0-rc.42](https://github.com/Redocly/redoc/compare/v2.0.0-rc.41...v2.0.0-rc.42) (2020-10-13)
### Bug Fixes
* hide dropdown input on IE 11 ([#1403](https://github.com/Redocly/redoc/issues/1403)) ([6632d84](https://github.com/Redocly/redoc/commit/6632d844536532227cb92290f9fc2b6b2f913270))
* make samples accessible by keyboard ([#1401](https://github.com/Redocly/redoc/issues/1401)) ([146b38c](https://github.com/Redocly/redoc/commit/146b38c9d0b926765d8e00dd37204c30bf3ac4e0))
* make schema layout more responsive on small screen ([#1411](https://github.com/Redocly/redoc/issues/1411)) ([84ab95d](https://github.com/Redocly/redoc/commit/84ab95ddc7b5dc159098aecf82ad922ffd4a3093))
# [2.0.0-rc.41](https://github.com/Redocly/redoc/compare/v2.0.0-rc.40...v2.0.0-rc.41) (2020-09-24)
### Bug Fixes
* display response code at the top after adding a line break ([#1374](https://github.com/Redocly/redoc/issues/1374)) ([c801b87](https://github.com/Redocly/redoc/commit/c801b87d2aea5e17d35093e2548e1f51f42b1ee3))
* fix displaying response title ([#1376](https://github.com/Redocly/redoc/issues/1376)) ([f3e8ab4](https://github.com/Redocly/redoc/commit/f3e8ab4f8e5522c9ea1ddedb143e23c7d62f5807))
* fix displaying top-level object without any properties ([a5468fb](https://github.com/Redocly/redoc/commit/a5468fb7bb99fcfe33724af939b1a589c1219052))
* show long pattern and add toggle button ([#1375](https://github.com/Redocly/redoc/issues/1375)) ([a6b41aa](https://github.com/Redocly/redoc/commit/a6b41aa00b7592512fdaa7532d9f5d85238db29b))
### Features
* load external search index ([346b10f](https://github.com/Redocly/redoc/commit/346b10f1739d6b44066bdf1f6aac39d5ee3567d2))
* support for ignoring specified named schemas ([9730c4e](https://github.com/Redocly/redoc/commit/9730c4ee1c274c5775966959b69c209c40034b11))
# [2.0.0-rc.40](https://github.com/Redocly/redoc/compare/v2.0.0-rc.39...v2.0.0-rc.40) (2020-08-24)
### Bug Fixes
* invalid discriminator dropdown behavior with enum ([be07197](https://github.com/Redocly/redoc/commit/be07197e6d1e85a3fd3e61189a36b288751c077d))
# [2.0.0-rc.39](https://github.com/Redocly/redoc/compare/v2.0.0-rc.38...v2.0.0-rc.39) (2020-08-22)
### Bug Fixes
* fix broken dropdowns with SSR by using forked react-dropdown-aria ([c322639](https://github.com/Redocly/redoc/commit/c322639f7c3e7efbbd623ae83afb88faa91d9e67))
* make callbacks expandable by keyboard ([#1354](https://github.com/Redocly/redoc/issues/1354)) ([46eee7b](https://github.com/Redocly/redoc/commit/46eee7b70c8ee9da0d8857a823c4df39a5f18b53))
# [2.0.0-rc.38](https://github.com/Redocly/redoc/compare/v2.0.0-rc.37...v2.0.0-rc.38) (2020-08-20)
### Bug Fixes
* do not crash for invalid parameter.in value ([addf895](https://github.com/Redocly/redoc/commit/addf8956e33654a1586a8ac6ed7325519cd99da8)), closes [#1340](https://github.com/Redocly/redoc/issues/1340)
* scale sideMenu labels according to computed font size ([#1356](https://github.com/Redocly/redoc/issues/1356)) ([fed9a06](https://github.com/Redocly/redoc/commit/fed9a061d59592ec17cedbe4fd392e1f74c21527))
# [2.0.0-rc.37](https://github.com/Redocly/redoc/compare/v2.0.0-rc.36...v2.0.0-rc.37) (2020-08-14)
### Features
* add webhooks support ([#1304](https://github.com/Redocly/redoc/issues/1304)) ([41f81b4](https://github.com/Redocly/redoc/commit/41f81b4d96648fec6bf0c39799c0aa2dded48749))
# [2.0.0-rc.36](https://github.com/Redocly/redoc/compare/v2.0.0-rc.35...v2.0.0-rc.36) (2020-08-04)
### Bug Fixes
* highlight json keys using different color ([#1287](https://github.com/Redocly/redoc/issues/1287)) ([c9596d4](https://github.com/Redocly/redoc/commit/c9596d4b6cd9dced9fdee77525e0da90960c562a))
* make elements accessible by keyboard navigation tools ([#1339](https://github.com/Redocly/redoc/issues/1339)) ([2ce7189](https://github.com/Redocly/redoc/commit/2ce71895bc14f9189b4e6cbdb6d838898717823f))
### Features
* new option simpleOneOfTypeLabel ([7af2efe](https://github.com/Redocly/redoc/commit/7af2efe731cdb16ebe5de6cb3e96f80cceb7d98d))
# [2.0.0-rc.35](https://github.com/Redocly/redoc/compare/v2.0.0-rc.34...v2.0.0-rc.35) (2020-07-24)
### Bug Fixes
* update EnumValues component ([#1324](https://github.com/Redocly/redoc/issues/1324)) ([de27ac0](https://github.com/Redocly/redoc/commit/de27ac03081d55967f5a479fb1352a83b8ceb8b2))
# [2.0.0-rc.34](https://github.com/Redocly/redoc/compare/v2.0.0-rc.33...v2.0.0-rc.34) (2020-07-24)
Same as rc.33 by mistake
# [2.0.0-rc.33](https://github.com/Redocly/redoc/compare/v2.0.0-rc.31...v2.0.0-rc.33) (2020-07-21)
### Bug Fixes
* default style and explode for params ([633d712](https://github.com/Redocly/redoc/commit/633d71293fa9af2bda3bf456a9258625ee2b94a1)), closes [#1016](https://github.com/Redocly/redoc/issues/1016)
* fix contrast ratio for response titles ([47c6319](https://github.com/Redocly/redoc/commit/47c63192062d87b2b3205b915472930eaff6cc03))
* fix expand variable for vars with hyphens or dots ([0904b3f](https://github.com/Redocly/redoc/commit/0904b3fec24edc56c4a4951501fe02ae22fd852b)), closes [#926](https://github.com/Redocly/redoc/issues/926)
* make dropdowns accessible by keyboard ([e8a0d10](https://github.com/Redocly/redoc/commit/e8a0d105ca52204b0d6fd61f5e909d9dbbe6f147))
* make endpoint dropdown accessible ([3d25005](https://github.com/Redocly/redoc/commit/3d25005f084f06ac01b8fa13eb1d69092e99fd27))
* make properties focusable ([05fd754](https://github.com/Redocly/redoc/commit/05fd7543a29e0aeb364c1ba3f2d736656de7b3b7))
* make response sections focusable ([442014c](https://github.com/Redocly/redoc/commit/442014c06d6a7d2260adf7bc5798dd29869f10c9))
* make sample controls focusable ([006031c](https://github.com/Redocly/redoc/commit/006031c51787b617f2b0aed80a4b8486c5d2d3ca))
* update focus styling ([30a27c1](https://github.com/Redocly/redoc/commit/30a27c116b366428570d0b5516b5b2b4bcd0c5fc))
### Features
* add maxDisplayedEnumValues config and buttons for show/hide enums ([#1322](https://github.com/Redocly/redoc/issues/1322)) ([a2b018d](https://github.com/Redocly/redoc/commit/a2b018d393ee25fb8e9233f8123c29d14ab054c7))
* array size info based on min max Items properties ([#1308](https://github.com/Redocly/redoc/issues/1308)) ([644e96a](https://github.com/Redocly/redoc/commit/644e96ae457047ce09f55aa1f14a42c41dbc1dc8))
* new option sortEnumValuesAlphabetically ([#1321](https://github.com/Redocly/redoc/issues/1321)) ([a96a11a](https://github.com/Redocly/redoc/commit/a96a11a4dc8a509c6c3fba67dc4e065b66624e18))
# [2.0.0-rc.32](https://github.com/Redocly/redoc/compare/v2.0.0-rc.31...v2.0.0-rc.32) (2020-07-21)
Same as rc.31 by mistake
# [2.0.0-rc.31](https://github.com/Redocly/redoc/compare/v2.0.0-rc.30...v2.0.0-rc.31) (2020-06-25)
### Bug Fixes
* do not display long regexps ([#1295](https://github.com/Redocly/redoc/issues/1295)) ([2ede22c](https://github.com/Redocly/redoc/commit/2ede22c45cc970ea1ac296adbae1f6032744f823))
* prevent body scrolling when user scrolls side menu ([#1300](https://github.com/Redocly/redoc/issues/1300)) ([865a56a](https://github.com/Redocly/redoc/commit/865a56a2a9a105ef7b3b9150767399ca7339195a))
# [2.0.0-rc.30](https://github.com/Redocly/redoc/compare/v2.0.0-rc.29...v2.0.0-rc.30) (2020-05-25)
### Bug Fixes
* add security headers to Docker nginx config ([#1244](https://github.com/Redocly/redoc/issues/1244)) ([4512436](https://github.com/Redocly/redoc/commit/4512436f1d88bd99558fe5f8384b37aa62562480))
* keep 3-column layout on 13-inch mbp ([8d1d4c8](https://github.com/Redocly/redoc/commit/8d1d4c82e1377aecf936985ac13fa9bf5257562a))
* proper search-index dispose ([9dd129d](https://github.com/Redocly/redoc/commit/9dd129d90b87f24ad20f084c44d48be50d750c94))
# [2.0.0-rc.29](https://github.com/Redocly/redoc/compare/v2.0.0-rc.28...v2.0.0-rc.29) (2020-05-10)
### Bug Fixes
* depreacate x-code-samples, rename to x-codeSamples for consistency ([becc2f5](https://github.com/Redocly/redoc/commit/becc2f58568388b6500e6476874f27f62ff58ba9))
* do not crash on incompatible allOf, console.warn instead ([6e607b9](https://github.com/Redocly/redoc/commit/6e607b9a2928b062c7705087432c0f0d88e74f5d)), closes [#1156](https://github.com/Redocly/redoc/issues/1156)
* download button opens in new tab instead of downloading ([b59faad](https://github.com/Redocly/redoc/commit/b59faada8210a4c8f61fa0e850b7d844574a46d1)), closes [#1247](https://github.com/Redocly/redoc/issues/1247)
* fix broken md headings with ampersand ([8460659](https://github.com/Redocly/redoc/commit/846065916d58cf628f0bc93c74be429ecdea12e7)), closes [#1173](https://github.com/Redocly/redoc/issues/1173)
### Features
* **cli:** add the --title option to the serve subcommand ([#1160](https://github.com/Redocly/redoc/issues/1160)) ([10414fc](https://github.com/Redocly/redoc/commit/10414fc6d5c0f91b5e93b1ed2326e4e508611324))
# [2.0.0-rc.28](https://github.com/Redocly/redoc/compare/v2.0.0-rc.27...v2.0.0-rc.28) (2020-04-27)
### Bug Fixes
* encode URLs in json samples linkify (xss) ([62c01da](https://github.com/Redocly/redoc/commit/62c01da420fca2137674ae562d4ecba54db97da9)), thanks to @masatokinugawa
# [2.0.0-rc.27](https://github.com/Redocly/redoc/compare/v2.0.0-rc.26...v2.0.0-rc.27) (2020-04-20)
### Features
* add callbacks support ([#1224](https://github.com/Redocly/redoc/issues/1224)) ([57e93ec](https://github.com/Redocly/redoc/commit/57e93ec4355de2659fcb5449b14b7ed738c6c276))
# [2.0.0-rc.26](https://github.com/Redocly/redoc/compare/v2.0.0-rc.25...v2.0.0-rc.26) (2020-03-29)
### Bug Fixes
* crash to wrong spelling in localeCompare ([3908a7c](https://github.com/Redocly/redoc/commit/3908a7c46448d277b82318659cdea65db52f9e70)), closes [#1218](https://github.com/Redocly/redoc/issues/1218)
# [2.0.0-rc.25](https://github.com/Redocly/redoc/compare/v2.0.0-rc.24...v2.0.0-rc.25) (2020-03-27)
### Bug Fixes
* do not collapse top level on Collapse All in json samples ([#1209](https://github.com/Redocly/redoc/issues/1209)) ([830371b](https://github.com/Redocly/redoc/commit/830371b5d1edf4ba7a138b3b3d78148d020e0349))
* fix passing boolean value to showExtensions options ([#1211](https://github.com/Redocly/redoc/issues/1211)) ([c6eaa02](https://github.com/Redocly/redoc/commit/c6eaa0281bb0f62b019c865e4aefb863ce84d628))
* improve names for some theme settings ([a0bd27c](https://github.com/Redocly/redoc/commit/a0bd27c75427a39abc9c753b0654678eed2f3851))
* sort discriminator entries by mapping order ([#1216](https://github.com/Redocly/redoc/issues/1216)) ([ac4f915](https://github.com/Redocly/redoc/commit/ac4f915494f289d1c97ffdfe3af59efd94734f8c))
### Features
* add x-explicitMappingOnly extension ([#1215](https://github.com/Redocly/redoc/issues/1215)) ([ea5b0aa](https://github.com/Redocly/redoc/commit/ea5b0aabf9133d11d3a8fcb79f9515d21e0d7ac0))
# [2.0.0-rc.24](https://github.com/Redocly/redoc/compare/v2.0.0-rc.23...v2.0.0-rc.24) (2020-03-17)
### Bug Fixes
* Add debounce for 300 ms when searching ([#1089](https://github.com/Redocly/redoc/issues/1089)) ([373f018](https://github.com/Redocly/redoc/commit/373f018d0c183f83d07a4dbad4a4e2c9ab159f69))
* do not load SearchWorker if disableSearch is `true` ([#1191](https://github.com/Redocly/redoc/issues/1191)) ([af415e8](https://github.com/Redocly/redoc/commit/af415e89e8c074a3f7c84f76f24020a7bd545483)), closes [#764](https://github.com/Redocly/redoc/issues/764)
* fix major search performance due to wrong marker element ([8c053cc](https://github.com/Redocly/redoc/commit/8c053cc474e88befc3338307317c0702d212d4c3)), closes [#1109](https://github.com/Redocly/redoc/issues/1109)
### Features
* new option expandSingleSchemaField ([7608800](https://github.com/Redocly/redoc/commit/7608800d0acaa2fa0099dc840e17cd5aa90b54ca))
# [2.0.0-rc.23](https://github.com/Redocly/redoc/compare/v2.0.0-rc.22...v2.0.0-rc.23) (2020-02-09)
### Bug Fixes
* fix broken sticky sidebar in Chrome 80 ([1a2a7dd](https://github.com/Redocly/redoc/commit/1a2a7dd8331cedd6ced4c18accf0b417549b3ff3)), closes [#1167](https://github.com/Redocly/redoc/issues/1167)
# [2.0.0-rc.22](https://github.com/Redocly/redoc/compare/v2.0.0-rc.21...v2.0.0-rc.22) (2020-01-15)
### Bug Fixes
* do not process oneOf if inherited from parent with discriminator ([5248415](https://github.com/Redocly/redoc/commit/52484157912d908daea8255d0b7d684b33258d7a))
### Features
* add HTTP syntax highlighting ([#1157](https://github.com/Redocly/redoc/issues/1157)) ([27a4af7](https://github.com/Redocly/redoc/commit/27a4af707686d56280753473b4294ee4af096534))
# [2.0.0-rc.21](https://github.com/Redocly/redoc/compare/v2.0.0-rc.20...v2.0.0-rc.21) (2020-01-10)
### Bug Fixes
* empty servers behavior per OAS spec ([ed1db0c](https://github.com/Redocly/redoc/commit/ed1db0c9027087ae0ae923e390e3e1d638a647ae)), closes [#1151](https://github.com/Redocly/redoc/issues/1151)
* fix duplicated content in tags when using md headings ([a260c84](https://github.com/Redocly/redoc/commit/a260c8414c34a259a70a20ebcd20ecbb06c3d250)), closes [#1150](https://github.com/Redocly/redoc/issues/1150) [#1152](https://github.com/Redocly/redoc/issues/1152)
* use mobile menu background color value from theme ([#1144](https://github.com/Redocly/redoc/issues/1144)) ([41a9b3c](https://github.com/Redocly/redoc/commit/41a9b3c18228d236d182d3c15c9abc35ae72a0d5))
# [2.0.0-rc.20](https://github.com/Redocly/redoc/compare/v2.0.0-rc.19...v2.0.0-rc.20) (2019-12-13)
### Bug Fixes
* fix missing parameters ([942d782](https://github.com/Redocly/redoc/commit/942d782b5a8d08767a7538741b75587cf1e67f44)), closes [#1142](https://github.com/Redocly/redoc/issues/1142)
# [2.0.0-rc.19](https://github.com/Redocly/redoc/compare/v2.0.0-rc.18...v2.0.0-rc.19) (2019-12-13)
### Bug Fixes
* change the title of "Security Scheme Type" to match "HTTP Authorization Scheme" ([#1126](https://github.com/Redocly/redoc/issues/1126)) ([289c8e6](https://github.com/Redocly/redoc/commit/289c8e6ae1ff00371f86d3f2646607c64bc30050))
* do not URI-encode parameter values for better readability ([6aeb0bf](https://github.com/Redocly/redoc/commit/6aeb0bf68df3f03f2ca1317f8b5787545bd363f1)), closes [#1138](https://github.com/Redocly/redoc/issues/1138)
* fix sortByRequired (stabilise sort) ([#1136](https://github.com/Redocly/redoc/issues/1136)) ([d92434d](https://github.com/Redocly/redoc/commit/d92434d11b08e8b0f6be5453ec69aa1d0e0df79f)), closes [#1104](https://github.com/Redocly/redoc/issues/1104) [#1121](https://github.com/Redocly/redoc/issues/1121) [#1061](https://github.com/Redocly/redoc/issues/1061)
* h2 padding on mobile ([7ed1a7e](https://github.com/Redocly/redoc/commit/7ed1a7ef0e7978a0dfb40afcc72c3362466f9624)), closes [#1118](https://github.com/Redocly/redoc/issues/1118)
* python comment stripped in headings ([4a25aae](https://github.com/Redocly/redoc/commit/4a25aaef69fad814836392ea7e41eb32c182a261)), closes [#1116](https://github.com/Redocly/redoc/issues/1116)
* remove hardcoded fontFamily for oneOf labels ([094ce91](https://github.com/Redocly/redoc/commit/094ce914e3f9cfe567b39db4ea88208014d8b686)), closes [#1120](https://github.com/Redocly/redoc/issues/1120)
* search-box use theme ([1bf490c](https://github.com/Redocly/redoc/commit/1bf490c05b343d262f8819bf1ddc433e070be1b9))
* support discriminator mapping 1-n ([6e390f9](https://github.com/Redocly/redoc/commit/6e390f9c7909da0b5d1d6fc571ab4ad92e715d6e)), closes [#1111](https://github.com/Redocly/redoc/issues/1111)
* wrap json examples in code tag ([#1064](https://github.com/Redocly/redoc/issues/1064)) ([dc5430e](https://github.com/Redocly/redoc/commit/dc5430e53def780a81612d269cc3aea3f8785eea))
### Features
* display `multipleOf` constrains ([#1065](https://github.com/Redocly/redoc/issues/1065)) ([3e90133](https://github.com/Redocly/redoc/commit/3e901336643b988ae45ae86c485005b8865e6e04))
* enable menuToggle by default ([5d81abe](https://github.com/Redocly/redoc/commit/5d81abeb28c1e4f2826e41424c10163834c37e45))
* new option hideSchemaTitles ([11cc4c4](https://github.com/Redocly/redoc/commit/11cc4c4c3e04a7e5bf3a9ebba20d10fa882a49e5))
* new option payloadSampleIdx ([eaaa99d](https://github.com/Redocly/redoc/commit/eaaa99d68e2392273e8d9c0173db3b546e035d5f))
* **cli:** Fallback on the spec's title before falling back on… ([#1073](https://github.com/Redocly/redoc/issues/1073)) ([e01eea4](https://github.com/Redocly/redoc/commit/e01eea445c93d74b66533c860d76bb3aff4d6df2))
# [2.0.0-rc.18](https://github.com/Redocly/redoc/compare/v2.0.0-rc.17...v2.0.0-rc.18) (2019-10-16)
### Bug Fixes
* add oneOf buttons vertical space when wrapped to new line ([cd9fd61](https://github.com/Redocly/redoc/commit/cd9fd61))
* improve mime-type dropdown font ([ce885f8](https://github.com/Redocly/redoc/commit/ce885f8))
# [2.0.0-rc.17](https://github.com/Redocly/redoc/compare/v2.0.0-rc.16...v2.0.0-rc.17) (2019-10-16)
### Bug Fixes
* active menu item scroll into view ([0a01e9a](https://github.com/Redocly/redoc/commit/0a01e9a))
* changed several components style font-family to monospace ([#1063](https://github.com/Redocly/redoc/issues/1063)) ([0c20e64](https://github.com/Redocly/redoc/commit/0c20e64)), closes [#909](https://github.com/Redocly/redoc/issues/909)
* no quotes for default values in header fields. ([#1059](https://github.com/Redocly/redoc/issues/1059)) ([b5af71d](https://github.com/Redocly/redoc/commit/b5af71d))
* types over-pluralization ([#1057](https://github.com/Redocly/redoc/issues/1057)) ([4494f80](https://github.com/Redocly/redoc/commit/4494f80)), closes [#1053](https://github.com/Redocly/redoc/issues/1053)
### Features
* added support for file paths as --options cli argument ([#1049](https://github.com/Redocly/redoc/issues/1049)) ([4adb927](https://github.com/Redocly/redoc/commit/4adb927))
# [2.0.0-rc.16](https://github.com/Redocly/redoc/compare/v2.0.0-rc.15...v2.0.0-rc.16) (2019-09-30)
### Bug Fixes
* fix scrollYOffset when SSR ([d09c1c1](https://github.com/Redocly/redoc/commit/d09c1c1))
# [2.0.0-rc.15](https://github.com/Redocly/redoc/compare/v2.0.0-rc.14...v2.0.0-rc.15) (2019-09-30)
### Bug Fixes
* auth section appears twice ([5aa7784](https://github.com/Redocly/redoc/commit/5aa7784)), closes [#818](https://github.com/Redocly/redoc/issues/818)
* clicking on group title breaks first tag ([4649683](https://github.com/Redocly/redoc/commit/4649683)), closes [#1034](https://github.com/Redocly/redoc/issues/1034)
* do not crash on empty scopes ([e787d9e](https://github.com/Redocly/redoc/commit/e787d9e)), closes [#1044](https://github.com/Redocly/redoc/issues/1044)
* false-positive recursive detection with allOf at the same level ([faa74d6](https://github.com/Redocly/redoc/commit/faa74d6))
* fix scrollYOffset when SSR ([21258a5](https://github.com/Redocly/redoc/commit/21258a5))
* left menu item before group is not highlighted ([67e2a8f](https://github.com/Redocly/redoc/commit/67e2a8f)), closes [#1033](https://github.com/Redocly/redoc/issues/1033)
* remove excessive whitespace between md sections on small screens ([e318fb3](https://github.com/Redocly/redoc/commit/e318fb3)), closes [#874](https://github.com/Redocly/redoc/issues/874)
* use url-template dependency ([#1008](https://github.com/Redocly/redoc/issues/1008)) ([32a464a](https://github.com/Redocly/redoc/commit/32a464a)), closes [#1007](https://github.com/Redocly/redoc/issues/1007)
### Features
* **cli:** added support for JSON string value for --options CLI argument ([#1047](https://github.com/Redocly/redoc/issues/1047)) ([2a28130](https://github.com/Redocly/redoc/commit/2a28130)), closes [#797](https://github.com/Redocly/redoc/issues/797)
* **cli:** add `disableGoogleFont` parameter to cli ([#1045](https://github.com/Redocly/redoc/issues/1045)) ([aceb343](https://github.com/Redocly/redoc/commit/aceb343))
* new option expandDefaultServerVariables ([#1014](https://github.com/Redocly/redoc/issues/1014)) ([0360dce](https://github.com/Redocly/redoc/commit/0360dce))
# [2.0.0-rc.14](https://github.com/Redocly/redoc/compare/v2.0.0-rc.13...v2.0.0-rc.14) (2019-08-07)
### Bug Fixes
* fix escaping JSON string values ([58cb20d](https://github.com/Redocly/redoc/commit/58cb20d)), closes [#999](https://github.com/Redocly/redoc/issues/999)
* revert expanding default server variables ([7849f7f](https://github.com/Redocly/redoc/commit/7849f7f))
# [2.0.0-rc.13](https://github.com/Redocly/redoc/compare/v2.0.0-rc.12...v2.0.0-rc.13) (2019-08-01)
### Bug Fixes
* enum list doesn't wrap ([bfbb0c1](https://github.com/Redocly/redoc/commit/bfbb0c1)), closes [#993](https://github.com/Redocly/redoc/issues/993)
* incorrect serialization of some parameter samples ([aba45db](https://github.com/Redocly/redoc/commit/aba45db)), closes [#992](https://github.com/Redocly/redoc/issues/992)
* support json serialization for parameter examples ([1367380](https://github.com/Redocly/redoc/commit/1367380)), closes [#934](https://github.com/Redocly/redoc/issues/934)
* unify accordion icons for responses section ([2afc2e4](https://github.com/Redocly/redoc/commit/2afc2e4)), closes [#975](https://github.com/Redocly/redoc/issues/975)
* update to core.js 3 ([9e3375d](https://github.com/Redocly/redoc/commit/9e3375d)), closes [#997](https://github.com/Redocly/redoc/issues/997)
# [2.0.0-rc.12](https://github.com/Redocly/redoc/compare/v2.0.0-rc.11...v2.0.0-rc.12) (2019-07-30)
### Bug Fixes
* rename ObjectDescription to SchemaDefinition as discussed ([4496622](https://github.com/Redocly/redoc/commit/4496622))
# [2.0.0-rc.11](https://github.com/Redocly/redoc/compare/v2.0.0-rc.10...v2.0.0-rc.11) (2019-07-30)
### Bug Fixes
* do not add extra slashes to pattern ([70d1ee9](https://github.com/Redocly/redoc/commit/70d1ee9)), closes [#983](https://github.com/Redocly/redoc/issues/983)
* dropdown fixes related to object description ([0504ad4](https://github.com/Redocly/redoc/commit/0504ad4))
* incorrect serialization of parameter sample with hyphen ([f7dd658](https://github.com/Redocly/redoc/commit/f7dd658))
* redoc-cli: Add missing content type header on compressed responses of `/` path
### Features
* menu items from tags + md extension for Schema Definition ([#681](https://github.com/Redocly/redoc/pull/681))
* new option `menuToggle` - fold active MenuItem if clicked ([#963](https://github.com/Redocly/redoc/issues/963))
* Add option for skipping quotes in enums `enumSkipQuotes` ([#968](https://github.com/Redocly/redoc/issues/968)) ([afc7e36](https://github.com/Redocly/redoc/commit/afc7e36))
* add `sampleCollapseLevel` option ([#937](https://github.com/Redocly/redoc/issues/937)) ([d3f1c16](https://github.com/Redocly/redoc/commit/d3f1c16))
# [2.0.0-rc.10](https://github.com/Redocly/redoc/compare/v2.0.0-rc.9...v2.0.0-rc.10) (2019-07-08)
### Bug Fixes
* broken headings with single quote ([51d3b9b](https://github.com/Redocly/redoc/commit/51d3b9b)), closes [#955](https://github.com/Redocly/redoc/issues/955)
* fix fields table overflow if deeply nested with long title ([12b7057](https://github.com/Redocly/redoc/commit/12b7057))
* hide empty example when it is not defined ([4bd499f](https://github.com/Redocly/redoc/commit/4bd499f))
* markdown in examples descriptions + minor ui tweaks ([f52d9e8](https://github.com/Redocly/redoc/commit/f52d9e8))
* organize response examples in dropdown and display description ([995e557](https://github.com/Redocly/redoc/commit/995e557))
# [2.0.0-rc.9](https://github.com/Redocly/redoc/compare/v2.0.0-rc.8-1...v2.0.0-rc.9) (2019-06-27)
### Bug Fixes
* fix regression double slashes added to full URL display ([f29a4fe](https://github.com/Redocly/redoc/commit/f29a4fe))
* IE11, add missing Object.assign polyfill ([888f04e](https://github.com/Redocly/redoc/commit/888f04e))
* serialize parameter example values according to the spec ([#917](https://github.com/Redocly/redoc/issues/917)) ([3939286](https://github.com/Redocly/redoc/commit/3939286))
* styled-component style error in tabs ([#946](https://github.com/Redocly/redoc/issues/946)) ([c488bbf](https://github.com/Redocly/redoc/commit/c488bbf))
### Features
* add x-additionalPropertiesName ([#622](https://github.com/Redocly/redoc/issues/622)) ([#944](https://github.com/Redocly/redoc/issues/944)) ([0eb1e66](https://github.com/Redocly/redoc/commit/0eb1e66))
# [2.0.0-rc.8-1](https://github.com/Rebilly/ReDoc/compare/v2.0.0-rc.8...v2.0.0-rc.8-1) (2019-05-13)
### Bug Fixes
* crash with empty servers with redoc-cli ([3d52b39](https://github.com/Rebilly/ReDoc/commit/3d52b39))
# [2.0.0-rc.8](https://github.com/Rebilly/ReDoc/compare/v2.0.0-rc.7...v2.0.0-rc.8) (2019-05-13)
### Bug Fixes
* fix broken CLI again ([4e12b5d](https://github.com/Rebilly/ReDoc/commit/4e12b5d))
* fix logo gutter bg ([81896d3](https://github.com/Rebilly/ReDoc/commit/81896d3))
# [2.0.0-rc.7](https://github.com/Rebilly/ReDoc/compare/v2.0.0-rc.6...v2.0.0-rc.7) (2019-05-13)
### Bug Fixes
* crash in node due to broken URL parsing ([8df2b97](https://github.com/Rebilly/ReDoc/commit/8df2b97))
# [2.0.0-rc.6](https://github.com/Rebilly/ReDoc/compare/v2.0.0-rc.5...v2.0.0-rc.6) (2019-05-13)
### Bug Fixes
* broken schema tables with long enums ([3a74b74](https://github.com/Rebilly/ReDoc/commit/3a74b74))
* deep linking sometimes not working when sent over messengers ([2491d97](https://github.com/Rebilly/ReDoc/commit/2491d97))
# [2.0.0-rc.5](https://github.com/Rebilly/ReDoc/compare/v2.0.0-rc.4...v2.0.0-rc.5) (2019-05-13)
### Bug Fixes
* change fontFamily for EndpointInfo ([#866](https://github.com/Rebilly/ReDoc/issues/866)) ([851b133](https://github.com/Rebilly/ReDoc/commit/851b133))
* clean up field values display ([#855](https://github.com/Rebilly/ReDoc/issues/855)) ([5c91590](https://github.com/Rebilly/ReDoc/commit/5c91590))
* discriminator and oneOf title fix ([a3d7d7a](https://github.com/Rebilly/ReDoc/commit/a3d7d7a))
* encode x-www-form-urlencoded examples correctly ([65930ad](https://github.com/Rebilly/ReDoc/commit/65930ad)), closes [#870](https://github.com/Rebilly/ReDoc/issues/870)
* fix redoc-cli broken dependencies ([81a7568](https://github.com/Rebilly/ReDoc/commit/81a7568))
* IE11 add missing fetch and URL polyfills ([d2ce1bd](https://github.com/Rebilly/ReDoc/commit/d2ce1bd)), closes [#875](https://github.com/Rebilly/ReDoc/issues/875)
* ignore empty x-tagGroups array ([#869](https://github.com/Rebilly/ReDoc/issues/869)) ([4366a0d](https://github.com/Rebilly/ReDoc/commit/4366a0d))
* incorrect detected schema title for deeply inherited schemas ([7d7b4e3](https://github.com/Rebilly/ReDoc/commit/7d7b4e3))
* pluralize array of types ([fdcac30](https://github.com/Rebilly/ReDoc/commit/fdcac30))
* remove huge space after Authentication section ([548fae3](https://github.com/Rebilly/ReDoc/commit/548fae3)), closes [#872](https://github.com/Rebilly/ReDoc/issues/872)
* remove query string from server URL ([#895](https://github.com/Rebilly/ReDoc/issues/895)) ([64453ff](https://github.com/Rebilly/ReDoc/commit/64453ff))
* remove tabs top margin ([5c187f3](https://github.com/Rebilly/ReDoc/commit/5c187f3))
* right panel code samples bg color ([de2aed2](https://github.com/Rebilly/ReDoc/commit/de2aed2))
* tidy up non-redoc vendor extension presentation ([#847](https://github.com/Rebilly/ReDoc/issues/847)) ([b21cd3d](https://github.com/Rebilly/ReDoc/commit/b21cd3d))
* update apiKey in to be titleize ([#902](https://github.com/Rebilly/ReDoc/issues/902)) ([35df477](https://github.com/Rebilly/ReDoc/commit/35df477))
* **cli:** add node-libs-browser to the deps ([6c79901](https://github.com/Rebilly/ReDoc/commit/6c79901)), closes [#850](https://github.com/Rebilly/ReDoc/issues/850)
### Features
* add hideSingleRequestSampleTab option ([4550e4d](https://github.com/Rebilly/ReDoc/commit/4550e4d))
* add lineHeight config for headings ([#894](https://github.com/Rebilly/ReDoc/issues/894)) ([5dd5d6d](https://github.com/Rebilly/ReDoc/commit/5dd5d6d))
* basic UI labels configuration ([b0e660e](https://github.com/Rebilly/ReDoc/commit/b0e660e)). Can be used for translations later.
* add logo gutter to the theme ([82c0cb1a](https://github.com/Rebilly/ReDoc/commit/82c0cb1a)).
# [2.0.0-rc.4](https://github.com/Rebilly/ReDoc/compare/v2.0.0-rc.3...v2.0.0-rc.4) (2019-03-15)
### Bug Fixes
* move swagger2openapi to deps because of missing transitive deps ([ed9b878](https://github.com/Rebilly/ReDoc/commit/ed9b878))
### Features
* display requestBody description [#833](https://github.com/Rebilly/ReDoc/issues/833) ([#838](https://github.com/Rebilly/ReDoc/issues/838)) ([56ca371](https://github.com/Rebilly/ReDoc/commit/56ca371))
# [2.0.0-rc.3](https://github.com/Rebilly/ReDoc/compare/v2.0.0-rc.2...v2.0.0-rc.3) (2019-03-15)
### Bug Fixes
* add extra deref step for anyOf/oneOf variants ([d81b631](https://github.com/Rebilly/ReDoc/commit/d81b631)), closes [#810](https://github.com/Rebilly/ReDoc/issues/810)
* duplicate keys in request samples ([3ce5bff](https://github.com/Rebilly/ReDoc/commit/3ce5bff)), closes [#815](https://github.com/Rebilly/ReDoc/issues/815)
* escape backslashes in string literals ([#823](https://github.com/Rebilly/ReDoc/issues/823)) ([70faca1](https://github.com/Rebilly/ReDoc/commit/70faca1)), closes [#822](https://github.com/Rebilly/ReDoc/issues/822)
* escape quotes in string values ([0473165](https://github.com/Rebilly/ReDoc/commit/0473165)), closes [#882](https://github.com/Rebilly/ReDoc/issues/882)
* pin lunr version in ReDoc ([178ff4c](https://github.com/Rebilly/ReDoc/commit/178ff4c)), closes [#844](https://github.com/Rebilly/ReDoc/issues/844)
* set last section min-height ([4dd79cd](https://github.com/Rebilly/ReDoc/commit/4dd79cd)), closes [#820](https://github.com/Rebilly/ReDoc/issues/820)
### Features
* support externalValue for examples ([2cdfcd2](https://github.com/Rebilly/ReDoc/commit/2cdfcd2)), closes [#551](https://github.com/Rebilly/ReDoc/issues/551) [#840](https://github.com/Rebilly/ReDoc/issues/840)
* **cli:** Add templateOptions param to pass additional data to custom template ([#792](https://github.com/Rebilly/ReDoc/issues/792)) ([4e8ee03](https://github.com/Rebilly/ReDoc/commit/4e8ee03))
# [2.0.0-rc.2](https://github.com/Rebilly/ReDoc/compare/v2.0.0-rc.1...v2.0.0-rc.2) (2019-01-27)
### Bug Fixes
* make padding for md code blocks and code samples consistent ([007752d](https://github.com/Rebilly/ReDoc/commit/007752d))
* make syntax highlighting for md js code blocks same as for payload samples ([d197c0f](https://github.com/Rebilly/ReDoc/commit/d197c0f))
* Only display API version if present ([#773](https://github.com/Rebilly/ReDoc/issues/773)) ([fb3cb36](https://github.com/Rebilly/ReDoc/commit/fb3cb36))
# [2.0.0-rc.1](https://github.com/Rebilly/ReDoc/compare/v2.0.0-rc.0...v2.0.0-rc.1) (2019-01-17)
### Bug Fixes
* allow docker container serving under non-root URLs ([#731](https://github.com/Rebilly/ReDoc/issues/731)) ([cfb6f0f](https://github.com/Rebilly/ReDoc/commit/cfb6f0f)), closes [#730](https://github.com/Rebilly/ReDoc/issues/730)
* make example/defaults badge consistent with code blocks ([fa39ce4](https://github.com/Rebilly/ReDoc/commit/fa39ce4))
* pattern constrain spacing ([c7436f2](https://github.com/Rebilly/ReDoc/commit/c7436f2))
* sidebar navigation issues when scrollYOffset is float number ([c04f387](https://github.com/Rebilly/ReDoc/commit/c04f387)), closes [#748](https://github.com/Rebilly/ReDoc/issues/748)
# [2.0.0-rc.0](https://github.com/Rebilly/ReDoc/compare/v2.0.0-alpha.41...v2.0.0-rc.0) (2018-11-27)
### Bug Fixes
* false-positive recursive detection with oneOf ([59eaa8d](https://github.com/Rebilly/ReDoc/commit/59eaa8d)), closes [#723](https://github.com/Rebilly/ReDoc/issues/723) [#585](https://github.com/Rebilly/ReDoc/issues/585)
* fix hideHostname also hiding basePath ([b5f3224](https://github.com/Rebilly/ReDoc/commit/b5f3224)), closes [#677](https://github.com/Rebilly/ReDoc/issues/677)
* fix spacing with nested markdown lists ([f2f6909](https://github.com/Rebilly/ReDoc/commit/f2f6909)), closes [#718](https://github.com/Rebilly/ReDoc/issues/718)
* improve scrolling performance in Chrome with non-wrapped json examples ([a69c402](https://github.com/Rebilly/ReDoc/commit/a69c402))
* nested oneOf button spacing ([3673720](https://github.com/Rebilly/ReDoc/commit/3673720)), closes [#719](https://github.com/Rebilly/ReDoc/issues/719)
* onLoaded callback not run on spec error ([e77df0c](https://github.com/Rebilly/ReDoc/commit/e77df0c)), closes [#690](https://github.com/Rebilly/ReDoc/issues/690)
* theme improvements by [@stasiukanya](https://github.com/stasiukanya) ([e2d0cd5](https://github.com/Rebilly/ReDoc/commit/e2d0cd5))
* **cli:** old peer dependency issue with styled-components ([#699](https://github.com/Rebilly/ReDoc/issues/699)) ([9e2853c](https://github.com/Rebilly/ReDoc/commit/9e2853c))
### Features
* Add feature to specify href for logo explicitly ([#645](https://github.com/Rebilly/ReDoc/issues/645)) ([87fd7d7](https://github.com/Rebilly/ReDoc/commit/87fd7d7))
* add support for markdown in Server Object ([155d214](https://github.com/Rebilly/ReDoc/commit/155d214))
* Add support for minLength and maxLength constraint humanization ([#700](https://github.com/Rebilly/ReDoc/issues/700)) ([f40568b](https://github.com/Rebilly/ReDoc/commit/f40568b)), closes [#42](https://github.com/Rebilly/ReDoc/issues/42) [/github.com/Rebilly/ReDoc/issues/42#issuecomment-371883853](https://github.com//github.com/Rebilly/ReDoc/issues/42/issues/issuecomment-371883853)
<a name="2.0.0-alpha.41"></a>
# [2.0.0-alpha.41](https://github.com/Rebilly/ReDoc/compare/v2.0.0-alpha.40...v2.0.0-alpha.41) (2018-10-18)
### Bug Fixes
* add null check in dispose method ([#675](https://github.com/Rebilly/ReDoc/issues/675)) ([6b7c5b7](https://github.com/Rebilly/ReDoc/commit/6b7c5b7))
* extensionHook not being used ([a4a4013](https://github.com/Rebilly/ReDoc/commit/a4a4013)), closes [#665](https://github.com/Rebilly/ReDoc/issues/665)
* fix issue with broken markdown caused by marked bug ([70cf293](https://github.com/Rebilly/ReDoc/commit/70cf293))
### Peer dependencies updates
* ReDoc now requires `styled-components@^4.0.1` to be installed if used as React component
<a name="2.0.0-alpha.40"></a>
# [2.0.0-alpha.40](https://github.com/Rebilly/ReDoc/compare/v2.0.0-alpha.39...v2.0.0-alpha.40) (2018-10-05)
### Bug Fixes
* **cli:** add styled-components to dependencies ([2d63fa0](https://github.com/Rebilly/ReDoc/commit/2d63fa0))
* allOf inside oneOf overwritten and not rendered ([fe3383d](https://github.com/Rebilly/ReDoc/commit/fe3383d)), closes [#660](https://github.com/Rebilly/ReDoc/issues/660)
* fix panel paddings on small screens ([f39fc98](https://github.com/Rebilly/ReDoc/commit/f39fc98))
* minor media print improvements ([fbcec82](https://github.com/Rebilly/ReDoc/commit/fbcec82))
* remove extra-padding caused by empty group sections ([974bc7d](https://github.com/Rebilly/ReDoc/commit/974bc7d))
* server overriding didn't work on Path Item object ([355764d](https://github.com/Rebilly/ReDoc/commit/355764d)), closes [#656](https://github.com/Rebilly/ReDoc/issues/656)
### Features
* new option `onlyRequiredInSamples` ([#646](https://github.com/Rebilly/ReDoc/issues/646)) ([10bca66](https://github.com/Rebilly/ReDoc/commit/10bca66))
* new option `sortPropsAlphabetically` ([b87cf0d](https://github.com/Rebilly/ReDoc/commit/b87cf0d))
* new theme options `spacing.sectionHorizontal` and `spacing.sectionVertical` ([505463f](https://github.com/Rebilly/ReDoc/commit/505463f))
* turn off code-blocks wrapping (enable using `theme.typography.code.wrap: true`) ([393681b](https://github.com/Rebilly/ReDoc/commit/393681b)), closes [#658](https://github.com/Rebilly/ReDoc/issues/658)
<a name="2.0.0-alpha.39"></a>
# [2.0.0-alpha.39](https://github.com/Rebilly/ReDoc/compare/v2.0.0-alpha.38...v2.0.0-alpha.39) (2018-09-14)
### Bug Fixes
* Increase badge size slightly so that "PATCH" method fits inside ([#632](https://github.com/Rebilly/ReDoc/issues/632)) ([4b3b5ba](https://github.com/Rebilly/ReDoc/commit/4b3b5ba))
### Features
* externalDocumentation rendered for tags, operations and schema fields ([#595](https://github.com/Rebilly/ReDoc/issues/595)) ([893c83e](https://github.com/Rebilly/ReDoc/commit/893c83e)), closes [#550](https://github.com/Rebilly/ReDoc/issues/550)
<a name="2.0.0-alpha.38"></a>
# [2.0.0-alpha.38](https://github.com/Rebilly/ReDoc/compare/v2.0.0-alpha.37...v2.0.0-alpha.38) (2018-08-24)
### Bug Fixes
* add indent to array schema internals ([865f3ce](https://github.com/Rebilly/ReDoc/commit/865f3ce))
* fix oneOf/anyOf titles ([39b930d](https://github.com/Rebilly/ReDoc/commit/39b930d)), closes [#618](https://github.com/Rebilly/ReDoc/issues/618) [#621](https://github.com/Rebilly/ReDoc/issues/621)
<a name="2.0.0-alpha.37"></a>
# [2.0.0-alpha.37](https://github.com/Rebilly/ReDoc/compare/v2.0.0-alpha.36...v2.0.0-alpha.37) (2018-08-22)
### Bug Fixes
* do not inherit title in allOf ([720e282](https://github.com/Rebilly/ReDoc/commit/720e282)), closes [#601](https://github.com/Rebilly/ReDoc/issues/601)
* fix crash on empty media object ([fb21212](https://github.com/Rebilly/ReDoc/commit/fb21212)), closes [#608](https://github.com/Rebilly/ReDoc/issues/608)
* make http badges font-based instead of inline png ([5d84bd4](https://github.com/Rebilly/ReDoc/commit/5d84bd4))
* use correct parent section for security definition ([f903406](https://github.com/Rebilly/ReDoc/commit/f903406))
<a name="2.0.0-alpha.36"></a>
# [2.0.0-alpha.36](https://github.com/Rebilly/ReDoc/compare/v2.0.0-alpha.35...v2.0.0-alpha.36) (2018-08-11)
### Bug Fixes
* broken rendering of code blocks with language in markdown ([8218a26](https://github.com/Rebilly/ReDoc/commit/8218a26))
* broken rendering of headings with regexp characters ([e660517](https://github.com/Rebilly/ReDoc/commit/e660517))
<a name="2.0.0-alpha.35"></a>
# [2.0.0-alpha.35](https://github.com/Rebilly/ReDoc/compare/v2.0.0-alpha.34...v2.0.0-alpha.35) (2018-08-09)
### Bug Fixes
* crash on any backticks code block without lang specified ([58ae668](https://github.com/Rebilly/ReDoc/commit/58ae668))
* fix auth requirements font size ([d13fe13](https://github.com/Rebilly/ReDoc/commit/d13fe13))
<a name="2.0.0-alpha.34"></a>
# [2.0.0-alpha.34](https://github.com/Rebilly/ReDoc/compare/v2.0.0-alpha.33...v2.0.0-alpha.34) (2018-08-08)
### Bug Fixes
* add some spacing between operation description and parameters ([597688e](https://github.com/Rebilly/ReDoc/commit/597688e))
* description is not rendered if doesn't contain markdown headings ([90ed717](https://github.com/Rebilly/ReDoc/commit/90ed717)), closes [#591](https://github.com/Rebilly/ReDoc/issues/591)
* download button downloads index.html instead of spec with CLI ([334f904](https://github.com/Rebilly/ReDoc/commit/334f904)), closes [#594](https://github.com/Rebilly/ReDoc/issues/594)
* fix Authentication section is not rendered ([2ecc8bc](https://github.com/Rebilly/ReDoc/commit/2ecc8bc)), closes [#590](https://github.com/Rebilly/ReDoc/issues/590)
* fix linebreaks in multiparagraph field descriptions ([8fb9cd6](https://github.com/Rebilly/ReDoc/commit/8fb9cd6))
* preserve md heading level in description ([23559fb](https://github.com/Rebilly/ReDoc/commit/23559fb))
* render additionalProperties set to true ([#597](https://github.com/Rebilly/ReDoc/issues/597)) ([f70ac08](https://github.com/Rebilly/ReDoc/commit/f70ac08)), closes [#596](https://github.com/Rebilly/ReDoc/issues/596)
* schemes without type: object are not expandable ([97e1620](https://github.com/Rebilly/ReDoc/commit/97e1620)), closes [#599](https://github.com/Rebilly/ReDoc/issues/599)
### Features
* Add x-logo alt text support ([#584](https://github.com/Rebilly/ReDoc/issues/584)) ([568ce74](https://github.com/Rebilly/ReDoc/commit/568ce74)), closes [#546](https://github.com/Rebilly/ReDoc/issues/546)
* support label for x-code-samples ([00bd966](https://github.com/Rebilly/ReDoc/commit/00bd966)), closes [#586](https://github.com/Rebilly/ReDoc/issues/586)
<a name="2.0.0-alpha.33"></a>
# [2.0.0-alpha.33](https://github.com/Rebilly/ReDoc/compare/v2.0.0-alpha.32...v2.0.0-alpha.33) (2018-07-31)
### Bug Fixes
* long endpoint url overflow ([d99e918](https://github.com/Rebilly/ReDoc/commit/d99e918))
* allow word-break in code strings in md ([15dfe44](https://github.com/Rebilly/ReDoc/commit/15dfe44))
* show examples for response headers ([ba22b1e](https://github.com/Rebilly/ReDoc/commit/ba22b1e))
<a name="2.0.0-alpha.32"></a>
# [2.0.0-alpha.32](https://github.com/Rebilly/ReDoc/compare/v2.0.0-alpha.31...v2.0.0-alpha.32) (2018-07-26)
### Bug Fixes
* **cli:** add mobx to dependencies ([75ced44](https://github.com/Rebilly/ReDoc/commit/75ced44))
* fix resolving issue by upgrading to json-schema-ref-parser@5.1.1 ([0045958](https://github.com/Rebilly/ReDoc/commit/0045958)), closes [#541](https://github.com/Rebilly/ReDoc/issues/541)
* remove break-all from code samples ([d74578d](https://github.com/Rebilly/ReDoc/commit/d74578d))
* wrong display when combining multiple auth requirements ([f96c481](https://github.com/Rebilly/ReDoc/commit/f96c481)), closes [#577](https://github.com/Rebilly/ReDoc/issues/577)
<a name="2.0.0-alpha.31"></a>
# [2.0.0-alpha.31](https://github.com/Rebilly/ReDoc/compare/v2.0.0-alpha.30...v2.0.0-alpha.31) (2018-07-23)
### Bug Fixes
* server url contains spec name if not specified in the spec ([b41b181](https://github.com/Rebilly/ReDoc/commit/b41b181))
### Features
* simple variable substitution support ([9d6b30c](https://github.com/Rebilly/ReDoc/commit/9d6b30c)), closes [#565](https://github.com/Rebilly/ReDoc/issues/565)
<a name="2.0.0-alpha.30"></a>
# [2.0.0-alpha.30](https://github.com/Rebilly/ReDoc/compare/v2.0.0-alpha.29...v2.0.0-alpha.30) (2018-07-19)
### Bug Fixes
* fix usage with CRA by transpiling swagger2openapi deps ([6473e62](https://github.com/Rebilly/ReDoc/commit/6473e62)), closes [#566](https://github.com/Rebilly/ReDoc/issues/566)
### Features
* theme reshape and new options ([58bddc8](https://github.com/Rebilly/ReDoc/commit/58bddc8))
<a name="2.0.0-alpha.29"></a>
# [2.0.0-alpha.29](https://github.com/Rebilly/ReDoc/compare/v2.0.0-alpha.28...v2.0.0-alpha.29) (2018-07-18)
### Bug Fixes
* **cli:** cli output crashes if script closing tag is in the spec ([76906eb](https://github.com/Rebilly/ReDoc/commit/76906eb)), closes [#563](https://github.com/Rebilly/ReDoc/issues/563)
* different output of cli bundle and redoc ([89aa754](https://github.com/Rebilly/ReDoc/commit/89aa754)), closes [#547](https://github.com/Rebilly/ReDoc/issues/547)
* fix broken link in CLI help ([bab3e7d](https://github.com/Rebilly/ReDoc/commit/bab3e7d)), closes [#559](https://github.com/Rebilly/ReDoc/issues/559)
* fix Download button url when spec as object was provided ([c35925a](https://github.com/Rebilly/ReDoc/commit/c35925a)), closes [#462](https://github.com/Rebilly/ReDoc/issues/462) [#540](https://github.com/Rebilly/ReDoc/issues/540)
* fix non-scalar query/path/header params are not expandable ([dcca44a](https://github.com/Rebilly/ReDoc/commit/dcca44a)), closes [#561](https://github.com/Rebilly/ReDoc/issues/561)
* properly host oneOf inside allOf ([7e5b6d9](https://github.com/Rebilly/ReDoc/commit/7e5b6d9)), closes [#507](https://github.com/Rebilly/ReDoc/issues/507) [#528](https://github.com/Rebilly/ReDoc/issues/528)
* regression - broken urls for operations without operationId ([c0c44bc](https://github.com/Rebilly/ReDoc/commit/c0c44bc))
* use original tag name when slugified one is not valid ([#553](https://github.com/Rebilly/ReDoc/issues/553)) ([8817d9c](https://github.com/Rebilly/ReDoc/commit/8817d9c))
### Features
* new option disableSearch ([d4ab5ad](https://github.com/Rebilly/ReDoc/commit/d4ab5ad))
<a name="2.0.0-alpha.28"></a>
# [2.0.0-alpha.28](https://github.com/Rebilly/ReDoc/compare/v2.0.0-alpha.27...v2.0.0-alpha.28) (2018-06-29)
### Bug Fixes
* inline markdown regression ([e1c9e19](https://github.com/Rebilly/ReDoc/commit/e1c9e19))
<a name="2.0.0-alpha.27"></a>
# [2.0.0-alpha.27](https://github.com/Rebilly/ReDoc/compare/v2.0.0-alpha.25...v2.0.0-alpha.27) (2018-06-29)
### Bug Fixes
* change default font weight to 400 ([11947ed](https://github.com/Rebilly/ReDoc/commit/11947ed))
* do not uppercase menu items by default ([0d45cc2](https://github.com/Rebilly/ReDoc/commit/0d45cc2))
* fix link colors in json samples ([aaaa899](https://github.com/Rebilly/ReDoc/commit/aaaa899))
### Features
* display Value instead of Enum for one-item enum ([78fa312](https://github.com/Rebilly/ReDoc/commit/78fa312))
* experimental temporary support for tags in md ([06ef51c](https://github.com/Rebilly/ReDoc/commit/06ef51c))
* theme hooks experimental hooks ([55bd853](https://github.com/Rebilly/ReDoc/commit/55bd853))
<a name="2.0.0-alpha.26"></a>
# [2.0.0-alpha.26](https://github.com/Rebilly/ReDoc/compare/v2.0.0-alpha.25...v2.0.0-alpha.26) (2018-06-28)
### Bug Fixes
* change default font weight to 400 ([11947ed](https://github.com/Rebilly/ReDoc/commit/11947ed))
* do not uppercase menu items by default ([0d45cc2](https://github.com/Rebilly/ReDoc/commit/0d45cc2))
* fix link colors in json samples ([aaaa899](https://github.com/Rebilly/ReDoc/commit/aaaa899))
### Features
* display Value instead of Enum for one-item enum ([78fa312](https://github.com/Rebilly/ReDoc/commit/78fa312))
* experimental temporary support for tags in md ([06ef51c](https://github.com/Rebilly/ReDoc/commit/06ef51c))
<a name="2.0.0-alpha.24"></a>
# [2.0.0-alpha.24](https://github.com/Rebilly/ReDoc/compare/v2.0.0-alpha.23...v2.0.0-alpha.24) (2018-06-01)
### Bug Fixes
* temporary downgrade marked as it introduced breaking changes and a few bugs ([902f97a](https://github.com/Rebilly/ReDoc/commit/902f97a))
<a name="2.0.0-alpha.23"></a>
# [2.0.0-alpha.23](https://github.com/Rebilly/ReDoc/compare/v2.0.0-alpha.22...v2.0.0-alpha.23) (2018-05-31)
### Bug Fixes
* **cli:** make positional arguments required and handle errors in serve and bundle manually ([#518](https://github.com/Rebilly/ReDoc/issues/518)) ([370d08a](https://github.com/Rebilly/ReDoc/commit/370d08a))
* fix typings on npm ([d957ad7](https://github.com/Rebilly/ReDoc/commit/d957ad7))
* fix vertical line misaligned in firefox ([bde08f1](https://github.com/Rebilly/ReDoc/commit/bde08f1)), closes [#503](https://github.com/Rebilly/ReDoc/issues/503)
* mergeAllOf takes items into account ([#511](https://github.com/Rebilly/ReDoc/issues/511)) ([47b2177](https://github.com/Rebilly/ReDoc/commit/47b2177))
<a name="2.0.0-alpha.22"></a>
# [2.0.0-alpha.22](https://github.com/Rebilly/ReDoc/compare/v2.0.0-alpha.21...v2.0.0-alpha.22) (2018-05-29)
### Bug Fixes
* **cli:** create directories when a path is specified in the --output option ([#513](https://github.com/Rebilly/ReDoc/issues/513)) ([ac7372b](https://github.com/Rebilly/ReDoc/commit/ac7372b)), closes [#512](https://github.com/Rebilly/ReDoc/issues/512)
* **cli:** return 1 as exit code if an error happens in the cli ([#516](https://github.com/Rebilly/ReDoc/issues/516)) ([720c304](https://github.com/Rebilly/ReDoc/commit/720c304))
* fix font-weight inconsistency ([6ea2b7b](https://github.com/Rebilly/ReDoc/commit/6ea2b7b)), closes [#506](https://github.com/Rebilly/ReDoc/issues/506)
* HEAD http verb support in menu badges ([2eb1952](https://github.com/Rebilly/ReDoc/commit/2eb1952)), closes [#493](https://github.com/Rebilly/ReDoc/issues/493)
* more descriptive message for wrong discriminator use ([3c6de2c](https://github.com/Rebilly/ReDoc/commit/3c6de2c)), closes [#505](https://github.com/Rebilly/ReDoc/issues/505)
### Features
* add new experimental option unstable_ignoreMimeParameters ([d162bab](https://github.com/Rebilly/ReDoc/commit/d162bab))
* support x-discriminator for OpenAPI 2 ([aaff311](https://github.com/Rebilly/ReDoc/commit/aaff311)), closes [#496](https://github.com/Rebilly/ReDoc/issues/496)
<a name="2.0.0-alpha.21"></a>
# [2.0.0-alpha.21](https://github.com/Rebilly/ReDoc/compare/v2.0.0-alpha.20...v2.0.0-alpha.21) (2018-05-28)
### Bug Fixes
* add tslib dependency ([8e1a5cb](https://github.com/Rebilly/ReDoc/commit/8e1a5cb))
* **cli:** escape \u2029 \u2028 characters ([5018473](https://github.com/Rebilly/ReDoc/commit/5018473)), closes [#475](https://github.com/Rebilly/ReDoc/issues/475)
* reduce search index size ([a1fa4b4](https://github.com/Rebilly/ReDoc/commit/a1fa4b4))
* replace "oops" with field name 🙈 ([6b1e8e7](https://github.com/Rebilly/ReDoc/commit/6b1e8e7))
* specify caption-side ([64801b0](https://github.com/Rebilly/ReDoc/commit/64801b0)), closes [#509](https://github.com/Rebilly/ReDoc/issues/509)
### Features
* export TypeScript typings ([9115be8](https://github.com/Rebilly/ReDoc/commit/9115be8))
* new theme colors: code and codeBg ([f8b793d](https://github.com/Rebilly/ReDoc/commit/f8b793d))
* new theme option: nestingSpacing ([782ef77](https://github.com/Rebilly/ReDoc/commit/782ef77))
<a name="2.0.0-alpha.20"></a>
# [2.0.0-alpha.20](https://github.com/Rebilly/ReDoc/compare/v2.0.0-alpha.19...v2.0.0-alpha.20) (2018-05-14)
### Bug Fixes
* fix worker is not defined in lib bundle ([6a5513e](https://github.com/Rebilly/ReDoc/commit/6a5513e))
<a name="2.0.0-alpha.19"></a>
# [2.0.0-alpha.19](https://github.com/Rebilly/ReDoc/compare/v2.0.0-alpha.18...v2.0.0-alpha.19) (2018-05-14)
### Bug Fixes
* change look of additionalProperties ([126c6a6](https://github.com/Rebilly/ReDoc/commit/126c6a6))
* disable chrome tap-highlight on mobile ([09cbe88](https://github.com/Rebilly/ReDoc/commit/09cbe88))
* fix [@observer](https://github.com/observer) on PureComponent warning ([afb11d6](https://github.com/Rebilly/ReDoc/commit/afb11d6))
* fix build caused by new babel decorators syntax, fixes [#487](https://github.com/Rebilly/ReDoc/issues/487) ([01f575c](https://github.com/Rebilly/ReDoc/commit/01f575c))
* fix prism lang dependencies, fixes [#467](https://github.com/Rebilly/ReDoc/issues/467) ([42cf18e](https://github.com/Rebilly/ReDoc/commit/42cf18e))
* fix spelling in error message ([#455](https://github.com/Rebilly/ReDoc/issues/455)) ([64119c4](https://github.com/Rebilly/ReDoc/commit/64119c4))
* limit height of discriminator dropdown, fixes [#484](https://github.com/Rebilly/ReDoc/issues/484) ([6d1a9e5](https://github.com/Rebilly/ReDoc/commit/6d1a9e5))
* path parameters are not correctly override, fixes [#481](https://github.com/Rebilly/ReDoc/issues/481) ([2cf4c3c](https://github.com/Rebilly/ReDoc/commit/2cf4c3c))
### Features
* display scope description as markdown, fixes [#466](https://github.com/Rebilly/ReDoc/issues/466) ([0d6deff](https://github.com/Rebilly/ReDoc/commit/0d6deff))
<a name="2.0.0-alpha.18"></a>
# [2.0.0-alpha.18](https://github.com/Rebilly/ReDoc/compare/v2.0.0-alpha.17...v2.0.0-alpha.18) (2018-03-23)
### Bug Fixes
* fix logo width ([384c883](https://github.com/Rebilly/ReDoc/commit/384c883))
* modify the peerDependencies to reflect the need for react 16.3 ([b29c329](https://github.com/Rebilly/ReDoc/commit/b29c329))
* scroll to section sooner when SSR + simplify item ids ([d1d8042](https://github.com/Rebilly/ReDoc/commit/d1d8042))
* **cli:** don't wait for content loaded in bundled HTML ([d9ee2d0](https://github.com/Rebilly/ReDoc/commit/d9ee2d0))
<a name="2.0.0-alpha.17"></a>
# [2.0.0-alpha.17](https://github.com/Rebilly/ReDoc/compare/v2.0.0-alpha.16...v2.0.0-alpha.17) (2018-03-21)
### Bug Fixes
* css fix + update theme ([05403a7](https://github.com/Rebilly/ReDoc/commit/05403a7))
* **cli:** allow to set url to the spec in SSR mode ([c9c6bc5](https://github.com/Rebilly/ReDoc/commit/c9c6bc5))
* **cli:** fix crash ([8891f5c](https://github.com/Rebilly/ReDoc/commit/8891f5c))
* **cli:** fix output option type ([c729c6c](https://github.com/Rebilly/ReDoc/commit/c729c6c))
* **cli:** rename redoc-cli bin ([06b5a00](https://github.com/Rebilly/ReDoc/commit/06b5a00))
* fix second-level heading in description ([a084532](https://github.com/Rebilly/ReDoc/commit/a084532))
* make field type color more dark (closes [#439](https://github.com/Rebilly/ReDoc/issues/439)) ([d27e61a](https://github.com/Rebilly/ReDoc/commit/d27e61a))
### Features
* **cli:** add --template option ([b7afce9](https://github.com/Rebilly/ReDoc/commit/b7afce9))
* **cli:** add options to specify redoc options ([2732c89](https://github.com/Rebilly/ReDoc/commit/2732c89))
* **cli:** add title option to bundle ([bb8a678](https://github.com/Rebilly/ReDoc/commit/bb8a678))
* add more options to theme ([cbce28a](https://github.com/Rebilly/ReDoc/commit/cbce28a))
<a name="1.21.2"></a>
## [1.21.2](https://github.com/Rebilly/ReDoc/compare/v1.21.1...v1.21.2) (2018-02-26)
### Bug Fixes
* missing properties when using complex allOf (regression) ([6ce9245](https://github.com/Rebilly/ReDoc/commit/6ce9245)), closes [#422](https://github.com/Rebilly/ReDoc/issues/422)
<a name="1.21.1"></a>
## [1.21.1](https://github.com/Rebilly/ReDoc/compare/v1.21.0...v1.21.1) (2018-02-23)
### Bug Fixes
* avoid endless recursion in schema-walker in some cases ([309cc23](https://github.com/Rebilly/ReDoc/commit/309cc23)), closes [#418](https://github.com/Rebilly/ReDoc/issues/418) [#395](https://github.com/Rebilly/ReDoc/issues/395)
* fix crash when discriminator is used incorrectly ([b1d928d](https://github.com/Rebilly/ReDoc/commit/b1d928d))
<a name="1.21.0"></a>
# [1.21.0](https://github.com/Rebilly/ReDoc/compare/v1.20.0...v1.21.0) (2018-02-18)
### Bug Fixes
* null example not used in schema samples ([420c51a](https://github.com/Rebilly/ReDoc/commit/420c51a)), closes [#415](https://github.com/Rebilly/ReDoc/issues/415)
### Features
* new option hide-download-button ([454e5bd](https://github.com/Rebilly/ReDoc/commit/454e5bd)), closes [#394](https://github.com/Rebilly/ReDoc/issues/394)
<a name="1.20.0"></a>
## [1.20.0](https://github.com/Rebilly/ReDoc/compare/v1.19.3...v1.20.0) (2018-01-21)
### Bug Fixes
* Path parameters are not correctly overridden ([c406dc5](https://github.com/Rebilly/ReDoc/commit/c406dc5)), closes [#400](https://github.com/Rebilly/ReDoc/issues/400)
* Use parentNode instead of parentElement to fix IE11 crash ([e8adb60](https://github.com/Rebilly/ReDoc/commit/e8adb60)), closes [#406](https://github.com/Rebilly/ReDoc/issues/406)
### Features
* align parameters to match up ([#375](https://github.com/Rebilly/ReDoc/issues/375)) ([d083c16](https://github.com/Rebilly/ReDoc/commit/d083c16))
### Deprecations
* Dropped bower support. No more dist files on the `releases` branch.
<a name="2.0.0-alpha.15"></a>
# [2.0.0-alpha.15](https://github.com/Rebilly/Redoc/compare/v2.0.0-alpha.14...v2.0.0-alpha.15) (2018-03-16)
### Bug Fixes
* fix broken css after installing polished ([6018042](https://github.com/Rebilly/Redoc/commit/6018042))
### Features
* more advanced theme engine ([1df690a](https://github.com/Rebilly/Redoc/commit/1df690a))
<a name="2.0.0-alpha.14"></a>
# [2.0.0-alpha.14](https://github.com/Rebilly/Redoc/compare/v2.0.0-alpha.13...v2.0.0-alpha.14) (2018-03-15)
### Bug Fixes
* fix CLI crash + build it on travis ([7769ba8](https://github.com/Rebilly/Redoc/commit/7769ba8))
<a name="2.0.0-alpha.13"></a>
# [2.0.0-alpha.13](https://github.com/Rebilly/Redoc/compare/v2.0.0-alpha.12...v2.0.0-alpha.13) (2018-03-15)
### Bug Fixes
* A couple minor bug fixes ([#436](https://github.com/Rebilly/Redoc/issues/436)) ([5dc21af](https://github.com/Rebilly/Redoc/commit/5dc21af))
* add extra null-check + warning ([8757fa5](https://github.com/Rebilly/Redoc/commit/8757fa5))
* add logo width to the theme ([28f2391](https://github.com/Rebilly/Redoc/commit/28f2391))
* align logo by center ([18ec3ac](https://github.com/Rebilly/Redoc/commit/18ec3ac))
* discriminator dropdown showing incorrect field if sorted ([bcf39dc](https://github.com/Rebilly/Redoc/commit/bcf39dc))
* fix crash when referencing non-existing security scheme ([1f7fc44](https://github.com/Rebilly/Redoc/commit/1f7fc44))
* fix overflowing content in JSON samples ([02c2413](https://github.com/Rebilly/Redoc/commit/02c2413))
* fix right-panel blinking when scrolling + css improvements ([a78f9ab](https://github.com/Rebilly/Redoc/commit/a78f9ab))
* fix search-indexing for SSR ([1428fb5](https://github.com/Rebilly/Redoc/commit/1428fb5))
* fix the media queries utils so it gets the values from the current theme ([#420](https://github.com/Rebilly/Redoc/issues/420)) ([3924d3c](https://github.com/Rebilly/Redoc/commit/3924d3c))
* fix worker import ([4896346](https://github.com/Rebilly/Redoc/commit/4896346))
* make ReactStandalone react on props changes ([0cb0af2](https://github.com/Rebilly/Redoc/commit/0cb0af2))
* merge inner properties of allOf ([8926dd4](https://github.com/Rebilly/Redoc/commit/8926dd4))
* one-of dropdown not switching ([0f1b6a6](https://github.com/Rebilly/Redoc/commit/0f1b6a6))
* referenced header name is empty ([13165fb](https://github.com/Rebilly/Redoc/commit/13165fb))
* skipReadOnly/skipWritOnly not passing down to nested array ([6df8127](https://github.com/Rebilly/Redoc/commit/6df8127))
* skipReadOnly/skipWritOnly not passing down to nested OneOf ([2462639](https://github.com/Rebilly/Redoc/commit/2462639))
* various search fixes ([b797c96](https://github.com/Rebilly/Redoc/commit/b797c96))
* writeOnly not respected in response samples ([87abdf7](https://github.com/Rebilly/Redoc/commit/87abdf7))
### Features
* add clear icon to searchbox ([825162e](https://github.com/Rebilly/Redoc/commit/825162e))
* add hideDownloadButton option ([8dbe938](https://github.com/Rebilly/Redoc/commit/8dbe938))
* add marker ([1ff2bd8](https://github.com/Rebilly/Redoc/commit/1ff2bd8))
* arrow navigation in search results ([fe3245a](https://github.com/Rebilly/Redoc/commit/fe3245a))
* basis search ([6990cd2](https://github.com/Rebilly/Redoc/commit/6990cd2))
* ReDoc CLI ✨ ([390f6c1](https://github.com/Rebilly/Redoc/commit/390f6c1))
* reqired-first sort order for params ([ecf33d2](https://github.com/Rebilly/Redoc/commit/ecf33d2))
* serialize search-index ([e94f842](https://github.com/Rebilly/Redoc/commit/e94f842))
<a name="2.0.0-alpha.12"></a>
# [2.0.0-alpha.12](https://github.com/Rebilly/Redoc/compare/v2.0.0-alpha.11...v2.0.0-alpha.12) (2018-02-07)
### Bug Fixes
* basic responsiveness ([a29c3cc](https://github.com/Rebilly/Redoc/commit/a29c3cc))
* crash in MarkdownRenderer on non-string ([dead161](https://github.com/Rebilly/Redoc/commit/dead161))
* discriminator fix ([ff3bb24](https://github.com/Rebilly/Redoc/commit/ff3bb24))
* filter out non-existing security schemas + warn ([ee822f6](https://github.com/Rebilly/Redoc/commit/ee822f6))
* fix oneOf title for array ([1f3701d](https://github.com/Rebilly/Redoc/commit/1f3701d))
* fix tbody > tr nesting warning ([a3cbb14](https://github.com/Rebilly/Redoc/commit/a3cbb14))
* improve copy tooltip perf ([29207cf](https://github.com/Rebilly/Redoc/commit/29207cf))
* resolve menu synchronization issue (use proper throttle) ([84d1c7b](https://github.com/Rebilly/Redoc/commit/84d1c7b))
### Features
* responsive side menu ([3aab2d9](https://github.com/Rebilly/Redoc/commit/3aab2d9))
<a name="2.0.0-alpha.11"></a>
# [2.0.0-alpha.11](https://github.com/Rebilly/Redoc/compare/v2.0.0-alpha.10...v2.0.0-alpha.11) (2018-01-29)
### Bug Fixes
* courier misspelling ([#409](https://github.com/Rebilly/Redoc/issues/409)) ([96fb7ce](https://github.com/Rebilly/Redoc/commit/96fb7ce))
* crash on 2-level md heading at the beginning ([e9f23f7](https://github.com/Rebilly/Redoc/commit/e9f23f7))
* make active tab more clear ([4b5df22](https://github.com/Rebilly/Redoc/commit/4b5df22))
* perfect scroll not working ([199f240](https://github.com/Rebilly/Redoc/commit/199f240))
* use array items example ([12f79f0](https://github.com/Rebilly/Redoc/commit/12f79f0)), closes [#408](https://github.com/Rebilly/Redoc/issues/408)
* wrap text in code samples ([6c71a66](https://github.com/Rebilly/Redoc/commit/6c71a66))
### Features
* port "copy to clipboard" / "expand/collapse all" functionality ([5bb0bdf](https://github.com/Rebilly/Redoc/commit/5bb0bdf)), closes [#410](https://github.com/Rebilly/Redoc/issues/410)
<a name="2.0.0-alpha.9"></a>
# [2.0.0-alpha.9](https://github.com/Rebilly/Redoc/compare/v2.0.0-alpha.8...v2.0.0-alpha.9) (2018-01-11)
### Bug Fixes
* handle scrollYOffset in ScrollService ([dcab770](https://github.com/Rebilly/Redoc/commit/dcab770))
<a name="2.0.0-alpha.8"></a>
# [2.0.0-alpha.8](https://github.com/Rebilly/Redoc/compare/v2.0.0-alpha.7...v2.0.0-alpha.8) (2018-01-10)
### Bug Fixes
* undo section id + some minor fixes ([0253c5d](https://github.com/Rebilly/Redoc/commit/0253c5d))
<a name="2.0.0-alpha.7"></a>
# [2.0.0-alpha.7](https://github.com/Rebilly/Redoc/compare/v2.0.0-alpha.6...v2.0.0-alpha.7) (2018-01-10)
### Bug Fixes
* add id attr to headers to work before react is loaded if ssr ([1743453](https://github.com/Rebilly/Redoc/commit/1743453))
* crate spec as data/base64 link when ssr ([33678e6](https://github.com/Rebilly/Redoc/commit/33678e6))
* example value is not showed if it is false ([9756364](https://github.com/Rebilly/Redoc/commit/9756364))
<a name="2.0.0-alpha.6"></a>
# [2.0.0-alpha.6](https://github.com/Rebilly/Redoc/compare/v2.0.0-alpha.5...v2.0.0-alpha.6) (2018-01-10)
### Bug Fixes
* allOf and deref exit not only named refs ([435cccd](https://github.com/Rebilly/Redoc/commit/435cccd))
* do not ignore path level parameters ([14f8408](https://github.com/Rebilly/Redoc/commit/14f8408))
* improve rendering of types ([17da7b7](https://github.com/Rebilly/Redoc/commit/17da7b7))
* move title propagation to the correct place ([0b0bc99](https://github.com/Rebilly/Redoc/commit/0b0bc99))
* overwrite text-align to left ([bfee3ed](https://github.com/Rebilly/Redoc/commit/bfee3ed))
### Features
* initial display security requirements ([50e2a58](https://github.com/Rebilly/Redoc/commit/50e2a58))
<a name="2.0.0-alpha.5"></a>
# [2.0.0-alpha.5](https://github.com/Rebilly/Redoc/compare/v2.0.0-alpha.4...v2.0.0-alpha.5) (2017-12-07)
### Bug Fixes
* correct pointer for the schema ([4ae1574](https://github.com/Rebilly/Redoc/commit/4ae1574))
* bundle in reftools in lib build (do not crash on prod builds in create-react-app) ([57129d3](https://github.com/Rebilly/Redoc/commit/57129d3))
<a name="2.0.0-alpha.4"></a>
# [2.0.0-alpha.4](https://github.com/Rebilly/Redoc/compare/v2.0.0-alpha.3...v2.0.0-alpha.4) (2017-11-24)
### Bug Fixes
* add ellipsis for menu items with long words ([3421be2](https://github.com/Rebilly/Redoc/commit/3421be2))
* crashes on some dereferencing/allOf merging cases ([335deb9](https://github.com/Rebilly/Redoc/commit/335deb9))
* do not auto-append security-definitions if they are not in the spec ([426e5b6](https://github.com/Rebilly/Redoc/commit/426e5b6))
* don't display operations without tags as tag items in menu ([ca81b6d](https://github.com/Rebilly/Redoc/commit/ca81b6d))
<a name="2.0.0-alpha.3"></a>
# [2.0.0-alpha.3](https://github.com/Rebilly/Redoc/compare/v2.0.0-alpha.2...v2.0.0-alpha.3) (2017-11-23)
### Bug Fixes
* crash when $ref is url encoded ([bdf6079](https://github.com/Rebilly/Redoc/commit/bdf6079))
* make oneOf not skip fields defined alongside ([8680775](https://github.com/Rebilly/Redoc/commit/8680775))
<a name="2.0.0-alpha.2"></a>
# 2.0.0-alpha.2 (2017-11-23)
### Bug Fixes
* Fix crash when using type `file` in OpenAPI 2.0 in some places
<a name="2.0.0-alpha.1"></a>
# 2.0.0-alpha.1 (2017-11-23)
Complete rewrite of ReDoc using React so here only major changes are listed.
Complete rewrite also means that this rewrite may introduce issues, but they should be resolved before `2.0.0`.
### Features
- Basic Support for OpenAPI 3
- Usage as a React component
### Deprecations
- Fonts are not loaded by ReDoc so you should load them. Default fonts can be loaded as below:
```html
<link href="https://fonts.googleapis.com/css?family=Montserrat:300,400,700|Roboto:300,400,700" rel="stylesheet">
```
- no more bower releases
- no more GitHub pages-based CDN. Use [unpkg.com](https://unpkg.com/) to access ReDoc releases
### Known Regression (resolved before leaving alpha stage)
- `lazyLoading` option not implemented yet
- Copying to clipboard of samples not implemented yet
- Search not implemented yet
<a name="1.19.3"></a>
## [1.19.3](https://github.com/Rebilly/ReDoc/compare/v1.19.2...v1.19.3) (2017-11-16)
### Bug Fixes
* html characters not escaped in code blocks (fixes [#378](https://github.com/Rebilly/ReDoc/issues/378)) ([fef9ec4](https://github.com/Rebilly/ReDoc/commit/fef9ec4))
<a name="1.19.2"></a>
## [1.19.2](https://github.com/Rebilly/ReDoc/compare/v1.19.1...v1.19.2) (2017-11-10)
### Bug Fixes
* response samples doesn't show only text/plain (fixes [#371](https://github.com/Rebilly/ReDoc/issues/371)) ([00aea06](https://github.com/Rebilly/ReDoc/commit/00aea06))
<a name="1.19.1"></a>
# [1.19.1](https://github.com/Rebilly/ReDoc/compare/v1.19.0...v1.19.1) (2017-10-02)
<a name="2.0.0-alpha.16"></a>
# [2.0.0-alpha.16](https://github.com/Rebilly/Redoc/compare/v2.0.0-alpha.15...v2.0.0-alpha.16) (2018-03-18)
### Bug Fixes
* move cli to a separate npm package ([95c7585](https://github.com/Rebilly/Redoc/commit/95c7585))
* prefer `.extend` over `styled()` to make styles more predictable ([ed20ac1](https://github.com/Rebilly/Redoc/commit/ed20ac1))
### Features
* use new Context API for options ([e022349](https://github.com/Rebilly/Redoc/commit/e022349))
<a name="1.19.0"></a>
# [1.19.0](https://github.com/Rebilly/ReDoc/compare/v1.18.1...v1.19.0) (2017-09-21)
### Bug Fixes
* Clearly label version compatibility ([8d849a6](https://github.com/Rebilly/ReDoc/commit/8d849a6)), closes [#338](https://github.com/Rebilly/ReDoc/issues/338)
* HEAD http verb support ([d8b6e02](https://github.com/Rebilly/ReDoc/commit/d8b6e02)), closes [#342](https://github.com/Rebilly/ReDoc/issues/342)
### Features
* add ignoredHeaderParameters option ([56d62e5](https://github.com/Rebilly/ReDoc/commit/56d62e5))
* add native-scrollbars option to workaround scrolling perf issues ([f2ed92c](https://github.com/Rebilly/ReDoc/commit/f2ed92c))
<a name="1.18.1"></a>
## [1.18.1](https://github.com/Rebilly/ReDoc/compare/v1.17.0...v1.18.1) (2017-08-28)
### Bug Fixes
* crash if `contact` is not in the spec ([1b9ba0d](https://github.com/Rebilly/ReDoc/commit/1b9ba0d)), closes [#332](https://github.com/Rebilly/ReDoc/issues/332)
<a name="1.18.0"></a>
# [1.18.0](https://github.com/Rebilly/ReDoc/compare/v1.16.1...v1.18.0) (2017-08-28)
### Bug Fixes
* increase padding top for `.api-info-wrapper` when left sidebar is hiding to avoid header overlaying by top menu ([514fc29](https://github.com/Rebilly/ReDoc/commit/514fc29))
* add `display: inline-block` for `.openapi-button` ([86b4db4](https://github.com/Rebilly/ReDoc/commit/86b4db4)),
closes [#321](https://github.com/Rebilly/ReDoc/issues/321)
* add margins around list-items in markdown ([b165785](https://github.com/Rebilly/ReDoc/commit/b165785))
### Features
* generate download link for specs defined by an object ([60e8cb4](https://github.com/Rebilly/ReDoc/commit/60e8cb4)), closes [#289](https://github.com/Rebilly/ReDoc/issues/289)
* support text-plain response sample ([b84177c](https://github.com/Rebilly/ReDoc/commit/b84177c)), closes [#270](https://github.com/Rebilly/ReDoc/issues/270)
* clickable logo that points to specific url ([cb3d318](https://github.com/Rebilly/ReDoc/commit/cb3d318)), closes
[#322](https://github.com/Rebilly/ReDoc/issues/322)
* support x-example for parameters ([f792273](https://github.com/Rebilly/ReDoc/commit/f792273)), closes
[#297](https://github.com/Rebilly/ReDoc/issues/297)
<a name="1.17.0"></a>
# [1.17.0](https://github.com/Rebilly/ReDoc/compare/v1.16.1...v1.17.0) (2017-08-02)
### Bug Fixes
* copy code-samples included \n\r characters ([cd962fa](https://github.com/Rebilly/ReDoc/commit/cd962fa)), closes [#296](https://github.com/Rebilly/ReDoc/issues/296)
* enum with single value not shown in non-body params ([87d9abd](https://github.com/Rebilly/ReDoc/commit/87d9abd)), closes [#284](https://github.com/Rebilly/ReDoc/issues/284)
* handle case where items is array in indexer ([5e5db72](https://github.com/Rebilly/ReDoc/commit/5e5db72)), closes [#304](https://github.com/Rebilly/ReDoc/issues/304)
* output dates as ISO 8601 strings in JSON Formatter ([#313](https://github.com/Rebilly/ReDoc/issues/313)) ([86d8179](https://github.com/Rebilly/ReDoc/commit/86d8179))
* make padding between h2 sections smaller ([2c89536](https://github.com/Rebilly/ReDoc/commit/2c89536)), closes [#291](https://github.com/Rebilly/ReDoc/issues/291)
* ready-only for nested objects samples ([be41d6d](https://github.com/Rebilly/ReDoc/commit/be41d6d)), closes [#300](https://github.com/Rebilly/ReDoc/issues/300)
### Features
* add `hide-loading` option ([2ebca4b](https://github.com/Rebilly/ReDoc/commit/2ebca4b)), closes [#315](https://github.com/Rebilly/ReDoc/issues/315)
* add special rendering for deprecated operations ([#290](https://github.com/Rebilly/ReDoc/issues/290)) ([2748aac](https://github.com/Rebilly/ReDoc/commit/2748aac))
* export angular module *<not stable yet>* ([ef5101b](https://github.com/Rebilly/ReDoc/commit/ef5101b))
* support for xml samples in response when there is no schema in response ([eb7089b](https://github.com/Rebilly/ReDoc/commit/eb7089b)), closes [#307](https://github.com/Rebilly/ReDoc/issues/307)
<a name="1.16.0"></a>
# [1.16.0](https://github.com/Rebilly/ReDoc/compare/v1.15.0...v1.16.0) (2017-05-12)
### Bug Fixes
* do not show discriminator dropdown if it is empty ([7a5d315](https://github.com/Rebilly/ReDoc/commit/7a5d315))
* prevent possible XSS using `untrusted-spec` option ([c0698bb](https://github.com/Rebilly/ReDoc/commit/c0698bb))
* URL changes so fast ([131b437](https://github.com/Rebilly/ReDoc/commit/131b437)), closes [#252](https://github.com/Rebilly/ReDoc/issues/252)
### Features
* display xml examples if present in response examples ([cb106cc](https://github.com/Rebilly/ReDoc/commit/cb106cc))
<a name="1.15.0"></a>
# [1.15.0](https://github.com/Rebilly/ReDoc/compare/v1.14.0...v1.15.0) (2017-05-05)
### Bug Fixes
* menu items not full-width on short item names ([ef1b2bd](https://github.com/Rebilly/ReDoc/commit/ef1b2bd))
* menu service subscription leak ([bb00dc3](https://github.com/Rebilly/ReDoc/commit/bb00dc3))
* openapi button: add `download` attribute ([583c571](https://github.com/Rebilly/ReDoc/commit/583c571))
* sample unavailable when no schema in response object ([1eedbfe](https://github.com/Rebilly/ReDoc/commit/1eedbfe))
* Slugifying non-ascii headers make duplicate permalinks ([#264](https://github.com/Rebilly/ReDoc/issues/264)) ([6edbbe7](https://github.com/Rebilly/ReDoc/commit/6edbbe7))
* typo in download button classname (thanks [@dwilding](https://github.com/dwilding)) ([6b363a5](https://github.com/Rebilly/ReDoc/commit/6b363a5))
* firefox and IE scroll sync after deps update ([ad04636](https://github.com/Rebilly/ReDoc/commit/ad04636))
### Features
* add triangle icon for expandable menu items ([e7130d2](https://github.com/Rebilly/ReDoc/commit/e7130d2))
* clear button (x) in search box ([0341db4](https://github.com/Rebilly/ReDoc/commit/0341db4))
<a name="1.14.0"></a>
# [1.14.0](https://github.com/Rebilly/ReDoc/compare/v1.13.0...v1.14.0) (2017-04-23)
### Bug Fixes
* don't show download button if initialized with an object ([476d6c4](https://github.com/Rebilly/ReDoc/commit/476d6c4))
* endpoint link doesn't expand when click on arrow ([9248cc2](https://github.com/Rebilly/ReDoc/commit/9248cc2))
* markdown block text color 💅 ([0f6f035](https://github.com/Rebilly/ReDoc/commit/0f6f035)), closes [#255](https://github.com/Rebilly/ReDoc/issues/255)
* ReDoc removes path if site is using history API ([c77e1a2](https://github.com/Rebilly/ReDoc/commit/c77e1a2)), closes [#257](https://github.com/Rebilly/ReDoc/issues/257)
* remove trailing slash from url when use `x-servers` ([2760a34](https://github.com/Rebilly/ReDoc/commit/2760a34))
* subscription leak in side-menu ([838f233](https://github.com/Rebilly/ReDoc/commit/838f233))
### Features
* add GH-like anchors to h1 and h2 headings in md ([bb3667d](https://github.com/Rebilly/ReDoc/commit/bb3667d))
* add perfect-scrollbar for side menu ([cdeee67](https://github.com/Rebilly/ReDoc/commit/cdeee67))
* emphasize path with primary color in servers dropdown ([388b3d4](https://github.com/Rebilly/ReDoc/commit/388b3d4))
* new option `path-in-middle-panel` ([74a3193](https://github.com/Rebilly/ReDoc/commit/74a3193))
* SideMenu to support items template as a parameter ([8a49fb3](https://github.com/Rebilly/ReDoc/commit/8a49fb3))
<a name="1.13.0"></a>
# 1.13.0 (2017-04-19)
### Bug Fixes
* fix issue with loading https spec ([585b9cf](https://github.com/Rebilly/ReDoc/commit/585b9cf)), closes [#243](https://github.com/Rebilly/ReDoc/issues/243) (by Khoa Tran)
* UL missing css ([303b49e](https://github.com/Rebilly/ReDoc/commit/303b49e)), closes [#248](https://github.com/Rebilly/ReDoc/issues/248)
* don't show contact info if it is empty object ([6077cc6](https://github.com/Rebilly/ReDoc/commit/6077cc6))
* code block formatting in markdown list ([a9cad19](https://github.com/Rebilly/ReDoc/commit/a9cad19)), closes [#242](https://github.com/Rebilly/ReDoc/issues/242)
### Features
* HTTP verbs badges in side menu ([92eec25](https://github.com/Rebilly/ReDoc/commit/92eec25)), closes [#61](https://github.com/Rebilly/ReDoc/issues/61)
* HTTP verbs badges in search results ([61fd426](https://github.com/Rebilly/ReDoc/commit/61fd426))
* new option [`no-auto-auth`](https://github.com/Rebilly/ReDoc#redoc-tag-attributes) to disable authentication section auto adding ([00b304a](https://github.com/Rebilly/ReDoc/commit/00b304a))
<a name="1.12.1"></a>
# 1.12.1 (2017-04-19)
### Bug Fixes
* fix: use replace state instead of pushState ([4f4e748](https://github.com/Rebilly/ReDoc/commit/4f4e748)), closes [#244](https://github.com/Rebilly/ReDoc/issues/244)
<a name="1.12.0"></a>
# 1.12.0 (2017-04-19)
### Bug Fixes
* add safeguard for undefined ([aaac434](https://github.com/Rebilly/ReDoc/commit/aaac434)), closes [#236](https://github.com/Rebilly/ReDoc/issues/236)
* view errors were not reported ([6aa3a7d](https://github.com/Rebilly/ReDoc/commit/6aa3a7d))
### Features
* Support x-examples vendor extension for requests (by [@brendo](https://github.com/brendo))
### Other
* Updated to Angular 4, bundle is a bit smaller now
<a name="1.11.0"></a>
# 1.11.0 (2017-03-09)
### Bug Fixes
* do not hang when swagger doesn't contain any paths ([e4f5388](https://github.com/Rebilly/ReDoc/commit/e4f5388)), closes [#216](https://github.com/Rebilly/ReDoc/issues/216)
[#201](https://github.com/Rebilly/ReDoc/issues/201)
* optimize and support inherited discriminator ([64e5741](https://github.com/Rebilly/ReDoc/commit/64e5741))
* redoc hangs when indexing recursive discriminator-based definitions ([1e96f88](https://github.com/Rebilly/ReDoc/commit/1e96f88))
* wrong warnings for $ref not single ([193f4bf](https://github.com/Rebilly/ReDoc/commit/193f4bf)), closes [#221](https://github.com/Rebilly/ReDoc/issues/221)
* x-extendedDiscriminator not working ([4899f3e](https://github.com/Rebilly/ReDoc/commit/4899f3e)), closes [#217](https://github.com/Rebilly/ReDoc/issues/217)
### Features
* copy pretty-printed JSON ([e99d66d](https://github.com/Rebilly/ReDoc/commit/e99d66d)), closes [#219](https://github.com/Rebilly/ReDoc/issues/219)
* support for OpenAPI object as a parameter for `init` ([d99f256](https://github.com/Rebilly/ReDoc/commit/d99f256)), closes [#224](https://github.com/Rebilly/ReDoc/issues/224)
<a name="1.10.2"></a>
## 1.10.2 (2017-03-01)
### Bug Fixes
* clear page fragment when scroll to the beginning
* update docs for x-tagGroup, add warning [#215](https://github.com/Rebilly/ReDoc/issues/215)
* show warning for non-used in tagGroup tags
<a name="1.10.1"></a>
## 1.10.1 (2017-02-27)
### Bug Fixes
* improve x-servers dropdown animation performance ([69c7d98](https://github.com/Rebilly/ReDoc/commit/69c7d98))
<a name="1.10.0"></a>
# 1.10.0 (2017-02-27)
### Bug Fixes
* Revert: remove unused hide-hostname option ([7031176](https://github.com/Rebilly/ReDoc/commit/7031176))
### Features
* new option `required-props-first` ([c724df4](https://github.com/Rebilly/ReDoc/commit/c724df4)), closes [#191](https://github.com/Rebilly/ReDoc/issues/191)
* update fragment while scrolling and on menu clicks ([66c06b3](https://github.com/Rebilly/ReDoc/commit/66c06b3)), closes [#138](https://github.com/Rebilly/ReDoc/issues/138) [#202](https://github.com/Rebilly/ReDoc/issues/202)
<a name="1.9.0"></a>
# 1.9.0 (2017-02-25)
### Bug Fixes
* do not crash if version is not string ([accd016](https://github.com/Rebilly/ReDoc/commit/accd016)), closes [#208](https://github.com/Rebilly/ReDoc/issues/208)
* long paths break EndpointLink ui ([8472045](https://github.com/Rebilly/ReDoc/commit/8472045))
* remove unused hide-hostname option ([7031176](https://github.com/Rebilly/ReDoc/commit/7031176))
### Features
* Add support for `x-servers` ([fd49082](https://github.com/Rebilly/ReDoc/commit/fd49082))
* Color of "default" Response depends on other successful responses are specified ([9d0dd25](https://github.com/Rebilly/ReDoc/commit/9d0dd25)), closes [#197](https://github.com/Rebilly/ReDoc/issues/197)
* improved type string with minLength == maxLength ([e76bcc3](https://github.com/Rebilly/ReDoc/commit/e76bcc3)), closes [#212](https://github.com/Rebilly/ReDoc/issues/212)
* show type string with minLength 1 as "non-empty" ([d175a4d](https://github.com/Rebilly/ReDoc/commit/d175a4d)), closes [#192](https://github.com/Rebilly/ReDoc/issues/192)
<a name="1.8.1"></a>
## 1.8.1 (2017-02-23)
### Bug Fixes
* Fix toggle icon width on IE, closes [#198](https://github.com/Rebilly/ReDoc/issues/198)
* Add safe guards array without items, closes [#199](https://github.com/Rebilly/ReDoc/issues/199)
* Fix extra slash if basePath is not present ([a5c03ab](https://github.com/Rebilly/ReDoc/commit/a5c03ab)), closes [#201](https://github.com/Rebilly/ReDoc/issues/201)
* response samples - render description as markdown ([4acfc11](https://github.com/Rebilly/ReDoc/commit/4acfc11)), closes [#190](https://github.com/Rebilly/ReDoc/issues/190)
* take snapshot of schema to not overwrite inlined references ([77bc3c4](https://github.com/Rebilly/ReDoc/commit/77bc3c4)), closes [#203](https://github.com/Rebilly/ReDoc/issues/203)
* use items description if not present on top level ([23e7847](https://github.com/Rebilly/ReDoc/commit/23e7847))
### Features
* autoscroll menu ([b43a87d](https://github.com/Rebilly/ReDoc/commit/b43a87d))
# 1.8.0 (2017-02-03)
### Features/Improvements
* In-page search :tada: []#51](https://github.com/Rebilly/ReDoc/issues/51)
* Render externalDocs [#103](https://github.com/Rebilly/ReDoc/issues/103)
* Undeprecate x-traitTag
### Bug fixes
* Tags with x-traitTag: true are now greyed out in ReDoc output bug [#194](https://github.com/Rebilly/ReDoc/issues/194)
* CSS: request body model-tree wrapping problem [#185](https://github.com/Rebilly/ReDoc/issues/185)
* Strange request to `example.com` causing CSP error [#178](https://github.com/Rebilly/ReDoc/issues/178)
* Fix latest empty menu-items not getting active [#194](https://github.com/Rebilly/ReDoc/issues/194)
* Fixed crash when level-2 heading goes before level-1 in description [#179](https://github.com/Rebilly/ReDoc/issues/179) (by [@jsmartfo](https://github.com/jsmartfo))
# 1.7.0 (2017-01-06)
### Features/Improvements
* Add support for grouping items in menu via [`x-tagGroups`](https://github.com/Rebilly/ReDoc/blob/master/docs/redoc-vendor-extensions.md#x-taggroups)
* Support inherited discriminator (only one at the moment)
* Add support for second-level headings from Markdown docs (by [@jaingaurav](https://github.com/jaingaurav))
### Bug fixes
* Fix response list for shared schemas (fixes [#177](https://github.com/Rebilly/ReDoc/issues/177))
* Fix right panel overlaps site-footer
# 1.6.4 (2016-12-28)
### Bug fixes
* Fix crash on MS Edge (fixes [#166](https://github.com/Rebilly/ReDoc/issues/166))
* Uncomment animation after upgrade to the latest ng2 (resolves [#162](https://github.com/Rebilly/ReDoc/issues/162))
# 1.6.3 (2016-12-19)
### Bug fixes
* Disable side-menu animation (workaround for [#162](https://github.com/Rebilly/ReDoc/issues/162))
* Use markdown for response description (fixes [#158](https://github.com/Rebilly/ReDoc/issues/158))
* Fix leaks (fixes [#167](https://github.com/Rebilly/ReDoc/issues/167))
* Update webpack and stick to ts@2.0.9 (fixes [#169](https://github.com/Rebilly/ReDoc/issues/169), [#168](https://github.com/Rebilly/ReDoc/issues/168))
### Features/Improvements
* add `expand-responses` option - specify which responses are expand by default ([#165](https://github.com/Rebilly/ReDoc/issues/165)).
# 1.6.2 (2016-12-11)
### Bug fixes
* Use markdown in responses description ([#158](https://github.com/Rebilly/ReDoc/issues/158))
### Features/Improvements
* [x-displayName](https://github.com/Rebilly/ReDoc/blob/master/docs/redoc-vendor-extensions.md#x-displayname) for tags - by [@bfirsh](https://github.com/bfirsh) ([PR #152](https://github.com/Rebilly/ReDoc/pull/152))
# 1.6.1 (2016-12-02)
### Bug fixes
* Fix only the first instance of schema was rendered ([#150](https://github.com/Rebilly/ReDoc/issues/150))
* Regression: fix side panel overlaps footer
* Fix menu was not initialized for specs without tags
### Features/Improvements
* Don't show error screen for runtimes after render finished
* Updated dependencies (angular to the latest version + dev deps)
# 1.6.0 (2016-11-30)
### Bug fixes
* Update webpack to the latest beta ([#143](https://github.com/Rebilly/ReDoc/issues/143))
* Fix read-only fields appear in request samples ([#142](https://github.com/Rebilly/ReDoc/issues/142))
* A few more minor UI improvements
### Features/Improvements
* Major performance optimization with new option `lazy-rendering`
To enable use `<redoc>` tag parameter: `<redoc spec-url="..." lazy-rendering></redoc>`.
In this mode ReDoc shows initial screen ASAP and then renders the rest operations asynchronously while showing progress bar on the top. Check out [the demo](//rebilly.github.io/ReDoc) for the example.
* Enable cors-proxy for demo
* README: Add button link to yeoman-generator
# 1.5.2 (2016-11-28)
### Bug fixes
* Fix crashing on array without items ([#104](https://github.com/Rebilly/ReDoc/issues/104))
* Fix `allOf` within array items ([#136](https://github.com/Rebilly/ReDoc/issues/136))
* Fix reference resolution from external files ([#96](https://github.com/Rebilly/ReDoc/issues/96))
* Fix object to become an array ([#146](https://github.com/Rebilly/ReDoc/issues/146))
### Features/Improvements
* Add support for Swagger `collectionFormat`
* Wrap API version in span with class ([#145](https://github.com/Rebilly/ReDoc/issues/145))
* Update openapi-sampler to 0.3.3
# 1.5.1 (2016-10-31)
### Bug fixes
* Fix content scrolling on language switch ([#130](https://github.com/Rebilly/ReDoc/issues/130))
### Features/Improvements
* Support for Swagger `pattern` property ([#42](https://github.com/Rebilly/ReDoc/issues/42))
* Add option to hide hostname in method definition (by @bfirsh)
* Add Docker development environment (by @bfirsh)
# 1.5.0 (2016-10-31)
### Bug fixes
* Fix side menu items wrong sync with description headers
### Features/Improvements
* Support for Security Definitions
* Update angular2 to the 2.1.2
### Deprecations
* Deprecate `x-traitTag`
### Code refactoring
* Separate RedocModule from AppModule
* Get rid of angular facade/lang dependencies
* Error handler refactor
# 1.4.1 (2016-10-18)
### Bug fixes
* Emit helpers for module build
# 1.4.0 (2016-10-14)
### Bug fixes
* Fix destroy/reinit
* Fix minimum/maximum zero not rendered ([#123](https://github.com/Rebilly/ReDoc/issues/123))
### Features/Improvements
* Do spec load after bootstrap
* Build and publish angular2 module ([#126](https://github.com/Rebilly/ReDoc/issues/126))
# 1.3.3 (2016-09-28)
### Features/Improvements
* Implemented x-extendedDiscriminator to workaround name clashes in big specs
* Add engines to package.json ([#83](https://github.com/Rebilly/ReDoc/issues/83))
* Fix npm start on windows ([#119](https://github.com/Rebilly/ReDoc/issues/119), [#118](https://github.com/Rebilly/ReDoc/issues/118))
* Update webpack to latest beta
* Update angular to 2.0.1
* Update local dev steps
* Update openapi-sampler lib ([#111](https://github.com/Rebilly/ReDoc/issues/111))
# 1.3.2 (2016-09-13)
### Bug fixes
* Fix broken tabs styling for response samples
* Fix v1.x.x deployment
# 1.3.1 (2016-09-13)
### Bug fixes
* Makes basePath optional (by @LeFnord)
* Fixed little typo (by @adamd)
* Typo s/IGNORRED/IGNORED (by @MikeRalphson)
* Fixed indentation (by @bennyn)
* Fix default hostname ([#108](https://github.com/Rebilly/ReDoc/issues/108))
* Fix default value for falsy values is not displayed ([#109](https://github.com/Rebilly/ReDoc/issues/109))
* Fix schema collapse after change discriminator
### Features/Improvements
* Update to latest Angular RC.6
* Smaller bundle size by removing esprima dep from bundle
* Updated dependencies
# 1.3.0 (2016-08-31)
### Bug fixes
* Fix code samples are not shown for operations without body param ([#93](https://github.com/Rebilly/ReDoc/issues/93))
* Fixed side menu overlapped site footer ([#75](https://github.com/Rebilly/ReDoc/issues/75))
* Fix broken order in discriminator dropdown
### Features/Improvements
* Support "x-nullable" property by @kedashoe ([#92](https://github.com/Rebilly/ReDoc/issues/92))
# 1.2.0 (2016-08-30)
### Bug fixes
* Fix sticky sidebar top sticking ([#75](https://github.com/Rebilly/ReDoc/issues/75))
* Fix array inside objects if referenced directly ([#84](https://github.com/Rebilly/ReDoc/issues/84))
* Add banner to the bundle file ([#89](https://github.com/Rebilly/ReDoc/issues/89))
* Fix broken additionalProperties
* Fix version render issue (extra "v" letter)
### Features/Improvements
* Change the way discriminator is rendered
* Created CDN major release 1.x.x ([#87](https://github.com/Rebilly/ReDoc/issues/87))
* Smaller bundle size (371KB gzipped)
* Better start-up time due to [AoT](http://blog.mgechev.com/2016/08/14/ahead-of-time-compilation-angular-offline-precompilation/)
### Code refactoring
* Moved build-system to Webpack
* Moved to latest Typescript + get rid of typings
* Upgrade to the latest Angular2 RC.5
# 1.1.2 (2016-08-21)
### Bug fixes
* Revert "Fix markdown newlines to be GFM" ([#82](https://github.com/Rebilly/ReDoc/issues/82))
* Move license and contact info above description
# 1.1.1 (2016-08-21)
### Bug fixes
* Fix markdown newlines to be GFM ([#82](https://github.com/Rebilly/ReDoc/issues/82))
* Fix markdown code blocks in api description
# 1.1.0 (2016-08-12)
### Bug fixes
* Fix API description width on mobile
* Render valid JSON in samples (quoted object keys)
### Features/Improvements
* Add Tuple support (arrays with separate schema for each value) ([#69](https://github.com/Rebilly/ReDoc/issues/69))
* Add special representation for enum with one value ([#70](https://github.com/Rebilly/ReDoc/issues/70))
* Change `< * >` notation to `< anything >`
# 1.0.1 (2016-08-01)
### Bug fixes
* Use api host if schema host is undefined
================================================
FILE: LICENSE
================================================
The MIT License (MIT)
Copyright (c) 2015-present, Rebilly, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README.md
================================================
<div align="center">
<img alt="Redoc logo" src="https://raw.githubusercontent.com/Redocly/redoc/main//docs/images/redoc.png" width="400px" />
# Generate beautiful API documentation from OpenAPI
[](https://www.npmjs.com/package/redoc) [](https://github.com/Redocly/redoc/blob/main/LICENSE)
[](https://cdn.redoc.ly/redoc/latest/bundles/redoc.standalone.js) [](https://www.npmjs.com/package/redoc) [](https://www.jsdelivr.com/package/npm/redoc)
</div>
## About Redoc
Redoc is an open source tool for generating documentation from OpenAPI (formerly Swagger) definitions.
By default Redoc offers a three-panel, responsive layout:
- 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 renders 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 features
- Responsive three-panel design with menu/scrolling synchronization
- Support for OpenAPI 3.1, OpenAPI 3.0, and Swagger 2.0
- Ability to integrate your API introduction into the side menu
- High-level grouping in side menu with the [`x-tagGroups`](https://redocly.com/docs/api-reference-docs/specification-extensions/x-tag-groups/) specification extension
- [Simple integration with `create-react-app`](https://redocly.com/docs/redoc/quickstart/react/)
- Code samples support (with vendor extension) <br>

## Usage
Redoc is provided as a CLI tool (also distributed as a Docker image), HTML tag, and React component.
### Generate documentation from the CLI
If you have Node installed, quickly generate documentation using `npx`:
```bash
npx @redocly/cli build-docs openapi.yaml
```
The tool outputs by default to a file named `redoc-static.html` that you can open in your browser.
> [Redocly CLI](https://github.com/Redocly/redocly-cli/) does more than docs; check it out and add linting, bundling, and more to your API workflow.
### Add an HTML element to the page
Create an HTML page, or edit an existing one, and add the following within the body tags:
```html
<redoc spec-url="http://petstore.swagger.io/v2/swagger.json"></redoc>
<script src="https://cdn.redoc.ly/redoc/latest/bundles/redoc.standalone.js"> </script>
```
Open the HTML file in your browser, and your API documentation is shown on the page.
Add your own `spec-url` to the `<redoc>` tag; this attribute can also be a local file. The JavaScript library can also be installed locally using `npm` and served from your own server, see the [HTML deployment documentation](https://redocly.com/docs/redoc/deployment/html/) for more details.
### More usage options
Check out the [deployment documentation](./docs/deployment/intro.md) for more options, and detailed documentation for each.
## Redoc vs. Redocly API Reference
Redoc is Redocly's community-edition product. Looking for something more?
We also offer [hosted API reference documentation](https://redocly.com/docs/api-registry/guides/api-registry-quickstart/)
with additional features including:
* Try-it console
* Automated code samples
* Pagination
* Extra theme options
### Documentation and resources
- [Reference docs](https://redocly.com/docs/api-reference-docs/getting-started/) - we take care of the hosting
- [Redoc](https://redocly.com/docs/redoc/) - detailed documentation for this open source project (also in the `docs/` folder)
- [Command-line interface to bundle your docs into a web-ready HTML file](https://redocly.com/docs/cli/commands/build-docs/)
- API linting, bundling, and much more with open source [Redocly CLI](https://redocly.com/docs/cli)
## Showcase
A sample of the organizations using Redocly tools in the wild:
- [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/)
- [BoxKnight](https://www.docs.boxknight.com/)
- [Quaderno API](https://developers.quaderno.io/api)
_Pull requests to add your own API page to the list are welcome_
## Configuration
Redoc is highly configurable, see the [configuration documentation](docs/config.md) for details.
### OpenAPI specification extensions
Redoc uses the following [specification extensions](https://redocly.com/docs/api-reference-docs/spec-extensions/):
* [`x-logo`](docs/redoc-vendor-extensions.md#x-logo) - is used to specify API logo
* [`x-traitTag`](docs/redoc-vendor-extensions.md#x-traitTag) - useful for tags that refer to non-navigation properties like Pagination, Rate-Limits, etc
* [`x-codeSamples`](docs/redoc-vendor-extensions.md#x-codeSamples) - specify operation code samples
* [`x-badges`](docs/redoc-vendor-extensions.md#x-badges) - specify operation badges
* [`x-examples`](docs/redoc-vendor-extensions.md#x-examples) - specify JSON example for requests
* [`x-nullable`](docs/redoc-vendor-extensions.md#x-nullable) - mark schema param as a nullable
* [`x-displayName`](docs/redoc-vendor-extensions.md#x-displayname) - specify human-friendly names for the menu categories
* [`x-tagGroups`](docs/redoc-vendor-extensions.md#x-tagGroups) - group tags by categories in the side menu
* [`x-servers`](docs/redoc-vendor-extensions.md#x-servers) - ability to specify different servers for API (backported from OpenAPI 3.0)
* [`x-additionalPropertiesName`](docs/redoc-vendor-extensions.md#x-additionalPropertiesName) - ability to supply a descriptive name for the additional property keys
* [`x-summary`](docs/redoc-vendor-extensions.md#x-summary) - for Response object, use as the response button text, with description rendered under the button
* [`x-explicitMappingOnly`](docs/redoc-vendor-extensions.md#x-explicitMappingOnly) - in Schemas, display a more descriptive property name in objects with additionalProperties when viewing the property list with an object
## Releases
**The README for the `1.x` version is on the [v1.x](https://github.com/Redocly/redoc/tree/v1.x) branch.**
All the 2.x releases are deployed to npm and can be used with Redocly-cdn:
- particular release, for example, `v2.0.0`: https://cdn.redoc.ly/redoc/v2.0.0/bundles/redoc.standalone.js
- `latest` release: https://cdn.redoc.ly/redoc/latest/bundles/redoc.standalone.js
Additionally, all the 1.x releases are hosted on our GitHub Pages-based CDN **(deprecated)**:
- 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 - points to latest 1.x.x release since 2.x releases are not hosted on this CDN but on unpkg.
## Development
see [CONTRIBUTING.md](.github/CONTRIBUTING.md)
================================================
FILE: benchmark/benchmark.js
================================================
const beautifyBenchmark = require('beautify-benchmark');
const sh = require('shelljs');
const fs = require('fs');
const pathJoin = require('path').join;
const spawn = require('child_process').spawn;
const puppeteer = require('puppeteer');
const args = process.argv.slice(2);
args[0] = args[0] || 'HEAD';
args[1] = args[1] || 'local';
let started = false;
console.log('Benchmarking revisions: ' + args.join(', '));
const localDistDir = './benchmark/revisions/local/bundles';
sh.rm('-rf', localDistDir);
console.log(`Building local dist: ${localDistDir}`);
sh.mkdir('-p', localDistDir);
exec(`npm run bundle:lib --output-path ${localDistDir}`);
const revisions = [];
for (const arg of args) {
revisions.push({ name: arg, path: buildRevisionDist(arg) });
}
const configFile = `
export const revisions = [ ${revisions.map(rev => JSON.stringify(rev)).join(', ')} ];
`;
const configDir = './benchmark/revisions/config.js';
console.log(`Writing config "${configDir}"`);
fs.writeFileSync(configDir, configFile);
console.log('Starting benchmark server');
const proc = spawn('npm', ['run', 'start:benchmark']);
proc.stdout.on('data', data => {
if (data.toString().indexOf('Compiled successfully') > -1) {
console.log('Server started');
startBenchmark();
}
});
proc.stderr.on('data', data => {
console.error(data.toString());
});
proc.on('close', code => {
console.log(`Benchmark server stopped with code ${code}`);
});
async function runPuppeteer() {
return await puppeteer
.launch({ args: ['--no-sandbox', '--disable-setuid-sandbox'] })
.then(async browser => {
const page = await browser.newPage();
let resolve;
const prom = new Promise(_resolve => {
resolve = _resolve;
});
page.on('console', async msg => {
const args = msg.args();
const obj = args.length > 0 && (await args[0].jsonValue());
if (!obj) return;
if (obj.done) {
beautifyBenchmark.log();
// resolve(obj);
} else if (obj.cycle) {
beautifyBenchmark.add(obj.cycle);
} else if (obj.allDone) {
resolve();
} else {
console.log(obj);
}
});
await page.goto('http://127.0.0.1:9090', { timeout: 0 });
const res = await prom;
await browser.close();
return res;
});
}
async function startBenchmark() {
if (started) return;
started = true;
console.log('Starting benchmarks');
await runPuppeteer();
console.log('Killing benchmark server');
proc.kill('SIGINT');
}
function exec(command) {
const { code, stdout, stderr } = sh.exec(command, { silent: true });
if (code !== 0) {
console.error(stdout);
console.error(stderr);
sh.exit(code);
}
return stdout.trim();
}
function buildRevisionDist(revision) {
if (revision === 'local') {
return localDistDir;
}
const hash = exec(`git log -1 --format=%h "${revision}"`);
const buildDir = './benchmark/revisions/' + hash;
const distDir = buildDir + '/bundles';
if (sh.test('-d', distDir)) {
console.log(`Using prebuilt "${revision}"(${hash}) revision: ${buildDir}`);
return distDir;
}
console.log(`Building "${revision}"(${hash}) revision: ${buildDir}`);
sh.mkdir('-p', buildDir);
exec(`git archive "${hash}" | tar -xC "${buildDir}"`);
const pwd = sh.pwd();
sh.cd(buildDir);
exec('npm uninstall cypress puppeteer && npm install && npm run bundle:lib');
sh.cd(pwd);
return distDir;
}
================================================
FILE: benchmark/index.html
================================================
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>ReDoc</title>
<style>
body {
margin: 0;
padding: 0;
}
redoc {
display: block;
}
</style>
<link href="https://fonts.googleapis.com/css?family=Montserrat:300,400,700|Roboto:300,400,700" rel="stylesheet">
</head>
<body>
<redoc id="example"></redoc>
<!-- <redoc spec-url="./openapi.yaml"></redoc> -->
<script src="https://unpkg.com/lodash@4.17.4/lodash.js"></script>
<script src="https://unpkg.com/benchmark@2.1.4/benchmark.js"></script>
<!-- <script src="../bundles/redoc.standalone.js"></script> -->
</body>
</html>
================================================
FILE: benchmark/index.tsx
================================================
import * as React from 'react';
import { render, unmountComponentAtNode } from 'react-dom';
import { Redoc, RedocProps } from '../src/components';
import { loadAndBundleSpec } from '../src/utils';
import { revisions } from './revisions/config';
import { configure } from 'mobx';
declare var Benchmark;
configure({
isolateGlobalState: true,
});
const node = document.getElementById('example');
const renderRoot = (Component: typeof Redoc, props: RedocProps) =>
render(<Component {...props} />, node!);
async function importRedocs() {
return Promise.all(
revisions.map(rev => {
return import('./' + rev.path.substring(12) + '/redoc.lib.js');
}),
);
}
function startFullTime(redocs, resolvedSpec) {
return new Promise(async resolve => {
const suite = new Benchmark.Suite('Full time', {
maxTime: 20,
initCount: 2,
onStart(event) {
console.log(' ⏱️ ' + event.currentTarget.name);
},
onCycle(event) {
console.log({ cycle: event.target });
},
onComplete() {
console.log({ done: true });
setTimeout(() => resolve(), 10);
},
});
revisions.forEach((rev, idx) => {
const redoc = redocs[idx];
suite.add(rev.name, () => {
const store = new redoc.AppStore(resolvedSpec, 'openapi.yaml');
renderRoot(redoc.Redoc, { store });
unmountComponentAtNode(node!);
});
});
suite.run({ async: true });
});
}
function startInitStore(redocs, resolvedSpec) {
return new Promise(async resolve => {
const suite = new Benchmark.Suite('Create Store Time', {
maxTime: 20,
initCount: 2,
onStart(event) {
console.log(' ⏱️ ' + event.currentTarget.name);
},
onCycle(event) {
console.log({ cycle: event.target });
},
onComplete() {
console.log({ done: true });
setTimeout(() => resolve(), 10);
},
});
revisions.forEach((rev, idx) => {
const redoc = redocs[idx];
suite.add(rev.name, () => {
const store = new redoc.AppStore(resolvedSpec, 'openapi.yaml');
store.dispose();
});
});
suite.run({ async: true });
});
}
function startRenderTime(redocs, resolvedSpec) {
return new Promise(async resolve => {
const suite = new Benchmark.Suite('Render time', {
maxTime: 20,
initCount: 2,
onStart(event) {
console.log(' ⏱️ ' + event.currentTarget.name);
},
onCycle(event) {
console.log({ cycle: event.target });
unmountComponentAtNode(node!);
},
onComplete() {
console.log({ done: true });
setTimeout(() => resolve(), 10);
},
});
revisions.forEach((rev, idx) => {
const redoc = redocs[idx];
const store = new redoc.AppStore(resolvedSpec, 'openapi.yaml');
suite.add(rev.name, () => {
renderRoot(redoc.Redoc, { store });
});
});
suite.run({ async: true });
});
}
async function runBenchmarks() {
const redocs: any[] = await importRedocs();
const resolvedSpec = await loadAndBundleSpec('openapi.yaml');
await startInitStore(redocs, resolvedSpec);
await startRenderTime(redocs, resolvedSpec);
await startFullTime(redocs, resolvedSpec);
console.log({ allDone: true });
}
runBenchmarks();
================================================
FILE: config/docker/Dockerfile
================================================
# To run:
# docker build -t redoc .
# docker run -it --rm -p 80:80 -e SPEC_URL='http://localhost:8000/swagger.yaml' redoc
# Ensure http://localhost:8000/swagger.yaml is served with cors. A good solution is:
# npm i -g http-server
# http-server -p 8000 --cors
FROM node:18-alpine
RUN apk update && apk add --no-cache git
# Install dependencies
WORKDIR /build
COPY package.json package-lock.json /build/
RUN npm ci --no-optional --ignore-scripts
RUN npm explore esbuild -- npm run postinstall
# copy only required for the build files
COPY src /build/src
COPY webpack.config.ts tsconfig.json custom.d.ts /build/
COPY config/webpack-utils.ts /build/config/
COPY typings/styled-patch.d.ts /build/typings/styled-patch.d.ts
RUN npm run bundle:standalone
FROM nginx:alpine
ENV PAGE_TITLE="ReDoc"
ENV PAGE_FAVICON="favicon.png"
ENV BASE_PATH=
ENV SPEC_URL="http://petstore.swagger.io/v2/swagger.json"
ENV PORT=80
ENV REDOC_OPTIONS=
# copy files to the nginx folder
COPY --from=0 build/bundles /usr/share/nginx/html
COPY config/docker/index.tpl.html /usr/share/nginx/html/index.html
COPY demo/favicon.png /usr/share/nginx/html/
COPY config/docker/nginx.conf /etc/nginx/
COPY config/docker/docker-run.sh /usr/local/bin
# Provide rights to the root group to write to nginx repositories (needed to run in OpenShift)
RUN chgrp -R 0 /etc/nginx && \
chgrp -R 0 /usr/share/nginx/html && \
chgrp -R 0 /var/cache/nginx && \
chgrp -R 0 /var/log/nginx && \
chgrp -R 0 /var/run && \
chmod -R g+rwX /etc/nginx && \
chmod -R g+rwX /usr/share/nginx/html && \
chmod -R g+rwX /var/cache/nginx && \
chmod -R g+rwX /var/log/nginx && \
chmod -R g+rwX /var/run
EXPOSE 80
CMD ["sh", "/usr/local/bin/docker-run.sh"]
================================================
FILE: config/docker/README.md
================================================
# Official ReDoc Docker Image
## Usage
### Docker
Serve remote spec by URL:
docker run -it --rm -p 80:80 \
-e SPEC_URL='http://localhost:8000/swagger.yaml' redocly/redoc
Serve local file:
docker run -it --rm -p 80:80 \
-v $(pwd)/demo/swagger.yaml:/usr/share/nginx/html/swagger.yaml \
-e SPEC_URL=swagger.yaml redocly/redoc
Serve local file and watch for updates:
docker run -it --rm -p 80:80 \
-v $(pwd)/demo/:/usr/share/nginx/html/swagger/ \
-e SPEC_URL=swagger/swagger.yaml redocly/redoc
### OpenShift
To quote [OpenShift Container Platform-Specific Guidelines](https://docs.openshift.com/container-platform/3.11/creating_images/guidelines.html#openshift-specific-guidelines):
> Support Arbitrary User IDs
>
> By default, OpenShift Container Platform runs containers using an arbitrarily assigned user ID. This provides additional security against processes escaping the container due to a container engine vulnerability and thereby achieving escalated permissions on the host node.
>
> For an image to support running as an arbitrary user, directories and files that may be written to by processes in the image should be owned by the root group and be read/writable by that group. Files to be executed should also have group execute permissions.
To comply with those requirements the `Dockerfile` contains instructions to adapt the rights for the folders:
- `/etc/nginx` because the `docker-run.sh` script modifies it at startup time
- `/usr/share/nginx/html` because the `docker-run.sh` script modifies it at startup time
- `/var/cache/nginx` because the Nginx process writes to it
- `/var/log/nginx` because the Nginx process writes to it
- `/var/run` because the Nginx process writes to it
Another issue with OpenShift is that the default exposed port `80` cannot be used as it is restricted. So one needs to use another port like `8080` (using the `PORT` configuration as described below), and then to configure the `container spec` accordingly.
## Runtime configuration options
- `PAGE_TITLE` (default `"ReDoc"`) - page title
- `PAGE_FAVICON` (default `"favicon.png"`) - URL to page favicon
- `BASE_PATH` (optional) - prepend favicon & standalone bundle with this path
- `SPEC_URL` (default `"http://petstore.swagger.io/v2/swagger.json"`) - URL to spec
- `PORT` (default `80`) - nginx port
- `REDOC_OPTIONS` (optional) - [`<redoc>` tag attributes](https://github.com/Redocly/redoc#redoc-tag-attributes)
## Build
docker build -t redocly/redoc .
================================================
FILE: config/docker/docker-run.sh
================================================
#!/bin/sh
set -e
sed -i -e "s|%PAGE_TITLE%|$PAGE_TITLE|g" /usr/share/nginx/html/index.html
sed -i -e "s|%PAGE_FAVICON%|$PAGE_FAVICON|g" /usr/share/nginx/html/index.html
sed -i -e "s|%BASE_PATH%|$BASE_PATH|g" /usr/share/nginx/html/index.html
sed -i -e "s|%SPEC_URL%|$SPEC_URL|g" /usr/share/nginx/html/index.html
sed -i -e "s|%REDOC_OPTIONS%|${REDOC_OPTIONS}|g" /usr/share/nginx/html/index.html
sed -i -e "s|\(listen\s*\) [0-9]*|\1 ${PORT}|g" /etc/nginx/nginx.conf
exec nginx -g 'daemon off;'
================================================
FILE: config/docker/hooks/build
================================================
#!/bin/bash
# DockerHub cd into Dockerfile location before build
# So we have to undo this.
cd ../..
docker build -f config/docker/Dockerfile -t $IMAGE_NAME .
================================================
FILE: config/docker/index.tpl.html
================================================
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>%PAGE_TITLE%</title>
<link rel="icon" href="%BASE_PATH%%PAGE_FAVICON%" />
<style>
body {
margin: 0;
padding: 0;
}
redoc {
display: block;
}
</style>
<link
href="https://fonts.googleapis.com/css?family=Montserrat:300,400,700|Roboto:300,400,700"
rel="stylesheet"
/>
</head>
<body>
<redoc spec-url="%SPEC_URL%" %REDOC_OPTIONS%></redoc>
<script src="%BASE_PATH%redoc.standalone.js"></script>
</body>
</html>
================================================
FILE: config/docker/nginx.conf
================================================
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
index index.html index.htm;
location / {
alias /usr/share/nginx/html/;
if ($request_method = 'OPTIONS') {
# Add security headers
add_header 'X-Frame-Options' 'deny always';
add_header 'X-XSS-Protection' '"1; mode=block" always';
add_header 'X-Content-Type-Options' 'nosniff always';
add_header 'Referrer-Policy' 'strict-origin-when-cross-origin';
# Set access control header
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
#
# Custom headers and headers various browsers *should* be OK with but aren't
#
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
#
# Tell client that this pre-flight info is valid for 20 days
#
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain charset=UTF-8';
add_header 'Content-Length' 0;
return 204;
}
if ($request_method = 'POST') {
# Add security headers
add_header 'X-Frame-Options' 'deny always';
add_header 'X-XSS-Protection' '"1; mode=block" always';
add_header 'X-Content-Type-Options' 'nosniff always';
add_header 'Referrer-Policy' 'strict-origin-when-cross-origin';
# Set access control header
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
}
if ($request_method = 'GET') {
# Add security headers
add_header 'X-Frame-Options' 'deny always';
add_header 'X-XSS-Protection' '"1; mode=block" always';
add_header 'X-Content-Type-Options' 'nosniff always';
add_header 'Referrer-Policy' 'strict-origin-when-cross-origin';
# Set access control header
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
}
}
}
}
================================================
FILE: config/webpack-utils.ts
================================================
import * as webpack from 'webpack';
export function webpackIgnore(regexp) {
return new webpack.NormalModuleReplacementPlugin(regexp, require.resolve('lodash.noop'));
}
================================================
FILE: custom.d.ts
================================================
/// <reference path="typings/styled-patch.d.ts" />
declare module '*.json' {
const content: any;
export = content;
}
declare module '*.svg' {
const content: string;
export default content;
}
declare module '*.css' {
const content: string;
export default content;
}
declare var __REDOC_VERSION__: string;
declare var __REDOC_REVISION__: string;
declare var reactHotLoaderGlobal: any;
interface Element {
scrollIntoViewIfNeeded(centerIfNeeded?: boolean): void;
}
type GenericObject = Record<string, any>;
================================================
FILE: cypress.config.ts
================================================
import { defineConfig } from 'cypress';
export default defineConfig({
fixturesFolder: false,
fileServerFolder: '.',
video: true,
projectId: 'z6eb6h',
viewportWidth: 1440,
viewportHeight: 720,
e2e: {
// We've imported your old cypress plugins here.
// You may want to clean this up later by importing these.
setupNodeEvents(on, config) {
return require('./e2e/plugins/index.js')(on, config);
},
excludeSpecPattern: '*.js.map',
specPattern: 'e2e/integration/**/*.{js,jsx,ts,tsx}',
supportFile: false,
},
});
================================================
FILE: demo/ComboBox.tsx
================================================
/**
* Could not find ready-to-use component with required behaviour so
* I quickly hacked my own. Will refactor into separate npm package later
*/
import * as React from 'react';
import styled from '../src/styled-components';
const DropDownItem = styled.li<{ $active?: boolean }>`
${(props: any) => (props.$active ? 'background-color: #eee' : '')};
padding: 13px 16px;
&:hover {
background-color: #eee;
}
cursor: pointer;
text-overflow: ellipsis;
overflow: hidden;
`;
const DropDownList = styled.ul`
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12),
0 3px 1px -2px rgba(0, 0, 0, 0.2);
background: #fff;
border-radius: 0 0 2px 2px;
top: 100%;
left: 0;
right: 0;
z-index: 200;
overflow: hidden;
position: absolute;
list-style: none;
margin: 4px 0 0 0;
padding: 5px 0;
font-family: Roboto, sans-serif;
overflow: hidden;
`;
const ComboBoxWrap = styled.div`
position: relative;
width: 100%;
max-width: 500px;
display: flex;
`;
const Input = styled.input`
box-sizing: border-box;
width: 100%;
padding: 0 10px;
color: #555;
background-color: #fff;
border: 1px solid #ccc;
font-size: 16px;
height: 28px;
box-sizing: border-box;
vertical-align: middle;
line-height: 1;
outline: none;
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
&:focus {
border-color: #66afe9;
outline: 0;
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);
}
`;
const Button = styled.button`
background-color: #fff;
color: #333;
padding: 2px 10px;
touch-action: manipulation;
cursor: pointer;
user-select: none;
border: 1px solid #ccc;
border-left: 0;
font-size: 16px;
height: 28px;
box-sizing: border-box;
vertical-align: middle;
line-height: 1;
outline: none;
width: 80px;
white-space: nowrap;
@media screen and (max-width: 450px) {
display: none;
}
`;
export interface ComboBoxProps {
onChange?: (val: string) => void;
options: Array<{ value: string; label: string }>;
placeholder?: string;
value?: string;
}
export interface ComboBoxState {
open: boolean;
value: string;
activeItemIdx: number;
}
export default class ComboBox extends React.Component<ComboBoxProps, ComboBoxState> {
state = {
open: false,
value: this.props.value || '',
activeItemIdx: -1,
};
open = () => {
this.setState({
open: true,
});
};
close = () => {
this.setState({
open: false,
activeItemIdx: -1,
});
};
handleChange = e => {
this.updateValue(e.currentTarget.value);
};
updateValue(value) {
this.setState({
value,
activeItemIdx: -1,
});
}
handleSelect(value: string) {
this.updateValue(value);
if (this.props.onChange) {
this.props.onChange(value);
}
this.close();
}
handleTryItClick = () => {
this.handleSelect(this.state.value);
};
handleKeyPress = (e: React.KeyboardEvent<HTMLInputElement>) => {
if (e.keyCode === 13) {
this.handleSelect(e.currentTarget.value);
} else if (e.keyCode === 40) {
const activeItemIdx = Math.min(this.props.options.length - 1, ++this.state.activeItemIdx);
this.setState({
open: true,
activeItemIdx,
value: this.props.options[activeItemIdx].value,
});
e.preventDefault();
} else if (e.keyCode === 38) {
const activeItemIdx = Math.max(0, --this.state.activeItemIdx);
this.setState({
activeItemIdx,
value: this.props.options[activeItemIdx].value,
});
e.preventDefault();
} else if (e.keyCode === 27) {
this.close();
}
};
handleBlur = () => {
setTimeout(() => this.close(), 100);
};
handleItemClick = (val, idx) => {
this.handleSelect(val);
this.setState({
activeItemIdx: idx,
});
};
renderOption = (option: { value: string; label: string }, idx: number) => {
return (
<DropDownItem
$active={idx === this.state.activeItemIdx}
key={option.value}
// tslint:disable-next-line
onMouseDown={() => {
this.handleItemClick(option.value, idx);
}}
>
<small>
<strong>{option.label}</strong>
</small>
<br />
{option.value}
</DropDownItem>
);
};
render() {
const { open, value } = this.state;
const { options, placeholder } = this.props;
return (
<ComboBoxWrap>
<Input
placeholder={placeholder}
onChange={this.handleChange}
value={value}
onFocus={this.open}
onBlur={this.handleBlur}
onKeyDown={this.handleKeyPress}
aria-label="URL to an OpenAPI definition to try"
/>
<Button onClick={this.handleTryItClick}> TRY IT </Button>
{open && <DropDownList>{options.map(this.renderOption)}</DropDownList>}
</ComboBoxWrap>
);
}
}
================================================
FILE: demo/big-openapi.json
================================================
{
"openapi": "3.0.0",
"servers": [
{
"url": "//api.rebilly.com/v2.1",
"description": "Live Server"
},
{
"url": "//api-sandbox.rebilly.com/v2.1",
"description": "Sandbox Server"
}
],
"info": {
"version": "2.1",
"title": "Rebilly REST API",
"contact": {
"name": "Rebilly API Support",
"url": "https://www.rebilly.com/contact/",
"email": "integrations@rebilly.com"
},
"license": {
"name": "Rebilly",
"url": "https://my.rebilly.com/api/license/"
},
"termsOfService": "https://www.rebilly.com/terms/",
"x-logo": {
"url": "https://rebilly.github.io/RebillyAPI/rb_apiLogo.svg",
"backgroundColor": "#0033A0",
"altText": "Rebilly API logo"
},
"description": "# Introduction\nThe Rebilly API is built on HTTP. Our API is RESTful. It has predictable\nresource URLs. It returns HTTP response codes to indicate errors. It also\naccepts and returns JSON in the HTTP body. You can use your favorite\nHTTP/REST library for your programming language to use Rebilly's API, or\nyou can use one of our SDKs (currently available in [PHP](https://github.com/Rebilly/rebilly-php)\nand [C#](https://github.com/Rebilly/rebilly-dotnet-client)).\n\n# Authentication\nWhen you sign up for an account, you are given your first API key.\nYou can generate additional API keys, and delete API keys (as you may\nneed to rotate your keys in the future). You authenticate to the\nRebilly API by providing your secret key in the request header.\n\nRebilly offers three forms of authentication: private key, JSON Web Tokens, and\npublic key.\n- private key: authenticates each request by searching for the presence\nof an HTTP header: REB-APIKEY.\n- JWT: authenticates each request by the HTTP header: Authorization.\n- public key: authenticates by the HTTP header: REB-AUTH (read more on this below).\n\nRebilly also offers JSON Web Tokens (JWT) authentication, where you can control\nthe specific granular permissions and expiration for that JWT. We call our resource\nfor generating JWT [Sessions](#tag/Sessions).\n\nRebilly also has a client-side authentication scheme that uses an\napiUser and HMAC-SHA1 signature (only for the Tokens resource), so\nthat you may safely create tokens from the client-side without compromising\nyour secret keys.\n\nNever share your secret keys. Keep them guarded and secure.\nThe client-side authentication scheme uses one HTTP header named REB-AUTH.\n\n\n\n# PHP SDK\nFor all PHP SDK examples provided in this spec you will need to configure `$client`.\nYou may do it like this:\n\n```php\n$client = new Rebilly\\Client([\n 'apiKey' => 'YourApiKeyHere',\n 'baseUrl' => 'https://api.rebilly.com',\n]);\n```\n"
},
"tags": [
{
"name": "3D Secure",
"description": "3D Secure is a way to authenticate and protect transactions. Typically,\nit's only possible to protect the initial transaction in a subscription\nwith 3D Secure.\n"
},
{
"name": "API Keys",
"description": "Always keep your API Keys private. In addition to your API Keys, you may use\nJSON Web Tokens (JWT) to authenticate to the API. See\nour [Sessions](#tag/Sessions) resource for more information.\n"
},
{
"name": "Bank Accounts",
"description": "Bank Accounts are a type of payment instrument used to collect\nACH (echeck) payments, similar to how a payment\ncard would be used to for a credit card payment.\n"
},
{
"name": "Blacklists",
"description": "Your blacklists contains values of customerIds, email addresses,\nipAddresses, bank identification numbers, countries or payment cards that\nyou do NOT want to do business with. They are a good tool for managing\nrisk. A blacklist entry that expires after a period of time we call a\ngreylist.\n"
},
{
"name": "Checkout Pages",
"description": "Hosted checkout pages.\n"
},
{
"name": "Contacts",
"description": "Contacts are Customer's address book.\nAll contact information used in Invoices, Subscriptions, Transacions, etc is enlisted here. However, changing a Contact won't change corresponding contact information in related resources\n"
},
{
"name": "Coupons",
"description": "Coupons allows to apply different types of discounts to Invoices, Subscriptions and Plans. Redeemed Coupons will be applied only to Invoices with the same currency.\n"
},
{
"name": "Customers",
"description": "Customers are your customers, sometimes known as accounts, clients,\nmembers, patrons, or players in other systems.\n"
},
{
"name": "Customer Authentication",
"description": "Create authentication credentials, login, logout, and verify your customers.\n"
},
{
"name": "Custom Events",
"description": "If system events can't solve your problems, you are able to create a custom event\nthat can fit your requirements, and use it to solve your own business logic.\n"
},
{
"name": "Custom Rules",
"description": "\"Don't conform to the rules. Create the rules.\"\nRather than adapt your workflow and business, Rebilly can align with your business\nobjectives by giving you the power to automate certain behaviors when key events happen.\nYou can use this to your advantage to mitigate risk, maximize conversions and minimize costs.\nYou have the controls at your fingertips here. If you need more control,\nor help dialing in on a strategy, feel free to contact us.\n\nWhen an event happens, it triggers the evaluation of conditions (that you set up),\nin order from top to bottom. If the condition is met, the corresponding actions are executed.\nThe conditions continue to be checked until either all of the conditions have been executed,\nor a special \"stop\" action is executed.\n"
},
{
"name": "Custom Fields",
"description": "Create additional custom fields for particular resources. You may name,\ndescribe, and determine the type of the schema.\n"
},
{
"name": "Credential Hashes",
"description": "Get and create SMTP and Webhook credential hashes.\n"
},
{
"name": "Disputes",
"description": "Handle disputes (chargebacks and retrievals).\n"
},
{
"name": "Email Credentials",
"description": "Send automated emails through our system by connecting to your third party\nSMTP server (or your third party email service provider's SMTP server).\n"
},
{
"name": "Files",
"description": "A File is an entity that can store a physical file and some metadata. It also provides an easy access to\nits size, mime-type, user-defined tags and description thus allowing easy sorting and searching among stored\nfiles.\nThere are several methods of file uploading available: multipart/form-data encoded form, RAW POST (by sending\nfile contents as POST body), fetching from URL (by providing the file URL via 'url' param)\nAttachment is an entity that is used to link a File to one or multiple objects like Customer, Dispute, Payment,\nTransaction, Subscription, Plan, Product, Invoice, Note. That allows to quickly find and use files related to\nthose specific entities.\n"
},
{
"name": "Gateway Accounts",
"description": "Gateway accounts connect payment request to third party networks and platforms.\n"
},
{
"name": "Invoices",
"description": "Invoices leave a record for both you and your customer of the products sold.\n"
},
{
"name": "Layouts",
"description": "Layouts are used to hold collections of plans. A layout can be used to\npower a pricing page. You can make multiple layouts, and use rules to\ntarget them to different audiences.\n"
},
{
"name": "Lists",
"description": "Lists contain sets of values and may be referenced within Rules criteria.\n\nYou may grant permissions to edit Lists to different people than those who can edit Rules.\nIt may be useful if your workflow involves frequent updates to value sets used in criteria.\n"
},
{
"name": "Migrate payment cards",
"description": "Migrate payment cards from one gateway to another.\n"
},
{
"name": "Notes",
"description": "Leave notes on a customer record to have a handy location to share with\nothers who may interface with the customer. It's great for customer service.\n"
},
{
"name": "Organizations",
"description": "Organizations include the name and address of the entities related to your\naccount. An account may be multi-national, and support multiple\norganizations. Note: Organizations are share between \"Live\" and \"Sandbox\"\n"
},
{
"name": "Payments",
"description": "Collect money from your customers with payments. You can schedule a payment\nto occur in the future. You can assign a dunning schedule to a payment to collect\nin the case of a decline.\n\nSome payments may be, what we term, suspended payments. These types of payments\nrequire user interaction. For example, an initial PayPal purchase, a 3D Secure\npurchase, China Union Pay, and more require the customer's interaction to\ncomplete the payment. We call these a \"suspended\" payment flow.\n"
},
{
"name": "Payment Cards",
"description": "Payment cards are a type of payment instrument used for credit and debit card\nsales. Rebilly securely vaults the full payment card number, and can pass it\nonward securely to any gateway account to transact business.\n"
},
{
"name": "Payment Tokens",
"description": "Payment tokens are used to reduce the scope of PCI DSS compliance. A payment\ntoken can be made using a different authentication scheme (refer to the public key\nauthentication scheme in the Authentication section), which allows you to\ncreate a payment token directly from the browser, bypassing the need to send\nsensitive cardholder info to your servers. We recommend using this with our\nRebilly.js library, which helps you wire a form into this API resource and create\npayment tokens.\n"
},
{
"name": "Plans",
"description": "Plans are a template for making a subscription. For example, you may have a plan\nthat has a 30-day free trial followed by a recurring charge of $19.95 per month\nuntil canceled. The combination of the plan and a request to make a subscription\nwill apply those instructions to create the invoices according to the plan's\nschedule.\n"
},
{
"name": "Products",
"description": "Proposed: Your product includes digital goods, services, and physical goods.\n"
},
{
"name": "Reports",
"description": "The Rebilly Reporting API is currently experimental. You may see\nthe [Reports API Documentation here](https://rebilly.github.io/RebillyReportsAPI/).\n"
},
{
"name": "Rules",
"description": "\"Don't conform to the rules. Create the rules.\"\nRather than adapt your workflow and business, Rebilly can align with your business\nobjectives by giving you the power to automate certain behaviors when key events happen.\nYou can use this to your advantage to mitigate risk, maximize conversions and minimize costs.\nYou have the controls at your fingertips here. If you need more control,\nor help dialing in on a strategy, feel free to contact us.\n\nWhen an event happens, it triggers the evaluation of conditions (that you set up),\nin order from top to bottom. If the condition is met, the corresponding actions are executed.\nThe conditions continue to be checked until either all of the conditions have been executed,\nor a special \"stop\" action is executed.\n"
},
{
"name": "Sessions",
"description": "A session contains a token, which is a JSON Web Token. The token is created\nwith a user's signin credentials.\n\nThis token can be used to authenticate to the API. In addition, the session can be set to\nexpire at a particular time, and has very granular control over permissions.\nUse the token to then authenticate for further requests to the Rebilly API.\n\nThe token should be kept private, but could be stored on the user's browser\nclient to simulate a \"session.\"\n"
},
{
"name": "Shipping Zones",
"description": "A shipping zone contains regions and countries that you ship to. Each shipping zone has its own shipping rates.\n"
},
{
"name": "Status",
"description": "Check the status of the Rebilly API (no authentication required).\n"
},
{
"name": "Subscriptions",
"description": "A subscription applies a plan's template to create invoices for a customer at the\nappropriate scheduled intervals. A subscription may also determine if the payment\nis collected automatically (with autopay set true).\n"
},
{
"name": "Taxes",
"description": "Proposed: You can map a product to a tax category. The tax category is used by\ntax providers to calculate taxes for invoices.\n"
},
{
"name": "Tracking",
"description": "Tracking is a layer for accessing all the activity (API requests,\nsubscriptions, webhooks, events, etc.), thus providing easier\ndebugging and issues auditing.\n"
},
{
"name": "Transactions",
"description": "Get and refund transactions.\n"
},
{
"name": "Users",
"description": "A User represents a person who can login to Rebilly, and take actions subject to\ntheir granted permissions.\n"
},
{
"name": "Websites",
"description": "A Website represents the website/brand that customers interact with... You\ncould think of it like a brand. For example, Nestle owns Perrier and Purina\nand PowerBar.\n\nWe recognize that some enterprises have more than one website (or brand). The\nwebsite is related to each invoice and each payment gateway account. This fe
gitextract_80j5pnbk/ ├── .dockerignore ├── .editorconfig ├── .eslintrc.js ├── .github/ │ ├── CODEOWNERS │ ├── CONTRIBUTING.md │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ └── feature_request.md │ ├── pull_request_template.md │ ├── styles/ │ │ ├── Rules/ │ │ │ ├── BritishEnglish.yml │ │ │ ├── FutureTense.yml │ │ │ ├── HeaderGerunds.yml │ │ │ ├── InclusionGenderCulture.yml │ │ │ └── OxfordComma.yml │ │ └── config/ │ │ └── vocabularies/ │ │ └── Rules/ │ │ ├── accept.txt │ │ └── reject.txt │ └── workflows/ │ ├── docs-tests.yaml │ ├── e2e-tests.yml │ ├── main.yml │ ├── publish.yml │ └── unit-tests.yml ├── .gitignore ├── .husky/ │ └── pre-commit ├── .markdownlint.yaml ├── .mlc.toml ├── .npmignore ├── .prettierignore ├── .vale.ini ├── CHANGELOG.md ├── LICENSE ├── README.md ├── benchmark/ │ ├── benchmark.js │ ├── index.html │ └── index.tsx ├── config/ │ ├── docker/ │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── docker-run.sh │ │ ├── hooks/ │ │ │ └── build │ │ ├── index.tpl.html │ │ └── nginx.conf │ └── webpack-utils.ts ├── custom.d.ts ├── cypress.config.ts ├── demo/ │ ├── ComboBox.tsx │ ├── big-openapi.json │ ├── components/ │ │ └── FileInput.tsx │ ├── index.html │ ├── index.tsx │ ├── museum.yaml │ ├── openapi-3-1.yaml │ ├── openapi.yaml │ ├── playground/ │ │ ├── hmr-playground.tsx │ │ └── index.html │ ├── ssr/ │ │ └── index.ts │ ├── swagger.yaml │ └── webpack.config.ts ├── docs/ │ ├── config.md │ ├── deployment/ │ │ ├── cli.md │ │ ├── docker.md │ │ ├── html.md │ │ ├── intro.md │ │ └── react.md │ ├── index.md │ ├── quickstart.md │ ├── redoc-vendor-extensions.md │ └── security-definitions-injection.md ├── e2e/ │ ├── e2e.html │ ├── index.html │ ├── integration/ │ │ ├── menu.e2e.ts │ │ ├── misc.e2e.ts │ │ ├── search.e2e.ts │ │ ├── standalone.e2e.ts │ │ └── urls.e2e.ts │ ├── plugins/ │ │ ├── cy-ts-preprocessor.js │ │ └── index.js │ ├── standalone-3-1.html │ ├── standalone-compatibility.html │ ├── standalone.html │ └── tsconfig.json ├── package.json ├── scripts/ │ ├── invalidate-cache.sh │ ├── publish-cdn.sh │ └── version.js ├── src/ │ ├── __tests__/ │ │ ├── ssr.test.tsx │ │ └── standalone.test.tsx │ ├── common-elements/ │ │ ├── CopyButtonWrapper.tsx │ │ ├── Dropdown/ │ │ │ ├── Dropdown.tsx │ │ │ ├── index.ts │ │ │ ├── styled.ts │ │ │ └── types.ts │ │ ├── PrismDiv.tsx │ │ ├── Tooltip.tsx │ │ ├── fields-layout.ts │ │ ├── fields.ts │ │ ├── headers.ts │ │ ├── index.ts │ │ ├── linkify.tsx │ │ ├── mixins.ts │ │ ├── panels.ts │ │ ├── perfect-scrollbar.tsx │ │ ├── samples.tsx │ │ ├── schema.ts │ │ ├── shelfs.tsx │ │ └── tabs.ts │ ├── components/ │ │ ├── ApiInfo/ │ │ │ ├── ApiInfo.tsx │ │ │ ├── index.ts │ │ │ └── styled.elements.ts │ │ ├── ApiLogo/ │ │ │ ├── ApiLogo.tsx │ │ │ └── styled.elements.tsx │ │ ├── CallbackSamples/ │ │ │ ├── CallbackReqSamples.tsx │ │ │ └── CallbackSamples.tsx │ │ ├── Callbacks/ │ │ │ ├── CallbackDetails.tsx │ │ │ ├── CallbackOperation.tsx │ │ │ ├── CallbackTitle.tsx │ │ │ ├── CallbacksList.tsx │ │ │ ├── index.ts │ │ │ └── styled.elements.ts │ │ ├── ContentItems/ │ │ │ └── ContentItems.tsx │ │ ├── DropdownOrLabel/ │ │ │ └── DropdownOrLabel.tsx │ │ ├── Endpoint/ │ │ │ ├── Endpoint.tsx │ │ │ └── styled.elements.ts │ │ ├── ErrorBoundary.tsx │ │ ├── ExternalDocumentation/ │ │ │ └── ExternalDocumentation.tsx │ │ ├── Fields/ │ │ │ ├── ArrayItemDetails.tsx │ │ │ ├── EnumValues.tsx │ │ │ ├── Examples.tsx │ │ │ ├── Extensions.tsx │ │ │ ├── Field.tsx │ │ │ ├── FieldConstraints.tsx │ │ │ ├── FieldDetail.tsx │ │ │ ├── FieldDetails.tsx │ │ │ └── Pattern.tsx │ │ ├── GenericChildrenSwitcher/ │ │ │ └── GenericChildrenSwitcher.tsx │ │ ├── JsonViewer/ │ │ │ ├── JsonViewer.tsx │ │ │ ├── index.tsx │ │ │ └── style.ts │ │ ├── Loading/ │ │ │ ├── Loading.tsx │ │ │ └── Spinner.svg.tsx │ │ ├── Markdown/ │ │ │ ├── AdvancedMarkdown.tsx │ │ │ ├── Markdown.tsx │ │ │ ├── SanitizedMdBlock.tsx │ │ │ └── styled.elements.tsx │ │ ├── MediaTypeSwitch/ │ │ │ └── MediaTypesSwitch.tsx │ │ ├── Operation/ │ │ │ └── Operation.tsx │ │ ├── OptionsProvider.ts │ │ ├── Parameters/ │ │ │ ├── Parameters.tsx │ │ │ └── ParametersGroup.tsx │ │ ├── PayloadSamples/ │ │ │ ├── Example.tsx │ │ │ ├── ExampleValue.tsx │ │ │ ├── MediaTypeSamples.tsx │ │ │ ├── PayloadSamples.tsx │ │ │ ├── exernalExampleHook.ts │ │ │ └── styled.elements.ts │ │ ├── Redoc/ │ │ │ ├── Redoc.tsx │ │ │ └── styled.elements.tsx │ │ ├── RedocStandalone.tsx │ │ ├── RequestSamples/ │ │ │ └── RequestSamples.tsx │ │ ├── ResponseSamples/ │ │ │ └── ResponseSamples.tsx │ │ ├── Responses/ │ │ │ ├── Response.tsx │ │ │ ├── ResponseDetails.tsx │ │ │ ├── ResponseHeaders.tsx │ │ │ ├── ResponseTitle.tsx │ │ │ ├── ResponsesList.tsx │ │ │ └── styled.elements.ts │ │ ├── Schema/ │ │ │ ├── ArraySchema.tsx │ │ │ ├── DiscriminatorDropdown.tsx │ │ │ ├── ObjectSchema.tsx │ │ │ ├── OneOfSchema.tsx │ │ │ ├── RecursiveSchema.tsx │ │ │ ├── Schema.tsx │ │ │ └── index.ts │ │ ├── SchemaDefinition/ │ │ │ └── SchemaDefinition.tsx │ │ ├── SearchBox/ │ │ │ ├── SearchBox.tsx │ │ │ └── styled.elements.tsx │ │ ├── SecurityRequirement/ │ │ │ ├── OAuthFlow.tsx │ │ │ ├── RequiredScopesRow.tsx │ │ │ ├── SecurityDetails.tsx │ │ │ ├── SecurityHeader.tsx │ │ │ ├── SecurityRequirement.tsx │ │ │ └── styled.elements.ts │ │ ├── SecuritySchemes/ │ │ │ └── SecuritySchemes.tsx │ │ ├── SeeMore/ │ │ │ └── SeeMore.tsx │ │ ├── SelectOnClick/ │ │ │ └── SelectOnClick.tsx │ │ ├── SideMenu/ │ │ │ ├── Logo.tsx │ │ │ ├── MenuItem.tsx │ │ │ ├── MenuItems.tsx │ │ │ ├── SideMenu.tsx │ │ │ ├── index.ts │ │ │ └── styled.elements.ts │ │ ├── SourceCode/ │ │ │ └── SourceCode.tsx │ │ ├── StickySidebar/ │ │ │ ├── ChevronSvg.tsx │ │ │ └── StickyResponsiveSidebar.tsx │ │ ├── StoreBuilder.ts │ │ ├── __tests__/ │ │ │ ├── Callbacks.test.tsx │ │ │ ├── DiscriminatorDropdown.test.tsx │ │ │ ├── FieldDetails.test.tsx │ │ │ ├── JsonViewer.tsx │ │ │ ├── OneOfSchema.test.tsx │ │ │ ├── Schema.test.tsx │ │ │ ├── SchemaDefinition.test.tsx │ │ │ ├── SecurityRequirement.test.tsx │ │ │ ├── __snapshots__/ │ │ │ │ ├── DiscriminatorDropdown.test.tsx.snap │ │ │ │ ├── FieldDetails.test.tsx.snap │ │ │ │ ├── OneOfSchema.test.tsx.snap │ │ │ │ └── SecurityRequirement.test.tsx.snap │ │ │ └── fixtures/ │ │ │ ├── simple-callback.json │ │ │ ├── simple-discriminator.json │ │ │ └── simple-security-fixture.json │ │ ├── index.ts │ │ └── testProviders.tsx │ ├── empty.js │ ├── index.ts │ ├── polyfills.ts │ ├── services/ │ │ ├── AppStore.ts │ │ ├── ClipboardService.ts │ │ ├── HistoryService.ts │ │ ├── Labels.ts │ │ ├── MarkdownRenderer.ts │ │ ├── MarkerService.ts │ │ ├── MenuBuilder.ts │ │ ├── MenuStore.ts │ │ ├── OpenAPIParser.ts │ │ ├── RedocNormalizedOptions.ts │ │ ├── ScrollService.ts │ │ ├── SearchStore.ts │ │ ├── SearchWorker.worker.ts │ │ ├── SpecStore.ts │ │ ├── __tests__/ │ │ │ ├── MarkdownRenderer.test.ts │ │ │ ├── MarkerService.test.ts │ │ │ ├── OpenAPIParser.test.ts │ │ │ ├── __snapshots__/ │ │ │ │ ├── OpenAPIParser.test.ts.snap │ │ │ │ └── prism.test.ts.snap │ │ │ ├── fixtures/ │ │ │ │ ├── 3.1/ │ │ │ │ │ ├── conditionalField.json │ │ │ │ │ ├── conditionalSchema.json │ │ │ │ │ ├── pathItems.json │ │ │ │ │ ├── patternProperties.json │ │ │ │ │ ├── prefixItems.json │ │ │ │ │ ├── schemaDefinition.json │ │ │ │ │ └── unevaluatedProperties.json │ │ │ │ ├── arrayItems.json │ │ │ │ ├── callback.json │ │ │ │ ├── discriminator.json │ │ │ │ ├── fields.json │ │ │ │ ├── mergeAllOf.json │ │ │ │ ├── nestedEnumDescroptionSample.json │ │ │ │ ├── oneOfHoist.json │ │ │ │ ├── oneOfTitles.json │ │ │ │ └── siblingRefDescription.json │ │ │ ├── history.service.test.ts │ │ │ ├── models/ │ │ │ │ ├── ApiInfo.test.ts │ │ │ │ ├── Callback.test.ts │ │ │ │ ├── FieldModel.test.ts │ │ │ │ ├── MenuBuilder.test.ts │ │ │ │ ├── RequestBody.test.ts │ │ │ │ ├── Response.test.ts │ │ │ │ ├── Schema.circular.test.ts │ │ │ │ ├── Schema.test.ts │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── Schema.test.ts.snap │ │ │ │ └── helpers.ts │ │ │ └── prism.test.ts │ │ ├── index.ts │ │ ├── models/ │ │ │ ├── ApiInfo.ts │ │ │ ├── Callback.ts │ │ │ ├── Example.ts │ │ │ ├── Field.ts │ │ │ ├── Group.model.ts │ │ │ ├── MediaContent.ts │ │ │ ├── MediaType.ts │ │ │ ├── Operation.ts │ │ │ ├── RequestBody.ts │ │ │ ├── Response.ts │ │ │ ├── Schema.ts │ │ │ ├── SecurityRequirement.ts │ │ │ ├── SecuritySchemes.ts │ │ │ ├── Webhook.ts │ │ │ └── index.ts │ │ └── types.ts │ ├── setupTests.ts │ ├── standalone.tsx │ ├── styled-components.ts │ ├── theme.ts │ ├── types/ │ │ ├── index.ts │ │ └── open-api.ts │ └── utils/ │ ├── JsonPointer.ts │ ├── __tests__/ │ │ ├── __snapshots__/ │ │ │ └── loadAndBundleSpec.test.ts.snap │ │ ├── helpers.test.ts │ │ ├── loadAndBundleSpec.test.ts │ │ ├── object.test.ts │ │ └── openapi.test.ts │ ├── debug.ts │ ├── decorators.ts │ ├── dom.ts │ ├── helpers.ts │ ├── highlight.ts │ ├── index.ts │ ├── jsonToHtml.ts │ ├── loadAndBundleSpec.ts │ ├── memoize.ts │ ├── object.ts │ ├── openapi.ts │ ├── sort.ts │ └── test-utils.ts ├── tsconfig.json ├── tsconfig.lib.json ├── tslint.json ├── typings/ │ └── styled-patch.d.ts └── webpack.config.ts
SYMBOL INDEX (650 symbols across 137 files)
FILE: benchmark/benchmark.js
function runPuppeteer (line 53) | async function runPuppeteer() {
function startBenchmark (line 85) | async function startBenchmark() {
function exec (line 95) | function exec(command) {
function buildRevisionDist (line 105) | function buildRevisionDist(revision) {
FILE: benchmark/index.tsx
function importRedocs (line 22) | async function importRedocs() {
function startFullTime (line 30) | function startFullTime(redocs, resolvedSpec) {
function startInitStore (line 60) | function startInitStore(redocs, resolvedSpec) {
function startRenderTime (line 89) | function startRenderTime(redocs, resolvedSpec) {
function runBenchmarks (line 119) | async function runBenchmarks() {
FILE: config/webpack-utils.ts
function webpackIgnore (line 3) | function webpackIgnore(regexp) {
FILE: custom.d.ts
type Element (line 23) | interface Element {
type GenericObject (line 27) | type GenericObject = Record<string, any>;
FILE: cypress.config.ts
method setupNodeEvents (line 13) | setupNodeEvents(on, config) {
FILE: demo/ComboBox.tsx
type ComboBoxProps (line 94) | interface ComboBoxProps {
type ComboBoxState (line 100) | interface ComboBoxState {
class ComboBox (line 106) | class ComboBox extends React.Component<ComboBoxProps, ComboBoxState> {
method updateValue (line 130) | updateValue(value) {
method handleSelect (line 137) | handleSelect(value: string) {
method render (line 202) | render() {
FILE: demo/components/FileInput.tsx
function FileInput (line 26) | function FileInput(props: { onUpload }) {
FILE: demo/index.tsx
constant DEFAULT_SPEC (line 8) | const DEFAULT_SPEC = 'museum.yaml';
constant NEW_VERSION_PETSTORE (line 9) | const NEW_VERSION_PETSTORE = 'openapi-3-1.yaml';
class DemoApp (line 23) | class DemoApp extends React.Component<
method constructor (line 27) | constructor(props) {
method render (line 84) | render() {
function updateQueryStringParameter (line 187) | function updateQueryStringParameter(uri, key, value) {
FILE: demo/ssr/index.ts
constant PORT (line 12) | const PORT = 9999;
FILE: demo/webpack.config.ts
constant VERSION (line 8) | const VERSION = JSON.stringify(require('../package.json').version);
constant REVISION (line 9) | const REVISION = JSON.stringify(
function root (line 13) | function root(filename) {
FILE: e2e/integration/misc.e2e.ts
function loadSpec (line 4) | async function loadSpec(url: string): Promise<any> {
function initReDoc (line 9) | function initReDoc(win, spec, options = {}) {
FILE: e2e/integration/standalone.e2e.ts
function baseCheck (line 2) | function baseCheck(name: string, url: string) {
FILE: src/common-elements/CopyButtonWrapper.tsx
type CopyButtonWrapperProps (line 6) | interface CopyButtonWrapperProps {
FILE: src/common-elements/Dropdown/types.ts
type DropdownOption (line 1) | interface DropdownOption {
type DropdownProps (line 9) | interface DropdownProps {
type ArrowIconProps (line 21) | interface ArrowIconProps {
FILE: src/common-elements/Tooltip.tsx
type TooltipProps (line 52) | interface TooltipProps extends React.PropsWithChildren<any> {
class Tooltip (line 57) | class Tooltip extends React.Component<TooltipProps> {
method render (line 58) | render() {
FILE: src/common-elements/linkify.tsx
function Link (line 39) | function Link(props: { to: string; className?: string; children?: any }) {
function navigate (line 63) | function navigate(history: HistoryService, event: React.MouseEvent<HTMLA...
function ShareLink (line 78) | function ShareLink(props: { to: string }) {
FILE: src/common-elements/perfect-scrollbar.tsx
type PerfectScrollbarProps (line 30) | interface PerfectScrollbarProps {
class PerfectScrollbar (line 36) | class PerfectScrollbar extends React.Component<
method componentDidMount (line 42) | componentDidMount() {
method componentDidUpdate (line 50) | componentDidUpdate() {
method componentWillUnmount (line 54) | componentWillUnmount() {
method render (line 62) | render() {
function PerfectScrollbarWrap (line 80) | function PerfectScrollbarWrap(
FILE: src/components/ApiInfo/ApiInfo.tsx
type ApiInfoProps (line 19) | interface ApiInfoProps {
class ApiInfo (line 24) | class ApiInfo extends React.Component<ApiInfoProps> {
method render (line 25) | render() {
FILE: src/components/ApiLogo/ApiLogo.tsx
class ApiLogo (line 7) | class ApiLogo extends React.Component<{ info: OpenAPIInfo }> {
method render (line 8) | render() {
FILE: src/components/CallbackSamples/CallbackReqSamples.tsx
type PayloadSampleProps (line 10) | interface PayloadSampleProps {
class CallbackPayloadSample (line 15) | class CallbackPayloadSample extends React.Component<PayloadSampleProps> {
method render (line 16) | render() {
FILE: src/components/CallbackSamples/CallbackSamples.tsx
type CallbackSamplesProps (line 14) | interface CallbackSamplesProps {
class CallbackSamples (line 19) | class CallbackSamples extends React.Component<CallbackSamplesProps> {
method render (line 34) | render() {
FILE: src/components/Callbacks/CallbackDetails.tsx
type CallbackDetailsProps (line 15) | interface CallbackDetailsProps {
class CallbackDetails (line 20) | class CallbackDetails extends React.Component<CallbackDetailsProps> {
method render (line 21) | render() {
FILE: src/components/Callbacks/CallbackOperation.tsx
class CallbackOperation (line 9) | class CallbackOperation extends React.Component<{ callbackOperation: Ope...
method render (line 14) | render() {
FILE: src/components/Callbacks/CallbackTitle.tsx
type CallbackTitleProps (line 11) | interface CallbackTitleProps {
FILE: src/components/Callbacks/CallbacksList.tsx
type CallbacksListProps (line 7) | interface CallbacksListProps {
class CallbacksList (line 11) | class CallbacksList extends React.PureComponent<CallbacksListProps> {
method render (line 12) | render() {
FILE: src/components/ContentItems/ContentItems.tsx
class ContentItems (line 12) | class ContentItems extends React.Component<{
method render (line 15) | render() {
type ContentItemProps (line 26) | interface ContentItemProps {
class ContentItem (line 31) | class ContentItem extends React.Component<ContentItemProps> {
method render (line 32) | render() {
class SectionItem (line 67) | class SectionItem extends React.Component<ContentItemProps> {
method render (line 68) | render() {
class OperationItem (line 100) | class OperationItem extends React.Component<{
method render (line 103) | render() {
FILE: src/components/DropdownOrLabel/DropdownOrLabel.tsx
type DropdownOrLabelProps (line 6) | interface DropdownOrLabelProps extends DropdownProps {
function DropdownOrLabel (line 18) | function DropdownOrLabel(props: DropdownOrLabelProps): JSX.Element {
FILE: src/components/Endpoint/Endpoint.tsx
type EndpointProps (line 19) | interface EndpointProps {
type EndpointState (line 27) | interface EndpointState {
class Endpoint (line 31) | class Endpoint extends React.Component<EndpointProps, EndpointState> {
method constructor (line 32) | constructor(props) {
method render (line 43) | render() {
FILE: src/components/ErrorBoundary.tsx
class ErrorBoundary (line 9) | class ErrorBoundary extends React.Component<
method constructor (line 13) | constructor(props) {
method componentDidCatch (line 18) | componentDidCatch(error) {
method render (line 23) | render() {
FILE: src/components/ExternalDocumentation/ExternalDocumentation.tsx
class ExternalDocumentation (line 13) | class ExternalDocumentation extends React.Component<{
method render (line 17) | render() {
FILE: src/components/Fields/ArrayItemDetails.tsx
function ArrayItemDetails (line 9) | function ArrayItemDetails({ schema }: { schema: SchemaModel }) {
FILE: src/components/Fields/EnumValues.tsx
type EnumValuesProps (line 11) | interface EnumValuesProps {
type EnumValuesState (line 16) | interface EnumValuesState {
class EnumValues (line 26) | class EnumValues extends React.PureComponent<EnumValuesProps, EnumValues...
method constructor (line 27) | constructor(props: EnumValuesProps) {
method toggle (line 37) | private toggle() {
method render (line 41) | render() {
FILE: src/components/Fields/Examples.tsx
function Examples (line 10) | function Examples({ field }: { field: FieldModel }) {
FILE: src/components/Fields/Extensions.tsx
type ExtensionsProps (line 15) | interface ExtensionsProps {
class Extensions (line 21) | class Extensions extends React.PureComponent<ExtensionsProps> {
method render (line 22) | render() {
FILE: src/components/Fields/Field.tsx
type FieldProps (line 25) | interface FieldProps extends SchemaOptions {
class Field (line 37) | class Field extends React.Component<FieldProps> {
method render (line 56) | render() {
FILE: src/components/Fields/FieldConstraints.tsx
type ConstraintsViewProps (line 4) | interface ConstraintsViewProps {
class ConstraintsView (line 8) | class ConstraintsView extends React.PureComponent<ConstraintsViewProps> {
method render (line 9) | render() {
FILE: src/components/Fields/FieldDetail.tsx
type FieldDetailProps (line 4) | interface FieldDetailProps {
function FieldDetailComponent (line 10) | function FieldDetailComponent({ value, label, raw }: FieldDetailProps) {
FILE: src/components/Fields/Pattern.tsx
constant MAX_PATTERN_LENGTH (line 6) | const MAX_PATTERN_LENGTH = 45;
function Pattern (line 8) | function Pattern(props: { schema: SchemaModel }) {
FILE: src/components/GenericChildrenSwitcher/GenericChildrenSwitcher.tsx
type GenericChildrenSwitcherProps (line 7) | interface GenericChildrenSwitcherProps<T> {
type GenericChildrenSwitcherState (line 15) | interface GenericChildrenSwitcherState {
class GenericChildrenSwitcher (line 24) | class GenericChildrenSwitcher<T> extends React.Component<
method constructor (line 28) | constructor(props) {
method render (line 43) | render() {
FILE: src/components/JsonViewer/JsonViewer.tsx
type JsonProps (line 11) | interface JsonProps {
FILE: src/components/Loading/Loading.tsx
type LoadingProps (line 15) | interface LoadingProps {
class Loading (line 19) | class Loading extends React.PureComponent<LoadingProps> {
method render (line 20) | render() {
FILE: src/components/Markdown/AdvancedMarkdown.tsx
type AdvancedMarkdownProps (line 10) | interface AdvancedMarkdownProps extends BaseMarkdownProps {
class AdvancedMarkdown (line 15) | class AdvancedMarkdown extends React.Component<AdvancedMarkdownProps> {
method render (line 16) | render() {
method renderWithOptionsAndStore (line 26) | renderWithOptionsAndStore(options: RedocNormalizedOptions, store?: App...
FILE: src/components/Markdown/Markdown.tsx
type StylingMarkdownProps (line 6) | interface StylingMarkdownProps {
type BaseMarkdownProps (line 11) | interface BaseMarkdownProps {
type MarkdownProps (line 16) | type MarkdownProps = BaseMarkdownProps &
class Markdown (line 23) | class Markdown extends React.Component<MarkdownProps> {
method render (line 24) | render() {
FILE: src/components/Markdown/SanitizedMdBlock.tsx
function SanitizedMarkdownHTML (line 18) | function SanitizedMarkdownHTML({
FILE: src/components/MediaTypeSwitch/MediaTypesSwitch.tsx
type MediaTypeChildProps (line 8) | interface MediaTypeChildProps {
type MediaTypesSwitchProps (line 13) | interface MediaTypesSwitchProps {
class MediaTypesSwitch (line 22) | class MediaTypesSwitch extends React.Component<MediaTypesSwitchProps> {
method render (line 29) | render() {
FILE: src/components/Operation/Operation.tsx
type OperationProps (line 26) | interface OperationProps {
FILE: src/components/Parameters/Parameters.tsx
function safePush (line 17) | function safePush(obj, prop, item) {
type ParametersProps (line 24) | interface ParametersProps {
constant PARAM_PLACES (line 29) | const PARAM_PLACES = ['path', 'query', 'cookie', 'header'];
class Parameters (line 31) | class Parameters extends React.PureComponent<ParametersProps> {
method orderParams (line 32) | orderParams(params: FieldModel[]): Record<string, FieldModel[]> {
method render (line 40) | render() {
function DropdownWithinHeader (line 73) | function DropdownWithinHeader({
function BodyContent (line 89) | function BodyContent(props: {
FILE: src/components/Parameters/ParametersGroup.tsx
type ParametersGroupProps (line 11) | interface ParametersGroupProps {
class ParametersGroup (line 16) | class ParametersGroup extends React.PureComponent<ParametersGroupProps, ...
method render (line 17) | render() {
FILE: src/components/PayloadSamples/Example.tsx
type ExampleProps (line 8) | interface ExampleProps {
function Example (line 13) | function Example({ example, mimeType }: ExampleProps) {
function ExternalExample (line 21) | function ExternalExample({ example, mimeType }: ExampleProps) {
FILE: src/components/PayloadSamples/ExampleValue.tsx
type ExampleValueProps (line 7) | interface ExampleValueProps {
function ExampleValue (line 12) | function ExampleValue({ value, mimeType }: ExampleValueProps) {
FILE: src/components/PayloadSamples/MediaTypeSamples.tsx
type PayloadSamplesProps (line 11) | interface PayloadSamplesProps {
type MediaTypeSamplesState (line 16) | interface MediaTypeSamplesState {
class MediaTypeSamples (line 20) | class MediaTypeSamples extends React.Component<PayloadSamplesProps, Medi...
method render (line 31) | render() {
FILE: src/components/PayloadSamples/PayloadSamples.tsx
type PayloadSamplesProps (line 10) | interface PayloadSamplesProps {
class PayloadSamples (line 15) | class PayloadSamples extends React.Component<PayloadSamplesProps> {
method render (line 16) | render() {
FILE: src/components/PayloadSamples/exernalExampleHook.ts
function useExternalExample (line 4) | function useExternalExample(example: ExampleModel, mimeType: string) {
FILE: src/components/Redoc/Redoc.tsx
type RedocProps (line 18) | interface RedocProps {
class Redoc (line 22) | class Redoc extends React.Component<RedocProps> {
method componentDidMount (line 27) | componentDidMount() {
method componentWillUnmount (line 31) | componentWillUnmount() {
method render (line 35) | render() {
FILE: src/components/RedocStandalone.tsx
type RedocStandaloneProps (line 13) | interface RedocStandaloneProps {
FILE: src/components/RequestSamples/RequestSamples.tsx
type RequestSamplesProps (line 11) | interface RequestSamplesProps {
class RequestSamples (line 16) | class RequestSamples extends React.Component<RequestSamplesProps> {
method render (line 21) | render() {
FILE: src/components/ResponseSamples/ResponseSamples.tsx
type ResponseSamplesProps (line 10) | interface ResponseSamplesProps {
class ResponseSamples (line 15) | class ResponseSamples extends React.Component<ResponseSamplesProps> {
method render (line 18) | render() {
FILE: src/components/Responses/Response.tsx
type ResponseViewProps (line 8) | interface ResponseViewProps {
FILE: src/components/Responses/ResponseDetails.tsx
class ResponseDetails (line 15) | class ResponseDetails extends React.PureComponent<{ response: ResponseMo...
method render (line 16) | render() {
FILE: src/components/Responses/ResponseHeaders.tsx
type ResponseHeadersProps (line 9) | interface ResponseHeadersProps {
class ResponseHeaders (line 13) | class ResponseHeaders extends React.PureComponent<ResponseHeadersProps> {
method render (line 14) | render() {
FILE: src/components/Responses/ResponseTitle.tsx
type ResponseTitleProps (line 7) | interface ResponseTitleProps {
function ResponseTitleComponent (line 17) | function ResponseTitleComponent({
FILE: src/components/Responses/ResponsesList.tsx
type ResponseListProps (line 15) | interface ResponseListProps {
class ResponsesList (line 20) | class ResponsesList extends React.PureComponent<ResponseListProps> {
method render (line 21) | render() {
FILE: src/components/Schema/ArraySchema.tsx
class ArraySchema (line 15) | class ArraySchema extends React.PureComponent<SchemaProps> {
method render (line 16) | render() {
FILE: src/components/Schema/DiscriminatorDropdown.tsx
class DiscriminatorDropdown (line 8) | class DiscriminatorDropdown extends React.Component<{
method sortOptions (line 12) | sortOptions(options: DropdownOption[], enumValues: string[]): void {
method render (line 28) | render() {
FILE: src/components/Schema/ObjectSchema.tsx
type ObjectSchemaProps (line 14) | interface ObjectSchemaProps extends SchemaProps {
FILE: src/components/Schema/OneOfSchema.tsx
type OneOfButtonProps (line 14) | interface OneOfButtonProps {
class OneOfButton (line 21) | class OneOfButton extends React.Component<OneOfButtonProps> {
method render (line 22) | render() {
class OneOfSchema (line 41) | class OneOfSchema extends React.Component<SchemaProps> {
method render (line 42) | render() {
FILE: src/components/Schema/Schema.tsx
type SchemaOptions (line 15) | interface SchemaOptions {
type SchemaProps (line 22) | interface SchemaProps extends SchemaOptions {
class Schema (line 28) | class Schema extends React.Component<Partial<SchemaProps>> {
method render (line 29) | render() {
FILE: src/components/SchemaDefinition/SchemaDefinition.tsx
type ObjectDescriptionProps (line 12) | interface ObjectDescriptionProps {
class SchemaDefinition (line 22) | class SchemaDefinition extends React.PureComponent<ObjectDescriptionProp...
method getMediaType (line 23) | private static getMediaType(schemaRef: string, exampleRef?: string): O...
method mediaModel (line 41) | private get mediaModel() {
method render (line 56) | render() {
FILE: src/components/SearchBox/SearchBox.tsx
type SearchBoxProps (line 20) | interface SearchBoxProps {
type SearchBoxState (line 29) | interface SearchBoxState {
class SearchBox (line 36) | class SearchBox extends React.PureComponent<SearchBoxProps, SearchBoxSta...
method constructor (line 42) | constructor(props) {
method clearResults (line 52) | clearResults(term: string) {
method setResults (line 102) | setResults(results: SearchResult[], term: string) {
method searchCallback (line 112) | searchCallback(searchTerm: string) {
method render (line 134) | render() {
FILE: src/components/SecurityRequirement/OAuthFlow.tsx
type OAuthFlowProps (line 7) | interface OAuthFlowProps {
function OAuthFlowComponent (line 13) | function OAuthFlowComponent(props: OAuthFlowProps) {
FILE: src/components/SecurityRequirement/SecurityDetails.tsx
type SecuritySchemaProps (line 8) | interface SecuritySchemaProps {
function SecurityDetails (line 12) | function SecurityDetails(props: SecuritySchemaProps) {
FILE: src/components/SecurityRequirement/SecurityHeader.tsx
type SecurityRequirementProps (line 10) | interface SecurityRequirementProps {
function SecurityHeader (line 16) | function SecurityHeader(props: SecurityRequirementProps) {
FILE: src/components/SecurityRequirement/SecurityRequirement.tsx
type SecurityRequirementsProps (line 19) | interface SecurityRequirementsProps {
function SecurityRequirements (line 23) | function SecurityRequirements(props: SecurityRequirementsProps) {
function getRequiredScopes (line 86) | function getRequiredScopes(id: string, securities: SecurityRequirementMo...
FILE: src/components/SecuritySchemes/SecuritySchemes.tsx
constant AUTH_TYPES (line 9) | const AUTH_TYPES = {
type SecurityDefsProps (line 16) | interface SecurityDefsProps {
class SecurityDefs (line 20) | class SecurityDefs extends React.PureComponent<SecurityDefsProps> {
method render (line 21) | render() {
FILE: src/components/SeeMore/SeeMore.tsx
constant TOLERANCE_PX (line 4) | const TOLERANCE_PX = 20;
type SeeMoreProps (line 6) | interface SeeMoreProps {
function SeeMore (line 11) | function SeeMore({ children, height }: SeeMoreProps): JSX.Element {
FILE: src/components/SelectOnClick/SelectOnClick.tsx
class SelectOnClick (line 5) | class SelectOnClick extends React.PureComponent<React.PropsWithChildren<...
method render (line 11) | render() {
FILE: src/components/SideMenu/Logo.tsx
function RedoclyLogo (line 4) | function RedoclyLogo(): JSX.Element | null {
FILE: src/components/SideMenu/MenuItem.tsx
type MenuItemProps (line 14) | interface MenuItemProps {
class MenuItem (line 22) | class MenuItem extends React.Component<MenuItemProps> {
method componentDidMount (line 30) | componentDidMount() {
method componentDidUpdate (line 34) | componentDidUpdate() {
method scrollIntoViewIfActive (line 38) | scrollIntoViewIfActive() {
method render (line 44) | render() {
type OperationMenuItemContentProps (line 90) | interface OperationMenuItemContentProps {
FILE: src/components/SideMenu/MenuItems.tsx
type MenuItemsProps (line 9) | interface MenuItemsProps {
class MenuItems (line 20) | class MenuItems extends React.Component<MenuItemsProps> {
method render (line 21) | render() {
FILE: src/components/SideMenu/SideMenu.tsx
class SideMenu (line 14) | class SideMenu extends React.Component<{ menu: MenuStore; className?: st...
method render (line 19) | render() {
FILE: src/components/SideMenu/styled.elements.ts
function menuItemActive (line 73) | function menuItemActive(
type MenuItemLabelType (line 124) | interface MenuItemLabelType {
FILE: src/components/SourceCode/SourceCode.tsx
type SourceCodeProps (line 7) | interface SourceCodeProps {
FILE: src/components/StickySidebar/StickyResponsiveSidebar.tsx
type StickySidebarProps (line 16) | interface StickySidebarProps {
type StickySidebarState (line 22) | interface StickySidebarState {
class StickyResponsiveSidebar (line 87) | class StickyResponsiveSidebar extends React.Component<
method componentDidMount (line 97) | componentDidMount() {
method componentWillUnmount (line 109) | componentWillUnmount() {
method getScrollYOffset (line 115) | getScrollYOffset(options: RedocNormalizedOptions) {
method render (line 125) | render() {
FILE: src/components/StoreBuilder.ts
type StoreBuilderProps (line 8) | interface StoreBuilderProps {
type StoreBuilderState (line 20) | interface StoreBuilderState {
function StoreBuilder (line 32) | function StoreBuilder(props: StoreBuilderProps) {
function useStore (line 87) | function useStore(): AppStore | undefined {
FILE: src/components/testProviders.tsx
class TestThemeProvider (line 7) | class TestThemeProvider extends React.Component<PropsWithChildren<any>> {
method render (line 8) | render() {
function withTheme (line 17) | function withTheme(children) {
FILE: src/services/AppStore.ts
function createStore (line 25) | async function createStore(
class AppStore (line 34) | class AppStore {
method fromJS (line 40) | static fromJS(state: StoreState): AppStore {
method constructor (line 60) | constructor(
method onDidMount (line 88) | onDidMount() {
method dispose (line 93) | dispose() {
method toJS (line 109) | async toJS(): Promise<StoreState> {
method updateMarkOnMenu (line 123) | private updateMarkOnMenu(idx: number) {
constant DEFAULT_OPTIONS (line 149) | const DEFAULT_OPTIONS: RedocRawOptions = {
FILE: src/services/ClipboardService.ts
class ClipboardService (line 6) | class ClipboardService {
method isSupported (line 7) | static isSupported(): boolean {
method selectElement (line 11) | static selectElement(element: any): void {
method deselect (line 27) | static deselect(): void {
method copySelected (line 38) | static copySelected(): boolean {
method copyElement (line 48) | static copyElement(element: any): boolean {
method copyCustom (line 57) | static copyCustom(text: string): boolean {
FILE: src/services/HistoryService.ts
constant EVENT (line 5) | const EVENT = 'hashchange';
class HistoryService (line 7) | class HistoryService {
method constructor (line 10) | constructor() {
method currentId (line 15) | get currentId(): string {
method linkForId (line 19) | linkForId(id: string) {
method subscribe (line 26) | subscribe(cb): () => void {
method bind (line 35) | bind() {
method dispose (line 41) | dispose() {
method replace (line 49) | replace(id: string | null, rewriteHistory: boolean = false) {
FILE: src/services/Labels.ts
function setRedocLabels (line 24) | function setRedocLabels(_labels?: LabelsConfigRaw) {
function l (line 28) | function l(key: keyof LabelsConfig, idx?: number): string {
FILE: src/services/MarkdownRenderer.ts
constant LEGACY_REGEXP (line 16) | const LEGACY_REGEXP = '^ {0,3}<!-- ReDoc-Inject:\\s+?<({component}).*?/?...
constant MDX_COMPONENT_REGEXP (line 19) | const MDX_COMPONENT_REGEXP = '(?:^ {0,3}<({component})([\\s\\S]*?)>([\\s...
constant COMPONENT_REGEXP (line 22) | const COMPONENT_REGEXP = '(?:' + LEGACY_REGEXP + '|' + MDX_COMPONENT_REG...
function buildComponentComment (line 24) | function buildComponentComment(name: string) {
class MarkdownRenderer (line 28) | class MarkdownRenderer {
method containsComponent (line 29) | static containsComponent(rawText: string, componentName: string) {
method getTextBeforeHading (line 34) | static getTextBeforeHading(md: string, heading: string): string {
method constructor (line 49) | constructor(public options?: RedocNormalizedOptions, public parentId?:...
method saveHeading (line 59) | saveHeading(
method flattenHeadings (line 78) | flattenHeadings(container?: MarkdownHeading[]): MarkdownHeading[] {
method attachHeadingsDescriptions (line 90) | attachHeadingsDescriptions(rawText: string) {
method renderMd (line 139) | renderMd(rawText: string, extractHeadings: boolean = false): string {
method extractHeadings (line 147) | extractHeadings(rawText: string): MarkdownHeading[] {
method renderMdWithComponents (line 156) | renderMdWithComponents(rawText: string): Array<string | MDXComponentMe...
function parseProps (line 204) | function parseProps(props: string): object {
FILE: src/services/MarkerService.ts
class MarkerService (line 3) | class MarkerService {
method add (line 8) | add(el: HTMLElement) {
method delete (line 12) | delete(el: Element) {
method addOnly (line 16) | addOnly(elements: Element[]) {
method clearAll (line 31) | clearAll() {
method mark (line 36) | mark(term?: string) {
method unmark (line 47) | unmark() {
FILE: src/services/MenuBuilder.ts
constant GROUP_DEPTH (line 9) | const GROUP_DEPTH = 0;
class MenuBuilder (line 11) | class MenuBuilder {
method buildStructure (line 15) | static buildStructure(
method addMarkdownItems (line 49) | static addMarkdownItems(
method getTagGroupsItems (line 83) | static getTagGroupsItems(
method getTagsItems (line 109) | static getTagsItems(
method getOperationsItems (line 182) | static getOperationsItems(
method getTagsWithOperations (line 210) | static getTagsWithOperations(parser: OpenAPIParser, explicitTags: Open...
method getTagRelatedSchema (line 272) | static getTagRelatedSchema({
FILE: src/services/MenuStore.ts
constant SECTION_ATTR (line 14) | const SECTION_ATTR = 'data-section-id';
class MenuStore (line 19) | class MenuStore {
method updateOnHistory (line 24) | static updateOnHistory(id: string = historyInst.currentId, scroll: Scr...
method constructor (line 57) | constructor(spec: SpecStore, public scroll: ScrollService, public hist...
method subscribe (line 68) | subscribe() {
method toggleSidebar (line 74) | toggleSidebar() {
method closeSidebar (line 79) | closeSidebar() {
method getElementAt (line 143) | getElementAt(idx: number): Element | null {
method getElementAtOrFirstChild (line 152) | getElementAtOrFirstChild(idx: number): Element | null {
method activeItem (line 163) | get activeItem(): IMenuItem {
method activate (line 178) | activate(
method deactivate (line 217) | deactivate(item: IMenuItem | undefined) {
method activateAndScroll (line 233) | activateAndScroll(
method scrollToActive (line 250) | scrollToActive(): void {
method dispose (line 254) | dispose() {
FILE: src/services/OpenAPIParser.ts
constant MAX_DEREF_DEPTH (line 8) | const MAX_DEREF_DEPTH = 999;
function pushRef (line 14) | function pushRef(stack: string[], ref?: string): string[] {
function concatRefStacks (line 18) | function concatRefStacks(base: string[], stack?: string[]): string[] {
class OpenAPIParser (line 22) | class OpenAPIParser {
method constructor (line 28) | constructor(
method validate (line 44) | validate(spec: Record<string, any>): void {
method isRef (line 73) | isRef<T>(obj: OpenAPIRef | T): obj is OpenAPIRef {
method deref (line 87) | deref<T>(
method mergeRefs (line 127) | mergeRefs<T>(ref: OpenAPIRef, resolved: T, mergeAsAllOf: boolean): T {
method mergeAllOf (line 169) | mergeAllOf(
method findDerived (line 343) | findDerived($refs: string[]): Record<string, string[] | string> {
method hoistOneOfs (line 360) | private hoistOneOfs(schema: OpenAPISchema, refsStack: string[]) {
function uniqByPropIncludeMissing (line 393) | function uniqByPropIncludeMissing<T extends object>(arr: T[], prop: keyo...
FILE: src/services/RedocNormalizedOptions.ts
type DownloadUrlsConfig (line 9) | type DownloadUrlsConfig = {
type RedocRawOptions (line 14) | interface RedocRawOptions {
function argValueToBoolean (line 76) | function argValueToBoolean(val?: string | boolean, defaultValue?: boolea...
function argValueToNumber (line 86) | function argValueToNumber(value: number | string | undefined): number | ...
function argValueToExpandLevel (line 96) | function argValueToExpandLevel(value?: number | string | undefined, defa...
class RedocNormalizedOptions (line 102) | class RedocNormalizedOptions {
method normalizeExpandResponses (line 103) | static normalizeExpandResponses(value: RedocRawOptions['expandResponse...
method normalizeHideHostname (line 121) | static normalizeHideHostname(value: RedocRawOptions['hideHostname']): ...
method normalizeScrollYOffset (line 125) | static normalizeScrollYOffset(value: RedocRawOptions['scrollYOffset'])...
method normalizeShowExtensions (line 157) | static normalizeShowExtensions(value: RedocRawOptions['showExtensions'...
method normalizeSideNavStyle (line 179) | static normalizeSideNavStyle(value: RedocRawOptions['sideNavStyle']): ...
method normalizePayloadSampleIdx (line 197) | static normalizePayloadSampleIdx(value: RedocRawOptions['payloadSample...
method normalizeJsonSampleExpandLevel (line 209) | private static normalizeJsonSampleExpandLevel(level?: number | string ...
method normalizeGeneratedPayloadSamplesMaxDepth (line 219) | private static normalizeGeneratedPayloadSamplesMaxDepth(
method constructor (line 281) | constructor(raw: RedocRawOptions, defaults: RedocRawOptions = {}) {
FILE: src/services/ScrollService.ts
constant EVENT (line 7) | const EVENT = 'scroll';
class ScrollService (line 9) | class ScrollService {
method constructor (line 13) | constructor(private options: RedocNormalizedOptions) {
method bind (line 19) | bind() {
method dispose (line 26) | dispose() {
method scrollY (line 33) | scrollY(): number {
method isElementBellow (line 43) | isElementBellow(el: Element | null) {
method isElementAbove (line 50) | isElementAbove(el: Element | null) {
method subscribe (line 58) | subscribe(cb): () => void {
method scrollIntoView (line 63) | scrollIntoView(element: Element | null) {
method scrollIntoViewBySelector (line 74) | scrollIntoViewBySelector(selector: string) {
method handleScroll (line 81) | handleScroll() {
FILE: src/services/SearchStore.ts
function getWorker (line 7) | function getWorker() {
class SearchStore (line 22) | class SearchStore<T> {
method indexItems (line 25) | indexItems(groups: Array<IMenuItem | OperationModel>) {
method add (line 39) | add(title: string, body: string, meta?: T) {
method dispose (line 43) | dispose() {
method search (line 48) | search(q: string) {
method toJS (line 52) | async toJS() {
method load (line 56) | load(state: any) {
method fromExternalJS (line 60) | fromExternalJS(path?: string, exportName?: string) {
FILE: src/services/SearchWorker.worker.ts
class Worker (line 5) | class Worker {
function initEmpty (line 25) | function initEmpty() {
function add (line 45) | function add<T>(title: string, description: string, meta?: T) {
function done (line 51) | async function done() {
function toJS (line 55) | async function toJS() {
function fromExternalJS (line 62) | async function fromExternalJS(path: string, exportName: string) {
function load (line 75) | async function load(state: any) {
function dispose (line 80) | async function dispose() {
function search (line 85) | async function search<Meta = string>(
FILE: src/services/SpecStore.ts
class SpecStore (line 13) | class SpecStore {
method constructor (line 22) | constructor(
FILE: src/services/__tests__/models/Schema.test.ts
function testImmutablePart (line 144) | function testImmutablePart(schema: SchemaModel) {
FILE: src/services/__tests__/models/helpers.ts
function printType (line 3) | function printType(type: string | string[]): string {
function printDescription (line 7) | function printDescription(description: string | string[]): string {
function circularDetailsPrinter (line 11) | function circularDetailsPrinter(schema: SchemaModel): string {
function enumDetailsPrinter (line 15) | function enumDetailsPrinter(schema: SchemaModel): string {
function printSchema (line 19) | function printSchema(
FILE: src/services/models/ApiInfo.ts
class ApiInfoModel (line 7) | class ApiInfoModel implements OpenAPIInfo {
method constructor (line 23) | constructor(
method getDownloadUrls (line 39) | private getDownloadUrls() {
method getDownloadLink (line 55) | private getDownloadLink(url?: string): string | undefined {
method getDownloadFileName (line 72) | private getDownloadFileName(): string | undefined {
FILE: src/services/models/Callback.ts
class CallbackModel (line 9) | class CallbackModel {
method constructor (line 16) | constructor(
method toggle (line 55) | toggle() {
FILE: src/services/models/Example.ts
class ExampleModel (line 7) | class ExampleModel {
method constructor (line 13) | constructor(
method getExternalValue (line 32) | getExternalValue(mimeType: string): Promise<any> {
FILE: src/services/models/Field.ts
constant DEFAULT_SERIALIZATION (line 17) | const DEFAULT_SERIALIZATION: Record<
class FieldModel (line 42) | class FieldModel {
method constructor (line 62) | constructor(
method toggle (line 123) | toggle() {
method collapse (line 128) | collapse(): void {
method expand (line 133) | expand(): void {
FILE: src/services/models/Group.model.ts
class GroupModel (line 11) | class GroupModel implements IMenuItem {
method constructor (line 33) | constructor(
method activate (line 66) | activate() {
method expand (line 71) | expand() {
method collapse (line 79) | collapse() {
method deactivate (line 88) | deactivate() {
FILE: src/services/models/MediaContent.ts
class MediaContentModel (line 14) | class MediaContentModel {
method constructor (line 23) | constructor(
method activate (line 46) | activate(idx: number) {
method active (line 51) | get active() {
method hasSample (line 55) | get hasSample(): boolean {
FILE: src/services/models/MediaType.ts
class MediaTypeModel (line 11) | class MediaTypeModel {
method constructor (line 22) | constructor(
method generateExample (line 53) | generateExample(parser: OpenAPIParser, info: OpenAPIMediaType) {
FILE: src/services/models/Operation.ts
type XPayloadSample (line 34) | interface XPayloadSample {
function isPayloadSample (line 41) | function isPayloadSample(
class OperationModel (line 52) | class OperationModel implements IMenuItem {
method constructor (line 89) | constructor(
method activate (line 165) | activate() {
method deactivate (line 173) | deactivate() {
method toggle (line 181) | toggle() {
method expand (line 185) | expand() {
method collapse (line 191) | collapse() {
method requestBody (line 196) | get requestBody() {
method codeSamples (line 209) | get codeSamples() {
method parameters (line 239) | get parameters() {
method responses (line 258) | get responses() {
method callbacks (line 285) | get callbacks() {
FILE: src/services/models/RequestBody.ts
type RequestBodyProps (line 8) | type RequestBodyProps = {
class RequestBodyModel (line 15) | class RequestBodyModel {
method constructor (line 20) | constructor({ parser, infoOrRef, options, isEvent }: RequestBodyProps) {
FILE: src/services/models/Response.ts
type ResponseProps (line 11) | type ResponseProps = {
class ResponseModel (line 20) | class ResponseModel {
method constructor (line 32) | constructor({
method toggle (line 74) | toggle() {
FILE: src/services/models/Schema.ts
class SchemaModel (line 29) | class SchemaModel {
method constructor (line 79) | constructor(
method activateOneOf (line 108) | activateOneOf(idx: number) {
method hasType (line 112) | hasType(type: string) {
method init (line 116) | init(parser: OpenAPIParser, isChild: boolean) {
method initOneOf (line 239) | private initOneOf(oneOf: OpenAPISchema[], parser: OpenAPIParser) {
method initDiscriminator (line 290) | private initDiscriminator(schema: OpenAPISchema, parser: OpenAPIParser) {
method initConditionalOperators (line 390) | private initConditionalOperators(schema: OpenAPISchema, parser: OpenAP...
function buildFields (line 425) | function buildFields(
function buildAdditionalItems (line 534) | function buildAdditionalItems({
function getDiscriminator (line 602) | function getDiscriminator(schema: OpenAPISchema): OpenAPISchema['discrim...
function collectUniqueOneOfTypesDeep (line 606) | function collectUniqueOneOfTypesDeep(schema: SchemaModel) {
FILE: src/services/models/SecurityRequirement.ts
type SecurityScheme (line 4) | interface SecurityScheme extends OpenAPISecurityScheme {
class SecurityRequirementModel (line 11) | class SecurityRequirementModel {
method constructor (line 14) | constructor(requirement: OpenAPISecurityRequirement, parser: OpenAPIPa...
FILE: src/services/models/SecuritySchemes.ts
class SecuritySchemeModel (line 5) | class SecuritySchemeModel {
method constructor (line 26) | constructor(parser: OpenAPIParser, id: string, scheme: Referenced<Open...
class SecuritySchemesModel (line 59) | class SecuritySchemesModel {
method constructor (line 62) | constructor(parser: OpenAPIParser) {
FILE: src/services/models/Webhook.ts
class WebhookModel (line 7) | class WebhookModel {
method constructor (line 10) | constructor(
method initWebhooks (line 19) | initWebhooks(parser: OpenAPIParser, webhooks: OpenAPIPath, options: Re...
FILE: src/services/types.ts
type StoreState (line 14) | interface StoreState {
type LabelsConfig (line 26) | interface LabelsConfig {
type LabelsConfigRaw (line 47) | type LabelsConfigRaw = Partial<LabelsConfig>;
type MDXComponentMeta (line 49) | interface MDXComponentMeta {
type MarkdownHeading (line 55) | interface MarkdownHeading {
type ContentItemModel (line 63) | type ContentItemModel = GroupModel | OperationModel;
type TagInfo (line 65) | type TagInfo = OpenAPITag & {
type ExtendedOpenAPIOperation (line 70) | type ExtendedOpenAPIOperation = {
type TagsInfoMap (line 79) | type TagsInfoMap = Record<string, TagInfo>;
type TagGroup (line 81) | interface TagGroup {
type MenuItemGroupType (line 86) | type MenuItemGroupType = 'group' | 'tag' | 'section' | 'schema';
type MenuItemType (line 87) | type MenuItemType = MenuItemGroupType | 'operation';
type IMenuItem (line 89) | interface IMenuItem {
type SearchDocument (line 110) | interface SearchDocument {
type SearchResult (line 116) | interface SearchResult<T = string> {
type SideNavStyleEnum (line 121) | enum SideNavStyleEnum {
type MergedOpenAPISchema (line 127) | type MergedOpenAPISchema = OpenAPISchema & {
FILE: src/standalone.tsx
function attributesMap (line 20) | function attributesMap(element: Element) {
function parseOptionsFromElement (line 31) | function parseOptionsFromElement(element: Element) {
function init (line 43) | function init(
function destroy (line 77) | function destroy(element: Element | null = querySelector('redoc')): void {
function hydrate (line 83) | function hydrate(
function autoInit (line 102) | function autoInit() {
FILE: src/styled-components.ts
method lessThan (line 16) | lessThan(breakpoint, print?: boolean, extra?: string) {
method greaterThan (line 25) | greaterThan(breakpoint) {
method between (line 33) | between(firstBreakpoint, secondBreakpoint) {
function extensionsHook (line 47) | function extensionsHook(styledName: string) {
FILE: src/theme.ts
function resolveTheme (line 188) | function resolveTheme(theme: ThemeInterface): ResolvedThemeInterface {
type ColorSetting (line 222) | interface ColorSetting {
type HTTPResponseColos (line 229) | interface HTTPResponseColos {
type FontSettings (line 235) | interface FontSettings {
type Servers (line 243) | interface Servers {
type ResolvedThemeInterface (line 253) | interface ResolvedThemeInterface {
type primitive (line 385) | type primitive = string | number | boolean | undefined | null;
type AdvancedThemeDeep (line 386) | type AdvancedThemeDeep<T> = T extends primitive
type AdvancedThemeObject (line 389) | type AdvancedThemeObject<T> = { [P in keyof T]?: AdvancedThemeDeep<T[P]> };
type ThemeInterface (line 390) | type ThemeInterface = AdvancedThemeObject<ResolvedThemeInterface>;
FILE: src/types/index.ts
type Omit (line 3) | type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
FILE: src/types/open-api.ts
type OpenAPISpec (line 3) | interface OpenAPISpec {
type OpenAPIInfo (line 16) | interface OpenAPIInfo {
type OpenAPIServer (line 27) | interface OpenAPIServer {
type OpenAPIServerVariable (line 33) | interface OpenAPIServerVariable {
type OpenAPIPaths (line 39) | interface OpenAPIPaths {
type OpenAPIRef (line 42) | interface OpenAPIRef {
type Referenced (line 49) | type Referenced<T> = OpenAPIRef | T;
type OpenAPIPath (line 51) | interface OpenAPIPath {
type OpenAPIXCodeSample (line 67) | interface OpenAPIXCodeSample {
type OpenAPIXBadges (line 73) | interface OpenAPIXBadges {
type OpenAPIOperation (line 79) | interface OpenAPIOperation {
type OpenAPIParameter (line 97) | interface OpenAPIParameter {
type OpenAPIExample (line 115) | interface OpenAPIExample {
type OpenAPISchema (line 122) | interface OpenAPISchema {
type OpenAPIDiscriminator (line 173) | interface OpenAPIDiscriminator {
type OpenAPIMediaType (line 179) | interface OpenAPIMediaType {
type OpenAPIEncoding (line 186) | interface OpenAPIEncoding {
type OpenAPIParameterLocation (line 194) | type OpenAPIParameterLocation = 'query' | 'header' | 'path' | 'cookie';
type OpenAPIParameterStyle (line 195) | type OpenAPIParameterStyle =
type OpenAPIRequestBody (line 204) | interface OpenAPIRequestBody {
type OpenAPIResponses (line 213) | interface OpenAPIResponses {
type OpenAPIResponse (line 217) | interface OpenAPIResponse
type OpenAPILink (line 224) | interface OpenAPILink {
type OpenAPIHeader (line 228) | type OpenAPIHeader = Omit<OpenAPIParameter, 'in' | 'name'>;
type OpenAPICallback (line 230) | interface OpenAPICallback {
type OpenAPIComponents (line 234) | interface OpenAPIComponents {
type OpenAPISecurityRequirement (line 246) | interface OpenAPISecurityRequirement {
type OpenAPISecurityScheme (line 250) | interface OpenAPISecurityScheme {
type OpenAPITag (line 282) | interface OpenAPITag {
type OpenAPIExternalDocumentation (line 289) | interface OpenAPIExternalDocumentation {
type OpenAPIContact (line 294) | interface OpenAPIContact {
type OpenAPILicense (line 300) | interface OpenAPILicense {
FILE: src/utils/JsonPointer.ts
class JsonPointer (line 9) | class JsonPointer {
method baseName (line 19) | static baseName(pointer, level = 1) {
method dirName (line 33) | static dirName(pointer, level = 1) {
method relative (line 46) | static relative(from, to): string[] {
method parse (line 56) | static parse(pointer) {
method join (line 71) | static join(base, tokens) {
method get (line 78) | static get(object: object, pointer: string) {
method compile (line 82) | static compile(tokens: string[]) {
method escape (line 86) | static escape(pointer: string) {
FILE: src/utils/__tests__/openapi.test.ts
type TestCase (line 635) | interface TestCase {
type TestValueTypeGroup (line 641) | interface TestValueTypeGroup {
type TestLocationGroup (line 646) | interface TestLocationGroup {
FILE: src/utils/debug.ts
function debugTime (line 1) | function debugTime(label: string) {
function debugTimeEnd (line 7) | function debugTimeEnd(label: string) {
FILE: src/utils/decorators.ts
function throttle (line 1) | function throttle(func, wait) {
function Throttle (line 39) | function Throttle(delay: number) {
FILE: src/utils/dom.ts
constant IS_BROWSER (line 1) | const IS_BROWSER = typeof window !== 'undefined' && 'HTMLElement' in win...
function querySelector (line 3) | function querySelector(selector: string): Element | null {
function html2Str (line 15) | function html2Str(html: string): string {
function scrollIntoViewIfNeeded (line 32) | function scrollIntoViewIfNeeded(el: HTMLElement, centerIfNeeded = true) {
FILE: src/utils/helpers.ts
function mapWithLast (line 6) | function mapWithLast<T, P>(array: T[], iteratee: (item: T, isLast: boole...
function mapValues (line 25) | function mapValues<T, P>(
function flattenByProp (line 43) | function flattenByProp<T extends object, P extends keyof T>(
function stripTrailingSlash (line 60) | function stripTrailingSlash(path: string): string {
function isNumeric (line 67) | function isNumeric(n: any): n is number {
function appendToMdHeading (line 71) | function appendToMdHeading(md: string, heading: string, content: string) {
function safeSlugify (line 124) | function safeSlugify(value: string): string {
function isAbsoluteUrl (line 138) | function isAbsoluteUrl(url: string) {
function resolveUrl (line 146) | function resolveUrl(url: string, to: string) {
function getBasePath (line 170) | function getBasePath(serverUrl: string): string {
function titleize (line 179) | function titleize(text: string) {
function removeQueryStringAndHash (line 183) | function removeQueryStringAndHash(serverUrl: string): string {
function parseURL (line 195) | function parseURL(url: string) {
function escapeHTMLAttrChars (line 204) | function escapeHTMLAttrChars(str: string): string {
function unescapeHTMLChars (line 208) | function unescapeHTMLChars(str: string): string {
function isArray (line 215) | function isArray(value: unknown): value is any[] {
function isBoolean (line 219) | function isBoolean(value: unknown): value is boolean {
FILE: src/utils/highlight.ts
constant DEFAULT_LANG (line 26) | const DEFAULT_LANG = 'clike';
function mapLang (line 55) | function mapLang(lang: string): string {
function highlight (line 74) | function highlight(source: string | number | boolean, lang: string = DEF...
FILE: src/utils/jsonToHtml.ts
function jsonToHTML (line 3) | function jsonToHTML(json, maxExpandLevel) {
function htmlEncode (line 14) | function htmlEncode(t) {
function stringifyStringLiteral (line 25) | function stringifyStringLiteral(str: string) {
function decorateWithSpan (line 29) | function decorateWithSpan(value, className) {
function punctuation (line 33) | function punctuation(val) {
function valueToHTML (line 37) | function valueToHTML(value, maxExpandLevel: number) {
function arrayToHTML (line 74) | function arrayToHTML(json, maxExpandLevel: number) {
function objectToHTML (line 97) | function objectToHTML(json, maxExpandLevel: number) {
FILE: src/utils/loadAndBundleSpec.ts
function loadAndBundleSpec (line 15) | async function loadAndBundleSpec(specUrlOrObject: object | string): Prom...
function convertSwagger2OpenAPI (line 41) | function convertSwagger2OpenAPI(spec: any): Promise<OpenAPISpec> {
FILE: src/utils/memoize.ts
constant SENTINEL (line 2) | const SENTINEL = {};
function memoize (line 4) | function memoize<T>(target: any, name: string, descriptor: TypedProperty...
function _memoizeGetter (line 18) | function _memoizeGetter(target: any, name: string, descriptor: PropertyD...
function _memoizeMethod (line 33) | function _memoizeMethod<T>(target: any, name: string, descriptor: TypedP...
FILE: src/utils/object.ts
function objectHas (line 1) | function objectHas(object: object, path: string | Array<string>): boolean {
function objectSet (line 15) | function objectSet(object: object, path: string | Array<string>, value: ...
FILE: src/utils/openapi.ts
function isWildcardStatusCode (line 21) | function isWildcardStatusCode(statusCode: string | number): statusCode i...
function isStatusCode (line 25) | function isStatusCode(statusCode: string) {
function getStatusCodeType (line 29) | function getStatusCodeType(statusCode: string | number, defaultAsError =...
function isOperationName (line 64) | function isOperationName(key: string): boolean {
function getOperationSummary (line 68) | function getOperationSummary(operation: ExtendedOpenAPIOperation): string {
function detectType (line 105) | function detectType(schema: OpenAPISchema): string {
function isPrimitiveType (line 120) | function isPrimitiveType(
function isJsonLike (line 163) | function isJsonLike(contentType: string): boolean {
function isFormUrlEncoded (line 167) | function isFormUrlEncoded(contentType: string): boolean {
function delimitedEncodeField (line 171) | function delimitedEncodeField(fieldVal: any, fieldName: string, delimite...
function deepObjectEncodeField (line 183) | function deepObjectEncodeField(fieldVal: any, fieldName: string): string {
function serializeFormValue (line 197) | function serializeFormValue(name: string, explode: boolean, value: any) {
function urlFormEncodePayload (line 213) | function urlFormEncodePayload(
function serializePathParameter (line 243) | function serializePathParameter(
function serializeQueryParameter (line 266) | function serializeQueryParameter(
function serializeHeaderParameter (line 308) | function serializeHeaderParameter(
function serializeCookieParameter (line 327) | function serializeCookieParameter(
function serializeParameterValueWithMime (line 342) | function serializeParameterValueWithMime(value: any, mime: string): stri...
function serializeParameterValue (line 351) | function serializeParameterValue(
function getSerializedValue (line 391) | function getSerializedValue(field: FieldModel, example: any) {
function langFromMime (line 400) | function langFromMime(contentType: string): string {
constant DEFINITION_NAME_REGEX (line 416) | const DEFINITION_NAME_REGEX = /^#\/components\/(schemas|pathItems)\/([^/...
function isNamedDefinition (line 418) | function isNamedDefinition(pointer?: string): boolean {
function getDefinitionName (line 422) | function getDefinitionName(pointer?: string): string | undefined {
function humanizeMultipleOfConstraint (line 427) | function humanizeMultipleOfConstraint(multipleOf: number | undefined): s...
function humanizeRangeConstraint (line 438) | function humanizeRangeConstraint(
function humanizeNumberRange (line 463) | function humanizeNumberRange(schema: OpenAPISchema): string | undefined {
function humanizeConstraints (line 486) | function humanizeConstraints(schema: OpenAPISchema): string[] {
function sortByRequired (line 525) | function sortByRequired(fields: FieldModel[], order: string[] = []) {
function sortByField (line 543) | function sortByField(
function mergeParams (line 552) | function mergeParams(
function mergeSimilarMediaTypes (line 572) | function mergeSimilarMediaTypes(
function expandDefaultServerVariables (line 590) | function expandDefaultServerVariables(url: string, variables: object = {...
function normalizeServers (line 597) | function normalizeServers(
constant SECURITY_DEFINITIONS_JSX_NAME (line 633) | const SECURITY_DEFINITIONS_JSX_NAME = 'SecurityDefinitions';
constant OLD_SECURITY_DEFINITIONS_JSX_NAME (line 634) | const OLD_SECURITY_DEFINITIONS_JSX_NAME = 'security-definitions';
constant SCHEMA_DEFINITION_JSX_NAME (line 635) | const SCHEMA_DEFINITION_JSX_NAME = 'SchemaDefinition';
constant SECURITY_SCHEMES_SECTION_PREFIX (line 637) | let SECURITY_SCHEMES_SECTION_PREFIX = 'section/Authentication/';
function setSecuritySchemePrefix (line 638) | function setSecuritySchemePrefix(prefix: string) {
function isRedocExtension (line 648) | function isRedocExtension(key: string): boolean {
function extractExtensions (line 671) | function extractExtensions(
function pluralizeType (line 688) | function pluralizeType(displayType: string): string {
function getContentWithLegacyExamples (line 695) | function getContentWithLegacyExamples(
FILE: src/utils/sort.ts
function alphabeticallyByProp (line 6) | function alphabeticallyByProp<T>(property: string): (a: T, b: T) => numb...
FILE: src/utils/test-utils.ts
function traverseComponent (line 3) | function traverseComponent(root, fn) {
function filterPropsDeep (line 17) | function filterPropsDeep<T extends object>(component: T, paths: string[]...
FILE: typings/styled-patch.d.ts
type ThemedStyledComponentsModule (line 5) | interface ThemedStyledComponentsModule<T> {
type BaseThemedCssFunction (line 12) | interface BaseThemedCssFunction<T extends object> {
FILE: webpack.config.ts
constant VERSION (line 20) | const VERSION = JSON.stringify(require('./package.json').version);
constant REVISION (line 21) | let REVISION;
constant BANNER (line 31) | const BANNER = `ReDoc - OpenAPI/Swagger-generated API Reference Document...
Condensed preview — 306 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,248K chars).
[
{
"path": ".dockerignore",
"chars": 143,
"preview": "*\n!src/\n!config\n!demo/favicon.png\n\n!custom.d.ts\n!typings/styled-patch.d.ts\n!tsconfig.json\n!webpack.config.ts\n\n!package.j"
},
{
"path": ".editorconfig",
"chars": 179,
"preview": "root = true\n\n[*]\nend_of_line = lf\ncharset = utf-8\ntrim_trailing_whitespace = true\ninsert_final_newline = true\nindent_sty"
},
{
"path": ".eslintrc.js",
"chars": 1567,
"preview": "module.exports = {\n env: {\n browser: true,\n },\n parser: '@typescript-eslint/parser',\n extends: ['plugin:react/rec"
},
{
"path": ".github/CODEOWNERS",
"chars": 62,
"preview": "* @Redocly/keyboard-warriors\n/docs/ @Redocly/technical-writers"
},
{
"path": ".github/CONTRIBUTING.md",
"chars": 3431,
"preview": "# Redoc Contributing Guide\n\nHi! We're really excited that you are interested in contributing to Redoc. Before submitting"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.md",
"chars": 476,
"preview": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: ''\nlabels: 'Type: Bug'\nassignees: ''\n\n---\n\n**Descr"
},
{
"path": ".github/ISSUE_TEMPLATE/feature_request.md",
"chars": 551,
"preview": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: ''\nlabels: 'Type: Enhancement'\nassignees: ''\n\n-"
},
{
"path": ".github/pull_request_template.md",
"chars": 171,
"preview": "## What/Why/How?\n\n## Reference\n\n## Tests\n\n## Screenshots (optional)\n\n## Check yourself\n\n- [ ] Code is linted\n- [ ] Teste"
},
{
"path": ".github/styles/Rules/BritishEnglish.yml",
"chars": 2340,
"preview": "extends: substitution\nmessage: 'Use the US spelling \"%s\" instead of British \"%s\".'\nlink: https://docs.microsoft.com/en-u"
},
{
"path": ".github/styles/Rules/FutureTense.yml",
"chars": 384,
"preview": "extends: existence\nmessage: 'Avoid using future tense: \"%s\". Use present tense instead.'\nlink: https://intranet.redoc.ly"
},
{
"path": ".github/styles/Rules/HeaderGerunds.yml",
"chars": 347,
"preview": "extends: existence\nmessage: 'Do not start headings with with a gerund (ing word). Use an imperative verb instead.'\nlink:"
},
{
"path": ".github/styles/Rules/InclusionGenderCulture.yml",
"chars": 406,
"preview": "extends: substitution\nmessage: 'Use inclusive language. Consider \"%s\" instead of \"%s\".'\nlink: https://intranet.redoc.ly/"
},
{
"path": ".github/styles/Rules/OxfordComma.yml",
"chars": 228,
"preview": "extends: existence\nmessage: \"Use the Oxford comma in '%s'.\"\nlink: https://docs.microsoft.com/en-us/style-guide/punctuati"
},
{
"path": ".github/styles/config/vocabularies/Rules/accept.txt",
"chars": 1655,
"preview": "[Aa]nsible\n[Aa]utostart\n[Bb]locklist\n[Bb]locklists\n[Bb]oolean\n[Bb]reakpoint\n[B]reakpoints\n[Cc]ancelation\n[Cc]lassloading"
},
{
"path": ".github/styles/config/vocabularies/Rules/reject.txt",
"chars": 0,
"preview": ""
},
{
"path": ".github/workflows/docs-tests.yaml",
"chars": 842,
"preview": "name: Documentation tests\non:\n pull_request:\n types: [opened, synchronize, reopened]\n\njobs:\n markdownlint:\n name"
},
{
"path": ".github/workflows/e2e-tests.yml",
"chars": 197,
"preview": "name: Tests e2e\n\non: [push]\n\njobs:\n build-and-e2e:\n runs-on: ubuntu-latest\n steps:\n - uses: actions/checkout"
},
{
"path": ".github/workflows/main.yml",
"chars": 1034,
"preview": "name: Publish Docker image\non:\n release:\n types: [published]\njobs:\n dockerhub:\n name: Publish redoc image to Doc"
},
{
"path": ".github/workflows/publish.yml",
"chars": 3940,
"preview": "name: Publish\n\non:\n push:\n branches: [main]\n\njobs:\n bundle:\n runs-on: ubuntu-latest\n steps:\n - uses: act"
},
{
"path": ".github/workflows/unit-tests.yml",
"chars": 196,
"preview": "name: Unit Tests\n\non: [push]\n\njobs:\n build-and-unit:\n runs-on: ubuntu-latest\n steps:\n - uses: actions/checko"
},
{
"path": ".gitignore",
"chars": 510,
"preview": "### Linux ###\n*~\n\n# KDE directory preferences\n.directory\n# OS X folder attributes\n.DS_Store\n\n# Linux trash folder which "
},
{
"path": ".husky/pre-commit",
"chars": 61,
"preview": "#!/bin/sh\n. \"$(dirname \"$0\")/_/husky.sh\"\n\nnpm run pre-commit\n"
},
{
"path": ".markdownlint.yaml",
"chars": 948,
"preview": "---\n# Default rules: https://github.com/github/super-linter/blob/master/TEMPLATES/.markdown-lint.yml\n\n# Rules by id\n\n# U"
},
{
"path": ".mlc.toml",
"chars": 175,
"preview": "# Ignore these links, we can't check them from this subproject\nignore-links=[\"../*\", \"/docs/*\"]\n# Path to the root folde"
},
{
"path": ".npmignore",
"chars": 60,
"preview": "*\n!bundles/*\n!typings/**/*\n!package.json\n!README.md\n!LICENSE"
},
{
"path": ".prettierignore",
"chars": 5,
"preview": "*.md\n"
},
{
"path": ".vale.ini",
"chars": 1657,
"preview": "# Vale configuration file.\n# See: https://docs.errata.ai/vale/config\n\n# The relative path to the folder containing linti"
},
{
"path": "CHANGELOG.md",
"chars": 128052,
"preview": "# [2.5.2](https://github.com/Redocly/redoc/compare/v2.5.1...v2.5.2) (2025-10-15)\n\n\n### Bug Fixes\n\n* Bumped `openapi-samp"
},
{
"path": "LICENSE",
"chars": 1091,
"preview": "The MIT License (MIT)\n\nCopyright (c) 2015-present, Rebilly, Inc. \n\nPermission is hereby granted, free of charge, to any "
},
{
"path": "README.md",
"chars": 7568,
"preview": "<div align=\"center\">\n <img alt=\"Redoc logo\" src=\"https://raw.githubusercontent.com/Redocly/redoc/main//docs/images/redo"
},
{
"path": "benchmark/benchmark.js",
"chars": 3473,
"preview": "const beautifyBenchmark = require('beautify-benchmark');\nconst sh = require('shelljs');\nconst fs = require('fs');\nconst "
},
{
"path": "benchmark/index.html",
"chars": 633,
"preview": "<!DOCTYPE html>\n<html>\n\n<head>\n <meta charset=\"UTF-8\" />\n <title>ReDoc</title>\n <style>\n body {\n margin: 0;\n "
},
{
"path": "benchmark/index.tsx",
"chars": 3320,
"preview": "import * as React from 'react';\nimport { render, unmountComponentAtNode } from 'react-dom';\n\nimport { Redoc, RedocProps "
},
{
"path": "config/docker/Dockerfile",
"chars": 1731,
"preview": "# To run:\n# docker build -t redoc .\n# docker run -it --rm -p 80:80 -e SPEC_URL='http://localhost:8000/swagger.yaml' redo"
},
{
"path": "config/docker/README.md",
"chars": 2516,
"preview": "# Official ReDoc Docker Image\n\n## Usage\n\n### Docker\n\nServe remote spec by URL:\n\n docker run -it --rm -p 80:80 \\\n "
},
{
"path": "config/docker/docker-run.sh",
"chars": 494,
"preview": "#!/bin/sh\n\nset -e\n\nsed -i -e \"s|%PAGE_TITLE%|$PAGE_TITLE|g\" /usr/share/nginx/html/index.html\nsed -i -e \"s|%PAGE_FAVICON%"
},
{
"path": "config/docker/hooks/build",
"chars": 160,
"preview": "#!/bin/bash\n\n# DockerHub cd into Dockerfile location before build\n# So we have to undo this.\ncd ../..\ndocker build -f co"
},
{
"path": "config/docker/index.tpl.html",
"chars": 647,
"preview": "<!DOCTYPE html>\n<html>\n <head>\n <meta charset=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, init"
},
{
"path": "config/docker/nginx.conf",
"chars": 2773,
"preview": "worker_processes 1;\n\nevents {\n worker_connections 1024;\n}\n\nhttp {\n include mime.types;\n default_typ"
},
{
"path": "config/webpack-utils.ts",
"chars": 171,
"preview": "import * as webpack from 'webpack';\n\nexport function webpackIgnore(regexp) {\n return new webpack.NormalModuleReplacemen"
},
{
"path": "custom.d.ts",
"chars": 524,
"preview": "/// <reference path=\"typings/styled-patch.d.ts\" />\n\ndeclare module '*.json' {\n const content: any;\n export = content;\n"
},
{
"path": "cypress.config.ts",
"chars": 557,
"preview": "import { defineConfig } from 'cypress';\n\nexport default defineConfig({\n fixturesFolder: false,\n fileServerFolder: '.',"
},
{
"path": "demo/ComboBox.tsx",
"chars": 5029,
"preview": "/**\n * Could not find ready-to-use component with required behaviour so\n * I quickly hacked my own. Will refactor into s"
},
{
"path": "demo/big-openapi.json",
"chars": 857980,
"preview": "{\n \"openapi\": \"3.0.0\",\n \"servers\": [\n {\n \"url\": \"//api.rebilly.com/v2.1\",\n \"description\": \"Live Server\"\n "
},
{
"path": "demo/components/FileInput.tsx",
"chars": 1337,
"preview": "import * as yaml from 'js-yaml';\nimport * as React from 'react';\nimport { ChangeEvent, RefObject, useRef } from 'react';"
},
{
"path": "demo/index.html",
"chars": 1727,
"preview": "<!DOCTYPE html>\n<html>\n <head>\n <meta charset=\"UTF-8\" />\n <title>Redoc Interactive Demo</title>\n <meta\n n"
},
{
"path": "demo/index.tsx",
"chars": 5545,
"preview": "import * as React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport styled from 'styled-components';\ni"
},
{
"path": "demo/museum.yaml",
"chars": 25448,
"preview": "openapi: 3.1.0\ninfo:\n title: Redocly Museum API\n description: An imaginary, but delightful Museum API for interacting "
},
{
"path": "demo/openapi-3-1.yaml",
"chars": 41057,
"preview": "openapi: 3.1.0\nservers:\n - url: //petstore.swagger.io/v2\n description: Default server\n - url: //petstore.swagger.io"
},
{
"path": "demo/openapi.yaml",
"chars": 37941,
"preview": "openapi: 3.0.0\nservers:\n - url: //petstore.swagger.io/v2\n description: Default server\n - url: //petstore.swagger.io"
},
{
"path": "demo/playground/hmr-playground.tsx",
"chars": 799,
"preview": "import * as React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport type { RedocRawOptions } from '../"
},
{
"path": "demo/playground/index.html",
"chars": 499,
"preview": "<!DOCTYPE html>\n<html>\n <head>\n <meta charset=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, init"
},
{
"path": "demo/ssr/index.ts",
"chars": 2111,
"preview": "import { renderToString } from 'react-dom/server';\nimport * as React from 'react';\nimport { ServerStyleSheet } from 'sty"
},
{
"path": "demo/swagger.yaml",
"chars": 24002,
"preview": "swagger: '2.0'\nschemes:\n - http\n - https\nhost: petstore.swagger.io\nbasePath: /v2\ninfo:\n description: |\n This is a "
},
{
"path": "demo/webpack.config.ts",
"chars": 3080,
"preview": "import * as CopyWebpackPlugin from 'copy-webpack-plugin';\nimport ForkTsCheckerWebpackPlugin = require('fork-ts-checker-w"
},
{
"path": "docs/config.md",
"chars": 12750,
"preview": "# Configure Redoc\n\nGetting your documentation just right is important, and Redoc comes with many configuration options t"
},
{
"path": "docs/deployment/cli.md",
"chars": 1136,
"preview": "---\nseo:\n title: Use the Redoc CLI\n---\n\n# How to use the Redocly CLI\n\nWith Redocly CLI, you can bundle your OpenAPI def"
},
{
"path": "docs/deployment/docker.md",
"chars": 1132,
"preview": "---\nseo:\n title: Use the Redoc Docker image\n---\n\n# How to use the Redoc Docker image\n\nRedoc is available as a pre-built"
},
{
"path": "docs/deployment/html.md",
"chars": 4900,
"preview": "---\nseo:\n title: Use the Redoc HTML element\n---\n\n# Use Redoc in HTML\n\nTo render API documentation in an HTML page, star"
},
{
"path": "docs/deployment/intro.md",
"chars": 2868,
"preview": "---\nseo:\n title: Redoc deployment guide\n---\n\n# Redoc deployment guide\n\nRedoc offers multiple options for rendering your"
},
{
"path": "docs/deployment/react.md",
"chars": 1903,
"preview": "---\nseo:\n title: Use the Redoc React component\nredirects:\n '/docs/redoc/quickstart/react/':\n to: '/docs/redoc/deplo"
},
{
"path": "docs/index.md",
"chars": 3697,
"preview": "---\nseo:\n title: Redoc\n---\n\n# Redoc: Open source API documentation tool\n\nRedoc is a clean and easy way to produce web-r"
},
{
"path": "docs/quickstart.md",
"chars": 1692,
"preview": "---\nseo:\n title: Redoc quickstart guide\n---\n\n# Redoc quickstart guide\n\nTo render your OpenAPI definition using Redoc, u"
},
{
"path": "docs/redoc-vendor-extensions.md",
"chars": 12603,
"preview": "# Redoc vendor extensions\n\nYou can use the following [vendor extensions](https://redocly.com/docs/openapi-visual-referen"
},
{
"path": "docs/security-definitions-injection.md",
"chars": 646,
"preview": "# Injection security definitions\n\nYou can inject the Security Definitions widget anywhere in your specification `descrip"
},
{
"path": "e2e/e2e.html",
"chars": 119,
"preview": "<html>\n <body>\n <script src=\"../bundles/redoc.standalone.js\">{}</script>\n <div id=\"redoc\" />\n </body>\n</html>;\n"
},
{
"path": "e2e/index.html",
"chars": 119,
"preview": "<html>\n <body>\n <script src=\"../bundles/redoc.standalone.js\">{}</script>\n <div id=\"redoc\" />\n </body>\n</html>;\n"
},
{
"path": "e2e/integration/menu.e2e.ts",
"chars": 4684,
"preview": "describe('Menu', () => {\n describe('3.0 spec', () => {\n beforeEach(() => {\n cy.visit('e2e/standalone.html');\n "
},
{
"path": "e2e/integration/misc.e2e.ts",
"chars": 1833,
"preview": "// tslint:disable:no-implicit-dependencies\nimport * as yaml from 'js-yaml';\n\nasync function loadSpec(url: string): Promi"
},
{
"path": "e2e/integration/search.e2e.ts",
"chars": 2633,
"preview": "describe('Search', () => {\n const getSearchInput = () => cy.get('[role=\"search\"] input');\n const getSearchResults = ()"
},
{
"path": "e2e/integration/standalone.e2e.ts",
"chars": 621,
"preview": "describe('Standalone bundle test', () => {\n function baseCheck(name: string, url: string) {\n describe(name, () => {\n"
},
{
"path": "e2e/integration/urls.e2e.ts",
"chars": 600,
"preview": "describe('Supporting both operation/* and parent/*/operation* urls', () => {\n beforeEach(() => {\n cy.visit('e2e/stan"
},
{
"path": "e2e/plugins/cy-ts-preprocessor.js",
"chars": 520,
"preview": "const wp = require('@cypress/webpack-preprocessor');\n\nconst webpackOptions = {\n resolve: {\n extensions: ['.ts', '.js"
},
{
"path": "e2e/plugins/index.js",
"chars": 158,
"preview": "const cypressTypeScriptPreprocessor = require('./cy-ts-preprocessor');\n\nmodule.exports = on => {\n on('file:preprocessor"
},
{
"path": "e2e/standalone-3-1.html",
"chars": 161,
"preview": "<html>\n\n<body>\n <redoc spec-url=\"../demo/openapi-3-1.yaml\" native-scrollbars></redoc>\n <script src=\"../bundles/redoc.s"
},
{
"path": "e2e/standalone-compatibility.html",
"chars": 139,
"preview": "<html>\n\n<body>\n <redoc spec-url=\"../demo/swagger.yaml\"></redoc>\n <script src=\"../bundles/redoc.standalone.js\"></script"
},
{
"path": "e2e/standalone.html",
"chars": 156,
"preview": "<html>\n\n<body>\n <redoc spec-url=\"../demo/openapi.yaml\" native-scrollbars></redoc>\n <script src=\"../bundles/redoc.stand"
},
{
"path": "e2e/tsconfig.json",
"chars": 535,
"preview": "{\n \"compilerOptions\": {\n \"experimentalDecorators\": true,\n \"module\": \"commonjs\",\n \"moduleResolution\": \"node\",\n "
},
{
"path": "package.json",
"chars": 6986,
"preview": "{\n \"name\": \"redoc\",\n \"version\": \"2.5.2\",\n \"description\": \"ReDoc\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"gi"
},
{
"path": "scripts/invalidate-cache.sh",
"chars": 593,
"preview": "#!/usr/bin/env bash\n\nset -e # exit on error\n\necho jsdelivr clearing cache\ncurl -i -"
},
{
"path": "scripts/publish-cdn.sh",
"chars": 1208,
"preview": "#!/usr/bin/env bash\n\nset -e # exit on error\n\n# TODO: Update script!\n\nVERSION=$(node scripts/version.js)\nVERSION_TAG=v$"
},
{
"path": "scripts/version.js",
"chars": 49,
"preview": "console.log(require('../package.json').version);\n"
},
{
"path": "src/__tests__/ssr.test.tsx",
"chars": 589,
"preview": "/* tslint:disable:no-implicit-dependencies */\n\nimport * as React from 'react';\nimport { renderToString } from 'react-dom"
},
{
"path": "src/__tests__/standalone.test.tsx",
"chars": 628,
"preview": "/* tslint:disable:no-implicit-dependencies */\nimport { mount } from 'enzyme';\nimport * as React from 'react';\nimport * a"
},
{
"path": "src/common-elements/CopyButtonWrapper.tsx",
"chars": 1183,
"preview": "import * as React from 'react';\nimport { Tooltip } from '../common-elements/Tooltip';\n\nimport { ClipboardService } from "
},
{
"path": "src/common-elements/Dropdown/Dropdown.tsx",
"chars": 1856,
"preview": "import * as React from 'react';\nimport styled from '../../styled-components';\nimport { ArrowIconProps, DropdownProps, Dr"
},
{
"path": "src/common-elements/Dropdown/index.ts",
"chars": 51,
"preview": "export * from './styled';\nexport * from './types';\n"
},
{
"path": "src/common-elements/Dropdown/styled.ts",
"chars": 2297,
"preview": "import styled from 'styled-components';\n\nimport { Dropdown as DropdownComponent } from './Dropdown';\n\nexport const Dropd"
},
{
"path": "src/common-elements/Dropdown/types.ts",
"chars": 516,
"preview": "export interface DropdownOption {\n idx?: number;\n value: string;\n title?: string;\n serverUrl?: string;\n label?: str"
},
{
"path": "src/common-elements/PrismDiv.tsx",
"chars": 1907,
"preview": "import styled, { extensionsHook } from '../styled-components';\n\nexport const PrismDiv = styled.div`\n /**\n * Based on p"
},
{
"path": "src/common-elements/Tooltip.tsx",
"chars": 1360,
"preview": "import * as React from 'react';\n\nimport styled from '../styled-components';\n\nconst Wrapper = styled.div`\n position: rel"
},
{
"path": "src/common-elements/fields-layout.ts",
"chars": 4614,
"preview": "import styled, { extensionsHook, media, css } from '../styled-components';\nimport { deprecatedCss } from './mixins';\n\nex"
},
{
"path": "src/common-elements/fields.ts",
"chars": 3963,
"preview": "import { transparentize } from 'polished';\n\nimport styled, { css, extensionsHook } from '../styled-components';\nimport {"
},
{
"path": "src/common-elements/headers.ts",
"chars": 1330,
"preview": "import styled, { css, extensionsHook } from '../styled-components';\n\nconst headerFontSize = {\n 1: '1.85714em',\n 2: '1."
},
{
"path": "src/common-elements/index.ts",
"chars": 307,
"preview": "export * from './panels';\nexport * from './headers';\nexport * from './linkify';\nexport * from './shelfs';\nexport * from "
},
{
"path": "src/common-elements/linkify.tsx",
"chars": 3137,
"preview": "import * as React from 'react';\n\nimport { StoreContext } from '../components/StoreBuilder';\nimport styled, { css } from "
},
{
"path": "src/common-elements/mixins.ts",
"chars": 133,
"preview": "import { css } from '../styled-components';\n\nexport const deprecatedCss = css`\n text-decoration: line-through;\n color:"
},
{
"path": "src/common-elements/panels.ts",
"chars": 1887,
"preview": "import { SECTION_ATTR } from '../services/MenuStore';\nimport styled, { media } from '../styled-components';\n\nexport cons"
},
{
"path": "src/common-elements/perfect-scrollbar.tsx",
"chars": 2799,
"preview": "import * as React from 'react';\n\nimport PerfectScrollbarType, * as PerfectScrollbarNamespace from 'perfect-scrollbar';\n\n"
},
{
"path": "src/common-elements/samples.tsx",
"chars": 1067,
"preview": "import styled from '../styled-components';\nimport { PrismDiv } from './PrismDiv';\n\nexport const SampleControls = styled."
},
{
"path": "src/common-elements/schema.ts",
"chars": 1641,
"preview": "import styled from '../styled-components';\nimport { darken } from 'polished';\nimport { deprecatedCss } from './mixins';\n"
},
{
"path": "src/common-elements/shelfs.tsx",
"chars": 1755,
"preview": "import * as React from 'react';\nimport styled from '../styled-components';\n\nconst directionMap = {\n left: '90deg',\n ri"
},
{
"path": "src/common-elements/tabs.ts",
"chars": 2662,
"preview": "import { darken } from 'polished';\nimport { Tabs as ReactTabs } from 'react-tabs';\n\nimport styled from '../styled-compon"
},
{
"path": "src/components/ApiInfo/ApiInfo.tsx",
"chars": 3406,
"preview": "import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { AppStore } from '../../services/AppStor"
},
{
"path": "src/components/ApiInfo/index.ts",
"chars": 37,
"preview": "export { ApiInfo } from './ApiInfo';\n"
},
{
"path": "src/components/ApiInfo/styled.elements.ts",
"chars": 1148,
"preview": "import { H1, MiddlePanel } from '../../common-elements';\nimport styled, { extensionsHook } from '../../styled-components"
},
{
"path": "src/components/ApiLogo/ApiLogo.tsx",
"chars": 844,
"preview": "import { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { OpenAPIInfo } from '../../types';\nimport"
},
{
"path": "src/components/ApiLogo/styled.elements.tsx",
"chars": 549,
"preview": "import * as React from 'react';\nimport styled from '../../styled-components';\n\nexport const LogoImgEl = styled.img`\n ma"
},
{
"path": "src/components/CallbackSamples/CallbackReqSamples.tsx",
"chars": 1015,
"preview": "import * as React from 'react';\n\nimport styled from '../../styled-components';\nimport { DropdownProps } from '../../comm"
},
{
"path": "src/components/CallbackSamples/CallbackSamples.tsx",
"chars": 2491,
"preview": "import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport styled from '../../styled-components';\nim"
},
{
"path": "src/components/Callbacks/CallbackDetails.tsx",
"chars": 1806,
"preview": "import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { OperationModel } from '../../services/m"
},
{
"path": "src/components/Callbacks/CallbackOperation.tsx",
"chars": 824,
"preview": "import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { OperationModel } from '../../services/m"
},
{
"path": "src/components/Callbacks/CallbackTitle.tsx",
"chars": 1645,
"preview": "import * as React from 'react';\n\nimport { darken } from 'polished';\nimport { ShelfIcon } from '../../common-elements';\ni"
},
{
"path": "src/components/Callbacks/CallbacksList.tsx",
"chars": 1015,
"preview": "import * as React from 'react';\n\nimport { CallbackModel } from '../../services/models';\nimport styled from '../../styled"
},
{
"path": "src/components/Callbacks/index.ts",
"chars": 103,
"preview": "export * from './CallbackOperation';\nexport * from './CallbackTitle';\nexport * from './CallbacksList';\n"
},
{
"path": "src/components/Callbacks/styled.elements.ts",
"chars": 624,
"preview": "import styled from '../../styled-components';\nimport { CallbackTitle } from './CallbackTitle';\nimport { darken } from 'p"
},
{
"path": "src/components/ContentItems/ContentItems.tsx",
"chars": 2718,
"preview": "import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ExternalDocumentation } from '../Extern"
},
{
"path": "src/components/DropdownOrLabel/DropdownOrLabel.tsx",
"chars": 731,
"preview": "import * as React from 'react';\nimport { StyledComponent } from 'styled-components';\n\nimport { DropdownProps, MimeLabel,"
},
{
"path": "src/components/Endpoint/Endpoint.tsx",
"chars": 3047,
"preview": "import * as React from 'react';\nimport { ShelfIcon } from '../../common-elements';\nimport { OperationModel } from '../.."
},
{
"path": "src/components/Endpoint/styled.elements.ts",
"chars": 2929,
"preview": "import styled from '../../styled-components';\n\nexport const OperationEndpointWrap = styled.div`\n cursor: pointer;\n pos"
},
{
"path": "src/components/ErrorBoundary.tsx",
"chars": 1024,
"preview": "import * as React from 'react';\nimport styled from '../styled-components';\n\nconst ErrorWrapper = styled.div`\n padding: "
},
{
"path": "src/components/ExternalDocumentation/ExternalDocumentation.tsx",
"chars": 810,
"preview": "import { observer } from 'mobx-react';\nimport * as React from 'react';\nimport styled from '../../styled-components';\nimp"
},
{
"path": "src/components/Fields/ArrayItemDetails.tsx",
"chars": 1120,
"preview": "import * as React from 'react';\nimport { TypeFormat, TypePrefix } from '../../common-elements/fields';\nimport { Constrai"
},
{
"path": "src/components/Fields/EnumValues.tsx",
"chars": 4314,
"preview": "import * as React from 'react';\nimport { ExampleValue, FieldLabel } from '../../common-elements/fields';\n\nimport { l } f"
},
{
"path": "src/components/Fields/Examples.tsx",
"chars": 1337,
"preview": "import * as React from 'react';\n\nimport { FieldLabel, ExampleValue } from '../../common-elements/fields';\nimport { getSe"
},
{
"path": "src/components/Fields/Extensions.tsx",
"chars": 1104,
"preview": "import * as React from 'react';\n\nimport { ExtensionValue, FieldLabel } from '../../common-elements/fields';\n\nimport styl"
},
{
"path": "src/components/Fields/Field.tsx",
"chars": 4198,
"preview": "import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport {\n ClickablePropertyNameCell,\n Property"
},
{
"path": "src/components/Fields/FieldConstraints.tsx",
"chars": 536,
"preview": "import * as React from 'react';\nimport { ConstraintItem } from '../../common-elements/fields';\n\nexport interface Constra"
},
{
"path": "src/components/Fields/FieldDetail.tsx",
"chars": 595,
"preview": "import * as React from 'react';\nimport { ExampleValue, FieldLabel } from '../../common-elements/fields';\n\nexport interfa"
},
{
"path": "src/components/Fields/FieldDetails.tsx",
"chars": 4137,
"preview": "import * as React from 'react';\nimport { observer } from 'mobx-react';\n\nimport {\n RecursiveLabel,\n TypeFormat,\n TypeN"
},
{
"path": "src/components/Fields/Pattern.tsx",
"chars": 1047,
"preview": "import * as React from 'react';\nimport { PatternLabel, ToggleButton } from '../../common-elements/fields';\nimport { Opti"
},
{
"path": "src/components/GenericChildrenSwitcher/GenericChildrenSwitcher.tsx",
"chars": 1873,
"preview": "import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { DropdownProps, DropdownOption } from '."
},
{
"path": "src/components/JsonViewer/JsonViewer.tsx",
"chars": 3790,
"preview": "import * as React from 'react';\nimport styled from '../../styled-components';\n\nimport { SampleControls } from '../../com"
},
{
"path": "src/components/JsonViewer/index.tsx",
"chars": 30,
"preview": "export * from './JsonViewer';\n"
},
{
"path": "src/components/JsonViewer/style.ts",
"chars": 2002,
"preview": "import { css } from '../../styled-components';\n\nexport const jsonStyles = css`\n .redoc-json code > .collapser {\n dis"
},
{
"path": "src/components/Loading/Loading.tsx",
"chars": 662,
"preview": "import * as React from 'react';\nimport styled from '../../styled-components';\n\nimport { Spinner } from './Spinner.svg';\n"
},
{
"path": "src/components/Loading/Spinner.svg.tsx",
"chars": 2206,
"preview": "import * as React from 'react';\nimport styled, { keyframes } from '../../styled-components';\n\nconst _Spinner = (props: {"
},
{
"path": "src/components/Markdown/AdvancedMarkdown.tsx",
"chars": 1626,
"preview": "import * as React from 'react';\n\nimport { AppStore, MarkdownRenderer, RedocNormalizedOptions } from '../../services';\nim"
},
{
"path": "src/components/Markdown/Markdown.tsx",
"chars": 881,
"preview": "import * as React from 'react';\n\nimport { MarkdownRenderer } from '../../services';\nimport { SanitizedMarkdownHTML } fro"
},
{
"path": "src/components/Markdown/SanitizedMdBlock.tsx",
"chars": 1226,
"preview": "import * as DOMPurify from 'dompurify';\nimport * as React from 'react';\n\nimport { OptionsConsumer } from '../OptionsProv"
},
{
"path": "src/components/Markdown/styled.elements.tsx",
"chars": 3647,
"preview": "import { headerCommonMixin, linkifyMixin } from '../../common-elements';\nimport { PrismDiv } from '../../common-elements"
},
{
"path": "src/components/MediaTypeSwitch/MediaTypesSwitch.tsx",
"chars": 1754,
"preview": "import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { DropdownOption, DropdownProps } from '."
},
{
"path": "src/components/Operation/Operation.tsx",
"chars": 3873,
"preview": "import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { Badge, DarkRightPanel, H2, MiddlePanel,"
},
{
"path": "src/components/OptionsProvider.ts",
"chars": 306,
"preview": "import * as React from 'react';\n\nimport { RedocNormalizedOptions } from '../services/RedocNormalizedOptions';\n\nexport co"
},
{
"path": "src/components/Parameters/Parameters.tsx",
"chars": 3750,
"preview": "import * as React from 'react';\nimport { DropdownOrLabel, DropdownOrLabelProps } from '../DropdownOrLabel/DropdownOrLabe"
},
{
"path": "src/components/Parameters/ParametersGroup.tsx",
"chars": 987,
"preview": "import * as React from 'react';\n\nimport { UnderlinedHeader } from '../../common-elements';\nimport { PropertiesTable } fr"
},
{
"path": "src/components/PayloadSamples/Example.tsx",
"chars": 1233,
"preview": "import * as React from 'react';\n\nimport { StyledPre } from '../../common-elements/samples';\nimport { ExampleModel } from"
},
{
"path": "src/components/PayloadSamples/ExampleValue.tsx",
"chars": 687,
"preview": "import * as React from 'react';\n\nimport { isJsonLike, langFromMime } from '../../utils/openapi';\nimport { JsonViewer } f"
},
{
"path": "src/components/PayloadSamples/MediaTypeSamples.tsx",
"chars": 2374,
"preview": "import * as React from 'react';\n\nimport styled from '../../styled-components';\n\nimport { DropdownOption, DropdownProps }"
},
{
"path": "src/components/PayloadSamples/PayloadSamples.tsx",
"chars": 1221,
"preview": "import { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { MediaTypeSamples } from './MediaTypeSamp"
},
{
"path": "src/components/PayloadSamples/exernalExampleHook.ts",
"chars": 787,
"preview": "import { useEffect, useRef, useState } from 'react';\nimport { ExampleModel } from '../../services/models/Example';\n\nexpo"
},
{
"path": "src/components/PayloadSamples/styled.elements.ts",
"chars": 1660,
"preview": "import { transparentize } from 'polished';\nimport styled from '../../styled-components';\nimport { Dropdown } from '../.."
},
{
"path": "src/components/Redoc/Redoc.tsx",
"chars": 2193,
"preview": "import * as PropTypes from 'prop-types';\nimport * as React from 'react';\n\nimport { ThemeProvider } from '../../styled-co"
},
{
"path": "src/components/Redoc/styled.elements.tsx",
"chars": 1518,
"preview": "import styled, { media } from '../../styled-components';\n\nexport const RedocWrap = styled.div`\n ${({ theme }) => `\n fo"
},
{
"path": "src/components/RedocStandalone.tsx",
"chars": 1491,
"preview": "import * as React from 'react';\n\nimport {\n argValueToBoolean,\n RedocNormalizedOptions,\n RedocRawOptions,\n} from '../s"
},
{
"path": "src/components/RequestSamples/RequestSamples.tsx",
"chars": 1931,
"preview": "import { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { isPayloadSample, OperationModel, RedocNo"
},
{
"path": "src/components/ResponseSamples/ResponseSamples.tsx",
"chars": 1415,
"preview": "import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { OperationModel } from '../../services/m"
},
{
"path": "src/components/Responses/Response.tsx",
"chars": 1350,
"preview": "import * as React from 'react';\nimport { observer } from 'mobx-react';\n\nimport type { ResponseModel, MediaTypeModel } fr"
},
{
"path": "src/components/Responses/ResponseDetails.tsx",
"chars": 1548,
"preview": "import * as React from 'react';\n\nimport { ResponseModel } from '../../services/models';\n\nimport { UnderlinedHeader } fro"
},
{
"path": "src/components/Responses/ResponseHeaders.tsx",
"chars": 901,
"preview": "import * as React from 'react';\nimport { PropertiesTable } from '../../common-elements/fields-layout';\n\nimport { FieldMo"
},
{
"path": "src/components/Responses/ResponseTitle.tsx",
"chars": 1032,
"preview": "import * as React from 'react';\n\nimport { Code } from './styled.elements';\nimport { ShelfIcon } from '../../common-eleme"
},
{
"path": "src/components/Responses/ResponsesList.tsx",
"chars": 980,
"preview": "import * as React from 'react';\nimport { l } from '../../services/Labels';\nimport { ResponseModel } from '../../services"
},
{
"path": "src/components/Responses/styled.elements.ts",
"chars": 1151,
"preview": "import { UnderlinedHeader } from '../../common-elements';\nimport styled from '../../styled-components';\nimport { Respons"
},
{
"path": "src/components/Schema/ArraySchema.tsx",
"chars": 1684,
"preview": "import * as React from 'react';\n\nimport { Schema, SchemaProps } from './Schema';\n\nimport { ArrayClosingLabel, ArrayOpenn"
},
{
"path": "src/components/Schema/DiscriminatorDropdown.tsx",
"chars": 1360,
"preview": "import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { DropdownOption, Dropdown } from '../../"
},
{
"path": "src/components/Schema/ObjectSchema.tsx",
"chars": 2732,
"preview": "import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { SchemaModel } from '../../services/mode"
},
{
"path": "src/components/Schema/OneOfSchema.tsx",
"chars": 1835,
"preview": "import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport {\n OneOfButton as StyledOneOfButton,\n O"
},
{
"path": "src/components/Schema/RecursiveSchema.tsx",
"chars": 520,
"preview": "import * as React from 'react';\nimport { observer } from 'mobx-react';\n\nimport { RecursiveLabel, TypeName, TypeTitle } f"
},
{
"path": "src/components/Schema/Schema.tsx",
"chars": 2587,
"preview": "import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { FieldDetails } from '../Fields/FieldDet"
},
{
"path": "src/components/Schema/index.ts",
"chars": 161,
"preview": "export * from './Schema';\nexport * from './ObjectSchema';\nexport * from './OneOfSchema';\nexport * from './ArraySchema';\n"
},
{
"path": "src/components/SchemaDefinition/SchemaDefinition.tsx",
"chars": 2765,
"preview": "import * as React from 'react';\n\nimport { DarkRightPanel, MiddlePanel, MimeLabel, Row, Section } from '../../common-elem"
},
{
"path": "src/components/SearchBox/SearchBox.tsx",
"chars": 4826,
"preview": "import * as React from 'react';\n\nimport type { IMenuItem, SearchResult } from '../../services/types';\nimport type { Sear"
},
{
"path": "src/components/SearchBox/styled.elements.tsx",
"chars": 2956,
"preview": "import * as React from 'react';\n\nimport { darken, getLuminance, lighten } from 'polished';\nimport styled from '../../sty"
},
{
"path": "src/components/SecurityRequirement/OAuthFlow.tsx",
"chars": 2136,
"preview": "import * as React from 'react';\nimport { OpenAPISecurityScheme } from '../../types';\nimport { SecurityRow } from './styl"
},
{
"path": "src/components/SecurityRequirement/RequiredScopesRow.tsx",
"chars": 410,
"preview": "import * as React from 'react';\n\nexport const RequiredScopesRow = ({ scopes }: { scopes: string[] }): JSX.Element | null"
},
{
"path": "src/components/SecurityRequirement/SecurityDetails.tsx",
"chars": 1908,
"preview": "import * as React from 'react';\nimport { SecuritySchemeModel } from '../../services';\nimport { titleize } from '../../ut"
},
{
"path": "src/components/SecurityRequirement/SecurityHeader.tsx",
"chars": 1497,
"preview": "import { SecurityRequirementModel } from '../../services/models/SecurityRequirement';\nimport {\n ScopeName,\n SecurityRe"
},
{
"path": "src/components/SecurityRequirement/SecurityRequirement.tsx",
"chars": 3366,
"preview": "import * as React from 'react';\nimport { useState } from 'react';\nimport { SecurityRequirementModel } from '../../servic"
},
{
"path": "src/components/SecurityRequirement/styled.elements.ts",
"chars": 2590,
"preview": "import styled from 'styled-components';\nimport { linksCss } from '../Markdown/styled.elements';\nimport { media } from '."
},
{
"path": "src/components/SecuritySchemes/SecuritySchemes.tsx",
"chars": 1377,
"preview": "import * as React from 'react';\n\nimport { SecuritySchemesModel } from '../../services';\nimport { H2, Row, ShareLink, Mid"
},
{
"path": "src/components/SeeMore/SeeMore.tsx",
"chars": 1558,
"preview": "import * as React from 'react';\nimport styled from 'styled-components';\n\nconst TOLERANCE_PX = 20;\n\ninterface SeeMoreProp"
},
{
"path": "src/components/SelectOnClick/SelectOnClick.tsx",
"chars": 574,
"preview": "import * as React from 'react';\n\nimport { ClipboardService } from '../../services';\n\nexport class SelectOnClick extends "
},
{
"path": "src/components/SideMenu/Logo.tsx",
"chars": 418,
"preview": "import { useEffect, useState } from 'react';\nimport * as React from 'react';\n\nexport default function RedoclyLogo(): JSX"
},
{
"path": "src/components/SideMenu/MenuItem.tsx",
"chars": 4079,
"preview": "import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ShelfIcon } from '../../common-elements"
},
{
"path": "src/components/SideMenu/MenuItems.tsx",
"chars": 959,
"preview": "import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport type { IMenuItem } from '../../services';"
},
{
"path": "src/components/SideMenu/SideMenu.tsx",
"chars": 1649,
"preview": "import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { MenuStore } from '../../services';\nimpo"
},
{
"path": "src/components/SideMenu/index.ts",
"chars": 120,
"preview": "export * from './MenuItem';\nexport * from './MenuItems';\nexport * from './SideMenu';\nexport * from './styled.elements';\n"
},
{
"path": "src/components/SideMenu/styled.elements.ts",
"chars": 5309,
"preview": "import * as classnames from 'classnames';\nimport { darken } from 'polished';\n\nimport { deprecatedCss, ShelfIcon } from '"
},
{
"path": "src/components/SourceCode/SourceCode.tsx",
"chars": 891,
"preview": "import * as React from 'react';\nimport { highlight } from '../../utils';\n\nimport { SampleControls, SampleControlsWrap, S"
},
{
"path": "src/components/StickySidebar/ChevronSvg.tsx",
"chars": 1775,
"preview": "import * as React from 'react';\n\nimport styled from '../../styled-components';\n\nexport const AnimatedChevronButton = ({ "
},
{
"path": "src/components/StickySidebar/StickyResponsiveSidebar.tsx",
"chars": 3821,
"preview": "import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { MenuStore } from '../../services/MenuSt"
},
{
"path": "src/components/StoreBuilder.ts",
"chars": 2182,
"preview": "import * as React from 'react';\nimport { createContext, useContext } from 'react';\n\nimport { AppStore } from '../service"
},
{
"path": "src/components/__tests__/Callbacks.test.tsx",
"chars": 2444,
"preview": "/* tslint:disable:no-implicit-dependencies */\n\nimport { shallow } from 'enzyme';\nimport * as React from 'react';\n\nimport"
},
{
"path": "src/components/__tests__/DiscriminatorDropdown.test.tsx",
"chars": 2089,
"preview": "/* eslint-disable import/no-internal-modules */\n/* tslint:disable:no-implicit-dependencies */\n\nimport { shallow } from '"
},
{
"path": "src/components/__tests__/FieldDetails.test.tsx",
"chars": 3216,
"preview": "import * as React from 'react';\nimport { shallow } from 'enzyme';\n\nimport { FieldDetails } from '../Fields/FieldDetails'"
},
{
"path": "src/components/__tests__/JsonViewer.tsx",
"chars": 3254,
"preview": "/* tslint:disable:no-implicit-dependencies */\n\nimport { mount, ReactWrapper } from 'enzyme';\nimport * as React from 'rea"
},
{
"path": "src/components/__tests__/OneOfSchema.test.tsx",
"chars": 2614,
"preview": "/* tslint:disable:no-implicit-dependencies */\n\nimport { shallow } from 'enzyme';\nimport * as React from 'react';\n\nimport"
},
{
"path": "src/components/__tests__/Schema.test.tsx",
"chars": 1868,
"preview": "/* tslint:disable:no-implicit-dependencies */\n\nimport { shallow } from 'enzyme';\nimport * as React from 'react';\n\nimport"
},
{
"path": "src/components/__tests__/SchemaDefinition.test.tsx",
"chars": 2189,
"preview": "/* tslint:disable:no-implicit-dependencies */\n\nimport { shallow } from 'enzyme';\nimport * as React from 'react';\n\nimport"
},
{
"path": "src/components/__tests__/SecurityRequirement.test.tsx",
"chars": 2870,
"preview": "import * as React from 'react';\nimport { mount } from 'enzyme';\n\nimport {\n createStore,\n OpenAPIParser,\n OperationMod"
}
]
// ... and 106 more files (download for full content)
About this extraction
This page contains the full source code of the Redocly/redoc GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 306 files (2.0 MB), approximately 537.1k tokens, and a symbol index with 650 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.