From 7505e697db78bf53bf08d1fb93a18e6ea7552e67 Mon Sep 17 00:00:00 2001 From: jogiter Date: Fri, 16 Apr 2021 10:39:27 +0800 Subject: [PATCH 001/259] feat: fix VueLoaderPlugin import to support vue-loader@16.x --- app/vue/src/server/framework-preset-vue.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/vue/src/server/framework-preset-vue.ts b/app/vue/src/server/framework-preset-vue.ts index e81c5267681c..720b739434d3 100644 --- a/app/vue/src/server/framework-preset-vue.ts +++ b/app/vue/src/server/framework-preset-vue.ts @@ -1,5 +1,5 @@ /* eslint-disable no-param-reassign */ -import VueLoaderPlugin from 'vue-loader/lib/plugin'; +import { VueLoaderPlugin } from 'vue-loader'; import type { Configuration } from 'webpack'; export function webpack(config: Configuration) { From a165467cd70d036c6c3cf7d63e8a7359197797bd Mon Sep 17 00:00:00 2001 From: Clement Fradet Normand Date: Tue, 17 Aug 2021 15:04:47 +0200 Subject: [PATCH 002/259] Update z-index of measure tool, to fit with libraries which also high z-index #15859 Libraries like radix-ui use high z-indez for modals, so to measure on them, we need a higher z-index measure tool, cf #15859 --- addons/measure/src/box-model/canvas.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/measure/src/box-model/canvas.ts b/addons/measure/src/box-model/canvas.ts index 08387ec05a64..d3656401bf1d 100644 --- a/addons/measure/src/box-model/canvas.ts +++ b/addons/measure/src/box-model/canvas.ts @@ -32,7 +32,7 @@ function createCanvas(): CanvasState { canvas.style.position = 'absolute'; canvas.style.left = '0'; canvas.style.top = '0'; - canvas.style.zIndex = '100000'; + canvas.style.zIndex = '1000000000000000000'; // Disable any user interactions canvas.style.pointerEvents = 'none'; global.document.body.appendChild(canvas); From 74aeb7de428b83f81e22b2944699def8786dc695 Mon Sep 17 00:00:00 2001 From: Clement Fradet Normand Date: Tue, 31 Aug 2021 19:21:30 +0200 Subject: [PATCH 003/259] Update zindex --- addons/measure/src/box-model/canvas.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/measure/src/box-model/canvas.ts b/addons/measure/src/box-model/canvas.ts index d3656401bf1d..e35ee8a6eac8 100644 --- a/addons/measure/src/box-model/canvas.ts +++ b/addons/measure/src/box-model/canvas.ts @@ -32,7 +32,7 @@ function createCanvas(): CanvasState { canvas.style.position = 'absolute'; canvas.style.left = '0'; canvas.style.top = '0'; - canvas.style.zIndex = '1000000000000000000'; + canvas.style.zIndex = '2147483647'; // Disable any user interactions canvas.style.pointerEvents = 'none'; global.document.body.appendChild(canvas); From 40d539513acb3c4efb67399ec3261704dbb84c67 Mon Sep 17 00:00:00 2001 From: Michael Arestad Date: Wed, 20 Oct 2021 10:13:59 -0600 Subject: [PATCH 004/259] Interactions: fix Subnav positioning and overflow states --- .../src/components/Subnav/Subnav.tsx | 102 +++++++++--------- 1 file changed, 54 insertions(+), 48 deletions(-) diff --git a/addons/interactions/src/components/Subnav/Subnav.tsx b/addons/interactions/src/components/Subnav/Subnav.tsx index 331d02f314c8..ef70fca11b4d 100644 --- a/addons/interactions/src/components/Subnav/Subnav.tsx +++ b/addons/interactions/src/components/Subnav/Subnav.tsx @@ -6,17 +6,20 @@ import { transparentize } from 'polished'; import { StatusBadge } from '../StatusBadge/StatusBadge'; -const StyledSubnav = styled.nav(({ theme }) => ({ +const SubNavWrapper = styled.div(({ theme }) => ({ background: theme.background.app, borderBottom: `1px solid ${theme.appBorderColor}`, + position: 'sticky', + top: 0, + zIndex: 1, +})); + +const StyledSubnav = styled.nav(({ theme }) => ({ height: 40, display: 'flex', alignItems: 'center', justifyContent: 'space-between', paddingLeft: 15, - position: 'sticky', - top: 0, - zIndex: 1, })); export interface SubnavProps { @@ -65,6 +68,7 @@ const StyledLocation = styled(P)(({ theme }) => ({ color: theme.textMutedColor, justifyContent: 'flex-end', textAlign: 'right', + whiteSpace: 'nowrap', marginTop: 'auto', marginBottom: 1, paddingRight: 15, @@ -102,51 +106,53 @@ export const Subnav: React.FC = ({ const buttonText = status === CallStates.ERROR ? 'Scroll to error' : 'Scroll to end'; return ( - - - - - - - {buttonText} - - - - - }> - - - - - - }> - - - - - - }> - - - - - - }> - - - - - - {storyFileName && ( + + + - {storyFileName} + + + + {buttonText} + + + + + }> + + + + + + }> + + + + + + }> + + + + + + }> + + + + - )} - - + {storyFileName && ( + + {storyFileName} + + )} + + + ); }; From 35cabf165643a9a5d0d5ff420f2bc6c50753ca20 Mon Sep 17 00:00:00 2001 From: Michael Arestad Date: Wed, 20 Oct 2021 10:20:45 -0600 Subject: [PATCH 005/259] Fixed typo --- addons/interactions/src/components/Subnav/Subnav.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/interactions/src/components/Subnav/Subnav.tsx b/addons/interactions/src/components/Subnav/Subnav.tsx index ef70fca11b4d..840c167bfe72 100644 --- a/addons/interactions/src/components/Subnav/Subnav.tsx +++ b/addons/interactions/src/components/Subnav/Subnav.tsx @@ -6,7 +6,7 @@ import { transparentize } from 'polished'; import { StatusBadge } from '../StatusBadge/StatusBadge'; -const SubNavWrapper = styled.div(({ theme }) => ({ +const SubnavWrapper = styled.div(({ theme }) => ({ background: theme.background.app, borderBottom: `1px solid ${theme.appBorderColor}`, position: 'sticky', @@ -106,7 +106,7 @@ export const Subnav: React.FC = ({ const buttonText = status === CallStates.ERROR ? 'Scroll to error' : 'Scroll to end'; return ( - + @@ -153,6 +153,6 @@ export const Subnav: React.FC = ({ )} - + ); }; From 9db661ad36a840dc33cddb5a60b5ce4ed6d9ed6e Mon Sep 17 00:00:00 2001 From: Michael Arestad Date: Wed, 20 Oct 2021 10:58:10 -0600 Subject: [PATCH 006/259] Fix secondary overflow bug on the MethodCallWrapper --- addons/interactions/src/components/Interaction/Interaction.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/addons/interactions/src/components/Interaction/Interaction.tsx b/addons/interactions/src/components/Interaction/Interaction.tsx index 6153389e7534..af3fd0c0285d 100644 --- a/addons/interactions/src/components/Interaction/Interaction.tsx +++ b/addons/interactions/src/components/Interaction/Interaction.tsx @@ -10,6 +10,8 @@ import { StatusIcon } from '../StatusIcon/StatusIcon'; const MethodCallWrapper = styled.div(() => ({ fontFamily: typography.fonts.mono, fontSize: typography.size.s1, + overflowWrap: 'break-word', + inlineSize: 'calc( 100% - 26px )', })); const RowContainer = styled('div', { shouldForwardProp: (prop) => !['call'].includes(prop) })<{ From 50adc64a46d85d94209565a267de7e44df83955f Mon Sep 17 00:00:00 2001 From: Michael Arestad Date: Wed, 20 Oct 2021 11:11:37 -0600 Subject: [PATCH 007/259] Update calc value --- addons/interactions/src/components/Interaction/Interaction.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/interactions/src/components/Interaction/Interaction.tsx b/addons/interactions/src/components/Interaction/Interaction.tsx index af3fd0c0285d..bbf32108ade0 100644 --- a/addons/interactions/src/components/Interaction/Interaction.tsx +++ b/addons/interactions/src/components/Interaction/Interaction.tsx @@ -11,7 +11,7 @@ const MethodCallWrapper = styled.div(() => ({ fontFamily: typography.fonts.mono, fontSize: typography.size.s1, overflowWrap: 'break-word', - inlineSize: 'calc( 100% - 26px )', + inlineSize: 'calc( 100% - 40px )', })); const RowContainer = styled('div', { shouldForwardProp: (prop) => !['call'].includes(prop) })<{ From ccde495eb2322b4b19ec6ca1579001f71448dfa8 Mon Sep 17 00:00:00 2001 From: Sam Magura Date: Sat, 23 Oct 2021 17:05:24 -0400 Subject: [PATCH 008/259] docs: Reference section about TSConfig paths --- docs/configure/typescript.md | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/docs/configure/typescript.md b/docs/configure/typescript.md index 353d8dda80e5..9444a2bb0eaa 100644 --- a/docs/configure/typescript.md +++ b/docs/configure/typescript.md @@ -2,7 +2,7 @@ title: 'TypeScript' --- -Storybook has built-in Typescript support, so your Typescript project should work with zero configuration needed. +Storybook has built-in Typescript support, so your Typescript project should work with zero configuration needed [unless you use the `paths` option in your TSConfig.](./webpack#typescript-module-resolution) ### Default configuration @@ -30,14 +30,12 @@ The following code snippets shows the fields for you to use with TypeScript: -| Field | Framework | Description | Type | -| :------------------------------- | :-------- | :------------------------------------------------------------------------------------------ | :----------------------------------------------------------------------------------------------------- | -| **check** | All | Optionally run fork-ts-checker-webpack-plugin | boolean | +| Field | Framework | Description | Type | +| :------------------------------- | :-------- | :------------------------------------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------- | +| **check** | All | Optionally run fork-ts-checker-webpack-plugin | boolean | | **checkOptions** | All | Options to pass to fork-ts-checker-webpack-plugin if it's enabled | See Docs | -| **reactDocgen** | React | Which react docgen processor to run: `"react-docgen-typescript"`, `"react-docgen"`, `false` | string or false | -| **reactDocgenTypescriptOptions** | React | Options to pass to react-docgen-typescript-plugin if react-docgen-typescript is enabled. | [See docs](https://github.com/hipstersmoothie/react-docgen-typescript-plugin) | - - +| **reactDocgen** | React | Which react docgen processor to run: `"react-docgen-typescript"`, `"react-docgen"`, `false` | string or false | +| **reactDocgenTypescriptOptions** | React | Options to pass to react-docgen-typescript-plugin if react-docgen-typescript is enabled. | [See docs](https://github.com/hipstersmoothie/react-docgen-typescript-plugin) | ### Overriding the configuration to infer additional props @@ -61,4 +59,4 @@ Next time you restart your Storybook the extra props will also be in the UI.
If you run into an issue where the extra props aren't included, check how your component is being exported. If it's using a default export, change it to a named export and the extra props will be included as well. -
\ No newline at end of file + From ddd696bb32caab7b6b77f57ecc8bd7295fd6499c Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Sun, 24 Oct 2021 16:21:40 +0200 Subject: [PATCH 009/259] Upgrade @storybook/testing-library --- addons/interactions/package.json | 2 +- examples/angular-cli/package.json | 2 +- examples/official-storybook/package.json | 2 +- examples/svelte-kitchen-sink/package.json | 2 +- examples/vue-3-cli/package.json | 2 +- examples/vue-kitchen-sink/package.json | 2 +- .../web-components-kitchen-sink/package.json | 2 +- package.json | 2 +- yarn.lock | 22 +++++++++---------- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/addons/interactions/package.json b/addons/interactions/package.json index b6edbc0b9002..8153ae0f6a86 100644 --- a/addons/interactions/package.json +++ b/addons/interactions/package.json @@ -56,7 +56,7 @@ }, "devDependencies": { "@storybook/jest": "^0.0.2", - "@storybook/testing-library": "^0.0.2", + "@storybook/testing-library": "^0.0.3", "formik": "^2.2.9" }, "peerDependencies": { diff --git a/examples/angular-cli/package.json b/examples/angular-cli/package.json index 131e4f3796f3..3d177ae5e466 100644 --- a/examples/angular-cli/package.json +++ b/examples/angular-cli/package.json @@ -53,7 +53,7 @@ "@storybook/angular": "6.4.0-beta.19", "@storybook/jest": "^0.0.2", "@storybook/source-loader": "6.4.0-beta.19", - "@storybook/testing-library": "^0.0.2", + "@storybook/testing-library": "^0.0.3", "@types/core-js": "^2.5.4", "@types/jest": "^26.0.16", "@types/node": "^14.14.20", diff --git a/examples/official-storybook/package.json b/examples/official-storybook/package.json index ff7bd3764578..ea30dbd850cf 100644 --- a/examples/official-storybook/package.json +++ b/examples/official-storybook/package.json @@ -36,7 +36,7 @@ "@storybook/node-logger": "6.4.0-beta.19", "@storybook/react": "6.4.0-beta.19", "@storybook/source-loader": "6.4.0-beta.19", - "@storybook/testing-library": "^0.0.2", + "@storybook/testing-library": "^0.0.3", "@storybook/theming": "6.4.0-beta.19", "@testing-library/dom": "^7.31.2", "@testing-library/user-event": "^13.1.9", diff --git a/examples/svelte-kitchen-sink/package.json b/examples/svelte-kitchen-sink/package.json index 2fc9d5a97b67..380fd39458a4 100644 --- a/examples/svelte-kitchen-sink/package.json +++ b/examples/svelte-kitchen-sink/package.json @@ -24,7 +24,7 @@ "@storybook/jest": "^0.0.2", "@storybook/source-loader": "6.4.0-beta.19", "@storybook/svelte": "6.4.0-beta.19", - "@storybook/testing-library": "^0.0.2", + "@storybook/testing-library": "^0.0.3", "svelte-jester": "1.3.0", "svelte-preprocess": "4.6.8" }, diff --git a/examples/vue-3-cli/package.json b/examples/vue-3-cli/package.json index 0c489435b9da..4123cd7e6c30 100644 --- a/examples/vue-3-cli/package.json +++ b/examples/vue-3-cli/package.json @@ -20,7 +20,7 @@ "@storybook/addon-links": "6.4.0-beta.19", "@storybook/addon-storyshots": "6.4.0-beta.19", "@storybook/jest": "^0.0.2", - "@storybook/testing-library": "^0.0.2", + "@storybook/testing-library": "^0.0.3", "@storybook/vue3": "6.4.0-beta.19", "@vue/cli-plugin-babel": "~4.5.0", "@vue/cli-plugin-typescript": "~4.5.0", diff --git a/examples/vue-kitchen-sink/package.json b/examples/vue-kitchen-sink/package.json index 57f6eb1b8902..8fa2f3cac102 100644 --- a/examples/vue-kitchen-sink/package.json +++ b/examples/vue-kitchen-sink/package.json @@ -27,7 +27,7 @@ "@storybook/addons": "6.4.0-beta.19", "@storybook/jest": "^0.0.2", "@storybook/source-loader": "6.4.0-beta.19", - "@storybook/testing-library": "^0.0.2", + "@storybook/testing-library": "^0.0.3", "@storybook/vue": "6.4.0-beta.19", "@vue/babel-preset-jsx": "^1.2.4", "babel-loader": "^8.0.0", diff --git a/examples/web-components-kitchen-sink/package.json b/examples/web-components-kitchen-sink/package.json index 482093455080..d34885a1a07a 100644 --- a/examples/web-components-kitchen-sink/package.json +++ b/examples/web-components-kitchen-sink/package.json @@ -48,7 +48,7 @@ "@storybook/router": "portal:../../lib/router", "@storybook/source-loader": "portal:../../lib/source-loader", "@storybook/store": "portal:../../lib/store", - "@storybook/testing-library": "^0.0.2", + "@storybook/testing-library": "^0.0.3", "@storybook/theming": "portal:../../lib/theming", "@storybook/ui": "portal:../../lib/ui", "@storybook/web-components": "portal:../../app/web-components", diff --git a/package.json b/package.json index 29ece0afbf97..33104480a594 100644 --- a/package.json +++ b/package.json @@ -175,7 +175,7 @@ "@storybook/source-loader": "workspace:*", "@storybook/store": "workspace:*", "@storybook/svelte": "workspace:*", - "@storybook/testing-library": "^0.0.2", + "@storybook/testing-library": "^0.0.3", "@storybook/theming": "workspace:*", "@storybook/ui": "workspace:*", "@storybook/vue": "workspace:*", diff --git a/yarn.lock b/yarn.lock index bfd40ab10be6..bc867ece0497 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7132,7 +7132,7 @@ __metadata: "@storybook/csf": 0.0.2--canary.87bc651.0 "@storybook/instrumenter": 6.4.0-beta.19 "@storybook/jest": ^0.0.2 - "@storybook/testing-library": ^0.0.2 + "@storybook/testing-library": ^0.0.3 "@storybook/theming": 6.4.0-beta.19 formik: ^2.2.9 global: ^4.4.0 @@ -8842,7 +8842,7 @@ __metadata: "@storybook/source-loader": "workspace:*" "@storybook/store": "workspace:*" "@storybook/svelte": "workspace:*" - "@storybook/testing-library": ^0.0.2 + "@storybook/testing-library": ^0.0.3 "@storybook/theming": "workspace:*" "@storybook/ui": "workspace:*" "@storybook/vue": "workspace:*" @@ -9149,16 +9149,16 @@ __metadata: languageName: unknown linkType: soft -"@storybook/testing-library@npm:^0.0.2": - version: 0.0.2 - resolution: "@storybook/testing-library@npm:0.0.2" +"@storybook/testing-library@npm:^0.0.3": + version: 0.0.3 + resolution: "@storybook/testing-library@npm:0.0.3" dependencies: "@storybook/client-logger": 6.4.0-beta.12 "@storybook/instrumenter": 6.4.0-beta.12 "@testing-library/dom": ^8.3.0 "@testing-library/user-event": ^13.2.1 ts-dedent: ^2.2.0 - checksum: a2a6442d4e9f2b1f2f4aa96237d770dd2ce78051b45424d13778218d03297624aa81d5e9d67f32ebfc4ee53cb538ffa41a0ddfa8915f98d52c5c6e99122282b5 + checksum: 18eb7896d5dba8b4b23ff87a1b6694e5f984f357f41d1b9af88311843e5e0c4b5804e6de7e27c2a73d694decbbb5d20cd23a97bb7c9d5b93cd20ae7f93b3a538 languageName: node linkType: hard @@ -13042,7 +13042,7 @@ __metadata: "@storybook/angular": 6.4.0-beta.19 "@storybook/jest": ^0.0.2 "@storybook/source-loader": 6.4.0-beta.19 - "@storybook/testing-library": ^0.0.2 + "@storybook/testing-library": ^0.0.3 "@types/core-js": ^2.5.4 "@types/jest": ^26.0.16 "@types/node": ^14.14.20 @@ -33463,7 +33463,7 @@ fsevents@^1.2.7: "@storybook/node-logger": 6.4.0-beta.19 "@storybook/react": 6.4.0-beta.19 "@storybook/source-loader": 6.4.0-beta.19 - "@storybook/testing-library": ^0.0.2 + "@storybook/testing-library": ^0.0.3 "@storybook/theming": 6.4.0-beta.19 "@testing-library/dom": ^7.31.2 "@testing-library/user-event": ^13.1.9 @@ -42378,7 +42378,7 @@ resolve@1.19.0: "@storybook/jest": ^0.0.2 "@storybook/source-loader": 6.4.0-beta.19 "@storybook/svelte": 6.4.0-beta.19 - "@storybook/testing-library": ^0.0.2 + "@storybook/testing-library": ^0.0.3 global: ^4.4.0 svelte-jester: 1.3.0 svelte-preprocess: 4.6.8 @@ -45163,7 +45163,7 @@ resolve@1.19.0: "@storybook/addon-links": 6.4.0-beta.19 "@storybook/addon-storyshots": 6.4.0-beta.19 "@storybook/jest": ^0.0.2 - "@storybook/testing-library": ^0.0.2 + "@storybook/testing-library": ^0.0.3 "@storybook/vue3": 6.4.0-beta.19 "@vue/cli-plugin-babel": ~4.5.0 "@vue/cli-plugin-typescript": ~4.5.0 @@ -45260,7 +45260,7 @@ resolve@1.19.0: "@storybook/addons": 6.4.0-beta.19 "@storybook/jest": ^0.0.2 "@storybook/source-loader": 6.4.0-beta.19 - "@storybook/testing-library": ^0.0.2 + "@storybook/testing-library": ^0.0.3 "@storybook/vue": 6.4.0-beta.19 "@vue/babel-preset-jsx": ^1.2.4 babel-loader: ^8.0.0 From 0b1f5de4bb861960278710a9af8b9cfb8e02a5a4 Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Sun, 24 Oct 2021 22:37:58 +0200 Subject: [PATCH 010/259] Clarification --- addons/interactions/src/Panel.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/interactions/src/Panel.tsx b/addons/interactions/src/Panel.tsx index bb8b9293b4cc..49f4ee34981e 100644 --- a/addons/interactions/src/Panel.tsx +++ b/addons/interactions/src/Panel.tsx @@ -26,6 +26,7 @@ export const Panel: React.FC = (props) => { const [isPlaying, setPlaying] = React.useState(true); const [scrollTarget, setScrollTarget] = React.useState(); + // Calls are tracked in a ref so we don't needlessly rerender. const calls = React.useRef>>(new Map()); const setCall = ({ state, ...call }: Call) => calls.current.set(call.id, call); From 46a083776d5f39be5e859b2afba437d280a73747 Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Sun, 24 Oct 2021 22:39:17 +0200 Subject: [PATCH 011/259] Pass parentId directly and set cursor back to 0 for callbacks --- lib/instrumenter/src/instrumenter.ts | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/lib/instrumenter/src/instrumenter.ts b/lib/instrumenter/src/instrumenter.ts index 05b8ebb46202..08a5ecf844ad 100644 --- a/lib/instrumenter/src/instrumenter.ts +++ b/lib/instrumenter/src/instrumenter.ts @@ -38,7 +38,7 @@ export interface State { shadowCalls: Call[]; callRefsByResult: Map; chainedCallIds: Set; - parentCall?: Call; + parentId?: Call['id']; playUntil?: Call['id']; resolvers: Record; syncTimeout: ReturnType; @@ -80,7 +80,7 @@ const getInitialState = (): State => ({ shadowCalls: [], callRefsByResult: new Map(), chainedCallIds: new Set(), - parentCall: undefined, + parentId: undefined, playUntil: undefined, resolvers: {}, syncTimeout: undefined, @@ -317,12 +317,12 @@ export class Instrumenter { track(method: string, fn: Function, args: any[], options: Options) { const storyId: StoryId = args?.[0]?.__storyId__ || global.window.__STORYBOOK_PREVIEW__?.urlStore?.selection?.storyId; - const index = this.getState(storyId).cursor; - this.setState(storyId, { cursor: index + 1 }); - const id = `${storyId} [${index}] ${method}`; + const { cursor, parentId } = this.getState(storyId); + this.setState(storyId, { cursor: cursor + 1 }); + const id = `${parentId || storyId} [${cursor}] ${method}`; const { path = [], intercept = false, retain = false } = options; const interceptable = typeof intercept === 'function' ? intercept(method, path) : intercept; - const call: Call = { id, path, method, storyId, args, interceptable, retain }; + const call: Call = { id, path, method, parentId, storyId, args, interceptable, retain }; const result = (interceptable ? this.intercept : this.invoke).call(this, fn, call, options); return this.instrument(result, { ...options, mutate: true, path: [{ __callId__: call.id }] }); } @@ -357,13 +357,10 @@ export class Instrumenter { } invoke(fn: Function, call: Call, options: Options) { - const { parentCall, callRefsByResult, forwardedException, renderPhase } = this.getState( - call.storyId - ); - const callWithParent = { ...call, parentId: parentCall?.id }; + const { callRefsByResult, forwardedException, renderPhase } = this.getState(call.storyId); const info: Call = { - ...callWithParent, + ...call, // Map args that originate from a tracked function call to a call reference to enable nesting. // These values are often not fully serializable anyway (e.g. HTML elements). args: call.args.map((arg) => { @@ -428,17 +425,18 @@ export class Instrumenter { } const finalArgs = options.getArgs - ? options.getArgs(callWithParent, this.getState(call.storyId)) + ? options.getArgs(call, this.getState(call.storyId)) : call.args; const result = fn( // Wrap any callback functions to provide a way to access their "parent" call. + // This is picked up in the `track` function and used for call metadata. ...finalArgs.map((arg: any) => { if (typeof arg !== 'function' || Object.keys(arg).length) return arg; return (...args: any) => { - const prev = this.getState(call.storyId).parentCall; - this.setState(call.storyId, { parentCall: call }); + const { cursor: prevCursor, parentId: prevParentId } = this.getState(call.storyId); + this.setState(call.storyId, { cursor: 0, parentId: call.id }); const res = arg(...args); - this.setState(call.storyId, { parentCall: prev }); + this.setState(call.storyId, { cursor: prevCursor, parentId: prevParentId }); return res; }; }) From 6758a187749c21a88166edf7f02b488ac80c1076 Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Sun, 24 Oct 2021 22:40:12 +0200 Subject: [PATCH 012/259] Dedupe and sort the call log so it will always nicely map on top of the shadow log --- lib/instrumenter/src/instrumenter.ts | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/lib/instrumenter/src/instrumenter.ts b/lib/instrumenter/src/instrumenter.ts index 08a5ecf844ad..164f3e150687 100644 --- a/lib/instrumenter/src/instrumenter.ts +++ b/lib/instrumenter/src/instrumenter.ts @@ -476,10 +476,18 @@ export class Instrumenter { sync(call: Call) { clearTimeout(this.getState(call.storyId).syncTimeout); this.channel.emit(EVENTS.CALL, call); - this.setState(call.storyId, ({ calls }) => ({ - calls: calls.concat(call), - syncTimeout: setTimeout(() => this.channel.emit(EVENTS.SYNC, this.getLog(call.storyId)), 0), - })); + this.setState(call.storyId, ({ calls }) => { + // Omit earlier calls for the same ID, which may have been superceded by a later invocation. + // This typically happens when calls are part of a callback which runs multiple times. + const callsById = calls + .concat(call) + .reduce>((a, c) => Object.assign(a, { [c.id]: c }), {}); + return { + // Calls are sorted to ensure parent calls always come before calls in their callback. + calls: Object.values(callsById).sort((a, b) => a.id.localeCompare(b.id)), + syncTimeout: setTimeout(() => this.channel.emit(EVENTS.SYNC, this.getLog(call.storyId)), 0), + }; + }); } } From f9f09ef03ea4741bce49902ad450ea5cefc3c871 Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Sun, 24 Oct 2021 22:48:22 +0200 Subject: [PATCH 013/259] Fix parentId in tests --- lib/instrumenter/src/instrumenter.test.ts | 24 +++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/lib/instrumenter/src/instrumenter.test.ts b/lib/instrumenter/src/instrumenter.test.ts index 742a6b9c7f78..a5c94c8943b8 100644 --- a/lib/instrumenter/src/instrumenter.test.ts +++ b/lib/instrumenter/src/instrumenter.test.ts @@ -213,16 +213,25 @@ describe('Instrumenter', () => { expect.objectContaining({ id: 'kind--story [0] fn1', parentId: undefined }) ); expect(callSpy).toHaveBeenCalledWith( - expect.objectContaining({ id: 'kind--story [1] fn2', parentId: 'kind--story [0] fn1' }) + expect.objectContaining({ + id: 'kind--story [0] fn1 [0] fn2', + parentId: 'kind--story [0] fn1', + }) ); expect(callSpy).toHaveBeenCalledWith( - expect.objectContaining({ id: 'kind--story [2] fn3', parentId: 'kind--story [1] fn2' }) + expect.objectContaining({ + id: 'kind--story [0] fn1 [0] fn2 [0] fn3', + parentId: 'kind--story [0] fn1 [0] fn2', + }) ); expect(callSpy).toHaveBeenCalledWith( - expect.objectContaining({ id: 'kind--story [3] fn4', parentId: 'kind--story [0] fn1' }) + expect.objectContaining({ + id: 'kind--story [0] fn1 [1] fn4', + parentId: 'kind--story [0] fn1', + }) ); expect(callSpy).toHaveBeenCalledWith( - expect.objectContaining({ id: 'kind--story [4] fn5', parentId: undefined }) + expect.objectContaining({ id: 'kind--story [1] fn5', parentId: undefined }) ); }); @@ -235,10 +244,13 @@ describe('Instrumenter', () => { expect.objectContaining({ id: 'kind--story [0] fn1', parentId: undefined }) ); expect(callSpy).toHaveBeenCalledWith( - expect.objectContaining({ id: 'kind--story [1] fn2', parentId: 'kind--story [0] fn1' }) + expect.objectContaining({ + id: 'kind--story [0] fn1 [0] fn2', + parentId: 'kind--story [0] fn1', + }) ); expect(callSpy).toHaveBeenCalledWith( - expect.objectContaining({ id: 'kind--story [2] fn3', parentId: undefined }) + expect.objectContaining({ id: 'kind--story [1] fn3', parentId: undefined }) ); }); From 33485f19b7a1576c00808e2b21352d3013e0e903 Mon Sep 17 00:00:00 2001 From: Thibaud Av Date: Fri, 12 Nov 2021 20:44:09 +0100 Subject: [PATCH 014/259] fix(angular): missing remove `oneOf` in builder schema This `onOf` is no more necessary --- app/angular/src/builders/build-storybook/schema.json | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/app/angular/src/builders/build-storybook/schema.json b/app/angular/src/builders/build-storybook/schema.json index a4e894863922..335114a6eef1 100644 --- a/app/angular/src/builders/build-storybook/schema.json +++ b/app/angular/src/builders/build-storybook/schema.json @@ -53,13 +53,5 @@ } } }, - "additionalProperties": false, - "oneOf": [ - { - "required": ["browserTarget"] - }, - { - "required": ["tsConfig"] - } - ] + "additionalProperties": false } From 903595bae98b3bc61e69abea36c06ae3d4c040ce Mon Sep 17 00:00:00 2001 From: Thibaud Av Date: Fri, 12 Nov 2021 20:48:16 +0100 Subject: [PATCH 015/259] feat(angular): add `styles` and `stylePreprocessorOptions` to add dedicated styles config Allow the angular project to set styles config without using `browserTarget` in order to rely on another builder's config. Very useful in the case of a library where you don't have an application but you want to configure styles in storybook like an app --- .../src/builders/build-storybook/index.ts | 29 +++++++++- .../src/builders/build-storybook/schema.json | 55 ++++++++++++++++++- .../src/builders/start-storybook/index.ts | 41 +++++++++++++- .../src/builders/start-storybook/schema.json | 55 ++++++++++++++++++- .../server/framework-preset-angular-cli.ts | 3 +- app/angular/src/server/options.ts | 8 ++- app/angular/standalone.d.ts | 8 ++- 7 files changed, 185 insertions(+), 14 deletions(-) diff --git a/app/angular/src/builders/build-storybook/index.ts b/app/angular/src/builders/build-storybook/index.ts index 64827de6e809..46bc3b3ee567 100644 --- a/app/angular/src/builders/build-storybook/index.ts +++ b/app/angular/src/builders/build-storybook/index.ts @@ -12,7 +12,11 @@ import { catchError, map, mapTo, switchMap } from 'rxjs/operators'; // eslint-disable-next-line import/no-extraneous-dependencies import buildStandalone, { StandaloneOptions } from '@storybook/angular/standalone'; -import { BrowserBuilderOptions } from '@angular-devkit/build-angular'; +import { + BrowserBuilderOptions, + ExtraEntryPoint, + StylePreprocessorOptions, +} from '@angular-devkit/build-angular'; import { runCompodoc } from '../utils/run-compodoc'; import { buildStandaloneErrorHandler } from '../utils/build-standalone-errors-handler'; @@ -21,6 +25,8 @@ export type StorybookBuilderOptions = JsonObject & { tsConfig?: string; compodoc: boolean; compodocArgs: string[]; + styles?: ExtraEntryPoint[]; + stylePreprocessorOptions?: StylePreprocessorOptions; } & Pick< // makes sure the option exists CLIOptions, @@ -46,12 +52,29 @@ function commandBuilder( return runCompodoc$.pipe(mapTo({ tsConfig })); }), map(({ tsConfig }) => { - const { browserTarget, ...otherOptions } = options; + const { + browserTarget, + stylePreprocessorOptions, + styles, + configDir, + docs, + loglevel, + outputDir, + quiet, + } = options; const standaloneOptions: StandaloneOptions = { - ...otherOptions, + configDir, + docs, + loglevel, + outputDir, + quiet, angularBrowserTarget: browserTarget, angularBuilderContext: context, + angularBuilderOptions: { + stylePreprocessorOptions, + styles, + }, tsConfig, }; return standaloneOptions; diff --git a/app/angular/src/builders/build-storybook/schema.json b/app/angular/src/builders/build-storybook/schema.json index 335114a6eef1..f241c4326197 100644 --- a/app/angular/src/builders/build-storybook/schema.json +++ b/app/angular/src/builders/build-storybook/schema.json @@ -51,7 +51,60 @@ "items": { "type": "string" } + }, + "styles": { + "type": "array", + "description": "Global styles to be included in the build.", + "items": { + "$ref": "#/definitions/extraEntryPoint" + } + }, + "stylePreprocessorOptions": { + "description": "Options to pass to style preprocessors.", + "type": "object", + "properties": { + "includePaths": { + "description": "Paths to include. Paths will be resolved to workspace root.", + "type": "array", + "items": { + "type": "string" + }, + "default": [] + } + }, + "additionalProperties": false } }, - "additionalProperties": false + "additionalProperties": false, + "definitions": { + "extraEntryPoint": { + "oneOf": [ + { + "type": "object", + "properties": { + "input": { + "type": "string", + "description": "The file to include." + }, + "bundleName": { + "type": "string", + "pattern": "^[\\w\\-.]*$", + "description": "The bundle name for this extra entry point." + }, + "inject": { + "type": "boolean", + "description": "If the bundle will be referenced in the HTML file.", + "default": true + } + }, + "additionalProperties": false, + "required": ["input"] + }, + { + "type": "string", + "description": "The file to include." + } + ] + } + } } diff --git a/app/angular/src/builders/start-storybook/index.ts b/app/angular/src/builders/start-storybook/index.ts index eade7127f29f..173828673c22 100644 --- a/app/angular/src/builders/start-storybook/index.ts +++ b/app/angular/src/builders/start-storybook/index.ts @@ -6,7 +6,11 @@ import { Target, } from '@angular-devkit/architect'; import { JsonObject } from '@angular-devkit/core'; -import { BrowserBuilderOptions } from '@angular-devkit/build-angular'; +import { + BrowserBuilderOptions, + ExtraEntryPoint, + StylePreprocessorOptions, +} from '@angular-devkit/build-angular'; import { from, Observable, of } from 'rxjs'; import { CLIOptions } from '@storybook/core-common'; import { map, switchMap, mapTo } from 'rxjs/operators'; @@ -21,6 +25,8 @@ export type StorybookBuilderOptions = JsonObject & { tsConfig?: string; compodoc: boolean; compodocArgs: string[]; + styles?: ExtraEntryPoint[]; + stylePreprocessorOptions?: StylePreprocessorOptions; } & Pick< // makes sure the option exists CLIOptions, @@ -56,12 +62,41 @@ function commandBuilder( return runCompodoc$.pipe(mapTo({ tsConfig })); }), map(({ tsConfig }) => { - const { browserTarget, ...otherOptions } = options; + const { + browserTarget, + stylePreprocessorOptions, + styles, + ci, + configDir, + docs, + host, + https, + port, + quiet, + smokeTest, + sslCa, + sslCert, + sslKey, + } = options; const standaloneOptions: StandaloneOptions = { - ...otherOptions, + ci, + configDir, + docs, + host, + https, + port, + quiet, + smokeTest, + sslCa, + sslCert, + sslKey, angularBrowserTarget: browserTarget, angularBuilderContext: context, + angularBuilderOptions: { + stylePreprocessorOptions, + styles, + }, tsConfig, }; diff --git a/app/angular/src/builders/start-storybook/schema.json b/app/angular/src/builders/start-storybook/schema.json index 6c429fd26850..bea42d8cab09 100644 --- a/app/angular/src/builders/start-storybook/schema.json +++ b/app/angular/src/builders/start-storybook/schema.json @@ -78,7 +78,60 @@ "items": { "type": "string" } + }, + "styles": { + "type": "array", + "description": "Global styles to be included in the build.", + "items": { + "$ref": "#/definitions/extraEntryPoint" + } + }, + "stylePreprocessorOptions": { + "description": "Options to pass to style preprocessors.", + "type": "object", + "properties": { + "includePaths": { + "description": "Paths to include. Paths will be resolved to workspace root.", + "type": "array", + "items": { + "type": "string" + }, + "default": [] + } + }, + "additionalProperties": false } }, - "additionalProperties": false + "additionalProperties": false, + "definitions": { + "extraEntryPoint": { + "oneOf": [ + { + "type": "object", + "properties": { + "input": { + "type": "string", + "description": "The file to include." + }, + "bundleName": { + "type": "string", + "pattern": "^[\\w\\-.]*$", + "description": "The bundle name for this extra entry point." + }, + "inject": { + "type": "boolean", + "description": "If the bundle will be referenced in the HTML file.", + "default": true + } + }, + "additionalProperties": false, + "required": ["input"] + }, + { + "type": "string", + "description": "The file to include." + } + ] + } + } } diff --git a/app/angular/src/server/framework-preset-angular-cli.ts b/app/angular/src/server/framework-preset-angular-cli.ts index b6af4d7d5918..f64fc26b769d 100644 --- a/app/angular/src/server/framework-preset-angular-cli.ts +++ b/app/angular/src/server/framework-preset-angular-cli.ts @@ -115,10 +115,9 @@ async function getBuilderOptions( */ const builderOptions = { ...browserTargetOptions, - ...options.angularBuilderOptions, + ...(options.angularBuilderOptions as JsonObject), tsConfig: options.tsConfig ?? - options.angularBuilderOptions?.tsConfig ?? browserTargetOptions.tsConfig ?? findUpSync('tsconfig.json', { cwd: options.configDir }), }; diff --git a/app/angular/src/server/options.ts b/app/angular/src/server/options.ts index 061841dfb52a..7af8159cc718 100644 --- a/app/angular/src/server/options.ts +++ b/app/angular/src/server/options.ts @@ -2,13 +2,17 @@ import { sync } from 'read-pkg-up'; import { LoadOptions, Options as CoreOptions } from '@storybook/core-common'; import { BuilderContext } from '@angular-devkit/architect'; -import { JsonObject } from '@angular-devkit/core'; +import { ExtraEntryPoint, StylePreprocessorOptions } from '@angular-devkit/build-angular'; +import { JsonValue } from '@angular-devkit/core'; export type PresetOptions = CoreOptions & { /* Allow to get the options of a targeted "browser builder" */ angularBrowserTarget?: string | null; /* Defined set of options. These will take over priority from angularBrowserTarget options */ - angularBuilderOptions?: JsonObject | null; + angularBuilderOptions?: { + styles?: ExtraEntryPoint[]; + stylePreprocessorOptions?: StylePreprocessorOptions; + }; /* Angular context from builder */ angularBuilderContext?: BuilderContext | null; tsConfig?: string; diff --git a/app/angular/standalone.d.ts b/app/angular/standalone.d.ts index 481849593fce..0349246d5392 100644 --- a/app/angular/standalone.d.ts +++ b/app/angular/standalone.d.ts @@ -1,6 +1,7 @@ import { CLIOptions, LoadOptions, BuilderOptions } from '@storybook/core-common'; import { BuilderContext } from '@angular-devkit/architect'; -import { JsonObject } from '@angular-devkit/core'; +import { JsonValue } from '@angular-devkit/core'; +import { JsonSchema } from '@angular-devkit/core/src/json/schema'; export type StandaloneOptions = Partial< CLIOptions & @@ -8,7 +9,10 @@ export type StandaloneOptions = Partial< BuilderOptions & { mode?: 'static' | 'dev'; angularBrowserTarget?: string | null; - angularBuilderOptions?: JsonObject; + angularBuilderOptions?: JsonObject & { + styles?: ExtraEntryPoint[]; + stylePreprocessorOptions?: StylePreprocessorOptions; + }; angularBuilderContext?: BuilderContext | null; tsConfig?: string; } From 2e443f1889d9f1936678d7b2cf8f7491e4dca86a Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Mon, 15 Nov 2021 16:57:16 +0100 Subject: [PATCH 016/259] Add missing tsconfig --- addons/interactions/tsconfig.json | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 addons/interactions/tsconfig.json diff --git a/addons/interactions/tsconfig.json b/addons/interactions/tsconfig.json new file mode 100644 index 000000000000..d1ee4fc75941 --- /dev/null +++ b/addons/interactions/tsconfig.json @@ -0,0 +1,18 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "rootDir": "./src", + "types": ["webpack-env"] + }, + "include": [ + "src/**/*" + ], + "exclude": [ + "src/**/*.test.*", + "src/**/tests/**/*", + "src/**/__tests__/**/*", + "src/**/*.stories.*", + "src/**/*.mockdata.*", + "src/**/__testfixtures__/**" + ] +} From 0da41856d39530e57c4fd1e96c5a9ca931ceb9f0 Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Mon, 15 Nov 2021 17:05:06 +0100 Subject: [PATCH 017/259] Fix type errors --- addons/interactions/src/Panel.tsx | 18 +++++++++--------- .../src/components/Interaction/Interaction.tsx | 14 +++++++------- .../src/components/StatusBadge/StatusBadge.tsx | 2 +- .../src/components/StatusIcon/StatusIcon.tsx | 2 +- .../src/components/Subnav/Subnav.tsx | 2 +- addons/interactions/src/mocks/index.ts | 6 +++--- 6 files changed, 22 insertions(+), 22 deletions(-) diff --git a/addons/interactions/src/Panel.tsx b/addons/interactions/src/Panel.tsx index 2fb79bddae58..d7f44447376e 100644 --- a/addons/interactions/src/Panel.tsx +++ b/addons/interactions/src/Panel.tsx @@ -19,7 +19,7 @@ interface AddonPanelProps { interface InteractionsPanelProps { active: boolean; - interactions: (Call & { state?: CallStates })[]; + interactions: (Call & { status?: CallStates })[]; isDisabled?: boolean; hasPrevious?: boolean; hasNext?: boolean; @@ -120,11 +120,11 @@ export const Panel: React.FC = (props) => { const [scrollTarget, setScrollTarget] = React.useState(); // Calls are tracked in a ref so we don't needlessly rerender. - const calls = React.useRef>>(new Map()); - const setCall = ({ state, ...call }: Call) => calls.current.set(call.id, call); + const calls = React.useRef>>(new Map()); + const setCall = ({ status, ...call }: Call) => calls.current.set(call.id, call); const [log, setLog] = React.useState([]); - const interactions = log.map(({ callId, state }) => ({ ...calls.current.get(callId), state })); + const interactions = log.map(({ callId, status }) => ({ ...calls.current.get(callId), status })); const endRef = React.useRef(); React.useEffect(() => { @@ -154,11 +154,11 @@ export const Panel: React.FC = (props) => { const isDebuggingEnabled = FEATURES.interactionsDebugger === true; const showStatus = log.length > 0 && !isPlaying; - const isDebugging = log.some((item) => pendingStates.includes(item.state)); - const hasPrevious = log.some((item) => completedStates.includes(item.state)); - const hasNext = log.some((item) => item.state === CallStates.WAITING); - const hasActive = log.some((item) => item.state === CallStates.ACTIVE); - const hasException = log.some((item) => item.state === CallStates.ERROR); + const isDebugging = log.some((item) => pendingStates.includes(item.status)); + const hasPrevious = log.some((item) => completedStates.includes(item.status)); + const hasNext = log.some((item) => item.status === CallStates.WAITING); + const hasActive = log.some((item) => item.status === CallStates.ACTIVE); + const hasException = log.some((item) => item.status === CallStates.ERROR); const isDisabled = isDebuggingEnabled ? hasActive || isLocked || (isPlaying && !isDebugging) : true; diff --git a/addons/interactions/src/components/Interaction/Interaction.tsx b/addons/interactions/src/components/Interaction/Interaction.tsx index f9a9dc366d38..a828a0a37982 100644 --- a/addons/interactions/src/components/Interaction/Interaction.tsx +++ b/addons/interactions/src/components/Interaction/Interaction.tsx @@ -20,7 +20,7 @@ const RowContainer = styled('div', { shouldForwardProp: (prop) => !['call'].incl borderBottom: `1px solid ${theme.appBorderColor}`, fontFamily: typography.fonts.base, fontSize: 13, - ...(call.state === CallStates.ERROR && { + ...(call.status === CallStates.ERROR && { backgroundColor: theme.base === 'dark' ? transparentize(0.93, theme.color.negative) : theme.background.warning, }), @@ -38,19 +38,19 @@ const RowLabel = styled('button', { shouldForwardProp: (prop) => !['call'].inclu margin: 0, padding: '8px 15px', textAlign: 'start', - cursor: disabled || call.state === CallStates.ERROR ? 'default' : 'pointer', + cursor: disabled || call.status === CallStates.ERROR ? 'default' : 'pointer', '&:hover': { background: theme.background.hoverable, }, '&:focus-visible': { outline: 0, boxShadow: `inset 3px 0 0 0 ${ - call.state === CallStates.ERROR ? theme.color.warning : theme.color.secondary + call.status === CallStates.ERROR ? theme.color.warning : theme.color.secondary }`, - background: call.state === CallStates.ERROR ? 'transparent' : theme.background.hoverable, + background: call.status === CallStates.ERROR ? 'transparent' : theme.background.hoverable, }, '& > div': { - opacity: call.state === CallStates.WAITING ? 0.5 : 1, + opacity: call.status === CallStates.WAITING ? 0.5 : 1, }, })); @@ -83,12 +83,12 @@ export const Interaction = ({ onMouseEnter={() => isDebuggingEnabled && setIsHovered(true)} onMouseLeave={() => isDebuggingEnabled && setIsHovered(false)} > - + - {call.state === CallStates.ERROR && + {call.status === CallStates.ERROR && call.exception && (call.exception.message.startsWith('expect(') ? ( diff --git a/addons/interactions/src/components/StatusBadge/StatusBadge.tsx b/addons/interactions/src/components/StatusBadge/StatusBadge.tsx index a535875c233c..4c28636166f3 100644 --- a/addons/interactions/src/components/StatusBadge/StatusBadge.tsx +++ b/addons/interactions/src/components/StatusBadge/StatusBadge.tsx @@ -3,7 +3,7 @@ import { Call, CallStates } from '@storybook/instrumenter'; import { styled, typography } from '@storybook/theming'; export interface StatusBadgeProps { - status: Call['state']; + status: Call['status']; } const StyledBadge = styled.div(({ theme, status }) => { diff --git a/addons/interactions/src/components/StatusIcon/StatusIcon.tsx b/addons/interactions/src/components/StatusIcon/StatusIcon.tsx index 9aed8af4df2d..d26d7bd493bc 100644 --- a/addons/interactions/src/components/StatusIcon/StatusIcon.tsx +++ b/addons/interactions/src/components/StatusIcon/StatusIcon.tsx @@ -7,7 +7,7 @@ import { transparentize } from 'polished'; import localTheme from '../../theme'; export interface StatusIconProps extends IconsProps { - status: Call['state']; + status: Call['status']; } const { diff --git a/addons/interactions/src/components/Subnav/Subnav.tsx b/addons/interactions/src/components/Subnav/Subnav.tsx index c4fe801ccf85..fd8639216e00 100644 --- a/addons/interactions/src/components/Subnav/Subnav.tsx +++ b/addons/interactions/src/components/Subnav/Subnav.tsx @@ -32,7 +32,7 @@ export interface SubnavProps { hasPrevious: boolean; hasNext: boolean; storyFileName?: string; - status: Call['state']; + status: Call['status']; onStart: () => void; onPrevious: () => void; onNext: () => void; diff --git a/addons/interactions/src/mocks/index.ts b/addons/interactions/src/mocks/index.ts index 591fdd9cfbce..fccd01107c9c 100644 --- a/addons/interactions/src/mocks/index.ts +++ b/addons/interactions/src/mocks/index.ts @@ -1,6 +1,6 @@ import { CallStates, Call } from '@storybook/instrumenter'; -export const getCall = (state: CallStates): Call => { +export const getCall = (status: CallStates): Call => { const defaultData = { id: 'addons-interactions-accountform--standard-email-filled [3] change', path: ['fireEvent'], @@ -19,11 +19,11 @@ export const getCall = (state: CallStates): Call => { ], interceptable: true, retain: false, - state, + status, }; const overrides = CallStates.ERROR - ? { exception: { callId: '', stack: '', message: "Things didn't work!" } } + ? { exception: { name: 'Error', stack: '', message: "Things didn't work!" } } : {}; return { ...defaultData, ...overrides }; From 7da0e02379b2488fc750a216654c7b4f3f720c19 Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Mon, 15 Nov 2021 17:05:54 +0100 Subject: [PATCH 018/259] Fix log sorting --- lib/instrumenter/src/instrumenter.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/instrumenter/src/instrumenter.ts b/lib/instrumenter/src/instrumenter.ts index 461ec161c979..a28b835e9d72 100644 --- a/lib/instrumenter/src/instrumenter.ts +++ b/lib/instrumenter/src/instrumenter.ts @@ -495,7 +495,9 @@ export class Instrumenter { .reduce>((a, c) => Object.assign(a, { [c.id]: c }), {}); return { // Calls are sorted to ensure parent calls always come before calls in their callback. - calls: Object.values(callsById).sort((a, b) => a.id.localeCompare(b.id)), + calls: Object.values(callsById).sort((a, b) => + a.id.localeCompare(b.id, undefined, { numeric: true }) + ), syncTimeout: setTimeout(() => this.channel.emit(EVENTS.SYNC, this.getLog(call.storyId)), 0), }; }); From e75bf1208f932db89488b7936132ed5b30b53daa Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Mon, 15 Nov 2021 17:16:12 +0100 Subject: [PATCH 019/259] Fix merge issue --- lib/instrumenter/src/instrumenter.ts | 29 ++++++++++++++-------------- lib/instrumenter/src/types.ts | 15 ++++++-------- 2 files changed, 20 insertions(+), 24 deletions(-) diff --git a/lib/instrumenter/src/instrumenter.ts b/lib/instrumenter/src/instrumenter.ts index a28b835e9d72..3481686b9a18 100644 --- a/lib/instrumenter/src/instrumenter.ts +++ b/lib/instrumenter/src/instrumenter.ts @@ -182,7 +182,7 @@ export class Instrumenter { const { isDebugging } = this.getState(storyId); const log = this.getLog(storyId); const next = isDebugging - ? log.findIndex(({ state }) => state === CallStates.WAITING) + ? log.findIndex(({ status }) => status === CallStates.WAITING) : log.length; start({ storyId, playUntil: log[next - 2]?.callId }); }; @@ -192,7 +192,7 @@ export class Instrumenter { const call = calls.find(({ id }) => id === callId); const shadowCall = shadowCalls.find(({ id }) => id === callId); if (!call && shadowCall) { - const nextCallId = this.getLog(storyId).find(({ state }) => state === CallStates.WAITING) + const nextCallId = this.getLog(storyId).find(({ status }) => status === CallStates.WAITING) ?.callId; if (shadowCall.id !== nextCallId) this.setState(storyId, { playUntil: shadowCall.id }); Object.values(resolvers).forEach((resolve) => resolve()); @@ -261,7 +261,7 @@ export class Instrumenter { } }); if (call.interceptable && !seen.has(call.id) && !seen.has(call.parentId)) { - acc.unshift({ callId: call.id, state: call.state }); + acc.unshift({ callId: call.id, status: call.status }); seen.add(call.id); if (call.parentId) { seen.add(call.parentId); @@ -326,7 +326,7 @@ export class Instrumenter { const id = `${parentId || storyId} [${cursor}] ${method}`; const { path = [], intercept = false, retain = false } = options; const interceptable = typeof intercept === 'function' ? intercept(method, path) : intercept; - const call: Call = { id, path, method, parentId, storyId, args, interceptable, retain }; + const call: Call = { id, parentId, storyId, cursor, path, method, args, interceptable, retain }; const result = (interceptable ? this.intercept : this.invoke).call(this, fn, call, options); return this.instrument(result, { ...options, mutate: true, path: [{ __callId__: call.id }] }); } @@ -365,13 +365,10 @@ export class Instrumenter { // const { abortSignal } = global.window.__STORYBOOK_PREVIEW__ || {}; // if (abortSignal && abortSignal.aborted) throw IGNORED_EXCEPTION; - const { callRefsByResult, forwardedException, parentId, renderPhase } = this.getState( - call.storyId - ); - const callWithParent = { ...call, parentId }; + const { callRefsByResult, forwardedException, renderPhase } = this.getState(call.storyId); const info: Call = { - ...callWithParent, + ...call, // Map args that originate from a tracked function call to a call reference to enable nesting. // These values are often not fully serializable anyway (e.g. HTML elements). args: call.args.map((arg) => { @@ -399,8 +396,8 @@ export class Instrumenter { const handleException = (e: unknown) => { if (e instanceof Error) { const { name, message, stack } = e; - const exception = { name, message, stack, callId: call.id }; - this.sync({ ...info, state: CallStates.ERROR, exception }); + const exception = { name, message, stack }; + this.sync({ ...info, status: CallStates.ERROR, exception }); // Always track errors to their originating call. this.setState(call.storyId, (state) => ({ @@ -444,10 +441,12 @@ export class Instrumenter { ...finalArgs.map((arg: any) => { if (typeof arg !== 'function' || Object.keys(arg).length) return arg; return (...args: any) => { - const { cursor: prevCursor, parentId: prevParentId } = this.getState(call.storyId); + const { cursor, parentId } = call; this.setState(call.storyId, { cursor: 0, parentId: call.id }); + const restore = () => this.setState(call.storyId, { cursor, parentId }); const res = arg(...args); - this.setState(call.storyId, { cursor: prevCursor, parentId: prevParentId }); + if (res instanceof Promise) res.then(restore, restore); + else restore(); return res; }; }) @@ -466,12 +465,12 @@ export class Instrumenter { this.sync({ ...info, - state: result instanceof Promise ? CallStates.ACTIVE : CallStates.DONE, + status: result instanceof Promise ? CallStates.ACTIVE : CallStates.DONE, }); if (result instanceof Promise) { return result.then((value) => { - this.sync({ ...info, state: CallStates.DONE }); + this.sync({ ...info, status: CallStates.DONE }); return value; }, handleException); } diff --git a/lib/instrumenter/src/types.ts b/lib/instrumenter/src/types.ts index 2de6a9b34ccf..c3a299ca61ec 100644 --- a/lib/instrumenter/src/types.ts +++ b/lib/instrumenter/src/types.ts @@ -2,19 +2,16 @@ import { StoryId } from '@storybook/addons'; export interface Call { id: string; + parentId?: Call['id']; + storyId: StoryId; + cursor: number; path: Array; method: string; - storyId: StoryId; args: any[]; interceptable: boolean; retain: boolean; - state?: CallStates.DONE | CallStates.ERROR | CallStates.ACTIVE | CallStates.WAITING; - exception?: { - callId: Call['id']; - message: Error['message']; - stack: Error['stack']; - }; - parentId?: Call['id']; + status?: CallStates.DONE | CallStates.ERROR | CallStates.ACTIVE | CallStates.WAITING; + exception?: Error; } export enum CallStates { @@ -40,5 +37,5 @@ export interface ElementRef { export interface LogItem { callId: Call['id']; - state: Call['state']; + status: Call['status']; } From 6d49fb4541a0a7d130f97a1b98971b7949c53e16 Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Mon, 15 Nov 2021 17:32:30 +0100 Subject: [PATCH 020/259] Fix tests --- lib/instrumenter/src/instrumenter.test.ts | 9 ++++----- lib/instrumenter/src/instrumenter.ts | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/lib/instrumenter/src/instrumenter.test.ts b/lib/instrumenter/src/instrumenter.test.ts index f5e8bd1ad6fb..aa5ebb8b109c 100644 --- a/lib/instrumenter/src/instrumenter.test.ts +++ b/lib/instrumenter/src/instrumenter.test.ts @@ -133,7 +133,7 @@ describe('Instrumenter', () => { path: ['obj'], method: 'fn', interceptable: false, - state: 'done', + status: 'done', parentId: undefined, }) ); @@ -286,8 +286,8 @@ describe('Instrumenter', () => { fn('baz'); jest.runAllTimers(); expect(syncSpy).toHaveBeenCalledWith([ - { callId: 'kind--story [2] fn2', state: 'done' }, - { callId: 'kind--story [3] fn', state: 'done' }, + { callId: 'kind--story [2] fn2', status: 'done' }, + { callId: 'kind--story [3] fn', status: 'done' }, ]); }); @@ -352,7 +352,7 @@ describe('Instrumenter', () => { describe('with intercept: true', () => { const options = { intercept: true }; - it('emits a call event with exception metadata when the function throws', () => { + it('emits a call event with error data when the function throws', () => { const { fn } = instrument( { fn: () => { @@ -369,7 +369,6 @@ describe('Instrumenter', () => { name: 'Error', message: 'Boom!', stack: expect.stringContaining('Error: Boom!'), - callId: 'kind--story [0] fn', }, }) ); diff --git a/lib/instrumenter/src/instrumenter.ts b/lib/instrumenter/src/instrumenter.ts index 3481686b9a18..1e5684f3930d 100644 --- a/lib/instrumenter/src/instrumenter.ts +++ b/lib/instrumenter/src/instrumenter.ts @@ -441,7 +441,7 @@ export class Instrumenter { ...finalArgs.map((arg: any) => { if (typeof arg !== 'function' || Object.keys(arg).length) return arg; return (...args: any) => { - const { cursor, parentId } = call; + const { cursor, parentId } = this.getState(call.storyId); this.setState(call.storyId, { cursor: 0, parentId: call.id }); const restore = () => this.setState(call.storyId, { cursor, parentId }); const res = arg(...args); From 032241cfc74cec698ced2f987a8aea8582235513 Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Mon, 15 Nov 2021 17:37:24 +0100 Subject: [PATCH 021/259] Fix multiple log lines in callback --- .../components/AccountForm/addon-interactions.stories.tsx | 1 + lib/instrumenter/src/instrumenter.ts | 5 +---- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/addons/interactions/src/components/AccountForm/addon-interactions.stories.tsx b/addons/interactions/src/components/AccountForm/addon-interactions.stories.tsx index c1d32f82da9c..3c73b42bb8d8 100644 --- a/addons/interactions/src/components/AccountForm/addon-interactions.stories.tsx +++ b/addons/interactions/src/components/AccountForm/addon-interactions.stories.tsx @@ -46,6 +46,7 @@ WaitFor.play = async ({ args, canvasElement }) => { await userEvent.click(await within(canvasElement).findByText('Click')); await waitFor(async () => { await expect(args.onSubmit).toHaveBeenCalledWith(expect.stringMatching(/([A-Z])\w+/gi)); + await expect(true).toBe(true); }); }; diff --git a/lib/instrumenter/src/instrumenter.ts b/lib/instrumenter/src/instrumenter.ts index 1e5684f3930d..f52d4a8e89ad 100644 --- a/lib/instrumenter/src/instrumenter.ts +++ b/lib/instrumenter/src/instrumenter.ts @@ -260,12 +260,9 @@ export class Instrumenter { seen.add((node as CallRef).__callId__); } }); - if (call.interceptable && !seen.has(call.id) && !seen.has(call.parentId)) { + if (call.interceptable && !seen.has(call.id)) { acc.unshift({ callId: call.id, status: call.status }); seen.add(call.id); - if (call.parentId) { - seen.add(call.parentId); - } } return acc; }, []); From 4ec202dabfeeecf0713e5c2ce24e55bc5e8aafa3 Mon Sep 17 00:00:00 2001 From: Thibaud Av Date: Fri, 12 Nov 2021 20:48:16 +0100 Subject: [PATCH 022/259] feat(angular): add `styles` and `stylePreprocessorOptions` to add dedicated styles config Allow the angular project to set styles config without using `browserTarget` in order to rely on another builder's config. Very useful in the case of a library where you don't have an application but you want to configure styles in storybook like an app --- .../builders/build-storybook/index.spec.ts | 27 ++++++++++++------- .../builders/start-storybook/index.spec.ts | 27 ++++++++++++------- 2 files changed, 36 insertions(+), 18 deletions(-) diff --git a/app/angular/src/builders/build-storybook/index.spec.ts b/app/angular/src/builders/build-storybook/index.spec.ts index c1c9b784daa1..f9b4d532b8e5 100644 --- a/app/angular/src/builders/build-storybook/index.spec.ts +++ b/app/angular/src/builders/build-storybook/index.spec.ts @@ -75,14 +75,17 @@ describe('Build Storybook Builder', () => { expect(buildStandaloneMock).toHaveBeenCalledWith({ angularBrowserTarget: 'angular-cli:build-2', angularBuilderContext: expect.any(Object), + angularBuilderOptions: { + stylePreprocessorOptions: { + includePaths: [], + }, + styles: [], + }, configDir: '.storybook', - docsMode: false, loglevel: undefined, quiet: false, outputDir: 'storybook-static', mode: 'static', - compodoc: false, - compodocArgs: ['-e', 'json'], tsConfig: 'src/tsconfig.app.json', }); }); @@ -102,14 +105,17 @@ describe('Build Storybook Builder', () => { expect(buildStandaloneMock).toHaveBeenCalledWith({ angularBrowserTarget: null, angularBuilderContext: expect.any(Object), + angularBuilderOptions: { + stylePreprocessorOptions: { + includePaths: [], + }, + styles: [], + }, configDir: '.storybook', - docsMode: false, loglevel: undefined, quiet: false, outputDir: 'storybook-static', mode: 'static', - compodoc: false, - compodocArgs: ['-e', 'json'], tsConfig: 'path/to/tsConfig.json', }); }); @@ -156,14 +162,17 @@ describe('Build Storybook Builder', () => { expect(buildStandaloneMock).toHaveBeenCalledWith({ angularBrowserTarget: 'angular-cli:build-2', angularBuilderContext: expect.any(Object), + angularBuilderOptions: { + stylePreprocessorOptions: { + includePaths: [], + }, + styles: [], + }, configDir: '.storybook', - docsMode: false, loglevel: undefined, quiet: false, outputDir: 'storybook-static', mode: 'static', - compodoc: true, - compodocArgs: ['-e', 'json'], tsConfig: 'src/tsconfig.app.json', }); }); diff --git a/app/angular/src/builders/start-storybook/index.spec.ts b/app/angular/src/builders/start-storybook/index.spec.ts index 57463172af23..b5b5f88e510a 100644 --- a/app/angular/src/builders/start-storybook/index.spec.ts +++ b/app/angular/src/builders/start-storybook/index.spec.ts @@ -76,9 +76,14 @@ describe('Start Storybook Builder', () => { expect(buildStandaloneMock).toHaveBeenCalledWith({ angularBrowserTarget: 'angular-cli:build-2', angularBuilderContext: expect.any(Object), + angularBuilderOptions: { + stylePreprocessorOptions: { + includePaths: [], + }, + styles: [], + }, ci: false, configDir: '.storybook', - docsMode: false, host: 'localhost', https: false, port: 4400, @@ -87,8 +92,6 @@ describe('Start Storybook Builder', () => { sslCa: undefined, sslCert: undefined, sslKey: undefined, - compodoc: false, - compodocArgs: ['-e', 'json'], tsConfig: 'src/tsconfig.app.json', }); }); @@ -109,9 +112,14 @@ describe('Start Storybook Builder', () => { expect(buildStandaloneMock).toHaveBeenCalledWith({ angularBrowserTarget: null, angularBuilderContext: expect.any(Object), + angularBuilderOptions: { + stylePreprocessorOptions: { + includePaths: [], + }, + styles: [], + }, ci: false, configDir: '.storybook', - docsMode: false, host: 'localhost', https: false, port: 4400, @@ -120,8 +128,6 @@ describe('Start Storybook Builder', () => { sslCa: undefined, sslCert: undefined, sslKey: undefined, - compodoc: false, - compodocArgs: ['-e', 'json'], tsConfig: 'path/to/tsConfig.json', }); }); @@ -168,9 +174,14 @@ describe('Start Storybook Builder', () => { expect(buildStandaloneMock).toHaveBeenCalledWith({ angularBrowserTarget: 'angular-cli:build-2', angularBuilderContext: expect.any(Object), + angularBuilderOptions: { + stylePreprocessorOptions: { + includePaths: [], + }, + styles: [], + }, ci: false, configDir: '.storybook', - docsMode: false, host: 'localhost', https: false, port: 9009, @@ -179,8 +190,6 @@ describe('Start Storybook Builder', () => { sslCa: undefined, sslCert: undefined, sslKey: undefined, - compodoc: true, - compodocArgs: ['-e', 'json'], tsConfig: 'src/tsconfig.app.json', }); }); From 3537439378d3285c9b89757c68a078b0c2150a0b Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Tue, 16 Nov 2021 12:54:50 +0100 Subject: [PATCH 023/259] Fix type --- addons/interactions/src/mocks/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/interactions/src/mocks/index.ts b/addons/interactions/src/mocks/index.ts index fccd01107c9c..7952b6ecf896 100644 --- a/addons/interactions/src/mocks/index.ts +++ b/addons/interactions/src/mocks/index.ts @@ -3,6 +3,7 @@ import { CallStates, Call } from '@storybook/instrumenter'; export const getCall = (status: CallStates): Call => { const defaultData = { id: 'addons-interactions-accountform--standard-email-filled [3] change', + cursor: 0, path: ['fireEvent'], method: 'change', storyId: 'addons-interactions-accountform--standard-email-filled', From 69662ca18a49f9b85a9b57274b226e5269c8c382 Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Tue, 16 Nov 2021 13:40:44 +0100 Subject: [PATCH 024/259] Fix call status while debugging --- lib/instrumenter/src/instrumenter.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/instrumenter/src/instrumenter.ts b/lib/instrumenter/src/instrumenter.ts index f52d4a8e89ad..e8a3b1aec00c 100644 --- a/lib/instrumenter/src/instrumenter.ts +++ b/lib/instrumenter/src/instrumenter.ts @@ -156,7 +156,7 @@ export class Instrumenter { if (!this.getState(storyId).isDebugging) { this.setState(storyId, ({ calls }) => ({ calls: [], - shadowCalls: calls.map((call) => ({ ...call, state: CallStates.WAITING })), + shadowCalls: calls.map((call) => ({ ...call, status: CallStates.WAITING })), isDebugging: true, })); } From a2398114cb785e1339c696f2bb8f1dc6e11e2e99 Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Tue, 16 Nov 2021 16:24:16 +0100 Subject: [PATCH 025/259] Avoid TS issue --- addons/interactions/src/components/Subnav/Subnav.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/interactions/src/components/Subnav/Subnav.tsx b/addons/interactions/src/components/Subnav/Subnav.tsx index fd8639216e00..0a4a366ae0b4 100644 --- a/addons/interactions/src/components/Subnav/Subnav.tsx +++ b/addons/interactions/src/components/Subnav/Subnav.tsx @@ -55,7 +55,7 @@ const Note = styled(TooltipNote)(({ theme }) => ({ fontFamily: theme.typography.fonts.base, })); -export const StyledIconButton = styled(IconButton)(({ theme }) => ({ +export const StyledIconButton = styled(IconButton as any)(({ theme }) => ({ color: theme.color.mediumdark, margin: '0 3px', })); From 6647350efdb29f1aa963d6680f7edd2d19b8b4eb Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Thu, 18 Nov 2021 16:58:59 +0100 Subject: [PATCH 026/259] Put instrumenter in charge of which controls are enabled --- addons/interactions/src/Panel.tsx | 124 +++++++----------- .../addon-interactions.stories.tsx | 14 +- .../components/Interaction/Interaction.tsx | 21 ++- .../src/components/Subnav/Subnav.tsx | 40 +++--- lib/instrumenter/src/instrumenter.test.ts | 15 ++- lib/instrumenter/src/instrumenter.ts | 118 ++++++++++------- lib/instrumenter/src/types.ts | 39 ++++++ 7 files changed, 210 insertions(+), 161 deletions(-) diff --git a/addons/interactions/src/Panel.tsx b/addons/interactions/src/Panel.tsx index d7f44447376e..ac4de34b08aa 100644 --- a/addons/interactions/src/Panel.tsx +++ b/addons/interactions/src/Panel.tsx @@ -1,17 +1,23 @@ import global from 'global'; import * as React from 'react'; import ReactDOM from 'react-dom'; -import { useChannel, useParameter, useStorybookState } from '@storybook/api'; +import { useChannel, useParameter, StoryId } from '@storybook/api'; import { STORY_RENDER_PHASE_CHANGED } from '@storybook/core-events'; import { AddonPanel, Link, Placeholder } from '@storybook/components'; -import { EVENTS, Call, CallStates, LogItem } from '@storybook/instrumenter'; +import { EVENTS, Call, CallStates, ControlStates, LogItem } from '@storybook/instrumenter'; import { styled } from '@storybook/theming'; import { StatusIcon } from './components/StatusIcon/StatusIcon'; import { Subnav } from './components/Subnav/Subnav'; import { Interaction } from './components/Interaction/Interaction'; -const { FEATURES } = global; +export interface Controls { + start: (args: any) => void; + back: (args: any) => void; + goto: (args: any) => void; + next: (args: any) => void; + end: (args: any) => void; +} interface AddonPanelProps { active: boolean; @@ -19,27 +25,17 @@ interface AddonPanelProps { interface InteractionsPanelProps { active: boolean; + controls: Controls; + controlStates: ControlStates; interactions: (Call & { status?: CallStates })[]; - isDisabled?: boolean; - hasPrevious?: boolean; - hasNext?: boolean; fileName?: string; hasException?: boolean; isPlaying?: boolean; calls: Map; endRef?: React.Ref; - isDebuggingEnabled?: boolean; - onStart?: () => void; - onPrevious?: () => void; - onNext?: () => void; - onEnd?: () => void; onScrollToEnd?: () => void; - onInteractionClick?: (callId: string) => void; } -const pendingStates = [CallStates.ACTIVE, CallStates.WAITING]; -const completedStates = [CallStates.DONE, CallStates.ERROR]; - const TabIcon = styled(StatusIcon)({ marginLeft: 5, }); @@ -51,39 +47,27 @@ const TabStatus = ({ children }: { children: React.ReactChild }) => { export const AddonPanelPure: React.FC = React.memo( ({ + controls, + controlStates, interactions, - isDisabled, - hasPrevious, - hasNext, fileName, hasException, isPlaying, - onStart, - onPrevious, - onNext, - onEnd, onScrollToEnd, calls, - onInteractionClick, endRef, - isDebuggingEnabled, ...panelProps }) => ( - {isDebuggingEnabled && interactions.length > 0 && ( + {controls && interactions.length > 0 && ( )} @@ -92,9 +76,8 @@ export const AddonPanelPure: React.FC = React.memo( key={call.id} call={call} callsById={calls} - isDebuggingEnabled={isDebuggingEnabled} - isDisabled={isDisabled} - onClick={() => onInteractionClick(call.id)} + controls={controls} + controlStates={controlStates} /> ))}
@@ -115,8 +98,9 @@ export const AddonPanelPure: React.FC = React.memo( ); export const Panel: React.FC = (props) => { - const [isLocked, setLock] = React.useState(false); - const [isPlaying, setPlaying] = React.useState(true); + const [storyId, setStoryId] = React.useState(); + const [controlStates, setControlStates] = React.useState(); + const [isPlaying, setPlaying] = React.useState(false); const [scrollTarget, setScrollTarget] = React.useState(); // Calls are tracked in a ref so we don't needlessly rerender. @@ -136,41 +120,38 @@ export const Panel: React.FC = (props) => { return () => observer.disconnect(); }, []); - const emit = useChannel({ - [EVENTS.CALL]: setCall, - [EVENTS.SYNC]: setLog, - [EVENTS.LOCK]: setLock, - [STORY_RENDER_PHASE_CHANGED]: ({ newPhase }) => { - setLock(false); - setPlaying(newPhase === 'playing'); + const emit = useChannel( + { + [EVENTS.CALL]: setCall, + [EVENTS.SYNC]: (payload) => { + setControlStates(payload.controlStates); + setLog(payload.logItems); + }, + [STORY_RENDER_PHASE_CHANGED]: (event) => { + setStoryId(event.storyId); + setPlaying(event.newPhase === 'playing'); + }, }, - }); + [] + ); + + const controls = React.useMemo( + () => ({ + start: () => emit(EVENTS.START, { storyId }), + back: () => emit(EVENTS.BACK, { storyId }), + goto: (callId: string) => emit(EVENTS.GOTO, { storyId, callId }), + next: () => emit(EVENTS.NEXT, { storyId }), + end: () => emit(EVENTS.END, { storyId }), + }), + [storyId] + ); - const { storyId } = useStorybookState(); const storyFilePath = useParameter('fileName', ''); const [fileName] = storyFilePath.toString().split('/').slice(-1); const scrollToTarget = () => scrollTarget?.scrollIntoView({ behavior: 'smooth', block: 'end' }); - const isDebuggingEnabled = FEATURES.interactionsDebugger === true; - const showStatus = log.length > 0 && !isPlaying; - const isDebugging = log.some((item) => pendingStates.includes(item.status)); - const hasPrevious = log.some((item) => completedStates.includes(item.status)); - const hasNext = log.some((item) => item.status === CallStates.WAITING); - const hasActive = log.some((item) => item.status === CallStates.ACTIVE); const hasException = log.some((item) => item.status === CallStates.ERROR); - const isDisabled = isDebuggingEnabled - ? hasActive || isLocked || (isPlaying && !isDebugging) - : true; - - const onStart = React.useCallback(() => emit(EVENTS.START, { storyId }), [storyId]); - const onPrevious = React.useCallback(() => emit(EVENTS.BACK, { storyId }), [storyId]); - const onNext = React.useCallback(() => emit(EVENTS.NEXT, { storyId }), [storyId]); - const onEnd = React.useCallback(() => emit(EVENTS.END, { storyId }), [storyId]); - const onInteractionClick = React.useCallback( - (callId: string) => emit(EVENTS.GOTO, { storyId, callId }), - [storyId] - ); return ( @@ -179,21 +160,14 @@ export const Panel: React.FC = (props) => { (hasException ? : ` (${interactions.length})`)} diff --git a/addons/interactions/src/components/AccountForm/addon-interactions.stories.tsx b/addons/interactions/src/components/AccountForm/addon-interactions.stories.tsx index 3c73b42bb8d8..702eb694ab19 100644 --- a/addons/interactions/src/components/AccountForm/addon-interactions.stories.tsx +++ b/addons/interactions/src/components/AccountForm/addon-interactions.stories.tsx @@ -37,6 +37,19 @@ Demo.play = async ({ args, canvasElement }) => { await expect(args.onSubmit).toHaveBeenCalledWith(expect.stringMatching(/([A-Z])\w+/gi)); }; +export const FindBy: CSF2Story = (args) => { + const [isLoading, setIsLoading] = React.useState(true); + React.useEffect(() => { + setTimeout(() => setIsLoading(false), 1500); + }, []); + return isLoading ?
Loading...
: ; +}; +FindBy.play = async ({ canvasElement }) => { + const canvas = within(canvasElement); + const button = await canvas.findByRole('button'); + await expect(true).toBe(true); +}; + export const WaitFor: CSF2Story = (args) => ( ; }; WaitForElementToBeRemoved.play = async ({ canvasElement }) => { diff --git a/addons/interactions/src/components/Interaction/Interaction.tsx b/addons/interactions/src/components/Interaction/Interaction.tsx index a828a0a37982..5d4bd63e353e 100644 --- a/addons/interactions/src/components/Interaction/Interaction.tsx +++ b/addons/interactions/src/components/Interaction/Interaction.tsx @@ -1,11 +1,12 @@ import * as React from 'react'; -import { Call, CallStates } from '@storybook/instrumenter'; +import { Call, CallStates, ControlStates } from '@storybook/instrumenter'; import { styled, typography } from '@storybook/theming'; import { transparentize } from 'polished'; import { MatcherResult } from '../MatcherResult'; import { MethodCall } from '../MethodCall'; import { StatusIcon } from '../StatusIcon/StatusIcon'; +import { Controls } from '../../Panel'; const MethodCallWrapper = styled.div(() => ({ fontFamily: typography.fonts.mono, @@ -63,25 +64,23 @@ const RowMessage = styled('pre')({ export const Interaction = ({ call, callsById, - onClick, - isDisabled, - isDebuggingEnabled, + controls, + controlStates, }: { call: Call; callsById: Map; - onClick: React.MouseEventHandler; - isDisabled: boolean; - isDebuggingEnabled?: boolean; + controls: Controls; + controlStates: ControlStates; }) => { const [isHovered, setIsHovered] = React.useState(false); return ( isDebuggingEnabled && setIsHovered(true)} - onMouseLeave={() => isDebuggingEnabled && setIsHovered(false)} + onClick={() => controls.goto(call.id)} + disabled={!controlStates.goto} + onMouseEnter={() => controlStates.goto && setIsHovered(true)} + onMouseLeave={() => controlStates.goto && setIsHovered(false)} > diff --git a/addons/interactions/src/components/Subnav/Subnav.tsx b/addons/interactions/src/components/Subnav/Subnav.tsx index 0a4a366ae0b4..0c79614115d2 100644 --- a/addons/interactions/src/components/Subnav/Subnav.tsx +++ b/addons/interactions/src/components/Subnav/Subnav.tsx @@ -9,10 +9,11 @@ import { WithTooltip, Bar, } from '@storybook/components'; -import { Call, CallStates } from '@storybook/instrumenter'; +import { Call, CallStates, ControlStates } from '@storybook/instrumenter'; import { styled } from '@storybook/theming'; import { StatusBadge } from '../StatusBadge/StatusBadge'; +import { Controls } from '../../Panel'; const StyledSubnav = styled.nav(({ theme }) => ({ background: theme.background.app, @@ -28,15 +29,10 @@ const StyledSubnav = styled.nav(({ theme }) => ({ })); export interface SubnavProps { - isDisabled: boolean; - hasPrevious: boolean; - hasNext: boolean; - storyFileName?: string; + controls: Controls; + controlStates: ControlStates; status: Call['status']; - onStart: () => void; - onPrevious: () => void; - onNext: () => void; - onEnd: () => void; + storyFileName?: string; onScrollToEnd?: () => void; } @@ -106,15 +102,9 @@ const withTooltipModifiers = [ ]; export const Subnav: React.FC = ({ - isDisabled, - hasNext, - hasPrevious, - storyFileName, + controls, status, - onStart, - onPrevious, - onNext, - onEnd, + storyFileName, onScrollToEnd, }) => { const buttonText = status === CallStates.ERROR ? 'Scroll to error' : 'Scroll to end'; @@ -134,10 +124,10 @@ export const Subnav: React.FC = ({ } > - + @@ -145,10 +135,10 @@ export const Subnav: React.FC = ({ } > - + @@ -156,21 +146,21 @@ export const Subnav: React.FC = ({ } > - + } > - + diff --git a/lib/instrumenter/src/instrumenter.test.ts b/lib/instrumenter/src/instrumenter.test.ts index aa5ebb8b109c..c8a00e4f562f 100644 --- a/lib/instrumenter/src/instrumenter.test.ts +++ b/lib/instrumenter/src/instrumenter.test.ts @@ -8,7 +8,8 @@ import { } from '@storybook/core-events'; import global from 'global'; -import { EVENTS, Instrumenter, Options } from './instrumenter'; +import { EVENTS, Instrumenter } from './instrumenter'; +import { Options } from './types'; const callSpy = jest.fn(); const syncSpy = jest.fn(); @@ -285,10 +286,14 @@ describe('Instrumenter', () => { fn('foo', fn('bar')).fn2(); fn('baz'); jest.runAllTimers(); - expect(syncSpy).toHaveBeenCalledWith([ - { callId: 'kind--story [2] fn2', status: 'done' }, - { callId: 'kind--story [3] fn', status: 'done' }, - ]); + expect(syncSpy).toHaveBeenCalledWith( + expect.objectContaining({ + logItems: [ + { callId: 'kind--story [2] fn2', status: 'done' }, + { callId: 'kind--story [3] fn', status: 'done' }, + ], + }) + ); }); it('catches thrown errors and returns the error', () => { diff --git a/lib/instrumenter/src/instrumenter.ts b/lib/instrumenter/src/instrumenter.ts index e8a3b1aec00c..da10d9ef8cf6 100644 --- a/lib/instrumenter/src/instrumenter.ts +++ b/lib/instrumenter/src/instrumenter.ts @@ -9,12 +9,11 @@ import { } from '@storybook/core-events'; import global from 'global'; -import { Call, CallRef, CallStates, LogItem } from './types'; +import { Call, CallRef, CallStates, State, Options, ControlStates, LogItem } from './types'; export const EVENTS = { CALL: 'instrumenter/call', SYNC: 'instrumenter/sync', - LOCK: 'instrumenter/lock', START: 'instrumenter/start', BACK: 'instrumenter/back', GOTO: 'instrumenter/goto', @@ -22,33 +21,20 @@ export const EVENTS = { END: 'instrumenter/end', }; -export interface Options { - intercept?: boolean | ((method: string, path: Array) => boolean); - retain?: boolean; - mutate?: boolean; - path?: Array; - getArgs?: (call: Call, state: State) => Call['args']; -} - -export interface State { - renderPhase: 'loading' | 'rendering' | 'playing' | 'played' | 'completed' | 'aborted' | 'errored'; - isDebugging: boolean; - cursor: number; - calls: Call[]; - shadowCalls: Call[]; - callRefsByResult: Map; - chainedCallIds: Set; - parentId?: Call['id']; - playUntil?: Call['id']; - resolvers: Record; - syncTimeout: ReturnType; - forwardedException?: Error; -} - -export type PatchedObj = { +type PatchedObj = { [Property in keyof TObj]: TObj[Property] & { __originalFn__: PatchedObj }; }; +const debuggerDisabled = global.FEATURES?.interactionsDebugger !== true; +const controlsDisabled: ControlStates = { + debugger: !debuggerDisabled, + start: false, + back: false, + goto: false, + next: false, + end: false, +}; + const alreadyCompletedException = new Error( `This function ran after the play function completed. Did you forget to \`await\` it?` ); @@ -75,6 +61,8 @@ const construct = (obj: any) => { const getInitialState = (): State => ({ renderPhase: undefined, isDebugging: false, + isPlaying: false, + isLocked: false, cursor: 0, calls: [], shadowCalls: [], @@ -114,7 +102,15 @@ export class Instrumenter { this.state = global.window.parent.__STORYBOOK_ADDON_INTERACTIONS_INSTRUMENTER_STATE__ || {}; // When called from `start`, isDebugging will be true - const resetState = ({ storyId, isDebugging }: { storyId?: StoryId; isDebugging?: boolean }) => { + const resetState = ({ + storyId, + isPlaying = true, + isDebugging = false, + }: { + storyId?: StoryId; + isPlaying?: boolean; + isDebugging?: boolean; + }) => { const state = this.getState(storyId); this.setState(storyId, { ...getInitialState(), @@ -122,11 +118,12 @@ export class Instrumenter { shadowCalls: isDebugging ? state.shadowCalls : [], chainedCallIds: isDebugging ? state.chainedCallIds : new Set(), playUntil: isDebugging ? state.playUntil : undefined, + isPlaying, isDebugging, }); // Don't sync while debugging, as it'll cause flicker. - if (!isDebugging) this.channel.emit(EVENTS.SYNC, this.getLog(storyId)); + if (!isDebugging) this.sync(storyId); }; // A forceRemount might be triggered for debugging (on `start`), or elsewhere in Storybook. @@ -140,7 +137,11 @@ export class Instrumenter { resetState({ storyId, isDebugging }); } if (newPhase === 'played') { - this.setState(storyId, { isDebugging: false, forwardedException: undefined }); + this.setState(storyId, { + isPlaying: false, + isDebugging: false, + forwardedException: undefined, + }); // Rethrow any unhandled forwarded exception so it doesn't go unnoticed. if (forwardedException) throw forwardedException; } @@ -191,10 +192,9 @@ export class Instrumenter { const { calls, shadowCalls, resolvers } = this.getState(storyId); const call = calls.find(({ id }) => id === callId); const shadowCall = shadowCalls.find(({ id }) => id === callId); - if (!call && shadowCall) { - const nextCallId = this.getLog(storyId).find(({ status }) => status === CallStates.WAITING) - ?.callId; - if (shadowCall.id !== nextCallId) this.setState(storyId, { playUntil: shadowCall.id }); + if (!call && shadowCall && Object.values(resolvers).length > 0) { + const nextId = this.getLog(storyId).find((c) => c.status === CallStates.WAITING)?.callId; + if (shadowCall.id !== nextId) this.setState(storyId, { playUntil: shadowCall.id }); Object.values(resolvers).forEach((resolve) => resolve()); } else { start({ storyId, playUntil: callId }); @@ -202,7 +202,14 @@ export class Instrumenter { }; const next = ({ storyId }: { storyId: string }) => { - Object.values(this.getState(storyId).resolvers).forEach((resolve) => resolve()); + const { resolvers } = this.getState(storyId); + if (Object.values(resolvers).length > 0) { + Object.values(resolvers).forEach((resolve) => resolve()); + } else { + const nextId = this.getLog(storyId).find((c) => c.status === CallStates.WAITING)?.callId; + if (nextId) start({ storyId, playUntil: nextId }); + else end({ storyId }); + } }; const end = ({ storyId }: { storyId: string }) => { @@ -237,7 +244,7 @@ export class Instrumenter { acc[storyId] = Object.assign(getInitialState(), retainedState); return acc; }, {} as Record); - this.channel.emit(EVENTS.SYNC, []); + this.channel.emit(EVENTS.SYNC, { controlStates: controlsDisabled, logItems: [] }); global.window.parent.__STORYBOOK_ADDON_INTERACTIONS_INSTRUMENTER_STATE__ = this.state; } @@ -343,15 +350,14 @@ export class Instrumenter { // Instead of invoking the function, defer the function call until we continue playing. return new Promise((resolve) => { - this.channel.emit(EVENTS.LOCK, false); this.setState(call.storyId, ({ resolvers }) => ({ + isLocked: false, resolvers: { ...resolvers, [call.id]: resolve }, })); }).then(() => { - this.channel.emit(EVENTS.LOCK, true); this.setState(call.storyId, (state) => { const { [call.id]: _, ...resolvers } = state.resolvers; - return { resolvers }; + return { isLocked: true, resolvers }; }); return this.invoke(fn, call, options); }); @@ -394,7 +400,7 @@ export class Instrumenter { if (e instanceof Error) { const { name, message, stack } = e; const exception = { name, message, stack }; - this.sync({ ...info, status: CallStates.ERROR, exception }); + this.update({ ...info, status: CallStates.ERROR, exception }); // Always track errors to their originating call. this.setState(call.storyId, (state) => ({ @@ -460,14 +466,14 @@ export class Instrumenter { })); } - this.sync({ + this.update({ ...info, status: result instanceof Promise ? CallStates.ACTIVE : CallStates.DONE, }); if (result instanceof Promise) { return result.then((value) => { - this.sync({ ...info, status: CallStates.DONE }); + this.update({ ...info, status: CallStates.DONE }); return value; }, handleException); } @@ -480,10 +486,10 @@ export class Instrumenter { // Sends the call info and log to the manager. // Uses a 0ms debounce because this might get called many times in one tick. - sync(call: Call) { + update(call: Call) { clearTimeout(this.getState(call.storyId).syncTimeout); this.channel.emit(EVENTS.CALL, call); - this.setState(call.storyId, ({ calls }) => { + this.setState(call.storyId, ({ calls, isLocked }) => { // Omit earlier calls for the same ID, which may have been superceded by a later invocation. // This typically happens when calls are part of a callback which runs multiple times. const callsById = calls @@ -494,10 +500,34 @@ export class Instrumenter { calls: Object.values(callsById).sort((a, b) => a.id.localeCompare(b.id, undefined, { numeric: true }) ), - syncTimeout: setTimeout(() => this.channel.emit(EVENTS.SYNC, this.getLog(call.storyId)), 0), + syncTimeout: setTimeout(() => this.sync(call.storyId), 0), }; }); } + + sync(storyId: StoryId) { + const { isLocked, isPlaying } = this.getState(storyId); + const logItems: LogItem[] = this.getLog(storyId); + + const hasActive = logItems.some((item) => item.status === CallStates.ACTIVE); + if (debuggerDisabled || isLocked || hasActive || logItems.length === 0) { + this.channel.emit(EVENTS.SYNC, { controlStates: controlsDisabled, logItems }); + return; + } + + const hasPrevious = logItems.some((item) => + [CallStates.DONE, CallStates.ERROR].includes(item.status) + ); + const controlStates: ControlStates = { + debugger: true, + start: hasPrevious, + back: hasPrevious, + goto: true, + next: isPlaying, + end: isPlaying, + }; + this.channel.emit(EVENTS.SYNC, { controlStates, logItems }); + } } /** diff --git a/lib/instrumenter/src/types.ts b/lib/instrumenter/src/types.ts index c3a299ca61ec..d604b33b1975 100644 --- a/lib/instrumenter/src/types.ts +++ b/lib/instrumenter/src/types.ts @@ -35,7 +35,46 @@ export interface ElementRef { }; } +export interface ControlStates { + debugger: boolean; + start: boolean; + back: boolean; + goto: boolean; + next: boolean; + end: boolean; +} + export interface LogItem { callId: Call['id']; status: Call['status']; } + +export interface Payload { + controlStates: ControlStates; + logItems: LogItem[]; +} + +export interface State { + renderPhase: 'loading' | 'rendering' | 'playing' | 'played' | 'completed' | 'aborted' | 'errored'; + isDebugging: boolean; + isPlaying: boolean; + isLocked: boolean; + cursor: number; + calls: Call[]; + shadowCalls: Call[]; + callRefsByResult: Map; + chainedCallIds: Set; + parentId?: Call['id']; + playUntil?: Call['id']; + resolvers: Record; + syncTimeout: ReturnType; + forwardedException?: Error; +} + +export interface Options { + intercept?: boolean | ((method: string, path: Array) => boolean); + retain?: boolean; + mutate?: boolean; + path?: Array; + getArgs?: (call: Call, state: State) => Call['args']; +} From 29d97675d043b525246f2392d8ae935ecfd86ed3 Mon Sep 17 00:00:00 2001 From: Mark Date: Fri, 19 Nov 2021 02:05:39 -0600 Subject: [PATCH 027/259] Fix runCompodoc for windows, local compodoc, and user specified tsconfig --- .../builders/start-storybook/index.spec.ts | 20 +- .../src/builders/utils/run-compodoc.spec.ts | 91 ++ .../src/builders/utils/run-compodoc.ts | 16 +- examples/angular-cli/angular.json | 6 +- examples/angular-cli/package.json | 2 +- yarn.lock | 1275 ++++++++++++++++- 6 files changed, 1382 insertions(+), 28 deletions(-) create mode 100644 app/angular/src/builders/utils/run-compodoc.spec.ts diff --git a/app/angular/src/builders/start-storybook/index.spec.ts b/app/angular/src/builders/start-storybook/index.spec.ts index 57463172af23..4bcc56a0d9e8 100644 --- a/app/angular/src/builders/start-storybook/index.spec.ts +++ b/app/angular/src/builders/start-storybook/index.spec.ts @@ -2,6 +2,9 @@ import { Architect, createBuilder } from '@angular-devkit/architect'; import { TestingArchitectHost } from '@angular-devkit/architect/testing'; import { schema } from '@angular-devkit/core'; import * as path from 'path'; +import { platform } from 'os'; + +const shell = platform() === 'win32' ? 'powershell.exe' : 'bash'; const buildStandaloneMock = jest.fn(); jest.doMock('@storybook/angular/standalone', () => buildStandaloneMock); @@ -157,14 +160,15 @@ describe('Start Storybook Builder', () => { await run.stop(); expect(output.success).toBeTruthy(); - expect(cpSpawnMock.spawn).toHaveBeenCalledWith('compodoc', [ - '-p', - 'src/tsconfig.app.json', - '-d', - '', - '-e', - 'json', - ]); + expect(cpSpawnMock.spawn).toHaveBeenCalledWith( + 'npx', + ['compodoc', '-p', 'src/tsconfig.app.json', '-d', '', '-e', 'json'], + { + cwd: '', + env: process.env, + shell, + } + ); expect(buildStandaloneMock).toHaveBeenCalledWith({ angularBrowserTarget: 'angular-cli:build-2', angularBuilderContext: expect.any(Object), diff --git a/app/angular/src/builders/utils/run-compodoc.spec.ts b/app/angular/src/builders/utils/run-compodoc.spec.ts new file mode 100644 index 000000000000..5af485295918 --- /dev/null +++ b/app/angular/src/builders/utils/run-compodoc.spec.ts @@ -0,0 +1,91 @@ +import { BuilderContext } from '@angular-devkit/architect'; +import { LoggerApi } from '@angular-devkit/core/src/logger'; +import { take } from 'rxjs/operators'; +import { platform } from 'os'; + +const shell = platform() === 'win32' ? 'powershell.exe' : 'bash'; + +const cpSpawnMock = { + spawn: jest.fn(), +}; +jest.doMock('child_process', () => cpSpawnMock); + +const { runCompodoc } = require('./run-compodoc'); + +const builderContextLoggerMock: LoggerApi = { + createChild: jest.fn(), + log: jest.fn(), + debug: jest.fn(), + info: jest.fn(), + warn: jest.fn(), + error: jest.fn(), + fatal: jest.fn(), +}; + +describe('runCompodoc', () => { + const originalEnv = process.env; + + beforeEach(() => { + process.env = { FOO: 'bar' }; + cpSpawnMock.spawn.mockImplementation(() => ({ + stdout: { on: () => {} }, + stderr: { on: () => {} }, + on: (_event: string, cb: any) => cb(0), + })); + }); + + afterEach(() => { + process.env = originalEnv; + jest.clearAllMocks(); + }); + + it('should run compodoc with tsconfig from context', async () => { + runCompodoc( + { + compodocArgs: [], + tsconfig: 'path/to/tsconfig.json', + }, + { + workspaceRoot: 'path/to/project', + logger: builderContextLoggerMock, + } as BuilderContext + ) + .pipe(take(1)) + .subscribe(); + + expect(cpSpawnMock.spawn).toHaveBeenCalledWith( + 'npx', + ['compodoc', '-p', 'path/to/tsconfig.json', '-d', 'path/to/project'], + { + cwd: 'path/to/project', + env: { FOO: 'bar' }, + shell, + } + ); + }); + + it('should run compodoc with tsconfig from compodocArgs', async () => { + runCompodoc( + { + compodocArgs: ['-p', 'path/to/tsconfig.stories.json'], + tsconfig: 'path/to/tsconfig.json', + }, + { + workspaceRoot: 'path/to/project', + logger: builderContextLoggerMock, + } as BuilderContext + ) + .pipe(take(1)) + .subscribe(); + + expect(cpSpawnMock.spawn).toHaveBeenCalledWith( + 'npx', + ['compodoc', '-d', 'path/to/project', '-p', 'path/to/tsconfig.stories.json'], + { + cwd: 'path/to/project', + env: { FOO: 'bar' }, + shell, + } + ); + }); +}); diff --git a/app/angular/src/builders/utils/run-compodoc.ts b/app/angular/src/builders/utils/run-compodoc.ts index 76ddadc5c326..985dc1787e67 100644 --- a/app/angular/src/builders/utils/run-compodoc.ts +++ b/app/angular/src/builders/utils/run-compodoc.ts @@ -1,23 +1,33 @@ import { BuilderContext } from '@angular-devkit/architect'; import { spawn } from 'child_process'; +import { platform } from 'os'; import { Observable } from 'rxjs'; +const shell = platform() === 'win32' ? 'powershell.exe' : 'bash'; + +const hasTsConfigArg = (args: string[]) => args.indexOf('-p') !== -1; + export const runCompodoc = ( { compodocArgs, tsconfig }: { compodocArgs: string[]; tsconfig: string }, context: BuilderContext ): Observable => { return new Observable((observer) => { const finalCompodocArgs = [ + 'compodoc', // Default options - '-p', - tsconfig, + ...(hasTsConfigArg(compodocArgs) ? [] : ['-p', tsconfig]), '-d', `${context.workspaceRoot}`, ...compodocArgs, ]; try { - const child = spawn('compodoc', finalCompodocArgs); + context.logger.info(finalCompodocArgs.join(' ')); + const child = spawn('npx', finalCompodocArgs, { + cwd: context.workspaceRoot, + env: process.env, + shell, + }); child.stdout.on('data', (data) => { context.logger.info(data.toString()); diff --git a/examples/angular-cli/angular.json b/examples/angular-cli/angular.json index bc919d189431..5c21dd757026 100644 --- a/examples/angular-cli/angular.json +++ b/examples/angular-cli/angular.json @@ -79,15 +79,13 @@ "builder": "@storybook/angular:start-storybook", "options": { "browserTarget": "angular-cli:build", - "port": 4400, - "staticDir": ["src/assets"] + "port": 4400 } }, "build-storybook": { "builder": "@storybook/angular:build-storybook", "options": { - "browserTarget": "angular-cli:build", - "staticDir": ["src/assets"] + "browserTarget": "angular-cli:build" } } } diff --git a/examples/angular-cli/package.json b/examples/angular-cli/package.json index 4b93860105db..173e56906bb4 100644 --- a/examples/angular-cli/package.json +++ b/examples/angular-cli/package.json @@ -38,7 +38,7 @@ "@angular/cli": "^11.2.13", "@angular/compiler-cli": "^11.2.14", "@angular/elements": "^11.2.14", - "@compodoc/compodoc": "^1.1.14", + "@compodoc/compodoc": "^1.1.15", "@storybook/addon-a11y": "6.4.0-rc.3", "@storybook/addon-actions": "6.4.0-rc.3", "@storybook/addon-backgrounds": "6.4.0-rc.3", diff --git a/yarn.lock b/yarn.lock index c9aee0767256..02bbc956b89e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -484,6 +484,15 @@ __metadata: languageName: node linkType: hard +"@babel/code-frame@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/code-frame@npm:7.16.0" + dependencies: + "@babel/highlight": ^7.16.0 + checksum: 12e111dcbb568a2b625969f4021eb46845e752eb8d2637f00f9e04e4f2216572f5c38d6f278d201b8b6fadd56a855e012c97734c90fabf680783b1ff13dc6a98 + languageName: node + linkType: hard + "@babel/compat-data@npm:^7.12.1, @babel/compat-data@npm:^7.12.7, @babel/compat-data@npm:^7.13.0, @babel/compat-data@npm:^7.13.5, @babel/compat-data@npm:^7.9.0": version: 7.13.6 resolution: "@babel/compat-data@npm:7.13.6" @@ -505,6 +514,13 @@ __metadata: languageName: node linkType: hard +"@babel/compat-data@npm:^7.16.0, @babel/compat-data@npm:^7.16.4": + version: 7.16.4 + resolution: "@babel/compat-data@npm:7.16.4" + checksum: 2b4acf1353e183954d3ed4b6a0493d6077bdd3c447d6987c8b955c18c7d99a9159318430d1b6565257d4ddcaf8b1e9c85124bd73863c603b083755efe4a6f152 + languageName: node + linkType: hard + "@babel/core@npm:7.12.10": version: 7.12.10 resolution: "@babel/core@npm:7.12.10" @@ -646,6 +662,29 @@ __metadata: languageName: node linkType: hard +"@babel/core@npm:7.16.0, @babel/core@npm:^7.15.5": + version: 7.16.0 + resolution: "@babel/core@npm:7.16.0" + dependencies: + "@babel/code-frame": ^7.16.0 + "@babel/generator": ^7.16.0 + "@babel/helper-compilation-targets": ^7.16.0 + "@babel/helper-module-transforms": ^7.16.0 + "@babel/helpers": ^7.16.0 + "@babel/parser": ^7.16.0 + "@babel/template": ^7.16.0 + "@babel/traverse": ^7.16.0 + "@babel/types": ^7.16.0 + convert-source-map: ^1.7.0 + debug: ^4.1.0 + gensync: ^1.0.0-beta.2 + json5: ^2.1.2 + semver: ^6.3.0 + source-map: ^0.5.0 + checksum: ce3526f15cc9c51f12f1fa311fdd32574a7c938aa1aad02e0dff45f1ef07b4a3c2fb74163b9bdbfe3bf8081fde19cceab6409d5c461478731ecccf2e1581b244 + languageName: node + linkType: hard + "@babel/core@npm:7.9.0": version: 7.9.0 resolution: "@babel/core@npm:7.9.0" @@ -725,6 +764,17 @@ __metadata: languageName: node linkType: hard +"@babel/generator@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/generator@npm:7.16.0" + dependencies: + "@babel/types": ^7.16.0 + jsesc: ^2.5.1 + source-map: ^0.5.0 + checksum: 377f8055f1aa780a566014278b59beb0c554553d253e2be876e3f10c39eee066747690699498d0ed016e441f5285c7aaa156ba029bb13439a5e06988cfd43653 + languageName: node + linkType: hard + "@babel/helper-annotate-as-pure@npm:^7.0.0, @babel/helper-annotate-as-pure@npm:^7.10.4, @babel/helper-annotate-as-pure@npm:^7.12.13": version: 7.12.13 resolution: "@babel/helper-annotate-as-pure@npm:7.12.13" @@ -743,6 +793,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-annotate-as-pure@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/helper-annotate-as-pure@npm:7.16.0" + dependencies: + "@babel/types": ^7.16.0 + checksum: 91e665af6bf7199d68b39d68ab3583fb7e9acb7a1f88cc2924b256d48c0015c71934923a549b1065d3f8e8f9652b65b3b0205ba6412c405cf0c33bb80af30797 + languageName: node + linkType: hard + "@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.12.13": version: 7.12.13 resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.12.13" @@ -763,6 +822,16 @@ __metadata: languageName: node linkType: hard +"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.16.0" + dependencies: + "@babel/helper-explode-assignable-expression": ^7.16.0 + "@babel/types": ^7.16.0 + checksum: 994c18dda5e1811e579c1136af2898c78794dae161665bae1bc720811779a5a40a93cf0051606f9120b97031c2048cbe7ab8db575a220acacb979783168fe98d + languageName: node + linkType: hard + "@babel/helper-compilation-targets@npm:^7.12.0, @babel/helper-compilation-targets@npm:^7.12.1, @babel/helper-compilation-targets@npm:^7.12.5, @babel/helper-compilation-targets@npm:^7.13.0, @babel/helper-compilation-targets@npm:^7.8.7, @babel/helper-compilation-targets@npm:^7.9.6": version: 7.13.0 resolution: "@babel/helper-compilation-targets@npm:7.13.0" @@ -805,6 +874,20 @@ __metadata: languageName: node linkType: hard +"@babel/helper-compilation-targets@npm:^7.16.0, @babel/helper-compilation-targets@npm:^7.16.3": + version: 7.16.3 + resolution: "@babel/helper-compilation-targets@npm:7.16.3" + dependencies: + "@babel/compat-data": ^7.16.0 + "@babel/helper-validator-option": ^7.14.5 + browserslist: ^4.17.5 + semver: ^6.3.0 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 33626de16c9bf0b6f112eab84f04e8c2e8bc7fa8dd1c99b6153a8375d859a05d06645e62c0ebaf9738ceb3e7ae5f6b72bcf9d9adea1065a66674b5e5f4afa643 + languageName: node + linkType: hard + "@babel/helper-create-class-features-plugin@npm:^7.12.1, @babel/helper-create-class-features-plugin@npm:^7.13.0, @babel/helper-create-class-features-plugin@npm:^7.8.3": version: 7.13.0 resolution: "@babel/helper-create-class-features-plugin@npm:7.13.0" @@ -836,6 +919,22 @@ __metadata: languageName: node linkType: hard +"@babel/helper-create-class-features-plugin@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/helper-create-class-features-plugin@npm:7.16.0" + dependencies: + "@babel/helper-annotate-as-pure": ^7.16.0 + "@babel/helper-function-name": ^7.16.0 + "@babel/helper-member-expression-to-functions": ^7.16.0 + "@babel/helper-optimise-call-expression": ^7.16.0 + "@babel/helper-replace-supers": ^7.16.0 + "@babel/helper-split-export-declaration": ^7.16.0 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: d84e8c1615bcadd3bb6379f16817a7c7441b2f14771af0232604ae9761c4ce38ef0155db9839bce3a7ea46b74280ee96f5058678adbe727425ea7f2c9eaf12c4 + languageName: node + linkType: hard + "@babel/helper-create-regexp-features-plugin@npm:^7.12.13": version: 7.12.17 resolution: "@babel/helper-create-regexp-features-plugin@npm:7.12.17" @@ -860,6 +959,18 @@ __metadata: languageName: node linkType: hard +"@babel/helper-create-regexp-features-plugin@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.16.0" + dependencies: + "@babel/helper-annotate-as-pure": ^7.16.0 + regexpu-core: ^4.7.1 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 67d6f8c86ed9f948c338fcbb4b2c91f0fb6b67595379b0a148666ac628896f10043ec78b252162c645fe344ebe9ed93818cdd65d0a650a1fae4776fcd4b05520 + languageName: node + linkType: hard + "@babel/helper-define-polyfill-provider@npm:^0.1.2": version: 0.1.2 resolution: "@babel/helper-define-polyfill-provider@npm:0.1.2" @@ -896,6 +1007,24 @@ __metadata: languageName: node linkType: hard +"@babel/helper-define-polyfill-provider@npm:^0.3.0": + version: 0.3.0 + resolution: "@babel/helper-define-polyfill-provider@npm:0.3.0" + dependencies: + "@babel/helper-compilation-targets": ^7.13.0 + "@babel/helper-module-imports": ^7.12.13 + "@babel/helper-plugin-utils": ^7.13.0 + "@babel/traverse": ^7.13.0 + debug: ^4.1.1 + lodash.debounce: ^4.0.8 + resolve: ^1.14.2 + semver: ^6.1.2 + peerDependencies: + "@babel/core": ^7.4.0-0 + checksum: 59135ecb144646f2d3c1ceaf38a855200f0ec53d9069deee30bdb2a7971027bde771ba0f87e564119a6d8fcb09673245c15dce89dc8c182a79088b7b80c2915d + languageName: node + linkType: hard + "@babel/helper-explode-assignable-expression@npm:^7.12.13": version: 7.13.0 resolution: "@babel/helper-explode-assignable-expression@npm:7.13.0" @@ -914,6 +1043,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-explode-assignable-expression@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/helper-explode-assignable-expression@npm:7.16.0" + dependencies: + "@babel/types": ^7.16.0 + checksum: 9821d4a292b23976c5adce031cde82adf726515d6d6b6cdca7a9ed4aa00c6fc8ccd8b580a2db80a8dec96541ffd374f2f5bf8ca3c90e5cdb0a6d8338103c6efd + languageName: node + linkType: hard + "@babel/helper-function-name@npm:^7.12.13": version: 7.12.13 resolution: "@babel/helper-function-name@npm:7.12.13" @@ -936,6 +1074,17 @@ __metadata: languageName: node linkType: hard +"@babel/helper-function-name@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/helper-function-name@npm:7.16.0" + dependencies: + "@babel/helper-get-function-arity": ^7.16.0 + "@babel/template": ^7.16.0 + "@babel/types": ^7.16.0 + checksum: ffaade6be3840364d77f0ad4515c715b1787c47f4631e69de0c204a314a00862a6dc8e37d1baadbdeeb9d8bae9d943b235ae0303d3cd095bc740cf3aa8794e92 + languageName: node + linkType: hard + "@babel/helper-get-function-arity@npm:^7.12.13": version: 7.12.13 resolution: "@babel/helper-get-function-arity@npm:7.12.13" @@ -954,6 +1103,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-get-function-arity@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/helper-get-function-arity@npm:7.16.0" + dependencies: + "@babel/types": ^7.16.0 + checksum: a37fe88007b10fc2bc62b610ed1943cfd7bfb90b8321c87bd4d6dae583df04cbafc2ee58d237ebc2580cd0ffa05369f1063e3f9d51c494e821dea287a0a4911e + languageName: node + linkType: hard + "@babel/helper-hoist-variables@npm:^7.12.13": version: 7.13.0 resolution: "@babel/helper-hoist-variables@npm:7.13.0" @@ -973,6 +1131,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-hoist-variables@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/helper-hoist-variables@npm:7.16.0" + dependencies: + "@babel/types": ^7.16.0 + checksum: 0f4ada53a9901981825c73e305c04674c958b0ec367e0aef0221ec865b3620e8743f2cf3f5c29530181ee86f3b10d0e113a0e8c9e283ea7f2709134684383b1f + languageName: node + linkType: hard + "@babel/helper-member-expression-to-functions@npm:^7.13.0": version: 7.13.0 resolution: "@babel/helper-member-expression-to-functions@npm:7.13.0" @@ -1000,6 +1167,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-member-expression-to-functions@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/helper-member-expression-to-functions@npm:7.16.0" + dependencies: + "@babel/types": ^7.16.0 + checksum: 0c0f623117fff2a747f52d518351c2a75dc0fa2c0864eec2735fda9cb8fd6fc1f0fa070fe3b7a448099c0dd955a1e16574077a820b33ee32a4e6ef8de302857e + languageName: node + linkType: hard + "@babel/helper-module-imports@npm:^7.0.0, @babel/helper-module-imports@npm:^7.12.1, @babel/helper-module-imports@npm:^7.12.13, @babel/helper-module-imports@npm:^7.12.5, @babel/helper-module-imports@npm:^7.8.3": version: 7.12.13 resolution: "@babel/helper-module-imports@npm:7.12.13" @@ -1018,6 +1194,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-module-imports@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/helper-module-imports@npm:7.16.0" + dependencies: + "@babel/types": ^7.16.0 + checksum: 8d9e8c92e44f7c327e9cffd07825b488c49828ea7bd31bbfe1fb019233cab6600461a751af8b0d42340b4a3737108ba839d05fbd7ef0b716508c1c9133b93b89 + languageName: node + linkType: hard + "@babel/helper-module-transforms@npm:^7.12.1, @babel/helper-module-transforms@npm:^7.12.13, @babel/helper-module-transforms@npm:^7.13.0, @babel/helper-module-transforms@npm:^7.9.0": version: 7.13.0 resolution: "@babel/helper-module-transforms@npm:7.13.0" @@ -1067,6 +1252,22 @@ __metadata: languageName: node linkType: hard +"@babel/helper-module-transforms@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/helper-module-transforms@npm:7.16.0" + dependencies: + "@babel/helper-module-imports": ^7.16.0 + "@babel/helper-replace-supers": ^7.16.0 + "@babel/helper-simple-access": ^7.16.0 + "@babel/helper-split-export-declaration": ^7.16.0 + "@babel/helper-validator-identifier": ^7.15.7 + "@babel/template": ^7.16.0 + "@babel/traverse": ^7.16.0 + "@babel/types": ^7.16.0 + checksum: 6f88c1a6fd966676b2b306ade5acd877bad17d589c12e0945734c63a4462bd3a5babb999daea8463845e31abe92c9e297237a389c901e8d0fd7ad4a23821e70f + languageName: node + linkType: hard + "@babel/helper-optimise-call-expression@npm:^7.12.13": version: 7.12.13 resolution: "@babel/helper-optimise-call-expression@npm:7.12.13" @@ -1085,6 +1286,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-optimise-call-expression@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/helper-optimise-call-expression@npm:7.16.0" + dependencies: + "@babel/types": ^7.16.0 + checksum: 29a76903e84462aba44e13cfc0321e9eeee68bc791f414d7aa7bb3f9f3844cfcff394788dd0a3c5235ba3cefb43b125cb972784ad28268b8365425de1350fe01 + languageName: node + linkType: hard + "@babel/helper-plugin-utils@npm:7.10.4": version: 7.10.4 resolution: "@babel/helper-plugin-utils@npm:7.10.4" @@ -1128,6 +1338,17 @@ __metadata: languageName: node linkType: hard +"@babel/helper-remap-async-to-generator@npm:^7.16.0, @babel/helper-remap-async-to-generator@npm:^7.16.4": + version: 7.16.4 + resolution: "@babel/helper-remap-async-to-generator@npm:7.16.4" + dependencies: + "@babel/helper-annotate-as-pure": ^7.16.0 + "@babel/helper-wrap-function": ^7.16.0 + "@babel/types": ^7.16.0 + checksum: 09e8cdd993de30af73666bb267c41ef5182a7310ffe6b6dd450e0ce2adf29e4b72ea865c8c4faa67804af1ee172901a43320814d93737e5525efc5f5b0217d9c + languageName: node + linkType: hard + "@babel/helper-replace-supers@npm:^7.12.13, @babel/helper-replace-supers@npm:^7.13.0": version: 7.13.0 resolution: "@babel/helper-replace-supers@npm:7.13.0" @@ -1164,6 +1385,18 @@ __metadata: languageName: node linkType: hard +"@babel/helper-replace-supers@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/helper-replace-supers@npm:7.16.0" + dependencies: + "@babel/helper-member-expression-to-functions": ^7.16.0 + "@babel/helper-optimise-call-expression": ^7.16.0 + "@babel/traverse": ^7.16.0 + "@babel/types": ^7.16.0 + checksum: 52717799120c5978578c3a809544c5ba4be81e75e799e0a3abcd2eb3bc7277a118e37ccf02a6849e36144547955a7c91f909c9e103251d1249b12256cc31ca3d + languageName: node + linkType: hard + "@babel/helper-simple-access@npm:^7.12.13": version: 7.12.13 resolution: "@babel/helper-simple-access@npm:7.12.13" @@ -1182,6 +1415,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-simple-access@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/helper-simple-access@npm:7.16.0" + dependencies: + "@babel/types": ^7.16.0 + checksum: ff19387cd7df7a8c4fdf0fc459fa78beef621225ce572eed3a2188e771a5479f5d1ebccdc80e25246a41d18b7904b779207ff9a60f9d03c7c1d1b61906114738 + languageName: node + linkType: hard + "@babel/helper-skip-transparent-expression-wrappers@npm:^7.12.1": version: 7.12.1 resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.12.1" @@ -1200,6 +1442,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-skip-transparent-expression-wrappers@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.16.0" + dependencies: + "@babel/types": ^7.16.0 + checksum: d3b8668a355e82a1c18137a1d5f3d8565ec88cff464f1c0a7c6e99c4cd0d92a77aeb51ca7fa71afa3bf8c50035bc5cf25504f46e01a94b9e6a297bdf3ac35f40 + languageName: node + linkType: hard + "@babel/helper-split-export-declaration@npm:^7.12.13": version: 7.12.13 resolution: "@babel/helper-split-export-declaration@npm:7.12.13" @@ -1218,6 +1469,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-split-export-declaration@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/helper-split-export-declaration@npm:7.16.0" + dependencies: + "@babel/types": ^7.16.0 + checksum: d4c18c8feb9f115e9b75741f7daa818050a3b4adb0a3cd991d8d58da9db627cd5043e5f24f5118933a3dc8e9891adfb9c1c63929741b74b6e0aec03ac30b2702 + languageName: node + linkType: hard + "@babel/helper-validator-identifier@npm:^7.12.11": version: 7.12.11 resolution: "@babel/helper-validator-identifier@npm:7.12.11" @@ -1246,6 +1506,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-identifier@npm:^7.15.7": + version: 7.15.7 + resolution: "@babel/helper-validator-identifier@npm:7.15.7" + checksum: 398bbf808232073504426d08fa6a5ee7b70a41eda3c7a02115d9f879fbd89c057bef27e8013df2084d59eed43587dac91c915074fa8385544fae0caf03791c2b + languageName: node + linkType: hard + "@babel/helper-validator-option@npm:^7.12.1, @babel/helper-validator-option@npm:^7.12.11, @babel/helper-validator-option@npm:^7.12.17": version: 7.12.17 resolution: "@babel/helper-validator-option@npm:7.12.17" @@ -1284,6 +1551,18 @@ __metadata: languageName: node linkType: hard +"@babel/helper-wrap-function@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/helper-wrap-function@npm:7.16.0" + dependencies: + "@babel/helper-function-name": ^7.16.0 + "@babel/template": ^7.16.0 + "@babel/traverse": ^7.16.0 + "@babel/types": ^7.16.0 + checksum: 25cc560b124dd44445c607b874fba926a06544ef54906a45940bcb6895ab81f5b74759b819546e2251748582a02f07ed0360a3b4d25cd27b838fe54b24c99903 + languageName: node + linkType: hard + "@babel/helpers@npm:^7.12.1, @babel/helpers@npm:^7.12.5, @babel/helpers@npm:^7.13.0, @babel/helpers@npm:^7.9.0": version: 7.13.0 resolution: "@babel/helpers@npm:7.13.0" @@ -1306,6 +1585,17 @@ __metadata: languageName: node linkType: hard +"@babel/helpers@npm:^7.16.0": + version: 7.16.3 + resolution: "@babel/helpers@npm:7.16.3" + dependencies: + "@babel/template": ^7.16.0 + "@babel/traverse": ^7.16.3 + "@babel/types": ^7.16.0 + checksum: d31511816e4722535d45bec5331cfe3bbafb7ff681fa16234a743ba8eada24b27e89c0930f5457d6706d5c613b9f0f160804de8320c733238e5f9003c739df92 + languageName: node + linkType: hard + "@babel/highlight@npm:^7.10.4, @babel/highlight@npm:^7.12.13, @babel/highlight@npm:^7.8.3": version: 7.12.13 resolution: "@babel/highlight@npm:7.12.13" @@ -1328,6 +1618,17 @@ __metadata: languageName: node linkType: hard +"@babel/highlight@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/highlight@npm:7.16.0" + dependencies: + "@babel/helper-validator-identifier": ^7.15.7 + chalk: ^2.0.0 + js-tokens: ^4.0.0 + checksum: 47cf5ea9c18bc5cb3e469fcdc45a005d1b2d15614a55ac9fa36d38a5e02d0e402f0454080ffeee153aa164f61d2f06aa4dc98857dc2bd01e67d0c8a3be84929f + languageName: node + linkType: hard + "@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.1.6, @babel/parser@npm:^7.12.0, @babel/parser@npm:^7.12.10, @babel/parser@npm:^7.12.11, @babel/parser@npm:^7.12.13, @babel/parser@npm:^7.12.3, @babel/parser@npm:^7.12.7, @babel/parser@npm:^7.13.0, @babel/parser@npm:^7.4.3, @babel/parser@npm:^7.4.4, @babel/parser@npm:^7.4.5, @babel/parser@npm:^7.6.0, @babel/parser@npm:^7.7.0, @babel/parser@npm:^7.9.0, @babel/parser@npm:^7.9.6": version: 7.13.4 resolution: "@babel/parser@npm:7.13.4" @@ -1373,6 +1674,26 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.16.0, @babel/parser@npm:^7.16.3": + version: 7.16.4 + resolution: "@babel/parser@npm:7.16.4" + bin: + parser: ./bin/babel-parser.js + checksum: 15aede34e6129701d681deb860c5a05a955dde773ff1fa042c0a554706d4158d003389dab8f0e54a92b7b7ea20087367dcb0dfe3ba7c47600285de093beba9e5 + languageName: node + linkType: hard + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.16.2": + version: 7.16.2 + resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.16.2" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 0f7c37f50483bcdfa9df806dca5cd25a1ac3aac9a65f45f0098310258c6336c73b2f0b6997fabe409e089e0d01cebd67b416c6f926c9319192c27793aeb704f7 + languageName: node + linkType: hard + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.14.5": version: 7.14.5 resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.14.5" @@ -1386,6 +1707,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.16.0" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-skip-transparent-expression-wrappers": ^7.16.0 + "@babel/plugin-proposal-optional-chaining": ^7.16.0 + peerDependencies: + "@babel/core": ^7.13.0 + checksum: 7844afeb5b94b69de73e5cb331cbf9727e99dbc463072a68b3562b8785a498ee9823b3ffc2be2a9653ce47d6a91841b76c99b0c3479ef92446211852ad7d0fa8 + languageName: node + linkType: hard + "@babel/plugin-proposal-async-generator-functions@npm:^7.12.1, @babel/plugin-proposal-async-generator-functions@npm:^7.13.5, @babel/plugin-proposal-async-generator-functions@npm:^7.8.3": version: 7.13.5 resolution: "@babel/plugin-proposal-async-generator-functions@npm:7.13.5" @@ -1412,6 +1746,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-async-generator-functions@npm:^7.16.4": + version: 7.16.4 + resolution: "@babel/plugin-proposal-async-generator-functions@npm:7.16.4" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-remap-async-to-generator": ^7.16.4 + "@babel/plugin-syntax-async-generators": ^7.8.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 0ac30cbfca61ce7f98ff2077ab8383aeebd8b9aa36971947050396fe2255aea18e1cb4048277ea122ca0b2fe22416df89198c9b4f5421f8c6fbfaccd750f781d + languageName: node + linkType: hard + "@babel/plugin-proposal-class-properties@npm:7.12.1": version: 7.12.1 resolution: "@babel/plugin-proposal-class-properties@npm:7.12.1" @@ -1460,6 +1807,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-class-properties@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-proposal-class-properties@npm:7.16.0" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.16.0 + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 1a2d30722e0456700946d65b9d769359a33ea8b882f95b320ed3d104d84907d840f8d4e68f0c35a4b41a017b73a71dfcc24ea461fb9db10cd79b8868168e9a04 + languageName: node + linkType: hard + "@babel/plugin-proposal-class-static-block@npm:^7.14.5": version: 7.14.5 resolution: "@babel/plugin-proposal-class-static-block@npm:7.14.5" @@ -1473,6 +1832,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-class-static-block@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-proposal-class-static-block@npm:7.16.0" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.16.0 + "@babel/helper-plugin-utils": ^7.14.5 + "@babel/plugin-syntax-class-static-block": ^7.14.5 + peerDependencies: + "@babel/core": ^7.12.0 + checksum: dda182cb38dd2a33e364aaa4084dc80a96ca48f25feaca276f281b9b395871f6b2d350590ac7e7b5daa217acbfddab7ff5201b2fdc5f42051e41832ddfd0aac9 + languageName: node + linkType: hard + "@babel/plugin-proposal-decorators@npm:7.12.1": version: 7.12.1 resolution: "@babel/plugin-proposal-decorators@npm:7.12.1" @@ -1536,6 +1908,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-dynamic-import@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-proposal-dynamic-import@npm:7.16.0" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + "@babel/plugin-syntax-dynamic-import": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 45ce919eb380c16be99736f2a448e72d7ea3f83b789def943efa1a26becc8b4de3f1f70bafabf27ffcf5ca07b0a28e2f9ccee44d359dc256212562cff0a8f8ea + languageName: node + linkType: hard + "@babel/plugin-proposal-export-default-from@npm:^7.12.1": version: 7.12.13 resolution: "@babel/plugin-proposal-export-default-from@npm:7.12.13" @@ -1572,6 +1956,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-export-namespace-from@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-proposal-export-namespace-from@npm:7.16.0" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + "@babel/plugin-syntax-export-namespace-from": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 98fc95f720335bacad7c03c190ed089897afdc74565c35f312d70905029a4c330db636ed3fee0280846b6a26d122bf43f32cc93db5e5935d6b73752b0db47c9d + languageName: node + linkType: hard + "@babel/plugin-proposal-json-strings@npm:^7.12.1, @babel/plugin-proposal-json-strings@npm:^7.12.13, @babel/plugin-proposal-json-strings@npm:^7.8.3": version: 7.12.13 resolution: "@babel/plugin-proposal-json-strings@npm:7.12.13" @@ -1596,6 +1992,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-json-strings@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-proposal-json-strings@npm:7.16.0" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + "@babel/plugin-syntax-json-strings": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 8dbee87bc1c89554597b025319e9b89da2dad06799c08637b73f0ca05155e73e36384c71c7aedbf6706b08b549ec4b11ee95225f31ee8cb473dcbdaf356e38c4 + languageName: node + linkType: hard + "@babel/plugin-proposal-logical-assignment-operators@npm:^7.12.1, @babel/plugin-proposal-logical-assignment-operators@npm:^7.12.13": version: 7.12.13 resolution: "@babel/plugin-proposal-logical-assignment-operators@npm:7.12.13" @@ -1620,6 +2028,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-logical-assignment-operators@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-proposal-logical-assignment-operators@npm:7.16.0" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: f56cda4b9d747f497556bc230d7ea096a86f4523b661dc63c2e75b67bf0bdedbefa1751be48ea983b9364fea108d378f335bc2025479defb7697b3d6719d72b8 + languageName: node + linkType: hard + "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.12.1": version: 7.12.1 resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.12.1" @@ -1668,6 +2088,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.16.0" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 3982575ba6b90a7a980e9dcda91b6a3fac5d86aeded12331e44ecc996e99a4a0f742b7ed52f4cc86f3f4c39928a2fcebea8414ad63accde06101b5f9f152c845 + languageName: node + linkType: hard + "@babel/plugin-proposal-numeric-separator@npm:7.12.1": version: 7.12.1 resolution: "@babel/plugin-proposal-numeric-separator@npm:7.12.1" @@ -1716,6 +2148,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-numeric-separator@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-proposal-numeric-separator@npm:7.16.0" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + "@babel/plugin-syntax-numeric-separator": ^7.10.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: b3bbb970b3882e64af48eceb3974f933e4c76af2a6526abebd457ac834f21d976dee7bafe54d3c1287d54b7c9c3564c62a900eaa35459466f7b7e45ecf787756 + languageName: node + linkType: hard + "@babel/plugin-proposal-object-rest-spread@npm:7.12.1": version: 7.12.1 resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.12.1" @@ -1757,6 +2201,21 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-object-rest-spread@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.16.0" + dependencies: + "@babel/compat-data": ^7.16.0 + "@babel/helper-compilation-targets": ^7.16.0 + "@babel/helper-plugin-utils": ^7.14.5 + "@babel/plugin-syntax-object-rest-spread": ^7.8.3 + "@babel/plugin-transform-parameters": ^7.16.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 6e13519887919e0e2ab76bb0d49aa5555139abd46f719c25daf96fde7ac8240cabbb931ffd90095ff778ec41e03f11bd887f99bc33246b343b539ecd266e4dff + languageName: node + linkType: hard + "@babel/plugin-proposal-optional-catch-binding@npm:^7.12.1, @babel/plugin-proposal-optional-catch-binding@npm:^7.12.13, @babel/plugin-proposal-optional-catch-binding@npm:^7.8.3": version: 7.12.13 resolution: "@babel/plugin-proposal-optional-catch-binding@npm:7.12.13" @@ -1781,6 +2240,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-optional-catch-binding@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-proposal-optional-catch-binding@npm:7.16.0" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 97ecf57de7be78cac6ee9ea98c7af33957dd4a2db1808741af87eb7143d0066fd183468c526994abfdd64280c3b4aa38a12bcb3d3a4688f5c21b0dcfddeefdca + languageName: node + linkType: hard + "@babel/plugin-proposal-optional-chaining@npm:7.12.1": version: 7.12.1 resolution: "@babel/plugin-proposal-optional-chaining@npm:7.12.1" @@ -1832,6 +2303,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-optional-chaining@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-proposal-optional-chaining@npm:7.16.0" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-skip-transparent-expression-wrappers": ^7.16.0 + "@babel/plugin-syntax-optional-chaining": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: f59390575eaf3b49789e07f1a888fc8374f3eeb2f3dcf7f5624048b661e55f17d017c9a447f4c6371efb4de5499f8d89a66a634cc1e4bb6b850748d48c3b4cb9 + languageName: node + linkType: hard + "@babel/plugin-proposal-private-methods@npm:^7.12.1, @babel/plugin-proposal-private-methods@npm:^7.13.0": version: 7.13.0 resolution: "@babel/plugin-proposal-private-methods@npm:7.13.0" @@ -1856,6 +2340,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-private-methods@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-proposal-private-methods@npm:7.16.0" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.16.0 + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: e0f3c77d03ba9c2f8a5d938b61919a8abbe85d9a4542439018f633c0e53656272dcdebce0933709f43d47bdc92a853a0a31c3d60eb012e065e30db88df2898d8 + languageName: node + linkType: hard + "@babel/plugin-proposal-private-property-in-object@npm:^7.14.5": version: 7.14.5 resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.14.5" @@ -1870,6 +2366,20 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-private-property-in-object@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.16.0" + dependencies: + "@babel/helper-annotate-as-pure": ^7.16.0 + "@babel/helper-create-class-features-plugin": ^7.16.0 + "@babel/helper-plugin-utils": ^7.14.5 + "@babel/plugin-syntax-private-property-in-object": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: ebc3413180863769242ad61e5f19be58d9d41ac7ab7c6513d651d0a4f618e41412df355f137177906aac6d6c008abb0deee3597be67b517ba5ec9f127e549789 + languageName: node + linkType: hard + "@babel/plugin-proposal-unicode-property-regex@npm:^7.12.1, @babel/plugin-proposal-unicode-property-regex@npm:^7.12.13, @babel/plugin-proposal-unicode-property-regex@npm:^7.4.4, @babel/plugin-proposal-unicode-property-regex@npm:^7.8.3": version: 7.12.13 resolution: "@babel/plugin-proposal-unicode-property-regex@npm:7.12.13" @@ -1894,6 +2404,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-unicode-property-regex@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-proposal-unicode-property-regex@npm:7.16.0" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.16.0 + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: b01c002ba3fa00b71ae47d06e1186bd628a2842d5d742fb2019ef798d7e35721a526e26e4d8ae5b92ad93f863bad68c0cc7406a2634790f7a517aa60539ffc22 + languageName: node + linkType: hard + "@babel/plugin-syntax-async-generators@npm:^7.8.0, @babel/plugin-syntax-async-generators@npm:^7.8.4": version: 7.8.4 resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" @@ -2169,6 +2691,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-arrow-functions@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-transform-arrow-functions@npm:7.16.0" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 9882e4434c8a802ed69036204dc59da94ecc2ed37eb5480c92ee5ca1d381f6bba2a5dc6cf6ca44e716595096e1e6f31241cf4f0c0980cfc5725c16ca23e53d80 + languageName: node + linkType: hard + "@babel/plugin-transform-async-to-generator@npm:7.12.1": version: 7.12.1 resolution: "@babel/plugin-transform-async-to-generator@npm:7.12.1" @@ -2208,6 +2741,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-async-to-generator@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-transform-async-to-generator@npm:7.16.0" + dependencies: + "@babel/helper-module-imports": ^7.16.0 + "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-remap-async-to-generator": ^7.16.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: e4af6fb6f75cdc289ec74ffbd956a309f9bb79e2ff10481129d8269cafaf2f65c6e55e9810035e3fadb21c314ea5b733637f7c5e6e3d584cdfdecb102c5a56e8 + languageName: node + linkType: hard + "@babel/plugin-transform-block-scoped-functions@npm:^7.12.1, @babel/plugin-transform-block-scoped-functions@npm:^7.12.13, @babel/plugin-transform-block-scoped-functions@npm:^7.8.3": version: 7.12.13 resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.12.13" @@ -2230,6 +2776,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-block-scoped-functions@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.16.0" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 65841005225b704c3190b691211249354e3afec7e4bf8a7b2bcbedd28f466191a592b6e0566bbc6da536b6c4c17cd7b18be232b2688f7ebbc5340bb89adebf5a + languageName: node + linkType: hard + "@babel/plugin-transform-block-scoping@npm:^7.12.1, @babel/plugin-transform-block-scoping@npm:^7.12.11, @babel/plugin-transform-block-scoping@npm:^7.12.12, @babel/plugin-transform-block-scoping@npm:^7.12.13, @babel/plugin-transform-block-scoping@npm:^7.8.3": version: 7.12.13 resolution: "@babel/plugin-transform-block-scoping@npm:7.12.13" @@ -2263,6 +2820,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-block-scoping@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-transform-block-scoping@npm:7.16.0" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: d0a7ba830ff32bf821866f02eabd1190d1bb0ce71e2cc6b709ea2e89ba406a4f532b1e1dc50911c19970793545f0b071c6aa21ea93946db60f03a3b37516664b + languageName: node + linkType: hard + "@babel/plugin-transform-classes@npm:^7.12.1, @babel/plugin-transform-classes@npm:^7.13.0, @babel/plugin-transform-classes@npm:^7.9.0": version: 7.13.0 resolution: "@babel/plugin-transform-classes@npm:7.13.0" @@ -2297,6 +2865,23 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-classes@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-transform-classes@npm:7.16.0" + dependencies: + "@babel/helper-annotate-as-pure": ^7.16.0 + "@babel/helper-function-name": ^7.16.0 + "@babel/helper-optimise-call-expression": ^7.16.0 + "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-replace-supers": ^7.16.0 + "@babel/helper-split-export-declaration": ^7.16.0 + globals: ^11.1.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 4a25292506f656bc876a5d30e74baff854c5e187b880bdc5fdb0c01d88d9ff74fb7a08d15bb2cf28b66e3ca43756fd6440c8c4c9b523bbafca24cd8a2f0cf0f0 + languageName: node + linkType: hard + "@babel/plugin-transform-computed-properties@npm:^7.12.1, @babel/plugin-transform-computed-properties@npm:^7.13.0, @babel/plugin-transform-computed-properties@npm:^7.8.3": version: 7.13.0 resolution: "@babel/plugin-transform-computed-properties@npm:7.13.0" @@ -2319,6 +2904,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-computed-properties@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-transform-computed-properties@npm:7.16.0" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 909e5f3ad80cefc236d0f4ae2fa6caa1fd4d050bd15ebf9479349ea53a759202cb8f0e24870b8b6531a5154742394d7a7a5588ff7462d3c78cbd89699bddbbce + languageName: node + linkType: hard + "@babel/plugin-transform-destructuring@npm:^7.12.1, @babel/plugin-transform-destructuring@npm:^7.13.0, @babel/plugin-transform-destructuring@npm:^7.8.3": version: 7.13.0 resolution: "@babel/plugin-transform-destructuring@npm:7.13.0" @@ -2352,6 +2948,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-destructuring@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-transform-destructuring@npm:7.16.0" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: fb68bfe9e43ef1506e63a6a804c4e9e6b2af9c4c9c69d483e40fbb3d88a8c205e58168572e2d585407226600704895d8343d377e2bc1c01c8a61abfa8af3d91f + languageName: node + linkType: hard + "@babel/plugin-transform-dotall-regex@npm:^7.12.1, @babel/plugin-transform-dotall-regex@npm:^7.12.13, @babel/plugin-transform-dotall-regex@npm:^7.4.4, @babel/plugin-transform-dotall-regex@npm:^7.8.3": version: 7.12.13 resolution: "@babel/plugin-transform-dotall-regex@npm:7.12.13" @@ -2376,6 +2983,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-dotall-regex@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-transform-dotall-regex@npm:7.16.0" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.16.0 + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 50a24cbcc7ddce2a9d16c507de51e50d4ecb7f7b94f1726e10bf768ca556722db9b8d9525d7e44baf9f08380e3edfa89dff94cccb7eff1f6e854b3547d52e109 + languageName: node + linkType: hard + "@babel/plugin-transform-duplicate-keys@npm:^7.12.1, @babel/plugin-transform-duplicate-keys@npm:^7.12.13, @babel/plugin-transform-duplicate-keys@npm:^7.8.3": version: 7.12.13 resolution: "@babel/plugin-transform-duplicate-keys@npm:7.12.13" @@ -2398,6 +3017,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-duplicate-keys@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-transform-duplicate-keys@npm:7.16.0" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 47843841aaddd17e7f152bd97c04813fa4e1255495186989fbd75931ce0124764101a4ff17872a848123aee1654c415d553e7ef3edc3912273d081d8c4472cb2 + languageName: node + linkType: hard + "@babel/plugin-transform-exponentiation-operator@npm:^7.12.1, @babel/plugin-transform-exponentiation-operator@npm:^7.12.13, @babel/plugin-transform-exponentiation-operator@npm:^7.8.3": version: 7.12.13 resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.12.13" @@ -2422,6 +3052,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-exponentiation-operator@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.16.0" + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor": ^7.16.0 + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: acbc8c595bc3b5d2cc43624d192150729ca0cc86b7b91cfc1c955076df14f5837e8163bbf4201f8f11e5ffdfa9d7145caf8034bb3f3cc832f009f2fb19167919 + languageName: node + linkType: hard + "@babel/plugin-transform-flow-strip-types@npm:7.12.1": version: 7.12.1 resolution: "@babel/plugin-transform-flow-strip-types@npm:7.12.1" @@ -2480,6 +3122,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-for-of@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-transform-for-of@npm:7.16.0" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 0554da026dcacdb410b2287e274437219cc234bbf7106c0bbfc5aa05d75dcba2a4cdc2201c15b4e015302a1b7668e6cfa413fedf4658ddd4f98cf0c3ce437f5d + languageName: node + linkType: hard + "@babel/plugin-transform-function-name@npm:^7.12.1, @babel/plugin-transform-function-name@npm:^7.12.13, @babel/plugin-transform-function-name@npm:^7.8.3": version: 7.12.13 resolution: "@babel/plugin-transform-function-name@npm:7.12.13" @@ -2504,6 +3157,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-function-name@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-transform-function-name@npm:7.16.0" + dependencies: + "@babel/helper-function-name": ^7.16.0 + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 777e03d788ad15da13cf4076a7e9060aedda139dd00f00ba542a7cb1a532fbc4e9b19e292123d7dd028b00d81c5689a87bf4b1c517bb9310f1f873e74327be80 + languageName: node + linkType: hard + "@babel/plugin-transform-literals@npm:^7.12.1, @babel/plugin-transform-literals@npm:^7.12.13, @babel/plugin-transform-literals@npm:^7.8.3": version: 7.12.13 resolution: "@babel/plugin-transform-literals@npm:7.12.13" @@ -2526,6 +3191,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-literals@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-transform-literals@npm:7.16.0" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: d835616f9aba23b057ad57e302dd0e1f5a70c8e104cefdaa891aad6eac459262f2375e14bd8270554feb9ab66ced614d6672ed10b471350ed40e0d4925e4038d + languageName: node + linkType: hard + "@babel/plugin-transform-member-expression-literals@npm:^7.12.1, @babel/plugin-transform-member-expression-literals@npm:^7.12.13, @babel/plugin-transform-member-expression-literals@npm:^7.8.3": version: 7.12.13 resolution: "@babel/plugin-transform-member-expression-literals@npm:7.12.13" @@ -2548,6 +3224,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-member-expression-literals@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-transform-member-expression-literals@npm:7.16.0" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 34cc594ab9ebe71256dd4819b0b69f450f04d221752afcee34e608460528231467441b16f33eff6938b6feb6ecdbd56210e82f886fefe37b2f1871c6262c1c65 + languageName: node + linkType: hard + "@babel/plugin-transform-modules-amd@npm:^7.10.5, @babel/plugin-transform-modules-amd@npm:^7.12.1, @babel/plugin-transform-modules-amd@npm:^7.13.0, @babel/plugin-transform-modules-amd@npm:^7.9.0": version: 7.13.0 resolution: "@babel/plugin-transform-modules-amd@npm:7.13.0" @@ -2574,6 +3261,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-modules-amd@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-transform-modules-amd@npm:7.16.0" + dependencies: + "@babel/helper-module-transforms": ^7.16.0 + "@babel/helper-plugin-utils": ^7.14.5 + babel-plugin-dynamic-import-node: ^2.3.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: e07569e2328351d53469ff1c58625e47c50060d71d4540b49070f74010ca85b7baad67575a3e23adafea35568943904d6763354de63b9c5febb3ca53dea1720a + languageName: node + linkType: hard + "@babel/plugin-transform-modules-commonjs@npm:^7.1.0, @babel/plugin-transform-modules-commonjs@npm:^7.12.1, @babel/plugin-transform-modules-commonjs@npm:^7.13.0, @babel/plugin-transform-modules-commonjs@npm:^7.2.0, @babel/plugin-transform-modules-commonjs@npm:^7.4.4, @babel/plugin-transform-modules-commonjs@npm:^7.9.0": version: 7.13.0 resolution: "@babel/plugin-transform-modules-commonjs@npm:7.13.0" @@ -2602,6 +3302,20 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-modules-commonjs@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.16.0" + dependencies: + "@babel/helper-module-transforms": ^7.16.0 + "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-simple-access": ^7.16.0 + babel-plugin-dynamic-import-node: ^2.3.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 78889e6967c9db8b26dc4946c109f72ecd494556b4985cabf87bcd65eebb290a35f62081cdce148e6840f1f40308dd5b479de3d06816973252814d9ebf6849a9 + languageName: node + linkType: hard + "@babel/plugin-transform-modules-systemjs@npm:^7.12.1, @babel/plugin-transform-modules-systemjs@npm:^7.12.13, @babel/plugin-transform-modules-systemjs@npm:^7.9.0": version: 7.12.13 resolution: "@babel/plugin-transform-modules-systemjs@npm:7.12.13" @@ -2632,6 +3346,21 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-modules-systemjs@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.16.0" + dependencies: + "@babel/helper-hoist-variables": ^7.16.0 + "@babel/helper-module-transforms": ^7.16.0 + "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-validator-identifier": ^7.15.7 + babel-plugin-dynamic-import-node: ^2.3.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: ecb98c580ed127ddf307d30e99aba8208afd8c6387c7859b88d88ba2ac196c1ff57da585963167515077b511f1a599770e16bc9a0c18e42306b3a42eb76852c4 + languageName: node + linkType: hard + "@babel/plugin-transform-modules-umd@npm:^7.12.1, @babel/plugin-transform-modules-umd@npm:^7.13.0, @babel/plugin-transform-modules-umd@npm:^7.9.0": version: 7.13.0 resolution: "@babel/plugin-transform-modules-umd@npm:7.13.0" @@ -2656,6 +3385,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-modules-umd@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-transform-modules-umd@npm:7.16.0" + dependencies: + "@babel/helper-module-transforms": ^7.16.0 + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: a1dfe344f27c01b36b5be467a3f6879fe04651d13a07ca266a592502535a6c8a7f7a00e67bafd1cad0009d2d9f07521224ecd3864fc0bf346ea7a1de9c822052 + languageName: node + linkType: hard + "@babel/plugin-transform-named-capturing-groups-regex@npm:^7.12.1, @babel/plugin-transform-named-capturing-groups-regex@npm:^7.12.13, @babel/plugin-transform-named-capturing-groups-regex@npm:^7.8.3": version: 7.12.13 resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.12.13" @@ -2678,6 +3419,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.16.0" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.16.0 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: eee57e6110ff11044a9be84b22bc2b1952f6d9ef8d2f9af109141de763b033fa985f495cfc1d5aaf1fa9ed4fecb8efb5b332eec5582389faebce2584444ab5c3 + languageName: node + linkType: hard + "@babel/plugin-transform-new-target@npm:^7.12.1, @babel/plugin-transform-new-target@npm:^7.12.13, @babel/plugin-transform-new-target@npm:^7.8.3": version: 7.12.13 resolution: "@babel/plugin-transform-new-target@npm:7.12.13" @@ -2700,6 +3452,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-new-target@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-transform-new-target@npm:7.16.0" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: bb58042d67a5c40b57e07d31d391f2ef4b66b432e71be4893cbb9604d9c12a1cd168f05f04ae2a0ea97cd976129bccc9bbeac0e440e2a02db5a63b5d0cd0cc16 + languageName: node + linkType: hard + "@babel/plugin-transform-object-assign@npm:^7.8.3": version: 7.12.13 resolution: "@babel/plugin-transform-object-assign@npm:7.12.13" @@ -2735,6 +3498,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-object-super@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-transform-object-super@npm:7.16.0" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-replace-supers": ^7.16.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 12e79bad4b7bf5ffba7afb70fb8f5384fe5e8cd0bc876378e807362f705ce4254fd2e9b96213d1669acf139ffd36e585d806883f10f3cca941861b3ef7800c9e + languageName: node + linkType: hard + "@babel/plugin-transform-parameters@npm:^7.12.1, @babel/plugin-transform-parameters@npm:^7.13.0, @babel/plugin-transform-parameters@npm:^7.8.7": version: 7.13.0 resolution: "@babel/plugin-transform-parameters@npm:7.13.0" @@ -2757,6 +3532,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-parameters@npm:^7.16.0, @babel/plugin-transform-parameters@npm:^7.16.3": + version: 7.16.3 + resolution: "@babel/plugin-transform-parameters@npm:7.16.3" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 1d1906e3b76972a54945f6c6189b6c36a27668db0c4cbca844228ddb087c4c652e029990145ed51c4fd582bab0f8947b8be8d477989642d264f7f383cbde952a + languageName: node + linkType: hard + "@babel/plugin-transform-property-literals@npm:^7.12.1, @babel/plugin-transform-property-literals@npm:^7.12.13, @babel/plugin-transform-property-literals@npm:^7.8.3": version: 7.12.13 resolution: "@babel/plugin-transform-property-literals@npm:7.12.13" @@ -2779,6 +3565,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-property-literals@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-transform-property-literals@npm:7.16.0" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: df6c2b98d9a83101edb23ff679d639bafa86065e027caca9a8310b5b95ffb1747d11540fc82b9768924b3581c3305001c534fcaea17e28bc2437ba30dce82eff + languageName: node + linkType: hard + "@babel/plugin-transform-react-constant-elements@npm:^7.0.0, @babel/plugin-transform-react-constant-elements@npm:^7.12.1": version: 7.12.13 resolution: "@babel/plugin-transform-react-constant-elements@npm:7.12.13" @@ -2905,6 +3702,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-regenerator@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-transform-regenerator@npm:7.16.0" + dependencies: + regenerator-transform: ^0.14.2 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 341322044e5a7e56f14ce325a5fea47765c317f7b9bb31931670c53345e6282e0951dd4eaf12e826b43f33f58c4153feb45ff81bedf01f17c6e341d8ea2bbff5 + languageName: node + linkType: hard + "@babel/plugin-transform-reserved-words@npm:^7.12.1, @babel/plugin-transform-reserved-words@npm:^7.12.13, @babel/plugin-transform-reserved-words@npm:^7.8.3": version: 7.12.13 resolution: "@babel/plugin-transform-reserved-words@npm:7.12.13" @@ -2927,6 +3735,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-reserved-words@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-transform-reserved-words@npm:7.16.0" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: ee982d9a6b255447cd797c0a5d716cb2324b6c562987fada4a5419fc6dfae64f0d80ba9cb52fba37a915015c44a6f82a2b23b1b30105de91dbb51a798f17773d + languageName: node + linkType: hard + "@babel/plugin-transform-runtime@npm:7.12.1": version: 7.12.1 resolution: "@babel/plugin-transform-runtime@npm:7.12.1" @@ -3006,6 +3825,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-shorthand-properties@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-transform-shorthand-properties@npm:7.16.0" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 77237514c5293d94f0cb2d04cd8a1ede739d38262e831ca9ddaf12ed83ccb35661a23ced1a57b823f1a9daec79d6f79c34e856e01986ae5e80c3448f89e0a30f + languageName: node + linkType: hard + "@babel/plugin-transform-spread@npm:^7.12.1, @babel/plugin-transform-spread@npm:^7.13.0, @babel/plugin-transform-spread@npm:^7.8.3": version: 7.13.0 resolution: "@babel/plugin-transform-spread@npm:7.13.0" @@ -3030,6 +3860,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-spread@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-transform-spread@npm:7.16.0" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-skip-transparent-expression-wrappers": ^7.16.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 7b667202d67d5bf2aa36c66d4f7bc7cd80c77a1c522994e4ac3083155d526bedcf93e2013ac3f7d96c049a49e154f687b325bf7a54bbcb8d764ab236e2c78391 + languageName: node + linkType: hard + "@babel/plugin-transform-sticky-regex@npm:^7.12.1, @babel/plugin-transform-sticky-regex@npm:^7.12.13, @babel/plugin-transform-sticky-regex@npm:^7.12.7, @babel/plugin-transform-sticky-regex@npm:^7.8.3": version: 7.12.13 resolution: "@babel/plugin-transform-sticky-regex@npm:7.12.13" @@ -3052,6 +3894,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-sticky-regex@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-transform-sticky-regex@npm:7.16.0" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 39d54f54d17cf944f527f56bf7ef8c93bfc0b39ab00fa70dd696d9158936317e30414cc4a9ed6166704113a5f35e0483d53a8e867e5d570bbe249ffb5fefaf7b + languageName: node + linkType: hard + "@babel/plugin-transform-template-literals@npm:^7.12.1, @babel/plugin-transform-template-literals@npm:^7.13.0, @babel/plugin-transform-template-literals@npm:^7.8.3": version: 7.13.0 resolution: "@babel/plugin-transform-template-literals@npm:7.13.0" @@ -3074,6 +3927,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-template-literals@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-transform-template-literals@npm:7.16.0" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: d6e085cd2ba3f57c3e2dd2f427bd95e5df257ecdb5cf024c5067fb559945e1bcb758acde8e6f918f66c3f04faccb3a268be76b40cb2c5b784825d2d34c3fad33 + languageName: node + linkType: hard + "@babel/plugin-transform-typeof-symbol@npm:^7.12.1, @babel/plugin-transform-typeof-symbol@npm:^7.12.10, @babel/plugin-transform-typeof-symbol@npm:^7.12.13, @babel/plugin-transform-typeof-symbol@npm:^7.8.4": version: 7.12.13 resolution: "@babel/plugin-transform-typeof-symbol@npm:7.12.13" @@ -3096,6 +3960,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-typeof-symbol@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-transform-typeof-symbol@npm:7.16.0" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 8eb6ee5cb2d33146ea9e1e221b99d0e2d55abaed1792b675d498a955a841eb26031ea7807935b2ed58f198acdfcf5dad90da1c8a13ba58dd4e7c89e438e77608 + languageName: node + linkType: hard + "@babel/plugin-transform-typescript@npm:^7.12.0, @babel/plugin-transform-typescript@npm:^7.12.1, @babel/plugin-transform-typescript@npm:^7.13.0, @babel/plugin-transform-typescript@npm:^7.9.0": version: 7.13.0 resolution: "@babel/plugin-transform-typescript@npm:7.13.0" @@ -3156,6 +4031,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-unicode-escapes@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-transform-unicode-escapes@npm:7.16.0" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 9e0119156e26f6f1a48d85cd7549c50adb39e5721f000900c798884fd31b819a14e60b3359cb200a44e8ca11315dca80815971a93176acf841b167d5e823db58 + languageName: node + linkType: hard + "@babel/plugin-transform-unicode-regex@npm:^7.12.1, @babel/plugin-transform-unicode-regex@npm:^7.12.13, @babel/plugin-transform-unicode-regex@npm:^7.8.3": version: 7.12.13 resolution: "@babel/plugin-transform-unicode-regex@npm:7.12.13" @@ -3180,6 +4066,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-unicode-regex@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/plugin-transform-unicode-regex@npm:7.16.0" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.16.0 + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10f58f7312e23fa662c9456980c162c0c6010198f52f8a74c34b2a2ce8fd674ea5fc42b7b4c9d944942dda363d90ccb027e944ab2512ca55e9a670ab34ba5993 + languageName: node + linkType: hard + "@babel/polyfill@npm:^7.11.5, @babel/polyfill@npm:^7.2.5": version: 7.12.1 resolution: "@babel/polyfill@npm:7.12.1" @@ -3573,6 +4471,90 @@ __metadata: languageName: node linkType: hard +"@babel/preset-env@npm:^7.15.5": + version: 7.16.4 + resolution: "@babel/preset-env@npm:7.16.4" + dependencies: + "@babel/compat-data": ^7.16.4 + "@babel/helper-compilation-targets": ^7.16.3 + "@babel/helper-plugin-utils": ^7.14.5 + "@babel/helper-validator-option": ^7.14.5 + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.16.2 + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.16.0 + "@babel/plugin-proposal-async-generator-functions": ^7.16.4 + "@babel/plugin-proposal-class-properties": ^7.16.0 + "@babel/plugin-proposal-class-static-block": ^7.16.0 + "@babel/plugin-proposal-dynamic-import": ^7.16.0 + "@babel/plugin-proposal-export-namespace-from": ^7.16.0 + "@babel/plugin-proposal-json-strings": ^7.16.0 + "@babel/plugin-proposal-logical-assignment-operators": ^7.16.0 + "@babel/plugin-proposal-nullish-coalescing-operator": ^7.16.0 + "@babel/plugin-proposal-numeric-separator": ^7.16.0 + "@babel/plugin-proposal-object-rest-spread": ^7.16.0 + "@babel/plugin-proposal-optional-catch-binding": ^7.16.0 + "@babel/plugin-proposal-optional-chaining": ^7.16.0 + "@babel/plugin-proposal-private-methods": ^7.16.0 + "@babel/plugin-proposal-private-property-in-object": ^7.16.0 + "@babel/plugin-proposal-unicode-property-regex": ^7.16.0 + "@babel/plugin-syntax-async-generators": ^7.8.4 + "@babel/plugin-syntax-class-properties": ^7.12.13 + "@babel/plugin-syntax-class-static-block": ^7.14.5 + "@babel/plugin-syntax-dynamic-import": ^7.8.3 + "@babel/plugin-syntax-export-namespace-from": ^7.8.3 + "@babel/plugin-syntax-json-strings": ^7.8.3 + "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 + "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 + "@babel/plugin-syntax-numeric-separator": ^7.10.4 + "@babel/plugin-syntax-object-rest-spread": ^7.8.3 + "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 + "@babel/plugin-syntax-optional-chaining": ^7.8.3 + "@babel/plugin-syntax-private-property-in-object": ^7.14.5 + "@babel/plugin-syntax-top-level-await": ^7.14.5 + "@babel/plugin-transform-arrow-functions": ^7.16.0 + "@babel/plugin-transform-async-to-generator": ^7.16.0 + "@babel/plugin-transform-block-scoped-functions": ^7.16.0 + "@babel/plugin-transform-block-scoping": ^7.16.0 + "@babel/plugin-transform-classes": ^7.16.0 + "@babel/plugin-transform-computed-properties": ^7.16.0 + "@babel/plugin-transform-destructuring": ^7.16.0 + "@babel/plugin-transform-dotall-regex": ^7.16.0 + "@babel/plugin-transform-duplicate-keys": ^7.16.0 + "@babel/plugin-transform-exponentiation-operator": ^7.16.0 + "@babel/plugin-transform-for-of": ^7.16.0 + "@babel/plugin-transform-function-name": ^7.16.0 + "@babel/plugin-transform-literals": ^7.16.0 + "@babel/plugin-transform-member-expression-literals": ^7.16.0 + "@babel/plugin-transform-modules-amd": ^7.16.0 + "@babel/plugin-transform-modules-commonjs": ^7.16.0 + "@babel/plugin-transform-modules-systemjs": ^7.16.0 + "@babel/plugin-transform-modules-umd": ^7.16.0 + "@babel/plugin-transform-named-capturing-groups-regex": ^7.16.0 + "@babel/plugin-transform-new-target": ^7.16.0 + "@babel/plugin-transform-object-super": ^7.16.0 + "@babel/plugin-transform-parameters": ^7.16.3 + "@babel/plugin-transform-property-literals": ^7.16.0 + "@babel/plugin-transform-regenerator": ^7.16.0 + "@babel/plugin-transform-reserved-words": ^7.16.0 + "@babel/plugin-transform-shorthand-properties": ^7.16.0 + "@babel/plugin-transform-spread": ^7.16.0 + "@babel/plugin-transform-sticky-regex": ^7.16.0 + "@babel/plugin-transform-template-literals": ^7.16.0 + "@babel/plugin-transform-typeof-symbol": ^7.16.0 + "@babel/plugin-transform-unicode-escapes": ^7.16.0 + "@babel/plugin-transform-unicode-regex": ^7.16.0 + "@babel/preset-modules": ^0.1.5 + "@babel/types": ^7.16.0 + babel-plugin-polyfill-corejs2: ^0.3.0 + babel-plugin-polyfill-corejs3: ^0.4.0 + babel-plugin-polyfill-regenerator: ^0.3.0 + core-js-compat: ^3.19.1 + semver: ^6.3.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 6f6f3adbfc3b917dca344821b78e23a0f31beac1c519b8b3f3445002eaa48625bca720cb3a81b6f2391831ed8444234404cbb275e477539ecfc64b54b3b23c36 + languageName: node + linkType: hard + "@babel/preset-flow@npm:^7.0.0, @babel/preset-flow@npm:^7.12.1": version: 7.12.13 resolution: "@babel/preset-flow@npm:7.12.13" @@ -3600,6 +4582,21 @@ __metadata: languageName: node linkType: hard +"@babel/preset-modules@npm:^0.1.5": + version: 0.1.5 + resolution: "@babel/preset-modules@npm:0.1.5" + dependencies: + "@babel/helper-plugin-utils": ^7.0.0 + "@babel/plugin-proposal-unicode-property-regex": ^7.4.4 + "@babel/plugin-transform-dotall-regex": ^7.4.4 + "@babel/types": ^7.4.4 + esutils: ^2.0.2 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: bd90081d96b746c1940dc1ce056dee06ed3a128d20936aee1d1795199f789f9a61293ef738343ae10c6d53970c17285d5e147a945dded35423aacb75083b8a89 + languageName: node + linkType: hard + "@babel/preset-react@npm:7.12.1": version: 7.12.1 resolution: "@babel/preset-react@npm:7.12.1" @@ -3803,6 +4800,17 @@ __metadata: languageName: node linkType: hard +"@babel/template@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/template@npm:7.16.0" + dependencies: + "@babel/code-frame": ^7.16.0 + "@babel/parser": ^7.16.0 + "@babel/types": ^7.16.0 + checksum: 24f65ebd01839e5e501cd74e5466ef5dc5066bfd36ff03c44eb33a0485fd2eccbb22745c2ed6fc9ffb65e279cfc7c8c438ae72ec1892a8a103eba36f823a8dff + languageName: node + linkType: hard + "@babel/traverse@npm:^7.0.0, @babel/traverse@npm:^7.1.0, @babel/traverse@npm:^7.12.1, @babel/traverse@npm:^7.12.10, @babel/traverse@npm:^7.12.9, @babel/traverse@npm:^7.13.0, @babel/traverse@npm:^7.4.3, @babel/traverse@npm:^7.4.4, @babel/traverse@npm:^7.4.5, @babel/traverse@npm:^7.7.0, @babel/traverse@npm:^7.9.0": version: 7.13.0 resolution: "@babel/traverse@npm:7.13.0" @@ -3870,6 +4878,23 @@ __metadata: languageName: node linkType: hard +"@babel/traverse@npm:^7.16.0, @babel/traverse@npm:^7.16.3": + version: 7.16.3 + resolution: "@babel/traverse@npm:7.16.3" + dependencies: + "@babel/code-frame": ^7.16.0 + "@babel/generator": ^7.16.0 + "@babel/helper-function-name": ^7.16.0 + "@babel/helper-hoist-variables": ^7.16.0 + "@babel/helper-split-export-declaration": ^7.16.0 + "@babel/parser": ^7.16.3 + "@babel/types": ^7.16.0 + debug: ^4.1.0 + globals: ^11.1.0 + checksum: 484296dbe162446e3254a60ed2ca9efe9cf1b3960d3607b78ccaeac68b23a97166963da3df1d88fc1efb209185ef68835737794acc6504e307c512723331d099 + languageName: node + linkType: hard + "@babel/types@npm:^7.0.0, @babel/types@npm:^7.12.0, @babel/types@npm:^7.12.1, @babel/types@npm:^7.12.10, @babel/types@npm:^7.12.11, @babel/types@npm:^7.12.13, @babel/types@npm:^7.12.17, @babel/types@npm:^7.12.6, @babel/types@npm:^7.12.7, @babel/types@npm:^7.13.0, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.0, @babel/types@npm:^7.4.4, @babel/types@npm:^7.6.1, @babel/types@npm:^7.7.0, @babel/types@npm:^7.7.2, @babel/types@npm:^7.8.3, @babel/types@npm:^7.8.6, @babel/types@npm:^7.9.0, @babel/types@npm:^7.9.6": version: 7.13.0 resolution: "@babel/types@npm:7.13.0" @@ -3922,6 +4947,16 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.16.0": + version: 7.16.0 + resolution: "@babel/types@npm:7.16.0" + dependencies: + "@babel/helper-validator-identifier": ^7.15.7 + to-fast-properties: ^2.0.0 + checksum: 85109116bb5f8a5779b1ce900eb076c9035607cf354173eb9af8cfdaacc4892161f795fd062561f680ab4fd09f792db9529b4515e99c9ace2c844b21c9f5d2b0 + languageName: node + linkType: hard + "@base2/pretty-print-object@npm:1.0.1": version: 1.0.1 resolution: "@base2/pretty-print-object@npm:1.0.1" @@ -3991,6 +5026,49 @@ __metadata: languageName: node linkType: hard +"@compodoc/compodoc@npm:^1.1.15": + version: 1.1.15 + resolution: "@compodoc/compodoc@npm:1.1.15" + dependencies: + "@babel/core": ^7.15.5 + "@babel/preset-env": ^7.15.5 + "@compodoc/live-server": ^1.2.2 + "@compodoc/ngd-transformer": ^2.1.0 + chalk: ^4.1.2 + cheerio: ^1.0.0-rc.10 + chokidar: ^3.5.2 + colors: ^1.4.0 + commander: ^8.2.0 + cosmiconfig: ^7.0.1 + decache: ^4.6.0 + fancy-log: ^1.3.3 + findit2: ^2.2.3 + fs-extra: ^10.0.0 + glob: ^7.1.7 + handlebars: ^4.7.7 + html-entities: ^2.3.2 + i18next: ^20.6.1 + inside: ^1.0.0 + json5: ^2.2.0 + lodash: ^4.17.21 + loglevel: ^1.7.1 + loglevel-plugin-prefix: ^0.8.4 + lunr: ^2.3.9 + marked: ^3.0.4 + minimist: ^1.2.5 + opencollective-postinstall: ^2.0.3 + os-name: 4.0.1 + pdfmake: ^0.2.2 + semver: ^7.3.5 + traverse: ^0.6.6 + ts-morph: ^12.0.0 + uuid: ^8.3.2 + bin: + compodoc: bin/index-cli.js + checksum: c5c31e600dc8ff112c876e428b1e9fdea769579ab1faf84aadffd1a59203b3d4c1ce8d7fb07a421c5d4cd5cca9346d735606b69ad26a80dd43b0b9c2b78fa40e + languageName: node + linkType: hard + "@compodoc/live-server@npm:^1.2.2": version: 1.2.2 resolution: "@compodoc/live-server@npm:1.2.2" @@ -4470,6 +5548,18 @@ __metadata: languageName: node linkType: hard +"@foliojs-fork/pdfkit@npm:^0.13.0": + version: 0.13.0 + resolution: "@foliojs-fork/pdfkit@npm:0.13.0" + dependencies: + "@foliojs-fork/fontkit": ^1.9.1 + "@foliojs-fork/linebreak": ^1.1.1 + crypto-js: ^4.0.0 + png-js: ^1.0.0 + checksum: c20d9f0fd87b6cd58c025eb78e46c073438a1d15fc2cbe7b7f63b11231a9509d044aa9659c1396ad0128673c747aca131a4f5b87a7b7856646c2bc51290d8fcd + languageName: node + linkType: hard + "@foliojs-fork/restructure@npm:^2.0.2": version: 2.0.2 resolution: "@foliojs-fork/restructure@npm:2.0.2" @@ -9913,6 +11003,18 @@ __metadata: languageName: node linkType: hard +"@ts-morph/common@npm:~0.11.1": + version: 0.11.1 + resolution: "@ts-morph/common@npm:0.11.1" + dependencies: + fast-glob: ^3.2.7 + minimatch: ^3.0.4 + mkdirp: ^1.0.4 + path-browserify: ^1.0.1 + checksum: 436c4eb553a8e9fef6c632a8ca31e9bc21a0855b67b284ffeb6697fa9778a70a0c20fe92f379e289ccb1490799accf1cc5e99ff401be49ebcfcaa8b0cbdef554 + languageName: node + linkType: hard + "@types/anymatch@npm:*": version: 1.3.1 resolution: "@types/anymatch@npm:1.3.1" @@ -13237,7 +14339,7 @@ __metadata: "@angular/forms": ^11.2.14 "@angular/platform-browser": ^11.2.14 "@angular/platform-browser-dynamic": ^11.2.14 - "@compodoc/compodoc": ^1.1.14 + "@compodoc/compodoc": ^1.1.15 "@ngrx/store": ^10.1.2 "@storybook/addon-a11y": 6.4.0-rc.3 "@storybook/addon-actions": 6.4.0-rc.3 @@ -14581,6 +15683,19 @@ __metadata: languageName: node linkType: hard +"babel-plugin-polyfill-corejs2@npm:^0.3.0": + version: 0.3.0 + resolution: "babel-plugin-polyfill-corejs2@npm:0.3.0" + dependencies: + "@babel/compat-data": ^7.13.11 + "@babel/helper-define-polyfill-provider": ^0.3.0 + semver: ^6.1.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: e3d86452139d3fd5e385644b429e8de6f9f70673294dba070c2dcd09a2075372e2f0e8837edbfae4e862c4ff891c5a1aebbc9e92adf6ee10798a42bc6ee9e505 + languageName: node + linkType: hard + "babel-plugin-polyfill-corejs3@npm:^0.1.0, babel-plugin-polyfill-corejs3@npm:^0.1.3": version: 0.1.4 resolution: "babel-plugin-polyfill-corejs3@npm:0.1.4" @@ -14605,6 +15720,18 @@ __metadata: languageName: node linkType: hard +"babel-plugin-polyfill-corejs3@npm:^0.4.0": + version: 0.4.0 + resolution: "babel-plugin-polyfill-corejs3@npm:0.4.0" + dependencies: + "@babel/helper-define-polyfill-provider": ^0.3.0 + core-js-compat: ^3.18.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 1b18ba8925b42a70f14f64be825664ddd11cd5f53b50c2cb859d2f8eb00d62b292c5cac78cbeeb0bc7ba621826aa8674e6d9cdf7a32cece4b0d76c8263f92966 + languageName: node + linkType: hard + "babel-plugin-polyfill-regenerator@npm:^0.1.2": version: 0.1.3 resolution: "babel-plugin-polyfill-regenerator@npm:0.1.3" @@ -14627,6 +15754,17 @@ __metadata: languageName: node linkType: hard +"babel-plugin-polyfill-regenerator@npm:^0.3.0": + version: 0.3.0 + resolution: "babel-plugin-polyfill-regenerator@npm:0.3.0" + dependencies: + "@babel/helper-define-polyfill-provider": ^0.3.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 2d4b83c7ae734cf1b1a41170dfa6d044e41f2c5262c0b9d41ee1195caa61f56cd85bad2d80cfe49f4d729be45f0d03276fa33b7433379fc4f39f82eb4fad865d + languageName: node + linkType: hard + "babel-plugin-preval@npm:^5.0.0": version: 5.0.0 resolution: "babel-plugin-preval@npm:5.0.0" @@ -16103,6 +17241,21 @@ __metadata: languageName: node linkType: hard +"browserslist@npm:^4.17.5, browserslist@npm:^4.17.6": + version: 4.18.1 + resolution: "browserslist@npm:4.18.1" + dependencies: + caniuse-lite: ^1.0.30001280 + electron-to-chromium: ^1.3.896 + escalade: ^3.1.1 + node-releases: ^2.0.1 + picocolors: ^1.0.0 + bin: + browserslist: cli.js + checksum: e92013f0ff6034e7660ac16d6fbad8313882d139abfd05168406e5d950fc98a8c604d580212b044cc503e111aacc189113497f104a8855429db8654895e773d9 + languageName: node + linkType: hard + "browserstack@npm:^1.5.1": version: 1.6.1 resolution: "browserstack@npm:1.6.1" @@ -16637,6 +17790,13 @@ __metadata: languageName: node linkType: hard +"caniuse-lite@npm:^1.0.30001280": + version: 1.0.30001282 + resolution: "caniuse-lite@npm:1.0.30001282" + checksum: fdfcf4fbedc66e26f7dd8a856f5bfc60c2c303a99cf14a6f9519943710dfad98cc85357bcec13adea81ce0a5c08a9c4c5f1f50346e72f910b24c02078dbe633b + languageName: node + linkType: hard + "canonical-path@npm:1.0.0": version: 1.0.0 resolution: "canonical-path@npm:1.0.0" @@ -16737,7 +17897,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^4.1.1": +"chalk@npm:^4.1.1, chalk@npm:^4.1.2": version: 4.1.2 resolution: "chalk@npm:4.1.2" dependencies: @@ -17604,6 +18764,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:^8.2.0": + version: 8.3.0 + resolution: "commander@npm:8.3.0" + checksum: 8b043bb8322ea1c39664a1598a95e0495bfe4ca2fad0d84a92d7d1d8d213e2a155b441d2470c8e08de7c4a28cf2bc6e169211c49e1b21d9f7edc6ae4d9356060 + languageName: node + linkType: hard + "commander@npm:~2.19.0": version: 2.19.0 resolution: "commander@npm:2.19.0" @@ -18158,6 +19325,16 @@ __metadata: languageName: node linkType: hard +"core-js-compat@npm:^3.18.0, core-js-compat@npm:^3.19.1": + version: 3.19.1 + resolution: "core-js-compat@npm:3.19.1" + dependencies: + browserslist: ^4.17.6 + semver: 7.0.0 + checksum: 114a4f38a6270bf1a066ac301045502feb0835b36e342e0b09bb3ff505ddbd29e0c55cf4cc7205d7fdd2a2f28ad9fb6ed950ea7f7a2a98486bbfa83df1d759f8 + languageName: node + linkType: hard + "core-js-compat@npm:^3.6.2, core-js-compat@npm:^3.6.5, core-js-compat@npm:^3.8.0, core-js-compat@npm:^3.8.1, core-js-compat@npm:^3.9.0": version: 3.9.0 resolution: "core-js-compat@npm:3.9.0" @@ -18293,6 +19470,19 @@ __metadata: languageName: node linkType: hard +"cosmiconfig@npm:^7.0.1": + version: 7.0.1 + resolution: "cosmiconfig@npm:7.0.1" + dependencies: + "@types/parse-json": ^4.0.0 + import-fresh: ^3.2.1 + parse-json: ^5.0.0 + path-type: ^4.0.0 + yaml: ^1.10.0 + checksum: 3cd38525ba22e13da0ef9f4be131df226c94f5b96fb50f6297eb17baeedefe15cf5819f8c73cde69f71cc5034e712c86bd20c7756883dd8094087680ecc25932 + languageName: node + linkType: hard + "cp-file@npm:^7.0.0": version: 7.0.0 resolution: "cp-file@npm:7.0.0" @@ -20501,6 +21691,13 @@ __metadata: languageName: node linkType: hard +"electron-to-chromium@npm:^1.3.896": + version: 1.3.903 + resolution: "electron-to-chromium@npm:1.3.903" + checksum: 9f7409def8f36ecb5df6ad0d3fb9b79a77541a6619fcc8a6f8fe2b961d1ba1efc2bd51026fe708349ff4b4e2b0203ff8dd5a5a718ae7018eec2b92b39db40d78 + languageName: node + linkType: hard + "element-resize-detector@npm:^1.2.2": version: 1.2.2 resolution: "element-resize-detector@npm:1.2.2" @@ -26351,6 +27548,15 @@ fsevents@^1.2.7: languageName: node linkType: hard +"i18next@npm:^20.6.1": + version: 20.6.1 + resolution: "i18next@npm:20.6.1" + dependencies: + "@babel/runtime": ^7.12.0 + checksum: f34b58a2b6cfb1b3337454610878ab27e4aeba58f5a7d1f970d9c550a8239fcbd24951cb3072dab8e7bdffbdc026248681b37507665d256af177b8ca6ec7b1a8 + languageName: node + linkType: hard + "iconv-lite@npm:0.4.24, iconv-lite@npm:^0.4.24, iconv-lite@npm:^0.4.4": version: 0.4.24 resolution: "iconv-lite@npm:0.4.24" @@ -31655,6 +32861,15 @@ fsevents@^1.2.7: languageName: node linkType: hard +"marked@npm:^3.0.4": + version: 3.0.8 + resolution: "marked@npm:3.0.8" + bin: + marked: bin/marked + checksum: 29958c83ece5a318fe0f292229a4691b2f945cdb265628fecbcb9570b579937a48cdc04a0e899ae247d05d024400f24acd6fa88491e43becc9182f38e06c1de2 + languageName: node + linkType: hard + "matcher-collection@npm:^1.0.0, matcher-collection@npm:^1.1.1": version: 1.1.2 resolution: "matcher-collection@npm:1.1.2" @@ -33132,6 +34347,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"node-releases@npm:^2.0.1": + version: 2.0.1 + resolution: "node-releases@npm:2.0.1" + checksum: cb6c373458422e584b46ce18d7b5c95590fe1f31a9ec4833d3f557aff8c99a64be331cbb94ddee473f40ff17d52a907939c3f234a537da35967c58585c9ee09e + languageName: node + linkType: hard + "node-sass@npm:^4.14.1": version: 4.14.1 resolution: "node-sass@npm:4.14.1" @@ -34032,6 +35254,16 @@ fsevents@^1.2.7: languageName: node linkType: hard +"os-name@npm:4.0.1, os-name@npm:^4.0.0": + version: 4.0.1 + resolution: "os-name@npm:4.0.1" + dependencies: + macos-release: ^2.5.0 + windows-release: ^4.0.0 + checksum: 2a78bb1a25afa04ec53a972ed164948432fee93d9e039afaec3a27ffe30473ffc85afb03c0776ca3e01c8d806f99f61cb85ad3fbc060bc3e37a549c0a4867f3f + languageName: node + linkType: hard + "os-name@npm:^3.1.0": version: 3.1.0 resolution: "os-name@npm:3.1.0" @@ -34042,16 +35274,6 @@ fsevents@^1.2.7: languageName: node linkType: hard -"os-name@npm:^4.0.0": - version: 4.0.1 - resolution: "os-name@npm:4.0.1" - dependencies: - macos-release: ^2.5.0 - windows-release: ^4.0.0 - checksum: 2a78bb1a25afa04ec53a972ed164948432fee93d9e039afaec3a27ffe30473ffc85afb03c0776ca3e01c8d806f99f61cb85ad3fbc060bc3e37a549c0a4867f3f - languageName: node - linkType: hard - "os-tmpdir@npm:^1.0.0, os-tmpdir@npm:^1.0.1, os-tmpdir@npm:~1.0.1, os-tmpdir@npm:~1.0.2": version: 1.0.2 resolution: "os-tmpdir@npm:1.0.2" @@ -34935,6 +36157,18 @@ fsevents@^1.2.7: languageName: node linkType: hard +"pdfmake@npm:^0.2.2": + version: 0.2.4 + resolution: "pdfmake@npm:0.2.4" + dependencies: + "@foliojs-fork/linebreak": ^1.1.1 + "@foliojs-fork/pdfkit": ^0.13.0 + iconv-lite: ^0.6.3 + xmldoc: ^1.1.2 + checksum: b476b8a7e48b8d988413a3513031d39134efaff025b720ca6c71c8c0333c1d4321f12a849459eda49e2e69fd632933315b559a100d2f9012cc675e10b9260a32 + languageName: node + linkType: hard + "pend@npm:~1.2.0": version: 1.2.0 resolution: "pend@npm:1.2.0" @@ -34956,6 +36190,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"picocolors@npm:^1.0.0": + version: 1.0.0 + resolution: "picocolors@npm:1.0.0" + checksum: 20a5b249e331c14479d94ec6817a182fd7a5680debae82705747b2db7ec50009a5f6648d0621c561b0572703f84dbef0858abcbd5856d3c5511426afcb1961f7 + languageName: node + linkType: hard + "picomatch@npm:^2.0.4, picomatch@npm:^2.0.5, picomatch@npm:^2.2.1, picomatch@npm:^2.2.2": version: 2.2.2 resolution: "picomatch@npm:2.2.2" @@ -44080,6 +45321,16 @@ resolve@1.19.0: languageName: node linkType: hard +"ts-morph@npm:^12.0.0": + version: 12.2.0 + resolution: "ts-morph@npm:12.2.0" + dependencies: + "@ts-morph/common": ~0.11.1 + code-block-writer: ^10.1.1 + checksum: 0d9bd03877a09b5ac77c2b5245f3714f8509bed0b805b03745e74990df023f7cdb741e3af4c7c2320a48645a1ef3a556af405d01ea37648a2a3bdc0248c9ad12 + languageName: node + linkType: hard + "ts-node@npm:^9.1.0": version: 9.1.1 resolution: "ts-node@npm:9.1.1" From fc6fd841f842dbae5e3b0d661444015fec44350c Mon Sep 17 00:00:00 2001 From: Stijn Date: Mon, 22 Nov 2021 19:04:06 +0100 Subject: [PATCH 028/259] Update peer deps for @storybook angular - rxjs 7 (angular 13) - build-angular version range change from angular 12 --- app/angular/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/angular/package.json b/app/angular/package.json index 132e19c22afb..6dfd7bc4281f 100644 --- a/app/angular/package.json +++ b/app/angular/package.json @@ -99,7 +99,7 @@ }, "peerDependencies": { "@angular-devkit/architect": ">=0.8.9", - "@angular-devkit/build-angular": ">=0.8.9", + "@angular-devkit/build-angular": ">=0.8.9 || >= 12.0.0", "@angular-devkit/core": "^0.6.1 || >=7.0.0", "@angular/cli": ">=6.0.0", "@angular/common": ">=6.0.0", @@ -113,7 +113,7 @@ "@babel/core": "*", "@nrwl/workspace": ">=11.1.0", "@webcomponents/custom-elements": ">=1.4.3", - "rxjs": "^6.0.0", + "rxjs": "^6.0.0 || ^7.4.0", "typescript": "^3.4.0 || >=4.0.0", "zone.js": "^0.8.29 || ^0.9.0 || ^0.10.0 || ^0.11.0" }, From 5ec9ca1dc8cf6ce6c1cd1dc85cffb51eabdb766f Mon Sep 17 00:00:00 2001 From: Stijn Date: Mon, 22 Nov 2021 19:48:24 +0100 Subject: [PATCH 029/259] Update peer deps for @storybook angular - update yarn.lock --- yarn.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/yarn.lock b/yarn.lock index 18f82c1b760a..c5134c9dfdef 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7658,7 +7658,7 @@ __metadata: webpack: 4 peerDependencies: "@angular-devkit/architect": ">=0.8.9" - "@angular-devkit/build-angular": ">=0.8.9" + "@angular-devkit/build-angular": ">=0.8.9 || >= 12.0.0" "@angular-devkit/core": ^0.6.1 || >=7.0.0 "@angular/cli": ">=6.0.0" "@angular/common": ">=6.0.0" @@ -7672,7 +7672,7 @@ __metadata: "@babel/core": "*" "@nrwl/workspace": ">=11.1.0" "@webcomponents/custom-elements": ">=1.4.3" - rxjs: ^6.0.0 + rxjs: ^6.0.0 || ^7.4.0 typescript: ^3.4.0 || >=4.0.0 zone.js: ^0.8.29 || ^0.9.0 || ^0.10.0 || ^0.11.0 peerDependenciesMeta: From 7b7ebba5c2e2d800000a5d5660bcf711c257b201 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Mon, 22 Nov 2021 22:35:19 +0100 Subject: [PATCH 030/259] fix: remove unused variable --- .../interactions/src/components/Subnav/Subnav.tsx | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/addons/interactions/src/components/Subnav/Subnav.tsx b/addons/interactions/src/components/Subnav/Subnav.tsx index f1f15109e4f4..293f687e42a3 100644 --- a/addons/interactions/src/components/Subnav/Subnav.tsx +++ b/addons/interactions/src/components/Subnav/Subnav.tsx @@ -94,21 +94,6 @@ const JumpToEndButton = styled(StyledButton)({ lineHeight: '12px', }); -const withTooltipModifiers = [ - { - name: 'preventOverflow', - options: { - padding: 0, - }, - }, - { - name: 'offset', - options: { - offset: [0, -2], - }, - }, -]; - export const Subnav: React.FC = ({ isDisabled, hasNext, From 8aa18976f9cd94fd9e44b61d5c7d4a812feb79fa Mon Sep 17 00:00:00 2001 From: andrewvasilchuk Date: Tue, 23 Nov 2021 01:12:59 +0200 Subject: [PATCH 031/259] docs: fix incorrect Vue v-slot usage --- docs/snippets/vue/page-story-slots.2.js.mdx | 4 +++- docs/snippets/vue/page-story-slots.mdx-2.mdx.mdx | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/snippets/vue/page-story-slots.2.js.mdx b/docs/snippets/vue/page-story-slots.2.js.mdx index d728cd1f48ad..ff119043c287 100644 --- a/docs/snippets/vue/page-story-slots.2.js.mdx +++ b/docs/snippets/vue/page-story-slots.2.js.mdx @@ -17,7 +17,9 @@ const Template = (args, { argTypes }) => ({ props: Object.keys(argTypes), template: ` -