+
Welcome to Storybook for Web Components
+
This is a UI component dev environment for your plain HTML snippets.
+
+ We've added some basic stories inside the stories
directory.
+
+ A story is a single state of one or more UI components. You can have as many stories as you
+ want.
+
+ (Basically a story is like a visual test case.)
+
+
+ See these sample
+ stories
+
+
+ Just like that, you can add your own snippets as stories.
+
+ You can also edit those snippets and see changes right away.
+
+
+
+ Usually we create stories with smaller UI components in the app.
+ Have a look at the
+
+ Writing Stories
+
+ section in our documentation.
+
+
+
+
+`;
+
+// eslint-disable-next-line no-undef
+customElements.define('input', Welcome);
diff --git a/addons/docs/src/frameworks/web-components/__testfixtures__/lit-html-welcome/properties.snapshot b/addons/docs/src/frameworks/web-components/__testfixtures__/lit-html-welcome/properties.snapshot
new file mode 100644
index 000000000000..3ed546fa4e29
--- /dev/null
+++ b/addons/docs/src/frameworks/web-components/__testfixtures__/lit-html-welcome/properties.snapshot
@@ -0,0 +1,3 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`web-components component properties lit-html-welcome 1`] = `false`;
diff --git a/addons/docs/src/frameworks/web-components/config.js b/addons/docs/src/frameworks/web-components/config.js
index 883c269e4e9f..c14ef2f9bfa8 100644
--- a/addons/docs/src/frameworks/web-components/config.js
+++ b/addons/docs/src/frameworks/web-components/config.js
@@ -1,64 +1,14 @@
/* global window */
/* eslint-disable import/no-extraneous-dependencies */
import { addParameters } from '@storybook/client-api';
-import { getCustomElements, isValidComponent, isValidMetaData } from '@storybook/web-components';
import React from 'react';
import { render } from 'lit-html';
-
-function mapData(data) {
- return data.map(item => ({
- name: item.name,
- type: { summary: item.type },
- required: '',
- description: item.description,
- defaultValue: { summary: item.default !== undefined ? item.default : item.defaultValue },
- }));
-}
-
-function isEmpty(obj) {
- return Object.entries(obj).length === 0 && obj.constructor === Object;
-}
+import { extractProps, extractComponentDescription } from './custom-elements';
addParameters({
docs: {
- extractProps: tagName => {
- const customElements = getCustomElements();
- if (isValidComponent(tagName) && isValidMetaData(customElements)) {
- const metaData = customElements.tags.find(
- tag => tag.name.toUpperCase() === tagName.toUpperCase()
- );
- const sections = {};
- if (metaData.attributes) {
- sections.attributes = mapData(metaData.attributes);
- }
- if (metaData.properties) {
- sections.properties = mapData(metaData.properties);
- }
- if (metaData.events) {
- sections.events = mapData(metaData.events);
- }
- if (metaData.slots) {
- sections.slots = mapData(metaData.slots);
- }
- if (metaData.cssProperties) {
- sections.css = mapData(metaData.cssProperties);
- }
- return isEmpty(sections) ? false : { sections };
- }
- return false;
- },
- extractComponentDescription: tagName => {
- const customElements = getCustomElements();
- if (isValidComponent(tagName) && isValidMetaData(customElements)) {
- const metaData = customElements.tags.find(
- tag => tag.name.toUpperCase() === tagName.toUpperCase()
- );
- if (metaData && metaData.description) {
- return metaData.description;
- }
- }
- return false;
- },
+ extractProps,
+ extractComponentDescription,
inlineStories: true,
prepareForInline: storyFn => {
class Story extends React.Component {
diff --git a/addons/docs/src/frameworks/web-components/custom-elements.ts b/addons/docs/src/frameworks/web-components/custom-elements.ts
new file mode 100644
index 000000000000..421bbcf06414
--- /dev/null
+++ b/addons/docs/src/frameworks/web-components/custom-elements.ts
@@ -0,0 +1,88 @@
+/* eslint-disable import/no-extraneous-dependencies */
+import { getCustomElements, isValidComponent, isValidMetaData } from '@storybook/web-components';
+
+interface TagItem {
+ name: string;
+ type: string;
+ description: string;
+ default?: any;
+ defaultValue?: any;
+}
+
+interface Tag {
+ name: string;
+ description: string;
+ attributes?: TagItem[];
+ properties?: TagItem[];
+ events?: TagItem[];
+ slots?: TagItem[];
+ cssProperties?: TagItem[];
+}
+
+interface CustomElements {
+ tags: Tag[];
+}
+
+interface Sections {
+ attributes?: any;
+ properties?: any;
+ events?: any;
+ slots?: any;
+ css?: any;
+}
+
+function mapData(data: TagItem[]) {
+ return data.map(item => ({
+ name: item.name,
+ type: { summary: item.type },
+ required: '',
+ description: item.description,
+ defaultValue: { summary: item.default !== undefined ? item.default : item.defaultValue },
+ }));
+}
+
+function isEmpty(obj: object) {
+ return Object.entries(obj).length === 0 && obj.constructor === Object;
+}
+
+export const extractPropsFromElements = (tagName: string, customElements: CustomElements) => {
+ if (!isValidComponent(tagName) || !isValidMetaData(customElements)) {
+ return null;
+ }
+ const metaData = customElements.tags.find(
+ tag => tag.name.toUpperCase() === tagName.toUpperCase()
+ );
+ const sections: Sections = {};
+ if (metaData.attributes) {
+ sections.attributes = mapData(metaData.attributes);
+ }
+ if (metaData.properties) {
+ sections.properties = mapData(metaData.properties);
+ }
+ if (metaData.events) {
+ sections.events = mapData(metaData.events);
+ }
+ if (metaData.slots) {
+ sections.slots = mapData(metaData.slots);
+ }
+ if (metaData.cssProperties) {
+ sections.css = mapData(metaData.cssProperties);
+ }
+ return isEmpty(sections) ? false : { sections };
+};
+
+export const extractProps = (tagName: string) => {
+ const customElements: CustomElements = getCustomElements();
+ return extractPropsFromElements(tagName, customElements);
+};
+
+export const extractComponentDescription = (tagName: string) => {
+ const customElements: CustomElements = getCustomElements();
+ if (!isValidComponent(tagName) || !isValidMetaData(customElements)) {
+ return null;
+ }
+ const metaData = customElements.tags.find(
+ tag => tag.name.toUpperCase() === tagName.toUpperCase()
+ );
+ return metaData && metaData.description;
+};
diff --git a/addons/docs/src/frameworks/web-components/web-components-properties.test.ts b/addons/docs/src/frameworks/web-components/web-components-properties.test.ts
new file mode 100644
index 000000000000..30a38a879a28
--- /dev/null
+++ b/addons/docs/src/frameworks/web-components/web-components-properties.test.ts
@@ -0,0 +1,57 @@
+import 'jest-specific-snapshot';
+import path from 'path';
+import fs from 'fs';
+import tmp from 'tmp';
+import { sync as spawnSync } from 'cross-spawn';
+
+// File hierarchy:
+// __testfixtures__ / some-test-case / input.*
+const inputRegExp = /^input\..*$/;
+
+const runWebComponentsAnalyzer = (inputPath: string) => {
+ const { name: tmpDir, removeCallback } = tmp.dirSync();
+ const customElementsFile = `${tmpDir}/custom-elements.json`;
+ spawnSync('wca', ['analyze', inputPath, '--outFile', customElementsFile], {
+ stdio: 'inherit',
+ });
+ const output = fs.readFileSync(customElementsFile, 'utf8');
+ removeCallback();
+ return output;
+};
+
+describe('web-components component properties', () => {
+ // we need to mock lit-html and dynamically require custom-elements
+ // because lit-html is distributed as ESM not CJS
+ // https://github.com/Polymer/lit-html/issues/516
+ jest.mock('lit-html', () => {});
+ // eslint-disable-next-line global-require
+ const { extractPropsFromElements } = require('./custom-elements');
+
+ const fixturesDir = path.join(__dirname, '__testfixtures__');
+ fs.readdirSync(fixturesDir, { withFileTypes: true }).forEach(testEntry => {
+ if (testEntry.isDirectory()) {
+ const testDir = path.join(fixturesDir, testEntry.name);
+ const testFile = fs.readdirSync(testDir).find(fileName => inputRegExp.test(fileName));
+ if (testFile) {
+ it(testEntry.name, () => {
+ const inputPath = path.join(testDir, testFile);
+
+ // snapshot the output of wca
+ const customElementsJson = runWebComponentsAnalyzer(inputPath);
+ const customElements = JSON.parse(customElementsJson);
+ customElements.tags.forEach((tag: any) => {
+ // eslint-disable-next-line no-param-reassign
+ tag.path = 'dummy-path-to-component';
+ });
+ expect(customElements).toMatchSpecificSnapshot(
+ path.join(testDir, 'custom-elements.snapshot')
+ );
+
+ // snapshot the properties
+ const properties = extractPropsFromElements('input', customElements);
+ expect(properties).toMatchSpecificSnapshot(path.join(testDir, 'properties.snapshot'));
+ });
+ }
+ }
+ });
+});
diff --git a/addons/docs/src/lib/utils.ts b/addons/docs/src/lib/utils.ts
index 4a0af2fb7a5b..44725a086956 100644
--- a/addons/docs/src/lib/utils.ts
+++ b/addons/docs/src/lib/utils.ts
@@ -14,3 +14,5 @@ export function isTooLongForDefaultValueSummary(value: string): boolean {
export function createSummaryValue(summary: string, detail?: string): PropSummaryValue {
return { summary, detail };
}
+
+export const normalizeNewlines = (string: string) => string.replace(/\\r\\n/g, '\\n');
diff --git a/addons/docs/src/typings.d.ts b/addons/docs/src/typings.d.ts
index dc9928da3997..4a41c83bba2e 100644
--- a/addons/docs/src/typings.d.ts
+++ b/addons/docs/src/typings.d.ts
@@ -4,5 +4,10 @@ declare module '@storybook/addon-docs/blocks';
declare module 'global';
declare module 'react-is';
declare module '@egoist/vue-to-react';
-declare module "remark-slug";
-declare module "remark-external-links";
+declare module 'remark-slug';
+declare module 'remark-external-links';
+declare module 'babel-plugin-react-docgen';
+declare module 'require-from-string';
+declare module 'tmp';
+declare module 'cross-spawn';
+declare module 'styled-components';
diff --git a/addons/docs/tsconfig.json b/addons/docs/tsconfig.json
index eac4a67bed71..793e61d30a1e 100644
--- a/addons/docs/tsconfig.json
+++ b/addons/docs/tsconfig.json
@@ -2,7 +2,7 @@
"extends": "../../tsconfig.json",
"compilerOptions": {
"rootDir": "./src",
- "types": ["webpack-env", "jest"]
+ "types": ["webpack-env", "jest", "node"]
},
"include": ["src/**/*"],
"exclude": ["src/**.test.ts"]
diff --git a/app/react/package.json b/app/react/package.json
index 37f6b2115877..06f0449f6f04 100644
--- a/app/react/package.json
+++ b/app/react/package.json
@@ -43,7 +43,7 @@
"@types/webpack-env": "^1.15.1",
"babel-plugin-add-react-displayname": "^0.0.5",
"babel-plugin-named-asset-import": "^0.3.1",
- "babel-plugin-react-docgen": "^4.0.0",
+ "babel-plugin-react-docgen": "^4.1.0",
"core-js": "^3.0.1",
"global": "^4.3.2",
"lodash": "^4.17.15",
diff --git a/examples/official-storybook/main.js b/examples/official-storybook/main.js
index 0e2cf6ee5151..72365ac3100d 100644
--- a/examples/official-storybook/main.js
+++ b/examples/official-storybook/main.js
@@ -4,6 +4,7 @@ module.exports = {
'../../lib/ui/src/**/*.stories.(js|tsx|mdx)',
'../../lib/components/src/**/*.stories.(js|tsx|mdx)',
'./stories/**/*.stories.(js|tsx|mdx)',
+ './../../addons/docs/**/react-properties.stories.tsx',
],
addons: [
'@storybook/addon-docs',
diff --git a/yarn.lock b/yarn.lock
index b94ca1ccede0..dad9ebbb2192 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -387,7 +387,7 @@
lodash "^4.17.13"
source-map "^0.5.0"
-"@babel/helper-annotate-as-pure@^7.8.3":
+"@babel/helper-annotate-as-pure@^7.0.0", "@babel/helper-annotate-as-pure@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee"
integrity sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==
@@ -1725,7 +1725,7 @@
resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.7.4.tgz#f14932887422c9056b15a8d222a9074a7dfa2831"
integrity sha512-fxfMSBMX3tlIbKUdtGKxqB1fyrH6gVrX39Gsv3y8lRYKUqlgDt3UMqQyGnR1bQMa2B8aGnhLZokZgg8vT0Le+A==
-"@emotion/is-prop-valid@0.8.6", "@emotion/is-prop-valid@^0.8.6":
+"@emotion/is-prop-valid@0.8.6", "@emotion/is-prop-valid@^0.8.3", "@emotion/is-prop-valid@^0.8.6":
version "0.8.6"
resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.6.tgz#4757646f0a58e9dec614c47c838e7147d88c263c"
integrity sha512-mnZMho3Sq8BfzkYYRVc8ilQTnc8U02Ytp6J1AwM6taQStZ3AhsEJBX2LzhA/LJirNCwM2VtHL3VFIZ+sNJUgUQ==
@@ -1793,12 +1793,12 @@
"@emotion/styled-base" "^10.0.27"
babel-plugin-emotion "^10.0.27"
-"@emotion/stylis@0.8.5":
+"@emotion/stylis@0.8.5", "@emotion/stylis@^0.8.4":
version "0.8.5"
resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04"
integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==
-"@emotion/unitless@0.7.5":
+"@emotion/unitless@0.7.5", "@emotion/unitless@^0.7.4":
version "0.7.5"
resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed"
integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==
@@ -6208,7 +6208,7 @@ babel-plugin-named-asset-import@^0.3.1, babel-plugin-named-asset-import@^0.3.2,
resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.6.tgz#c9750a1b38d85112c9e166bf3ef7c5dbc605f4be"
integrity sha512-1aGDUfL1qOOIoqk9QKGIo2lANk+C7ko/fqH0uIyC71x3PEGz0uVP8ISgfEsFuG+FKmjHTvFK/nNM8dowpmUxLA==
-babel-plugin-react-docgen@^4.0.0:
+babel-plugin-react-docgen@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/babel-plugin-react-docgen/-/babel-plugin-react-docgen-4.1.0.tgz#1dfa447dac9ca32d625a123df5733a9e47287c26"
integrity sha512-vzpnBlfGv8XOhJM2zbPyyqw2OLEbelgZZsaaRRTpVwNKuYuc+pUg4+dy7i9gCRms0uOQn4osX571HRcCJMJCmA==
@@ -6222,6 +6222,16 @@ babel-plugin-require-context-hook@^1.0.0:
resolved "https://registry.yarnpkg.com/babel-plugin-require-context-hook/-/babel-plugin-require-context-hook-1.0.0.tgz#3f0e7cce87c338f53639b948632fd4e73834632d"
integrity sha512-EMZD1563QUqLhzrqcThk759RhuNVX/ZJdrtGK6drwzgvnR+ARjWyXIHPbu+tUNaMGtPz/gQeAM2M6VUw2UiUeA==
+"babel-plugin-styled-components@>= 1":
+ version "1.10.7"
+ resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-1.10.7.tgz#3494e77914e9989b33cc2d7b3b29527a949d635c"
+ integrity sha512-MBMHGcIA22996n9hZRf/UJLVVgkEOITuR2SvjHLb5dSTUyR4ZRGn+ngITapes36FI3WLxZHfRhkA1ffHxihOrg==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.0.0"
+ "@babel/helper-module-imports" "^7.0.0"
+ babel-plugin-syntax-jsx "^6.18.0"
+ lodash "^4.17.11"
+
babel-plugin-syntax-async-functions@^6.8.0:
version "6.13.0"
resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95"
@@ -9961,6 +9971,15 @@ css-to-react-native@^2.2.1:
css-color-keywords "^1.0.0"
postcss-value-parser "^3.3.0"
+css-to-react-native@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.0.0.tgz#62dbe678072a824a689bcfee011fc96e02a7d756"
+ integrity sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==
+ dependencies:
+ camelize "^1.0.0"
+ css-color-keywords "^1.0.0"
+ postcss-value-parser "^4.0.2"
+
css-tree@1.0.0-alpha.29:
version "1.0.0-alpha.29"
resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.29.tgz#3fa9d4ef3142cbd1c301e7664c1f352bd82f5a39"
@@ -13058,7 +13077,7 @@ fast-glob@^2.0.2, fast-glob@^2.2.2, fast-glob@^2.2.6:
merge2 "^1.2.3"
micromatch "^3.1.10"
-fast-glob@^3.0.3, fast-glob@^3.1.1:
+fast-glob@^3.0.3, fast-glob@^3.1.0, fast-glob@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.1.1.tgz#87ee30e9e9f3eb40d6f254a7997655da753d7c82"
integrity sha512-nTCREpBY8w8r+boyFYAx21iL6faSsQynliPHM4Uf56SbkyohCNxpVPEH9xrF5TXKy+IsjkPUHDKiUkzBVRXn9g==
@@ -15007,7 +15026,7 @@ hoek@4.x.x:
resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb"
integrity sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==
-hoist-non-react-statics@^3.3.0:
+hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.3.0:
version "3.3.2"
resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==
@@ -28086,6 +28105,22 @@ style-unit@^2.0.0:
dependencies:
universal-env "^2.0.0"
+styled-components@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.0.1.tgz#57782a6471031abefb2db5820a1876ae853bc619"
+ integrity sha512-E0xKTRIjTs4DyvC1MHu/EcCXIj6+ENCP8hP01koyoADF++WdBUOrSGwU1scJRw7/YaYOhDvvoad6VlMG+0j53A==
+ dependencies:
+ "@babel/helper-module-imports" "^7.0.0"
+ "@babel/traverse" "^7.4.5"
+ "@emotion/is-prop-valid" "^0.8.3"
+ "@emotion/stylis" "^0.8.4"
+ "@emotion/unitless" "^0.7.4"
+ babel-plugin-styled-components ">= 1"
+ css-to-react-native "^3.0.0"
+ hoist-non-react-statics "^3.0.0"
+ shallowequal "^1.1.0"
+ supports-color "^5.5.0"
+
styled_string@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/styled_string/-/styled_string-0.0.1.tgz#d22782bd81295459bc4f1df18c4bad8e94dd124a"
@@ -29131,6 +29166,11 @@ ts-simple-ast@12.4.0:
tslib "^1.9.0"
typescript "2.9.1"
+ts-simple-type@~0.3.6:
+ version "0.3.7"
+ resolved "https://registry.yarnpkg.com/ts-simple-type/-/ts-simple-type-0.3.7.tgz#1e77222c3d90d7093f80a954e74c725fd99c911c"
+ integrity sha512-bDXWURwpDpe1mA5E9eldmI0Mpt9zGprhtN/ZTLOJjsAMyeMy1UT7WvGRQghYewIYBYxDZurChhe4DrsPbcCVrA==
+
tsconfig-paths-webpack-plugin@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-3.2.0.tgz#6e70bd42915ad0efb64d3385163f0c1270f3e04d"
@@ -29343,7 +29383,7 @@ typescript@3.5.3:
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.5.3.tgz#c830f657f93f1ea846819e929092f5fe5983e977"
integrity sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g==
-typescript@3.7.5, typescript@^3.2.4, typescript@^3.4.0:
+typescript@3.7.5, typescript@^3.2.4, typescript@^3.4.0, typescript@^3.5.3:
version "3.7.5"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.7.5.tgz#0692e21f65fd4108b9330238aac11dd2e177a1ae"
integrity sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw==
@@ -30267,7 +30307,7 @@ vue-class-component@^7.1.0:
resolved "https://registry.yarnpkg.com/vue-class-component/-/vue-class-component-7.2.2.tgz#aecc6d28801f64c61eb04407cf3a5476da26b0c0"
integrity sha512-QjVfjRffux0rUBNtxr1hvUxDrfifDvk9q/OSdB/sKIlfxAudDF2E1YTeiEC+qOYIOOBGWkgSKQSnast6H+S38w==
-vue-docgen-api@^4.1.0:
+vue-docgen-api@^4.7.0:
version "4.7.7"
resolved "https://registry.yarnpkg.com/vue-docgen-api/-/vue-docgen-api-4.7.7.tgz#685366830a8620a390d4bddd9afcd660757a7631"
integrity sha512-gwoqCM8NPKY6HE39fs8orpzWp9oTXpWVVUFGMFimAO+EPraqVB1dezv/g2c9s5E21hb0qryCEkeSsNmUpoRiCA==
@@ -30282,10 +30322,10 @@ vue-docgen-api@^4.1.0:
ts-map "^1.0.3"
vue-template-compiler "^2.0.0"
-vue-docgen-loader@^1.3.0-beta.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/vue-docgen-loader/-/vue-docgen-loader-1.3.0.tgz#449c2e09b1434f65ae4d8536dc63c61dbeb640b2"
- integrity sha512-K/r3IulRQlZpRIvR0Ed8vdPQCCd1WbcajOgm/4fdwtO4pWorLLX9o0YGM1rlkX3DXybqOolQ5LEh7E3kTer1qg==
+vue-docgen-loader@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/vue-docgen-loader/-/vue-docgen-loader-1.4.0.tgz#24409ddcec6c353b6e04734d9035623a9c301b9c"
+ integrity sha512-VD06bTwsQlgs0vHVcDw5a5WhyvH5Hw5LuS9Fs7OHB0VnElUB0wKJXE9t1SXEc87VOZb29kokhBRT+q1BdDI71A==
dependencies:
clone "^2.1.2"
jscodeshift "^0.7.0"
@@ -30483,6 +30523,16 @@ wcwidth@^1.0.0, wcwidth@^1.0.1:
dependencies:
defaults "^1.0.3"
+web-component-analyzer@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/web-component-analyzer/-/web-component-analyzer-1.0.3.tgz#da73dff15d6a8f4864311664476f0f436274e97d"
+ integrity sha512-QA6GVVJrKRPHLVqPv4evY0H+du1yY+E1q8c82bdY5e10+pWsRfeYA+Hsh2r8yl1EGQVC55SeV3tGvJ6+CxaH/Q==
+ dependencies:
+ fast-glob "^3.1.0"
+ ts-simple-type "~0.3.6"
+ typescript "^3.5.3"
+ yargs "^15.0.2"
+
web-namespaces@^1.0.0, web-namespaces@^1.1.2:
version "1.1.4"
resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-1.1.4.tgz#bc98a3de60dadd7faefc403d1076d529f5e030ec"
@@ -31741,7 +31791,7 @@ yargs@^14.0.0, yargs@^14.2.2:
y18n "^4.0.0"
yargs-parser "^15.0.0"
-yargs@^15.0.0:
+yargs@^15.0.0, yargs@^15.0.2:
version "15.1.0"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.1.0.tgz#e111381f5830e863a89550bd4b136bb6a5f37219"
integrity sha512-T39FNN1b6hCW4SOIk1XyTOWxtXdcen0t+XYrysQmChzSipvhBO8Bj0nK1ozAasdk24dNWuMZvr4k24nz+8HHLg==