From 88731d7c94e31e5fbea0385ceea620c08aba44ad Mon Sep 17 00:00:00 2001 From: Quinn Slack Date: Mon, 7 Jan 2019 23:44:08 -0800 Subject: [PATCH] add storybook stories for ActionItem and Toggle (#1698) --- client/browser/config/storybook/config.ts | 2 +- jest.config.base.js | 4 +- package.json | 22 +- shared/.storybook/addons.js | 5 + shared/.storybook/config.js | 43 +++ shared/.storybook/webpack.config.js | 32 +++ shared/package.json | 3 +- shared/src/actions/ActionItem.story.tsx | 112 ++++++++ shared/src/actions/ActionItem.tsx | 8 +- shared/src/components/Toggle.scss | 2 +- shared/src/components/Toggle.story.tsx | 35 +++ shared/src/extensions/controller.ts | 4 +- web/src/SourcegraphWebApp.scss | 1 + yarn.lock | 304 ++++++++++++++++++---- 14 files changed, 511 insertions(+), 66 deletions(-) create mode 100644 shared/.storybook/addons.js create mode 100644 shared/.storybook/config.js create mode 100644 shared/.storybook/webpack.config.js create mode 100644 shared/src/actions/ActionItem.story.tsx create mode 100644 shared/src/components/Toggle.story.tsx diff --git a/client/browser/config/storybook/config.ts b/client/browser/config/storybook/config.ts index 2df3d37f2cc..af2bdcd1f9f 100644 --- a/client/browser/config/storybook/config.ts +++ b/client/browser/config/storybook/config.ts @@ -1,6 +1,6 @@ import { configure } from '@storybook/react' -// automatically import all files ending in *.stories.js +// Automatically import all files ending in *.stories.tsx?. const req = require.context('../../stories', true, /\.tsx?$/) function loadStories(): void { for (const filename of req.keys()) { diff --git a/jest.config.base.js b/jest.config.base.js index 1280d783e4f..5b1f1d88592 100644 --- a/jest.config.base.js +++ b/jest.config.base.js @@ -4,7 +4,7 @@ const config = { collectCoverage: true, coverageDirectory: '/coverage', - moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'], + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json'], preset: 'ts-jest/presets/js-with-ts', roots: ['/src'], transform: { '^.+\\.[jt]sx?$': 'ts-jest' }, @@ -18,6 +18,8 @@ const config = { '/node_modules/(?!abortable-rx|@sourcegraph/react-loading-spinner|@sourcegraph/codeintellify)', ], + moduleNameMapper: { '\\.s?css$': 'identity-obj-proxy' }, + // By default, don't clutter `yarn test --watch` output with the full coverage table. To see it, use the // `--coverageReporters text` jest option. coverageReporters: ['json', 'lcov', 'text-summary'], diff --git a/package.json b/package.json index 8cb899ec7cb..cbd9dd453c4 100644 --- a/package.json +++ b/package.json @@ -40,10 +40,16 @@ "@sourcegraph/stylelint-config": "^1.0.1", "@sourcegraph/tsconfig": "^3.0.0", "@sourcegraph/tslint-config": "^12.3.1", - "@storybook/addon-actions": "4.1.3", + "@storybook/addon-actions": "^4.1.4", + "@storybook/addon-console": "^1.1.0", + "@storybook/addon-info": "^4.1.4", "@storybook/addon-links": "4.1.3", - "@storybook/addons": "4.1.3", - "@storybook/react": "4.1.3", + "@storybook/addon-notes": "^4.1.4", + "@storybook/addon-options": "^4.1.4", + "@storybook/addon-storyshots": "^4.1.4", + "@storybook/addons": "^4.1.4", + "@storybook/components": "^4.1.4", + "@storybook/react": "^4.1.4", "@types/babel__core": "7.0.4", "@types/chai": "4.1.7", "@types/chai-as-promised": "7.1.0", @@ -86,8 +92,12 @@ "@types/sinon": "7.0.3", "@types/socket.io": "2.1.2", "@types/socket.io-client": "1.4.32", - "@types/storybook__addon-actions": "3.4.1", - "@types/storybook__react": "4.0.0", + "@types/storybook__addon-actions": "^3.4.1", + "@types/storybook__addon-info": "^3.4.2", + "@types/storybook__addon-notes": "^4.0.0", + "@types/storybook__addon-options": "^4.0.0", + "@types/storybook__addon-storyshots": "^3.4.4", + "@types/storybook__react": "^4.0.0", "@types/textarea-caret": "3.0.0", "@types/uuid": "3.4.4", "@types/webpack": "4.4.22", @@ -114,6 +124,7 @@ "graphql": "^14.0.2", "graphql-schema-linter": "^0.1.6", "gulp": "^4.0.0", + "identity-obj-proxy": "^3.0.0", "jest": "^23.6.0", "json-schema-ref-parser": "^6.0.2", "json-schema-to-typescript": "^6.1.0", @@ -128,6 +139,7 @@ "postcss-loader": "^3.0.0", "prettier": "1.15.3", "puppeteer": "1.11.0", + "react-docgen-typescript-webpack-plugin": "^1.1.0", "react-test-renderer": "^16.7.0", "react-testing-library": "^5.4.2", "sass-loader": "^7.0.3", diff --git a/shared/.storybook/addons.js b/shared/.storybook/addons.js new file mode 100644 index 00000000000..abd4af4d958 --- /dev/null +++ b/shared/.storybook/addons.js @@ -0,0 +1,5 @@ +// @ts-check + +import '@storybook/addon-options/register' +import '@storybook/addon-actions/register' +import '@storybook/addon-notes/register' diff --git a/shared/.storybook/config.js b/shared/.storybook/config.js new file mode 100644 index 00000000000..1fd1a745a25 --- /dev/null +++ b/shared/.storybook/config.js @@ -0,0 +1,43 @@ +// @ts-check + +import { configure, addDecorator } from '@storybook/react' +import { withInfo } from '@storybook/addon-info' +import { withOptions } from '@storybook/addon-options' +// @ts-ignore +import { themes } from '@storybook/components' +import { configureActions } from '@storybook/addon-actions' +import '@storybook/addon-console' +// @ts-ignore +import { withConsole } from '@storybook/addon-console' +import { withNotes } from '@storybook/addon-notes' + +// Load CSS. +import '../../web/src/SourcegraphWebApp.scss' + +async function main() { + // Load all *.story.tsx files. + if (require.context) { + // In Webpack: + const requireContext = require.context('../src', true, /\.story\.tsx?$/) + for (const storyModule of requireContext.keys()) { + requireContext(storyModule) + } + } else { + throw new Error('running storybooks outside of Webpack is not yet supported') + } + + // Configure storybooks. + configure(() => { + addDecorator(withNotes()) + addDecorator((storyFn, context) => withConsole()(storyFn)(context)) + // @ts-ignore + addDecorator(withOptions({ theme: themes.dark })) + addDecorator(withInfo({ header: false, propTables: false })) + + configureActions({ + depth: 100, + limit: 20, + }) + }, module) +} +main().catch(err => console.error(err)) diff --git a/shared/.storybook/webpack.config.js b/shared/.storybook/webpack.config.js new file mode 100644 index 00000000000..addecbe6365 --- /dev/null +++ b/shared/.storybook/webpack.config.js @@ -0,0 +1,32 @@ +// @ts-check + +const path = require('path') + +module.exports = (baseConfig, env, config) => { + config.module.rules.push({ + test: /\.(ts|tsx)$/, + loader: require.resolve('babel-loader'), + options: { + presets: [['react-app', { flow: false, typescript: true }]], + }, + }) + config.resolve.extensions.push('.ts', '.tsx') + + // Put our style rules at the beginning so they're processed by the time it + // gets to storybook's style rules. + config.module.rules.unshift({ + test: /\.(css|sass|scss)$/, + use: [ + 'style-loader', + 'postcss-loader', + { + loader: 'sass-loader', + options: { + includePaths: [path.resolve(__dirname, '../..', 'node_modules')], + }, + }, + ], + }) + + return config +} diff --git a/shared/package.json b/shared/package.json index 2008ced2597..9a490873862 100644 --- a/shared/package.json +++ b/shared/package.json @@ -22,7 +22,8 @@ "graphql": "gulp graphQLTypes", "schema": "gulp schema", "watch-schema": "gulp watchSchema", - "prepublish": "yarn run tslint:build-rules" + "prepublish": "yarn run tslint:build-rules", + "storybook": "start-storybook -p 9001 -c .storybook" }, "sideEffects": false } diff --git a/shared/src/actions/ActionItem.story.tsx b/shared/src/actions/ActionItem.story.tsx new file mode 100644 index 00000000000..b469bbe3c42 --- /dev/null +++ b/shared/src/actions/ActionItem.story.tsx @@ -0,0 +1,112 @@ +import { action } from '@storybook/addon-actions' +import { storiesOf } from '@storybook/react' +import * as H from 'history' +import React from 'react' +import { setLinkComponent } from '../components/Link' +import { ActionItem, ActionItemComponentProps } from './ActionItem' + +setLinkComponent(({ to, children, ...props }) => ( + + {children} + +)) + +const EXTENSIONS_CONTROLLER: ActionItemComponentProps['extensionsController'] = { + executeCommand: () => new Promise(resolve => setTimeout(resolve, 750)), +} + +const PLATFORM_CONTEXT: ActionItemComponentProps['platformContext'] = { + forceUpdateTooltip: () => void 0, +} + +const LOCATION: H.Location = { hash: '', pathname: '/', search: '', state: undefined } + +const ICON_URL = + 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==' + +const onDidExecute = action('onDidExecute') + +const { add } = storiesOf('ActionItem', module) + +add('noop action', () => ( + +)) + +add('command action', () => ( + +)) + +add('link action', () => ( + +)) + +add('executing', () => { + class ActionItemExecuting extends ActionItem { + constructor(props: ActionItem['props']) { + super(props) + this.state.actionOrError = 'loading' + } + } + return ( + + ) +}) + +add( + 'error', + () => { + class ActionItemWithError extends ActionItem { + constructor(props: ActionItem['props']) { + super(props) + this.state.actionOrError = new Error('e') + } + } + return ( + + ) + }, + { notes: 'The error is shown in a tooltip, which is not yet visible in the storybook.' } +) diff --git a/shared/src/actions/ActionItem.tsx b/shared/src/actions/ActionItem.tsx index 6d8a7111f1a..dc46c8ad54a 100644 --- a/shared/src/actions/ActionItem.tsx +++ b/shared/src/actions/ActionItem.tsx @@ -59,11 +59,9 @@ export interface ActionItemProps { title?: React.ReactElement } -export interface ActionItemComponentProps { - extensionsController: - | ExtensionsControllerProps['extensionsController'] - | { executeCommand: (params: ExecuteCommandParams) => Promise } - platformContext: PlatformContextProps['platformContext'] | { forceUpdateTooltip: () => void } +export interface ActionItemComponentProps + extends ExtensionsControllerProps<'executeCommand'>, + PlatformContextProps<'forceUpdateTooltip'> { location: H.Location } diff --git a/shared/src/components/Toggle.scss b/shared/src/components/Toggle.scss index 80e267132f1..696e6851581 100644 --- a/shared/src/components/Toggle.scss +++ b/shared/src/components/Toggle.scss @@ -2,7 +2,7 @@ background: none; border: none; cursor: pointer; - display: block; + display: inline-block; outline: none !important; padding: 0; position: relative; diff --git a/shared/src/components/Toggle.story.tsx b/shared/src/components/Toggle.story.tsx new file mode 100644 index 00000000000..ca731dc7579 --- /dev/null +++ b/shared/src/components/Toggle.story.tsx @@ -0,0 +1,35 @@ +import { action } from '@storybook/addon-actions' +import { storiesOf } from '@storybook/react' +import React from 'react' +import { Toggle } from './Toggle' + +const onToggle = action('onToggle') + +const { add } = storiesOf('Toggle', module) + +add('interactive', () => { + interface State { + value?: boolean + } + class ToggleInteractive extends React.Component<{}, State> { + public state: State = {} + public render(): JSX.Element | null { + return ( +
+ Value is{' '} + {String(this.state.value)} +
+ ) + } + private onToggle = (value: boolean) => this.setState({ value }, () => onToggle(value)) + } + return +}) + +add('on', () => ) + +add('off', () => ) + +add('disabled/on', () => ) + +add('disabled/off', () => ) diff --git a/shared/src/extensions/controller.ts b/shared/src/extensions/controller.ts index 5b743fe4f4d..993def45b7d 100644 --- a/shared/src/extensions/controller.ts +++ b/shared/src/extensions/controller.ts @@ -50,11 +50,11 @@ export interface Controller extends Unsubscribable { * React props or state containing the client. There should be only a single client for the whole * application. */ -export interface ExtensionsControllerProps { +export interface ExtensionsControllerProps { /** * The client, which is used to communicate with and manage extensions. */ - extensionsController: Controller + extensionsController: Pick } /** diff --git a/web/src/SourcegraphWebApp.scss b/web/src/SourcegraphWebApp.scss index bc0e7d61964..fac6addfa51 100644 --- a/web/src/SourcegraphWebApp.scss +++ b/web/src/SourcegraphWebApp.scss @@ -282,5 +282,6 @@ hr { @import './repo/blob/discussions/DiscussionsTree'; @import './components/SearchResult'; @import './components/SearchResultMatch'; +@import '../node_modules/@sourcegraph/react-loading-spinner/lib/LoadingSpinner'; @import './extensions/shared'; diff --git a/yarn.lock b/yarn.lock index 977499e4fa5..179fb3287cc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1547,17 +1547,17 @@ resolved "https://registry.npmjs.org/@sqs/jsonc-parser/-/jsonc-parser-1.0.3.tgz#178538e4cb32cad15b47a739cabd77408ba18021" integrity sha512-dW/2OZ1z5r2rhYPcISh8GwRz7lUzVh4S4+Dgw8wg4WDdTL8yqXjQX8Ysd8cUGhzKE9/UbbrLdlj7sEwzI8Bbqw== -"@storybook/addon-actions@4.1.3": - version "4.1.3" - resolved "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-4.1.3.tgz#a6368297beb6a2e0cad9939ea0678a697939b5a5" - integrity sha512-zIxc8LljnVJPiLfyLCZ/fxWx+NXAdpTQJA/7bIQyZHRl8/VDNg0wRAZIdrvDFbZOiHyUp79qk55rS9Od0KhqoA== +"@storybook/addon-actions@^4.1.4": + version "4.1.4" + resolved "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-4.1.4.tgz#d6ff166939b0f1b6c2de57c6716503449b17124d" + integrity sha512-G/dROclra4G6j1GZ/tHhADa1Hc1noSrMm3lDziyKC+W3EhWL9nhnPkreG3VHsZUkfAfZHECT8ATFZHo/QGS3pg== dependencies: "@emotion/core" "^0.13.1" "@emotion/provider" "^0.11.2" "@emotion/styled" "^0.10.6" - "@storybook/addons" "4.1.3" - "@storybook/components" "4.1.3" - "@storybook/core-events" "4.1.3" + "@storybook/addons" "4.1.4" + "@storybook/components" "4.1.4" + "@storybook/core-events" "4.1.4" core-js "^2.5.7" deep-equal "^1.0.1" global "^4.3.2" @@ -1567,6 +1567,31 @@ react-inspector "^2.3.0" uuid "^3.3.2" +"@storybook/addon-console@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@storybook/addon-console/-/addon-console-1.1.0.tgz#ef063fa122a7aa03ac54067a1d6a72d717b41c73" + integrity sha512-G36/KB0uN5OB30W/QQU/NIbQ2EA4ZjJGORvYNx83bojRN2cKF0NFae5hEwlAAhKZK31qe3g3bsymWvc7+WBCpA== + dependencies: + global "^4.3.2" + +"@storybook/addon-info@^4.1.4": + version "4.1.4" + resolved "https://registry.npmjs.org/@storybook/addon-info/-/addon-info-4.1.4.tgz#f370543a9151a31a6b2ec7fa5bbea544dcc15eff" + integrity sha512-D6HUZ1qOEXN1jtIbcn9TuB/sKJlgOVTb7YwCyaKWIF1WIZ9xumoL4t8jl4inXAbtPcLZ9e+oE3owJFKYXCQUTQ== + dependencies: + "@emotion/styled" "^0.10.6" + "@storybook/addons" "4.1.4" + "@storybook/client-logger" "4.1.4" + "@storybook/components" "4.1.4" + core-js "^2.5.7" + global "^4.3.2" + marksy "^6.1.0" + nested-object-assign "^1.0.1" + prop-types "^15.6.2" + react-addons-create-fragment "^15.5.3" + react-lifecycles-compat "^3.0.4" + util-deprecate "^1.0.2" + "@storybook/addon-links@4.1.3": version "4.1.3" resolved "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-4.1.3.tgz#4d30542ce9cee84c8bb31d45589891c321fd817d" @@ -1579,6 +1604,39 @@ global "^4.3.2" prop-types "^15.6.2" +"@storybook/addon-notes@^4.1.4": + version "4.1.4" + resolved "https://registry.npmjs.org/@storybook/addon-notes/-/addon-notes-4.1.4.tgz#02aa0f675f1cccf84dddbf1c0aa4f64e8fb3dc03" + integrity sha512-vhAnOtpALQ0C5qHEhloHNp7gIjFS1li/VBr0C1/UCU55kgFbQ4kjuwH1F+ptJJlvCOu2h4/Q0WkLs4S3KFhAfw== + dependencies: + "@emotion/styled" "^0.10.6" + "@storybook/addons" "4.1.4" + core-js "^2.5.7" + marked "^0.5.2" + prop-types "^15.6.2" + +"@storybook/addon-options@^4.1.4": + version "4.1.4" + resolved "https://registry.npmjs.org/@storybook/addon-options/-/addon-options-4.1.4.tgz#58765a50d7cf8c1b1ff1cf9e257ce29f8b47912e" + integrity sha512-+XK72SYStpYlfssHHBw6wJu5+KZ+W5nuOChcgEB9fmpbQVd+69tLv8QWaK95ez0/+3KRC7jrHWAzsd8nitQZBQ== + dependencies: + "@storybook/addons" "4.1.4" + core-js "^2.5.7" + util-deprecate "^1.0.2" + +"@storybook/addon-storyshots@^4.1.4": + version "4.1.4" + resolved "https://registry.npmjs.org/@storybook/addon-storyshots/-/addon-storyshots-4.1.4.tgz#c09e467ae0354c18906079591fbbe99243745c33" + integrity sha512-AQk7lYpYqDmBG6rFm0PSffW3mKOSogLci1CQ+vNFBhwvf2INLj4JHU/G7cSKK1NvtZlp9kvl4E8jVzXGNo610A== + dependencies: + "@storybook/addons" "4.1.4" + core-js "^2.5.7" + glob "^7.1.3" + global "^4.3.2" + jest-specific-snapshot "^1.0.0" + read-pkg-up "^4.0.0" + regenerator-runtime "^0.12.1" + "@storybook/addons@4.1.3": version "4.1.3" resolved "https://registry.npmjs.org/@storybook/addons/-/addons-4.1.3.tgz#5d6561e37751eb1848b92660fe928b065e7c344d" @@ -1589,12 +1647,22 @@ global "^4.3.2" util-deprecate "^1.0.2" -"@storybook/channel-postmessage@4.1.3": - version "4.1.3" - resolved "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-4.1.3.tgz#c0c2f15b1a7b3e9a6674accc6d3f574129476028" - integrity sha512-8srwq67Hc6IuY8GrJPYaPhPjPLKts5bYyy7hLZ464t/bOvvG21jItz5f262S1Tibh9t43fygYFbl4lb9qyumSg== +"@storybook/addons@4.1.4", "@storybook/addons@^4.1.4": + version "4.1.4" + resolved "https://registry.npmjs.org/@storybook/addons/-/addons-4.1.4.tgz#652c494aa448441f182a36d83d8f05a54f5b5c31" + integrity sha512-h91OXr9eFx3ilST+4rpXpPB3Y6gnJ/ZBps84cgZ69coffTeYfzNHPB1Fu2RVsB1skdSFTF/TnB1bAEzYNZ2cDQ== dependencies: - "@storybook/channels" "4.1.3" + "@storybook/channels" "4.1.4" + "@storybook/components" "4.1.4" + global "^4.3.2" + util-deprecate "^1.0.2" + +"@storybook/channel-postmessage@4.1.4": + version "4.1.4" + resolved "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-4.1.4.tgz#f63bd2a6a8725e3af2c184dfa27f5eaada5eed23" + integrity sha512-VeZkS6ISoJH/HHl45LlIWKt4uv1YuIeRzrpPJ0ggnSIPvroRfEypQh5svuFuEkHXs5jOPQ6gtFEyxjT+EH+SfQ== + dependencies: + "@storybook/channels" "4.1.4" global "^4.3.2" json-stringify-safe "^5.0.1" @@ -1603,10 +1671,15 @@ resolved "https://registry.npmjs.org/@storybook/channels/-/channels-4.1.3.tgz#38b13650d408e0a3a8f7ab1b2ae03df45c8acf54" integrity sha512-SaxHlNbNO2yXwg7GI4k6TGWhYK+WdXEDLfDp9w2BigZQel5SCDZsuOCYtE3yG6ajrdBq4ehkhnLPE0wQcupp7A== -"@storybook/client-logger@4.1.3": - version "4.1.3" - resolved "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-4.1.3.tgz#087c489d9bc777e305a95055557de643c399c1a4" - integrity sha512-J7QDBsP7qMBjuyXR8MTrcEk+KiYgriztg1ycTopltCiiroi8yCeIaNIUQZ3rbEsKpHdDVT/oDj1g5WDafQ03Qg== +"@storybook/channels@4.1.4": + version "4.1.4" + resolved "https://registry.npmjs.org/@storybook/channels/-/channels-4.1.4.tgz#8ed05f821c55fd359231568d9a94e31ea81a2f82" + integrity sha512-tXKSz58p4o1CiRL9VNUfgMuNeuyUkLLyBfK0tAY0Co370BTfUvMq7clG65+nPj+rdb7foYQQKpnwGYdMVzuzsg== + +"@storybook/client-logger@4.1.4": + version "4.1.4" + resolved "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-4.1.4.tgz#c87d8d3357cb3eb582249f43692ea82c7c2461e0" + integrity sha512-fOrSNPa4Pg8m9UD8fTUFTewTtuzhckrt6zESpj+P7/MnWM+W71umvobb0HpPBGKvwSC8qJZhOwsH7tNI7K0PAw== "@storybook/components@4.1.3": version "4.1.3" @@ -1624,27 +1697,48 @@ react-textarea-autosize "^7.0.4" render-fragment "^0.1.1" +"@storybook/components@4.1.4", "@storybook/components@^4.1.4": + version "4.1.4" + resolved "https://registry.npmjs.org/@storybook/components/-/components-4.1.4.tgz#9513cb9f224bd9c1a449b8ff85bcf03e5572e0bd" + integrity sha512-H0SMPt/zF1zfyCqUTwx0RcaRbviiz9vdxXWO4jURfgULhGpP+mQRXz0KUn2k7s/RMerTtpB4/DKNKm0zDylcNQ== + dependencies: + "@emotion/core" "^0.13.1" + "@emotion/provider" "^0.11.2" + "@emotion/styled" "^0.10.6" + global "^4.3.2" + lodash "^4.17.11" + prop-types "^15.6.2" + react-inspector "^2.3.0" + react-split-pane "^0.1.84" + react-textarea-autosize "^7.0.4" + render-fragment "^0.1.1" + "@storybook/core-events@4.1.3": version "4.1.3" resolved "https://registry.npmjs.org/@storybook/core-events/-/core-events-4.1.3.tgz#80476d5380d60180511e0cd9546f24253197adef" integrity sha512-mMHclba/+TCPdz+UXX0TYXN3SVe17p5n9OuZ6h0hZPdUPaqwN5xsi+UmYH6jGutHEzwkiVzw4cs5QvkcxuUzng== -"@storybook/core@4.1.3": - version "4.1.3" - resolved "https://registry.npmjs.org/@storybook/core/-/core-4.1.3.tgz#8c887094841931661f5b3693699b834870c8dc8c" - integrity sha512-boyc+/fmNd/HReEkec8UVqAqiMUXBbTu64xG2yytNJQ+Z9jzlGBMMJQWC6Ad5iAwgSco3BbbRT7XRkhhC35ibA== +"@storybook/core-events@4.1.4": + version "4.1.4" + resolved "https://registry.npmjs.org/@storybook/core-events/-/core-events-4.1.4.tgz#e20eff66c2683989fe1d9aa02aa9c1e28d15a927" + integrity sha512-N/yQOwNMyPZQEj0Q2ZN/DEm+A9TvCMzL24w7f1JC2W2sSrnzMKPQabSIk2rzH2gJwc4Z2EyVI4AgPTocBwCHNA== + +"@storybook/core@4.1.4": + version "4.1.4" + resolved "https://registry.npmjs.org/@storybook/core/-/core-4.1.4.tgz#69f4fdf083160d71d309347d51b7037afdac1eee" + integrity sha512-nniqbFVszHhvca33uDft0ErUuaKkAul17Tke4EOvP0xb0/4sFj6CL1B2KTMUdsarlq+dcNXdKP0+e5skgwojvg== dependencies: "@babel/plugin-proposal-class-properties" "^7.2.0" "@babel/preset-env" "^7.2.0" "@emotion/core" "^0.13.1" "@emotion/provider" "^0.11.2" "@emotion/styled" "^0.10.6" - "@storybook/addons" "4.1.3" - "@storybook/channel-postmessage" "4.1.3" - "@storybook/client-logger" "4.1.3" - "@storybook/core-events" "4.1.3" - "@storybook/node-logger" "4.1.3" - "@storybook/ui" "4.1.3" + "@storybook/addons" "4.1.4" + "@storybook/channel-postmessage" "4.1.4" + "@storybook/client-logger" "4.1.4" + "@storybook/core-events" "4.1.4" + "@storybook/node-logger" "4.1.4" + "@storybook/ui" "4.1.4" airbnb-js-shims "^1 || ^2" autoprefixer "^9.3.1" babel-plugin-macros "^2.4.2" @@ -1707,10 +1801,10 @@ "@storybook/react-simple-di" "^1.2.1" babel-runtime "6.x.x" -"@storybook/node-logger@4.1.3": - version "4.1.3" - resolved "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-4.1.3.tgz#08f21a5ae5883391ef134df2901de8e5332e9ebc" - integrity sha512-UMyic114zKOwusubRajH42moR9ad0dJo56oRw5yk31UjMIn930AHfAAHxjfbm8FfUrz24rud2/gfC1UQjSqq5g== +"@storybook/node-logger@4.1.4": + version "4.1.4" + resolved "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-4.1.4.tgz#3f2255a01fcbcd875be7b334833fd775a0338058" + integrity sha512-jMepAkeeYY29kQEgbWMpTCCiV2P8fMhEwOudBBlq+QUj0Ugkchh2tfp5ViZ52aqQeZtoGJA8++rVSAKaTYkhOA== dependencies: chalk "^2.4.1" core-js "^2.5.7" @@ -1754,17 +1848,17 @@ dependencies: babel-runtime "^6.5.0" -"@storybook/react@4.1.3": - version "4.1.3" - resolved "https://registry.npmjs.org/@storybook/react/-/react-4.1.3.tgz#149b92a3f543d0fec4580b55223ecd360e2a1c37" - integrity sha512-6tyNssoixH+HFcLqNLDZRgK6ECX4OpH/QHshk+4bQLd9uhXI9q8Ej7qmmRPCYrQFW0nuGLToPn3XNsJRN1JBhw== +"@storybook/react@^4.1.4": + version "4.1.4" + resolved "https://registry.npmjs.org/@storybook/react/-/react-4.1.4.tgz#29b7bbee6b6f5cf9b8b2c5ed796cfcb144c572b5" + integrity sha512-W4H3JKkmI9QWvJzCLTETMrESKjnYU0alutd45Jz6Oie/eniGmZZDHoq40TpQNafchc5StBiqq9zbq0axy9UMPA== dependencies: "@babel/plugin-transform-react-constant-elements" "^7.2.0" "@babel/preset-flow" "^7.0.0" "@babel/preset-react" "^7.0.0" "@emotion/styled" "^0.10.6" - "@storybook/core" "4.1.3" - "@storybook/node-logger" "4.1.3" + "@storybook/core" "4.1.4" + "@storybook/node-logger" "4.1.4" "@svgr/webpack" "^4.0.3" babel-plugin-named-asset-import "^0.2.3" babel-plugin-react-docgen "^2.0.0" @@ -1780,16 +1874,16 @@ semver "^5.6.0" webpack "^4.23.1" -"@storybook/ui@4.1.3": - version "4.1.3" - resolved "https://registry.npmjs.org/@storybook/ui/-/ui-4.1.3.tgz#7ed0e44d3eebe8aab1a8b2fd47c235d9072b8225" - integrity sha512-0tjir7iMhjVjMSyYPZ2f/EAEBE62rkmVp/aWGzkMDuRvrxFUQ7Z73C8fRdpYoNcvqlXFf3oh88q7zHd7SKNCdA== +"@storybook/ui@4.1.4": + version "4.1.4" + resolved "https://registry.npmjs.org/@storybook/ui/-/ui-4.1.4.tgz#519118ad41430115359b245384854cb3388ed53f" + integrity sha512-qP7aDHxHBShU8MACnDsfR7LaOYvGcpRKF99yO3eygmHGJNyt7DHvxa5MnUOnsB30nRhcPuEPEWbVsamLQOUg3Q== dependencies: "@emotion/core" "^0.13.1" "@emotion/provider" "^0.11.2" "@emotion/styled" "^0.10.6" - "@storybook/components" "4.1.3" - "@storybook/core-events" "4.1.3" + "@storybook/components" "4.1.4" + "@storybook/core-events" "4.1.4" "@storybook/mantra-core" "^1.7.2" "@storybook/podda" "^1.2.3" "@storybook/react-komposer" "^2.0.5" @@ -2167,6 +2261,11 @@ resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.118.tgz#247bab39bfcc6d910d4927c6e06cbc70ec376f27" integrity sha512-iiJbKLZbhSa6FYRip/9ZDX6HXhayXLDGY2Fqws9cOkEQ6XeKfaxB0sC541mowZJueYyMnVUmmG+al5/4fCDrgw== +"@types/marked@*": + version "0.6.0" + resolved "https://registry.npmjs.org/@types/marked/-/marked-0.6.0.tgz#e4ac316144a84afda5c2474488d7b9fef3ab9995" + integrity sha512-TxwhgR9VsIfRDJ3WwFokG8Xu+ea0nYGDRHdI783WJ983uffatz0ytIeUEIBOwPvRy241KRSNVyywQltuTqDh0w== + "@types/marked@0.5.0": version "0.5.0" resolved "https://registry.npmjs.org/@types/marked/-/marked-0.5.0.tgz#4b91c66ee8cf0abb6938e02fdec207279959962e" @@ -2269,7 +2368,7 @@ resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.5.6.tgz#9c03d3fed70a8d517c191b7734da2879b50ca26c" integrity sha512-ZBFR7TROLVzCkswA3Fmqq+IIJt62/T7aY/Dmz+QkU7CaW2QFqAitCE8Ups7IzmGhcN1YWMBT4Qcoc07jU9hOJQ== -"@types/puppeteer@1.11.1": +"@types/puppeteer@*", "@types/puppeteer@1.11.1": version "1.11.1" resolved "https://registry.npmjs.org/@types/puppeteer/-/puppeteer-1.11.1.tgz#f2fe2e08917af2b4dc4b03bd2b838c05cb9d8410" integrity sha512-IvrvZfWjITUH7q4WrM25ul9xlIeLM3Oh+hV2FL7xQQSroVf8mX3lMZaN7XEsw6Bdfp99Qm7I4GcD+ak5+wIEfA== @@ -2416,12 +2515,44 @@ dependencies: "@types/node" "*" -"@types/storybook__addon-actions@3.4.1": +"@types/storybook__addon-actions@^3.4.1": version "3.4.1" resolved "https://registry.npmjs.org/@types/storybook__addon-actions/-/storybook__addon-actions-3.4.1.tgz#8f90d76b023b58ee794170f2fe774a3fddda2c1d" integrity sha512-An8pNb1/7QhkdOT8Ht5WjJsSxAh2mWti/J4eILwUHpXVZ1j3xlVaOzwTbg8twN4DjgOAggjEDOj6Bx8YOWh9Pg== -"@types/storybook__react@4.0.0": +"@types/storybook__addon-info@^3.4.2": + version "3.4.2" + resolved "https://registry.npmjs.org/@types/storybook__addon-info/-/storybook__addon-info-3.4.2.tgz#31a27e66867f02e593579cc58f54d22e726b0925" + integrity sha512-1af9u42JAMbi54MOkfzZt2+RTbUnpVJCN6vkkcAEtlyML4tXpmW482d3TZNiYPk3ePHKkielNZUtfpijT/XJ+A== + dependencies: + "@types/react" "*" + +"@types/storybook__addon-notes@^4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@types/storybook__addon-notes/-/storybook__addon-notes-4.0.0.tgz#1d3354d995445c7b128c13c1cd76a6991fbe131c" + integrity sha512-jh4dqUo4iflX2lK2CmbCnwKFMFDp6d48d6fo9FrHzzqcWXoeaSmWIqdLDytBpvdr2VbG8/Zo3Z4inOzw99p2Xg== + dependencies: + "@types/marked" "*" + "@types/react" "*" + "@types/storybook__react" "*" + +"@types/storybook__addon-options@^4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@types/storybook__addon-options/-/storybook__addon-options-4.0.0.tgz#80beff796c892f9bccbd221cbfc792dbe2d9764f" + integrity sha512-toMfmqTdbh65jafemsy2+dVWjt3wjgHxbJF6V0jhfsyeZckc/1VYtjMqQZdR4vlFT+nBcOKQYt7+kw2nqYF91Q== + dependencies: + "@types/storybook__react" "*" + +"@types/storybook__addon-storyshots@^3.4.4": + version "3.4.4" + resolved "https://registry.npmjs.org/@types/storybook__addon-storyshots/-/storybook__addon-storyshots-3.4.4.tgz#bc34d425b8ca2f1e73e3c1ecb6afc178b9fa9ace" + integrity sha512-Zwu+fk/zqCNAnRnLlOvLRMPi2KrUuXMW/HWZ4RMOHfu2OGqp9bkNF59whI4XwLM/aZUN27nne8bGaHIDL0rRTg== + dependencies: + "@types/puppeteer" "*" + "@types/react" "*" + "@types/storybook__react" "*" + +"@types/storybook__react@*", "@types/storybook__react@^4.0.0": version "4.0.0" resolved "https://registry.npmjs.org/@types/storybook__react/-/storybook__react-4.0.0.tgz#52cc452fbab599568d595075a90142ef4a1233f6" integrity sha512-Iq3RX953fqZRwWN3jywm8pUx1/Atev+x/9tF7/2CNA+Ii55sGSJJRWMRthUKQXTa3zOexcvfksfVYdUaIZY91w== @@ -2809,7 +2940,7 @@ ajv-keywords@^3.1.0: resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a" integrity sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo= -ajv@^6.1.0: +ajv@^6.1.0, ajv@^6.1.1: version "6.6.2" resolved "https://registry.npmjs.org/ajv/-/ajv-6.6.2.tgz#caceccf474bf3fc3ce3b147443711a24063cc30d" integrity sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g== @@ -3692,6 +3823,11 @@ babel-runtime@6.x.x, babel-runtime@^6.11.6, babel-runtime@^6.22.0, babel-runtime core-js "^2.4.0" regenerator-runtime "^0.11.0" +babel-standalone@^6.26.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-standalone/-/babel-standalone-6.26.0.tgz#15fb3d35f2c456695815ebf1ed96fe7f015b6886" + integrity sha1-Ffs9NfLEVmlYFevx7Zb+fwFbaIY= + babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0: version "6.26.0" resolved "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" @@ -6751,7 +6887,7 @@ fb-watchman@^2.0.0: dependencies: bser "^2.0.0" -fbjs@^0.8.0, fbjs@^0.8.9: +fbjs@^0.8.0, fbjs@^0.8.4, fbjs@^0.8.9: version "0.8.17" resolved "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90= @@ -7279,7 +7415,7 @@ glob-watcher@^5.0.0: just-debounce "^1.0.0" object.defaults "^1.1.0" -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@~7.1.1: +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@~7.1.1: version "7.1.3" resolved "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== @@ -7612,6 +7748,11 @@ har-validator@~5.1.0: ajv "^6.5.5" har-schema "^2.0.0" +harmony-reflect@^1.4.6: + version "1.6.1" + resolved "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.1.tgz#c108d4f2bb451efef7a37861fdbdae72c9bdefa9" + integrity sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA== + has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" @@ -7736,7 +7877,7 @@ hastscript@^5.0.0: property-information "^5.0.1" space-separated-tokens "^1.0.0" -he@1.2.x, he@^1.2.0: +he@1.2.x, he@^1.1.1, he@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== @@ -7990,6 +8131,13 @@ icss-utils@^4.0.0: dependencies: postcss "^7.0.5" +identity-obj-proxy@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" + integrity sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ= + dependencies: + harmony-reflect "^1.4.6" + ieee754@^1.1.4: version "1.1.12" resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b" @@ -9020,7 +9168,7 @@ jest-serializer@^23.0.1: resolved "https://registry.npmjs.org/jest-serializer/-/jest-serializer-23.0.1.tgz#a3776aeb311e90fe83fab9e533e85102bd164165" integrity sha1-o3dq6zEekP6D+rnlM+hRAr0WQWU= -jest-snapshot@^23.6.0: +jest-snapshot@>=20.0.3, jest-snapshot@^23.6.0: version "23.6.0" resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-23.6.0.tgz#f9c2625d1b18acda01ec2d2b826c0ce58a5aa17a" integrity sha512-tM7/Bprftun6Cvj2Awh/ikS7zV3pVwjRYU2qNYS51VZHgaAMBs5l4o/69AiDHhQrj5+LA2Lq4VIvK7zYk/bswg== @@ -9036,6 +9184,13 @@ jest-snapshot@^23.6.0: pretty-format "^23.6.0" semver "^5.5.0" +jest-specific-snapshot@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/jest-specific-snapshot/-/jest-specific-snapshot-1.0.0.tgz#157c79e2534a6fea820fd475f5d17740c8f90833" + integrity sha512-EjCK8Ob8eneeQCdBuO06J1v1C1jklKK7VvCOG/iwQx+8byZ7iCY8+d9M7xlUJiu76ubycXtSkIrPrL+nqjJsjA== + dependencies: + jest-snapshot ">=20.0.3" + jest-util@^23.4.0: version "23.4.0" resolved "https://registry.npmjs.org/jest-util/-/jest-util-23.4.0.tgz#4d063cb927baf0a23831ff61bec2cbbf49793561" @@ -9728,6 +9883,11 @@ markdown-table@^1.1.0: resolved "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.2.tgz#c78db948fa879903a41bce522e3b96f801c63786" integrity sha512-NcWuJFHDA8V3wkDgR/j4+gZx+YQwstPgfQDV8ndUeWWzta3dnDTBxpVzqS9lkmJAuV5YX35lmyojl6HO5JXAgw== +marked@^0.3.12: + version "0.3.19" + resolved "https://registry.npmjs.org/marked/-/marked-0.3.19.tgz#5d47f709c4c9fc3c216b6d46127280f40b39d790" + integrity sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg== + marked@^0.4.0: version "0.4.0" resolved "https://registry.npmjs.org/marked/-/marked-0.4.0.tgz#9ad2c2a7a1791f10a852e0112f77b571dce10c66" @@ -9738,6 +9898,15 @@ marked@^0.5.2: resolved "https://registry.npmjs.org/marked/-/marked-0.5.2.tgz#3efdb27b1fd0ecec4f5aba362bddcd18120e5ba9" integrity sha512-fdZvBa7/vSQIZCi4uuwo2N3q+7jJURpMVCcbaX0S1Mg65WZ5ilXvC67MviJAsdjqqgD+CEq4RKo5AYGgINkVAA== +marksy@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/marksy/-/marksy-6.1.0.tgz#36482148a1115cc78570855f7ebd744bb453d5cc" + integrity sha512-xVAuJQxwdAljvFVqlY7CIRewn5YHGvCqeJkY1bbcTBfZV4dNDSZpHWTREb1MNu/oXYzKgg5pmTfE1DIW6M1zrA== + dependencies: + babel-standalone "^6.26.0" + he "^1.1.1" + marked "^0.3.12" + matchdep@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz#c6f34834a0d8dbc3b37c27ee8bbcb27c7775582e" @@ -10270,6 +10439,11 @@ nested-error-stacks@^2.0.0: resolved "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz#0fbdcf3e13fe4994781280524f8b96b0cdff9c61" integrity sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug== +nested-object-assign@^1.0.1: + version "1.0.3" + resolved "https://registry.npmjs.org/nested-object-assign/-/nested-object-assign-1.0.3.tgz#5aca69390d9affe5a612152b5f0843ae399ac597" + integrity sha512-kgq1CuvLyUcbcIuTiCA93cQ2IJFSlRwXcN+hLcb2qLJwC2qrePHGZZa7IipyWqaWF6tQjdax2pQnVxdq19Zzwg== + next-tick@1: version "1.0.0" resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" @@ -12073,6 +12247,15 @@ rc@^1.1.6, rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" +react-addons-create-fragment@^15.5.3: + version "15.6.2" + resolved "https://registry.npmjs.org/react-addons-create-fragment/-/react-addons-create-fragment-15.6.2.tgz#a394de7c2c7becd6b5475ba1b97ac472ce7c74f8" + integrity sha1-o5TefCx77Na1R1uhuXrEcs58dPg= + dependencies: + fbjs "^0.8.4" + loose-envify "^1.3.1" + object-assign "^4.1.0" + react-dev-utils@^6.1.0: version "6.1.1" resolved "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-6.1.1.tgz#a07e3e8923c4609d9f27e5af5207e3ca20724895" @@ -12103,6 +12286,19 @@ react-dev-utils@^6.1.0: strip-ansi "4.0.0" text-table "0.2.0" +react-docgen-typescript-webpack-plugin@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/react-docgen-typescript-webpack-plugin/-/react-docgen-typescript-webpack-plugin-1.1.0.tgz#4bfb8c3312fce487083924842cf03f66177ab9df" + integrity sha1-S/uMMxL85IcIOSSELPA/Zhd6ud8= + dependencies: + ajv "^6.1.1" + react-docgen-typescript "^1.2.3" + +react-docgen-typescript@^1.2.3: + version "1.12.2" + resolved "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-1.12.2.tgz#d5fb578d12f6876efdde69176f4ea658e75a9a29" + integrity sha512-pcot0jGiMIyhmwNeSU83GvClNwk9NbcnYHcGf4pKMmw5J43d5OzYRcTzrZTGlIOWjYfYazYhvTxjujE625P3Mw== + react-docgen@^3.0.0-rc.1: version "3.0.0-rc.2" resolved "https://registry.npmjs.org/react-docgen/-/react-docgen-3.0.0-rc.2.tgz#5939c64699fd9959da6d97d890f7b648e542dbcc" @@ -12329,6 +12525,14 @@ read-pkg-up@^3.0.0: find-up "^2.0.0" read-pkg "^3.0.0" +read-pkg-up@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" + integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== + dependencies: + find-up "^3.0.0" + read-pkg "^3.0.0" + read-pkg@^1.0.0: version "1.1.0" resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"