mirror of
https://github.com/storybookjs/storybook.git
synced 2025-04-04 13:01:07 +08:00
Merge remote-tracking branch 'origin/master' into webpack-4
# Conflicts: # app/polymer/package.json # app/react/package.json # app/vue/package.json # lib/core/package.json # lib/core/src/server/config/defaults/webpack.config.js # yarn.lock
This commit is contained in:
commit
9be830c69b
23
.github/ISSUE_TEMPLATE.md
vendored
23
.github/ISSUE_TEMPLATE.md
vendored
@ -1,4 +1,5 @@
|
||||
### Issue details
|
||||
If you are reporting a bug or requesting support, start here:
|
||||
### Bug or support request summary
|
||||
|
||||
_Please provide issue details here - What did you expect to happen? What happened instead?_
|
||||
|
||||
@ -24,3 +25,23 @@ _(A screencast can be useful for visual bugs, but it is not a substitute for a t
|
||||
```js
|
||||
// code here
|
||||
```
|
||||
End bug report support request - delete the rest below
|
||||
|
||||
|
||||
If you are creating a issue to track work to be completed, start here:
|
||||
### Work summary
|
||||
|
||||
_Please provide a description of the work to be completed here - Include some context as to why something needs to be done and link any related tickets._
|
||||
|
||||
### Where to start
|
||||
|
||||
_Please list the file(s) a contributor needs to figure out where to start work and include any docs or tutorials that may be applicable._
|
||||
|
||||
### Acceptance criteria
|
||||
|
||||
_Please include a checklist of the requirements necessary to close this ticket. The work should be narrowly scoped and limited to a few hours worth by an experienced developer at the most._
|
||||
|
||||
### Who to contact
|
||||
|
||||
_Add yourself and/or people who are familiar with the code changes and requirements. These people should be able to review the completed code._
|
||||
End work issue - please tag this issue with the correct status and type labels
|
||||
|
@ -100,7 +100,7 @@ See [Addon / Framework Support Table](ADDONS_SUPPORT.md)
|
||||
|
||||
## Live Examples
|
||||
|
||||
### 3.4.alpha
|
||||
### 4.0.alpha
|
||||
> Note, this is an Alpha version. Some of the features still might not be released
|
||||
|
||||
- [React Official](https://storybooks-official.netlify.com)
|
||||
@ -108,6 +108,12 @@ See [Addon / Framework Support Table](ADDONS_SUPPORT.md)
|
||||
- [Angular](https://storybooks-angular.netlify.com/)
|
||||
- [Polymer](https://storybooks-polymer.netlify.com/)
|
||||
|
||||
### 3.4
|
||||
- [React Official](https://release-3-4--storybooks-official.netlify.com)
|
||||
- [Vue](https://release-3-4--storybooks-vue.netlify.com/)
|
||||
- [Angular](https://release-3-4--storybooks-angular.netlify.com/)
|
||||
- [Polymer](https://release-3-4--storybooks-polymer.netlify.com/)
|
||||
|
||||
### 3.3
|
||||
- [React Official](https://release-3-3--storybooks-official.netlify.com)
|
||||
- [Vue](https://release-3-3--storybooks-vue.netlify.com/)
|
||||
|
32
__mocks__/inject-decorator.ts.txt
Normal file
32
__mocks__/inject-decorator.ts.txt
Normal file
@ -0,0 +1,32 @@
|
||||
import { Component } from '@angular/core';
|
||||
import { Store, StoreModule } from '@ngrx/store';
|
||||
import { storiesOf, moduleMetadata } from '@storybook/angular';
|
||||
|
||||
@Component({
|
||||
selector: 'storybook-comp-with-store',
|
||||
template: '<div>{{this.getSotreState()}}</div>',
|
||||
})
|
||||
class WithStoreComponent {
|
||||
private store: Store<any>;
|
||||
|
||||
constructor(store: Store<any>) {
|
||||
this.store = store;
|
||||
}
|
||||
|
||||
getSotreState(): string {
|
||||
return this.store === undefined ? 'Store is NOT injected' : 'Store is injected';
|
||||
}
|
||||
}
|
||||
|
||||
storiesOf('ngrx|Store', module)
|
||||
.addDecorator(
|
||||
moduleMetadata({
|
||||
imports: [StoreModule.forRoot({})],
|
||||
declarations: [WithStoreComponent],
|
||||
})
|
||||
)
|
||||
.add('With component', () => {
|
||||
return {
|
||||
component: WithStoreComponent,
|
||||
};
|
||||
});
|
39
__mocks__/inject-decorator.ts.ugly-comments-stories.txt
Normal file
39
__mocks__/inject-decorator.ts.ugly-comments-stories.txt
Normal file
@ -0,0 +1,39 @@
|
||||
/* global window */
|
||||
/* eslint-disable global-require, import/no-dynamic-require */
|
||||
|
||||
import React from 'react';
|
||||
|
||||
@Component({
|
||||
selector: 'storybook-comp-with-store',
|
||||
template: '<div>{{this.getSotreState()}}</div>',
|
||||
})
|
||||
class WithStoreComponent {
|
||||
private store: Store<any>;
|
||||
|
||||
constructor(store: Store<any>) {
|
||||
this.store = store;
|
||||
}
|
||||
|
||||
getSotreState(): string {
|
||||
return this.store === undefined ? 'Store is NOT injected' : 'Store is injected';
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
eslint-disable some kind
|
||||
of multi line ignore, though
|
||||
I'm not sure it's possible.
|
||||
*/
|
||||
|
||||
import { storiesOf } from '@storybook/react';
|
||||
|
||||
/* eslint-disable-line */ const x = 0;
|
||||
|
||||
// eslint-disable-line
|
||||
storiesOf('Foo', module)
|
||||
.add('bar', () => <div>baz</div>);
|
||||
|
||||
/*
|
||||
This is actually a good comment that will help
|
||||
users to understand what's going on here.
|
||||
*/
|
@ -1,5 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
const ObjectType = () => <span>{}</span>;
|
||||
|
||||
export default ObjectType;
|
@ -1,5 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
const ObjectType = () => <span>{}</span>;
|
||||
|
||||
export default ObjectType;
|
@ -1,7 +1,6 @@
|
||||
import PropTypes from 'prop-types';
|
||||
import React from 'react';
|
||||
|
||||
import ObjectType from './ObjectType';
|
||||
import Shape from './Shape';
|
||||
import OneOfType from './OneOfType';
|
||||
import ArrayOf from './ArrayOf';
|
||||
@ -20,7 +19,6 @@ const propTypeComponentMap = new Map([
|
||||
['arrayOf', ArrayOf],
|
||||
['objectOf', ObjectOf],
|
||||
// Might be overkill to have below proptypes as separate components *shrug*
|
||||
['object', ObjectType],
|
||||
['literal', Literal],
|
||||
['enum', OneOf],
|
||||
['instanceOf', InstanceOf],
|
||||
|
@ -36,6 +36,7 @@ import '@storybook/addon-knobs/register'
|
||||
|
||||
Now, write your stories with knobs.
|
||||
|
||||
### With React
|
||||
```js
|
||||
import { storiesOf } from '@storybook/react';
|
||||
import { withKnobs, text, boolean, number } from '@storybook/addon-knobs/react';
|
||||
@ -63,6 +64,28 @@ stories.add('as dynamic variables', () => {
|
||||
});
|
||||
```
|
||||
|
||||
### With Angular
|
||||
```js
|
||||
import { storiesOf } from '@storybook/angular';
|
||||
import { boolean, number, text, withKnobs } from '@storybook/addon-knobs/angular';
|
||||
|
||||
import { Button } from '@storybook/angular/demo';
|
||||
|
||||
const stories = storiesOf('Storybook Knobs', module);
|
||||
|
||||
// "withKnobs" decorator should be applied before the stories using knobs
|
||||
stories.addDecorator(withKnobs);
|
||||
|
||||
// Knobs for Angular props
|
||||
stories.add('with text', () => ({
|
||||
component: Button,
|
||||
props: {
|
||||
text: text('text', 'Hello Button'), // The first param of the knob function has to be exactly the same as the component input.
|
||||
},
|
||||
}));
|
||||
|
||||
```
|
||||
|
||||
Categorize your knobs by assigning them a `groupId`. When a `groupId` exists, tabs will appear in the knobs storybook panel to filter between the groups. Knobs without a `groupId` are automatically categorized into the `ALL` group.
|
||||
```
|
||||
// Knob assigned a groupId.
|
||||
|
@ -21,7 +21,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"babel-runtime": "^6.26.0",
|
||||
"marked": "^0.3.17",
|
||||
"marked": "^0.3.18",
|
||||
"prop-types": "^15.6.1",
|
||||
"util-deprecate": "^1.0.2"
|
||||
},
|
||||
|
@ -349,7 +349,7 @@ Run a custom test function for each story, rather than the default (a vanilla sn
|
||||
|
||||
### `renderer`
|
||||
|
||||
Pass a custom renderer (such as enzymes `mount`) to record snapshots.
|
||||
Pass a custom renderer (such as enzymes `mount`) to record snapshots. Note that setting `test` overrides `renderer`.
|
||||
|
||||
```js
|
||||
import initStoryshots from '@storybook/addon-storyshots';
|
||||
|
@ -53,7 +53,7 @@ export default function testStorySnapshots(options = {}) {
|
||||
serializer: options.serializer,
|
||||
};
|
||||
|
||||
const testMethod = options.test || snapshotWithOptions({ options: snapshotOptions });
|
||||
const testMethod = options.test || snapshotWithOptions(snapshotOptions);
|
||||
|
||||
methods.forEach(method => {
|
||||
if (typeof testMethod[method] === 'function') {
|
||||
|
@ -1,144 +1,212 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`Storyshots Another Button with some emoji 1`] = `
|
||||
<button
|
||||
className="css-1yjiefr"
|
||||
<Button
|
||||
onClick={[Function]}
|
||||
>
|
||||
<span
|
||||
aria-label="so cool"
|
||||
role="img"
|
||||
<Component
|
||||
className="css-1yjiefr"
|
||||
onClick={[Function]}
|
||||
>
|
||||
😀 😎 👍 💯
|
||||
</span>
|
||||
</button>
|
||||
<button
|
||||
className="css-1yjiefr"
|
||||
onClick={[Function]}
|
||||
>
|
||||
<span
|
||||
aria-label="so cool"
|
||||
role="img"
|
||||
>
|
||||
😀 😎 👍 💯
|
||||
</span>
|
||||
</button>
|
||||
</Component>
|
||||
</Button>
|
||||
`;
|
||||
|
||||
exports[`Storyshots Another Button with text 1`] = `
|
||||
<button
|
||||
className="css-1yjiefr"
|
||||
<Button
|
||||
onClick={[Function]}
|
||||
>
|
||||
Hello Button
|
||||
</button>
|
||||
<Component
|
||||
className="css-1yjiefr"
|
||||
onClick={[Function]}
|
||||
>
|
||||
<button
|
||||
className="css-1yjiefr"
|
||||
onClick={[Function]}
|
||||
>
|
||||
Hello Button
|
||||
</button>
|
||||
</Component>
|
||||
</Button>
|
||||
`;
|
||||
|
||||
exports[`Storyshots Button with some emoji 1`] = `
|
||||
<button
|
||||
className="css-1yjiefr"
|
||||
<Button
|
||||
onClick={[Function]}
|
||||
>
|
||||
<span
|
||||
aria-label="so cool"
|
||||
role="img"
|
||||
<Component
|
||||
className="css-1yjiefr"
|
||||
onClick={[Function]}
|
||||
>
|
||||
😀 😎 👍 💯
|
||||
</span>
|
||||
</button>
|
||||
<button
|
||||
className="css-1yjiefr"
|
||||
onClick={[Function]}
|
||||
>
|
||||
<span
|
||||
aria-label="so cool"
|
||||
role="img"
|
||||
>
|
||||
😀 😎 👍 💯
|
||||
</span>
|
||||
</button>
|
||||
</Component>
|
||||
</Button>
|
||||
`;
|
||||
|
||||
exports[`Storyshots Button with text 1`] = `
|
||||
<button
|
||||
className="css-1yjiefr"
|
||||
<Button
|
||||
onClick={[Function]}
|
||||
>
|
||||
Hello Button
|
||||
</button>
|
||||
<Component
|
||||
className="css-1yjiefr"
|
||||
onClick={[Function]}
|
||||
>
|
||||
<button
|
||||
className="css-1yjiefr"
|
||||
onClick={[Function]}
|
||||
>
|
||||
Hello Button
|
||||
</button>
|
||||
</Component>
|
||||
</Button>
|
||||
`;
|
||||
|
||||
exports[`Storyshots Welcome to Storybook 1`] = `
|
||||
<article
|
||||
className="css-1fqbdip"
|
||||
<Welcome
|
||||
showApp={[Function]}
|
||||
showKind={null}
|
||||
showStory={null}
|
||||
>
|
||||
<h1
|
||||
className="css-nil"
|
||||
>
|
||||
Welcome to storybook
|
||||
</h1>
|
||||
<p>
|
||||
This is a UI component dev environment for your app.
|
||||
</p>
|
||||
<p>
|
||||
We've added some basic stories inside the
|
||||
<code
|
||||
className="css-mteq83"
|
||||
<glamorous(article)>
|
||||
<article
|
||||
className="css-1fqbdip"
|
||||
>
|
||||
src/stories
|
||||
</code>
|
||||
directory.
|
||||
<br />
|
||||
A story is a single state of one or more UI components. You can have as many stories as you want.
|
||||
<br />
|
||||
(Basically a story is like a visual test case.)
|
||||
</p>
|
||||
<p>
|
||||
See these sample
|
||||
|
||||
<button
|
||||
className="css-1opliz7"
|
||||
onClick={[Function]}
|
||||
>
|
||||
stories
|
||||
</button>
|
||||
|
||||
for a component called
|
||||
<code
|
||||
className="css-mteq83"
|
||||
>
|
||||
Button
|
||||
</code>
|
||||
.
|
||||
</p>
|
||||
<p>
|
||||
Just like that, you can add your own components as stories.
|
||||
<br />
|
||||
You can also edit those components and see changes right away.
|
||||
<br />
|
||||
(Try editing the
|
||||
<code
|
||||
className="css-mteq83"
|
||||
>
|
||||
Button
|
||||
</code>
|
||||
stories located at
|
||||
|
||||
<code
|
||||
className="css-mteq83"
|
||||
>
|
||||
src/stories/index.js
|
||||
</code>
|
||||
.)
|
||||
</p>
|
||||
<p>
|
||||
Usually we create stories with smaller UI components in the app.
|
||||
<br />
|
||||
Have a look at the
|
||||
|
||||
<a
|
||||
className="css-ca0824"
|
||||
href="https://storybook.js.org/basics/writing-stories"
|
||||
rel="noopener noreferrer"
|
||||
target="_blank"
|
||||
>
|
||||
Writing Stories
|
||||
</a>
|
||||
|
||||
section in our documentation.
|
||||
</p>
|
||||
<p
|
||||
className="css-bwdon3"
|
||||
>
|
||||
<b>
|
||||
NOTE:
|
||||
</b>
|
||||
<br />
|
||||
Have a look at the
|
||||
<code
|
||||
className="css-mteq83"
|
||||
>
|
||||
.storybook/webpack.config.js
|
||||
</code>
|
||||
to add webpack loaders and plugins you are using in this project.
|
||||
</p>
|
||||
</article>
|
||||
<glamorous(h1)>
|
||||
<h1
|
||||
className="css-nil"
|
||||
>
|
||||
Welcome to storybook
|
||||
</h1>
|
||||
</glamorous(h1)>
|
||||
<p>
|
||||
This is a UI component dev environment for your app.
|
||||
</p>
|
||||
<p>
|
||||
We've added some basic stories inside the
|
||||
<glamorous(code)>
|
||||
<code
|
||||
className="css-mteq83"
|
||||
>
|
||||
src/stories
|
||||
</code>
|
||||
</glamorous(code)>
|
||||
directory.
|
||||
<br />
|
||||
A story is a single state of one or more UI components. You can have as many stories as you want.
|
||||
<br />
|
||||
(Basically a story is like a visual test case.)
|
||||
</p>
|
||||
<p>
|
||||
See these sample
|
||||
|
||||
<glamorous(glamorous(glamorous(a)))
|
||||
onClick={[Function]}
|
||||
>
|
||||
<button
|
||||
className="css-1opliz7"
|
||||
onClick={[Function]}
|
||||
>
|
||||
stories
|
||||
</button>
|
||||
</glamorous(glamorous(glamorous(a)))>
|
||||
|
||||
for a component called
|
||||
<glamorous(code)>
|
||||
<code
|
||||
className="css-mteq83"
|
||||
>
|
||||
Button
|
||||
</code>
|
||||
</glamorous(code)>
|
||||
.
|
||||
</p>
|
||||
<p>
|
||||
Just like that, you can add your own components as stories.
|
||||
<br />
|
||||
You can also edit those components and see changes right away.
|
||||
<br />
|
||||
(Try editing the
|
||||
<glamorous(code)>
|
||||
<code
|
||||
className="css-mteq83"
|
||||
>
|
||||
Button
|
||||
</code>
|
||||
</glamorous(code)>
|
||||
stories located at
|
||||
|
||||
<glamorous(code)>
|
||||
<code
|
||||
className="css-mteq83"
|
||||
>
|
||||
src/stories/index.js
|
||||
</code>
|
||||
</glamorous(code)>
|
||||
.)
|
||||
</p>
|
||||
<p>
|
||||
Usually we create stories with smaller UI components in the app.
|
||||
<br />
|
||||
Have a look at the
|
||||
|
||||
<glamorous(a)
|
||||
href="https://storybook.js.org/basics/writing-stories"
|
||||
rel="noopener noreferrer"
|
||||
target="_blank"
|
||||
>
|
||||
<a
|
||||
className="css-ca0824"
|
||||
href="https://storybook.js.org/basics/writing-stories"
|
||||
rel="noopener noreferrer"
|
||||
target="_blank"
|
||||
>
|
||||
Writing Stories
|
||||
</a>
|
||||
</glamorous(a)>
|
||||
|
||||
section in our documentation.
|
||||
</p>
|
||||
<glamorous(p)>
|
||||
<p
|
||||
className="css-bwdon3"
|
||||
>
|
||||
<b>
|
||||
NOTE:
|
||||
</b>
|
||||
<br />
|
||||
Have a look at the
|
||||
<glamorous(code)>
|
||||
<code
|
||||
className="css-mteq83"
|
||||
>
|
||||
.storybook/webpack.config.js
|
||||
</code>
|
||||
</glamorous(code)>
|
||||
to add webpack loaders and plugins you are using in this project.
|
||||
</p>
|
||||
</glamorous(p)>
|
||||
</article>
|
||||
</glamorous(article)>
|
||||
</Welcome>
|
||||
`;
|
||||
|
@ -21,10 +21,6 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@storybook/components": "3.4.0-rc.3",
|
||||
"acorn": "^5.5.3",
|
||||
"acorn-es7": "^0.1.0",
|
||||
"acorn-jsx": "^4.1.1",
|
||||
"acorn-stage3": "^0.6.0",
|
||||
"babel-runtime": "^6.26.0",
|
||||
"estraverse": "^4.2.0",
|
||||
"loader-utils": "^1.1.0",
|
||||
|
@ -34,6 +34,56 @@ storiesOf('Custom|ng-content', module).addDecorator(withStorySource(__STORY__, _
|
||||
"
|
||||
`;
|
||||
|
||||
exports[`inject-decorator positive - ts calculates "adds" map 1`] = `
|
||||
Object {
|
||||
"ngrx|Store@With component": Object {
|
||||
"endLoc": Object {
|
||||
"col": 3,
|
||||
"line": 32,
|
||||
},
|
||||
"startLoc": Object {
|
||||
"col": 7,
|
||||
"line": 28,
|
||||
},
|
||||
},
|
||||
}
|
||||
`;
|
||||
|
||||
exports[`inject-decorator positive - ts injects stories decorator after the all "storiesOf" functions 1`] = `
|
||||
"import { Component } from '@angular/core';
|
||||
import { Store, StoreModule } from '@ngrx/store';
|
||||
import { storiesOf, moduleMetadata } from '@storybook/angular';
|
||||
|
||||
@Component({
|
||||
selector: 'storybook-comp-with-store',
|
||||
template: '<div>{{this.getSotreState()}}</div>',
|
||||
})
|
||||
class WithStoreComponent {
|
||||
private store: Store<any>;
|
||||
|
||||
constructor(store: Store<any>) {
|
||||
this.store = store;
|
||||
}
|
||||
|
||||
getSotreState(): string {
|
||||
return this.store === undefined ? 'Store is NOT injected' : 'Store is injected';
|
||||
}
|
||||
}
|
||||
|
||||
storiesOf('ngrx|Store', module).addDecorator(withStorySource(__STORY__, __ADDS_MAP__))
|
||||
.addDecorator(
|
||||
moduleMetadata({
|
||||
imports: [StoreModule.forRoot({})],
|
||||
declarations: [WithStoreComponent],
|
||||
})
|
||||
)
|
||||
.add('With component', () => {
|
||||
return {
|
||||
component: WithStoreComponent,
|
||||
};
|
||||
});"
|
||||
`;
|
||||
|
||||
exports[`inject-decorator positive calculates "adds" map 1`] = `
|
||||
Object {
|
||||
"Addons|Info.Decorator@Use Info as story decorator": Object {
|
||||
@ -336,6 +386,38 @@ storiesOf('Addons|Info.GitHub issues', module).addDecorator(withStorySource(__ST
|
||||
"
|
||||
`;
|
||||
|
||||
exports[`inject-decorator stories with ugly comments in ts should delete ugly comments from the generated story source 1`] = `
|
||||
"import React from 'react';
|
||||
|
||||
@Component({
|
||||
selector: 'storybook-comp-with-store',
|
||||
template: '<div>{{this.getSotreState()}}</div>',
|
||||
})
|
||||
class WithStoreComponent {
|
||||
private store: Store<any>;
|
||||
|
||||
constructor(store: Store<any>) {
|
||||
this.store = store;
|
||||
}
|
||||
|
||||
getSotreState(): string {
|
||||
return this.store === undefined ? 'Store is NOT injected' : 'Store is injected';
|
||||
}
|
||||
}
|
||||
|
||||
import { storiesOf } from '@storybook/react';
|
||||
|
||||
const x = 0;
|
||||
|
||||
storiesOf('Foo', module).add('bar', () => <div>baz</div>);
|
||||
|
||||
/*
|
||||
This is actually a good comment that will help
|
||||
users to understand what's going on here.
|
||||
*/
|
||||
"
|
||||
`;
|
||||
|
||||
exports[`inject-decorator stories with ugly comments should delete ugly comments from the generated story source 1`] = `
|
||||
"import React from 'react';
|
||||
|
||||
|
@ -1,24 +1,7 @@
|
||||
import prettier from 'prettier';
|
||||
import { handleADD, handleSTORYOF } from './parse-helpers';
|
||||
|
||||
const estraverse = require('estraverse');
|
||||
const acorn = require('acorn');
|
||||
|
||||
require('acorn-stage3/inject')(acorn);
|
||||
require('acorn-jsx/inject')(acorn);
|
||||
require('acorn-es7')(acorn);
|
||||
|
||||
const acornConfig = {
|
||||
ecmaVersion: '9',
|
||||
sourceType: 'module',
|
||||
ranges: true,
|
||||
locations: true,
|
||||
plugins: {
|
||||
jsx: true,
|
||||
stage3: true,
|
||||
es7: true,
|
||||
},
|
||||
};
|
||||
import { patchNode } from './parse-helpers';
|
||||
import { splitSTORYOF, findAddsMap } from './traverse-helpers';
|
||||
import getParser from './parsers';
|
||||
|
||||
function isUglyComment(comment, uglyCommentsRegex) {
|
||||
return uglyCommentsRegex.some(regex => regex.test(comment));
|
||||
@ -30,6 +13,7 @@ function generateSourceWithoutUglyComments(source, { comments, uglyCommentsRegex
|
||||
|
||||
comments
|
||||
.filter(comment => isUglyComment(comment.value.trim(), uglyCommentsRegex))
|
||||
.map(patchNode)
|
||||
.forEach(comment => {
|
||||
parts.pop();
|
||||
|
||||
@ -43,55 +27,41 @@ function generateSourceWithoutUglyComments(source, { comments, uglyCommentsRegex
|
||||
return parts.join('');
|
||||
}
|
||||
|
||||
function prettifyCode(source, { prettierConfig }) {
|
||||
return prettier.format(source, prettierConfig);
|
||||
function prettifyCode(source, { prettierConfig, parser }) {
|
||||
let config = prettierConfig;
|
||||
|
||||
if (!config.parser && parser && parser !== 'javascript') {
|
||||
config = {
|
||||
...prettierConfig,
|
||||
parser,
|
||||
};
|
||||
}
|
||||
|
||||
return prettier.format(source, config);
|
||||
}
|
||||
|
||||
export function generateSourceWithDecorators(source, decorator) {
|
||||
const comments = [];
|
||||
export function generateSourceWithDecorators(source, decorator, parserType) {
|
||||
const parser = getParser(parserType);
|
||||
const ast = parser.parse(source);
|
||||
|
||||
const config = {
|
||||
...acornConfig,
|
||||
onComment: comments,
|
||||
};
|
||||
const { comments = [] } = ast;
|
||||
|
||||
const ast = acorn.parse(source, config);
|
||||
|
||||
let lastIndex = 0;
|
||||
const parts = [source];
|
||||
|
||||
estraverse.traverse(ast, {
|
||||
fallback: 'iteration',
|
||||
enter: node => {
|
||||
if (node.type === 'CallExpression') {
|
||||
lastIndex = handleSTORYOF(node, parts, source, lastIndex);
|
||||
}
|
||||
},
|
||||
});
|
||||
const parts = splitSTORYOF(ast, source);
|
||||
|
||||
const newSource = parts.join(decorator);
|
||||
|
||||
return {
|
||||
changed: lastIndex > 0,
|
||||
changed: parts.length > 1,
|
||||
source: newSource,
|
||||
comments,
|
||||
};
|
||||
}
|
||||
|
||||
export function generateAddsMap(source) {
|
||||
const ast = acorn.parse(source, acornConfig);
|
||||
const adds = {};
|
||||
export function generateAddsMap(source, parserType) {
|
||||
const parser = getParser(parserType);
|
||||
const ast = parser.parse(source);
|
||||
|
||||
estraverse.traverse(ast, {
|
||||
fallback: 'iteration',
|
||||
enter: (node, parent) => {
|
||||
if (node.type === 'MemberExpression') {
|
||||
handleADD(node, parent, adds);
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
return adds;
|
||||
return findAddsMap(ast);
|
||||
}
|
||||
|
||||
export function generateStorySource({ source, ...options }) {
|
||||
|
@ -16,7 +16,11 @@ function extendOptions(source, comments, options) {
|
||||
}
|
||||
|
||||
function inject(source, decorator, options = {}) {
|
||||
const { changed, source: newSource, comments } = generateSourceWithDecorators(source, decorator);
|
||||
const { changed, source: newSource, comments } = generateSourceWithDecorators(
|
||||
source,
|
||||
decorator,
|
||||
options.parser
|
||||
);
|
||||
|
||||
if (!changed) {
|
||||
return {
|
||||
@ -27,7 +31,7 @@ function inject(source, decorator, options = {}) {
|
||||
}
|
||||
|
||||
const storySource = generateStorySource(extendOptions(source, comments, options));
|
||||
const addsMap = generateAddsMap(storySource);
|
||||
const addsMap = generateAddsMap(storySource, options.parser);
|
||||
|
||||
return {
|
||||
source: newSource,
|
||||
|
@ -23,7 +23,24 @@ describe('inject-decorator', () => {
|
||||
|
||||
describe('positive - angular', () => {
|
||||
const source = fs.readFileSync('./__mocks__/inject-decorator.angular-stories.txt', 'utf-8');
|
||||
const result = injectDecorator(source, ADD_DECORATOR_STATEMENT);
|
||||
const result = injectDecorator(source, ADD_DECORATOR_STATEMENT, { parser: 'typescript' });
|
||||
|
||||
it('returns "changed" flag', () => {
|
||||
expect(result.changed).toBeTruthy();
|
||||
});
|
||||
|
||||
it('injects stories decorator after the all "storiesOf" functions', () => {
|
||||
expect(result.source).toMatchSnapshot();
|
||||
});
|
||||
|
||||
it('calculates "adds" map', () => {
|
||||
expect(result.addsMap).toMatchSnapshot();
|
||||
});
|
||||
});
|
||||
|
||||
describe('positive - ts', () => {
|
||||
const source = fs.readFileSync('./__mocks__/inject-decorator.ts.txt', 'utf-8');
|
||||
const result = injectDecorator(source, ADD_DECORATOR_STATEMENT, { parser: 'typescript' });
|
||||
|
||||
it('returns "changed" flag', () => {
|
||||
expect(result.changed).toBeTruthy();
|
||||
@ -50,6 +67,18 @@ describe('inject-decorator', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('stories with ugly comments in ts', () => {
|
||||
const source = fs.readFileSync(
|
||||
'./__mocks__/inject-decorator.ts.ugly-comments-stories.txt',
|
||||
'utf-8'
|
||||
);
|
||||
const result = injectDecorator(source, ADD_DECORATOR_STATEMENT, { parser: 'typescript' });
|
||||
|
||||
it('should delete ugly comments from the generated story source', () => {
|
||||
expect(result.storySource).toMatchSnapshot();
|
||||
});
|
||||
});
|
||||
|
||||
it('will not change the source when there are no "storiesOf" functions', () => {
|
||||
const source = fs.readFileSync('./__mocks__/inject-decorator.no-stories.txt', 'utf-8');
|
||||
|
||||
|
@ -15,7 +15,7 @@ function getKindFromStoryOfNode(object) {
|
||||
|
||||
const kindArgument = object.arguments[0];
|
||||
|
||||
if (kindArgument.type === 'Literal') {
|
||||
if (kindArgument.type === 'Literal' || kindArgument.type === 'StringLiteral') {
|
||||
return kindArgument.value;
|
||||
}
|
||||
|
||||
@ -41,6 +41,24 @@ function findRelatedKind(object) {
|
||||
return findRelatedKind(object.callee.object);
|
||||
}
|
||||
|
||||
export function patchNode(node) {
|
||||
if (node.range && node.range.length === 2 && node.start === undefined && node.end === undefined) {
|
||||
const [start, end] = node.range;
|
||||
|
||||
// eslint-disable-next-line no-param-reassign
|
||||
node.start = start;
|
||||
// eslint-disable-next-line no-param-reassign
|
||||
node.end = end;
|
||||
}
|
||||
|
||||
if (!node.range && node.start !== undefined && node.end !== undefined) {
|
||||
// eslint-disable-next-line no-param-reassign
|
||||
node.range = [node.start, node.end];
|
||||
}
|
||||
|
||||
return node;
|
||||
}
|
||||
|
||||
export function handleADD(node, parent, adds) {
|
||||
if (!node.property || !node.property.name || node.property.name.indexOf('add') !== 0) {
|
||||
return;
|
||||
@ -55,8 +73,8 @@ export function handleADD(node, parent, adds) {
|
||||
const storyName = addArgs[0];
|
||||
const lastArg = addArgs[addArgs.length - 1];
|
||||
|
||||
if (storyName.type !== 'Literal') {
|
||||
// if story name is not literal, it much harder to extract it
|
||||
if (storyName.type !== 'Literal' && storyName.type !== 'StringLiteral') {
|
||||
// if story name is not literal, it's much harder to extract it
|
||||
return;
|
||||
}
|
||||
|
||||
|
15
addons/storysource/src/loader/parsers/index.js
Normal file
15
addons/storysource/src/loader/parsers/index.js
Normal file
@ -0,0 +1,15 @@
|
||||
function getParser(type) {
|
||||
if (type === 'javascript' || !type) {
|
||||
// eslint-disable-next-line global-require
|
||||
return require('./parser-js').default;
|
||||
}
|
||||
|
||||
if (type === 'typescript') {
|
||||
// eslint-disable-next-line global-require
|
||||
return require('./parser-ts').default;
|
||||
}
|
||||
|
||||
throw new Error(`Parser of type "${type}" is not supported`);
|
||||
}
|
||||
|
||||
export default getParser;
|
9
addons/storysource/src/loader/parsers/parser-js.js
Normal file
9
addons/storysource/src/loader/parsers/parser-js.js
Normal file
@ -0,0 +1,9 @@
|
||||
import parseJs from 'prettier/parser-babylon';
|
||||
|
||||
function parse(source) {
|
||||
return parseJs(source);
|
||||
}
|
||||
|
||||
export default {
|
||||
parse,
|
||||
};
|
9
addons/storysource/src/loader/parsers/parser-ts.js
Normal file
9
addons/storysource/src/loader/parsers/parser-ts.js
Normal file
@ -0,0 +1,9 @@
|
||||
import parseTs from 'prettier/parser-typescript';
|
||||
|
||||
function parse(source) {
|
||||
return parseTs(source);
|
||||
}
|
||||
|
||||
export default {
|
||||
parse,
|
||||
};
|
38
addons/storysource/src/loader/traverse-helpers.js
Normal file
38
addons/storysource/src/loader/traverse-helpers.js
Normal file
@ -0,0 +1,38 @@
|
||||
import { handleADD, handleSTORYOF, patchNode } from './parse-helpers';
|
||||
|
||||
const estraverse = require('estraverse');
|
||||
|
||||
export function splitSTORYOF(ast, source) {
|
||||
let lastIndex = 0;
|
||||
const parts = [source];
|
||||
|
||||
estraverse.traverse(ast, {
|
||||
fallback: 'iteration',
|
||||
enter: node => {
|
||||
patchNode(node);
|
||||
|
||||
if (node.type === 'CallExpression') {
|
||||
lastIndex = handleSTORYOF(node, parts, source, lastIndex);
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
return parts;
|
||||
}
|
||||
|
||||
export function findAddsMap(ast) {
|
||||
const adds = {};
|
||||
|
||||
estraverse.traverse(ast, {
|
||||
fallback: 'iteration',
|
||||
enter: (node, parent) => {
|
||||
patchNode(node);
|
||||
|
||||
if (node.type === 'MemberExpression') {
|
||||
handleADD(node, parent, adds);
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
return adds;
|
||||
}
|
@ -49,7 +49,6 @@
|
||||
"react": "^16.0.0",
|
||||
"react-dev-utils": "zanettin/react-dev-utils",
|
||||
"react-dom": "^16.0.0",
|
||||
"redux": "^3.6.0",
|
||||
"sass-loader": "^6.0.7",
|
||||
"ts-loader": "^4.1.0",
|
||||
"util-deprecate": "^1.0.2",
|
||||
|
63
app/angular/src/client/preview/index.js
vendored
63
app/angular/src/client/preview/index.js
vendored
@ -1,30 +1,9 @@
|
||||
import { window, navigator } from 'global';
|
||||
import { createStore } from 'redux';
|
||||
import addons from '@storybook/addons';
|
||||
import createChannel from '@storybook/channel-postmessage';
|
||||
import { handleKeyboardShortcuts } from '@storybook/ui/dist/libs/key_events';
|
||||
import {
|
||||
StoryStore,
|
||||
ClientApi,
|
||||
ConfigApi,
|
||||
Actions,
|
||||
reducer,
|
||||
syncUrlWithStore,
|
||||
} from '@storybook/core/client';
|
||||
import { start } from '@storybook/core/client';
|
||||
|
||||
import render from './render';
|
||||
|
||||
// check whether we're running on node/browser
|
||||
const isBrowser =
|
||||
navigator &&
|
||||
navigator.userAgent &&
|
||||
navigator.userAgent !== 'storyshots' &&
|
||||
!(navigator.userAgent.indexOf('Node.js') > -1) &&
|
||||
!(navigator.userAgent.indexOf('jsdom') > -1);
|
||||
const { clientApi, configApi, forceReRender } = start(render);
|
||||
|
||||
const storyStore = new StoryStore();
|
||||
const reduxStore = createStore(reducer);
|
||||
const context = { storyStore, reduxStore };
|
||||
const clientApi = new ClientApi(context);
|
||||
export const {
|
||||
storiesOf,
|
||||
setAddon,
|
||||
@ -34,39 +13,5 @@ export const {
|
||||
getStorybook,
|
||||
} = clientApi;
|
||||
|
||||
let channel;
|
||||
if (isBrowser) {
|
||||
// create preview channel
|
||||
channel = createChannel({ page: 'preview' });
|
||||
channel.on('setCurrentStory', data => {
|
||||
reduxStore.dispatch(Actions.selectStory(data.kind, data.story));
|
||||
});
|
||||
addons.setChannel(channel);
|
||||
Object.assign(context, { channel });
|
||||
|
||||
syncUrlWithStore(reduxStore);
|
||||
|
||||
// Handle keyboard shortcuts
|
||||
window.onkeydown = handleKeyboardShortcuts(channel);
|
||||
}
|
||||
|
||||
// Provide access to external scripts if `window` is defined.
|
||||
// NOTE this is different to isBrowser, primarily for the JSDOM use case
|
||||
if (typeof window !== 'undefined') {
|
||||
window.__STORYBOOK_CLIENT_API__ = clientApi;
|
||||
window.__STORYBOOK_ADDONS_CHANNEL__ = channel; // may not be defined
|
||||
}
|
||||
|
||||
const configApi = new ConfigApi({ ...context, clearDecorators });
|
||||
export const { configure } = configApi;
|
||||
|
||||
// initialize the UI
|
||||
const renderUI = () => {
|
||||
if (isBrowser) {
|
||||
render(context);
|
||||
}
|
||||
};
|
||||
|
||||
reduxStore.subscribe(renderUI);
|
||||
|
||||
export const forceReRender = () => render(context, true);
|
||||
export { forceReRender };
|
||||
|
@ -28,7 +28,7 @@
|
||||
"@storybook/core": "3.4.0-rc.3",
|
||||
"@storybook/node-logger": "3.4.0-rc.3",
|
||||
"@storybook/ui": "3.4.0-rc.3",
|
||||
"@webcomponents/webcomponentsjs": "^1.1.0",
|
||||
"@webcomponents/webcomponentsjs": "^1.1.1",
|
||||
"airbnb-js-shims": "^1.4.1",
|
||||
"babel-loader": "^7.1.4",
|
||||
"babel-plugin-macros": "^2.2.0",
|
||||
@ -51,7 +51,6 @@
|
||||
"react": "^16.0.0",
|
||||
"react-dev-utils": "zanettin/react-dev-utils",
|
||||
"react-dom": "^16.0.0",
|
||||
"redux": "^3.7.2",
|
||||
"util-deprecate": "^1.0.2",
|
||||
"webpack": "^4.1.1",
|
||||
"webpack-hot-middleware": "^2.21.2"
|
||||
|
@ -1,32 +1,9 @@
|
||||
import { createStore } from 'redux';
|
||||
import addons from '@storybook/addons';
|
||||
import { navigator, window } from 'global';
|
||||
import createChannel from '@storybook/channel-postmessage';
|
||||
import { handleKeyboardShortcuts } from '@storybook/ui/dist/libs/key_events';
|
||||
import {
|
||||
StoryStore,
|
||||
ClientApi,
|
||||
ConfigApi,
|
||||
Actions,
|
||||
reducer,
|
||||
syncUrlWithStore,
|
||||
} from '@storybook/core/client';
|
||||
import { start } from '@storybook/core/client';
|
||||
|
||||
import render from './render';
|
||||
|
||||
// check whether we're running on node/browser
|
||||
const isBrowser =
|
||||
navigator &&
|
||||
navigator.userAgent &&
|
||||
navigator.userAgent !== 'storyshots' &&
|
||||
!(navigator.userAgent.indexOf('Node.js') > -1) &&
|
||||
!(navigator.userAgent.indexOf('jsdom') > -1);
|
||||
const { clientApi, configApi, forceReRender } = start(render);
|
||||
|
||||
const storyStore = new StoryStore();
|
||||
const reduxStore = createStore(reducer);
|
||||
const context = { storyStore, reduxStore };
|
||||
|
||||
const clientApi = new ClientApi(context);
|
||||
export const {
|
||||
storiesOf,
|
||||
setAddon,
|
||||
@ -36,39 +13,5 @@ export const {
|
||||
getStorybook,
|
||||
} = clientApi;
|
||||
|
||||
let channel;
|
||||
if (isBrowser) {
|
||||
// setup preview channel
|
||||
channel = createChannel({ page: 'preview' });
|
||||
channel.on('setCurrentStory', data => {
|
||||
reduxStore.dispatch(Actions.selectStory(data.kind, data.story));
|
||||
});
|
||||
addons.setChannel(channel);
|
||||
Object.assign(context, { channel });
|
||||
|
||||
syncUrlWithStore(reduxStore);
|
||||
|
||||
// Handle keyboard shortcuts
|
||||
window.onkeydown = handleKeyboardShortcuts(channel);
|
||||
}
|
||||
|
||||
// Provide access to external scripts if `window` is defined.
|
||||
// NOTE this is different to isBrowser, primarily for the JSDOM use case
|
||||
if (typeof window !== 'undefined') {
|
||||
window.__STORYBOOK_CLIENT_API__ = clientApi;
|
||||
window.__STORYBOOK_ADDONS_CHANNEL__ = channel; // may not be defined
|
||||
}
|
||||
|
||||
const configApi = new ConfigApi({ clearDecorators, ...context });
|
||||
export const { configure } = configApi;
|
||||
|
||||
// initialize the UI
|
||||
const renderUI = () => {
|
||||
if (isBrowser) {
|
||||
render(context);
|
||||
}
|
||||
};
|
||||
|
||||
reduxStore.subscribe(renderUI);
|
||||
|
||||
export const forceReRender = () => render(context, true);
|
||||
export { forceReRender };
|
||||
|
@ -57,7 +57,6 @@
|
||||
"markdown-loader": "^2.0.2",
|
||||
"prop-types": "^15.6.1",
|
||||
"react-dev-utils": "zanettin/react-dev-utils",
|
||||
"redux": "^3.7.2",
|
||||
"util-deprecate": "^1.0.2",
|
||||
"webpack": "^4.1.1",
|
||||
"webpack-hot-middleware": "^2.21.2"
|
||||
|
@ -1,32 +1,9 @@
|
||||
import { createStore } from 'redux';
|
||||
import addons from '@storybook/addons';
|
||||
import { navigator, window } from 'global';
|
||||
import createChannel from '@storybook/channel-postmessage';
|
||||
import { handleKeyboardShortcuts } from '@storybook/ui/dist/libs/key_events';
|
||||
import {
|
||||
StoryStore,
|
||||
ClientApi,
|
||||
ConfigApi,
|
||||
Actions,
|
||||
reducer,
|
||||
syncUrlWithStore,
|
||||
} from '@storybook/core/client';
|
||||
import { start } from '@storybook/core/client';
|
||||
|
||||
import render from './render';
|
||||
|
||||
// check whether we're running on node/browser
|
||||
const isBrowser =
|
||||
navigator &&
|
||||
navigator.userAgent &&
|
||||
navigator.userAgent !== 'storyshots' &&
|
||||
!(navigator.userAgent.indexOf('Node.js') > -1) &&
|
||||
!(navigator.userAgent.indexOf('jsdom') > -1);
|
||||
const { clientApi, configApi, forceReRender } = start(render);
|
||||
|
||||
const storyStore = new StoryStore();
|
||||
const reduxStore = createStore(reducer);
|
||||
const context = { storyStore, reduxStore };
|
||||
|
||||
const clientApi = new ClientApi(context);
|
||||
export const {
|
||||
storiesOf,
|
||||
setAddon,
|
||||
@ -36,39 +13,5 @@ export const {
|
||||
getStorybook,
|
||||
} = clientApi;
|
||||
|
||||
let channel;
|
||||
if (isBrowser) {
|
||||
// setup preview channel
|
||||
channel = createChannel({ page: 'preview' });
|
||||
channel.on('setCurrentStory', data => {
|
||||
reduxStore.dispatch(Actions.selectStory(data.kind, data.story));
|
||||
});
|
||||
addons.setChannel(channel);
|
||||
Object.assign(context, { channel });
|
||||
|
||||
syncUrlWithStore(reduxStore);
|
||||
|
||||
// Handle keyboard shortcuts
|
||||
window.onkeydown = handleKeyboardShortcuts(channel);
|
||||
}
|
||||
|
||||
// Provide access to external scripts if `window` is defined.
|
||||
// NOTE this is different to isBrowser, primarily for the JSDOM use case
|
||||
if (typeof window !== 'undefined') {
|
||||
window.__STORYBOOK_CLIENT_API__ = clientApi;
|
||||
window.__STORYBOOK_ADDONS_CHANNEL__ = channel; // may not be defined
|
||||
}
|
||||
|
||||
const configApi = new ConfigApi({ clearDecorators, ...context });
|
||||
export const { configure } = configApi;
|
||||
|
||||
// initialize the UI
|
||||
const renderUI = () => {
|
||||
if (isBrowser) {
|
||||
render(context);
|
||||
}
|
||||
};
|
||||
|
||||
reduxStore.subscribe(renderUI);
|
||||
|
||||
export const forceReRender = () => render(context, true);
|
||||
export { forceReRender };
|
||||
|
@ -49,7 +49,6 @@
|
||||
"react": "^16.2.0",
|
||||
"react-dev-utils": "zanettin/react-dev-utils",
|
||||
"react-dom": "^16.2.0",
|
||||
"redux": "^3.7.2",
|
||||
"util-deprecate": "^1.0.2",
|
||||
"webpack": "^4.1.1",
|
||||
"webpack-hot-middleware": "^2.21.2"
|
||||
|
@ -1,30 +1,7 @@
|
||||
import { createStore } from 'redux';
|
||||
import addons from '@storybook/addons';
|
||||
import createChannel from '@storybook/channel-postmessage';
|
||||
import { navigator, window } from 'global';
|
||||
import { handleKeyboardShortcuts } from '@storybook/ui/dist/libs/key_events';
|
||||
import {
|
||||
StoryStore,
|
||||
ClientApi,
|
||||
ConfigApi,
|
||||
Actions,
|
||||
reducer,
|
||||
syncUrlWithStore,
|
||||
} from '@storybook/core/client';
|
||||
import { start } from '@storybook/core/client';
|
||||
|
||||
import render from './render';
|
||||
|
||||
// check whether we're running on node/browser
|
||||
const isBrowser =
|
||||
navigator &&
|
||||
navigator.userAgent &&
|
||||
navigator.userAgent !== 'storyshots' &&
|
||||
!(navigator.userAgent.indexOf('Node.js') > -1) &&
|
||||
!(navigator.userAgent.indexOf('jsdom') > -1);
|
||||
|
||||
const storyStore = new StoryStore();
|
||||
const reduxStore = createStore(reducer);
|
||||
|
||||
const createWrapperComponent = Target => ({
|
||||
functional: true,
|
||||
render(h, c) {
|
||||
@ -42,8 +19,9 @@ const decorateStory = (getStory, decorators) =>
|
||||
},
|
||||
getStory
|
||||
);
|
||||
const context = { storyStore, reduxStore, decorateStory };
|
||||
const clientApi = new ClientApi(context);
|
||||
|
||||
const { clientApi, configApi, forceReRender } = start(render, { decorateStory });
|
||||
|
||||
export const {
|
||||
storiesOf,
|
||||
setAddon,
|
||||
@ -53,39 +31,5 @@ export const {
|
||||
getStorybook,
|
||||
} = clientApi;
|
||||
|
||||
let channel;
|
||||
if (isBrowser) {
|
||||
// create preview channel
|
||||
channel = createChannel({ page: 'preview' });
|
||||
channel.on('setCurrentStory', data => {
|
||||
reduxStore.dispatch(Actions.selectStory(data.kind, data.story));
|
||||
});
|
||||
addons.setChannel(channel);
|
||||
Object.assign(context, { channel });
|
||||
|
||||
syncUrlWithStore(reduxStore);
|
||||
|
||||
// Handle keyboard shortcuts
|
||||
window.onkeydown = handleKeyboardShortcuts(channel);
|
||||
}
|
||||
|
||||
// Provide access to external scripts if `window` is defined.
|
||||
// NOTE this is different to isBrowser, primarily for the JSDOM use case
|
||||
if (typeof window !== 'undefined') {
|
||||
window.__STORYBOOK_CLIENT_API__ = clientApi;
|
||||
window.__STORYBOOK_ADDONS_CHANNEL__ = channel; // may not be defined
|
||||
}
|
||||
|
||||
const configApi = new ConfigApi({ ...context, clearDecorators });
|
||||
export const { configure } = configApi;
|
||||
|
||||
// initialize the UI
|
||||
const renderUI = () => {
|
||||
if (isBrowser) {
|
||||
render(context);
|
||||
}
|
||||
};
|
||||
|
||||
reduxStore.subscribe(renderUI);
|
||||
|
||||
export const forceReRender = () => render(context, true);
|
||||
export { forceReRender };
|
||||
|
@ -10,9 +10,16 @@ const config = {
|
||||
use: ['json-loader', 'yaml-loader'],
|
||||
},
|
||||
{
|
||||
test: /\.(jpg|png|gif|eot|svg|ttf|woff|woff2)$/,
|
||||
test: /\.(jpg|png|gif|eot|ttf|woff|woff2)$/,
|
||||
use: ['file-loader'],
|
||||
},
|
||||
{
|
||||
test: /\.svg$/,
|
||||
loader: 'svg-url-loader',
|
||||
options: {
|
||||
noquotes: true,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
};
|
||||
|
@ -24,7 +24,7 @@
|
||||
"@storybook/react": "^3.3.15",
|
||||
"babel-loader": "^6.4.1",
|
||||
"bootstrap": "^3.3.7",
|
||||
"gatsby": "^1.9.238",
|
||||
"gatsby": "^1.9.239",
|
||||
"gatsby-link": "^1.6.39",
|
||||
"gatsby-plugin-sharp": "^1.6.41",
|
||||
"gatsby-remark-autolink-headers": "^1.4.13",
|
||||
@ -37,7 +37,7 @@
|
||||
"global": "^4.3.2",
|
||||
"highlight.js": "^9.12.0",
|
||||
"lodash": "^4.17.5",
|
||||
"marked": "^0.3.17",
|
||||
"marked": "^0.3.18",
|
||||
"prop-types": "^15.6.1",
|
||||
"react": "^15.6.1",
|
||||
"react-document-title": "^2.0.3",
|
||||
|
@ -3,8 +3,7 @@ id: 'live-examples'
|
||||
title: 'Live Examples'
|
||||
---
|
||||
|
||||
### 3.4.alpha
|
||||
|
||||
### 4.0.alpha
|
||||
> Note, this is an Alpha version. Some of the features still might not be released
|
||||
|
||||
- [React Official](https://storybooks-official.netlify.com)
|
||||
@ -12,6 +11,12 @@ title: 'Live Examples'
|
||||
- [Angular](https://storybooks-angular.netlify.com/)
|
||||
- [Polymer](https://storybooks-polymer.netlify.com/)
|
||||
|
||||
### 3.4
|
||||
- [React Official](https://release-3-4--storybooks-official.netlify.com)
|
||||
- [Vue](https://release-3-4--storybooks-vue.netlify.com/)
|
||||
- [Angular](https://release-3-4--storybooks-angular.netlify.com/)
|
||||
- [Polymer](https://release-3-4--storybooks-polymer.netlify.com/)
|
||||
|
||||
### 3.3
|
||||
- [React Official](https://release-3-3--storybooks-official.netlify.com)
|
||||
- [Vue](https://release-3-3--storybooks-vue.netlify.com/)
|
||||
|
@ -19,6 +19,13 @@ lonelyplanet:
|
||||
source: https://github.com/lonelyplanet/backpack-ui
|
||||
demo: https://lonelyplanet.github.io/backpack-ui/
|
||||
site: https://www.lonelyplanet.com/
|
||||
uber:
|
||||
thumbnail: uber.png
|
||||
title: Uber React-Vis
|
||||
description: A composable charting library.
|
||||
source: https://github.com/uber/react-vis
|
||||
demo: https://uber.github.io/react-vis/website/dist/storybook/index.html
|
||||
site: https://uber.github.io/react-vis/
|
||||
atlassian:
|
||||
thumbnail: atlassian.png
|
||||
title: Atlassian AtlasKit
|
||||
|
BIN
docs/src/pages/examples/thumbnails/uber.png
Normal file
BIN
docs/src/pages/examples/thumbnails/uber.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 76 KiB |
@ -4455,9 +4455,9 @@ gatsby-1-config-extract-plugin@^1.0.2:
|
||||
babel-runtime "^6.26.0"
|
||||
extract-text-webpack-plugin "^1.0.1"
|
||||
|
||||
gatsby-cli@^1.1.46:
|
||||
version "1.1.46"
|
||||
resolved "https://registry.yarnpkg.com/gatsby-cli/-/gatsby-cli-1.1.46.tgz#ebbca830805c63f6ef5be0a0c4d308dd597ad10b"
|
||||
gatsby-cli@^1.1.47:
|
||||
version "1.1.47"
|
||||
resolved "https://registry.yarnpkg.com/gatsby-cli/-/gatsby-cli-1.1.47.tgz#75474ca674ea7f4e018825f3ad4ec070c915a7cd"
|
||||
dependencies:
|
||||
babel-code-frame "^6.26.0"
|
||||
babel-runtime "^6.26.0"
|
||||
@ -4620,9 +4620,9 @@ gatsby-transformer-remark@^1.7.37:
|
||||
unist-util-select "^1.5.0"
|
||||
unist-util-visit "^1.1.1"
|
||||
|
||||
gatsby@^1.9.238:
|
||||
version "1.9.238"
|
||||
resolved "https://registry.yarnpkg.com/gatsby/-/gatsby-1.9.238.tgz#b97354208e60140c2d7f2a369494b20e8138f540"
|
||||
gatsby@^1.9.239:
|
||||
version "1.9.239"
|
||||
resolved "https://registry.yarnpkg.com/gatsby/-/gatsby-1.9.239.tgz#ce5f111ac066da7354c01bc132a78f2466ece4ab"
|
||||
dependencies:
|
||||
async "^2.1.2"
|
||||
babel-code-frame "^6.22.0"
|
||||
@ -4664,7 +4664,7 @@ gatsby@^1.9.238:
|
||||
fs-extra "^4.0.1"
|
||||
gatsby-1-config-css-modules "^1.0.10"
|
||||
gatsby-1-config-extract-plugin "^1.0.2"
|
||||
gatsby-cli "^1.1.46"
|
||||
gatsby-cli "^1.1.47"
|
||||
gatsby-link "^1.6.39"
|
||||
gatsby-module-loader "^1.0.11"
|
||||
gatsby-react-router-scroll "^1.0.14"
|
||||
@ -6847,9 +6847,9 @@ markdown-table@^1.1.0:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.1.tgz#4b3dd3a133d1518b8ef0dbc709bf2a1b4824bc8c"
|
||||
|
||||
marked@^0.3.17:
|
||||
version "0.3.17"
|
||||
resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.17.tgz#607f06668b3c6b1246b28f13da76116ac1aa2d2b"
|
||||
marked@^0.3.18:
|
||||
version "0.3.18"
|
||||
resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.18.tgz#3ef058cd926101849b92a7a7c15db18c7fc76b2f"
|
||||
|
||||
marked@^0.3.6:
|
||||
version "0.3.9"
|
||||
|
@ -3,7 +3,14 @@ const path = require('path');
|
||||
module.exports = baseConfig => {
|
||||
baseConfig.module.rules.push({
|
||||
test: [/\.stories\.tsx?$/, /index\.ts$/],
|
||||
loaders: [require.resolve('@storybook/addon-storysource/loader')],
|
||||
loaders: [
|
||||
{
|
||||
loader: require.resolve('@storybook/addon-storysource/loader'),
|
||||
options: {
|
||||
parser: 'typescript',
|
||||
},
|
||||
},
|
||||
],
|
||||
include: [path.resolve(__dirname, '../src')],
|
||||
enforce: 'pre',
|
||||
});
|
||||
|
@ -37,7 +37,7 @@
|
||||
"@storybook/addons": "3.4.0-rc.3",
|
||||
"@storybook/angular": "3.4.0-rc.3",
|
||||
"@types/jasmine": "~2.8.6",
|
||||
"@types/node": "~9.4.7",
|
||||
"@types/node": "~9.6.0",
|
||||
"global": "^4.3.2",
|
||||
"jasmine-core": "~2.99.1",
|
||||
"jasmine-spec-reporter": "~4.2.1",
|
||||
|
@ -1,6 +1,22 @@
|
||||
import { StoreModule } from '@ngrx/store';
|
||||
import { Store, StoreModule } from '@ngrx/store';
|
||||
import { storiesOf, moduleMetadata } from '@storybook/angular';
|
||||
import { WithStoreComponent } from './ngrx/WithStoreComponent';
|
||||
import { Component } from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'storybook-comp-with-store',
|
||||
template: '<div>{{this.getSotreState()}}</div>',
|
||||
})
|
||||
class WithStoreComponent {
|
||||
private store: Store<any>;
|
||||
|
||||
constructor(store: Store<any>) {
|
||||
this.store = store;
|
||||
}
|
||||
|
||||
getSotreState() {
|
||||
return this.store === undefined ? 'Store is NOT injected' : 'Store is injected';
|
||||
}
|
||||
}
|
||||
|
||||
storiesOf('ngrx|Store', module)
|
||||
.addDecorator(
|
||||
|
@ -1,18 +0,0 @@
|
||||
import { Component } from '@angular/core';
|
||||
import { Store } from '@ngrx/store';
|
||||
|
||||
@Component({
|
||||
selector: 'storybook-comp-with-store',
|
||||
template: '<div>{{this.getSotreState()}}</div>',
|
||||
})
|
||||
export class WithStoreComponent {
|
||||
private store: Store<any>;
|
||||
|
||||
constructor(store: Store<any>) {
|
||||
this.store = store;
|
||||
}
|
||||
|
||||
getSotreState() {
|
||||
return this.store === undefined ? 'Store is NOT injected' : 'Store is injected';
|
||||
}
|
||||
}
|
@ -8,7 +8,7 @@
|
||||
"storybook": "start-storybook -p 9001 -c .storybook"
|
||||
},
|
||||
"dependencies": {
|
||||
"@polymer/polymer": "^2.5.0",
|
||||
"@polymer/polymer": "^2.6.0",
|
||||
"@storybook/addon-actions": "3.4.0-rc.3",
|
||||
"@storybook/addon-knobs": "3.4.0-rc.3",
|
||||
"@storybook/addon-links": "3.4.0-rc.3",
|
||||
@ -17,7 +17,7 @@
|
||||
"@storybook/addon-storysource": "3.4.0-rc.3",
|
||||
"@storybook/addon-viewport": "3.4.0-rc.3",
|
||||
"@storybook/polymer": "3.4.0-rc.3",
|
||||
"@webcomponents/webcomponentsjs": "^1.1.0",
|
||||
"@webcomponents/webcomponentsjs": "^1.1.1",
|
||||
"global": "^4.3.2",
|
||||
"polymer-webpack-loader": "^2.0.2",
|
||||
"webpack": "^4.1.1"
|
||||
|
@ -27,9 +27,10 @@
|
||||
"babel-core": "^6.26.0",
|
||||
"babel-loader": "^7.1.4",
|
||||
"babel-preset-env": "^1.6.0",
|
||||
"babel-preset-vue": "^2.0.1",
|
||||
"babel-preset-vue": "^2.0.2",
|
||||
"cross-env": "^5.1.4",
|
||||
"file-loader": "^1.1.11",
|
||||
"svg-url-loader": "^2.3.2",
|
||||
"vue-loader": "^14.2.1",
|
||||
"webpack": "^4.1.1",
|
||||
"webpack-dev-server": "^3.1.1"
|
||||
|
@ -24,12 +24,19 @@ module.exports = {
|
||||
exclude: /node_modules/,
|
||||
},
|
||||
{
|
||||
test: /\.(png|jpg|gif|svg)$/,
|
||||
test: /\.(png|jpg|gif)$/,
|
||||
loader: 'file-loader',
|
||||
options: {
|
||||
name: '[name].[ext]?[hash]',
|
||||
},
|
||||
},
|
||||
{
|
||||
test: /\.svg$/,
|
||||
loader: 'svg-url-loader',
|
||||
options: {
|
||||
noquotes: true,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
resolve: {
|
||||
|
@ -53,7 +53,7 @@
|
||||
"@storybook/addon-actions": "^3.4.0-rc.3",
|
||||
"@storybook/addon-links": "^3.4.0-rc.3",
|
||||
"@storybook/addons": "^3.4.0-rc.3",
|
||||
"babel-preset-vue": "^2.0.1"
|
||||
"babel-preset-vue": "^2.0.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 4.0.0",
|
||||
|
@ -38,6 +38,6 @@
|
||||
"@storybook/addon-actions": "^3.4.0-rc.3",
|
||||
"@storybook/addon-links": "^3.4.0-rc.3",
|
||||
"@storybook/addons": "^3.4.0-rc.3",
|
||||
"babel-preset-vue": "^2.0.1"
|
||||
"babel-preset-vue": "^2.0.2"
|
||||
}
|
||||
}
|
||||
|
@ -22,7 +22,7 @@
|
||||
"@storybook/client-logger": "3.4.0-rc.3",
|
||||
"@storybook/node-logger": "3.4.0-rc.3",
|
||||
"@storybook/ui": "3.4.0-rc.3",
|
||||
"autoprefixer": "^8.0.0",
|
||||
"autoprefixer": "^8.2.0",
|
||||
"babel-runtime": "^6.26.0",
|
||||
"chalk": "^2.3.2",
|
||||
"commander": "^2.15.1",
|
||||
@ -39,9 +39,11 @@
|
||||
"qs": "^6.5.1",
|
||||
"react": "^16.0.0",
|
||||
"react-dom": "^16.0.0",
|
||||
"redux": "^3.7.2",
|
||||
"serve-favicon": "^2.4.5",
|
||||
"shelljs": "^0.8.1",
|
||||
"style-loader": "^0.20.3",
|
||||
"svg-url-loader": "^2.3.2",
|
||||
"url-loader": "^1.0.1",
|
||||
"webpack": "^4.1.1",
|
||||
"webpack-dev-middleware": "^3.0.1",
|
||||
|
@ -1,3 +1,4 @@
|
||||
import start from './start';
|
||||
import * as Actions from './actions';
|
||||
import ClientApi from './client_api';
|
||||
import ConfigApi from './config_api';
|
||||
@ -5,4 +6,4 @@ import StoryStore from './story_store';
|
||||
import reducer from './reducer';
|
||||
import syncUrlWithStore from './syncUrlWithStore';
|
||||
|
||||
export default { Actions, ClientApi, ConfigApi, StoryStore, reducer, syncUrlWithStore };
|
||||
export default { start, Actions, ClientApi, ConfigApi, StoryStore, reducer, syncUrlWithStore };
|
||||
|
65
lib/core/src/client/preview/start.js
Normal file
65
lib/core/src/client/preview/start.js
Normal file
@ -0,0 +1,65 @@
|
||||
import { createStore } from 'redux';
|
||||
import addons from '@storybook/addons';
|
||||
import { navigator, window } from 'global';
|
||||
import createChannel from '@storybook/channel-postmessage';
|
||||
import { handleKeyboardShortcuts } from '@storybook/ui/dist/libs/key_events';
|
||||
|
||||
import StoryStore from './story_store';
|
||||
import ClientApi from './client_api';
|
||||
import ConfigApi from './config_api';
|
||||
import reducer from './reducer';
|
||||
import * as Actions from './actions';
|
||||
import syncUrlWithStore from './syncUrlWithStore';
|
||||
|
||||
export default function start(render, { decorateStory } = {}) {
|
||||
// check whether we're running on node/browser
|
||||
const isBrowser =
|
||||
navigator &&
|
||||
navigator.userAgent &&
|
||||
navigator.userAgent !== 'storyshots' &&
|
||||
!(navigator.userAgent.indexOf('Node.js') > -1) &&
|
||||
!(navigator.userAgent.indexOf('jsdom') > -1);
|
||||
|
||||
const storyStore = new StoryStore();
|
||||
const reduxStore = createStore(reducer);
|
||||
const context = { storyStore, reduxStore, decorateStory };
|
||||
|
||||
const clientApi = new ClientApi(context);
|
||||
|
||||
let channel;
|
||||
if (isBrowser) {
|
||||
// setup preview channel
|
||||
channel = createChannel({ page: 'preview' });
|
||||
channel.on('setCurrentStory', data => {
|
||||
reduxStore.dispatch(Actions.selectStory(data.kind, data.story));
|
||||
});
|
||||
addons.setChannel(channel);
|
||||
Object.assign(context, { channel });
|
||||
|
||||
syncUrlWithStore(reduxStore);
|
||||
|
||||
// Handle keyboard shortcuts
|
||||
window.onkeydown = handleKeyboardShortcuts(channel);
|
||||
}
|
||||
|
||||
// Provide access to external scripts if `window` is defined.
|
||||
// NOTE this is different to isBrowser, primarily for the JSDOM use case
|
||||
if (typeof window !== 'undefined') {
|
||||
window.__STORYBOOK_CLIENT_API__ = clientApi;
|
||||
window.__STORYBOOK_ADDONS_CHANNEL__ = channel; // may not be defined
|
||||
}
|
||||
|
||||
const { clearDecorators } = clientApi;
|
||||
const configApi = new ConfigApi({ clearDecorators, ...context });
|
||||
|
||||
// initialize the UI
|
||||
const renderUI = () => {
|
||||
if (isBrowser) {
|
||||
render(context);
|
||||
}
|
||||
};
|
||||
|
||||
reduxStore.subscribe(renderUI);
|
||||
|
||||
return { context, clientApi, configApi, forceReRender: () => render(context, true) };
|
||||
}
|
@ -32,12 +32,16 @@ export function createDefaultWebpackConfig(storybookBaseConfig) {
|
||||
],
|
||||
},
|
||||
{
|
||||
test: /\.(ico|jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2)(\?.*)?$/,
|
||||
test: /\.(ico|jpg|jpeg|png|gif|eot|otf|webp|ttf|woff|woff2)(\?.*)?$/,
|
||||
loader: require.resolve('file-loader'),
|
||||
query: {
|
||||
name: 'static/media/[name].[hash:8].[ext]',
|
||||
},
|
||||
},
|
||||
{
|
||||
test: /\.svg$/,
|
||||
loader: require.resolve('svg-url-loader'),
|
||||
},
|
||||
{
|
||||
test: /\.(mp4|webm|wav|mp3|m4a|aac|oga)(\?.*)?$/,
|
||||
loader: require.resolve('url-loader'),
|
||||
|
@ -24,7 +24,7 @@
|
||||
"events": "^2.0.0",
|
||||
"fuse.js": "^3.2.0",
|
||||
"global": "^4.3.2",
|
||||
"keycode": "^2.1.9",
|
||||
"keycode": "^2.2.0",
|
||||
"lodash.debounce": "^4.0.8",
|
||||
"lodash.pick": "^4.4.0",
|
||||
"lodash.sortby": "^4.7.0",
|
||||
|
16
package.json
16
package.json
@ -56,10 +56,10 @@
|
||||
"commander": "^2.15.1",
|
||||
"concurrently": "^3.5.1",
|
||||
"cross-env": "^5.1.4",
|
||||
"danger": "^3.3.0",
|
||||
"danger": "^3.3.2",
|
||||
"enzyme": "^3.3.0",
|
||||
"enzyme-adapter-react-16": "^1.1.1",
|
||||
"eslint": "^4.19.0",
|
||||
"eslint": "^4.19.1",
|
||||
"eslint-config-airbnb": "^16.1.0",
|
||||
"eslint-config-prettier": "^2.9.0",
|
||||
"eslint-plugin-import": "^2.9.0",
|
||||
@ -72,14 +72,14 @@
|
||||
"glob": "^7.1.2",
|
||||
"husky": "^0.14.3",
|
||||
"inquirer": "^5.1.0",
|
||||
"jest": "^22.4.2",
|
||||
"jest-cli": "^22.4.2",
|
||||
"jest-config": "^22.4.2",
|
||||
"jest-diff": "^22.4.0",
|
||||
"jest-environment-jsdom": "^22.4.1",
|
||||
"jest": "^22.4.3",
|
||||
"jest-cli": "^22.4.3",
|
||||
"jest-config": "^22.4.3",
|
||||
"jest-diff": "^22.4.3",
|
||||
"jest-environment-jsdom": "^22.4.3",
|
||||
"jest-enzyme": "^4.2.0",
|
||||
"jest-image-snapshot": "^2.4.0",
|
||||
"jest-jasmine2": "^22.4.2",
|
||||
"jest-jasmine2": "^22.4.3",
|
||||
"jest-preset-angular": "^5.2.1",
|
||||
"jest-vue-preprocessor": "^1.4.0",
|
||||
"lerna": "2.5.1",
|
||||
|
497
yarn.lock
497
yarn.lock
@ -257,9 +257,9 @@
|
||||
lodash "^4.17.4"
|
||||
url-template "^2.0.8"
|
||||
|
||||
"@polymer/polymer@^2.5.0":
|
||||
version "2.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@polymer/polymer/-/polymer-2.5.0.tgz#261439f5ab691c230d0c5dfb518b9247064ac13d"
|
||||
"@polymer/polymer@^2.6.0":
|
||||
version "2.6.0"
|
||||
resolved "https://registry.yarnpkg.com/@polymer/polymer/-/polymer-2.6.0.tgz#98601124122a045e74f4b41f55975006ef327dbc"
|
||||
|
||||
"@schematics/angular@0.3.2":
|
||||
version "0.3.2"
|
||||
@ -343,9 +343,9 @@
|
||||
version "6.0.96"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.96.tgz#7bf0bf40d6ce51e93762cc47d010c8cc5ebb2179"
|
||||
|
||||
"@types/node@~9.4.7":
|
||||
version "9.4.7"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-9.4.7.tgz#57d81cd98719df2c9de118f2d5f3b1120dcd7275"
|
||||
"@types/node@~9.6.0":
|
||||
version "9.6.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-9.6.0.tgz#d3480ee666df9784b1001a1872a2f6ccefb6c2d7"
|
||||
|
||||
"@types/parse5@^2.2.32":
|
||||
version "2.2.34"
|
||||
@ -373,9 +373,9 @@
|
||||
version "0.0.30"
|
||||
resolved "https://registry.yarnpkg.com/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz#9aa30c04db212a9a0649d6ae6fd50accc40748a1"
|
||||
|
||||
"@webcomponents/webcomponentsjs@^1.1.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@webcomponents/webcomponentsjs/-/webcomponentsjs-1.1.0.tgz#1392799c266fca142622a720176f688beb74d181"
|
||||
"@webcomponents/webcomponentsjs@^1.1.1":
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@webcomponents/webcomponentsjs/-/webcomponentsjs-1.1.1.tgz#50caffdf8a901e5357532b7d85e776637a56446a"
|
||||
|
||||
JSONStream@^1.0.3, JSONStream@^1.0.4, JSONStream@~1.3.1:
|
||||
version "1.3.2"
|
||||
@ -417,18 +417,6 @@ accepts@~1.3.5:
|
||||
mime-types "~2.1.18"
|
||||
negotiator "0.6.1"
|
||||
|
||||
acorn-bigint@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/acorn-bigint/-/acorn-bigint-0.2.0.tgz#0f45a5290537799a3b07085689a186881cb53784"
|
||||
dependencies:
|
||||
acorn "^5.2.1"
|
||||
|
||||
acorn-class-fields@^0.1.1:
|
||||
version "0.1.2"
|
||||
resolved "https://registry.yarnpkg.com/acorn-class-fields/-/acorn-class-fields-0.1.2.tgz#20782f304af42257feff5bd4a5c335291473bf58"
|
||||
dependencies:
|
||||
acorn "^5.3.0"
|
||||
|
||||
acorn-dynamic-import@^2.0.0:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4"
|
||||
@ -441,12 +429,6 @@ acorn-dynamic-import@^3.0.0:
|
||||
dependencies:
|
||||
acorn "^5.0.0"
|
||||
|
||||
acorn-es7@^0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/acorn-es7/-/acorn-es7-0.1.0.tgz#4a6de4522faacb4c31209e1b73b5f301ed2bb30a"
|
||||
dependencies:
|
||||
acorn "^2.6.4"
|
||||
|
||||
acorn-globals@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-3.1.0.tgz#fd8270f71fbb4996b004fa880ee5d46573a731bf"
|
||||
@ -459,30 +441,12 @@ acorn-globals@^4.0.0:
|
||||
dependencies:
|
||||
acorn "^5.0.0"
|
||||
|
||||
acorn-import-meta@^0.2.1:
|
||||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/acorn-import-meta/-/acorn-import-meta-0.2.1.tgz#ac91e06e00facece7e96ff76a0fe9ec7b1cb5b5c"
|
||||
dependencies:
|
||||
acorn "^5.4.1"
|
||||
|
||||
acorn-json-superset@^0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/acorn-json-superset/-/acorn-json-superset-0.1.0.tgz#b5b911a1777ea63a48fcfc64353e787305e8a945"
|
||||
dependencies:
|
||||
acorn "^5.4.1"
|
||||
|
||||
acorn-jsx@^3.0.0:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b"
|
||||
dependencies:
|
||||
acorn "^3.0.4"
|
||||
|
||||
acorn-jsx@^4.1.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-4.1.1.tgz#e8e41e48ea2fe0c896740610ab6a4ffd8add225e"
|
||||
dependencies:
|
||||
acorn "^5.0.3"
|
||||
|
||||
acorn-node@^1.2.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.3.0.tgz#5f86d73346743810ef1269b901dbcbded020861b"
|
||||
@ -490,42 +454,6 @@ acorn-node@^1.2.0:
|
||||
acorn "^5.4.1"
|
||||
xtend "^4.0.1"
|
||||
|
||||
acorn-numeric-separator@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/acorn-numeric-separator/-/acorn-numeric-separator-0.1.1.tgz#aa455a1d95ae887231de97e0681abbe28b065e8d"
|
||||
dependencies:
|
||||
acorn "^5.2.1"
|
||||
|
||||
acorn-optional-catch-binding@^0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/acorn-optional-catch-binding/-/acorn-optional-catch-binding-0.1.0.tgz#d9a1874dbffce1eb3495836e5e75b2ad9c300868"
|
||||
dependencies:
|
||||
acorn "^5.2.1"
|
||||
|
||||
acorn-private-methods@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/acorn-private-methods/-/acorn-private-methods-0.1.1.tgz#32c13cf24d05bf1c9be04914b41491c59d75a195"
|
||||
dependencies:
|
||||
acorn "^5.4.0"
|
||||
|
||||
acorn-stage3@^0.6.0:
|
||||
version "0.6.0"
|
||||
resolved "https://registry.yarnpkg.com/acorn-stage3/-/acorn-stage3-0.6.0.tgz#d2814cec8e2f8bcb0407ba657fbe0cfb118f9bc2"
|
||||
dependencies:
|
||||
acorn "^5.5.0"
|
||||
acorn-bigint "^0.2.0"
|
||||
acorn-class-fields "^0.1.1"
|
||||
acorn-dynamic-import "^3.0.0"
|
||||
acorn-import-meta "^0.2.1"
|
||||
acorn-json-superset "^0.1.0"
|
||||
acorn-numeric-separator "^0.1.1"
|
||||
acorn-optional-catch-binding "^0.1.0"
|
||||
acorn-private-methods "^0.1.1"
|
||||
|
||||
acorn@^2.6.4:
|
||||
version "2.7.0"
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7"
|
||||
|
||||
acorn@^3.0.4:
|
||||
version "3.3.0"
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
|
||||
@ -538,7 +466,7 @@ acorn@^5.0.0, acorn@^5.1.2, acorn@^5.2.1:
|
||||
version "5.3.0"
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.3.0.tgz#7446d39459c54fb49a80e6ee6478149b940ec822"
|
||||
|
||||
acorn@^5.0.3, acorn@^5.3.0, acorn@^5.4.0, acorn@^5.4.1:
|
||||
acorn@^5.4.1:
|
||||
version "5.4.1"
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.4.1.tgz#fdc58d9d17f4a4e98d102ded826a9b9759125102"
|
||||
|
||||
@ -546,10 +474,6 @@ acorn@^5.5.0:
|
||||
version "5.5.0"
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.0.tgz#1abb587fbf051f94e3de20e6b26ef910b1828298"
|
||||
|
||||
acorn@^5.5.3:
|
||||
version "5.5.3"
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.3.tgz#f473dd47e0277a08e28e9bec5aeeb04751f0b8c9"
|
||||
|
||||
add-stream@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa"
|
||||
@ -1077,15 +1001,15 @@ autoprefixer@^7.2.3:
|
||||
postcss "^6.0.16"
|
||||
postcss-value-parser "^3.2.3"
|
||||
|
||||
autoprefixer@^8.0.0:
|
||||
version "8.0.0"
|
||||
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-8.0.0.tgz#c19e480f061013127c373df0b01cf46919943f74"
|
||||
autoprefixer@^8.2.0:
|
||||
version "8.2.0"
|
||||
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-8.2.0.tgz#1e49b611b31a5259b86b7a6b2b1b8faf091abe2a"
|
||||
dependencies:
|
||||
browserslist "^3.0.0"
|
||||
caniuse-lite "^1.0.30000808"
|
||||
browserslist "^3.2.0"
|
||||
caniuse-lite "^1.0.30000817"
|
||||
normalize-range "^0.1.2"
|
||||
num2fraction "^1.2.2"
|
||||
postcss "^6.0.17"
|
||||
postcss "^6.0.20"
|
||||
postcss-value-parser "^3.2.3"
|
||||
|
||||
aws-sign2@~0.6.0:
|
||||
@ -1368,12 +1292,12 @@ babel-jest@20.0.3, babel-jest@^20.0.3:
|
||||
babel-plugin-istanbul "^4.0.0"
|
||||
babel-preset-jest "^20.0.3"
|
||||
|
||||
babel-jest@^22.4.1:
|
||||
version "22.4.1"
|
||||
resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-22.4.1.tgz#ff53ebca45957347f27ff4666a31499fbb4c4ddd"
|
||||
babel-jest@^22.4.3:
|
||||
version "22.4.3"
|
||||
resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-22.4.3.tgz#4b7a0b6041691bbd422ab49b3b73654a49a6627a"
|
||||
dependencies:
|
||||
babel-plugin-istanbul "^4.1.5"
|
||||
babel-preset-jest "^22.4.1"
|
||||
babel-preset-jest "^22.4.3"
|
||||
|
||||
babel-loader@7.1.2:
|
||||
version "7.1.2"
|
||||
@ -1439,6 +1363,10 @@ babel-plugin-jest-hoist@^22.4.1:
|
||||
version "22.4.1"
|
||||
resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.4.1.tgz#d712fe5da8b6965f3191dacddbefdbdf4fb66d63"
|
||||
|
||||
babel-plugin-jest-hoist@^22.4.3:
|
||||
version "22.4.3"
|
||||
resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.4.3.tgz#7d8bcccadc2667f96a0dcc6afe1891875ee6c14a"
|
||||
|
||||
babel-plugin-jsx-event-modifiers@^2.0.2:
|
||||
version "2.0.5"
|
||||
resolved "https://registry.yarnpkg.com/babel-plugin-jsx-event-modifiers/-/babel-plugin-jsx-event-modifiers-2.0.5.tgz#93e6ebb5d7553bb08f9fedbf7a0bee3af09a0472"
|
||||
@ -2116,13 +2044,20 @@ babel-preset-jest@^20.0.3:
|
||||
dependencies:
|
||||
babel-plugin-jest-hoist "^20.0.3"
|
||||
|
||||
babel-preset-jest@^22.4.0, babel-preset-jest@^22.4.1:
|
||||
babel-preset-jest@^22.4.0:
|
||||
version "22.4.1"
|
||||
resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-22.4.1.tgz#efa2e5f5334242a9457a068452d7d09735db172a"
|
||||
dependencies:
|
||||
babel-plugin-jest-hoist "^22.4.1"
|
||||
babel-plugin-syntax-object-rest-spread "^6.13.0"
|
||||
|
||||
babel-preset-jest@^22.4.3:
|
||||
version "22.4.3"
|
||||
resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-22.4.3.tgz#e92eef9813b7026ab4ca675799f37419b5a44156"
|
||||
dependencies:
|
||||
babel-plugin-jest-hoist "^22.4.3"
|
||||
babel-plugin-syntax-object-rest-spread "^6.13.0"
|
||||
|
||||
babel-preset-minify@^0.3.0:
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/babel-preset-minify/-/babel-preset-minify-0.3.0.tgz#7db64afa75f16f6e06c0aa5f25195f6f36784d77"
|
||||
@ -2251,9 +2186,9 @@ babel-preset-stage-3@^6.24.1:
|
||||
babel-plugin-transform-exponentiation-operator "^6.24.1"
|
||||
babel-plugin-transform-object-rest-spread "^6.22.0"
|
||||
|
||||
babel-preset-vue@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/babel-preset-vue/-/babel-preset-vue-2.0.1.tgz#031f845944819f64f5ac4b20467b6cbe4b97ac68"
|
||||
babel-preset-vue@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/babel-preset-vue/-/babel-preset-vue-2.0.2.tgz#cfadf1bd736125397481b5f8525ced0049a0c71f"
|
||||
dependencies:
|
||||
babel-helper-vue-jsx-merge-props "^2.0.2"
|
||||
babel-plugin-jsx-event-modifiers "^2.0.2"
|
||||
@ -2763,7 +2698,7 @@ browserify@^14.5.0:
|
||||
vm-browserify "~0.0.1"
|
||||
xtend "^4.0.0"
|
||||
|
||||
browserslist@3.1.1, browserslist@^3.0.0:
|
||||
browserslist@3.1.1:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.1.1.tgz#d380fc048bc3a33e60fb87dc135110ebaaa6320a"
|
||||
dependencies:
|
||||
@ -2784,6 +2719,13 @@ browserslist@^2.1.2, browserslist@^2.11.1, browserslist@^2.5.1:
|
||||
caniuse-lite "^1.0.30000789"
|
||||
electron-to-chromium "^1.3.30"
|
||||
|
||||
browserslist@^3.2.0:
|
||||
version "3.2.1"
|
||||
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.1.tgz#4960a45fbfe39b2be36fe5ba07cce9ea32c8221c"
|
||||
dependencies:
|
||||
caniuse-lite "^1.0.30000819"
|
||||
electron-to-chromium "^1.3.40"
|
||||
|
||||
bser@1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/bser/-/bser-1.0.2.tgz#381116970b2a6deea5646dd15dd7278444b56169"
|
||||
@ -3035,14 +2977,14 @@ caniuse-lite@^1.0.30000748, caniuse-lite@^1.0.30000789, caniuse-lite@^1.0.300007
|
||||
version "1.0.30000791"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000791.tgz#8e35745efd483a3e23bb7d350990326d2319fc16"
|
||||
|
||||
caniuse-lite@^1.0.30000808:
|
||||
version "1.0.30000810"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000810.tgz#47585fffce0e9f3593a6feea4673b945424351d9"
|
||||
|
||||
caniuse-lite@^1.0.30000809:
|
||||
version "1.0.30000815"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000815.tgz#3a4258e6850362185adb11b0d754a48402d35bf6"
|
||||
|
||||
caniuse-lite@^1.0.30000817, caniuse-lite@^1.0.30000819:
|
||||
version "1.0.30000819"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000819.tgz#aabee5fd15a080febab6ae5d30c9ea15f4c6d4e2"
|
||||
|
||||
capture-stack-trace@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d"
|
||||
@ -4439,9 +4381,9 @@ damerau-levenshtein@^1.0.0:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz#03191c432cb6eea168bb77f3a55ffdccb8978514"
|
||||
|
||||
danger@^3.3.0:
|
||||
version "3.3.0"
|
||||
resolved "https://registry.yarnpkg.com/danger/-/danger-3.3.0.tgz#5bcd9e530d9ec14f7e02fbd37a3800cc8554831f"
|
||||
danger@^3.3.2:
|
||||
version "3.3.2"
|
||||
resolved "https://registry.yarnpkg.com/danger/-/danger-3.3.2.tgz#f4eaaaa8a37ee8c3327ce89757edd6487a335296"
|
||||
dependencies:
|
||||
"@octokit/rest" "^14.0.4"
|
||||
babel-polyfill "^6.23.0"
|
||||
@ -4990,9 +4932,9 @@ electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.30:
|
||||
dependencies:
|
||||
electron-releases "^2.1.0"
|
||||
|
||||
electron-to-chromium@^1.3.33:
|
||||
version "1.3.34"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.34.tgz#d93498f40391bb0c16a603d8241b9951404157ed"
|
||||
electron-to-chromium@^1.3.33, electron-to-chromium@^1.3.40:
|
||||
version "1.3.40"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.40.tgz#1fbd6d97befd72b8a6f921dc38d22413d2f6fddf"
|
||||
|
||||
elegant-spinner@^1.0.1:
|
||||
version "1.0.1"
|
||||
@ -5543,9 +5485,9 @@ eslint@4.10.0:
|
||||
table "^4.0.1"
|
||||
text-table "~0.2.0"
|
||||
|
||||
eslint@^4.19.0:
|
||||
version "4.19.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.19.0.tgz#9e900efb5506812ac374557034ef6f5c3642fc4c"
|
||||
eslint@^4.19.1:
|
||||
version "4.19.1"
|
||||
resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.19.1.tgz#32d1d653e1d90408854bfb296f076ec7e186a300"
|
||||
dependencies:
|
||||
ajv "^5.3.0"
|
||||
babel-code-frame "^6.22.0"
|
||||
@ -5807,6 +5749,17 @@ expect@^22.4.0:
|
||||
jest-message-util "^22.4.0"
|
||||
jest-regex-util "^22.1.0"
|
||||
|
||||
expect@^22.4.3:
|
||||
version "22.4.3"
|
||||
resolved "https://registry.yarnpkg.com/expect/-/expect-22.4.3.tgz#d5a29d0a0e1fb2153557caef2674d4547e914674"
|
||||
dependencies:
|
||||
ansi-styles "^3.2.0"
|
||||
jest-diff "^22.4.3"
|
||||
jest-get-type "^22.4.3"
|
||||
jest-matcher-utils "^22.4.3"
|
||||
jest-message-util "^22.4.3"
|
||||
jest-regex-util "^22.4.3"
|
||||
|
||||
express-session@~1.11.3:
|
||||
version "1.11.3"
|
||||
resolved "https://registry.yarnpkg.com/express-session/-/express-session-1.11.3.tgz#5cc98f3f5ff84ed835f91cbf0aabd0c7107400af"
|
||||
@ -6101,6 +6054,13 @@ file-entry-cache@^2.0.0:
|
||||
flat-cache "^1.2.1"
|
||||
object-assign "^4.0.1"
|
||||
|
||||
file-loader@1.1.11, file-loader@^1.1.11:
|
||||
version "1.1.11"
|
||||
resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-1.1.11.tgz#6fe886449b0f2a936e43cabaac0cdbfb369506f8"
|
||||
dependencies:
|
||||
loader-utils "^1.0.2"
|
||||
schema-utils "^0.4.5"
|
||||
|
||||
file-loader@1.1.5:
|
||||
version "1.1.5"
|
||||
resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-1.1.5.tgz#91c25b6b6fbe56dae99f10a425fd64933b5c9daa"
|
||||
@ -6108,13 +6068,6 @@ file-loader@1.1.5:
|
||||
loader-utils "^1.0.2"
|
||||
schema-utils "^0.3.0"
|
||||
|
||||
file-loader@^1.1.11:
|
||||
version "1.1.11"
|
||||
resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-1.1.11.tgz#6fe886449b0f2a936e43cabaac0cdbfb369506f8"
|
||||
dependencies:
|
||||
loader-utils "^1.0.2"
|
||||
schema-utils "^0.4.5"
|
||||
|
||||
file-loader@^1.1.5:
|
||||
version "1.1.6"
|
||||
resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-1.1.6.tgz#7b9a8f2c58f00a77fddf49e940f7ac978a3ea0e8"
|
||||
@ -8381,9 +8334,9 @@ jest-changed-files@^20.0.3:
|
||||
version "20.0.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-20.0.3.tgz#9394d5cc65c438406149bef1bf4d52b68e03e3f8"
|
||||
|
||||
jest-changed-files@^22.2.0:
|
||||
version "22.2.0"
|
||||
resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-22.2.0.tgz#517610c4a8ca0925bdc88b0ca53bd678aa8d019e"
|
||||
jest-changed-files@^22.4.3:
|
||||
version "22.4.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-22.4.3.tgz#8882181e022c38bd46a2e4d18d44d19d90a90fb2"
|
||||
dependencies:
|
||||
throat "^4.0.0"
|
||||
|
||||
@ -8422,9 +8375,9 @@ jest-cli@^20.0.4:
|
||||
worker-farm "^1.3.1"
|
||||
yargs "^7.0.2"
|
||||
|
||||
jest-cli@^22.4.2:
|
||||
version "22.4.2"
|
||||
resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-22.4.2.tgz#e6546dc651e13d164481aa3e76e53ac4f4edab06"
|
||||
jest-cli@^22.4.3:
|
||||
version "22.4.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-22.4.3.tgz#bf16c4a5fb7edc3fa5b9bb7819e34139e88a72c7"
|
||||
dependencies:
|
||||
ansi-escapes "^3.0.0"
|
||||
chalk "^2.0.1"
|
||||
@ -8437,20 +8390,20 @@ jest-cli@^22.4.2:
|
||||
istanbul-lib-coverage "^1.1.1"
|
||||
istanbul-lib-instrument "^1.8.0"
|
||||
istanbul-lib-source-maps "^1.2.1"
|
||||
jest-changed-files "^22.2.0"
|
||||
jest-config "^22.4.2"
|
||||
jest-environment-jsdom "^22.4.1"
|
||||
jest-get-type "^22.1.0"
|
||||
jest-haste-map "^22.4.2"
|
||||
jest-message-util "^22.4.0"
|
||||
jest-regex-util "^22.1.0"
|
||||
jest-resolve-dependencies "^22.1.0"
|
||||
jest-runner "^22.4.2"
|
||||
jest-runtime "^22.4.2"
|
||||
jest-snapshot "^22.4.0"
|
||||
jest-util "^22.4.1"
|
||||
jest-validate "^22.4.2"
|
||||
jest-worker "^22.2.2"
|
||||
jest-changed-files "^22.4.3"
|
||||
jest-config "^22.4.3"
|
||||
jest-environment-jsdom "^22.4.3"
|
||||
jest-get-type "^22.4.3"
|
||||
jest-haste-map "^22.4.3"
|
||||
jest-message-util "^22.4.3"
|
||||
jest-regex-util "^22.4.3"
|
||||
jest-resolve-dependencies "^22.4.3"
|
||||
jest-runner "^22.4.3"
|
||||
jest-runtime "^22.4.3"
|
||||
jest-snapshot "^22.4.3"
|
||||
jest-util "^22.4.3"
|
||||
jest-validate "^22.4.3"
|
||||
jest-worker "^22.4.3"
|
||||
micromatch "^2.3.11"
|
||||
node-notifier "^5.2.1"
|
||||
realpath-native "^1.0.0"
|
||||
@ -8492,6 +8445,22 @@ jest-config@^22.4.0, jest-config@^22.4.2:
|
||||
jest-validate "^22.4.2"
|
||||
pretty-format "^22.4.0"
|
||||
|
||||
jest-config@^22.4.3:
|
||||
version "22.4.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-22.4.3.tgz#0e9d57db267839ea31309119b41dc2fa31b76403"
|
||||
dependencies:
|
||||
chalk "^2.0.1"
|
||||
glob "^7.1.1"
|
||||
jest-environment-jsdom "^22.4.3"
|
||||
jest-environment-node "^22.4.3"
|
||||
jest-get-type "^22.4.3"
|
||||
jest-jasmine2 "^22.4.3"
|
||||
jest-regex-util "^22.4.3"
|
||||
jest-resolve "^22.4.3"
|
||||
jest-util "^22.4.3"
|
||||
jest-validate "^22.4.3"
|
||||
pretty-format "^22.4.3"
|
||||
|
||||
jest-diff@^20.0.3:
|
||||
version "20.0.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-20.0.3.tgz#81f288fd9e675f0fb23c75f1c2b19445fe586617"
|
||||
@ -8519,6 +8488,15 @@ jest-diff@^22.4.0:
|
||||
jest-get-type "^22.1.0"
|
||||
pretty-format "^22.4.0"
|
||||
|
||||
jest-diff@^22.4.3:
|
||||
version "22.4.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-22.4.3.tgz#e18cc3feff0aeef159d02310f2686d4065378030"
|
||||
dependencies:
|
||||
chalk "^2.0.1"
|
||||
diff "^3.2.0"
|
||||
jest-get-type "^22.4.3"
|
||||
pretty-format "^22.4.3"
|
||||
|
||||
jest-docblock@22.0.3:
|
||||
version "22.0.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-22.0.3.tgz#c33aa22682b9fc68a5373f5f82994428a2ded601"
|
||||
@ -8539,9 +8517,9 @@ jest-docblock@^22.0.3:
|
||||
dependencies:
|
||||
detect-newline "^2.1.0"
|
||||
|
||||
jest-docblock@^22.4.0:
|
||||
version "22.4.0"
|
||||
resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-22.4.0.tgz#dbf1877e2550070cfc4d9b07a55775a0483159b8"
|
||||
jest-docblock@^22.4.3:
|
||||
version "22.4.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-22.4.3.tgz#50886f132b42b280c903c592373bb6e93bb68b19"
|
||||
dependencies:
|
||||
detect-newline "^2.1.0"
|
||||
|
||||
@ -8561,6 +8539,14 @@ jest-environment-jsdom@^22.4.1:
|
||||
jest-util "^22.4.1"
|
||||
jsdom "^11.5.1"
|
||||
|
||||
jest-environment-jsdom@^22.4.3:
|
||||
version "22.4.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-22.4.3.tgz#d67daa4155e33516aecdd35afd82d4abf0fa8a1e"
|
||||
dependencies:
|
||||
jest-mock "^22.4.3"
|
||||
jest-util "^22.4.3"
|
||||
jsdom "^11.5.1"
|
||||
|
||||
jest-environment-node@^20.0.3:
|
||||
version "20.0.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-20.0.3.tgz#d488bc4612af2c246e986e8ae7671a099163d403"
|
||||
@ -8575,6 +8561,13 @@ jest-environment-node@^22.4.1:
|
||||
jest-mock "^22.2.0"
|
||||
jest-util "^22.4.1"
|
||||
|
||||
jest-environment-node@^22.4.3:
|
||||
version "22.4.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-22.4.3.tgz#54c4eaa374c83dd52a9da8759be14ebe1d0b9129"
|
||||
dependencies:
|
||||
jest-mock "^22.4.3"
|
||||
jest-util "^22.4.3"
|
||||
|
||||
jest-enzyme@^4.2.0:
|
||||
version "4.2.0"
|
||||
resolved "https://registry.yarnpkg.com/jest-enzyme/-/jest-enzyme-4.2.0.tgz#d284506b6d87e072bf6d2786584970bb42ea5969"
|
||||
@ -8590,6 +8583,10 @@ jest-get-type@^22.1.0:
|
||||
version "22.1.0"
|
||||
resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.1.0.tgz#4e90af298ed6181edc85d2da500dbd2753e0d5a9"
|
||||
|
||||
jest-get-type@^22.4.3:
|
||||
version "22.4.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4"
|
||||
|
||||
jest-haste-map@22.0.3:
|
||||
version "22.0.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-22.0.3.tgz#c9ecb5c871c5465d4bde4139e527fa0dc784aa2d"
|
||||
@ -8612,15 +8609,15 @@ jest-haste-map@^20.0.4:
|
||||
sane "~1.6.0"
|
||||
worker-farm "^1.3.1"
|
||||
|
||||
jest-haste-map@^22.4.2:
|
||||
version "22.4.2"
|
||||
resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-22.4.2.tgz#a90178e66146d4378bb076345a949071f3b015b4"
|
||||
jest-haste-map@^22.4.3:
|
||||
version "22.4.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-22.4.3.tgz#25842fa2ba350200767ac27f658d58b9d5c2e20b"
|
||||
dependencies:
|
||||
fb-watchman "^2.0.0"
|
||||
graceful-fs "^4.1.11"
|
||||
jest-docblock "^22.4.0"
|
||||
jest-serializer "^22.4.0"
|
||||
jest-worker "^22.2.2"
|
||||
jest-docblock "^22.4.3"
|
||||
jest-serializer "^22.4.3"
|
||||
jest-worker "^22.4.3"
|
||||
micromatch "^2.3.11"
|
||||
sane "^2.0.0"
|
||||
|
||||
@ -8666,11 +8663,27 @@ jest-jasmine2@^22.4.2:
|
||||
jest-util "^22.4.1"
|
||||
source-map-support "^0.5.0"
|
||||
|
||||
jest-leak-detector@^22.4.0:
|
||||
version "22.4.0"
|
||||
resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-22.4.0.tgz#64da77f05b001c96d2062226e079f89989c4aa2f"
|
||||
jest-jasmine2@^22.4.3:
|
||||
version "22.4.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-22.4.3.tgz#4daf64cd14c793da9db34a7c7b8dcfe52a745965"
|
||||
dependencies:
|
||||
pretty-format "^22.4.0"
|
||||
chalk "^2.0.1"
|
||||
co "^4.6.0"
|
||||
expect "^22.4.3"
|
||||
graceful-fs "^4.1.11"
|
||||
is-generator-fn "^1.0.0"
|
||||
jest-diff "^22.4.3"
|
||||
jest-matcher-utils "^22.4.3"
|
||||
jest-message-util "^22.4.3"
|
||||
jest-snapshot "^22.4.3"
|
||||
jest-util "^22.4.3"
|
||||
source-map-support "^0.5.0"
|
||||
|
||||
jest-leak-detector@^22.4.3:
|
||||
version "22.4.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-22.4.3.tgz#2b7b263103afae8c52b6b91241a2de40117e5b35"
|
||||
dependencies:
|
||||
pretty-format "^22.4.3"
|
||||
|
||||
jest-matcher-utils@^20.0.3:
|
||||
version "20.0.3"
|
||||
@ -8695,6 +8708,14 @@ jest-matcher-utils@^22.4.0:
|
||||
jest-get-type "^22.1.0"
|
||||
pretty-format "^22.4.0"
|
||||
|
||||
jest-matcher-utils@^22.4.3:
|
||||
version "22.4.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-22.4.3.tgz#4632fe428ebc73ebc194d3c7b65d37b161f710ff"
|
||||
dependencies:
|
||||
chalk "^2.0.1"
|
||||
jest-get-type "^22.4.3"
|
||||
pretty-format "^22.4.3"
|
||||
|
||||
jest-matchers@^20.0.3:
|
||||
version "20.0.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-matchers/-/jest-matchers-20.0.3.tgz#ca69db1c32db5a6f707fa5e0401abb55700dfd60"
|
||||
@ -8722,6 +8743,16 @@ jest-message-util@^22.4.0:
|
||||
slash "^1.0.0"
|
||||
stack-utils "^1.0.1"
|
||||
|
||||
jest-message-util@^22.4.3:
|
||||
version "22.4.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-22.4.3.tgz#cf3d38aafe4befddbfc455e57d65d5239e399eb7"
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.0.0-beta.35"
|
||||
chalk "^2.0.1"
|
||||
micromatch "^2.3.11"
|
||||
slash "^1.0.0"
|
||||
stack-utils "^1.0.1"
|
||||
|
||||
jest-mock@^20.0.3:
|
||||
version "20.0.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-20.0.3.tgz#8bc070e90414aa155c11a8d64c869a0d5c71da59"
|
||||
@ -8730,6 +8761,10 @@ jest-mock@^22.2.0:
|
||||
version "22.2.0"
|
||||
resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-22.2.0.tgz#444b3f9488a7473adae09bc8a77294afded397a7"
|
||||
|
||||
jest-mock@^22.4.3:
|
||||
version "22.4.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-22.4.3.tgz#f63ba2f07a1511772cdc7979733397df770aabc7"
|
||||
|
||||
jest-preset-angular@^5.2.1:
|
||||
version "5.2.1"
|
||||
resolved "https://registry.yarnpkg.com/jest-preset-angular/-/jest-preset-angular-5.2.1.tgz#b93611145bf2ef373c1ffe80d8870af0e91f7b64"
|
||||
@ -8746,17 +8781,21 @@ jest-regex-util@^22.1.0:
|
||||
version "22.1.0"
|
||||
resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-22.1.0.tgz#5daf2fe270074b6da63e5d85f1c9acc866768f53"
|
||||
|
||||
jest-regex-util@^22.4.3:
|
||||
version "22.4.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-22.4.3.tgz#a826eb191cdf22502198c5401a1fc04de9cef5af"
|
||||
|
||||
jest-resolve-dependencies@^20.0.3:
|
||||
version "20.0.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-20.0.3.tgz#6e14a7b717af0f2cb3667c549de40af017b1723a"
|
||||
dependencies:
|
||||
jest-regex-util "^20.0.3"
|
||||
|
||||
jest-resolve-dependencies@^22.1.0:
|
||||
version "22.1.0"
|
||||
resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-22.1.0.tgz#340e4139fb13315cd43abc054e6c06136be51e31"
|
||||
jest-resolve-dependencies@^22.4.3:
|
||||
version "22.4.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-22.4.3.tgz#e2256a5a846732dc3969cb72f3c9ad7725a8195e"
|
||||
dependencies:
|
||||
jest-regex-util "^22.1.0"
|
||||
jest-regex-util "^22.4.3"
|
||||
|
||||
jest-resolve@^20.0.4:
|
||||
version "20.0.4"
|
||||
@ -8773,20 +8812,27 @@ jest-resolve@^22.4.2:
|
||||
browser-resolve "^1.11.2"
|
||||
chalk "^2.0.1"
|
||||
|
||||
jest-runner@^22.4.2:
|
||||
version "22.4.2"
|
||||
resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-22.4.2.tgz#19390ea9d99f768973e16f95a1efa351c0017e87"
|
||||
jest-resolve@^22.4.3:
|
||||
version "22.4.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-22.4.3.tgz#0ce9d438c8438229aa9b916968ec6b05c1abb4ea"
|
||||
dependencies:
|
||||
browser-resolve "^1.11.2"
|
||||
chalk "^2.0.1"
|
||||
|
||||
jest-runner@^22.4.3:
|
||||
version "22.4.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-22.4.3.tgz#298ddd6a22b992c64401b4667702b325e50610c3"
|
||||
dependencies:
|
||||
exit "^0.1.2"
|
||||
jest-config "^22.4.2"
|
||||
jest-docblock "^22.4.0"
|
||||
jest-haste-map "^22.4.2"
|
||||
jest-jasmine2 "^22.4.2"
|
||||
jest-leak-detector "^22.4.0"
|
||||
jest-message-util "^22.4.0"
|
||||
jest-runtime "^22.4.2"
|
||||
jest-util "^22.4.1"
|
||||
jest-worker "^22.2.2"
|
||||
jest-config "^22.4.3"
|
||||
jest-docblock "^22.4.3"
|
||||
jest-haste-map "^22.4.3"
|
||||
jest-jasmine2 "^22.4.3"
|
||||
jest-leak-detector "^22.4.3"
|
||||
jest-message-util "^22.4.3"
|
||||
jest-runtime "^22.4.3"
|
||||
jest-util "^22.4.3"
|
||||
jest-worker "^22.4.3"
|
||||
throat "^4.0.0"
|
||||
|
||||
jest-runtime@^20.0.4:
|
||||
@ -8809,23 +8855,23 @@ jest-runtime@^20.0.4:
|
||||
strip-bom "3.0.0"
|
||||
yargs "^7.0.2"
|
||||
|
||||
jest-runtime@^22.4.2:
|
||||
version "22.4.2"
|
||||
resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-22.4.2.tgz#0de0444f65ce15ee4f2e0055133fc7c17b9168f3"
|
||||
jest-runtime@^22.4.3:
|
||||
version "22.4.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-22.4.3.tgz#b69926c34b851b920f666c93e86ba2912087e3d0"
|
||||
dependencies:
|
||||
babel-core "^6.0.0"
|
||||
babel-jest "^22.4.1"
|
||||
babel-jest "^22.4.3"
|
||||
babel-plugin-istanbul "^4.1.5"
|
||||
chalk "^2.0.1"
|
||||
convert-source-map "^1.4.0"
|
||||
exit "^0.1.2"
|
||||
graceful-fs "^4.1.11"
|
||||
jest-config "^22.4.2"
|
||||
jest-haste-map "^22.4.2"
|
||||
jest-regex-util "^22.1.0"
|
||||
jest-resolve "^22.4.2"
|
||||
jest-util "^22.4.1"
|
||||
jest-validate "^22.4.2"
|
||||
jest-config "^22.4.3"
|
||||
jest-haste-map "^22.4.3"
|
||||
jest-regex-util "^22.4.3"
|
||||
jest-resolve "^22.4.3"
|
||||
jest-util "^22.4.3"
|
||||
jest-validate "^22.4.3"
|
||||
json-stable-stringify "^1.0.1"
|
||||
micromatch "^2.3.11"
|
||||
realpath-native "^1.0.0"
|
||||
@ -8834,9 +8880,9 @@ jest-runtime@^22.4.2:
|
||||
write-file-atomic "^2.1.0"
|
||||
yargs "^10.0.3"
|
||||
|
||||
jest-serializer@^22.4.0:
|
||||
version "22.4.0"
|
||||
resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-22.4.0.tgz#b5d145b98c4b0d2c20ab686609adbb81fe23b566"
|
||||
jest-serializer@^22.4.3:
|
||||
version "22.4.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-22.4.3.tgz#a679b81a7f111e4766235f4f0c46d230ee0f7436"
|
||||
|
||||
jest-snapshot@>=20.0.3:
|
||||
version "22.0.6"
|
||||
@ -8871,6 +8917,17 @@ jest-snapshot@^22.4.0:
|
||||
natural-compare "^1.4.0"
|
||||
pretty-format "^22.4.0"
|
||||
|
||||
jest-snapshot@^22.4.3:
|
||||
version "22.4.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-22.4.3.tgz#b5c9b42846ffb9faccb76b841315ba67887362d2"
|
||||
dependencies:
|
||||
chalk "^2.0.1"
|
||||
jest-diff "^22.4.3"
|
||||
jest-matcher-utils "^22.4.3"
|
||||
mkdirp "^0.5.1"
|
||||
natural-compare "^1.4.0"
|
||||
pretty-format "^22.4.3"
|
||||
|
||||
jest-specific-snapshot@^0.5.0:
|
||||
version "0.5.0"
|
||||
resolved "https://registry.yarnpkg.com/jest-specific-snapshot/-/jest-specific-snapshot-0.5.0.tgz#92201b5f51fbe56cc744bdfab08f379867c1bb18"
|
||||
@ -8901,6 +8958,18 @@ jest-util@^22.4.1:
|
||||
mkdirp "^0.5.1"
|
||||
source-map "^0.6.0"
|
||||
|
||||
jest-util@^22.4.3:
|
||||
version "22.4.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-22.4.3.tgz#c70fec8eec487c37b10b0809dc064a7ecf6aafac"
|
||||
dependencies:
|
||||
callsites "^2.0.0"
|
||||
chalk "^2.0.1"
|
||||
graceful-fs "^4.1.11"
|
||||
is-ci "^1.0.10"
|
||||
jest-message-util "^22.4.3"
|
||||
mkdirp "^0.5.1"
|
||||
source-map "^0.6.0"
|
||||
|
||||
jest-validate@^20.0.3:
|
||||
version "20.0.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-20.0.3.tgz#d0cfd1de4f579f298484925c280f8f1d94ec3cab"
|
||||
@ -8920,6 +8989,16 @@ jest-validate@^22.4.0, jest-validate@^22.4.2:
|
||||
leven "^2.1.0"
|
||||
pretty-format "^22.4.0"
|
||||
|
||||
jest-validate@^22.4.3:
|
||||
version "22.4.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-22.4.3.tgz#0780954a5a7daaeec8d3c10834b9280865976b30"
|
||||
dependencies:
|
||||
chalk "^2.0.1"
|
||||
jest-config "^22.4.3"
|
||||
jest-get-type "^22.4.3"
|
||||
leven "^2.1.0"
|
||||
pretty-format "^22.4.3"
|
||||
|
||||
jest-vue-preprocessor@^1.4.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/jest-vue-preprocessor/-/jest-vue-preprocessor-1.4.0.tgz#804e4208c6d667efa6f2910f62c1cdcb231bcb59"
|
||||
@ -8941,9 +9020,9 @@ jest-worker@^22.0.3:
|
||||
dependencies:
|
||||
merge-stream "^1.0.1"
|
||||
|
||||
jest-worker@^22.2.2:
|
||||
version "22.2.2"
|
||||
resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-22.2.2.tgz#c1f5dc39976884b81f68ec50cb8532b2cbab3390"
|
||||
jest-worker@^22.4.3:
|
||||
version "22.4.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-22.4.3.tgz#5c421417cba1c0abf64bf56bd5fb7968d79dd40b"
|
||||
dependencies:
|
||||
merge-stream "^1.0.1"
|
||||
|
||||
@ -8957,12 +9036,12 @@ jest@20.0.4, jest@^20.0.4:
|
||||
dependencies:
|
||||
jest-cli "^20.0.4"
|
||||
|
||||
jest@^22.4.2:
|
||||
version "22.4.2"
|
||||
resolved "https://registry.yarnpkg.com/jest/-/jest-22.4.2.tgz#34012834a49bf1bdd3bc783850ab44e4499afc20"
|
||||
jest@^22.4.3:
|
||||
version "22.4.3"
|
||||
resolved "https://registry.yarnpkg.com/jest/-/jest-22.4.3.tgz#2261f4b117dc46d9a4a1a673d2150958dee92f16"
|
||||
dependencies:
|
||||
import-local "^1.0.0"
|
||||
jest-cli "^22.4.2"
|
||||
jest-cli "^22.4.3"
|
||||
|
||||
js-base64@^2.1.8, js-base64@^2.1.9:
|
||||
version "2.4.0"
|
||||
@ -9272,9 +9351,9 @@ karma@~2.0.0:
|
||||
tmp "0.0.33"
|
||||
useragent "^2.1.12"
|
||||
|
||||
keycode@^2.1.9:
|
||||
version "2.1.9"
|
||||
resolved "https://registry.yarnpkg.com/keycode/-/keycode-2.1.9.tgz#964a23c54e4889405b4861a5c9f0480d45141dfa"
|
||||
keycode@^2.2.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/keycode/-/keycode-2.2.0.tgz#3d0af56dc7b8b8e5cba8d0a97f107204eec22b04"
|
||||
|
||||
killable@^1.0.0:
|
||||
version "1.0.0"
|
||||
@ -10154,9 +10233,9 @@ markdown-table@^1.1.0:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.1.tgz#4b3dd3a133d1518b8ef0dbc709bf2a1b4824bc8c"
|
||||
|
||||
marked@^0.3.17:
|
||||
version "0.3.17"
|
||||
resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.17.tgz#607f06668b3c6b1246b28f13da76116ac1aa2d2b"
|
||||
marked@^0.3.18:
|
||||
version "0.3.18"
|
||||
resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.18.tgz#3ef058cd926101849b92a7a7c15db18c7fc76b2f"
|
||||
|
||||
marked@^0.3.9:
|
||||
version "0.3.12"
|
||||
@ -12316,13 +12395,13 @@ postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.13, postcss@^6.0.16, postcss@^6.0.8
|
||||
source-map "^0.6.1"
|
||||
supports-color "^5.1.0"
|
||||
|
||||
postcss@^6.0.17:
|
||||
version "6.0.19"
|
||||
resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.19.tgz#76a78386f670b9d9494a655bf23ac012effd1555"
|
||||
postcss@^6.0.20:
|
||||
version "6.0.21"
|
||||
resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.21.tgz#8265662694eddf9e9a5960db6da33c39e4cd069d"
|
||||
dependencies:
|
||||
chalk "^2.3.1"
|
||||
chalk "^2.3.2"
|
||||
source-map "^0.6.1"
|
||||
supports-color "^5.2.0"
|
||||
supports-color "^5.3.0"
|
||||
|
||||
prelude-ls@~1.1.2:
|
||||
version "1.1.2"
|
||||
@ -12376,6 +12455,13 @@ pretty-format@^22.4.0:
|
||||
ansi-regex "^3.0.0"
|
||||
ansi-styles "^3.2.0"
|
||||
|
||||
pretty-format@^22.4.3:
|
||||
version "22.4.3"
|
||||
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-22.4.3.tgz#f873d780839a9c02e9664c8a082e9ee79eaac16f"
|
||||
dependencies:
|
||||
ansi-regex "^3.0.0"
|
||||
ansi-styles "^3.2.0"
|
||||
|
||||
pretty-format@^4.2.1:
|
||||
version "4.3.1"
|
||||
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-4.3.1.tgz#530be5c42b3c05b36414a7a2a4337aa80acd0e8d"
|
||||
@ -13426,7 +13512,7 @@ reduce-function-call@^1.0.1:
|
||||
dependencies:
|
||||
balanced-match "^0.4.2"
|
||||
|
||||
redux@^3.6.0, redux@^3.7.2:
|
||||
redux@^3.7.2:
|
||||
version "3.7.2"
|
||||
resolved "https://registry.yarnpkg.com/redux/-/redux-3.7.2.tgz#06b73123215901d25d065be342eb026bc1c8537b"
|
||||
dependencies:
|
||||
@ -15311,6 +15397,13 @@ svg-tags@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764"
|
||||
|
||||
svg-url-loader@^2.3.2:
|
||||
version "2.3.2"
|
||||
resolved "https://registry.yarnpkg.com/svg-url-loader/-/svg-url-loader-2.3.2.tgz#dd86b26c19fe3b914f04ea10ef39594eade04464"
|
||||
dependencies:
|
||||
file-loader "1.1.11"
|
||||
loader-utils "1.1.0"
|
||||
|
||||
svgo@^0.7.0:
|
||||
version "0.7.2"
|
||||
resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5"
|
||||
|
Loading…
x
Reference in New Issue
Block a user