redoc 2.0.0-alpha.7 → 2.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (282) hide show
  1. package/CHANGELOG.md +627 -0
  2. package/LICENSE +1 -1
  3. package/README.md +71 -40
  4. package/bundles/bbd40b5d662c7b796349.worker.js.map +1 -0
  5. package/bundles/redoc.lib.js +9211 -11004
  6. package/bundles/redoc.lib.js.map +1 -1
  7. package/bundles/redoc.standalone.js +76 -38
  8. package/bundles/redoc.standalone.js.map +1 -1
  9. package/package.json +155 -90
  10. package/typings/common-elements/CopyButtonWrapper.d.ts +16 -0
  11. package/typings/common-elements/PrismDiv.d.ts +1 -0
  12. package/typings/common-elements/Tooltip.d.ts +8 -0
  13. package/typings/common-elements/dropdown.d.ts +13 -0
  14. package/typings/common-elements/fields-layout.d.ts +14 -0
  15. package/typings/common-elements/fields.d.ts +14 -0
  16. package/typings/common-elements/headers.d.ts +6 -0
  17. package/{src/common-elements/index.ts → typings/common-elements/index.d.ts} +2 -0
  18. package/typings/common-elements/linkify.d.ts +14 -0
  19. package/typings/common-elements/mixins.d.ts +1 -0
  20. package/typings/common-elements/panels.d.ts +10 -0
  21. package/typings/common-elements/perfect-scrollbar.d.ts +19 -0
  22. package/typings/common-elements/samples.d.ts +2 -0
  23. package/typings/common-elements/schema.d.ts +7 -0
  24. package/typings/common-elements/shelfs.d.ts +16 -0
  25. package/typings/common-elements/tabs.d.ts +4 -0
  26. package/typings/components/ApiInfo/ApiInfo.d.ts +9 -0
  27. package/typings/components/ApiInfo/index.d.ts +1 -0
  28. package/typings/components/ApiInfo/styled.elements.d.ts +6 -0
  29. package/typings/components/ApiLogo/ApiLogo.d.ts +7 -0
  30. package/typings/components/ApiLogo/styled.elements.d.ts +3 -0
  31. package/typings/components/ContentItems/ContentItems.d.ts +22 -0
  32. package/typings/components/DropdownOrLabel/DropdownOrLabel.d.ts +7 -0
  33. package/typings/components/Endpoint/Endpoint.d.ts +15 -0
  34. package/typings/components/Endpoint/styled.elements.d.ts +16 -0
  35. package/typings/components/ErrorBoundary.d.ts +8 -0
  36. package/typings/components/ExternalDocumentation/ExternalDocumentation.d.ts +8 -0
  37. package/typings/components/Fields/EnumValues.d.ts +8 -0
  38. package/typings/components/Fields/Extensions.d.ts +9 -0
  39. package/typings/components/Fields/Field.d.ts +14 -0
  40. package/typings/components/Fields/FieldContstraints.d.ts +7 -0
  41. package/typings/components/Fields/FieldDetail.d.ts +8 -0
  42. package/typings/components/Fields/FieldDetails.d.ts +5 -0
  43. package/typings/components/JsonViewer/JsonViewer.d.ts +19 -0
  44. package/typings/components/JsonViewer/index.d.ts +1 -0
  45. package/typings/components/JsonViewer/style.d.ts +1 -0
  46. package/typings/components/Loading/Loading.d.ts +7 -0
  47. package/typings/components/Loading/Spinner.svg.d.ts +4 -0
  48. package/typings/components/Markdown/AdvancedMarkdown.d.ts +10 -0
  49. package/typings/components/Markdown/Markdown.d.ts +16 -0
  50. package/typings/components/Markdown/SanitizedMdBlock.d.ts +5 -0
  51. package/typings/components/Markdown/styled.elements.d.ts +7 -0
  52. package/typings/components/MediaTypeSwitch/MediaTypesSwitch.d.ts +18 -0
  53. package/typings/components/Operation/Operation.d.ts +8 -0
  54. package/typings/components/OptionsProvider.d.ts +5 -0
  55. package/typings/components/Parameters/Parameters.d.ts +10 -0
  56. package/typings/components/Parameters/ParametersGroup.d.ts +9 -0
  57. package/typings/components/PayloadSamples/MediaTypeSamples.d.ts +8 -0
  58. package/typings/components/PayloadSamples/PayloadSamples.d.ts +9 -0
  59. package/typings/components/PayloadSamples/styled.elements.d.ts +4 -0
  60. package/typings/components/Redoc/Redoc.d.ts +14 -0
  61. package/typings/components/Redoc/styled.elements.d.ts +3 -0
  62. package/typings/components/RedocStandalone.d.ts +18 -0
  63. package/typings/components/RequestSamples/RequestSamples.d.ts +9 -0
  64. package/typings/components/ResponseSamples/ResponseSamples.d.ts +9 -0
  65. package/typings/components/Responses/Response.d.ts +8 -0
  66. package/typings/components/Responses/ResponseDetails.d.ts +8 -0
  67. package/typings/components/Responses/ResponseHeaders.d.ts +8 -0
  68. package/typings/components/Responses/ResponseTitle.d.ts +13 -0
  69. package/typings/components/Responses/ResponsesList.d.ts +8 -0
  70. package/typings/components/Responses/styled.elements.d.ts +4 -0
  71. package/typings/components/Schema/ArraySchema.d.ts +5 -0
  72. package/typings/components/Schema/DiscriminatorDropdown.d.ts +13 -0
  73. package/typings/components/Schema/ObjectSchema.d.ts +13 -0
  74. package/typings/components/Schema/OneOfSchema.d.ts +15 -0
  75. package/typings/components/Schema/Schema.d.ts +13 -0
  76. package/typings/components/Schema/index.d.ts +5 -0
  77. package/typings/components/SearchBox/SearchBox.d.ts +28 -0
  78. package/typings/components/SearchBox/styled.elements.d.ts +11 -0
  79. package/typings/components/SecurityRequirement/SecurityRequirement.d.ts +14 -0
  80. package/typings/components/SecuritySchemes/SecuritySchemes.d.ts +16 -0
  81. package/typings/components/SelectOnClick/SelectOnClick.d.ts +6 -0
  82. package/typings/components/SideMenu/MenuItem.d.ts +19 -0
  83. package/typings/components/SideMenu/MenuItems.d.ts +13 -0
  84. package/typings/components/SideMenu/SideMenu.d.ts +11 -0
  85. package/typings/components/SideMenu/index.d.ts +4 -0
  86. package/typings/components/SideMenu/styled.elements.d.ts +30 -0
  87. package/typings/components/SourceCode/SourceCode.d.ts +11 -0
  88. package/typings/components/StickySidebar/ChevronSvg.d.ts +3 -0
  89. package/typings/components/StickySidebar/StickyResponsiveSidebar.d.ts +16 -0
  90. package/typings/components/StoreBuilder.d.ts +37 -0
  91. package/typings/components/index.d.ts +29 -0
  92. package/typings/index.d.ts +6 -0
  93. package/typings/services/AppStore.d.ts +42 -0
  94. package/typings/services/ClipboardService.d.ts +8 -0
  95. package/typings/services/HistoryService.d.ts +12 -0
  96. package/typings/services/MarkdownRenderer.d.ts +35 -0
  97. package/typings/services/MarkerService.d.ts +11 -0
  98. package/typings/services/MenuBuilder.d.ts +54 -0
  99. package/typings/services/MenuStore.d.ts +102 -0
  100. package/typings/services/OpenAPIParser.d.ts +52 -0
  101. package/typings/services/RedocNormalizedOptions.d.ts +46 -0
  102. package/typings/services/ScrollService.d.ts +17 -0
  103. package/typings/services/SearchStore.d.ts +14 -0
  104. package/typings/services/SearchWorker.worker.d.ts +24 -0
  105. package/typings/services/SpecStore.d.ts +18 -0
  106. package/{src/services/index.ts → typings/services/index.d.ts} +4 -0
  107. package/typings/services/models/ApiInfo.d.ts +16 -0
  108. package/typings/services/models/Example.d.ts +9 -0
  109. package/typings/services/models/Field.d.ts +24 -0
  110. package/typings/services/models/Group.model.d.ts +26 -0
  111. package/typings/services/models/MediaContent.d.ts +25 -0
  112. package/typings/services/models/MediaType.d.ts +18 -0
  113. package/typings/services/models/Operation.d.ts +53 -0
  114. package/typings/services/models/RequestBody.d.ts +10 -0
  115. package/typings/services/models/Response.d.ts +16 -0
  116. package/typings/services/models/Schema.d.ts +50 -0
  117. package/typings/services/models/SecurityRequirement.d.ts +11 -0
  118. package/typings/services/models/SecuritySchemes.d.ts +25 -0
  119. package/{src/services/models/index.ts → typings/services/models/index.d.ts} +0 -1
  120. package/typings/styled-components.d.ts +15 -0
  121. package/typings/styled-patch.d.ts +21 -0
  122. package/typings/theme.d.ts +135 -0
  123. package/{src/types/components.ts → typings/types/components.d.ts} +0 -0
  124. package/typings/types/index.d.ts +8 -0
  125. package/{src/types/open-api.ts → typings/types/open-api.d.ts} +75 -65
  126. package/typings/utils/JsonPointer.d.ts +51 -0
  127. package/typings/utils/debug.d.ts +2 -0
  128. package/typings/utils/decorators.d.ts +1 -0
  129. package/typings/utils/dom.d.ts +8 -0
  130. package/typings/utils/helpers.d.ts +36 -0
  131. package/typings/utils/highlight.d.ts +30 -0
  132. package/{src/utils/index.ts → typings/utils/index.d.ts} +3 -2
  133. package/typings/utils/jsonToHtml.d.ts +1 -0
  134. package/typings/utils/loadAndBundleSpec.d.ts +3 -0
  135. package/typings/utils/memoize.d.ts +1 -0
  136. package/typings/utils/openapi.d.ts +28 -0
  137. package/.editorconfig +0 -10
  138. package/.npmignore +0 -2
  139. package/.travis.yml +0 -29
  140. package/.vscode/settings.json +0 -3
  141. package/custom.d.ts +0 -22
  142. package/cypress.json +0 -8
  143. package/demo/big-openapi.json +0 -27362
  144. package/demo/index.html +0 -25
  145. package/demo/openapi.yaml +0 -949
  146. package/demo/playground/hmr-playground.tsx +0 -52
  147. package/demo/playground/index.html +0 -24
  148. package/demo/swagger.yaml +0 -865
  149. package/docker-compose.yml +0 -8
  150. package/docs/images/code-samples-demo.gif +0 -0
  151. package/docs/images/discriminator-demo.gif +0 -0
  152. package/docs/images/nested-demo.gif +0 -0
  153. package/docs/images/progressive-loading-demo.gif +0 -0
  154. package/docs/images/redoc-logo.png +0 -0
  155. package/docs/redoc-vendor-extensions.md +0 -266
  156. package/docs/security-definitions-injection.md +0 -19
  157. package/e2e/.build/standalone.e2e.js +0 -25
  158. package/e2e/.build/standalone.e2e.js.map +0 -1
  159. package/e2e/standalone-compatibility.html +0 -8
  160. package/e2e/standalone.e2e.ts +0 -29
  161. package/e2e/standalone.html +0 -8
  162. package/empty.js +0 -1
  163. package/perf/index.tsx +0 -27
  164. package/perf/mount-time.js +0 -73
  165. package/src/common-elements/dropdown.ts +0 -112
  166. package/src/common-elements/fields-layout.ts +0 -156
  167. package/src/common-elements/fields.ts +0 -79
  168. package/src/common-elements/headers.ts +0 -39
  169. package/src/common-elements/linkify.ts +0 -31
  170. package/src/common-elements/mixins.ts +0 -15
  171. package/src/common-elements/panels.ts +0 -22
  172. package/src/common-elements/perfect-scrollbar.ts +0 -10
  173. package/src/common-elements/schema.ts +0 -56
  174. package/src/common-elements/shelfs.tsx +0 -57
  175. package/src/common-elements/tabs.ts +0 -88
  176. package/src/components/ApiInfo/ApiInfo.tsx +0 -117
  177. package/src/components/ApiInfo/styled.elements.ts +0 -47
  178. package/src/components/ApiLogo/ApiLogo.tsx +0 -24
  179. package/src/components/ApiLogo/styled.elements.ts +0 -12
  180. package/src/components/ContentItems/ContentItems.tsx +0 -85
  181. package/src/components/DropdownOrLabel/DropdownOrLabel.tsx +0 -16
  182. package/src/components/Endpoint/Endpoint.tsx +0 -76
  183. package/src/components/Endpoint/styled.elements.ts +0 -81
  184. package/src/components/ErrorBoundary.tsx +0 -40
  185. package/src/components/Fields/EnumValues.tsx +0 -23
  186. package/src/components/Fields/Field.tsx +0 -58
  187. package/src/components/Fields/FieldContstraints.tsx +0 -20
  188. package/src/components/Fields/FieldDetail.tsx +0 -19
  189. package/src/components/Fields/FieldDetails.tsx +0 -58
  190. package/src/components/JsonViewer/JsonViewer.tsx +0 -49
  191. package/src/components/JsonViewer/style.ts +0 -111
  192. package/src/components/Loading/Loading.tsx +0 -28
  193. package/src/components/Loading/Spinner.svg.tsx +0 -36
  194. package/src/components/Markdown/Markdown.tsx +0 -88
  195. package/src/components/Markdown/styles.ts +0 -116
  196. package/src/components/MediaTypeSwitch/MediaTypesSwitch.tsx +0 -47
  197. package/src/components/Operation/Operation.tsx +0 -69
  198. package/src/components/OptionsProvider.ts +0 -34
  199. package/src/components/Parameters/Parameters.tsx +0 -73
  200. package/src/components/Parameters/ParametersGroup.tsx +0 -34
  201. package/src/components/PayloadSamples/MediaTypeSamples.tsx +0 -44
  202. package/src/components/PayloadSamples/PayloadSamples.tsx +0 -30
  203. package/src/components/PayloadSamples/styled.elements.ts +0 -35
  204. package/src/components/Redoc/Redoc.tsx +0 -48
  205. package/src/components/Redoc/elements.tsx +0 -41
  206. package/src/components/RedocStandalone.tsx +0 -58
  207. package/src/components/RequestSamples/RequestSamples.tsx +0 -52
  208. package/src/components/ResponseSamples/ResponseSamples.tsx +0 -59
  209. package/src/components/Responses/Response.tsx +0 -58
  210. package/src/components/Responses/ResponseHeaders.tsx +0 -30
  211. package/src/components/Responses/ResponseTitle.tsx +0 -34
  212. package/src/components/Responses/ResponsesList.tsx +0 -33
  213. package/src/components/Responses/styled.elements.ts +0 -40
  214. package/src/components/Schema/ArraySchema.tsx +0 -18
  215. package/src/components/Schema/DiscriminatorDropdown.tsx +0 -54
  216. package/src/components/Schema/ObjectSchema.tsx +0 -91
  217. package/src/components/Schema/OneOfSchema.tsx +0 -33
  218. package/src/components/Schema/Schema.tsx +0 -77
  219. package/src/components/Schema/__tests__/DiscriminatorDropdown.test.tsx +0 -50
  220. package/src/components/Schema/__tests__/__snapshots__/DiscriminatorDropdown.test.tsx.snap +0 -1371
  221. package/src/components/Schema/__tests__/fixtures/simple-discriminator.json +0 -49
  222. package/src/components/Schema/index.ts +0 -1
  223. package/src/components/SecurityRequirement/SecuirityRequirement.tsx +0 -72
  224. package/src/components/SecuritySchemes/SecuritySchemes.tsx +0 -136
  225. package/src/components/SelectOnClick/SelectOnClick.tsx +0 -18
  226. package/src/components/SideMenu/MenuItem.tsx +0 -60
  227. package/src/components/SideMenu/MenuItems.tsx +0 -29
  228. package/src/components/SideMenu/SideMenu.tsx +0 -34
  229. package/src/components/SideMenu/styled.elements.ts +0 -141
  230. package/src/components/SourceCode/SourceCode.tsx +0 -22
  231. package/src/components/StickySidebar/StickySidebar.tsx +0 -71
  232. package/src/components/StoreProvider.ts +0 -68
  233. package/src/components/index.ts +0 -10
  234. package/src/index.ts +0 -2
  235. package/src/polyfills.ts +0 -9
  236. package/src/services/AppStore.ts +0 -77
  237. package/src/services/ClipboardService.ts +0 -85
  238. package/src/services/HistoryService.ts +0 -73
  239. package/src/services/MarkdownRenderer.ts +0 -187
  240. package/src/services/MenuBuilder.ts +0 -204
  241. package/src/services/MenuStore.ts +0 -236
  242. package/src/services/OpenAPIParser.ts +0 -257
  243. package/src/services/RedocNormalizedOptions.ts +0 -101
  244. package/src/services/ScrollService.ts +0 -73
  245. package/src/services/SpecStore.ts +0 -45
  246. package/src/services/__tests__/__snapshots__/prism.test.ts.snap +0 -3
  247. package/src/services/__tests__/history.service.test.ts +0 -25
  248. package/src/services/__tests__/models/Response.test.ts +0 -35
  249. package/src/services/__tests__/prism.test.ts +0 -19
  250. package/src/services/models/ApiInfo.ts +0 -39
  251. package/src/services/models/Example.ts +0 -14
  252. package/src/services/models/Field.ts +0 -48
  253. package/src/services/models/Group.model.ts +0 -58
  254. package/src/services/models/MediaContent.ts +0 -52
  255. package/src/services/models/MediaType.ts +0 -66
  256. package/src/services/models/Operation.ts +0 -158
  257. package/src/services/models/RequestBody.ts +0 -25
  258. package/src/services/models/Response.ts +0 -51
  259. package/src/services/models/Schema.ts +0 -257
  260. package/src/services/models/SecurityRequirement.ts +0 -27
  261. package/src/services/models/SecuritySchemes.ts +0 -66
  262. package/src/services/models/types.ts +0 -4
  263. package/src/setupTests.ts +0 -5
  264. package/src/standalone.tsx +0 -77
  265. package/src/styled-components.ts +0 -26
  266. package/src/theme.ts +0 -61
  267. package/src/types/index.ts +0 -5
  268. package/src/utils/JsonPointer.ts +0 -92
  269. package/src/utils/__tests__/helpers.test.ts +0 -61
  270. package/src/utils/__tests__/openapi.test.ts +0 -186
  271. package/src/utils/__tests__/styled.test.ts +0 -19
  272. package/src/utils/dom.ts +0 -25
  273. package/src/utils/helpers.ts +0 -116
  274. package/src/utils/highlight.ts +0 -58
  275. package/src/utils/jsonToHtml.ts +0 -112
  276. package/src/utils/loadAndBundleSpec.ts +0 -29
  277. package/src/utils/openapi.ts +0 -165
  278. package/src/utils/styled.ts +0 -16
  279. package/tsconfig.e2e.json +0 -31
  280. package/tsconfig.json +0 -45
  281. package/webpack.config.ts +0 -141
  282. package/yarn.lock +0 -7599
package/README.md CHANGED
@@ -1,21 +1,19 @@
1
- <img alt="ReDoc logo" src="/docs/images/redoc-logo.png" width="400px" />
1
+ <div align="center">
2
+ <img alt="ReDoc logo" src="https://raw.githubusercontent.com/Rebilly/ReDoc/master/docs/images/redoc-logo.png" width="400px" />
2
3
 
3
- **OpenAPI/Swagger-generated API Reference Documentation**
4
+ **OpenAPI/Swagger-generated API Reference Documentation**
4
5
 
5
- [![Build Status](https://travis-ci.org/Rebilly/ReDoc.svg?branch=master)](https://travis-ci.org/Rebilly/ReDoc) [![Coverage Status](https://coveralls.io/repos/Rebilly/ReDoc/badge.svg?branch=master&service=github)](https://coveralls.io/github/Rebilly/ReDoc?branch=master) [![Tested on APIs.guru](http://api.apis.guru/badges/tested_on.svg)](https://APIs.guru) [![dependencies Status](https://david-dm.org/Rebilly/ReDoc/status.svg)](https://david-dm.org/Rebilly/ReDoc) [![devDependencies Status](https://david-dm.org/Rebilly/ReDoc/dev-status.svg)](https://david-dm.org/Rebilly/ReDoc#info=devDependencies)
6
+ [![Build Status](https://travis-ci.org/Rebilly/ReDoc.svg?branch=master)](https://travis-ci.org/Rebilly/ReDoc) [![Coverage Status](https://coveralls.io/repos/Rebilly/ReDoc/badge.svg?branch=master&service=github)](https://coveralls.io/github/Rebilly/ReDoc?branch=master) [![dependencies Status](https://david-dm.org/Rebilly/ReDoc/status.svg)](https://david-dm.org/Rebilly/ReDoc) [![devDependencies Status](https://david-dm.org/Rebilly/ReDoc/dev-status.svg)](https://david-dm.org/Rebilly/ReDoc#info=devDependencies) [![npm](http://img.shields.io/npm/v/redoc.svg)](https://www.npmjs.com/package/redoc) [![License](https://img.shields.io/npm/l/redoc.svg)](https://github.com/Rebilly/ReDoc/blob/master/LICENSE)
6
7
 
7
- [![npm](http://img.shields.io/npm/v/redoc.svg)](https://www.npmjs.com/package/redoc) [![License](https://img.shields.io/npm/l/redoc.svg)](https://github.com/Rebilly/ReDoc/blob/master/LICENSE)
8
+ [![bundle size](http://img.badgesize.io/https://cdn.jsdelivr.net/npm/redoc/bundles/redoc.standalone.js?compression=gzip&max=300000)](https://cdn.jsdelivr.net/npm/redoc/bundles/redoc.standalone.js) [![npm](https://img.shields.io/npm/dm/redoc.svg)](https://www.npmjs.com/package/redoc) [![](https://data.jsdelivr.com/v1/package/npm/redoc/badge)](https://www.jsdelivr.com/package/npm/redoc) [![Docker Build Status](https://img.shields.io/docker/build/redocly/redoc.svg)](https://hub.docker.com/r/redocly/redoc/)
8
9
 
9
- **REACT-REWRITE: WORK IN PROGRESS**
10
10
 
11
- To try locally run:
11
+ </div>
12
+
13
+ **This is README for `2.0` version of ReDoc (React based). README for `1.x` version is on the branch [v1.x](https://github.com/Rebilly/ReDoc/tree/v1.x)**
12
14
 
13
- ```shell
14
- yarn install
15
- npm start
16
- ```
17
15
 
18
- ![ReDoc demo](demo/redoc-demo.png)
16
+ ![ReDoc demo](https://raw.githubusercontent.com/Rebilly/ReDoc/master/demo/redoc-demo.png)
19
17
 
20
18
  ## [Live demo](http://rebilly.github.io/ReDoc/)
21
19
 
@@ -23,32 +21,34 @@ npm start
23
21
 
24
22
  ## Features
25
23
  - Extremely easy deployment
24
+ - [redoc-cli](https://github.com/Rebilly/ReDoc/blob/master/cli/README.md) with ability to bundle your docs into **zero-dependency** HTML file
25
+ - Server Side Rendering ready
26
26
  - The widest OpenAPI v2.0 features support (yes, it supports even `discriminator`) <br>
27
27
  ![](docs/images/discriminator-demo.gif)
28
+ - OpenAPI 3.0 support
28
29
  - Neat **interactive** documentation for nested objects <br>
29
30
  ![](docs/images/nested-demo.gif)
30
31
  - Code samples support (via vendor extension) <br>
31
32
  ![](docs/images/code-samples-demo.gif)
32
- - Progressive loading with `lazy-rendering` options <br>
33
- ![](docs/images/progressive-loading-demo.gif)
34
33
  - Responsive three-panel design with menu/scrolling synchronization
35
34
  - Integrate API Introduction into side menu - ReDoc takes advantage of markdown headings from OpenAPI description field. It pulls them into side menu and also supports deep linking.
36
35
  - High-level grouping in side-menu via [`x-tagGroups`](docs/redoc-vendor-extensions.md#x-tagGroups) vendor extension
37
- - Multiple ReDoc instances on single page ([example](demo/examples/multiple-apis/index.html))
36
+ - Simple integration with `create-react-app` ([sample](https://github.com/APIs-guru/create-react-app-redoc))
37
+ - Branding/customizations via [`theme` option](#redoc-options-object)
38
38
 
39
39
  ## Roadmap
40
40
  - [x] ~~[OpenAPI v3.0 support](https://github.com/Rebilly/ReDoc/issues/312)~~
41
41
  - [x] ~~performance optimizations~~
42
42
  - [x] ~~better navigation (menu improvements + search)~~
43
43
  - [x] ~~React rewrite~~
44
+ - [x] ~~docs pre-rendering (performance and SEO)~~
44
45
  - [ ] ability to simple branding/styling
45
- - [ ] docs pre-rendering (performance and SEO)
46
46
  - [ ] built-in API Console
47
47
 
48
48
  ## Releases
49
- **Important:** all the 2.x releases are deployed to npm and can be used via unpkg:
50
- - particular release, e.g. `v2.0.0-alpha.0`: https://unpkg.com/redoc@2.0.0-alpha.0/bundles/redoc.standalone.js
51
- - `latest` release: https://unpkg.com/redoc/bundles/redoc.standalone.js
49
+ **Important:** all the 2.x releases are deployed to npm and can be used via jsdeliver:
50
+ - particular release, e.g. `v2.0.0-alpha.15`: https://cdn.jsdelivr.net/npm/redoc@2.0.0-alpha.17/bundles/redoc.standalone.js
51
+ - `next` release: https://cdn.jsdelivr.net/npm/redoc@next/bundles/redoc.standalone.js
52
52
 
53
53
  Additionally, all the 1.x releases are hosted on our GitHub Pages-based **CDN**:
54
54
  - particular release, e.g. `v1.2.0`: https://rebilly.github.io/ReDoc/releases/v1.2.0/redoc.min.js
@@ -70,6 +70,7 @@ Additionally, all the 1.x releases are hosted on our GitHub Pages-based **CDN**:
70
70
  - [Shopify Draft Orders](https://help.shopify.com/api/draft-orders)
71
71
  - [Discourse](http://docs.discourse.org)
72
72
  - [APIs.guru](https://apis.guru/api-doc/)
73
+ - [FastAPI](https://github.com/tiangolo/fastapi)
73
74
 
74
75
  ## Deployment
75
76
 
@@ -97,23 +98,27 @@ Additionally, all the 1.x releases are hosted on our GitHub Pages-based **CDN**:
97
98
  </head>
98
99
  <body>
99
100
  <redoc spec-url='http://petstore.swagger.io/v2/swagger.json'></redoc>
100
- <script src="https://unpkg.com/redoc@2.0.0-alpha.1/bundles/redoc.standalone.js"> </script>
101
+ <script src="https://cdn.jsdelivr.net/npm/redoc@next/bundles/redoc.standalone.js"> </script>
101
102
  </body>
102
103
  </html>
103
104
  ```
104
105
  That's all folks!
105
106
 
106
- **IMPORTANT NOTE:** if you work with untrusted user spec, use `untrusted-spec` [option](#redoc-tag-attributes) to prevent XSS security risks.
107
+ **IMPORTANT NOTE:** if you work with untrusted user spec, use `untrusted-spec` [option](#redoc-options-object) to prevent XSS security risks.
107
108
 
108
109
  ### 1. Install ReDoc (skip this step for CDN)
109
- Install using [npm](https://docs.npmjs.com/getting-started/what-is-npm):
110
+ Install using [yarn](https://yarnpkg.com):
111
+
112
+ yarn add redoc
113
+
114
+ or using [npm](https://docs.npmjs.com/getting-started/what-is-npm):
110
115
 
111
116
  npm install redoc --save
112
117
 
113
118
  ### 2. Reference redoc script in HTML
114
119
  For **CDN**:
115
120
  ```html
116
- <script src="https://unpkg.com/redoc@2.0.0-alpha.1/bundles/redoc.standalone.js"> </script>
121
+ <script src="https://cdn.jsdelivr.net/npm/redoc/bundles/redoc.standalone.js"> </script>
117
122
  ```
118
123
 
119
124
  For npm:
@@ -131,6 +136,10 @@ For npm:
131
136
 
132
137
  ## Usage as a React component
133
138
 
139
+ Install peer dependencies required by ReDoc if you don't have them installed already:
140
+
141
+ npm i react react-dom mobx@^4.2.0 styled-components
142
+
134
143
  Import `RedocStandalone` component from 'redoc' module:
135
144
 
136
145
  ```js
@@ -153,7 +162,7 @@ Also you can pass options:
153
162
 
154
163
  ```js
155
164
  <RedocStandalone
156
- specUrl="http://rebilly.github.io/RebillyAPI/swagger.json"
165
+ specUrl="http://rebilly.github.io/RebillyAPI/openapi.json"
157
166
  options={{
158
167
  nativeScrollbars: true,
159
168
  theme: { colors: { main: '#dd5522' } },
@@ -163,13 +172,41 @@ Also you can pass options:
163
172
 
164
173
  Here are detailed [options docs](#redoc-options-object).
165
174
 
175
+ You can also specify `onLoaded` callback which will be called each time Redoc has been fully rendered or when error occurs (with an error as the first argument). *NOTE*: It may be called multiply times if you change component properties
176
+
177
+ ```js
178
+ <RedocStandalone
179
+ specUrl="http://rebilly.github.io/RebillyAPI/openapi.json"
180
+ onLoaded={error => {
181
+ if (!error) {
182
+ console.log('Yay!');
183
+ }
184
+ }}
185
+ />
186
+ ```
187
+
188
+ ## The Docker way
189
+
190
+ ReDoc is available as pre-built Docker image in official [Docker Hub repository](https://hub.docker.com/r/redocly/redoc/). You may simply pull & run it:
191
+
192
+ docker pull redocly/redoc
193
+ docker run -p 8080:80 redocly/redoc
194
+
195
+ Also you may rewrite some predefined environment variables defined in [Dockerfile](./config/docker/Dockerfile). By default ReDoc starts with demo Petstore spec located at `http://petstore.swagger.io/v2/swagger.json`, but you may change this URL using environment variable `SPEC_URL`:
196
+
197
+ docker run -p 8080:80 -e SPEC_URL=https://api.example.com/openapi.json redocly/redoc
198
+
199
+ ## ReDoc CLI
200
+
201
+ [See here](https://github.com/Rebilly/ReDoc/blob/master/cli/README.md)
202
+
166
203
  ## Configuration
167
204
 
168
205
  ### Security Definition location
169
206
  You can inject Security Definitions widget into any place of your specification `description`. Check out details [here](docs/security-definitions-injection.md).
170
207
 
171
208
  ### Swagger vendor extensions
172
- ReDoc makes use of the following [vendor extensions](http://swagger.io/specification/#vendorExtensions):
209
+ ReDoc makes use of the following [vendor extensions](https://swagger.io/specification/#specificationExtensions):
173
210
  * [`x-logo`](docs/redoc-vendor-extensions.md#x-logo) - is used to specify API logo
174
211
  * [`x-traitTag`](docs/redoc-vendor-extensions.md#x-traitTag) - useful for handling out common things like Pagination, Rate-Limits, etc
175
212
  * [`x-code-samples`](docs/redoc-vendor-extensions.md#x-code-samples) - specify operation code samples
@@ -181,7 +218,7 @@ ReDoc makes use of the following [vendor extensions](http://swagger.io/specifica
181
218
  * [`x-ignoredHeaderParameters`](docs/redoc-vendor-extensions.md#x-ignoredHeaderParameters) - ability to specify header parameter names to ignore
182
219
 
183
220
  ### `<redoc>` options object
184
- You can use all of the following optins with standalone version on <redoc> tag by kebab-casing them, e.g. `scrollYOffset` becomes `scroll-y-offset` and `expandResponses` becomes `expand-responses`.
221
+ You can use all of the following options with standalone version on <redoc> tag by kebab-casing them, e.g. `scrollYOffset` becomes `scroll-y-offset` and `expandResponses` becomes `expand-responses`.
185
222
 
186
223
  * `untrustedSpec` - if set, the spec is considered untrusted and all HTML/markdown is sanitized to prevent XSS. **Disabled by default** for performance reasons. **Enable this option if you work with untrusted user data!**
187
224
  * `scrollYOffset` - If set, specifies a vertical scroll-offset. This is often useful when there are fixed positioned elements at the top of the page, such as navbars, headers etc;
@@ -194,21 +231,27 @@ You can use all of the following optins with standalone version on <redoc> tag b
194
231
  * `hideHostname` - if set, the protocol and hostname is not shown in the operation definition.
195
232
  * `expandResponses` - specify which responses to expand by default by response codes. Values should be passed as comma-separated list without spaces e.g. `expandResponses="200,201"`. Special value `"all"` expands all responses by default. Be careful: this option can slow-down documentation rendering time.
196
233
  * `requiredPropsFirst` - show required properties first ordered in the same order as in `required` array.
234
+ * `sortPropsAlphabetically` - sort properties alphabetically
235
+ * `showExtensions` - show vendor extensions ("x-" fields). Extensions used by ReDoc are ignored. Can be boolean or an array of `string` with names of extensions to display
197
236
  * `noAutoAuth` - do not inject Authentication section automatically
198
237
  * `pathInMiddlePanel` - show path link and HTTP verb in the middle panel instead of the right one
199
238
  * `hideLoading` - do not show loading animation. Useful for small docs
200
239
  * `nativeScrollbars` - use native scrollbar for sidemenu instead of perfect-scroll (scrolling performance optimization for big specs)
201
- * `theme` - ReDoc theme. Not documented yet. For details check source code: [theme.ts](https://github.com/Rebilly/ReDoc/blob/react-rewrite/src/theme.ts)
240
+ * `hideDownloadButton` - do not show "Download" spec button. **THIS DOESN'T MAKE YOUR SPEC PRIVATE**, it just hides the button.
241
+ * `disableSearch` - disable search indexing and search box
242
+ * `onlyRequiredInSamples` - shows only required fields in request samples.
243
+ * `theme` - ReDoc theme. Not documented yet. For details check source code: [theme.ts](https://github.com/Rebilly/ReDoc/blob/master/src/theme.ts)
202
244
 
203
245
  ## Advanced usage of standalone version
204
246
  Instead of adding `spec-url` attribute to the `<redoc>` element you can initialize ReDoc via globally exposed `Redoc` object:
205
247
  ```js
206
- Redoc.init(specOrSpecUrl, options, element)
248
+ Redoc.init(specOrSpecUrl, options, element, callback?)
207
249
  ```
208
250
 
209
251
  - `specOrSpecUrl` is either JSON object with specification or an URL to the spec in `JSON` or `YAML` format
210
252
  - `options` [options object](#redoc-options-object)
211
253
  - `element` DOM element to put ReDoc into
254
+ - `callback` (optional) - callback to be called after Redoc has been fully rendered. It is also called also on errors with error as the first argument
212
255
 
213
256
  ```js
214
257
  Redoc.init('http://petstore.swagger.io/v2/swagger.json', {
@@ -218,16 +261,4 @@ Redoc.init('http://petstore.swagger.io/v2/swagger.json', {
218
261
 
219
262
  -----------
220
263
  ## Development
221
- #### Running local dev-server
222
- - Clone repository
223
- `git clone https://github.com/Rebilly/ReDoc.git`
224
- - Go to the project folder
225
- `cd ReDoc`
226
- - Install dependencies
227
- `yarn`
228
- - _(optional)_ Replace `demo/swagger.yaml` with your own schema
229
- - Start the server
230
- `npm start`
231
- - Open `http://localhost:9090`
232
-
233
- Alternatively, Docker can be used by just running `docker-compose up`.
264
+ see [CONTRIBUTING.md](.github/CONTRIBUTING.md)