Merge branch 'next' into emotion-dep

This commit is contained in:
Norbert de Langen 2019-07-10 15:27:55 +02:00
commit dfede8b741
155 changed files with 1312 additions and 880 deletions

View File

@ -321,29 +321,6 @@ jobs:
- run:
name: Upload coverage
command: yarn coverage
cli-test:
<<: *defaults
environment:
BASH_ENV: ~/.bashrc
steps:
- checkout
- attach_workspace:
at: .
- run:
name: Test
command: yarn test --cli
no_output_timeout: 1800
cli-test-latest-cra:
<<: *defaults
environment:
BASH_ENV: ~/.bashrc
steps:
- checkout
- attach_workspace:
at: .
- run:
name: Test CLI with latest CR(N)A
command: yarn test-latest-cra
workflows:
version: 2
build_test_deploy:
@ -373,12 +350,6 @@ workflows:
- coverage:
requires:
- test
- cli-test:
requires:
- build
- cli-test-latest-cra:
requires:
- build
- chromatic:
requires:
- examples

17
.travis.yml Normal file
View File

@ -0,0 +1,17 @@
language: node_js
node_js:
- "8"
cache:
yarn: true
install:
- yarn install
- yarn bootstrap --core
script:
jobs:
include:
- script: yarn test --cli
- script: yarn test-latest-cra

View File

@ -1,3 +1,34 @@
## 5.2.0-alpha.40 (July 10, 2019)
### Bug Fixes
* Addon-knobs: Revert entrypoint deletion ([#7369](https://github.com/storybookjs/storybook/pull/7369))
* Typescript: Fix types in api package ([#7072](https://github.com/storybookjs/storybook/pull/7072))
* UI: Fix settings page route (about, shortcuts) ([#7241](https://github.com/storybookjs/storybook/pull/7241))
### Maintenance
* Linting: ADD an ignore for an eslint error about a missing dependency (puppeteer) ([#7239](https://github.com/storybookjs/storybook/pull/7239))
* CI: ADD travis ([#7252](https://github.com/storybookjs/storybook/pull/7252))
* Typescript: Migrate @storybook/angular ([#6570](https://github.com/storybookjs/storybook/pull/6570))
### Dependency Upgrades
* Bump express-graphql from 0.7.1 to 0.8.0 ([#7345](https://github.com/storybookjs/storybook/pull/7345))
* Bump react-native-modal-datetime-picker from 6.1.0 to 7.4.2 ([#6844](https://github.com/storybookjs/storybook/pull/6844))
## 5.2.0-alpha.39 (July 10, 2019)
### Bug Fixes
* UI: Fix Sidebar input refresh on 'Enter' ([#7342](https://github.com/storybookjs/storybook/pull/7342))
* Addon-knobs: Fix select options types to allow string[] and null ([#7356](https://github.com/storybookjs/storybook/pull/7356))
### Maintenance
* Typescript: Migrate @storybook/react ([#7054](https://github.com/storybookjs/storybook/pull/7054))
* Build: delete tests & snapshots from dist ([#7358](https://github.com/storybookjs/storybook/pull/7358))
## 5.2.0-alpha.38 (July 9, 2019)
### Bug Fixes

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-a11y",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "a11y addon for storybook",
"keywords": [
"a11y",
@ -26,12 +26,12 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.2.0-alpha.38",
"@storybook/api": "5.2.0-alpha.38",
"@storybook/client-logger": "5.2.0-alpha.38",
"@storybook/components": "5.2.0-alpha.38",
"@storybook/core-events": "5.2.0-alpha.38",
"@storybook/theming": "5.2.0-alpha.38",
"@storybook/addons": "5.2.0-alpha.40",
"@storybook/api": "5.2.0-alpha.40",
"@storybook/client-logger": "5.2.0-alpha.40",
"@storybook/components": "5.2.0-alpha.40",
"@storybook/core-events": "5.2.0-alpha.40",
"@storybook/theming": "5.2.0-alpha.40",
"axe-core": "^3.2.2",
"common-tags": "^1.8.0",
"core-js": "^3.0.1",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-actions",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "Action Logger addon for storybook",
"keywords": [
"storybook"
@ -21,11 +21,11 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.2.0-alpha.38",
"@storybook/api": "5.2.0-alpha.38",
"@storybook/components": "5.2.0-alpha.38",
"@storybook/core-events": "5.2.0-alpha.38",
"@storybook/theming": "5.2.0-alpha.38",
"@storybook/addons": "5.2.0-alpha.40",
"@storybook/api": "5.2.0-alpha.40",
"@storybook/components": "5.2.0-alpha.40",
"@storybook/core-events": "5.2.0-alpha.40",
"@storybook/theming": "5.2.0-alpha.40",
"core-js": "^3.0.1",
"fast-deep-equal": "^2.0.1",
"global": "^4.3.2",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-backgrounds",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "A storybook addon to show different backgrounds for your preview",
"keywords": [
"addon",
@ -25,12 +25,12 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.2.0-alpha.38",
"@storybook/api": "5.2.0-alpha.38",
"@storybook/client-logger": "5.2.0-alpha.38",
"@storybook/components": "5.2.0-alpha.38",
"@storybook/core-events": "5.2.0-alpha.38",
"@storybook/theming": "5.2.0-alpha.38",
"@storybook/addons": "5.2.0-alpha.40",
"@storybook/api": "5.2.0-alpha.40",
"@storybook/client-logger": "5.2.0-alpha.40",
"@storybook/components": "5.2.0-alpha.40",
"@storybook/core-events": "5.2.0-alpha.40",
"@storybook/theming": "5.2.0-alpha.40",
"core-js": "^3.0.1",
"memoizerific": "^1.11.3",
"react": "^16.8.3",

View File

@ -1,3 +1,5 @@
import { StoryFn } from "@storybook/addons";
export interface ICollection {
[p: string]: any;
}
@ -11,11 +13,13 @@ export interface NgModuleMetadata {
}
export interface IStory {
props?: ICollection;
moduleMetadata?: Partial<NgModuleMetadata>;
component?: any;
props?: ICollection;
propsMeta?: ICollection;
moduleMetadata?: NgModuleMetadata;
template?: string;
styles?: string[];
}
declare module '@storybook/addon-centered/angular' {
export function centered(story: IStory): IStory;
export function centered(story: StoryFn<IStory>): IStory;
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-centered",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "Storybook decorator to center components",
"keywords": [
"addon",
@ -23,6 +23,7 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.2.0-alpha.40",
"core-js": "^3.0.1",
"global": "^4.3.2",
"util-deprecate": "^1.0.2"

View File

@ -1,3 +1,5 @@
import { StoryFn } from '@storybook/addons';
import { IStory } from '../angular.d';
import styles from './styles';
function getComponentSelector(component: any) {
@ -43,7 +45,7 @@ function getModuleMetadata(metadata: any) {
return moduleMetadata;
}
export default function(metadataFn: any) {
export default function(metadataFn: StoryFn<IStory>) {
const metadata = metadataFn();
return {

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-contexts",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "Storybook Addon Contexts",
"keywords": [
"storybook",
@ -28,10 +28,10 @@
"dev:check-types": "tsc --noEmit"
},
"dependencies": {
"@storybook/addons": "5.2.0-alpha.38",
"@storybook/api": "5.2.0-alpha.38",
"@storybook/components": "5.2.0-alpha.38",
"@storybook/core-events": "5.2.0-alpha.38",
"@storybook/addons": "5.2.0-alpha.40",
"@storybook/api": "5.2.0-alpha.40",
"@storybook/components": "5.2.0-alpha.40",
"@storybook/core-events": "5.2.0-alpha.40",
"core-js": "^3.0.1"
},
"peerDependencies": {

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-cssresources",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "A storybook addon to switch between css resources at runtime for your story",
"keywords": [
"addon",
@ -25,10 +25,10 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.2.0-alpha.38",
"@storybook/api": "5.2.0-alpha.38",
"@storybook/components": "5.2.0-alpha.38",
"@storybook/core-events": "5.2.0-alpha.38",
"@storybook/addons": "5.2.0-alpha.40",
"@storybook/api": "5.2.0-alpha.40",
"@storybook/components": "5.2.0-alpha.40",
"@storybook/core-events": "5.2.0-alpha.40",
"core-js": "^3.0.1",
"global": "^4.3.2",
"react": "^16.8.3"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-design-assets",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "Design asset preview for storybook",
"keywords": [
"addon",
@ -27,12 +27,12 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.2.0-alpha.38",
"@storybook/api": "5.2.0-alpha.38",
"@storybook/client-logger": "5.2.0-alpha.38",
"@storybook/components": "5.2.0-alpha.38",
"@storybook/core-events": "5.2.0-alpha.38",
"@storybook/theming": "5.2.0-alpha.38",
"@storybook/addons": "5.2.0-alpha.40",
"@storybook/api": "5.2.0-alpha.40",
"@storybook/client-logger": "5.2.0-alpha.40",
"@storybook/components": "5.2.0-alpha.40",
"@storybook/core-events": "5.2.0-alpha.40",
"@storybook/theming": "5.2.0-alpha.40",
"common-tags": "^1.8.0",
"core-js": "^3.0.1",
"global": "^4.3.2",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-docs",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "Superior documentation for your components",
"keywords": [
"addon",
@ -28,11 +28,11 @@
"@mdx-js/loader": "^1.0.0",
"@mdx-js/mdx": "^1.0.0",
"@mdx-js/react": "^1.0.16",
"@storybook/addons": "5.2.0-alpha.38",
"@storybook/api": "5.2.0-alpha.38",
"@storybook/components": "5.2.0-alpha.38",
"@storybook/router": "5.2.0-alpha.38",
"@storybook/theming": "5.2.0-alpha.38",
"@storybook/addons": "5.2.0-alpha.40",
"@storybook/api": "5.2.0-alpha.40",
"@storybook/components": "5.2.0-alpha.40",
"@storybook/router": "5.2.0-alpha.40",
"@storybook/theming": "5.2.0-alpha.40",
"core-js": "^3.0.1",
"global": "^4.3.2",
"lodash": "^4.17.11",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-events",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "Add events to your Storybook stories.",
"keywords": [
"addon",
@ -24,10 +24,10 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.2.0-alpha.38",
"@storybook/api": "5.2.0-alpha.38",
"@storybook/core-events": "5.2.0-alpha.38",
"@storybook/theming": "5.2.0-alpha.38",
"@storybook/addons": "5.2.0-alpha.40",
"@storybook/api": "5.2.0-alpha.40",
"@storybook/core-events": "5.2.0-alpha.40",
"@storybook/theming": "5.2.0-alpha.40",
"core-js": "^3.0.1",
"format-json": "^1.0.3",
"lodash": "^4.17.11",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-google-analytics",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "Storybook addon for google analytics",
"keywords": [
"addon",
@ -20,8 +20,8 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.2.0-alpha.38",
"@storybook/core-events": "5.2.0-alpha.38",
"@storybook/addons": "5.2.0-alpha.40",
"@storybook/core-events": "5.2.0-alpha.40",
"core-js": "^3.0.1",
"global": "^4.3.2",
"react-ga": "^2.5.7"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-graphql",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "Storybook addon to display the GraphiQL IDE",
"keywords": [
"addon",
@ -22,8 +22,8 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.2.0-alpha.38",
"@storybook/api": "5.2.0-alpha.38",
"@storybook/addons": "5.2.0-alpha.40",
"@storybook/api": "5.2.0-alpha.40",
"core-js": "^3.0.1",
"global": "^4.3.2",
"graphiql": "^0.13.0",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-info",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "A Storybook addon to show additional information for your stories.",
"keywords": [
"addon",
@ -22,10 +22,10 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.2.0-alpha.38",
"@storybook/client-logger": "5.2.0-alpha.38",
"@storybook/components": "5.2.0-alpha.38",
"@storybook/theming": "5.2.0-alpha.38",
"@storybook/addons": "5.2.0-alpha.40",
"@storybook/client-logger": "5.2.0-alpha.40",
"@storybook/components": "5.2.0-alpha.40",
"@storybook/theming": "5.2.0-alpha.40",
"core-js": "^3.0.1",
"global": "^4.3.2",
"jsx-to-string": "^1.4.0",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-jest",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "React storybook addon that show component jest report",
"keywords": [
"addon",
@ -28,11 +28,11 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.2.0-alpha.38",
"@storybook/api": "5.2.0-alpha.38",
"@storybook/components": "5.2.0-alpha.38",
"@storybook/core-events": "5.2.0-alpha.38",
"@storybook/theming": "5.2.0-alpha.38",
"@storybook/addons": "5.2.0-alpha.40",
"@storybook/api": "5.2.0-alpha.40",
"@storybook/components": "5.2.0-alpha.40",
"@storybook/core-events": "5.2.0-alpha.40",
"@storybook/theming": "5.2.0-alpha.40",
"core-js": "^3.0.1",
"global": "^4.3.2",
"react": "^16.8.3",

View File

@ -1,9 +1,9 @@
import addons from '@storybook/addons';
import addons, { Parameters } from '@storybook/addons';
import deprecate from 'util-deprecate';
import { normalize, sep } from 'upath';
import { ADD_TESTS } from './shared';
interface AddonParameters {
interface AddonParameters extends Parameters {
jest?: string | string[] | { disable: true };
}

1
addons/knobs/angular.js vendored Normal file
View File

@ -0,0 +1 @@
module.exports = require('./dist/deprecated');

View File

@ -1 +0,0 @@
export * from './dist/deprecated';

1
addons/knobs/html.js Normal file
View File

@ -0,0 +1 @@
module.exports = require('./dist/deprecated');

View File

@ -1 +0,0 @@
export * from './dist/deprecated';

1
addons/knobs/marko.js Normal file
View File

@ -0,0 +1 @@
module.exports = require('./dist/deprecated');

View File

@ -1 +0,0 @@
export * from './dist/deprecated';

1
addons/knobs/mithril.js Normal file
View File

@ -0,0 +1 @@
module.exports = require('./dist/deprecated');

View File

@ -1 +0,0 @@
export * from './dist/deprecated';

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-knobs",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "Storybook Addon Prop Editor Component",
"keywords": [
"addon",
@ -22,11 +22,11 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.2.0-alpha.38",
"@storybook/client-api": "5.2.0-alpha.38",
"@storybook/components": "5.2.0-alpha.38",
"@storybook/core-events": "5.2.0-alpha.38",
"@storybook/theming": "5.2.0-alpha.38",
"@storybook/addons": "5.2.0-alpha.40",
"@storybook/client-api": "5.2.0-alpha.40",
"@storybook/components": "5.2.0-alpha.40",
"@storybook/core-events": "5.2.0-alpha.40",
"@storybook/theming": "5.2.0-alpha.40",
"copy-to-clipboard": "^3.0.8",
"core-js": "^3.0.1",
"escape-html": "^1.0.3",

1
addons/knobs/polymer.js Normal file
View File

@ -0,0 +1 @@
module.exports = require('./dist/deprecated');

View File

@ -1 +0,0 @@
export * from './dist/deprecated';

1
addons/knobs/react.js vendored Normal file
View File

@ -0,0 +1 @@
module.exports = require('./dist/deprecated');

View File

@ -1 +0,0 @@
export * from './dist/deprecated';

View File

@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
import { Form } from '@storybook/components';
type SelectTypeKnobValue = string;
export type SelectTypeKnobValue = string | number | null | undefined;
export interface SelectTypeKnob {
name: string;
@ -11,9 +11,9 @@ export interface SelectTypeKnob {
options: SelectTypeOptionsProp;
}
export interface SelectTypeOptionsProp {
[key: string]: SelectTypeKnobValue;
}
export type SelectTypeOptionsProp =
| Record<string, SelectTypeKnobValue>
| NonNullable<SelectTypeKnobValue>[];
export interface SelectTypeProps {
knob: SelectTypeKnob;

View File

@ -31,7 +31,7 @@ export { NumberTypeKnob, NumberTypeKnobOptions } from './Number';
export { ColorTypeKnob } from './Color';
export { BooleanTypeKnob } from './Boolean';
export { ObjectTypeKnob } from './Object';
export { SelectTypeKnob, SelectTypeOptionsProp } from './Select';
export { SelectTypeKnob, SelectTypeOptionsProp, SelectTypeKnobValue } from './Select';
export { RadiosTypeKnob, RadiosTypeOptionsProp } from './Radio';
export { ArrayTypeKnob } from './Array';
export { DateTypeKnob } from './Date';

View File

@ -7,6 +7,7 @@ import {
ButtonTypeOnClickProp,
RadiosTypeOptionsProp,
SelectTypeOptionsProp,
SelectTypeKnobValue,
OptionsTypeOptionsProp,
OptionsKnobOptions,
} from './components/types';
@ -63,7 +64,7 @@ export function object<T>(name: string, value: T, groupId?: string) {
export function select(
name: string,
options: SelectTypeOptionsProp,
value: string,
value: SelectTypeKnobValue,
groupId?: string
) {
return manager.knob(name, { type: 'select', selectV2: true, options, value, groupId });

1
addons/knobs/vue.js Normal file
View File

@ -0,0 +1 @@
module.exports = require('./dist/deprecated');

View File

@ -1 +0,0 @@
export * from './dist/deprecated';

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-links",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "Story Links addon for storybook",
"keywords": [
"addon",
@ -22,9 +22,9 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.2.0-alpha.38",
"@storybook/core-events": "5.2.0-alpha.38",
"@storybook/router": "5.2.0-alpha.38",
"@storybook/addons": "5.2.0-alpha.40",
"@storybook/core-events": "5.2.0-alpha.40",
"@storybook/router": "5.2.0-alpha.40",
"common-tags": "^1.8.0",
"core-js": "^3.0.1",
"global": "^4.3.2",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-notes",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "Write notes for your Storybook stories.",
"keywords": [
"addon",
@ -23,13 +23,13 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.2.0-alpha.38",
"@storybook/api": "5.2.0-alpha.38",
"@storybook/client-logger": "5.2.0-alpha.38",
"@storybook/components": "5.2.0-alpha.38",
"@storybook/core-events": "5.2.0-alpha.38",
"@storybook/router": "5.2.0-alpha.38",
"@storybook/theming": "5.2.0-alpha.38",
"@storybook/addons": "5.2.0-alpha.40",
"@storybook/api": "5.2.0-alpha.40",
"@storybook/client-logger": "5.2.0-alpha.40",
"@storybook/components": "5.2.0-alpha.40",
"@storybook/core-events": "5.2.0-alpha.40",
"@storybook/router": "5.2.0-alpha.40",
"@storybook/theming": "5.2.0-alpha.40",
"core-js": "^3.0.1",
"global": "^4.3.2",
"markdown-to-jsx": "^6.9.3",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-ondevice-actions",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "Action Logger addon for react-native storybook",
"keywords": [
"storybook"
@ -19,13 +19,13 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.2.0-alpha.38",
"@storybook/core-events": "5.2.0-alpha.38",
"@storybook/addons": "5.2.0-alpha.40",
"@storybook/core-events": "5.2.0-alpha.40",
"core-js": "^2.5.7",
"fast-deep-equal": "^2.0.1"
},
"devDependencies": {
"@storybook/addon-actions": "5.2.0-alpha.38"
"@storybook/addon-actions": "5.2.0-alpha.40"
},
"peerDependencies": {
"@storybook/addon-actions": "*",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-ondevice-backgrounds",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "A react-native storybook addon to show different backgrounds for your preview",
"keywords": [
"addon",
@ -24,7 +24,7 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.2.0-alpha.38",
"@storybook/addons": "5.2.0-alpha.40",
"core-js": "^3.0.1",
"prop-types": "^15.7.2"
},

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-ondevice-knobs",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "Display storybook story knobs on your deviced.",
"keywords": [
"addon",
@ -21,13 +21,13 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.2.0-alpha.38",
"@storybook/core-events": "5.2.0-alpha.38",
"@storybook/addons": "5.2.0-alpha.40",
"@storybook/core-events": "5.2.0-alpha.40",
"core-js": "^3.0.1",
"deep-equal": "^1.0.1",
"prop-types": "^15.7.2",
"react-native-color-picker": "^0.4.0",
"react-native-modal-datetime-picker": "^6.0.0",
"react-native-modal-datetime-picker": "^7.4.2",
"react-native-modal-selector": "^1.0.2",
"react-native-switch": "^1.5.0"
},

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-ondevice-notes",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "Write notes for your react-native Storybook stories.",
"keywords": [
"addon",
@ -20,7 +20,7 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.2.0-alpha.38",
"@storybook/addons": "5.2.0-alpha.40",
"core-js": "^3.0.1",
"prop-types": "^15.7.2",
"react-native-simple-markdown": "^1.1.0"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-options",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "Options addon for storybook",
"keywords": [
"addon",
@ -22,7 +22,7 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.2.0-alpha.38",
"@storybook/addons": "5.2.0-alpha.40",
"core-js": "^3.0.1",
"util-deprecate": "^1.0.2"
},

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-queryparams",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "parameter addon for storybook",
"keywords": [
"addon",
@ -23,12 +23,12 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.2.0-alpha.38",
"@storybook/api": "5.2.0-alpha.38",
"@storybook/client-logger": "5.2.0-alpha.38",
"@storybook/components": "5.2.0-alpha.38",
"@storybook/core-events": "5.2.0-alpha.38",
"@storybook/theming": "5.2.0-alpha.38",
"@storybook/addons": "5.2.0-alpha.40",
"@storybook/api": "5.2.0-alpha.40",
"@storybook/client-logger": "5.2.0-alpha.40",
"@storybook/components": "5.2.0-alpha.40",
"@storybook/core-events": "5.2.0-alpha.40",
"@storybook/theming": "5.2.0-alpha.40",
"common-tags": "^1.8.0",
"core-js": "^3.0.1",
"global": "^4.3.2",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-storyshots",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "StoryShots is a Jest Snapshot Testing Addon for Storybook.",
"keywords": [
"addon",
@ -25,7 +25,7 @@
"storybook": "start-storybook -p 6006"
},
"dependencies": {
"@storybook/addons": "5.2.0-alpha.38",
"@storybook/addons": "5.2.0-alpha.40",
"core-js": "^3.0.1",
"glob": "^7.1.3",
"global": "^4.3.2",

View File

@ -0,0 +1,10 @@
const error = 2;
const warn = 1;
const ignore = 0;
module.exports = {
rules: {
'import/no-unresolved': ignore,
'import/extensions': ignore,
},
};

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-storyshots-puppeteer",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "Image snappshots addition to StoryShots base on puppeteer",
"keywords": [
"addon",
@ -22,8 +22,8 @@
"prepare": "node ../../../scripts/prepare.js"
},
"dependencies": {
"@storybook/node-logger": "5.2.0-alpha.38",
"@storybook/router": "5.2.0-alpha.38",
"@storybook/node-logger": "5.2.0-alpha.40",
"@storybook/router": "5.2.0-alpha.40",
"core-js": "^3.0.1",
"jest-image-snapshot": "^2.8.2",
"regenerator-runtime": "^0.12.1"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-storysource",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "Stories addon for storybook",
"keywords": [
"addon",
@ -22,10 +22,10 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.2.0-alpha.38",
"@storybook/components": "5.2.0-alpha.38",
"@storybook/router": "5.2.0-alpha.38",
"@storybook/theming": "5.2.0-alpha.38",
"@storybook/addons": "5.2.0-alpha.40",
"@storybook/components": "5.2.0-alpha.40",
"@storybook/router": "5.2.0-alpha.40",
"@storybook/theming": "5.2.0-alpha.40",
"core-js": "^3.0.1",
"estraverse": "^4.2.0",
"loader-utils": "^1.2.3",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-viewport",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "Storybook addon to change the viewport size to mobile",
"keywords": [
"addon",
@ -21,12 +21,12 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.2.0-alpha.38",
"@storybook/api": "5.2.0-alpha.38",
"@storybook/client-logger": "5.2.0-alpha.38",
"@storybook/components": "5.2.0-alpha.38",
"@storybook/core-events": "5.2.0-alpha.38",
"@storybook/theming": "5.2.0-alpha.38",
"@storybook/addons": "5.2.0-alpha.40",
"@storybook/api": "5.2.0-alpha.40",
"@storybook/client-logger": "5.2.0-alpha.40",
"@storybook/components": "5.2.0-alpha.40",
"@storybook/core-events": "5.2.0-alpha.40",
"@storybook/theming": "5.2.0-alpha.40",
"core-js": "^3.0.1",
"global": "^4.3.2",
"memoizerific": "^1.11.3",

View File

@ -1,74 +0,0 @@
/*
* ATTENTION:
* - moduleMetadata
* - NgModuleMetadata
* - ICollection
*
* These typings are coped out of decorators.d.ts and types.d.ts in order to fix a bug with tsc
* It was imported out of dist before which was not the proper way of exporting public API
*
* This can be fixed by migrating app/angular to typescript
*/
export declare const moduleMetadata: (
metadata: Partial<NgModuleMetadata>
) => (storyFn: () => any) => any;
export interface NgModuleMetadata {
declarations?: any[];
entryComponents?: any[];
imports?: any[];
schemas?: any[];
providers?: any[];
}
export interface ICollection {
[p: string]: any;
}
export interface IStorybookStory {
name: string;
render: () => any;
}
/** @todo typo in Storibook */
export interface IStoribookSection {
kind: string;
stories: IStorybookStory[];
}
export interface IStoryContext {
kind: string;
name: string;
parameters: any;
}
export interface IStory {
props?: ICollection;
moduleMetadata?: Partial<NgModuleMetadata>;
component?: any;
template?: string;
}
export type IGetStory = (context: IStoryContext) => IStory;
export interface IApi {
kind: string;
addDecorator: (decorator: any) => IApi;
addParameters: (parameters: any) => IApi;
add: (storyName: string, getStory: IGetStory, parameters?: any) => IApi;
}
declare module '@storybook/angular' {
export function storiesOf(kind: string, module: NodeModule): IApi;
export function setAddon(addon: any): void;
export function addDecorator(decorator: any): IApi;
export function addParameters(parameters: any): IApi;
export function configure(loaders: () => void, module: NodeModule): void;
export function getStorybook(): IStoribookSection[];
export function forceReRender(): void;
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/angular",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "Storybook for Angular: Develop Angular Components in isolation with Hot Reloading.",
"keywords": [
"storybook"
@ -16,7 +16,7 @@
},
"license": "MIT",
"main": "dist/client/index.js",
"jsnext:main": "src/client/index.js",
"types": "dist/client/index.d.ts",
"bin": {
"build-storybook": "./bin/build.js",
"start-storybook": "./bin/index.js",
@ -26,8 +26,9 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/core": "5.2.0-alpha.38",
"@storybook/node-logger": "5.2.0-alpha.38",
"@storybook/addons": "5.2.0-alpha.40",
"@storybook/core": "5.2.0-alpha.40",
"@storybook/node-logger": "5.2.0-alpha.40",
"angular2-template-loader": "^0.6.2",
"core-js": "^3.0.1",
"fork-ts-checker-webpack-plugin": "^1.3.4",
@ -35,10 +36,15 @@
"regenerator-runtime": "^0.12.1",
"sass-loader": "^7.1.0",
"ts-loader": "^6.0.1",
"tsconfig-paths-webpack-plugin": "^3.2.0",
"tsconfig-paths-webpack-plugin": "^3.2.0"
},
"devDependencies": {
"@types/autoprefixer": "^9.4.0",
"@types/webpack-env": "^1.13.9",
"webpack": "^4.33.0"
},
"peerDependencies": {
"@angular-devkit/build-angular": ">=6.0.0",
"@angular-devkit/core": "^0.6.1 || >=7.0.0",
"@angular/common": ">=6.0.0",
"@angular/compiler": ">=6.0.0",
@ -49,6 +55,8 @@
"autoprefixer": "^8.1.0",
"babel-loader": "^7.0.0 || ^8.0.0",
"rxjs": "^6.0.0",
"typescript": "^3.4.0",
"webpack": "^4.32.2",
"zone.js": "^0.8.29 || ^0.9.0"
},
"engines": {

View File

@ -12,6 +12,8 @@ export {
export { moduleMetadata } from './preview/angular/decorators';
// tsc wants to use NodeModule instead of WebpackModule
declare const module: any;
if (module && module.hot && module.hot.decline) {
module.hot.decline();
}

View File

@ -1,4 +1,4 @@
import { InjectionToken } from '@angular/core';
import { NgStory } from './types';
import { StoryFnAngularReturnType } from '../types';
export const STORY = new InjectionToken<NgStory>('story');
export const STORY = new InjectionToken<StoryFnAngularReturnType>('story');

View File

@ -21,7 +21,7 @@ import {
import { Observable, Subscription } from 'rxjs';
import { first } from 'rxjs/operators';
import { STORY } from '../app.token';
import { NgStory, ICollection } from '../types';
import { StoryFnAngularReturnType, ICollection } from '../../types';
@Component({
selector: 'storybook-dynamic-app-root',
@ -36,11 +36,11 @@ export class AppComponent implements OnInit, OnDestroy {
constructor(
private cfr: ComponentFactoryResolver,
private changeDetectorRef: ChangeDetectorRef,
@Inject(STORY) private data: Observable<NgStory>
@Inject(STORY) private data: Observable<StoryFnAngularReturnType>
) {}
ngOnInit(): void {
this.data.pipe(first()).subscribe((data: NgStory) => {
this.data.pipe(first()).subscribe((data: StoryFnAngularReturnType) => {
this.target.clear();
const compFactory = this.cfr.resolveComponentFactory(data.component);
const componentRef = this.target.createComponent(compFactory);
@ -69,7 +69,7 @@ export class AppComponent implements OnInit, OnDestroy {
/**
* Set inputs and outputs
*/
private setProps(instance: any, { props = {} }: NgStory): void {
private setProps(instance: any, { props = {} }: StoryFnAngularReturnType): void {
const changes: SimpleChanges = {};
const hasNgOnChangesHook = !!instance.ngOnChanges;

View File

@ -1,5 +1,5 @@
/* eslint-disable no-param-reassign */
import { NgModuleMetadata } from './types';
import { NgModuleMetadata } from '../types';
export const moduleMetadata = (metadata: Partial<NgModuleMetadata>) => (storyFn: () => any) => {
const story = storyFn();

View File

@ -5,9 +5,10 @@ import { FormsModule } from '@angular/forms';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { BrowserModule } from '@angular/platform-browser';
import { ReplaySubject } from 'rxjs';
import { StoryFn } from '@storybook/addons';
import { AppComponent } from './components/app.component';
import { STORY } from './app.token';
import { NgModuleMetadata, IStoryFn, NgStory } from './types';
import { NgModuleMetadata, StoryFnAngularReturnType } from '../types';
declare global {
interface Window {
@ -29,7 +30,7 @@ const getModule = (
declarations: (Type<any> | any[])[],
entryComponents: (Type<any> | any[])[],
bootstrap: (Type<any> | any[])[],
data: NgStory,
data: StoryFnAngularReturnType,
moduleMetadata: NgModuleMetadata
) => {
storyData.next(data);
@ -100,7 +101,7 @@ const getExistenceOfComponentInModules = (
});
};
const initModule = (storyFn: IStoryFn) => {
const initModule = (storyFn: StoryFn<StoryFnAngularReturnType>) => {
const storyObj = storyFn();
const { component, template, props, styles, moduleMetadata = {} } = storyObj;
@ -167,7 +168,7 @@ const draw = (newModule: DynamicComponentType): void => {
}
};
export const renderNgApp = (storyFn: IStoryFn, forced: boolean) => {
export const renderNgApp = (storyFn: StoryFn<StoryFnAngularReturnType>, forced: boolean) => {
if (!forced) {
draw(initModule(storyFn));
} else {

View File

@ -1,22 +0,0 @@
export interface NgModuleMetadata {
declarations?: any[];
entryComponents?: any[];
imports?: any[];
schemas?: any[];
providers?: any[];
}
export interface ICollection {
[p: string]: any;
}
export interface NgStory {
component?: any;
props: ICollection;
propsMeta?: ICollection;
moduleMetadata?: NgModuleMetadata;
template?: string;
styles?: string[];
}
export type IStoryFn = () => NgStory;

View File

@ -1,12 +0,0 @@
/* eslint-disable import/no-unresolved */
/* eslint-disable import/extensions */
import { IApi, IStoribookSection } from '../../../index';
export function storiesOf(kind: string, module: NodeModule): IApi;
export function setAddon(addon: any): void;
export function addDecorator(decorator: any): IApi;
export function addParameters(parameter: any): IApi;
export function configure(loaders: () => void, module: NodeModule): void;
export function getStorybook(): IStoribookSection[];
export function clearDecorators(): void;
export function forceReRender(): void;

View File

@ -1,22 +0,0 @@
import { start } from '@storybook/core/client';
import './globals';
import render from './render';
const { load: coreLoad, clientApi, configApi, forceReRender } = start(render);
export const {
setAddon,
addDecorator,
addParameters,
clearDecorators,
getStorybook,
raw,
} = clientApi;
const framework = 'angular';
export const storiesOf = (...args) => clientApi.storiesOf(...args).addParameters({ framework });
export const load = (...args) => coreLoad(...args, framework);
export const { configure } = configApi;
export { forceReRender };

View File

@ -0,0 +1,37 @@
/* eslint-disable prefer-destructuring */
import { start } from '@storybook/core/client';
import { ClientStoryApi } from '@storybook/addons';
import './globals';
import render from './render';
import { IStorybookSection, StoryFnAngularReturnType } from './types';
const framework = 'angular';
interface ClientApi extends ClientStoryApi<StoryFnAngularReturnType> {
setAddon(addon: any): void;
configure(loaders: () => void, module: NodeModule): void;
getStorybook(): IStorybookSection[];
clearDecorators(): void;
forceReRender(): void;
raw: () => any; // todo add type
load: (...args: any[]) => void;
}
const api = start(render);
export const storiesOf: ClientApi['storiesOf'] = (kind, m) => {
return (api.clientApi.storiesOf(kind, m) as ReturnType<ClientApi['storiesOf']>).addParameters({
framework,
});
};
export const load: ClientApi['load'] = (...args) => api.load(...args, framework);
export const addDecorator: ClientApi['addDecorator'] = api.clientApi.addDecorator;
export const addParameters: ClientApi['addParameters'] = api.clientApi.addParameters;
export const clearDecorators: ClientApi['clearDecorators'] = api.clientApi.clearDecorators;
export const setAddon: ClientApi['setAddon'] = api.clientApi.setAddon;
export const configure: ClientApi['configure'] = api.configApi.configure;
export const forceReRender: ClientApi['forceReRender'] = api.forceReRender;
export const getStorybook: ClientApi['getStorybook'] = api.clientApi.getStorybook;
export const raw: ClientApi['raw'] = api.clientApi.raw;

View File

@ -1,6 +0,0 @@
import { renderNgApp } from './angular/helpers';
export default function render({ storyFn, showMain, forceRender }) {
showMain();
renderNgApp(storyFn, forceRender);
}

View File

@ -0,0 +1,18 @@
import { StoryFn } from '@storybook/addons';
import { renderNgApp } from './angular/helpers';
import { StoryFnAngularReturnType } from './types';
// add proper types
export default function render({
storyFn,
showMain,
forceRender,
}: {
storyFn: StoryFn<StoryFnAngularReturnType>;
showMain: () => void;
forceRender: boolean;
}) {
showMain();
renderNgApp(storyFn, forceRender);
}

View File

@ -0,0 +1,39 @@
import { StoryFn } from '@storybook/addons';
export declare const moduleMetadata: (
metadata: Partial<NgModuleMetadata>
) => (storyFn: StoryFn<StoryFnAngularReturnType>) => any;
export interface NgModuleMetadata {
declarations?: any[];
entryComponents?: any[];
imports?: any[];
schemas?: any[];
providers?: any[];
}
export interface ICollection {
[p: string]: any;
}
export interface IStorybookStory {
name: string;
render: () => any;
}
// @deprecated Use IStorybookSection instead
// eslint-disable-next-line @typescript-eslint/no-empty-interface
export interface IStoribookSection extends IStorybookSection {}
export interface IStorybookSection {
kind: string;
stories: IStorybookStory[];
}
export interface StoryFnAngularReturnType {
component?: any;
props?: ICollection;
propsMeta?: ICollection;
moduleMetadata?: NgModuleMetadata;
template?: string;
styles?: string[];
}

View File

@ -0,0 +1,13 @@
export * from './client';
/*
* ATTENTION:
* - moduleMetadata
* - NgModuleMetadata
* - ICollection
*
* These typings are coped out of decorators.d.ts and types.d.ts in order to fix a bug with tsc
* It was imported out of dist before which was not the proper way of exporting public API
*
* This can be fixed by migrating app/angular to typescript
*/

View File

@ -1,14 +1,20 @@
import { getAngularCliWebpackConfigOptions } from './angular-cli_config';
import angularJson from '../../../../examples/angular-cli/angular.json';
import { Path } from '@angular-devkit/core';
import { getAngularCliWebpackConfigOptions } from '../angular-cli_config';
// @ts-ignore
import angularJson from './angular.json';
// eslint-disable-next-line global-require
jest.mock('fs', () => require('../../../../__mocks__/fs'));
jest.mock('fs', () => require('../../../../../__mocks__/fs'));
jest.mock('path', () => ({
join: () => 'angular.json',
resolve: () => 'tsconfig.json',
join: (...args) =>
args[args.length - 1] === 'angular.json'
? 'angular.json'
: jest.requireActual('path').join(...args),
resolve: (...args) => 'tsconfig.json',
}));
const setupFiles = files => {
const setupFiles = (files: any) => {
// eslint-disable-next-line no-underscore-dangle, global-require
require('fs').__setMockFiles(files);
};
@ -18,7 +24,7 @@ describe('angualr-cli_config', () => {
it('should return have empty `buildOptions.sourceMap` and `buildOptions.optimization` by default', () => {
setupFiles({ 'angular.json': JSON.stringify(angularJson) });
const config = getAngularCliWebpackConfigOptions('/');
const config = getAngularCliWebpackConfigOptions('/' as Path);
expect(config).toMatchObject({
buildOptions: {
@ -45,7 +51,7 @@ describe('angualr-cli_config', () => {
setupFiles({ 'angular.json': JSON.stringify(overrideAngularJson) });
const config = getAngularCliWebpackConfigOptions('/');
const config = getAngularCliWebpackConfigOptions('/' as Path);
// Assure configuration matches values from `storybook` project
expect(config).toMatchObject({

View File

@ -0,0 +1,108 @@
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"angular-cli": {
"root": "",
"sourceRoot": "src",
"projectType": "application",
"prefix": "app",
"schematics": {},
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"outputPath": "dist/angular-cli",
"index": "src/index.html",
"main": "src/main.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "src/tsconfig.app.json",
"assets": ["src/favicon.ico", "src/assets"],
"styles": ["src/styles.css", "src/styles.scss"],
"stylePreprocessorOptions": {
"includePaths": ["src/commons"]
},
"scripts": []
},
"configurations": {
"production": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
],
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true
}
}
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "angular-cli:build"
},
"configurations": {
"production": {
"browserTarget": "angular-cli:build:production"
}
}
},
"extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n",
"options": {
"browserTarget": "angular-cli:build"
}
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"main": "src/karma.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "src/tsconfig.spec.json",
"karmaConfig": "src/karma.conf.js",
"styles": ["styles.css"],
"scripts": [],
"assets": ["src/favicon.ico", "src/assets"]
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": ["src/tsconfig.app.json", "src/tsconfig.spec.json"],
"exclude": ["**/node_modules/**"]
}
}
}
},
"angular-cli-e2e": {
"root": "e2e/",
"projectType": "application",
"architect": {
"e2e": {
"builder": "@angular-devkit/build-angular:protractor",
"options": {
"protractorConfig": "e2e/protractor.conf.js",
"devServerTarget": "angular-cli:serve"
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": "e2e/tsconfig.e2e.json",
"exclude": ["**/node_modules/**"]
}
}
}
}
},
"defaultProject": "angular-cli"
}

View File

@ -1,15 +1,15 @@
import ForkTsCheckerWebpackPlugin from 'fork-ts-checker-webpack-plugin';
import getTsLoaderOptions from './ts_config';
import createForkTsCheckerInstance from './create-fork-ts-checker-plugin';
import getTsLoaderOptions from '../ts_config';
import createForkTsCheckerInstance from '../create-fork-ts-checker-plugin';
// eslint-disable-next-line global-require
jest.mock('fs', () => require('../../../../__mocks__/fs'));
jest.mock('fs', () => require('../../../../../__mocks__/fs'));
jest.mock('path', () => ({
resolve: () => 'tsconfig.json',
}));
jest.mock('@storybook/node-logger');
const setupFiles = files => {
const setupFiles = (files: any) => {
// eslint-disable-next-line no-underscore-dangle, global-require
require('fs').__setMockFiles(files);
};
@ -19,14 +19,17 @@ describe('create-fork-ts-checker-plugin.test', () => {
setupFiles({ 'tsconfig.json': '{}' });
const tsLoaderOptions = getTsLoaderOptions('.foo');
const instance = createForkTsCheckerInstance(tsLoaderOptions);
// todo resolve any
const instance: any = createForkTsCheckerInstance(tsLoaderOptions);
expect(instance).toBeInstanceOf(ForkTsCheckerWebpackPlugin);
expect(instance.tsconfig).toEqual(tsLoaderOptions.configFile);
});
it('should create a ForkTsCheckerWebpackPlugin instance without passing options', () => {
const instance = createForkTsCheckerInstance({});
// add proper typing
const instance = createForkTsCheckerInstance({} as any);
expect(instance).toBeInstanceOf(ForkTsCheckerWebpackPlugin);
});
});

View File

@ -1,13 +1,13 @@
import getTsLoaderOptions from './ts_config';
import getTsLoaderOptions from '../ts_config';
// eslint-disable-next-line global-require
jest.mock('fs', () => require('../../../../__mocks__/fs'));
jest.mock('fs', () => require('../../../../../__mocks__/fs'));
jest.mock('path', () => ({
resolve: () => 'tsconfig.json',
}));
jest.mock('@storybook/node-logger');
const setupFiles = files => {
const setupFiles = (files: any) => {
// eslint-disable-next-line no-underscore-dangle, global-require
require('fs').__setMockFiles(files);
};

View File

@ -1,3 +1,5 @@
import { CompilerOptions } from 'typescript';
import { Path } from '@angular-devkit/core';
import path from 'path';
import fs from 'fs';
import { logger } from '@storybook/node-logger';
@ -9,8 +11,18 @@ import {
getAngularCliParts,
} from './angular-cli_utils';
function getTsConfigOptions(tsConfigPath) {
const basicOptions = {
// todo add more accurate typings
interface BasicOptions {
options: {
baseUrl?: string | undefined;
};
raw: object;
fileNames: string[];
errors: any[];
}
function getTsConfigOptions(tsConfigPath: Path) {
const basicOptions: BasicOptions = {
options: {},
raw: {},
fileNames: [],
@ -22,7 +34,8 @@ function getTsConfigOptions(tsConfigPath) {
}
const tsConfig = JSON.parse(fs.readFileSync(tsConfigPath, 'utf8'));
const { baseUrl } = tsConfig.compilerOptions || {};
const { baseUrl } = tsConfig.compilerOptions as CompilerOptions;
if (baseUrl) {
const tsConfigDirName = path.dirname(tsConfigPath);
@ -32,7 +45,7 @@ function getTsConfigOptions(tsConfigPath) {
return basicOptions;
}
export function getAngularCliWebpackConfigOptions(dirToSearch) {
export function getAngularCliWebpackConfigOptions(dirToSearch: Path) {
const fname = path.join(dirToSearch, 'angular.json');
if (!fs.existsSync(fname)) {
@ -59,7 +72,7 @@ export function getAngularCliWebpackConfigOptions(dirToSearch) {
);
const projectRoot = path.resolve(dirToSearch, project.root);
const tsConfigPath = path.resolve(dirToSearch, projectOptions.tsConfig);
const tsConfigPath = path.resolve(dirToSearch, projectOptions.tsConfig) as Path;
const tsConfig = getTsConfigOptions(tsConfigPath);
return {
@ -77,7 +90,8 @@ export function getAngularCliWebpackConfigOptions(dirToSearch) {
};
}
export function applyAngularCliWebpackConfig(baseConfig, cliWebpackConfigOptions) {
// todo add types
export function applyAngularCliWebpackConfig(baseConfig: any, cliWebpackConfigOptions: any) {
if (!cliWebpackConfigOptions) {
return baseConfig;
}
@ -103,9 +117,10 @@ export function applyAngularCliWebpackConfig(baseConfig, cliWebpackConfigOptions
const rulesExcludingStyles = filterOutStylingRules(baseConfig);
// cliStyleConfig.entry adds global style files to the webpack context
// todo add type for acc
const entry = [
...baseConfig.entry,
...Object.values(cliStyleConfig.entry).reduce((acc, item) => acc.concat(item), []),
...Object.values(cliStyleConfig.entry).reduce((acc: any, item) => acc.concat(item), []),
];
const module = {

View File

@ -1,7 +1,13 @@
import fs from 'fs';
import { basename, dirname, normalize, relative, resolve } from '@angular-devkit/core';
import { basename, dirname, normalize, relative, resolve, Path } from '@angular-devkit/core';
import {
getCommonConfig,
getStylesConfig,
} from '@angular-devkit/build-angular/src/angular-cli-files/models/webpack-configs';
function isDirectory(assetPath) {
import { RuleSetRule, Configuration } from 'webpack';
function isDirectory(assetPath: string) {
try {
return fs.statSync(assetPath).isDirectory();
} catch (e) {
@ -9,7 +15,7 @@ function isDirectory(assetPath) {
}
}
function getAssetsParts(resolvedAssetPath, assetPath) {
function getAssetsParts(resolvedAssetPath: Path, assetPath: Path) {
if (isDirectory(resolvedAssetPath)) {
return {
glob: '**/*', // Folders get a recursive star glob.
@ -23,7 +29,7 @@ function getAssetsParts(resolvedAssetPath, assetPath) {
};
}
function isStylingRule(rule) {
function isStylingRule(rule: RuleSetRule) {
const { test } = rule;
if (!test) {
@ -37,7 +43,7 @@ function isStylingRule(rule) {
return test.test('.css') || test.test('.scss') || test.test('.sass');
}
export function filterOutStylingRules(config) {
export function filterOutStylingRules(config: Configuration) {
return config.module.rules.filter(rule => !isStylingRule(rule));
}
@ -50,26 +56,26 @@ export function isBuildAngularInstalled() {
}
}
export function getAngularCliParts(cliWebpackConfigOptions) {
// eslint-disable-next-line global-require, import/no-extraneous-dependencies
const ngCliConfigFactory = require('@angular-devkit/build-angular/src/angular-cli-files/models/webpack-configs');
// todo add type
export function getAngularCliParts(cliWebpackConfigOptions: any) {
try {
return {
cliCommonConfig: ngCliConfigFactory.getCommonConfig(cliWebpackConfigOptions),
cliStyleConfig: ngCliConfigFactory.getStylesConfig(cliWebpackConfigOptions),
cliCommonConfig: getCommonConfig(cliWebpackConfigOptions),
cliStyleConfig: getStylesConfig(cliWebpackConfigOptions),
};
} catch (e) {
return null;
}
}
export function normalizeAssetPatterns(assetPatterns, dirToSearch, sourceRoot) {
// todo fix any
export function normalizeAssetPatterns(assetPatterns: any, dirToSearch: Path, sourceRoot: Path) {
if (!assetPatterns || !assetPatterns.length) {
return [];
}
return assetPatterns.map(assetPattern => {
// todo fix any
return assetPatterns.map((assetPattern: any) => {
if (typeof assetPattern === 'object') {
return assetPattern;
}

View File

@ -1,7 +1,9 @@
import ForkTsCheckerWebpackPlugin from 'fork-ts-checker-webpack-plugin';
import { logger } from '@storybook/node-logger';
export default function(tsLoaderOptions) {
import { Options } from 'ts-loader';
export default function(tsLoaderOptions: Partial<Options>) {
if (tsLoaderOptions && tsLoaderOptions.configFile) {
return new ForkTsCheckerWebpackPlugin({
tsconfig: tsLoaderOptions.configFile,

View File

@ -1,3 +1,5 @@
import { Configuration } from 'webpack';
import { Path } from '@angular-devkit/core';
import { logger } from '@storybook/node-logger';
import {
@ -5,8 +7,8 @@ import {
applyAngularCliWebpackConfig,
} from './angular-cli_config';
export function webpackFinal(config) {
const cwd = process.cwd();
export function webpackFinal(config: Configuration) {
const cwd = process.cwd() as Path;
const cliWebpackConfigOptions = getAngularCliWebpackConfigOptions(cwd);
if (cliWebpackConfigOptions) {

View File

@ -1,10 +1,13 @@
import path from 'path';
import { ContextReplacementPlugin } from 'webpack';
import { ContextReplacementPlugin, Configuration } from 'webpack';
import autoprefixer from 'autoprefixer';
import getTsLoaderOptions from './ts_config';
import createForkTsCheckerInstance from './create-fork-ts-checker-plugin';
export function webpack(config, { configDir }) {
export function webpack(
config: Configuration,
{ configDir }: { configDir: string }
): Configuration {
const tsLoaderOptions = getTsLoaderOptions(configDir);
return {
...config,

View File

@ -1,4 +1,5 @@
import packageJson from '../../package.json';
// tslint:disable-next-line: no-var-requires
const packageJson = require('../../package.json');
export default {
packageJson,

View File

@ -1,26 +0,0 @@
import fs from 'fs';
import path from 'path';
import { logger } from '@storybook/node-logger';
function resolveTsConfig(tsConfigPath) {
if (!fs.existsSync(tsConfigPath)) {
return null;
}
logger.info('=> Found custom tsconfig.json');
return tsConfigPath;
}
export default function(configDir) {
const tsLoaderOptions = {
transpileOnly: true,
};
const configFilePath = resolveTsConfig(path.resolve(configDir, 'tsconfig.json'));
if (configFilePath) {
tsLoaderOptions.configFile = configFilePath;
}
return tsLoaderOptions;
}

View File

@ -0,0 +1,19 @@
import fs from 'fs';
import path from 'path';
import { logger } from '@storybook/node-logger';
function resolveTsConfig(tsConfigPath: string): string | undefined {
if (fs.existsSync(tsConfigPath)) {
logger.info('=> Found custom tsconfig.json');
return tsConfigPath;
}
return undefined;
}
export default function(configDir: string) {
const configFilePath = resolveTsConfig(path.resolve(configDir, 'tsconfig.json'));
return {
transpileOnly: true,
configFile: configFilePath || undefined,
};
}

View File

@ -1,2 +1,5 @@
declare module '@storybook/core/*';
declare module 'global';
// will be provided by the webpack define plugin
declare var NODE_ENV: string | undefined;

View File

@ -1,18 +1,10 @@
{
"extends": "../../tsconfig.json",
"include": [
"src/**/*.ts"
],
"compileOnSave": false,
"compilerOptions": {
"outDir": "dist",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"declaration": true,
"types": ["webpack-env"],
"rootDir": "./src",
"lib": [
"es2017",
"dom"
]
"resolveJsonModule": true
}
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/ember",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "Storybook for Ember: Develop Ember Component in isolation with Hot Reloading.",
"homepage": "https://github.com/storybookjs/storybook/tree/master/app/ember",
"bugs": {
@ -24,7 +24,7 @@
},
"dependencies": {
"@ember/test-helpers": "^1.5.0",
"@storybook/core": "5.2.0-alpha.38",
"@storybook/core": "5.2.0-alpha.40",
"common-tags": "^1.8.0",
"core-js": "^3.0.1",
"global": "^4.3.2",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/html",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "Storybook for HTML: View HTML snippets in isolation with Hot Reloading.",
"keywords": [
"storybook"
@ -25,7 +25,7 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/core": "5.2.0-alpha.38",
"@storybook/core": "5.2.0-alpha.40",
"common-tags": "^1.8.0",
"core-js": "^3.0.1",
"global": "^4.3.2",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/marko",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "Storybook for Marko: Develop Marko Component in isolation with Hot Reloading.",
"keywords": [
"storybook"
@ -26,7 +26,7 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/core": "5.2.0-alpha.38",
"@storybook/core": "5.2.0-alpha.40",
"common-tags": "^1.8.0",
"core-js": "^3.0.1",
"global": "^4.3.2",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/mithril",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "Storybook for Mithril: Develop Mithril Component in isolation.",
"keywords": [
"storybook"
@ -27,7 +27,7 @@
},
"dependencies": {
"@babel/plugin-transform-react-jsx": "^7.3.0",
"@storybook/core": "5.2.0-alpha.38",
"@storybook/core": "5.2.0-alpha.40",
"common-tags": "^1.8.0",
"core-js": "^3.0.1",
"global": "^4.3.2",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/polymer",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "Storybook for Polymer: Develop Polymer components in isolation with Hot Reloading.",
"keywords": [
"storybook"
@ -25,7 +25,7 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/core": "5.2.0-alpha.38",
"@storybook/core": "5.2.0-alpha.40",
"@webcomponents/webcomponentsjs": "^1.2.0",
"common-tags": "^1.8.0",
"core-js": "^3.0.1",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/preact",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "Storybook for Preact: Develop Preact Component in isolation.",
"keywords": [
"storybook"
@ -27,7 +27,7 @@
},
"dependencies": {
"@babel/plugin-transform-react-jsx": "^7.3.0",
"@storybook/core": "5.2.0-alpha.38",
"@storybook/core": "5.2.0-alpha.40",
"common-tags": "^1.8.0",
"core-js": "^3.0.1",
"global": "^4.3.2",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/rax",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "Storybook for Rax: Develop Rax Component in isolation.",
"keywords": [
"storybook",
@ -27,7 +27,7 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/core": "5.2.0-alpha.38",
"@storybook/core": "5.2.0-alpha.40",
"babel-preset-rax": "^1.0.0-beta.0",
"common-tags": "^1.8.0",
"core-js": "^2.6.2",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/react-native-server",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "A better way to develop React Native Components for your app",
"keywords": [
"react",
@ -24,12 +24,12 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.2.0-alpha.38",
"@storybook/api": "5.2.0-alpha.38",
"@storybook/channel-websocket": "5.2.0-alpha.38",
"@storybook/core": "5.2.0-alpha.38",
"@storybook/core-events": "5.2.0-alpha.38",
"@storybook/ui": "5.2.0-alpha.38",
"@storybook/addons": "5.2.0-alpha.40",
"@storybook/api": "5.2.0-alpha.40",
"@storybook/channel-websocket": "5.2.0-alpha.40",
"@storybook/core": "5.2.0-alpha.40",
"@storybook/core-events": "5.2.0-alpha.40",
"@storybook/ui": "5.2.0-alpha.40",
"commander": "^2.19.0",
"core-js": "^3.0.1",
"global": "^4.3.2",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/react-native",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "A better way to develop React Native Components for your app",
"keywords": [
"react",
@ -25,11 +25,11 @@
"@emotion/native": "^10.0.14",
"@emotion/core": "^10.0.14",
"emotion-theming": "^10.0.14",
"@storybook/addons": "5.2.0-alpha.38",
"@storybook/channel-websocket": "5.2.0-alpha.38",
"@storybook/channels": "5.2.0-alpha.38",
"@storybook/client-api": "5.2.0-alpha.38",
"@storybook/core-events": "5.2.0-alpha.38",
"@storybook/addons": "5.2.0-alpha.40",
"@storybook/channel-websocket": "5.2.0-alpha.40",
"@storybook/channels": "5.2.0-alpha.40",
"@storybook/client-api": "5.2.0-alpha.40",
"@storybook/core-events": "5.2.0-alpha.40",
"core-js": "^3.0.1",
"react-native-swipe-gestures": "^1.0.3",
"rn-host-detect": "^1.1.5"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/react",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "Storybook for React: Develop React Component in isolation with Hot Reloading.",
"keywords": [
"storybook"
@ -29,9 +29,9 @@
"@babel/plugin-transform-react-constant-elements": "^7.2.0",
"@babel/preset-flow": "^7.0.0",
"@babel/preset-react": "^7.0.0",
"@storybook/addons": "5.2.0-alpha.38",
"@storybook/core": "5.2.0-alpha.38",
"@storybook/node-logger": "5.2.0-alpha.38",
"@storybook/addons": "5.2.0-alpha.40",
"@storybook/core": "5.2.0-alpha.40",
"@storybook/node-logger": "5.2.0-alpha.40",
"@svgr/webpack": "^4.0.3",
"babel-plugin-add-react-displayname": "^0.0.5",
"babel-plugin-named-asset-import": "^0.3.1",
@ -49,8 +49,8 @@
"webpack": "^4.33.0"
},
"peerDependencies": {
"babel-loader": "^7.0.0 || ^8.0.0",
"@babel/core": "^7.0.1",
"babel-loader": "^7.0.0 || ^8.0.0",
"react": "*",
"react-dom": "*"
},

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/riot",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "Storybook for riot.js: View riot snippets in isolation with Hot Reloading.",
"keywords": [
"storybook"
@ -25,7 +25,7 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/core": "5.2.0-alpha.38",
"@storybook/core": "5.2.0-alpha.40",
"common-tags": "^1.8.0",
"core-js": "^3.0.1",
"global": "^4.3.2",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/svelte",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "Storybook for Svelte: Develop Svelte Component in isolation with Hot Reloading.",
"keywords": [
"storybook"
@ -26,7 +26,7 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/core": "5.2.0-alpha.38",
"@storybook/core": "5.2.0-alpha.40",
"common-tags": "^1.8.0",
"core-js": "^3.0.1",
"global": "^4.3.2",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/vue",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "Storybook for Vue: Develop Vue Component in isolation with Hot Reloading.",
"keywords": [
"storybook"
@ -26,7 +26,7 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/core": "5.2.0-alpha.38",
"@storybook/core": "5.2.0-alpha.40",
"common-tags": "^1.8.0",
"core-js": "^3.0.1",
"global": "^4.3.2",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-parameter",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "parameter addon for storybook",
"keywords": [
"devkit",
@ -24,12 +24,12 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.2.0-alpha.38",
"@storybook/api": "5.2.0-alpha.38",
"@storybook/client-logger": "5.2.0-alpha.38",
"@storybook/components": "5.2.0-alpha.38",
"@storybook/core-events": "5.2.0-alpha.38",
"@storybook/theming": "5.2.0-alpha.38",
"@storybook/addons": "5.2.0-alpha.40",
"@storybook/api": "5.2.0-alpha.40",
"@storybook/client-logger": "5.2.0-alpha.40",
"@storybook/components": "5.2.0-alpha.40",
"@storybook/core-events": "5.2.0-alpha.40",
"@storybook/theming": "5.2.0-alpha.40",
"common-tags": "^1.8.0",
"core-js": "^3.0.1",
"global": "^4.3.2",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-roundtrip",
"version": "5.2.0-alpha.38",
"version": "5.2.0-alpha.40",
"description": "roundtrip addon for storybook",
"keywords": [
"devkit",
@ -24,12 +24,12 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.2.0-alpha.38",
"@storybook/api": "5.2.0-alpha.38",
"@storybook/client-logger": "5.2.0-alpha.38",
"@storybook/components": "5.2.0-alpha.38",
"@storybook/core-events": "5.2.0-alpha.38",
"@storybook/theming": "5.2.0-alpha.38",
"@storybook/addons": "5.2.0-alpha.40",
"@storybook/api": "5.2.0-alpha.40",
"@storybook/client-logger": "5.2.0-alpha.40",
"@storybook/components": "5.2.0-alpha.40",
"@storybook/core-events": "5.2.0-alpha.40",
"@storybook/theming": "5.2.0-alpha.40",
"common-tags": "^1.8.0",
"core-js": "^3.0.1",
"global": "^4.3.2",

View File

@ -1 +1,6 @@
{"version":"5.2.0-alpha.38","info":{"plain":"### Bug Fixes\n\n* Addon-storysource: Replace loader with source-loader ([#7272](https://github.com/storybookjs/storybook/pull/7272))\n\n### Maintenance\n\n* Typescript: Migrate @storybook/addon-knobs ([#7180](https://github.com/storybookjs/storybook/pull/7180))\n\n### Dependency Upgrades\n\n* Upgrade all dependencies ([#7329](https://github.com/storybookjs/storybook/pull/7329))"}}
{
"version": "5.2.0-alpha.39",
"info": {
"plain": "### Bug Fixes\n\n* UI: Fix Sidebar input refresh on 'Enter' ([#7342](https://github.com/storybookjs/storybook/pull/7342))\n* Addon-knobs: Fix select options types to allow string[] and null ([#7356](https://github.com/storybookjs/storybook/pull/7356))\n\n### Maintenance\n\n* Typescript: Migrate @storybook/react ([#7054](https://github.com/storybookjs/storybook/pull/7054))\n* Build: delete tests & snapshots from dist ([#7358](https://github.com/storybookjs/storybook/pull/7358))"
}
}

Some files were not shown because too many files have changed in this diff Show More