From c99d9f698310713e88fb431e3f4ee0a3a4e90d9d Mon Sep 17 00:00:00 2001 From: Andrew Berry Date: Fri, 28 Jun 2019 10:02:05 -0400 Subject: [PATCH 01/35] Add missing content type header on compressed responses of / --- cli/index.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cli/index.ts b/cli/index.ts index c91fb93f..67f7faad 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -156,7 +156,9 @@ async function serve(port: number, pathToSpec: string, options: Options = {}) { }, ); } else if (request.url === '/') { - respondWithGzip(pageHTML, request, response); + respondWithGzip(pageHTML, request, response, { + 'Content-Type': 'text/html', + }); } else if (request.url === '/spec.json') { const specStr = JSON.stringify(spec, null, 2); respondWithGzip(specStr, request, response, { From 4bd499f0e968c15d9cb1fb870e0985fd8b07fcbc Mon Sep 17 00:00:00 2001 From: Roman Hotsiy Date: Sun, 7 Jul 2019 19:43:31 +0300 Subject: [PATCH 02/35] fix: hide empty example when it is not defined --- src/components/Fields/FieldDetails.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/Fields/FieldDetails.tsx b/src/components/Fields/FieldDetails.tsx index 9626da0e..87bb2363 100644 --- a/src/components/Fields/FieldDetails.tsx +++ b/src/components/Fields/FieldDetails.tsx @@ -33,7 +33,8 @@ export class FieldDetails extends React.PureComponent { if (showExamples) { const label = l('example') + ':'; if (field.in && field.style) { - const serializedValue = serializeParameterValue(field, example); + const serializedValue = + example !== undefined ? serializeParameterValue(field, example) : undefined; exampleField = ; } else { exampleField = ; From 51d3b9b02ba77540022cfdc6aaf2c22e3298e3db Mon Sep 17 00:00:00 2001 From: Roman Hotsiy Date: Sun, 7 Jul 2019 21:26:27 +0300 Subject: [PATCH 03/35] fix: broken headings with single quote fixes #955 --- src/services/MarkdownRenderer.ts | 5 +++-- src/utils/helpers.ts | 4 ++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/services/MarkdownRenderer.ts b/src/services/MarkdownRenderer.ts index 0e08c6c4..d95b3bc3 100644 --- a/src/services/MarkdownRenderer.ts +++ b/src/services/MarkdownRenderer.ts @@ -1,6 +1,6 @@ import * as marked from 'marked'; -import { highlight, safeSlugify } from '../utils'; +import { highlight, safeSlugify, unescapeHTMLChars } from '../utils'; import { AppStore } from './AppStore'; import { RedocNormalizedOptions } from './RedocNormalizedOptions'; @@ -65,6 +65,7 @@ export class MarkdownRenderer { container: MarkdownHeading[] = this.headings, parentId?: string, ): MarkdownHeading { + name = unescapeHTMLChars(name); const item = { id: parentId ? `${parentId}/${safeSlugify(name)}` : `section/${safeSlugify(name)}`, name, @@ -88,7 +89,7 @@ export class MarkdownRenderer { } attachHeadingsDescriptions(rawText: string) { - const buildRegexp = heading => { + const buildRegexp = (heading: MarkdownHeading) => { return new RegExp(`##?\\s+${heading.name.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')}`); }; diff --git a/src/utils/helpers.ts b/src/utils/helpers.ts index bfe8da94..cb90dc97 100644 --- a/src/utils/helpers.ts +++ b/src/utils/helpers.ts @@ -194,3 +194,7 @@ function parseURL(url: string) { return new URL(url); } } + +export function unescapeHTMLChars(str: string): string { + return str.replace(/&#(\d+);/g, (_m, code) => String.fromCharCode(parseInt(code, 10))); +} From 995e557d6d1a4759045415754628f962146d0a3b Mon Sep 17 00:00:00 2001 From: Anya Stasiuk Date: Fri, 5 Jul 2019 13:16:59 +0300 Subject: [PATCH 04/35] fix: organize response examples in dropdown and display description --- .../MediaTypeSwitch/MediaTypesSwitch.tsx | 14 +++-- .../PayloadSamples/MediaTypeSamples.tsx | 62 ++++++++++++++----- .../PayloadSamples/PayloadSamples.tsx | 15 ++++- .../PayloadSamples/styled.elements.ts | 34 ++++++++-- 4 files changed, 100 insertions(+), 25 deletions(-) diff --git a/src/components/MediaTypeSwitch/MediaTypesSwitch.tsx b/src/components/MediaTypeSwitch/MediaTypesSwitch.tsx index 9b0ffcb7..3c40483a 100644 --- a/src/components/MediaTypeSwitch/MediaTypesSwitch.tsx +++ b/src/components/MediaTypeSwitch/MediaTypesSwitch.tsx @@ -3,6 +3,7 @@ import * as React from 'react'; import { DropdownProps } from '../../common-elements/dropdown'; import { MediaContentModel, MediaTypeModel, SchemaModel } from '../../services/models'; +import { DropdownLabel, DropdownWrapper } from '../PayloadSamples/styled.elements'; export interface MediaTypeChildProps { schema: SchemaModel; @@ -39,11 +40,14 @@ export class MediaTypesSwitch extends React.Component { return ( <> - {this.props.renderDropdown({ - value: options[activeMimeIdx], - options, - onChange: this.switchMedia, - })} + + Content type + {this.props.renderDropdown({ + value: options[activeMimeIdx], + options, + onChange: this.switchMedia, + })} + {this.props.children(content.active)} ); diff --git a/src/components/PayloadSamples/MediaTypeSamples.tsx b/src/components/PayloadSamples/MediaTypeSamples.tsx index 251f182f..de6e2008 100644 --- a/src/components/PayloadSamples/MediaTypeSamples.tsx +++ b/src/components/PayloadSamples/MediaTypeSamples.tsx @@ -1,17 +1,31 @@ import * as React from 'react'; -import { SmallTabs, Tab, TabList, TabPanel } from '../../common-elements'; +import { DropdownProps } from '../../common-elements'; import { MediaTypeModel } from '../../services/models'; import { Example } from './Example'; -import { NoSampleLabel } from './styled.elements'; +import { Description, DropdownLabel, DropdownWrapper, NoSampleLabel } from './styled.elements'; export interface PayloadSamplesProps { mediaType: MediaTypeModel; + renderDropdown: (props: DropdownProps) => JSX.Element; } -export class MediaTypeSamples extends React.Component { +interface MediaTypeSamplesState { + activeIdx: number; +} + +export class MediaTypeSamples extends React.Component { + state = { + activeIdx: 0, + }; + switchMedia = ({ value }) => { + this.setState({ + activeIdx: parseInt(value, 10), + }); + }; render() { + const { activeIdx } = this.state; const examples = this.props.mediaType.examples || {}; const mimeType = this.props.mediaType.name; @@ -22,24 +36,42 @@ export class MediaTypeSamples extends React.Component { return noSample; } if (examplesNames.length > 1) { + const options = examplesNames.map((name, idx) => { + return { + label: examples[name].summary || name, + value: idx.toString(), + }; + }); return ( - - - {examplesNames.map(name => ( - {examples[name].summary || name} - ))} - - {examplesNames.map(name => ( - - - - ))} - + <> + + Example + {this.props.renderDropdown({ + value: options[activeIdx], + options, + onChange: this.switchMedia, + })} + + {examplesNames.map(name => { + const description = examples[name].description; + const activeValue = options[activeIdx].label; + + return ( + (name === activeValue || examples[name].summary === activeValue) && ( +
+ {description && {description}} + +
+ ) + ); + })} + ); } else { const name = examplesNames[0]; return (
+ {examples[name].description && {examples[name].description}}
); diff --git a/src/components/PayloadSamples/PayloadSamples.tsx b/src/components/PayloadSamples/PayloadSamples.tsx index 03db3a70..16b98322 100644 --- a/src/components/PayloadSamples/PayloadSamples.tsx +++ b/src/components/PayloadSamples/PayloadSamples.tsx @@ -4,6 +4,7 @@ import { MediaTypeSamples } from './MediaTypeSamples'; import { MediaTypesSwitch } from '../MediaTypeSwitch/MediaTypesSwitch'; +import styled from '../../../src/styled-components'; import { MediaContentModel } from '../../services/models'; import { DropdownOrLabel } from '../DropdownOrLabel/DropdownOrLabel'; import { InvertedSimpleDropdown, MimeLabel } from './styled.elements'; @@ -22,7 +23,15 @@ export class PayloadSamples extends React.Component { return ( - {mediaType => } + {mediaType => ( + + + + )} ); } @@ -31,3 +40,7 @@ export class PayloadSamples extends React.Component { return ; }; } + +const SamplesWrapper = styled.div` + margin-top: 15px; +`; diff --git a/src/components/PayloadSamples/styled.elements.ts b/src/components/PayloadSamples/styled.elements.ts index e9e99151..56f0842f 100644 --- a/src/components/PayloadSamples/styled.elements.ts +++ b/src/components/PayloadSamples/styled.elements.ts @@ -1,24 +1,44 @@ // @ts-ignore import Dropdown from 'react-dropdown'; + +import { transparentize } from 'polished'; import styled from '../../styled-components'; import { StyledDropdown } from '../../common-elements'; export const MimeLabel = styled.div` - border-bottom: 1px solid rgba(255, 255, 255, 0.9); + padding: 12px; + background-color: ${({ theme }) => transparentize(0.6, theme.rightPanel.backgroundColor)}; margin: 0 0 10px 0; display: block; - color: rgba(255, 255, 255, 0.8); +`; + +export const DropdownLabel = styled.span` + font-family: ${({ theme }) => theme.typography.headings.fontFamily}; + font-size: 12px; + position: absolute; + z-index: 1; + top: -11px; + left: 12px; + font-weight: ${({ theme }) => theme.typography.fontWeightBold}; + color: ${({ theme }) => transparentize(0.6, theme.rightPanel.textColor)}; +`; + +export const DropdownWrapper = styled.div` + position: relative; `; export const InvertedSimpleDropdown = styled(StyledDropdown)` margin-left: 10px; text-transform: none; font-size: 0.929em; - border-bottom: 1px solid ${({ theme }) => theme.rightPanel.textColor}; + padding: 12px; margin: 0 0 10px 0; display: block; - + background-color: ${({ theme }) => transparentize(0.6, theme.rightPanel.backgroundColor)}; + .Dropdown-control { + margin-top: 0; + } .Dropdown-control, .Dropdown-control:hover { font-size: 1em; @@ -34,6 +54,7 @@ export const InvertedSimpleDropdown = styled(StyledDropdown)` } .Dropdown-menu { margin: 0; + margin-top: 10px; } `; @@ -42,3 +63,8 @@ export const NoSampleLabel = styled.div` font-size: 12px; color: #ee807f; `; + +export const Description = styled.span` + font-size: 12px; + color: ${({ theme }) => transparentize(0.6, theme.rightPanel.textColor)}; +`; From f52d9e875b371295d2df19e8abdf06604a5a9d78 Mon Sep 17 00:00:00 2001 From: Roman Hotsiy Date: Sun, 7 Jul 2019 20:29:10 +0300 Subject: [PATCH 05/35] fix: markdown in examples descriptions + minor ui tweaks --- src/common-elements/dropdown.ts | 2 +- .../MediaTypeSwitch/MediaTypesSwitch.tsx | 17 ++++++++-- .../PayloadSamples/MediaTypeSamples.tsx | 32 ++++++++----------- .../PayloadSamples/PayloadSamples.tsx | 2 +- .../PayloadSamples/styled.elements.ts | 8 +---- 5 files changed, 31 insertions(+), 30 deletions(-) diff --git a/src/common-elements/dropdown.ts b/src/common-elements/dropdown.ts index 86623949..40cf978d 100644 --- a/src/common-elements/dropdown.ts +++ b/src/common-elements/dropdown.ts @@ -55,7 +55,7 @@ export const StyledDropdown = styled(Dropdown)` display: block; height: 0; position: absolute; - right: 0.35em; + right: 0.6em; top: 50%; margin-top: -0.125em; width: 0; diff --git a/src/components/MediaTypeSwitch/MediaTypesSwitch.tsx b/src/components/MediaTypeSwitch/MediaTypesSwitch.tsx index 3c40483a..f25b303f 100644 --- a/src/components/MediaTypeSwitch/MediaTypesSwitch.tsx +++ b/src/components/MediaTypeSwitch/MediaTypesSwitch.tsx @@ -12,6 +12,8 @@ export interface MediaTypeChildProps { export interface MediaTypesSwitchProps { content?: MediaContentModel; + withLabel?: boolean; + renderDropdown: (props: DropdownProps) => JSX.Element; children: (activeMime: MediaTypeModel) => JSX.Element; } @@ -38,16 +40,25 @@ export class MediaTypesSwitch extends React.Component { }; }); - return ( - <> + const Wrapper = ({ children }) => + this.props.withLabel ? ( Content type + {children} + + ) : ( + children + ); + + return ( + <> + {this.props.renderDropdown({ value: options[activeMimeIdx], options, onChange: this.switchMedia, })} - + {this.props.children(content.active)} ); diff --git a/src/components/PayloadSamples/MediaTypeSamples.tsx b/src/components/PayloadSamples/MediaTypeSamples.tsx index de6e2008..2e1c5517 100644 --- a/src/components/PayloadSamples/MediaTypeSamples.tsx +++ b/src/components/PayloadSamples/MediaTypeSamples.tsx @@ -2,9 +2,9 @@ import * as React from 'react'; import { DropdownProps } from '../../common-elements'; import { MediaTypeModel } from '../../services/models'; - +import { Markdown } from '../Markdown/Markdown'; import { Example } from './Example'; -import { Description, DropdownLabel, DropdownWrapper, NoSampleLabel } from './styled.elements'; +import { DropdownLabel, DropdownWrapper, NoSampleLabel } from './styled.elements'; export interface PayloadSamplesProps { mediaType: MediaTypeModel; @@ -35,6 +35,7 @@ export class MediaTypeSamples extends React.Component 1) { const options = examplesNames.map((name, idx) => { return { @@ -42,6 +43,10 @@ export class MediaTypeSamples extends React.Component @@ -52,27 +57,18 @@ export class MediaTypeSamples extends React.Component - {examplesNames.map(name => { - const description = examples[name].description; - const activeValue = options[activeIdx].label; - - return ( - (name === activeValue || examples[name].summary === activeValue) && ( -
- {description && {description}} - -
- ) - ); - })} +
+ {description && } + +
); } else { - const name = examplesNames[0]; + const example = examples[examplesNames[0]]; return (
- {examples[name].description && {examples[name].description}} - + {example.description && } +
); } diff --git a/src/components/PayloadSamples/PayloadSamples.tsx b/src/components/PayloadSamples/PayloadSamples.tsx index 16b98322..aa9d0e1b 100644 --- a/src/components/PayloadSamples/PayloadSamples.tsx +++ b/src/components/PayloadSamples/PayloadSamples.tsx @@ -22,7 +22,7 @@ export class PayloadSamples extends React.Component { } return ( - + {mediaType => ( transparentize(0.6, theme.rightPanel.backgroundColor)}; @@ -43,7 +42,7 @@ export const InvertedSimpleDropdown = styled(StyledDropdown)` .Dropdown-control:hover { font-size: 1em; border: none; - padding: 0 1.2em 0 0; + padding: 0.9em 1.6em 0.9em 0.9em; background: transparent; color: ${({ theme }) => theme.rightPanel.textColor}; box-shadow: none; @@ -63,8 +62,3 @@ export const NoSampleLabel = styled.div` font-size: 12px; color: #ee807f; `; - -export const Description = styled.span` - font-size: 12px; - color: ${({ theme }) => transparentize(0.6, theme.rightPanel.textColor)}; -`; From 84e03e2d07758505e70ade0424c30e150bbf9519 Mon Sep 17 00:00:00 2001 From: Roman Hotsiy Date: Sun, 7 Jul 2019 23:33:46 +0300 Subject: [PATCH 06/35] chore: prettier + export --- src/components/SideMenu/MenuItem.tsx | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/src/components/SideMenu/MenuItem.tsx b/src/components/SideMenu/MenuItem.tsx index 9b66cb53..2a219dfc 100644 --- a/src/components/SideMenu/MenuItem.tsx +++ b/src/components/SideMenu/MenuItem.tsx @@ -57,22 +57,19 @@ export class MenuItem extends React.Component { {item.name} {this.props.children} - {(item.depth > 0 && - item.items.length > 0 && ( - - )) || + {(item.depth > 0 && item.items.length > 0 && ( + + )) || null} )} - {!withoutChildren && - item.items && - item.items.length > 0 && ( - - )} + {!withoutChildren && item.items && item.items.length > 0 && ( + + )} ); } @@ -83,7 +80,7 @@ export interface OperationMenuItemContentProps { } @observer -class OperationMenuItemContent extends React.Component { +export class OperationMenuItemContent extends React.Component { render() { const { item } = this.props; return ( From 45c0c23c730d30a6ecfd895ba4f64912b911b8c9 Mon Sep 17 00:00:00 2001 From: Roman Hotsiy Date: Sun, 7 Jul 2019 23:34:09 +0300 Subject: [PATCH 07/35] chore: prettier all --- src/common-elements/CopyButtonWrapper.tsx | 6 +--- src/components/ApiInfo/ApiInfo.tsx | 30 ++++++++----------- src/components/Fields/Field.tsx | 29 +++++++++--------- src/components/Fields/FieldDetail.tsx | 5 +--- .../PayloadSamples/exernalExampleHook.ts | 27 ++++++++--------- src/components/Responses/Response.tsx | 11 ++++--- src/services/models/Operation.ts | 4 +-- 7 files changed, 47 insertions(+), 65 deletions(-) diff --git a/src/common-elements/CopyButtonWrapper.tsx b/src/common-elements/CopyButtonWrapper.tsx index f3cd904d..c1b5e468 100644 --- a/src/common-elements/CopyButtonWrapper.tsx +++ b/src/common-elements/CopyButtonWrapper.tsx @@ -5,11 +5,7 @@ import { ClipboardService } from '../services/ClipboardService'; export interface CopyButtonWrapperProps { data: any; - children: ( - props: { - renderCopyButton: (() => React.ReactNode); - }, - ) => React.ReactNode; + children: (props: { renderCopyButton: () => React.ReactNode }) => React.ReactNode; } export class CopyButtonWrapper extends React.PureComponent< diff --git a/src/components/ApiInfo/ApiInfo.tsx b/src/components/ApiInfo/ApiInfo.tsx index fe595811..99626633 100644 --- a/src/components/ApiInfo/ApiInfo.tsx +++ b/src/components/ApiInfo/ApiInfo.tsx @@ -44,22 +44,20 @@ export class ApiInfo extends React.Component { null; const website = - (info.contact && - info.contact.url && ( - - URL: {info.contact.url} - - )) || + (info.contact && info.contact.url && ( + + URL: {info.contact.url} + + )) || null; const email = - (info.contact && - info.contact.email && ( - - {info.contact.name || 'E-mail'}:{' '} - {info.contact.email} - - )) || + (info.contact && info.contact.email && ( + + {info.contact.name || 'E-mail'}:{' '} + {info.contact.email} + + )) || null; const terms = @@ -70,11 +68,7 @@ export class ApiInfo extends React.Component { )) || null; - const version = - (info.version && ( - ({info.version}) - )) || - null; + const version = (info.version && ({info.version})) || null; return (
diff --git a/src/components/Fields/Field.tsx b/src/components/Fields/Field.tsx index dae79e96..ef969b2d 100644 --- a/src/components/Fields/Field.tsx +++ b/src/components/Fields/Field.tsx @@ -65,21 +65,20 @@ export class Field extends React.Component { - {field.expanded && - withSubSchema && ( - - - - - - - - )} + {field.expanded && withSubSchema && ( + + + + + + + + )} ); } diff --git a/src/components/Fields/FieldDetail.tsx b/src/components/Fields/FieldDetail.tsx index e9ea1099..0697aeea 100644 --- a/src/components/Fields/FieldDetail.tsx +++ b/src/components/Fields/FieldDetail.tsx @@ -17,10 +17,7 @@ export class FieldDetail extends React.PureComponent { return (
- {this.props.label} {' '} - - {value} - + {this.props.label} {value}
); } diff --git a/src/components/PayloadSamples/exernalExampleHook.ts b/src/components/PayloadSamples/exernalExampleHook.ts index e3e33f08..f9d00c68 100644 --- a/src/components/PayloadSamples/exernalExampleHook.ts +++ b/src/components/PayloadSamples/exernalExampleHook.ts @@ -13,22 +13,19 @@ export function useExternalExample(example: ExampleModel, mimeType: string) { prevRef.current = example; - useEffect( - () => { - const load = async () => { - setIsLoading(true); - try { - value.current = await example.getExternalValue(mimeType); - } catch (e) { - value.current = e; - } - setIsLoading(false); - }; + useEffect(() => { + const load = async () => { + setIsLoading(true); + try { + value.current = await example.getExternalValue(mimeType); + } catch (e) { + value.current = e; + } + setIsLoading(false); + }; - load(); - }, - [example, mimeType], - ); + load(); + }, [example, mimeType]); return value.current; } diff --git a/src/components/Responses/Response.tsx b/src/components/Responses/Response.tsx index 7c46a659..58e0ae32 100644 --- a/src/components/Responses/Response.tsx +++ b/src/components/Responses/Response.tsx @@ -28,12 +28,11 @@ export class ResponseView extends React.Component<{ response: ResponseModel }> { code={code} opened={expanded} /> - {expanded && - !empty && ( - - - - )} + {expanded && !empty && ( + + + + )} ); } diff --git a/src/services/models/Operation.ts b/src/services/models/Operation.ts index 3e31a367..88640dc5 100644 --- a/src/services/models/Operation.ts +++ b/src/services/models/Operation.ts @@ -77,8 +77,8 @@ export class OperationModel implements IMenuItem { operationSpec.operationId !== undefined ? 'operation/' + operationSpec.operationId : parent !== undefined - ? parent.id + this.pointer - : this.pointer; + ? parent.id + this.pointer + : this.pointer; this.name = getOperationSummary(operationSpec); this.description = operationSpec.description; From 12b7057055686f59c8932b0b1a43a1d52b549ca8 Mon Sep 17 00:00:00 2001 From: Roman Hotsiy Date: Mon, 8 Jul 2019 08:30:04 +0300 Subject: [PATCH 08/35] fix: fix fields table overflow if deeply nested with long title --- src/common-elements/fields.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/common-elements/fields.ts b/src/common-elements/fields.ts index 9ab3a929..471b8957 100644 --- a/src/common-elements/fields.ts +++ b/src/common-elements/fields.ts @@ -32,6 +32,7 @@ export const TypeName = styled(FieldLabel)` export const TypeTitle = styled(FieldLabel)` color: ${props => props.theme.schema.typeTitleColor}; + word-break: break-word; `; export const TypeFormat = TypeName; From f2210fd86f765ebbf7f7473b0d4c8c937953744e Mon Sep 17 00:00:00 2001 From: Roman Hotsiy Date: Mon, 8 Jul 2019 08:31:50 +0300 Subject: [PATCH 09/35] =?UTF-8?q?chore:=20Release=202.0.0-rc.10=20?= =?UTF-8?q?=F0=9F=94=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 13 +++++++++++++ package.json | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b388fa12..2748a332 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,16 @@ +# [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) diff --git a/package.json b/package.json index 969e0bd9..6f096c1e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redoc", - "version": "2.0.0-rc.9", + "version": "2.0.0-rc.10", "description": "ReDoc", "repository": { "type": "git", From 6dc54e9344d31051740108c76266cc0e0d322c97 Mon Sep 17 00:00:00 2001 From: Roman Hotsiy Date: Mon, 8 Jul 2019 08:43:52 +0300 Subject: [PATCH 10/35] chore(cli): bump redoc --- cli/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/package.json b/cli/package.json index ea280599..8f10a9a1 100644 --- a/cli/package.json +++ b/cli/package.json @@ -16,7 +16,7 @@ "node-libs-browser": "^2.2.0", "react": "^16.8.4", "react-dom": "^16.8.4", - "redoc": "^2.0.0-rc.8-1", + "redoc": "^2.0.0-rc.10", "styled-components": "^4.1.3", "tslib": "^1.9.3", "yargs": "^12.0.5" From 685febb116abcc50c38bf785078731e2c6509e13 Mon Sep 17 00:00:00 2001 From: Roman Hotsiy Date: Mon, 8 Jul 2019 08:50:05 +0300 Subject: [PATCH 11/35] chore(cli): update deps --- cli/package.json | 21 +- cli/yarn.lock | 1222 +++++++++++++--------------------------------- 2 files changed, 349 insertions(+), 894 deletions(-) diff --git a/cli/package.json b/cli/package.json index 8f10a9a1..51954e8d 100644 --- a/cli/package.json +++ b/cli/package.json @@ -7,19 +7,22 @@ "repository": "https://github.com/Redocly/redoc", "author": "Roman Hotsiy ", "license": "MIT", + "engines": { + "node": ">= 8" + }, "dependencies": { - "chokidar": "^2.0.4", - "handlebars": "^4.0.11", + "chokidar": "^3.0.2", + "handlebars": "^4.1.2", "isarray": "^2.0.4", "mkdirp": "^0.5.1", "mobx": "^4.2.0", - "node-libs-browser": "^2.2.0", - "react": "^16.8.4", - "react-dom": "^16.8.4", + "node-libs-browser": "^2.2.1", + "react": "^16.8.6", + "react-dom": "^16.8.6", "redoc": "^2.0.0-rc.10", - "styled-components": "^4.1.3", - "tslib": "^1.9.3", - "yargs": "^12.0.5" + "styled-components": "^4.3.2", + "tslib": "^1.10.0", + "yargs": "^13.2.4" }, "scripts": { "ci-publish": "ci-publish" @@ -28,7 +31,7 @@ "access": "public" }, "devDependencies": { - "@types/chokidar": "^1.7.5", + "@types/chokidar": "^2.1.3", "@types/handlebars": "^4.0.39", "@types/mkdirp": "^0.5.2", "ci-publish": "^1.3.1" diff --git a/cli/yarn.lock b/cli/yarn.lock index 72bfd16b..5b7e89a6 100644 --- a/cli/yarn.lock +++ b/cli/yarn.lock @@ -9,6 +9,17 @@ dependencies: "@babel/highlight" "^7.0.0" +"@babel/generator@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.5.0.tgz#f20e4b7a91750ee8b63656073d843d2a736dca4a" + integrity sha512-1TTVrt7J9rcG5PMjvO7VEG3FrEoEJNHxumRq66GemPmzboLWtIjjcJgk8rokuAS7IiRSpgVSu5Vb9lc99iJkOA== + dependencies: + "@babel/types" "^7.5.0" + jsesc "^2.5.1" + lodash "^4.17.11" + source-map "^0.5.0" + trim-right "^1.0.1" + "@babel/helper-annotate-as-pure@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" @@ -16,6 +27,22 @@ dependencies: "@babel/types" "^7.0.0" +"@babel/helper-function-name@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" + integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== + dependencies: + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-get-function-arity@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" + integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== + dependencies: + "@babel/types" "^7.0.0" + "@babel/helper-module-imports@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" @@ -23,6 +50,13 @@ dependencies: "@babel/types" "^7.0.0" +"@babel/helper-split-export-declaration@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677" + integrity sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q== + dependencies: + "@babel/types" "^7.4.4" + "@babel/highlight@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" @@ -32,6 +66,11 @@ esutils "^2.0.2" js-tokens "^4.0.0" +"@babel/parser@^7.4.4", "@babel/parser@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.5.0.tgz#3e0713dff89ad6ae37faec3b29dcfc5c979770b7" + integrity sha512-I5nW8AhGpOXGCCNYGc+p7ExQIBxRFnS2fd/d862bNOKvmoEPjYPcfIjsfdy0ujagYOIYPczKgD9l3FsgTkAzKA== + "@babel/runtime@^7.0.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.3.4": version "7.3.4" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.3.4.tgz#73d12ba819e365fcf7fd152aed56d6df97d21c83" @@ -39,6 +78,30 @@ dependencies: regenerator-runtime "^0.12.0" +"@babel/template@^7.1.0": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237" + integrity sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.4.4" + "@babel/types" "^7.4.4" + +"@babel/traverse@^7.0.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.5.0.tgz#4216d6586854ef5c3c4592dab56ec7eb78485485" + integrity sha512-SnA9aLbyOCcnnbQEGwdfBggnc142h/rbqqsXcaATj2hZcegCl903pUD/lfpsNBlBSuWow/YDfRyJuWi2EPR5cg== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.5.0" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.4.4" + "@babel/parser" "^7.5.0" + "@babel/types" "^7.5.0" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.11" + "@babel/types@^7.0.0": version "7.3.4" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.3.4.tgz#bf482eaeaffb367a28abbf9357a94963235d90ed" @@ -48,35 +111,38 @@ lodash "^4.17.11" to-fast-properties "^2.0.0" -"@emotion/is-prop-valid@^0.7.3": - version "0.7.3" - resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.7.3.tgz#a6bf4fa5387cbba59d44e698a4680f481a8da6cc" - integrity sha512-uxJqm/sqwXw3YPA5GXX365OBcJGFtxUVkB6WyezqFHlNe9jqUWH5ur2O2M8dGBz61kn1g3ZBlzUunFQXQIClhA== +"@babel/types@^7.4.4", "@babel/types@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.5.0.tgz#e47d43840c2e7f9105bc4d3a2c371b4d0c7832ab" + integrity sha512-UFpDVqRABKsW01bvw7/wSUe56uy6RXM5+VJibVVAybDGxEW25jdwiFJEf7ASvSaC7sN7rbE/l3cLp2izav+CtQ== dependencies: - "@emotion/memoize" "0.7.1" + esutils "^2.0.2" + lodash "^4.17.11" + to-fast-properties "^2.0.0" -"@emotion/memoize@0.7.1": - version "0.7.1" - resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.1.tgz#e93c13942592cf5ef01aa8297444dc192beee52f" - integrity sha512-Qv4LTqO11jepd5Qmlp3M1YEjBumoTHcHFdgPTQ+sFlIL5myi/7xu/POwP7IRu6odBdmLXdtIs1D6TuW6kbwbbg== +"@emotion/is-prop-valid@^0.8.1": + version "0.8.2" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.2.tgz#b9692080da79041683021fcc32f96b40c54c59dc" + integrity sha512-ZQIMAA2kLUWiUeMZNJDTeCwYRx1l8SQL0kHktze4COT22occKpDML1GDUXP5/sxhOMrZO8vZw773ni4H5Snrsg== + dependencies: + "@emotion/memoize" "0.7.2" + +"@emotion/memoize@0.7.2": + version "0.7.2" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.2.tgz#7f4c71b7654068dfcccad29553520f984cc66b30" + integrity sha512-hnHhwQzvPCW1QjBWFyBtsETdllOM92BfrKWbUTmh9aeOlcVOiXvlPsK4104xH8NsaKfg86PTFsWkueQeUfMA/w== "@emotion/unitless@^0.7.0": version "0.7.3" resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.3.tgz#6310a047f12d21a1036fb031317219892440416f" integrity sha512-4zAPlpDEh2VwXswwr/t8xGNDGg8RQiPxtxZ3qQEXyQsBV39ptTdESCjuBvGze1nLMVrxmTIKmnO/nAV8Tqjjzg== -"@types/chokidar@^1.7.5": - version "1.7.5" - resolved "https://registry.yarnpkg.com/@types/chokidar/-/chokidar-1.7.5.tgz#1fa78c8803e035bed6d98e6949e514b133b0c9b6" - integrity sha512-PDkSRY7KltW3M60hSBlerxI8SFPXsO3AL/aRVsO4Kh9IHRW74Ih75gUuTd/aE4LSSFqypb10UIX3QzOJwBQMGQ== +"@types/chokidar@^2.1.3": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@types/chokidar/-/chokidar-2.1.3.tgz#123ab795dba6d89be04bf076e6aecaf8620db674" + integrity sha512-6qK3xoLLAhQVTucQGHTySwOVA1crHRXnJeLwqK6KIFkkKa2aoMFXh+WEi8PotxDtvN6MQJLyYN9ag9P6NLV81w== dependencies: - "@types/events" "*" - "@types/node" "*" - -"@types/events@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" - integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== + chokidar "*" "@types/handlebars@^4.0.39": version "4.1.0" @@ -97,11 +163,6 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-11.11.3.tgz#7c6b0f8eaf16ae530795de2ad1b85d34bf2f5c58" integrity sha512-wp6IOGu1lxsfnrD+5mX6qwSwWuqsdkKKxTN4aQc4wByHAKZJf9/D4KXPQ1POUjEbnCP5LMggB0OEFNY9OTsMqg== -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - agent-base@2: version "2.1.1" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-2.1.1.tgz#d6de10d5af6132d5bd692427d46fc538539094c7" @@ -172,25 +233,30 @@ ansi-regex@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= -ansi-styles@^3.2.1: +ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== +anymatch@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.0.3.tgz#2fb624fe0e84bccab00afee3d0006ed310f22f09" + integrity sha512-c6IvoeBECQlMVuYUjSwimnhmztImpErfxJzWZhIQinIvQWoGOnB0dLIgifbPHQt5heS6mNlaZG16f06H3C8t1g== dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" + normalize-path "^3.0.0" + picomatch "^2.0.4" aproba@^1.0.3: version "1.2.0" @@ -212,21 +278,6 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" @@ -239,11 +290,6 @@ array-uniq@^1.0.1: resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - arrify@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -287,16 +333,6 @@ assert@^1.1.1: dependencies: util "0.10.3" -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -async-each@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.2.tgz#8b8a7ca2a658f927e9f307d6d1a42f4199f0f735" - integrity sha512-6xrbvN0MOBKSJDdonmSSz2OwFSgxRaVtBDes26mj9KIGtDo+g9xosFRSC+i1gQh2oAN/tQ62AI/pGZGQjVOiRg== - async@^2.5.0: version "2.6.2" resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381" @@ -309,11 +345,6 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= -atob@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - available-versions@0.13.2: version "0.13.2" resolved "https://registry.yarnpkg.com/available-versions/-/available-versions-0.13.2.tgz#b124814acee82851b027e18d632dc36065c518ab" @@ -381,19 +412,6 @@ base64-js@^1.0.2: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw== -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - bcrypt-pbkdf@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" @@ -432,10 +450,10 @@ big.js@^5.2.2: resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== -binary-extensions@^1.0.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.0.tgz#9523e001306a32444b907423f1de2164222f6ab1" - integrity sha512-EgmjVLMn22z7eGGv3kcnHwSnJXmFHjISTY9E/S5lIcTD3Oxw05QTcBLNkJFzcb3cNueUdF/IN4U+d78V0zO8Hw== +binary-extensions@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" + integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== bluebird@3.4.1: version "3.4.1" @@ -495,21 +513,12 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== +braces@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" + fill-range "^7.0.1" brorand@^1.0.1: version "1.1.0" @@ -604,21 +613,6 @@ builtins@^1.0.3: resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - call-me-maybe@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" @@ -718,29 +712,20 @@ check-more-types@2.24.0: resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600" integrity sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA= -chokidar@^2.0.4: - version "2.1.2" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.2.tgz#9c23ea40b01638439e0513864d362aeacc5ad058" - integrity sha512-IwXUx0FXc5ibYmPC2XeEj5mpXoV66sR+t3jqu2NS2GYwCktt3KF1/Qqjws/NkegajBA4RbZ5+DDwlOiJsxDHEg== +chokidar@*, chokidar@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.0.2.tgz#0d1cd6d04eb2df0327446188cd13736a3367d681" + integrity sha512-c4PR2egjNjI1um6bamCQ6bUNPDiyofNQruHvKgHQ4gDUP/ITSVSzNsiI5OWtHOsX323i5ha/kk4YmOZ1Ktg7KA== dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" + anymatch "^3.0.1" + braces "^3.0.2" + glob-parent "^5.0.0" + is-binary-path "^2.1.0" + is-glob "^4.0.1" normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.0" + readdirp "^3.1.1" optionalDependencies: - fsevents "^1.2.7" - -chownr@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" - integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== + fsevents "^2.0.6" ci-publish@^1.3.1: version "1.3.1" @@ -759,16 +744,6 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - classnames@^2.2.0, classnames@^2.2.3, classnames@^2.2.6: version "2.2.6" resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" @@ -816,6 +791,15 @@ cliui@^4.0.0: strip-ansi "^4.0.0" wrap-ansi "^2.0.0" +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + clone@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" @@ -836,14 +820,6 @@ code-point-at@^1.0.0: resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -883,11 +859,6 @@ commander@~2.17.1: resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== -component-emitter@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" - integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -954,11 +925,6 @@ constants-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - core-js@^2.5.7: version "2.6.5" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.5.tgz#44bc8d249e7fb2ff5d00e0341a7ffb94fbf67895" @@ -1095,7 +1061,7 @@ date-now@^0.1.4: resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= -debug@2, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3: +debug@2, debug@^2.2.0: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -1130,6 +1096,13 @@ debug@^3.2.6: dependencies: ms "^2.1.1" +debug@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -1140,11 +1113,6 @@ decko@^1.2.0: resolved "https://registry.yarnpkg.com/decko/-/decko-1.2.0.tgz#fd43c735e967b8013306884a56fbe665996b6817" integrity sha1-/UPHNelnuAEzBohKVvvmZZlraBc= -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" @@ -1157,28 +1125,6 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - del@2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" @@ -1215,11 +1161,6 @@ des.js@^1.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= - diffie-hellman@^5.0.0: version "5.0.3" resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" @@ -1298,6 +1239,11 @@ elliptic@^6.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + emojis-list@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" @@ -1386,34 +1332,6 @@ exit-hook@^1.0.0: resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" integrity sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g= -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - extend@3, extend@^3.0.0, extend@~3.0.0, extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" @@ -1428,20 +1346,6 @@ external-editor@^1.0.1: spawn-sync "^1.0.15" tmp "^0.0.29" -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" @@ -1480,15 +1384,12 @@ figures@^1.3.5: escape-string-regexp "^1.0.5" object-assign "^4.1.0" -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" + to-regex-range "^5.0.1" filled-array@^1.0.0: version "1.1.0" @@ -1524,11 +1425,6 @@ follow-redirects@^1.3.0: dependencies: debug "^3.2.6" -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - foreach@^2.0.4: version "2.0.5" resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" @@ -1562,32 +1458,15 @@ format-util@^1.0.3: resolved "https://registry.yarnpkg.com/format-util/-/format-util-1.0.3.tgz#032dca4a116262a12c43f4c3ec8566416c5b2d95" integrity sha1-Ay3KShFiYqEsQ/TD7IVmQWxbLZU= -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - -fs-minipass@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" - integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ== - dependencies: - minipass "^2.2.1" - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.7.tgz#4851b664a3783e52003b3c66eb0eee1074933aa4" - integrity sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw== - dependencies: - nan "^2.9.2" - node-pre-gyp "^0.10.0" +fsevents@^2.0.6: + version "2.0.7" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.0.7.tgz#382c9b443c6cbac4c57187cdda23aa3bf1ccfc2a" + integrity sha512-a7YT0SV3RB+DjYcppwVDLtn13UQnmg0SWZS7ezZD0UjnLwXmy8Zm21GMVGLaFGimIqcvyMQaOJBrop8MyOp1kQ== gauge@~2.7.3: version "2.7.4" @@ -1608,6 +1487,11 @@ get-caller-file@^1.0.1: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" @@ -1620,11 +1504,6 @@ get-stream@^4.0.0: dependencies: pump "^3.0.0" -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" @@ -1667,13 +1546,12 @@ github@2.4.0: https-proxy-agent "^1.0.0" mime "^1.2.11" -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= +glob-parent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.0.0.tgz#1dc99f0f39b006d3e92c2c284068382f0c20e954" + integrity sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg== dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" + is-glob "^4.0.1" glob@7.1.2: version "7.1.2" @@ -1707,6 +1585,11 @@ global@^4.3.0: min-document "^2.19.0" process "~0.5.1" +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + globby@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" @@ -1774,7 +1657,7 @@ grapheme-splitter@^1.0.4: resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== -handlebars@*, handlebars@^4.0.11: +handlebars@*: version "4.1.0" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.0.tgz#0d6a6f34ff1f63cecec8423aa4169827bf787c3a" integrity sha512-l2jRuU1NAWK6AW5qqcTATWQJvNPEwkM7NEKSiv/gqOsoSQbVoWyqVEY5GS+XPQ88zLNmqASRpzfdm8d79hJS+w== @@ -1785,6 +1668,17 @@ handlebars@*, handlebars@^4.0.11: optionalDependencies: uglify-js "^3.1.4" +handlebars@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.2.tgz#b6b37c1ced0306b221e094fc7aca3ec23b131b67" + integrity sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw== + dependencies: + neo-async "^2.6.0" + optimist "^0.6.1" + source-map "^0.6.1" + optionalDependencies: + uglify-js "^3.1.4" + har-schema@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" @@ -1828,37 +1722,6 @@ has-unicode@^2.0.0: resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - hash-base@^3.0.0: version "3.0.4" resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" @@ -1948,35 +1811,16 @@ https-proxy-agent@^1.0.0: debug "2" extend "3" -iconv-lite@^0.4.4: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - ieee754@^1.1.4: version "1.1.12" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b" integrity sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA== -ignore-walk@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" - integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== - dependencies: - minimatch "^3.0.4" - imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= -indexof@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" - integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= - inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -2025,82 +1869,24 @@ invert-kv@^2.0.0: resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= +is-binary-path@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: - binary-extensions "^1.0.0" + binary-extensions "^2.0.0" is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.0, is-extglob@^2.1.1: +is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= @@ -2124,17 +1910,10 @@ is-fullwidth-code-point@^2.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" - integrity sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A= +is-glob@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== dependencies: is-extglob "^2.1.1" @@ -2143,12 +1922,10 @@ is-npm@^1.0.0: resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ= -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== is-obj@^1.0.0: version "1.0.1" @@ -2174,13 +1951,6 @@ is-path-inside@^1.0.0: dependencies: path-is-inside "^1.0.1" -is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" @@ -2206,12 +1976,12 @@ is-typedarray@~1.0.0: resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== +is-what@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.2.3.tgz#50f76f1bd8e56967e15765d1d34302513701997b" + integrity sha512-c4syLgFnjXTH5qd82Fp/qtUIeM0wA69xbI0KH1QpurMIvDaZFrS8UtAa4U52Dc2qSznaMxHit0gErMp6A/Qk1w== -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: +isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= @@ -2226,18 +1996,6 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" @@ -2261,6 +2019,11 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + json-pointer@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/json-pointer/-/json-pointer-0.6.0.tgz#8e500550a6aac5464a473377da57aa6cc22828d7" @@ -2339,30 +2102,6 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" - integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== - latest-version@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-2.0.0.tgz#56f8d6139620847b8017f8f1f4d78e211324168b" @@ -2501,18 +2240,6 @@ map-age-cleaner@^0.1.1: dependencies: p-defer "^1.0.0" -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - mark.js@^8.11.1: version "8.11.1" resolved "https://registry.yarnpkg.com/mark.js/-/mark.js-8.11.1.tgz#180f1f9ebef8b0e638e4166ad52db879beb2ffc5" @@ -2541,34 +2268,17 @@ mem@^4.0.0: mimic-fn "^2.0.0" p-is-promise "^2.0.0" -memoize-one@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-4.1.0.tgz#a2387c58c03fff27ca390c31b764a79addf3f906" - integrity sha512-2GApq0yI/b22J2j9rhbrAlsHb0Qcz+7yWxeLG8h+95sl1XPUgeLimQSOdur4Vw7cUhrBHwaUZxWFZueojqNRzA== - memoize-one@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.0.0.tgz#d55007dffefb8de7546659a1722a5d42e128286e" integrity sha512-7g0+ejkOaI9w5x6LvQwmj68kUj6rxROywPSCqmclG/HBacmFnZqhVscQ8kovkn9FBCNJmOz6SY42+jnvZzDWdw== -micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== +merge-anything@^2.2.4: + version "2.2.5" + resolved "https://registry.yarnpkg.com/merge-anything/-/merge-anything-2.2.5.tgz#37ef13f36359ee64f09c657d2cef45f7e29493f9" + integrity sha512-WgZGR7EQ1D8pyh57uKBbkPhUCJZLGdMzbDaxL4MDTJSGsvtpGdm8myr6DDtgJwT46xiFBlHqxbveDRpFBWlKWQ== dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" + is-what "^3.2.3" miller-rabin@^4.0.0: version "4.0.1" @@ -2639,29 +2349,6 @@ minimist@~0.0.1: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= -minipass@^2.2.1, minipass@^2.3.4: - version "2.3.5" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" - integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minizlib@^1.1.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" - integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== - dependencies: - minipass "^2.2.1" - -mixin-deep@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" - integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" @@ -2712,36 +2399,10 @@ mute-stream@0.0.6: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.6.tgz#48962b19e169fd1dfc240b3f1e7317627bbc47db" integrity sha1-SJYrGeFp/R38JAs/HnMXYnu8R9s= -nan@^2.9.2: - version "2.13.1" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.13.1.tgz#a15bee3790bde247e8f38f1d446edcdaeb05f2dd" - integrity sha512-I6YB/YEuDeUZMmhscXKxGgZlFnhsn5y0hgOZBadkzfTRrZBtJDZeg6eQf7PYMIEclwmorTKK8GztsyOUSVBREA== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -needle@^2.2.1: - version "2.2.4" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e" - integrity sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA== - dependencies: - debug "^2.1.2" - iconv-lite "^0.4.4" - sax "^1.2.4" +neo-async@^2.6.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" + integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== nice-try@^1.0.4: version "1.0.5" @@ -2755,10 +2416,10 @@ node-fetch-h2@^2.3.0: dependencies: http2-client "^1.2.5" -node-libs-browser@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.0.tgz#c72f60d9d46de08a940dedbb25f3ffa2f9bbaa77" - integrity sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA== +node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== dependencies: assert "^1.1.1" browserify-zlib "^0.2.0" @@ -2770,7 +2431,7 @@ node-libs-browser@^2.2.0: events "^3.0.0" https-browserify "^1.0.0" os-browserify "^0.3.0" - path-browserify "0.0.0" + path-browserify "0.0.1" process "^0.11.10" punycode "^1.2.4" querystring-es3 "^0.2.0" @@ -2782,23 +2443,7 @@ node-libs-browser@^2.2.0: tty-browserify "0.0.0" url "^0.11.0" util "^0.11.0" - vm-browserify "0.0.4" - -node-pre-gyp@^0.10.0: - version "0.10.3" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" - integrity sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A== - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4" + vm-browserify "^1.0.1" node-readfiles@^0.2.0: version "0.2.0" @@ -2812,14 +2457,6 @@ node-status-codes@^1.0.0: resolved "https://registry.yarnpkg.com/node-status-codes/-/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f" integrity sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8= -nopt@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= - dependencies: - abbrev "1" - osenv "^0.1.4" - "normalize-package-data@~1.0.1 || ^2.0.0": version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -2830,23 +2467,11 @@ nopt@^4.0.1: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - normalize-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -npm-bundled@^1.0.1: - version "1.0.6" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" - integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g== - "npm-package-arg@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0": version "6.1.0" resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.0.tgz#15ae1e2758a5027efb4c250554b85a737db7fcc1" @@ -2857,14 +2482,6 @@ npm-bundled@^1.0.1: semver "^5.5.0" validate-npm-package-name "^3.0.0" -npm-packlist@^1.1.6: - version "1.4.1" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.1.tgz#19064cdf988da80ea3cee45533879d90192bbfbc" - integrity sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw== - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - npm-registry-client@^8.0.0: version "8.6.0" resolved "https://registry.yarnpkg.com/npm-registry-client/-/npm-registry-client-8.6.0.tgz#7f1529f91450732e89f8518e0f21459deea3e4c4" @@ -2924,7 +2541,7 @@ npm-utils@2.0.0: repo-url "1.0.1" verbal-expressions "0.3.0" -"npmlog@2 || ^3.1.0 || ^4.0.0", npmlog@^4.0.2: +"npmlog@2 || ^3.1.0 || ^4.0.0": version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== @@ -3001,29 +2618,6 @@ object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -3068,7 +2662,7 @@ os-homedir@^1.0.0: resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= -os-locale@^3.0.0: +os-locale@^3.0.0, os-locale@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== @@ -3087,7 +2681,7 @@ os-tmpdir@^1.0.0, os-tmpdir@~1.0.1: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -osenv@^0.1.0, osenv@^0.1.4, osenv@^0.1.5: +osenv@^0.1.0, osenv@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== @@ -3212,20 +2806,10 @@ parse-json@^2.1.0: dependencies: error-ex "^1.2.0" -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -path-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" - integrity sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo= - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== path-exists@^3.0.0: version "3.0.0" @@ -3278,6 +2862,11 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= +picomatch@^2.0.4: + version "2.0.7" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.0.7.tgz#514169d8c7cd0bdbeecc8a2609e34a7163de69f6" + integrity sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA== + pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -3324,11 +2913,6 @@ pop-iterate@^1.0.1: resolved "https://registry.yarnpkg.com/pop-iterate/-/pop-iterate-1.0.1.tgz#ceacfdab4abf353d7a0f2aaa2c1fc7b3f9413ba3" integrity sha1-zqz9q0q/NT16DyqqLB/Hs/lBO6M= -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - postcss-value-parser@^3.3.0: version "3.3.1" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" @@ -3484,7 +3068,7 @@ randomfill@^1.0.3: randombytes "^2.0.5" safe-buffer "^5.1.0" -rc@^1.0.1, rc@^1.1.2, rc@^1.1.6, rc@^1.2.7: +rc@^1.0.1, rc@^1.1.2, rc@^1.1.6: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -3494,15 +3078,15 @@ rc@^1.0.1, rc@^1.1.2, rc@^1.1.6, rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" -react-dom@^16.8.4: - version "16.8.4" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.8.4.tgz#1061a8e01a2b3b0c8160037441c3bf00a0e3bc48" - integrity sha512-Ob2wK7XG2tUDt7ps7LtLzGYYB6DXMCLj0G5fO6WeEICtT4/HdpOi7W/xLzZnR6RCG1tYza60nMdqtxzA8FaPJQ== +react-dom@^16.8.6: + version "16.8.6" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.8.6.tgz#71d6303f631e8b0097f56165ef608f051ff6e10f" + integrity sha512-1nL7PIq9LTL3fthPqwkvr2zY7phIPjYrT0jp4HjyEQrEROnw4dG41VVwi/wfoCneoleqrNX7iAD+pXebJZwrwA== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" prop-types "^15.6.2" - scheduler "^0.13.4" + scheduler "^0.13.6" react-dropdown@^1.6.4: version "1.6.4" @@ -3544,15 +3128,15 @@ react-tabs@^3.0.0: classnames "^2.2.0" prop-types "^15.5.0" -react@^16.8.4: - version "16.8.4" - resolved "https://registry.yarnpkg.com/react/-/react-16.8.4.tgz#fdf7bd9ae53f03a9c4cd1a371432c206be1c4768" - integrity sha512-0GQ6gFXfUH7aZcjGVymlPOASTuSjlQL4ZtVC5YKH+3JL6bBLCVO21DknzmaPlI90LN253ojj02nsapy+j7wIjg== +react@^16.8.6: + version "16.8.6" + resolved "https://registry.yarnpkg.com/react/-/react-16.8.6.tgz#ad6c3a9614fd3a4e9ef51117f54d888da01f2bbe" + integrity sha512-pC0uMkhLaHm11ZSJULfOBqV4tIZkx87ZLvbbQYunNixAAvjnC+snJCg0XQXn9VIsttVsbZP/H/ewzgsd5fxKXw== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" prop-types "^15.6.2" - scheduler "^0.13.4" + scheduler "^0.13.6" read-all-stream@^3.0.0: version "3.1.0" @@ -3575,19 +3159,17 @@ readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable string_decoder "~1.1.1" util-deprecate "~1.0.1" -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== +readdirp@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.1.1.tgz#b158123ac343c8b0f31d65680269cc0fc1025db1" + integrity sha512-XXdSXZrQuvqoETj50+JAitxz1UPdt5dupjT6T5nVB+WvjMv2XKYj+s7hPeAVCXvmJrL36O4YYyWlIC3an2ePiQ== dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" + picomatch "^2.0.4" -redoc@^2.0.0-rc.4: - version "2.0.0-rc.4" - resolved "https://registry.yarnpkg.com/redoc/-/redoc-2.0.0-rc.4.tgz#635a26a6600f1546e4d8008cc9674e35eeddb5cb" - integrity sha512-PqS82iNsnkU8750B8bxApjirxznxYZqbU1fMFc6+AEufCsnXTGSg61ZP3N2FKNoyOXA+uEG/cyLu49N5yBTrXg== +redoc@^2.0.0-rc.10: + version "2.0.0-rc.8-1" + resolved "https://registry.yarnpkg.com/redoc/-/redoc-2.0.0-rc.8-1.tgz#53e441f54e79ce25782525d937cd499af3b25e2d" + integrity sha512-/YoCdcl2QtveKz4CTXaqtOfCIaVgZZgcnfUNC5xK7xBl/LxTiNj3tUbgFmrYMLTZGzNdQ9TUJpsa7lXDKcr8Pw== dependencies: classnames "^2.2.6" decko "^1.2.0" @@ -3623,14 +3205,6 @@ regenerator-runtime@^0.12.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg== -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - registry-auth-token@^3.0.1: version "3.3.2" resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.2.tgz#851fd49038eecb586911115af845260eec983f20" @@ -3646,21 +3220,6 @@ registry-url@3.1.0, registry-url@^3.0.3: dependencies: rc "^1.0.1" -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - repeating@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" @@ -3739,10 +3298,10 @@ require-main-filename@^1.0.1: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== resolve@^1.10.0: version "1.10.0" @@ -3759,17 +3318,12 @@ restore-cursor@^1.0.1: exit-hook "^1.0.0" onetime "^1.0.0" -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - retry@^0.10.0: version "0.10.1" resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" integrity sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q= -rimraf@^2.2.8, rimraf@^2.6.1: +rimraf@^2.2.8: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== @@ -3806,27 +3360,15 @@ safe-json-stringify@^1.2.0: resolved "https://registry.yarnpkg.com/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz#356e44bc98f1f93ce45df14bcd7c01cda86e0afd" integrity sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg== -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sax@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -scheduler@^0.13.4: - version "0.13.4" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.4.tgz#8fef05e7a3580c76c0364d2df5e550e4c9140298" - integrity sha512-cvSOlRPxOHs5dAhP9yiS/6IDmVAVxmk33f0CtTJRkmUWcb1Us+t7b1wqdzoC0REw2muC9V5f1L/w5R5uKGaepA== +scheduler@^0.13.6: + version "0.13.6" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.6.tgz#466a4ec332467b31a91b9bf74e5347072e4cd889" + integrity sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" @@ -3843,7 +3385,7 @@ semver-diff@^2.0.0: dependencies: semver "^5.0.3" -"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.5.0: +"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.5.0: version "5.6.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== @@ -3868,26 +3410,6 @@ set-blocking@^2.0.0, set-blocking@~2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= -set-value@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" - integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.1" - to-object-path "^0.3.0" - -set-value@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" - integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - setimmediate@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" @@ -3994,36 +3516,6 @@ slugify@^1.3.4: resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.3.4.tgz#78d2792d7222b55cd9fc81fa018df99af779efeb" integrity sha512-KP0ZYk5hJNBS8/eIjGkFDCzGQIoZ1mnfQRYS5WM3273z+fxGWXeN0fkwf2ebEweydv9tioZIHGZKoF21U07/nw== -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - sntp@1.x.x: version "1.0.9" resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" @@ -4031,23 +3523,7 @@ sntp@1.x.x: dependencies: hoek "2.x.x" -source-map-resolve@^0.5.0: - version "0.5.2" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" - integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== - dependencies: - atob "^2.1.1" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= - -source-map@^0.5.6: +source-map@^0.5.0: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -4096,13 +3572,6 @@ spdx-license-ids@^3.0.0: resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz#81c0ce8f21474756148bbb5f3bfc0f36bf15d76e" integrity sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g== -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - spots@0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/spots/-/spots-0.5.0.tgz#b7aa0f1ac389a5a6d57c21e98da1d53839405fe1" @@ -4135,14 +3604,6 @@ ssri@^5.2.4: dependencies: safe-buffer "^5.1.1" -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - stickyfill@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/stickyfill/-/stickyfill-1.1.1.tgz#39413fee9d025c74a7e59ceecb23784cc0f17f02" @@ -4189,6 +3650,15 @@ string-width@^1.0.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + string_decoder@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" @@ -4222,6 +3692,13 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" @@ -4232,17 +3709,19 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= -styled-components@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-4.1.3.tgz#4472447208e618b57e84deaaeb6acd34a5e0fe9b" - integrity sha512-0quV4KnSfvq5iMtT0RzpMGl/Dg3XIxIxOl9eJpiqiq4SrAmR1l1DLzNpMzoy3DyzdXVDMJS2HzROnXscWA3SEw== +styled-components@^4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-4.3.2.tgz#4ca81918c812d3006f60ac5fdec7d6b64a9509cc" + integrity sha512-NppHzIFavZ3TsIU3R1omtddJ0Bv1+j50AKh3ZWyXHuFvJq1I8qkQ5mZ7uQgD89Y8zJNx2qRo6RqAH1BmoVafHw== dependencies: "@babel/helper-module-imports" "^7.0.0" - "@emotion/is-prop-valid" "^0.7.3" + "@babel/traverse" "^7.0.0" + "@emotion/is-prop-valid" "^0.8.1" "@emotion/unitless" "^0.7.0" babel-plugin-styled-components ">= 1" css-to-react-native "^2.2.2" - memoize-one "^4.0.0" + memoize-one "^5.0.0" + merge-anything "^2.2.4" prop-types "^15.5.4" react-is "^16.6.0" stylis "^3.5.0" @@ -4288,19 +3767,6 @@ swagger2openapi@^5.2.3: yaml "^1.3.1" yargs "^12.0.5" -tar@^4: - version "4.4.8" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" - integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ== - dependencies: - chownr "^1.1.1" - fs-minipass "^1.2.5" - minipass "^2.3.4" - minizlib "^1.1.1" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.2" - term-size@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" @@ -4352,30 +3818,12 @@ to-fast-properties@^2.0.0: resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" + is-number "^7.0.0" tough-cookie@~2.3.0: version "2.3.4" @@ -4392,6 +3840,16 @@ tough-cookie@~2.4.3: psl "^1.1.24" punycode "^1.4.1" +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= + +tslib@^1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" + integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== + tslib@^1.9.3: version "1.9.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" @@ -4427,16 +3885,6 @@ uglify-js@^3.1.4: commander "~2.17.1" source-map "~0.6.1" -union-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" - integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^0.4.3" - unique-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" @@ -4444,14 +3892,6 @@ unique-string@^1.0.0: dependencies: crypto-random-string "^1.0.0" -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - unzip-response@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe" @@ -4462,11 +3902,6 @@ unzip-response@^2.0.1: resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= -upath@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068" - integrity sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q== - update-notifier@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-1.0.2.tgz#27c90519196dc15015be02a34ea52986feab8877" @@ -4502,11 +3937,6 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - url-parse-lax@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" @@ -4522,11 +3952,6 @@ url@^0.11.0: punycode "1.3.2" querystring "0.2.0" -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - user-home@2.0.0, user-home@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" @@ -4597,12 +4022,10 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vm-browserify@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" - integrity sha1-XX6kW7755Kb/ZflUOOCofDV9WnM= - dependencies: - indexof "0.0.1" +vm-browserify@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.0.tgz#bd76d6a23323e2ca8ffa12028dc04559c75f9019" + integrity sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw== wcwidth@>=1.0.1: version "1.0.1" @@ -4667,6 +4090,15 @@ wrap-ansi@^2.0.0: string-width "^1.0.1" strip-ansi "^3.0.1" +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -4707,7 +4139,7 @@ xtend@^4.0.0: resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= -"y18n@^3.2.1 || ^4.0.0": +"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== @@ -4717,11 +4149,6 @@ yallist@^2.1.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= -yallist@^3.0.0, yallist@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" - integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== - yaml@^1.3.1: version "1.4.0" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.4.0.tgz#b729a3ef7e35bdc5ece8f28900e20a9b41510fc3" @@ -4737,6 +4164,14 @@ yargs-parser@^11.1.1: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^13.1.0: + version "13.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" + integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + yargs@^12.0.5: version "12.0.5" resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" @@ -4754,3 +4189,20 @@ yargs@^12.0.5: which-module "^2.0.0" y18n "^3.2.1 || ^4.0.0" yargs-parser "^11.1.1" + +yargs@^13.2.4: + version "13.2.4" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83" + integrity sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + os-locale "^3.1.0" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.0" From 7219344f2fd4ba1857e7702ed4cdc0b9a66ba541 Mon Sep 17 00:00:00 2001 From: Roman Hotsiy Date: Mon, 8 Jul 2019 08:50:23 +0300 Subject: [PATCH 12/35] chore(cli): redoc-cli v0.8.5 --- cli/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/package.json b/cli/package.json index 51954e8d..7112de71 100644 --- a/cli/package.json +++ b/cli/package.json @@ -1,6 +1,6 @@ { "name": "redoc-cli", - "version": "0.8.4", + "version": "0.8.5", "description": "ReDoc's Command Line Interface", "main": "index.js", "bin": "index.js", From afc7e36cf8b224a12c78cd2a1174581d00cc3561 Mon Sep 17 00:00:00 2001 From: Anna Stasiuk Date: Mon, 15 Jul 2019 11:14:48 +0300 Subject: [PATCH 13/35] feat: Add option for skipping quotes in enums `enumSkipQuotes` (#968) * feat: add option for skipping enum quotes * chore: move enumSkipQuotes --- src/components/Fields/EnumValues.tsx | 16 +++++++++++----- src/components/Fields/FieldDetails.tsx | 5 ++++- src/services/RedocNormalizedOptions.ts | 3 +++ 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/components/Fields/EnumValues.tsx b/src/components/Fields/EnumValues.tsx index ca39ddb4..e0e9a81f 100644 --- a/src/components/Fields/EnumValues.tsx +++ b/src/components/Fields/EnumValues.tsx @@ -2,6 +2,7 @@ import * as React from 'react'; import { ExampleValue, FieldLabel } from '../../common-elements/fields'; import { l } from '../../services/Labels'; +import { OptionsContext } from '../OptionsProvider'; export interface EnumValuesProps { values: string[]; @@ -9,8 +10,10 @@ export interface EnumValuesProps { } export class EnumValues extends React.PureComponent { + static contextType = OptionsContext; render() { const { values, type } = this.props; + const { enumSkipQuotes } = this.context; if (!values.length) { return null; } @@ -21,11 +24,14 @@ export class EnumValues extends React.PureComponent { {type === 'array' ? l('enumArray') : ''}{' '} {values.length === 1 ? l('enumSingleValue') : l('enum')}: - {values.map((value, idx) => ( - - {JSON.stringify(value)}{' '} - - ))} + {values.map((value, idx) => { + const exampleValue = enumSkipQuotes ? value : JSON.stringify(value); + return ( + + {exampleValue} + + ); + })} ); } diff --git a/src/components/Fields/FieldDetails.tsx b/src/components/Fields/FieldDetails.tsx index 87bb2363..65ce160e 100644 --- a/src/components/Fields/FieldDetails.tsx +++ b/src/components/Fields/FieldDetails.tsx @@ -21,10 +21,13 @@ import { FieldDetail } from './FieldDetail'; import { Badge } from '../../common-elements/'; import { l } from '../../services/Labels'; +import { OptionsContext } from '../OptionsProvider'; export class FieldDetails extends React.PureComponent { + static contextType = OptionsContext; render() { const { showExamples, field, renderDiscriminatorSwitch } = this.props; + const { enumSkipQuotes } = this.context; const { schema, description, example, deprecated } = field; @@ -65,7 +68,7 @@ export class FieldDetails extends React.PureComponent { {l('deprecated')} )} - + {!renderDiscriminatorSwitch && }{' '} {exampleField} {} diff --git a/src/services/RedocNormalizedOptions.ts b/src/services/RedocNormalizedOptions.ts index 7c893f1b..9c7e8452 100644 --- a/src/services/RedocNormalizedOptions.ts +++ b/src/services/RedocNormalizedOptions.ts @@ -28,6 +28,7 @@ export interface RedocRawOptions { allowedMdComponents?: Dict; labels?: LabelsConfigRaw; + enumSkipQuotes?: boolean | string; } function argValueToBoolean(val?: string | boolean): boolean { @@ -125,6 +126,7 @@ export class RedocNormalizedOptions { onlyRequiredInSamples: boolean; showExtensions: boolean | string[]; hideSingleRequestSampleTab: boolean; + enumSkipQuotes: boolean; /* tslint:disable-next-line */ unstable_ignoreMimeParameters: boolean; @@ -156,6 +158,7 @@ export class RedocNormalizedOptions { this.onlyRequiredInSamples = argValueToBoolean(raw.onlyRequiredInSamples); this.showExtensions = RedocNormalizedOptions.normalizeShowExtensions(raw.showExtensions); this.hideSingleRequestSampleTab = argValueToBoolean(raw.hideSingleRequestSampleTab); + this.enumSkipQuotes = argValueToBoolean(raw.enumSkipQuotes); this.unstable_ignoreMimeParameters = argValueToBoolean(raw.unstable_ignoreMimeParameters); From 7db7d4fc914691ed89f5c81289c2af2f69ff20d6 Mon Sep 17 00:00:00 2001 From: Anna Stasiuk Date: Mon, 29 Jul 2019 13:08:17 +0300 Subject: [PATCH 14/35] chore: refactor expandServerVariables function (#978) --- src/components/Endpoint/Endpoint.tsx | 35 +++++++++++++++------------- src/utils/openapi.ts | 7 +++--- 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/src/components/Endpoint/Endpoint.tsx b/src/components/Endpoint/Endpoint.tsx index 00d7bda0..4fd937c0 100644 --- a/src/components/Endpoint/Endpoint.tsx +++ b/src/components/Endpoint/Endpoint.tsx @@ -5,7 +5,7 @@ import { Markdown } from '../Markdown/Markdown'; import { OptionsContext } from '../OptionsProvider'; import { SelectOnClick } from '../SelectOnClick/SelectOnClick'; -import { getBasePath } from '../../utils'; +import { expandDefaultServerVariables, getBasePath } from '../../utils'; import { EndpointInfo, HttpVerb, @@ -60,21 +60,24 @@ export class Endpoint extends React.Component { /> - {operation.servers.map(server => ( - - - - - - {hideHostname || options.hideHostname - ? getBasePath(server.url) - : server.url} - - {operation.path} - - - - ))} + {operation.servers.map(server => { + const normalizedUrl = expandDefaultServerVariables(server.url, server.variables); + return ( + + + + + + {hideHostname || options.hideHostname + ? getBasePath(normalizedUrl) + : normalizedUrl} + + {operation.path} + + + + ); + })} )} diff --git a/src/utils/openapi.ts b/src/utils/openapi.ts index 143e7255..294c8f32 100644 --- a/src/utils/openapi.ts +++ b/src/utils/openapi.ts @@ -453,7 +453,7 @@ export function mergeSimilarMediaTypes(types: Dict): Dict (variables[name] && variables[name].default) || match, @@ -482,15 +482,14 @@ export function normalizeServers( ]; } - function normalizeUrl(url: string, variables: object | undefined): string { - url = expandVariables(url, variables); + function normalizeUrl(url: string): string { return resolveUrl(baseUrl, url); } return servers.map(server => { return { ...server, - url: normalizeUrl(server.url, server.variables), + url: normalizeUrl(server.url), description: server.description || '', }; }); From 43597244345c3d2989563944fb06703cd9805305 Mon Sep 17 00:00:00 2001 From: Dimitar Nanov Date: Fri, 19 Oct 2018 19:53:19 +0300 Subject: [PATCH 15/35] add section menus for tags and object description --- demo/openapi.yaml | 23 ++++++- .../ObjectDescription/ObjectDescription.tsx | 64 +++++++++++++++++++ src/services/AppStore.ts | 14 +++- src/services/MenuBuilder.ts | 16 +++-- src/services/models/Group.model.ts | 7 ++ src/utils/openapi.ts | 1 + 6 files changed, 118 insertions(+), 7 deletions(-) create mode 100644 src/components/ObjectDescription/ObjectDescription.tsx diff --git a/demo/openapi.yaml b/demo/openapi.yaml index 5c10ab88..f36f5b79 100644 --- a/demo/openapi.yaml +++ b/demo/openapi.yaml @@ -58,9 +58,21 @@ externalDocs: url: 'https://github.com/Rebilly/generator-openapi-repo' tags: - name: pet - description: Everything about your Pets + description: | + Everything about your Pets + + ## The Pet Object + + + - name: store - description: Access to Petstore orders + description: | + Access to Petstore orders + + ## The Order Object + + + - name: user description: Operations about user x-tagGroups: @@ -926,3 +938,10 @@ components: type: apiKey name: api_key in: header + examples: + Order: + value: + quantity: 1, + shipDate: 2018-10-19T16:46:45Z, + status: placed, + complete: false diff --git a/src/components/ObjectDescription/ObjectDescription.tsx b/src/components/ObjectDescription/ObjectDescription.tsx new file mode 100644 index 00000000..7a14b6de --- /dev/null +++ b/src/components/ObjectDescription/ObjectDescription.tsx @@ -0,0 +1,64 @@ +import * as React from 'react'; +import { Schema } from '../Schema'; + +import { MiddlePanel, Row, Section, DarkRightPanel } from '../../common-elements'; +import { OpenAPIParser, RedocNormalizedOptions, MediaTypeModel } from '../../services'; +import { MediaTypeSamples } from '../PayloadSamples/MediaTypeSamples'; +import { OpenAPIMediaType } from '../../types'; + +export interface ObjectDescriptionProps { + schemaRef: string; + examplesRef?: string; + parser: OpenAPIParser; + options: RedocNormalizedOptions; +} + +export class ObjectDescription extends React.PureComponent { + private mediaModel: MediaTypeModel; + + constructor(props: ObjectDescriptionProps) { + super(props); + this.mediaModel = ObjectDescription.getMediaModel(this.props); + } + + render() { + return ( +
+ + + + + + + + +
+ ); + } + + private static getMediaType(schemaRef, examplesRef): OpenAPIMediaType { + if (!schemaRef) return {}; + + const info: OpenAPIMediaType = { + schema: { $ref: schemaRef }, + }; + + if (examplesRef) info.examples = { object: { $ref: examplesRef } }; + return info; + } + + private static getMediaModel({ + schemaRef, + examplesRef, + parser, + options, + }: ObjectDescriptionProps) { + return new MediaTypeModel( + parser, + 'json', + false, + ObjectDescription.getMediaType(schemaRef, examplesRef), + options, + ); + } +} diff --git a/src/services/AppStore.ts b/src/services/AppStore.ts index 75fb64d9..2f004454 100644 --- a/src/services/AppStore.ts +++ b/src/services/AppStore.ts @@ -10,8 +10,12 @@ import { RedocNormalizedOptions, RedocRawOptions } from './RedocNormalizedOption import { ScrollService } from './ScrollService'; import { SearchStore } from './SearchStore'; +import { ObjectDescription } from '../components/ObjectDescription/ObjectDescription'; import { SecurityDefs } from '../components/SecuritySchemes/SecuritySchemes'; -import { SECURITY_DEFINITIONS_COMPONENT_NAME } from '../utils/openapi'; +import { + SECURITY_DEFINITIONS_COMPONENT_NAME, + OBJECT_DEFINTION_COMPONENT_NAME, +} from '../utils/openapi'; export interface StoreState { menu: { @@ -151,5 +155,13 @@ const DEFAULT_OPTIONS: RedocRawOptions = { securitySchemes: store.spec.securitySchemes, }), }, + [OBJECT_DEFINTION_COMPONENT_NAME]: { + component: ObjectDescription, + propsSelector: (store: AppStore) => ({ + securitySchemes: store.spec.securitySchemes, + parser: store.spec.parser, + options: store.options, + }), + }, }, }; diff --git a/src/services/MenuBuilder.ts b/src/services/MenuBuilder.ts index 78876102..99543f92 100644 --- a/src/services/MenuBuilder.ts +++ b/src/services/MenuBuilder.ts @@ -42,7 +42,7 @@ export class MenuBuilder { const items: ContentItemModel[] = []; const tagsMap = MenuBuilder.getTagsWithOperations(spec); - items.push(...MenuBuilder.addMarkdownItems(spec.info.description || '', options)); + items.push(...MenuBuilder.addMarkdownItems(spec.info.description || '', undefined, options)); if (spec['x-tagGroups'] && spec['x-tagGroups'].length > 0) { items.push( ...MenuBuilder.getTagGroupsItems(parser, undefined, spec['x-tagGroups'], tagsMap, options), @@ -59,6 +59,7 @@ export class MenuBuilder { */ static addMarkdownItems( description: string, + parent: GroupModel | undefined, options: RedocNormalizedOptions, ): ContentItemModel[] { const renderer = new MarkdownRenderer(options); @@ -82,7 +83,7 @@ export class MenuBuilder { return group; }); - return mapHeadingsDeep(undefined, headings); + return mapHeadingsDeep(parent, headings, 1); } /** @@ -144,15 +145,22 @@ export class MenuBuilder { } const item = new GroupModel('tag', tag, parent); item.depth = GROUP_DEPTH + 1; - item.items = this.getOperationsItems(parser, item, tag, item.depth + 1, options); // don't put empty tag into content, instead put its operations if (tag.name === '') { - const items = this.getOperationsItems(parser, undefined, tag, item.depth + 1, options); + const items = [ + ...MenuBuilder.addMarkdownItems(tag.description || '', item, options), + ...this.getOperationsItems(parser, undefined, tag, item.depth + 1, options), + ]; res.push(...items); continue; } + item.items = [ + ...MenuBuilder.addMarkdownItems(tag.description || '', item, options), + ...this.getOperationsItems(parser, item, tag, item.depth + 1, options), + ]; + res.push(item); } return res; diff --git a/src/services/models/Group.model.ts b/src/services/models/Group.model.ts index c1aaa246..bb82e18a 100644 --- a/src/services/models/Group.model.ts +++ b/src/services/models/Group.model.ts @@ -40,7 +40,14 @@ export class GroupModel implements IMenuItem { this.type = type; this.name = tagOrGroup['x-displayName'] || tagOrGroup.name; this.level = (tagOrGroup as MarkdownHeading).level || 1; + + // remove sections from markdown, same as in ApiInfo this.description = tagOrGroup.description || ''; + const firstHeadingLinePos = this.description.search(/^##?\s+/m); + if (firstHeadingLinePos > -1) { + this.description = this.description.substring(0, firstHeadingLinePos); + } + this.parent = parent; this.externalDocs = (tagOrGroup as OpenAPITag).externalDocs; diff --git a/src/utils/openapi.ts b/src/utils/openapi.ts index 294c8f32..4d09252f 100644 --- a/src/utils/openapi.ts +++ b/src/utils/openapi.ts @@ -495,6 +495,7 @@ export function normalizeServers( }); } +export const OBJECT_DEFINTION_COMPONENT_NAME = 'object-description'; export const SECURITY_DEFINITIONS_COMPONENT_NAME = 'security-definitions'; export let SECURITY_SCHEMES_SECTION_PREFIX = 'section/Authentication/'; export function setSecuritySchemePrefix(prefix: string) { From ffb70d2db2f5bb312da25adef5f347f52ca67c1b Mon Sep 17 00:00:00 2001 From: Dimitar Nanov Date: Fri, 19 Oct 2018 20:04:35 +0300 Subject: [PATCH 16/35] bundle and test --- .../ObjectDescription/ObjectDescription.tsx | 63 ++++++++++--------- src/services/AppStore.ts | 2 +- src/services/MenuBuilder.ts | 4 +- 3 files changed, 37 insertions(+), 32 deletions(-) diff --git a/src/components/ObjectDescription/ObjectDescription.tsx b/src/components/ObjectDescription/ObjectDescription.tsx index 7a14b6de..12fe0a8d 100644 --- a/src/components/ObjectDescription/ObjectDescription.tsx +++ b/src/components/ObjectDescription/ObjectDescription.tsx @@ -1,10 +1,10 @@ import * as React from 'react'; import { Schema } from '../Schema'; -import { MiddlePanel, Row, Section, DarkRightPanel } from '../../common-elements'; -import { OpenAPIParser, RedocNormalizedOptions, MediaTypeModel } from '../../services'; -import { MediaTypeSamples } from '../PayloadSamples/MediaTypeSamples'; +import { DarkRightPanel, MiddlePanel, Row, Section } from '../../common-elements'; +import { MediaTypeModel, OpenAPIParser, RedocNormalizedOptions } from '../../services'; import { OpenAPIMediaType } from '../../types'; +import { MediaTypeSamples } from '../PayloadSamples/MediaTypeSamples'; export interface ObjectDescriptionProps { schemaRef: string; @@ -14,6 +14,37 @@ export interface ObjectDescriptionProps { } export class ObjectDescription extends React.PureComponent { + private static getMediaType(schemaRef, examplesRef): OpenAPIMediaType { + if (!schemaRef) { + return {}; + } + + const info: OpenAPIMediaType = { + schema: { $ref: schemaRef }, + }; + + if (examplesRef) { + info.examples = { object: { $ref: examplesRef } }; + } + + return info; + } + + private static getMediaModel({ + schemaRef, + examplesRef, + parser, + options, + }: ObjectDescriptionProps) { + return new MediaTypeModel( + parser, + 'json', + false, + ObjectDescription.getMediaType(schemaRef, examplesRef), + options, + ); + } + private mediaModel: MediaTypeModel; constructor(props: ObjectDescriptionProps) { @@ -35,30 +66,4 @@ export class ObjectDescription extends React.PureComponent ); } - - private static getMediaType(schemaRef, examplesRef): OpenAPIMediaType { - if (!schemaRef) return {}; - - const info: OpenAPIMediaType = { - schema: { $ref: schemaRef }, - }; - - if (examplesRef) info.examples = { object: { $ref: examplesRef } }; - return info; - } - - private static getMediaModel({ - schemaRef, - examplesRef, - parser, - options, - }: ObjectDescriptionProps) { - return new MediaTypeModel( - parser, - 'json', - false, - ObjectDescription.getMediaType(schemaRef, examplesRef), - options, - ); - } } diff --git a/src/services/AppStore.ts b/src/services/AppStore.ts index 2f004454..d4044af5 100644 --- a/src/services/AppStore.ts +++ b/src/services/AppStore.ts @@ -13,8 +13,8 @@ import { SearchStore } from './SearchStore'; import { ObjectDescription } from '../components/ObjectDescription/ObjectDescription'; import { SecurityDefs } from '../components/SecuritySchemes/SecuritySchemes'; import { - SECURITY_DEFINITIONS_COMPONENT_NAME, OBJECT_DEFINTION_COMPONENT_NAME, + SECURITY_DEFINITIONS_COMPONENT_NAME, } from '../utils/openapi'; export interface StoreState { diff --git a/src/services/MenuBuilder.ts b/src/services/MenuBuilder.ts index 99543f92..6c17e51a 100644 --- a/src/services/MenuBuilder.ts +++ b/src/services/MenuBuilder.ts @@ -59,7 +59,7 @@ export class MenuBuilder { */ static addMarkdownItems( description: string, - parent: GroupModel | undefined, + grandparent: GroupModel | undefined, options: RedocNormalizedOptions, ): ContentItemModel[] { const renderer = new MarkdownRenderer(options); @@ -83,7 +83,7 @@ export class MenuBuilder { return group; }); - return mapHeadingsDeep(parent, headings, 1); + return mapHeadingsDeep(grandparent, headings, 1); } /** From 92ada2b8956d34ae8551b83a2909f096f07d252a Mon Sep 17 00:00:00 2001 From: Dimitar Nanov Date: Fri, 19 Oct 2018 20:21:27 +0300 Subject: [PATCH 17/35] add depth calculation --- src/services/MenuBuilder.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/services/MenuBuilder.ts b/src/services/MenuBuilder.ts index 6c17e51a..e1c74da4 100644 --- a/src/services/MenuBuilder.ts +++ b/src/services/MenuBuilder.ts @@ -42,7 +42,7 @@ export class MenuBuilder { const items: ContentItemModel[] = []; const tagsMap = MenuBuilder.getTagsWithOperations(spec); - items.push(...MenuBuilder.addMarkdownItems(spec.info.description || '', undefined, options)); + items.push(...MenuBuilder.addMarkdownItems(spec.info.description || '', undefined, 1, options)); if (spec['x-tagGroups'] && spec['x-tagGroups'].length > 0) { items.push( ...MenuBuilder.getTagGroupsItems(parser, undefined, spec['x-tagGroups'], tagsMap, options), @@ -60,6 +60,7 @@ export class MenuBuilder { static addMarkdownItems( description: string, grandparent: GroupModel | undefined, + initialDepth: number, options: RedocNormalizedOptions, ): ContentItemModel[] { const renderer = new MarkdownRenderer(options); @@ -83,7 +84,7 @@ export class MenuBuilder { return group; }); - return mapHeadingsDeep(grandparent, headings, 1); + return mapHeadingsDeep(grandparent, headings, initialDepth); } /** @@ -149,7 +150,7 @@ export class MenuBuilder { // don't put empty tag into content, instead put its operations if (tag.name === '') { const items = [ - ...MenuBuilder.addMarkdownItems(tag.description || '', item, options), + ...MenuBuilder.addMarkdownItems(tag.description || '', item, item.depth + 1, options), ...this.getOperationsItems(parser, undefined, tag, item.depth + 1, options), ]; res.push(...items); @@ -157,7 +158,7 @@ export class MenuBuilder { } item.items = [ - ...MenuBuilder.addMarkdownItems(tag.description || '', item, options), + ...MenuBuilder.addMarkdownItems(tag.description || '', item, item.depth + 1, options), ...this.getOperationsItems(parser, item, tag, item.depth + 1, options), ]; From e9f8bdb10ca4e5148b06102b4f485c38261e99c0 Mon Sep 17 00:00:00 2001 From: Dimitar Nanov Date: Fri, 19 Oct 2018 20:27:11 +0300 Subject: [PATCH 18/35] add object descriptions to test --- e2e/integration/menu.e2e.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e/integration/menu.e2e.ts b/e2e/integration/menu.e2e.ts index 5111de10..8eb70655 100644 --- a/e2e/integration/menu.e2e.ts +++ b/e2e/integration/menu.e2e.ts @@ -6,7 +6,7 @@ describe('Menu', () => { it('should have valid items count', () => { cy.get('.menu-content') .find('li') - .should('have.length', 6 + (2 + 8 + 4) + (1 + 8)); + .should('have.length', 6 + (2 + 8 + 1 + 4 + 1) + (1 + 8)); }); it('should sync active menu items while scroll', () => { From 2f34b8ebaf38d12dd00293336d53e13dfbeea1c0 Mon Sep 17 00:00:00 2001 From: Dimitar Nanov Date: Sun, 21 Oct 2018 10:43:35 +0300 Subject: [PATCH 19/35] enable operations spacing for operations as well --- src/components/SideMenu/styled.elements.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/SideMenu/styled.elements.ts b/src/components/SideMenu/styled.elements.ts index 68d543ed..c54b399b 100644 --- a/src/components/SideMenu/styled.elements.ts +++ b/src/components/SideMenu/styled.elements.ts @@ -129,8 +129,7 @@ export const MenuItemLabel = styled.label.attrs((props: MenuItemLabelType) => ({ color: ${props => (props.active ? props.theme.colors.primary.main : props.theme.menu.textColor)}; margin: 0; padding: 12.5px ${props => props.theme.spacing.unit * 4}px; - ${({ depth, type, theme }) => - (type === 'section' && depth > 1 && 'padding-left: ' + theme.spacing.unit * 8 + 'px;') || ''} + ${({ depth, theme }) => (depth > 1 && 'padding-left: ' + theme.spacing.unit * 8 + 'px;') || ''} display: flex; justify-content: space-between; font-family: ${props => props.theme.typography.headings.fontFamily}; From 5addc21cd87552692b69ba3cf57ff26935d2aad1 Mon Sep 17 00:00:00 2001 From: Dimitar Nanov Date: Sun, 21 Oct 2018 11:04:42 +0300 Subject: [PATCH 20/35] bring back section rule, as this could be solved better --- src/components/SideMenu/styled.elements.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/SideMenu/styled.elements.ts b/src/components/SideMenu/styled.elements.ts index c54b399b..68d543ed 100644 --- a/src/components/SideMenu/styled.elements.ts +++ b/src/components/SideMenu/styled.elements.ts @@ -129,7 +129,8 @@ export const MenuItemLabel = styled.label.attrs((props: MenuItemLabelType) => ({ color: ${props => (props.active ? props.theme.colors.primary.main : props.theme.menu.textColor)}; margin: 0; padding: 12.5px ${props => props.theme.spacing.unit * 4}px; - ${({ depth, theme }) => (depth > 1 && 'padding-left: ' + theme.spacing.unit * 8 + 'px;') || ''} + ${({ depth, type, theme }) => + (type === 'section' && depth > 1 && 'padding-left: ' + theme.spacing.unit * 8 + 'px;') || ''} display: flex; justify-content: space-between; font-family: ${props => props.theme.typography.headings.fontFamily}; From a8f70377abea58e3dae8f0da012b6a1eabe99b10 Mon Sep 17 00:00:00 2001 From: Dimitar Nanov Date: Wed, 14 Nov 2018 16:12:42 +0200 Subject: [PATCH 21/35] update read/writeonly filter rule to be able to filter both --- src/components/Schema/ObjectSchema.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/Schema/ObjectSchema.tsx b/src/components/Schema/ObjectSchema.tsx index f8db1401..3bad4e47 100644 --- a/src/components/Schema/ObjectSchema.tsx +++ b/src/components/Schema/ObjectSchema.tsx @@ -34,9 +34,9 @@ export class ObjectSchema extends React.Component { const filteredFields = needFilter ? fields.filter(item => { - return ( - (this.props.skipReadOnly && !item.schema.readOnly) || - (this.props.skipWriteOnly && !item.schema.writeOnly) + return !( + (this.props.skipReadOnly && item.schema.readOnly) || + (this.props.skipWriteOnly && item.schema.writeOnly) ); }) : fields; From 6935b169640d4c96d0cfbc568570967d4f8cc021 Mon Sep 17 00:00:00 2001 From: Dimitar Nanov Date: Wed, 14 Nov 2018 16:13:07 +0200 Subject: [PATCH 22/35] add showReadOnly and showWriteOnly options to object-description --- .../ObjectDescription/ObjectDescription.tsx | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/components/ObjectDescription/ObjectDescription.tsx b/src/components/ObjectDescription/ObjectDescription.tsx index 12fe0a8d..5d6d1a70 100644 --- a/src/components/ObjectDescription/ObjectDescription.tsx +++ b/src/components/ObjectDescription/ObjectDescription.tsx @@ -9,6 +9,8 @@ import { MediaTypeSamples } from '../PayloadSamples/MediaTypeSamples'; export interface ObjectDescriptionProps { schemaRef: string; examplesRef?: string; + showReadOnly?: boolean; + showWriteOnly?: boolean; parser: OpenAPIParser; options: RedocNormalizedOptions; } @@ -53,11 +55,18 @@ export class ObjectDescription extends React.PureComponent - + From 51b5d04fcc21a29e928db4ec3c0406866ec32776 Mon Sep 17 00:00:00 2001 From: Dimitar Nanov Date: Wed, 14 Nov 2018 16:13:18 +0200 Subject: [PATCH 23/35] update demo to show use cases --- demo/openapi.yaml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/demo/openapi.yaml b/demo/openapi.yaml index f36f5b79..07ab5349 100644 --- a/demo/openapi.yaml +++ b/demo/openapi.yaml @@ -75,6 +75,14 @@ tags: - name: user description: Operations about user + - name: pet_model + x-displayName: The Pet Model + description: | + + - name: store_model + x-displayName: The Order Model + description: | + x-tagGroups: - name: General tags: @@ -83,6 +91,10 @@ x-tagGroups: - name: User Management tags: - user + - name: Models + tags: + - pet_model + - store_model paths: /pet: parameters: @@ -766,6 +778,11 @@ components: description: Indicates whenever order was completed or not type: boolean default: false + readOnly: true + rqeuestId: + description: Unique Request Id + type: string + writeOnly: true xml: name: Order Pet: From 413e1fad5b917ef7d25d121207652b669f100a2f Mon Sep 17 00:00:00 2001 From: Dimitar Nanov Date: Wed, 14 Nov 2018 16:15:50 +0200 Subject: [PATCH 24/35] remove forgotten console.log --- src/components/ObjectDescription/ObjectDescription.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/ObjectDescription/ObjectDescription.tsx b/src/components/ObjectDescription/ObjectDescription.tsx index 5d6d1a70..0c66a080 100644 --- a/src/components/ObjectDescription/ObjectDescription.tsx +++ b/src/components/ObjectDescription/ObjectDescription.tsx @@ -56,7 +56,6 @@ export class ObjectDescription extends React.PureComponent From e4d8fa23d7399d7d4a7d03333d966375c5251cac Mon Sep 17 00:00:00 2001 From: Dimitar Nanov Date: Wed, 14 Nov 2018 16:27:54 +0200 Subject: [PATCH 25/35] adjust demo test with newly added items --- e2e/integration/menu.e2e.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e/integration/menu.e2e.ts b/e2e/integration/menu.e2e.ts index 8eb70655..4a38a401 100644 --- a/e2e/integration/menu.e2e.ts +++ b/e2e/integration/menu.e2e.ts @@ -6,7 +6,7 @@ describe('Menu', () => { it('should have valid items count', () => { cy.get('.menu-content') .find('li') - .should('have.length', 6 + (2 + 8 + 1 + 4 + 1) + (1 + 8)); + .should('have.length', 6 + (2 + 8 + 1 + 4 + 1 + 2) + (1 + 8)); }); it('should sync active menu items while scroll', () => { From 8c27d31396d023dacd29a3d03789a46a2dc652fc Mon Sep 17 00:00:00 2001 From: Dimitar Nanov Date: Wed, 14 Nov 2018 16:33:53 +0200 Subject: [PATCH 26/35] do the right match with the menu items :/ --- e2e/integration/menu.e2e.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e/integration/menu.e2e.ts b/e2e/integration/menu.e2e.ts index 4a38a401..b0a7b980 100644 --- a/e2e/integration/menu.e2e.ts +++ b/e2e/integration/menu.e2e.ts @@ -6,7 +6,7 @@ describe('Menu', () => { it('should have valid items count', () => { cy.get('.menu-content') .find('li') - .should('have.length', 6 + (2 + 8 + 1 + 4 + 1 + 2) + (1 + 8)); + .should('have.length', 6 + (2 + 8 + 1 + 4 + 1 + 1 + 2) + (1 + 8)); }); it('should sync active menu items while scroll', () => { From 00a0abf4a4a3d4e4d8ab21a51e4639978a01aed2 Mon Sep 17 00:00:00 2001 From: Roman Hotsiy Date: Mon, 29 Jul 2019 13:12:12 +0300 Subject: [PATCH 27/35] chore: refactor + jsxify md tags --- demo/openapi.yaml | 6 +- .../ObjectDescription/ObjectDescription.tsx | 60 +++++++++++-------- src/services/AppStore.ts | 12 +++- src/services/MenuBuilder.ts | 8 +-- src/utils/openapi.ts | 4 +- 5 files changed, 54 insertions(+), 36 deletions(-) diff --git a/demo/openapi.yaml b/demo/openapi.yaml index 07ab5349..16440bd2 100644 --- a/demo/openapi.yaml +++ b/demo/openapi.yaml @@ -38,7 +38,7 @@ info: OAuth2 - an open protocol to allow secure authorization in a simple and standard method from web, mobile and desktop applications. - + version: 1.0.0 title: Swagger Petstore @@ -78,11 +78,11 @@ tags: - name: pet_model x-displayName: The Pet Model description: | - + - name: store_model x-displayName: The Order Model description: | - + x-tagGroups: - name: General tags: diff --git a/src/components/ObjectDescription/ObjectDescription.tsx b/src/components/ObjectDescription/ObjectDescription.tsx index 0c66a080..130bf94e 100644 --- a/src/components/ObjectDescription/ObjectDescription.tsx +++ b/src/components/ObjectDescription/ObjectDescription.tsx @@ -1,14 +1,15 @@ import * as React from 'react'; -import { Schema } from '../Schema'; import { DarkRightPanel, MiddlePanel, Row, Section } from '../../common-elements'; import { MediaTypeModel, OpenAPIParser, RedocNormalizedOptions } from '../../services'; +import styled from '../../styled-components'; import { OpenAPIMediaType } from '../../types'; import { MediaTypeSamples } from '../PayloadSamples/MediaTypeSamples'; +import { Schema } from '../Schema'; export interface ObjectDescriptionProps { schemaRef: string; - examplesRef?: string; + exampleRef?: string; showReadOnly?: boolean; showWriteOnly?: boolean; parser: OpenAPIParser; @@ -16,7 +17,7 @@ export interface ObjectDescriptionProps { } export class ObjectDescription extends React.PureComponent { - private static getMediaType(schemaRef, examplesRef): OpenAPIMediaType { + private static getMediaType(schemaRef: string, exampleRef?: string): OpenAPIMediaType { if (!schemaRef) { return {}; } @@ -25,33 +26,28 @@ export class ObjectDescription extends React.PureComponent - + + +
); } } + +const MediaSamplesWrap = styled.div` + background: ${({ theme }) => theme.codeSample.backgroundColor}; + & > div, + & > pre { + padding: ${props => props.theme.spacing.unit * 4}px; + margin: 0; + } + + & > div > pre { + padding: 0; + } +`; diff --git a/src/services/AppStore.ts b/src/services/AppStore.ts index d4044af5..1f3e0a50 100644 --- a/src/services/AppStore.ts +++ b/src/services/AppStore.ts @@ -13,8 +13,9 @@ import { SearchStore } from './SearchStore'; import { ObjectDescription } from '../components/ObjectDescription/ObjectDescription'; import { SecurityDefs } from '../components/SecuritySchemes/SecuritySchemes'; import { - OBJECT_DEFINTION_COMPONENT_NAME, + OBJECT_DEFINTION_JSX_NAME, SECURITY_DEFINITIONS_COMPONENT_NAME, + SECURITY_DEFINITIONS_JSX_NAME, } from '../utils/openapi'; export interface StoreState { @@ -155,10 +156,15 @@ const DEFAULT_OPTIONS: RedocRawOptions = { securitySchemes: store.spec.securitySchemes, }), }, - [OBJECT_DEFINTION_COMPONENT_NAME]: { - component: ObjectDescription, + [SECURITY_DEFINITIONS_JSX_NAME]: { + component: SecurityDefs, propsSelector: (store: AppStore) => ({ securitySchemes: store.spec.securitySchemes, + }), + }, + [OBJECT_DEFINTION_JSX_NAME]: { + component: ObjectDescription, + propsSelector: (store: AppStore) => ({ parser: store.spec.parser, options: store.options, }), diff --git a/src/services/MenuBuilder.ts b/src/services/MenuBuilder.ts index e1c74da4..1987ba10 100644 --- a/src/services/MenuBuilder.ts +++ b/src/services/MenuBuilder.ts @@ -59,16 +59,16 @@ export class MenuBuilder { */ static addMarkdownItems( description: string, - grandparent: GroupModel | undefined, + parent: GroupModel | undefined, initialDepth: number, options: RedocNormalizedOptions, ): ContentItemModel[] { const renderer = new MarkdownRenderer(options); const headings = renderer.extractHeadings(description || ''); - const mapHeadingsDeep = (parent, items, depth = 1) => + const mapHeadingsDeep = (_parent, items, depth = 1) => items.map(heading => { - const group = new GroupModel('section', heading, parent); + const group = new GroupModel('section', heading, _parent); group.depth = depth; if (heading.items) { group.items = mapHeadingsDeep(group, heading.items, depth + 1); @@ -84,7 +84,7 @@ export class MenuBuilder { return group; }); - return mapHeadingsDeep(grandparent, headings, initialDepth); + return mapHeadingsDeep(parent, headings, initialDepth); } /** diff --git a/src/utils/openapi.ts b/src/utils/openapi.ts index 4d09252f..6b667ee9 100644 --- a/src/utils/openapi.ts +++ b/src/utils/openapi.ts @@ -495,8 +495,10 @@ export function normalizeServers( }); } -export const OBJECT_DEFINTION_COMPONENT_NAME = 'object-description'; export const SECURITY_DEFINITIONS_COMPONENT_NAME = 'security-definitions'; +export const SECURITY_DEFINITIONS_JSX_NAME = 'SecurityDefinitions'; +export const OBJECT_DEFINTION_JSX_NAME = 'ObjectDescription'; + export let SECURITY_SCHEMES_SECTION_PREFIX = 'section/Authentication/'; export function setSecuritySchemePrefix(prefix: string) { SECURITY_SCHEMES_SECTION_PREFIX = prefix; From 7883fad3338aef7025c92af223c8735630fbcafa Mon Sep 17 00:00:00 2001 From: Roman Hotsiy Date: Mon, 29 Jul 2019 13:12:30 +0300 Subject: [PATCH 28/35] chore: simplify demo spec --- demo/openapi.yaml | 16 ++-------------- e2e/integration/menu.e2e.ts | 2 +- 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/demo/openapi.yaml b/demo/openapi.yaml index 16440bd2..3a40a48c 100644 --- a/demo/openapi.yaml +++ b/demo/openapi.yaml @@ -58,21 +58,9 @@ externalDocs: url: 'https://github.com/Rebilly/generator-openapi-repo' tags: - name: pet - description: | - Everything about your Pets - - ## The Pet Object - - - + description: Everything about your Pets - name: store - description: | - Access to Petstore orders - - ## The Order Object - - - + description: Access to Petstore orders - name: user description: Operations about user - name: pet_model diff --git a/e2e/integration/menu.e2e.ts b/e2e/integration/menu.e2e.ts index b0a7b980..511baca7 100644 --- a/e2e/integration/menu.e2e.ts +++ b/e2e/integration/menu.e2e.ts @@ -6,7 +6,7 @@ describe('Menu', () => { it('should have valid items count', () => { cy.get('.menu-content') .find('li') - .should('have.length', 6 + (2 + 8 + 1 + 4 + 1 + 1 + 2) + (1 + 8)); + .should('have.length', 6 + (2 + 8 + 1 + 4 + 2) + (1 + 8)); }); it('should sync active menu items while scroll', () => { From 7c06735c6d0a4072be6143db97122e6818a054ef Mon Sep 17 00:00:00 2001 From: Roman Hotsiy Date: Mon, 29 Jul 2019 14:39:21 +0300 Subject: [PATCH 29/35] chore: fix test --- src/utils/__tests__/openapi.test.ts | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/utils/__tests__/openapi.test.ts b/src/utils/__tests__/openapi.test.ts index 162c8776..6000d752 100644 --- a/src/utils/__tests__/openapi.test.ts +++ b/src/utils/__tests__/openapi.test.ts @@ -13,6 +13,7 @@ import { import { OpenAPIParser } from '../../services'; import { OpenAPIParameter, OpenAPIParameterLocation, OpenAPIParameterStyle } from '../../types'; +import { expandDefaultServerVariables } from '../openapi'; describe('Utils', () => { describe('openapi getStatusCode', () => { @@ -297,11 +298,8 @@ describe('Utils', () => { it('should expand variables', () => { const servers = normalizeServers('', [ { - url: '{protocol}{host}{basePath}', + url: 'http://{host}{basePath}', variables: { - protocol: { - default: 'http://', - }, host: { default: '127.0.0.1', }, @@ -319,9 +317,15 @@ describe('Utils', () => { }, ]); - expect(servers[0].url).toEqual('http://127.0.0.1/path/to/endpoint'); - expect(servers[1].url).toEqual('http://127.0.0.2:{port}'); - expect(servers[2].url).toEqual('http://127.0.0.3'); + expect(expandDefaultServerVariables(servers[0].url, servers[0].variables)).toEqual( + 'http://127.0.0.1/path/to/endpoint', + ); + expect(expandDefaultServerVariables(servers[1].url, servers[1].variables)).toEqual( + 'http://127.0.0.2:{port}', + ); + expect(expandDefaultServerVariables(servers[2].url, servers[2].variables)).toEqual( + 'http://127.0.0.3', + ); }); }); From 0504ad4b76aacf3aae098b5610c2a6250bf2f30c Mon Sep 17 00:00:00 2001 From: Roman Hotsiy Date: Mon, 29 Jul 2019 14:52:51 +0300 Subject: [PATCH 30/35] fix: dropdown fixes related to object description --- .../ObjectDescription/ObjectDescription.tsx | 10 ++++++++-- .../PayloadSamples/MediaTypeSamples.tsx | 14 +++++++++---- .../PayloadSamples/PayloadSamples.tsx | 20 ++++++------------- .../PayloadSamples/styled.elements.ts | 2 +- 4 files changed, 25 insertions(+), 21 deletions(-) diff --git a/src/components/ObjectDescription/ObjectDescription.tsx b/src/components/ObjectDescription/ObjectDescription.tsx index 130bf94e..0aa4672a 100644 --- a/src/components/ObjectDescription/ObjectDescription.tsx +++ b/src/components/ObjectDescription/ObjectDescription.tsx @@ -1,10 +1,12 @@ import * as React from 'react'; -import { DarkRightPanel, MiddlePanel, Row, Section } from '../../common-elements'; +import { DarkRightPanel, MiddlePanel, MimeLabel, Row, Section } from '../../common-elements'; import { MediaTypeModel, OpenAPIParser, RedocNormalizedOptions } from '../../services'; import styled from '../../styled-components'; import { OpenAPIMediaType } from '../../types'; +import { DropdownOrLabel } from '../DropdownOrLabel/DropdownOrLabel'; import { MediaTypeSamples } from '../PayloadSamples/MediaTypeSamples'; +import { InvertedSimpleDropdown } from '../PayloadSamples/styled.elements'; import { Schema } from '../Schema'; export interface ObjectDescriptionProps { @@ -64,13 +66,17 @@ export class ObjectDescription extends React.PureComponent - + ); } + + private renderDropdown = props => { + return ; + }; } const MediaSamplesWrap = styled.div` diff --git a/src/components/PayloadSamples/MediaTypeSamples.tsx b/src/components/PayloadSamples/MediaTypeSamples.tsx index 2e1c5517..5fedce01 100644 --- a/src/components/PayloadSamples/MediaTypeSamples.tsx +++ b/src/components/PayloadSamples/MediaTypeSamples.tsx @@ -1,5 +1,7 @@ import * as React from 'react'; +import styled from '../../styled-components'; + import { DropdownProps } from '../../common-elements'; import { MediaTypeModel } from '../../services/models'; import { Markdown } from '../Markdown/Markdown'; @@ -48,7 +50,7 @@ export class MediaTypeSamples extends React.Component + Example {this.props.renderDropdown({ @@ -61,16 +63,20 @@ export class MediaTypeSamples extends React.Component} - + ); } else { const example = examples[examplesNames[0]]; return ( -
+ {example.description && } -
+
); } } } + +const SamplesWrapper = styled.div` + margin-top: 15px; +`; diff --git a/src/components/PayloadSamples/PayloadSamples.tsx b/src/components/PayloadSamples/PayloadSamples.tsx index aa9d0e1b..7e2a85f0 100644 --- a/src/components/PayloadSamples/PayloadSamples.tsx +++ b/src/components/PayloadSamples/PayloadSamples.tsx @@ -2,11 +2,9 @@ import { observer } from 'mobx-react'; import * as React from 'react'; import { MediaTypeSamples } from './MediaTypeSamples'; -import { MediaTypesSwitch } from '../MediaTypeSwitch/MediaTypesSwitch'; - -import styled from '../../../src/styled-components'; import { MediaContentModel } from '../../services/models'; import { DropdownOrLabel } from '../DropdownOrLabel/DropdownOrLabel'; +import { MediaTypesSwitch } from '../MediaTypeSwitch/MediaTypesSwitch'; import { InvertedSimpleDropdown, MimeLabel } from './styled.elements'; export interface PayloadSamplesProps { @@ -24,13 +22,11 @@ export class PayloadSamples extends React.Component { return ( {mediaType => ( - - - + )} ); @@ -40,7 +36,3 @@ export class PayloadSamples extends React.Component { return ; }; } - -const SamplesWrapper = styled.div` - margin-top: 15px; -`; diff --git a/src/components/PayloadSamples/styled.elements.ts b/src/components/PayloadSamples/styled.elements.ts index c00a55a1..ee2f4a74 100644 --- a/src/components/PayloadSamples/styled.elements.ts +++ b/src/components/PayloadSamples/styled.elements.ts @@ -53,7 +53,7 @@ export const InvertedSimpleDropdown = styled(StyledDropdown)` } .Dropdown-menu { margin: 0; - margin-top: 10px; + margin-top: 2px; } `; From d3f1c1677c1a7259749919e55f9e6ff19bd752ca Mon Sep 17 00:00:00 2001 From: Aleksandr Karo Date: Mon, 29 Jul 2019 15:26:16 +0300 Subject: [PATCH 31/35] feat: add sampleCollapseLevel option (#937) * feat: add sampleCollapseLevel option * fix: rename sampleCollapseLevel option to jsonSampleExpandLevel Change README.md description * fix: provide maxCollapseLevel option via argument * fix: rename normalizer function and some vars --- README.md | 1 + src/components/JsonViewer/JsonViewer.tsx | 19 +++++++++++++------ src/services/RedocNormalizedOptions.ts | 15 +++++++++++++++ src/utils/jsonToHtml.ts | 23 +++++++++++------------ 4 files changed, 40 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 97c760aa..cae15bb3 100644 --- a/README.md +++ b/README.md @@ -243,6 +243,7 @@ You can use all of the following options with standalone version on tag * `hideDownloadButton` - do not show "Download" spec button. **THIS DOESN'T MAKE YOUR SPEC PRIVATE**, it just hides the button. * `disableSearch` - disable search indexing and search box * `onlyRequiredInSamples` - shows only required fields in request samples. +* `jsonSampleExpandLevel` - set the default expand level for JSON payload samples (responses and request body). Special value 'all' expands all levels. The default value is `2`. * `theme` - ReDoc theme. Not documented yet. For details check source code: [theme.ts](https://github.com/Redocly/redoc/blob/master/src/theme.ts) ## Advanced usage of standalone version diff --git a/src/components/JsonViewer/JsonViewer.tsx b/src/components/JsonViewer/JsonViewer.tsx index 33231ee7..bf735299 100644 --- a/src/components/JsonViewer/JsonViewer.tsx +++ b/src/components/JsonViewer/JsonViewer.tsx @@ -5,6 +5,7 @@ import { SampleControls } from '../../common-elements'; import { CopyButtonWrapper } from '../../common-elements/CopyButtonWrapper'; import { PrismDiv } from '../../common-elements/PrismDiv'; import { jsonToHTML } from '../../utils/jsonToHtml'; +import { OptionsContext } from '../OptionsProvider'; import { jsonStyles } from './style'; export interface JsonProps { @@ -32,12 +33,18 @@ class Json extends React.PureComponent { Expand all Collapse all - (this.node = node!)} - dangerouslySetInnerHTML={{ __html: jsonToHTML(this.props.data) }} - /> + + {options => ( + (this.node = node!)} + dangerouslySetInnerHTML={{ + __html: jsonToHTML(this.props.data, options.jsonSampleExpandLevel), + }} + /> + )} + ); diff --git a/src/services/RedocNormalizedOptions.ts b/src/services/RedocNormalizedOptions.ts index 9c7e8452..e4bf6751 100644 --- a/src/services/RedocNormalizedOptions.ts +++ b/src/services/RedocNormalizedOptions.ts @@ -22,6 +22,7 @@ export interface RedocRawOptions { onlyRequiredInSamples?: boolean | string; showExtensions?: boolean | string | string[]; hideSingleRequestSampleTab?: boolean | string; + jsonSampleExpandLevel?: number | string | 'all'; unstable_ignoreMimeParameters?: boolean; @@ -111,6 +112,16 @@ export class RedocNormalizedOptions { return value; } + private static normalizeJsonSampleExpandLevel(level?: number | string | 'all'): number { + if (level === 'all') { + return +Infinity; + } + if (!isNaN(Number(level))) { + return Math.ceil(Number(level)); + } + return 2; + } + theme: ResolvedThemeInterface; scrollYOffset: () => number; hideHostname: boolean; @@ -126,6 +137,7 @@ export class RedocNormalizedOptions { onlyRequiredInSamples: boolean; showExtensions: boolean | string[]; hideSingleRequestSampleTab: boolean; + jsonSampleExpandLevel: number; enumSkipQuotes: boolean; /* tslint:disable-next-line */ @@ -158,6 +170,9 @@ export class RedocNormalizedOptions { this.onlyRequiredInSamples = argValueToBoolean(raw.onlyRequiredInSamples); this.showExtensions = RedocNormalizedOptions.normalizeShowExtensions(raw.showExtensions); this.hideSingleRequestSampleTab = argValueToBoolean(raw.hideSingleRequestSampleTab); + this.jsonSampleExpandLevel = RedocNormalizedOptions.normalizeJsonSampleExpandLevel( + raw.jsonSampleExpandLevel, + ); this.enumSkipQuotes = argValueToBoolean(raw.enumSkipQuotes); this.unstable_ignoreMimeParameters = argValueToBoolean(raw.unstable_ignoreMimeParameters); diff --git a/src/utils/jsonToHtml.ts b/src/utils/jsonToHtml.ts index abd4b14a..bbdc638e 100644 --- a/src/utils/jsonToHtml.ts +++ b/src/utils/jsonToHtml.ts @@ -1,11 +1,10 @@ let level = 1; -const COLLAPSE_LEVEL = 2; -export function jsonToHTML(json) { +export function jsonToHTML(json, maxExpandLevel) { level = 1; let output = ''; output += '
'; - output += valueToHTML(json); + output += valueToHTML(json, maxExpandLevel); output += '
'; return output; } @@ -33,20 +32,20 @@ function punctuation(val) { return '' + val + ''; } -function valueToHTML(value) { +function valueToHTML(value, maxExpandLevel: number) { const valueType = typeof value; let output = ''; if (value === undefined || value === null) { output += decorateWithSpan('null', 'token keyword'); } else if (value && value.constructor === Array) { level++; - output += arrayToHTML(value); + output += arrayToHTML(value, maxExpandLevel); level--; } else if (value && value.constructor === Date) { output += decorateWithSpan('"' + value.toISOString() + '"', 'token string'); } else if (valueType === 'object') { level++; - output += objectToHTML(value); + output += objectToHTML(value, maxExpandLevel); level--; } else if (valueType === 'number') { output += decorateWithSpan(value, 'token number'); @@ -70,8 +69,8 @@ function valueToHTML(value) { return output; } -function arrayToHTML(json) { - const collapsed = level > COLLAPSE_LEVEL ? 'collapsed' : ''; +function arrayToHTML(json, maxExpandLevel: number) { + const collapsed = level > maxExpandLevel ? 'collapsed' : ''; let output = `
${punctuation( '[', )}
    `; @@ -80,7 +79,7 @@ function arrayToHTML(json) { for (let i = 0; i < length; i++) { hasContents = true; output += '