mirror of
https://github.com/storybookjs/storybook.git
synced 2025-04-02 05:03:44 +08:00
Merge branch 'next' into emotion-dep
This commit is contained in:
commit
dfede8b741
@ -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
17
.travis.yml
Normal 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
|
31
CHANGELOG.md
31
CHANGELOG.md
@ -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
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
10
addons/centered/angular.d.ts
vendored
10
addons/centered/angular.d.ts
vendored
@ -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;
|
||||
}
|
||||
|
@ -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"
|
||||
|
@ -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 {
|
||||
|
@ -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": {
|
||||
|
@ -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"
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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"
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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
1
addons/knobs/angular.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
module.exports = require('./dist/deprecated');
|
@ -1 +0,0 @@
|
||||
export * from './dist/deprecated';
|
1
addons/knobs/html.js
Normal file
1
addons/knobs/html.js
Normal file
@ -0,0 +1 @@
|
||||
module.exports = require('./dist/deprecated');
|
@ -1 +0,0 @@
|
||||
export * from './dist/deprecated';
|
1
addons/knobs/marko.js
Normal file
1
addons/knobs/marko.js
Normal file
@ -0,0 +1 @@
|
||||
module.exports = require('./dist/deprecated');
|
@ -1 +0,0 @@
|
||||
export * from './dist/deprecated';
|
1
addons/knobs/mithril.js
Normal file
1
addons/knobs/mithril.js
Normal file
@ -0,0 +1 @@
|
||||
module.exports = require('./dist/deprecated');
|
@ -1 +0,0 @@
|
||||
export * from './dist/deprecated';
|
@ -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
1
addons/knobs/polymer.js
Normal file
@ -0,0 +1 @@
|
||||
module.exports = require('./dist/deprecated');
|
@ -1 +0,0 @@
|
||||
export * from './dist/deprecated';
|
1
addons/knobs/react.js
vendored
Normal file
1
addons/knobs/react.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
module.exports = require('./dist/deprecated');
|
@ -1 +0,0 @@
|
||||
export * from './dist/deprecated';
|
@ -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;
|
||||
|
@ -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';
|
||||
|
@ -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
1
addons/knobs/vue.js
Normal file
@ -0,0 +1 @@
|
||||
module.exports = require('./dist/deprecated');
|
@ -1 +0,0 @@
|
||||
export * from './dist/deprecated';
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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": "*",
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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"
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
10
addons/storyshots/storyshots-puppeteer/.eslintrc.js
Normal file
10
addons/storyshots/storyshots-puppeteer/.eslintrc.js
Normal file
@ -0,0 +1,10 @@
|
||||
const error = 2;
|
||||
const warn = 1;
|
||||
const ignore = 0;
|
||||
|
||||
module.exports = {
|
||||
rules: {
|
||||
'import/no-unresolved': ignore,
|
||||
'import/extensions': ignore,
|
||||
},
|
||||
};
|
@ -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"
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
74
app/angular/index.d.ts
vendored
74
app/angular/index.d.ts
vendored
@ -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;
|
||||
}
|
@ -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": {
|
||||
|
@ -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();
|
||||
}
|
@ -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');
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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();
|
||||
|
@ -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 {
|
||||
|
@ -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;
|
12
app/angular/src/client/preview/index.d.ts
vendored
12
app/angular/src/client/preview/index.d.ts
vendored
@ -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;
|
22
app/angular/src/client/preview/index.js
vendored
22
app/angular/src/client/preview/index.js
vendored
@ -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 };
|
37
app/angular/src/client/preview/index.ts
Normal file
37
app/angular/src/client/preview/index.ts
Normal 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;
|
6
app/angular/src/client/preview/render.js
vendored
6
app/angular/src/client/preview/render.js
vendored
@ -1,6 +0,0 @@
|
||||
import { renderNgApp } from './angular/helpers';
|
||||
|
||||
export default function render({ storyFn, showMain, forceRender }) {
|
||||
showMain();
|
||||
renderNgApp(storyFn, forceRender);
|
||||
}
|
18
app/angular/src/client/preview/render.ts
Normal file
18
app/angular/src/client/preview/render.ts
Normal 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);
|
||||
}
|
39
app/angular/src/client/preview/types.ts
Normal file
39
app/angular/src/client/preview/types.ts
Normal 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[];
|
||||
}
|
13
app/angular/src/public_api.ts
Normal file
13
app/angular/src/public_api.ts
Normal 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
|
||||
*/
|
@ -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({
|
108
app/angular/src/server/__tests__/angular.json
Normal file
108
app/angular/src/server/__tests__/angular.json
Normal 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"
|
||||
}
|
@ -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);
|
||||
});
|
||||
});
|
@ -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);
|
||||
};
|
@ -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 = {
|
@ -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;
|
||||
}
|
@ -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,
|
@ -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) {
|
@ -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,
|
@ -1,4 +1,5 @@
|
||||
import packageJson from '../../package.json';
|
||||
// tslint:disable-next-line: no-var-requires
|
||||
const packageJson = require('../../package.json');
|
||||
|
||||
export default {
|
||||
packageJson,
|
26
app/angular/src/server/ts_config.js
vendored
26
app/angular/src/server/ts_config.js
vendored
@ -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;
|
||||
}
|
19
app/angular/src/server/ts_config.ts
Normal file
19
app/angular/src/server/ts_config.ts
Normal 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,
|
||||
};
|
||||
}
|
3
app/angular/src/typings.d.ts
vendored
3
app/angular/src/typings.d.ts
vendored
@ -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;
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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"
|
||||
|
@ -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": "*"
|
||||
},
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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
Loading…
x
Reference in New Issue
Block a user