diff --git a/.changeset/serious-eels-joke.md b/.changeset/serious-eels-joke.md new file mode 100644 index 00000000..53c4ac7f --- /dev/null +++ b/.changeset/serious-eels-joke.md @@ -0,0 +1,5 @@ +--- +'storybook-addon-markdown-docs': major +--- + +update to @web/dev-server-storybook diff --git a/packages/storybook-addon-markdown-docs/demo/.storybook/main.js b/packages/storybook-addon-markdown-docs/demo/.storybook/main.js index 66122240..60327096 100644 --- a/packages/storybook-addon-markdown-docs/demo/.storybook/main.js +++ b/packages/storybook-addon-markdown-docs/demo/.storybook/main.js @@ -1,10 +1,3 @@ module.exports = { stories: ['../stories/*.stories.{js,md}'], - // this would disable the ids of headlines - you can also use it to add your own unified/remark plugins - // setupMdjsPlugins: plugins => plugins.filter(plugin => plugin.name !== 'mdSlug'), - esDevServer: { - open: true, - watch: true, - nodeResolve: true, - }, }; diff --git a/packages/storybook-addon-markdown-docs/demo/.storybook/server.config.mjs b/packages/storybook-addon-markdown-docs/demo/.storybook/server.config.mjs new file mode 100644 index 00000000..224b3f9f --- /dev/null +++ b/packages/storybook-addon-markdown-docs/demo/.storybook/server.config.mjs @@ -0,0 +1,25 @@ +import { storybookPlugin } from '@web/dev-server-storybook'; +import * as mdjsModule from '../../index.js'; + +const { mdjsToCsf } = mdjsModule; + +export default { + rootDir: '../..', + open: true, + nodeResolve: true, + plugins: [ + { + resolveMimeType(context) { + if (context.path.endsWith('.md')) { + return 'js'; + } + }, + async transform(context) { + if (context.path.endsWith('.md')) { + context.body = await mdjsToCsf(context.body, context.path, 'web-components'); + } + }, + }, + storybookPlugin({ type: 'web-components', configDir: 'demo/.storybook' }), + ], +}; diff --git a/packages/storybook-addon-markdown-docs/package.json b/packages/storybook-addon-markdown-docs/package.json index 0290f8d3..298dcf6a 100644 --- a/packages/storybook-addon-markdown-docs/package.json +++ b/packages/storybook-addon-markdown-docs/package.json @@ -13,12 +13,12 @@ "main": "index.js", "scripts": { "build:styles": "node styles/create-global-styles.js", - "start": "npm run storybook", + "start:demo": "wds --config demo/.storybook/server.config.mjs", "storybook": "start-storybook -c demo/.storybook --root-dir ../../", "test": "npm run test:node", "test:node": "mocha test-node/**/*.test.js test-node/*.test.js", "test:update-snapshots": "export CHAI_SNAPSHOT_UPDATE=true && npm run test:node", - "test:watch": "mocha --watch" + "test:watch": "mocha test-node/**/*.test.js test-node/*.test.js --watch" }, "files": [ "*.d.ts", @@ -33,13 +33,12 @@ "@babel/parser": "^7.9.6", "@babel/plugin-syntax-import-meta": "^7.10.4", "@mdjs/core": "^0.4.1", - "@mdx-js/mdx": "^1.5.1", + "@mdx-js/mdx": "^1.6.21", "detab": "^2.0.3", "mdurl": "^1.0.1", "remark-html": "^10.0.0", "remark-parse": "^7.0.2", "remark-slug": "^5.1.2", - "storybook-prebuilt": "^1.5.0", "unified": "^8.4.2", "unist-builder": "^2.0.2", "unist-util-visit-parents": "^3.0.2" @@ -48,6 +47,8 @@ "@types/babel__core": "^7.1.3", "@types/chai": "^4.2.11", "@types/mocha": "^5.0.0", + "@web/dev-server": "^0.0.19", + "@web/dev-server-storybook": "^0.1.3", "babel-loader": "^8.0.0", "mocha-chai-snapshot": "^1.0.0" } diff --git a/packages/storybook-addon-markdown-docs/src/createStoriesCode.js b/packages/storybook-addon-markdown-docs/src/createStoriesCode.js index b26d2f71..8515b3be 100644 --- a/packages/storybook-addon-markdown-docs/src/createStoriesCode.js +++ b/packages/storybook-addon-markdown-docs/src/createStoriesCode.js @@ -12,10 +12,9 @@ function createStoriesCode(stories) { if (!code) throw new Error(`Missing code in story`); allCode += `${code}\n`; - allCode += `${key}.story = ${key}.story || {};\n`; - allCode += `${name !== key ? `${key}.story.name = ${JSON.stringify(name)};\n` : ''}`; - allCode += `${key}.story.parameters = ${key}.story.parameters || {};\n`; - allCode += `${key}.story.parameters.mdxSource = ${JSON.stringify(code.trim())};\n`; + allCode += `${name !== key ? `${key}.storyName = ${JSON.stringify(name)};\n` : ''}`; + allCode += `${key}.parameters = ${key}.parameters || {};\n`; + allCode += `${key}.parameters.mdxSource = ${JSON.stringify(code.trim())};\n`; allCode += '\n'; } return allCode; diff --git a/packages/storybook-addon-markdown-docs/src/mdToJsx.js b/packages/storybook-addon-markdown-docs/src/mdToJsx.js index 63b6f4a7..354d416e 100644 --- a/packages/storybook-addon-markdown-docs/src/mdToJsx.js +++ b/packages/storybook-addon-markdown-docs/src/mdToJsx.js @@ -10,7 +10,7 @@ const mdxToJsx = require('@mdx-js/mdx/mdx-hast-to-jsx'); */ function compileMdToJsx(markdown, filepath) { return mdx( - `import { Story, Preview, Props } from 'storybook-prebuilt/addon-docs/blocks.js';\n\n${markdown}`, + `import { Story, Preview, Props } from '@web/storybook-prebuilt/addon-docs/blocks.js';\n\n${markdown}`, { compilers: [ // custom mdx compiler which ensures mdx doesn't add a default export, @@ -27,8 +27,9 @@ function compileMdToJsx(markdown, filepath) { /** * @param {Story[]} [stories] + * @param {string} projectType */ -function createDocsPage(stories) { +function createDocsPage(stories, projectType) { /** @type {Record} */ const storyNameToKey = {}; @@ -38,8 +39,8 @@ function createDocsPage(stories) { } } - return `import * as React from 'storybook-prebuilt/react.js'; -import { mdx, AddContext } from 'storybook-prebuilt/addon-docs/blocks.js'; + return `import { React, mdx } from '@web/storybook-prebuilt/${projectType}.js'; +import { AddContext } from '@web/storybook-prebuilt/addon-docs/blocks.js'; // Setup docs page const mdxStoryNameToKey = ${JSON.stringify(storyNameToKey)}; @@ -55,10 +56,8 @@ ${ export const __page = () => { throw new Error("Docs-only story"); }; -__page.story = { - parameters: { +__page.parameters = { docsOnly: true - } }; ` : '' @@ -73,17 +72,18 @@ export default __export_default__;`; * * @param {string} markdown * @param {string} filepath + * @param {string} projectType * @param {Story[]} [stories] * @returns {Promise} */ -async function mdToJsx(markdown, filepath, stories) { +async function mdToJsx(markdown, filepath, projectType, stories) { return `/** * * The code below is generated by storybook docs. * */ -${createDocsPage(stories)} +${createDocsPage(stories, projectType)} // The docs page, markdown turned into using jsx for storybook ${await compileMdToJsx(markdown, filepath)}`; diff --git a/packages/storybook-addon-markdown-docs/src/mdjsToCsf.js b/packages/storybook-addon-markdown-docs/src/mdjsToCsf.js index fd1c001b..8a7dd3a8 100644 --- a/packages/storybook-addon-markdown-docs/src/mdjsToCsf.js +++ b/packages/storybook-addon-markdown-docs/src/mdjsToCsf.js @@ -7,15 +7,16 @@ const { jsxToJs } = require('./jsxToJs'); /** * @param {string} markdown * @param {string} filePath + * @param {string} projectType * @param {object} options * @returns {Promise} */ -async function mdjsToCsf(markdown, filePath, options = {}) { - const markdownResult = await mdjsToMd(markdown, { ...options, filePath }); +async function mdjsToCsf(markdown, filePath, projectType, mdjsOptions = {}) { + const markdownResult = await mdjsToMd(markdown, { ...mdjsOptions, filePath }); const jsCode = renameDefaultExport(markdownResult.jsCode, filePath); const storiesCode = createStoriesCode(markdownResult.stories); - const docsJsx = await mdToJsx(markdownResult.html, filePath, markdownResult.stories); + const docsJsx = await mdToJsx(markdownResult.html, filePath, projectType, markdownResult.stories); const docs = await jsxToJs(docsJsx, filePath); return `${jsCode}\n${storiesCode}\n${docs}`; diff --git a/packages/storybook-addon-markdown-docs/test-node/__snapshots__/mdjsToCsf.test.js.snap.js b/packages/storybook-addon-markdown-docs/test-node/__snapshots__/mdjsToCsf.test.js.snap.js index 364d70d9..072df6bb 100644 --- a/packages/storybook-addon-markdown-docs/test-node/__snapshots__/mdjsToCsf.test.js.snap.js +++ b/packages/storybook-addon-markdown-docs/test-node/__snapshots__/mdjsToCsf.test.js.snap.js @@ -3,14 +3,12 @@ exports[`mdjsToCsf : transforms a mdjs file to csf 1`] = [ " title: \"My docs\"", "};", "export const MyStory = () => html`
My story
`", - "MyStory.story = MyStory.story || {};", - "MyStory.story.parameters = MyStory.story.parameters || {};", - "MyStory.story.parameters.mdxSource = \"export const MyStory = () => html`
My story
`\";", + "MyStory.parameters = MyStory.parameters || {};", + "MyStory.parameters.mdxSource = \"export const MyStory = () => html`
My story
`\";", "", "export const MyOtherStory = () => html`
My other story
`", - "MyOtherStory.story = MyOtherStory.story || {};", - "MyOtherStory.story.parameters = MyOtherStory.story.parameters || {};", - "MyOtherStory.story.parameters.mdxSource = \"export const MyOtherStory = () => html`
My other story
`\";", + "MyOtherStory.parameters = MyOtherStory.parameters || {};", + "MyOtherStory.parameters.mdxSource = \"export const MyOtherStory = () => html`
My other story
`\";", "", "", "/**", @@ -18,8 +16,8 @@ exports[`mdjsToCsf : transforms a mdjs file to csf 1`] = [ " * The code below is generated by storybook docs.", " *", " */", - "import * as React from 'storybook-prebuilt/react.js';", - "import { mdx, AddContext } from 'storybook-prebuilt/addon-docs/blocks.js'; // Setup docs page", + "import { React, mdx } from '@web/storybook-prebuilt/undefined.js';", + "import { AddContext } from '@web/storybook-prebuilt/addon-docs/blocks.js'; // Setup docs page", "", "const mdxStoryNameToKey = {", " \"MyStory\": \"MyStory\",", @@ -39,7 +37,7 @@ exports[`mdjsToCsf : transforms a mdjs file to csf 1`] = [ "", "/* @jsx mdx */", "", - "import { Story, Preview, Props } from 'storybook-prebuilt/addon-docs/blocks.js';", + "import { Story, Preview, Props } from '@web/storybook-prebuilt/addon-docs/blocks.js';", "const layoutProps = {};", "const MDXLayout = \"wrapper\";", "", diff --git a/packages/storybook-addon-markdown-docs/test-node/createStoriesCode.test.js b/packages/storybook-addon-markdown-docs/test-node/createStoriesCode.test.js index e74d02c6..93453362 100644 --- a/packages/storybook-addon-markdown-docs/test-node/createStoriesCode.test.js +++ b/packages/storybook-addon-markdown-docs/test-node/createStoriesCode.test.js @@ -15,9 +15,8 @@ describe('createStoriesCode', () => { ]; expect(createStoriesCode(stories).trim()).to.eql( `export const StoryA = () => html\`
Hello world
\` -StoryA.story = StoryA.story || {}; -StoryA.story.parameters = StoryA.story.parameters || {}; -StoryA.story.parameters.mdxSource = "export const StoryA = () => html\`
Hello world
\`";`, +StoryA.parameters = StoryA.parameters || {}; +StoryA.parameters.mdxSource = "export const StoryA = () => html\`
Hello world
\`";`, ); }); @@ -37,14 +36,12 @@ StoryA.story.parameters.mdxSource = "export const StoryA = () => html\`
Hell ]; expect(createStoriesCode(stories).trim()).to.eql( `export const StoryA = () => html\`
Hello world
\` -StoryA.story = StoryA.story || {}; -StoryA.story.parameters = StoryA.story.parameters || {}; -StoryA.story.parameters.mdxSource = "export const StoryA = () => html\`
Hello world
\`"; +StoryA.parameters = StoryA.parameters || {}; +StoryA.parameters.mdxSource = "export const StoryA = () => html\`
Hello world
\`"; export const StoryB = () => html\`
Hello world
\` -StoryB.story = StoryB.story || {}; -StoryB.story.parameters = StoryB.story.parameters || {}; -StoryB.story.parameters.mdxSource = "export const StoryB = () => html\`
Hello world
\`";`, +StoryB.parameters = StoryB.parameters || {}; +StoryB.parameters.mdxSource = "export const StoryB = () => html\`
Hello world
\`";`, ); }); @@ -59,10 +56,9 @@ StoryB.story.parameters.mdxSource = "export const StoryB = () => html\`
Hell ]; expect(createStoriesCode(stories).trim()).to.eql( `export const StoryA = () => html\`
Hello world
\` -StoryA.story = StoryA.story || {}; -StoryA.story.name = "Story A"; -StoryA.story.parameters = StoryA.story.parameters || {}; -StoryA.story.parameters.mdxSource = "export const StoryA = () => html\`
Hello world
\`";`, +StoryA.storyName = "Story A"; +StoryA.parameters = StoryA.parameters || {}; +StoryA.parameters.mdxSource = "export const StoryA = () => html\`
Hello world
\`";`, ); }); @@ -81,10 +77,9 @@ StoryA.story.parameters.mdxSource = "export const StoryA = () => html\`
Hell `export const StoryA = () => html\`
Hello world
\`; -StoryA.story = StoryA.story || {}; -StoryA.story.name = "Story A"; -StoryA.story.parameters = StoryA.story.parameters || {}; -StoryA.story.parameters.mdxSource = "export const StoryA = () => html\`\\n
Hello world
\\n\`;";`, +StoryA.storyName = "Story A"; +StoryA.parameters = StoryA.parameters || {}; +StoryA.parameters.mdxSource = "export const StoryA = () => html\`\\n
Hello world
\\n\`;";`, ); }); diff --git a/packages/storybook-addon-markdown-docs/test-node/mdToJsx.test.js b/packages/storybook-addon-markdown-docs/test-node/mdToJsx.test.js index 72bba9e4..92c7f704 100644 --- a/packages/storybook-addon-markdown-docs/test-node/mdToJsx.test.js +++ b/packages/storybook-addon-markdown-docs/test-node/mdToJsx.test.js @@ -59,9 +59,9 @@ describe('compileMdToJsx', () => { describe('createDocsPage()', () => { it('creates a docs page default export', () => { - expect(createDocsPage().trim()).to.equal( - `import * as React from 'storybook-prebuilt/react.js'; -import { mdx, AddContext } from 'storybook-prebuilt/addon-docs/blocks.js'; + expect(createDocsPage([], 'web-components').trim()).to.equal( + `import { React, mdx } from '@web/storybook-prebuilt/web-components.js'; +import { AddContext } from '@web/storybook-prebuilt/addon-docs/blocks.js'; // Setup docs page const mdxStoryNameToKey = {}; @@ -75,10 +75,8 @@ __export_default__.parameters.docs.page = () => { throw new Error("Docs-only story"); }; -__page.story = { - parameters: { +__page.parameters = { docsOnly: true - } }; diff --git a/packages/storybook-addon-markdown-docs/test-node/mdjsToCsf.test.js b/packages/storybook-addon-markdown-docs/test-node/mdjsToCsf.test.js index ad233bed..a1bb2f9b 100644 --- a/packages/storybook-addon-markdown-docs/test-node/mdjsToCsf.test.js +++ b/packages/storybook-addon-markdown-docs/test-node/mdjsToCsf.test.js @@ -63,7 +63,7 @@ describe('mdjsToCsf', () => { resultFilePath = filePath; return plugins; } - await mdjsToCsf(input, '/foo.js', { + await mdjsToCsf(input, '/foo.js', 'web-components', { setupMdjsPlugins, }); expect(resultPlugins.length).to.equal(6); diff --git a/yarn.lock b/yarn.lock index 213e2745..c3c441b2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -94,7 +94,7 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.1.0", "@babel/core@^7.1.6", "@babel/core@^7.11.1", "@babel/core@^7.11.4", "@babel/core@^7.8.4": +"@babel/core@^7.1.0", "@babel/core@^7.1.6", "@babel/core@^7.11.1", "@babel/core@^7.11.4", "@babel/core@^7.12.3", "@babel/core@^7.8.4": version "7.12.3" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.3.tgz#1b436884e1e3bff6fb1328dc02b208759de92ad8" integrity sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g== @@ -125,6 +125,15 @@ jsesc "^2.5.1" source-map "^0.5.0" +"@babel/generator@^7.12.5": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.5.tgz#a2c50de5c8b6d708ab95be5e6053936c1884a4de" + integrity sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A== + dependencies: + "@babel/types" "^7.12.5" + jsesc "^2.5.1" + source-map "^0.5.0" + "@babel/helper-annotate-as-pure@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3" @@ -357,6 +366,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.3.tgz#a305415ebe7a6c7023b40b5122a0662d928334cd" integrity sha512-kFsOS0IbsuhO5ojF8Hc8z/8vEIOkylVBrjiZUbLTE3XFe0Qi+uu6HjzQixkFaqr0ZPAMZcBVxEwmsnsLPZ2Xsw== +"@babel/parser@^7.12.5": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.5.tgz#b4af32ddd473c0bfa643bd7ff0728b8e71b81ea0" + integrity sha512-FVM6RZQ0mn2KCf1VUED7KepYeUWoVShczewOCfm3nzoBybaih51h+sYVVGthW9M6lPByEPTQf+xm27PBdlpwmQ== + "@babel/plugin-proposal-async-generator-functions@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz#dc6c1170e27d8aca99ff65f4925bd06b1c90550e" @@ -791,6 +805,16 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-react-jsx@^7.12.5": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.5.tgz#39ede0e30159770561b6963be143e40af3bde00c" + integrity sha512-2xkcPqqrYiOQgSlM/iwto1paPijjsDbUynN13tI6bosDz/jOW3CRzYguIE8wKX32h+msbBM22Dv5fwrFkUOZjQ== + dependencies: + "@babel/helper-builder-react-jsx" "^7.10.4" + "@babel/helper-builder-react-jsx-experimental" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.12.1" + "@babel/plugin-transform-react-jsx@^7.3.0", "@babel/plugin-transform-react-jsx@^7.9.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.1.tgz#c2d96c77c2b0e4362cc4e77a43ce7c2539d478cb" @@ -886,7 +910,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/preset-env@^7.1.6", "@babel/preset-env@^7.11.5", "@babel/preset-env@^7.4.5", "@babel/preset-env@^7.8.4", "@babel/preset-env@^7.9.0": +"@babel/preset-env@^7.1.6", "@babel/preset-env@^7.11.5", "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.4.5", "@babel/preset-env@^7.8.4", "@babel/preset-env@^7.9.0": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.1.tgz#9c7e5ca82a19efc865384bb4989148d2ee5d7ac2" integrity sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg== @@ -1044,6 +1068,15 @@ lodash "^4.17.19" to-fast-properties "^2.0.0" +"@babel/types@^7.12.5": + version "7.12.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.6.tgz#ae0e55ef1cce1fbc881cd26f8234eb3e657edc96" + integrity sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + lodash "^4.17.19" + to-fast-properties "^2.0.0" + "@base2/pretty-print-object@1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@base2/pretty-print-object/-/pretty-print-object-1.0.0.tgz#860ce718b0b73f4009e153541faff2cb6b85d047" @@ -1703,7 +1736,7 @@ "@mdx-js/react" "1.6.19" loader-utils "2.0.0" -"@mdx-js/mdx@1.6.19", "@mdx-js/mdx@^1.5.1": +"@mdx-js/mdx@1.6.19", "@mdx-js/mdx@^1.5.1", "@mdx-js/mdx@^1.6.19": version "1.6.19" resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-1.6.19.tgz#a89522f53d0712691115b301a4fbd04933714a6f" integrity sha512-L3eLhEFnV/2bcb9XwOegsRmLHd1oEDQPtTBVezhptQ5U1YM+/WQNzx1apjzVTAyukwOanUXnTUMjRUtqJNgFCg== @@ -2225,7 +2258,7 @@ prop-types "^15.6.1" react-lifecycles-compat "^3.0.4" -"@rollup/plugin-babel@^5.1.0", "@rollup/plugin-babel@^5.2.0": +"@rollup/plugin-babel@^5.1.0", "@rollup/plugin-babel@^5.2.0", "@rollup/plugin-babel@^5.2.1": version "5.2.1" resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.2.1.tgz#20fc8f8864dc0eaa1c5578408459606808f72924" integrity sha512-Jd7oqFR2dzZJ3NWANDyBjwTtX/lYbZpVcmkHrfQcpvawHs9E4c0nYk5U2mfZ6I/DZcIvy506KZJi54XK/jxH7A== @@ -2275,6 +2308,18 @@ dependencies: "@rollup/pluginutils" "^3.0.8" +"@rollup/plugin-node-resolve@^10.0.0": + version "10.0.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-10.0.0.tgz#44064a2b98df7530e66acf8941ff262fc9b4ead8" + integrity sha512-sNijGta8fqzwA1VwUEtTvWCx2E7qC70NMsDh4ZG13byAXYigBNZMxALhKUSycBks5gupJdq0lFrKumFrRZ8H3A== + dependencies: + "@rollup/pluginutils" "^3.1.0" + "@types/resolve" "1.17.1" + builtin-modules "^3.1.0" + deepmerge "^4.2.2" + is-module "^1.0.0" + resolve "^1.17.0" + "@rollup/plugin-node-resolve@^7.1.1": version "7.1.3" resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz#80de384edfbd7bfc9101164910f86078151a3eca" @@ -3226,11 +3271,16 @@ "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*", "@types/estree@0.0.39", "@types/estree@0.0.45", "@types/estree@^0.0.45": +"@types/estree@*", "@types/estree@^0.0.45": version "0.0.45" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884" integrity sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g== +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + "@types/etag@*": version "1.8.0" resolved "https://registry.yarnpkg.com/@types/etag/-/etag-1.8.0.tgz#37f0b1f3ea46da7ae319bbedb607e375b4c99f7e" @@ -3412,7 +3462,7 @@ "@types/koa" "*" "@types/koa-send" "*" -"@types/koa@*", "@types/koa@^2.0.48": +"@types/koa@*", "@types/koa@^2.0.48", "@types/koa@^2.11.6": version "2.11.6" resolved "https://registry.yarnpkg.com/@types/koa/-/koa-2.11.6.tgz#b7030caa6b44af801c2aea13ba77d74aff7484d5" integrity sha512-BhyrMj06eQkk04C97fovEDQMpLpd2IxCB4ecitaXwOKGq78Wi2tooaDOWOFGajPk8IkQOAtMppApgSVkYe1F/A== @@ -3527,7 +3577,7 @@ dependencies: "@types/parse5" "*" -"@types/parse5@*", "@types/parse5@^5.0.0", "@types/parse5@^5.0.2": +"@types/parse5@*", "@types/parse5@^5.0.0", "@types/parse5@^5.0.2", "@types/parse5@^5.0.3": version "5.0.3" resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-5.0.3.tgz#e7b5aebbac150f8b5fdd4a46e7f0bd8e65e19109" integrity sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw== @@ -3917,6 +3967,29 @@ picomatch "^2.2.2" ws "^7.3.1" +"@web/dev-server-core@^0.2.15": + version "0.2.15" + resolved "https://registry.yarnpkg.com/@web/dev-server-core/-/dev-server-core-0.2.15.tgz#977bc9cbe2724873562c5949c1b6720b5b5042bb" + integrity sha512-m47AmV0ZABI9DeuQv0it6uDMcffxo4YV4eNBTs2ySJ7dRIKB39w8fdpvycvaO0n2pr+EWeYL1Ms2JqPGrjbm1A== + dependencies: + "@types/koa" "^2.11.6" + "@types/ws" "^7.2.6" + "@web/parse5-utils" "^1.0.0" + chokidar "^3.4.0" + clone "^2.1.2" + es-module-lexer "^0.3.24" + get-stream "^6.0.0" + is-stream "^2.0.0" + isbinaryfile "^4.0.6" + koa "^2.13.0" + koa-etag "^3.0.0" + koa-static "^5.0.0" + lru-cache "^5.1.1" + mime-types "^2.1.27" + parse5 "^6.0.0" + picomatch "^2.2.2" + ws "^7.3.1" + "@web/dev-server-esbuild@^0.2.4": version "0.2.6" resolved "https://registry.yarnpkg.com/@web/dev-server-esbuild/-/dev-server-esbuild-0.2.6.tgz#b9a73a0bcbe6bb6ede4e3409b8e87ac781c92d5d" @@ -3928,6 +4001,17 @@ parse5 "^6.0.1" ua-parser-js "^0.7.21" +"@web/dev-server-rollup@^0.2.10": + version "0.2.10" + resolved "https://registry.yarnpkg.com/@web/dev-server-rollup/-/dev-server-rollup-0.2.10.tgz#d0e902b997f9cc445ec80fc2db5e93e27ffbdcae" + integrity sha512-jJHxHiircfj7SngFmwa8Rlc2n4o2MB+mLY8y4JyIXJG00ifgxNU6kSjbV/5shPAzzN6MD/H60EkE7n7kYfuAig== + dependencies: + "@web/dev-server-core" "^0.2.11" + chalk "^4.1.0" + parse5 "^6.0.1" + rollup "^2.20.0" + whatwg-url "^8.1.0" + "@web/dev-server-rollup@^0.2.5", "@web/dev-server-rollup@^0.2.9": version "0.2.9" resolved "https://registry.yarnpkg.com/@web/dev-server-rollup/-/dev-server-rollup-0.2.9.tgz#e76925846d966053a80ec6d726c189d2c2b7cd2d" @@ -3939,6 +4023,31 @@ rollup "^2.20.0" whatwg-url "^8.1.0" +"@web/dev-server-storybook@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@web/dev-server-storybook/-/dev-server-storybook-0.1.3.tgz#ff7874aece7a8ccf88828d74c07839d4b39993df" + integrity sha512-3lZBiXBfhVUTx0Ysxq0bXuT869j6iqTHS2fSFSNQExKOKGucXK/QV6hr9R9iBZPlNzFD1tVIRQqHLbo/MQQN8Q== + dependencies: + "@babel/core" "^7.12.3" + "@babel/generator" "^7.12.5" + "@babel/parser" "^7.12.5" + "@babel/plugin-transform-react-jsx" "^7.12.5" + "@babel/preset-env" "^7.12.1" + "@mdx-js/mdx" "^1.6.19" + "@rollup/plugin-babel" "^5.2.1" + "@rollup/plugin-node-resolve" "^10.0.0" + "@web/dev-server-core" "^0.2.15" + "@web/rollup-plugin-html" "^1.2.0" + "@web/rollup-plugin-polyfills-loader" "^1.0.3" + "@web/storybook-prebuilt" "^0.1.8" + babel-plugin-bundled-import-meta "^0.3.2" + babel-plugin-template-html-minifier "^4.1.0" + globby "^11.0.1" + js-string-escape "^1.0.1" + lodash "^4.17.20" + rollup "^2.33.1" + rollup-plugin-terser "^7.0.2" + "@web/dev-server@^0.0.11": version "0.0.11" resolved "https://registry.yarnpkg.com/@web/dev-server/-/dev-server-0.0.11.tgz#288782f439923489f5e7dc9fa32551a6c6317642" @@ -3983,6 +4092,56 @@ open "^7.1.0" portfinder "^1.0.27" +"@web/dev-server@^0.0.19": + version "0.0.19" + resolved "https://registry.yarnpkg.com/@web/dev-server/-/dev-server-0.0.19.tgz#cf473079269fa2fdd6eee728f7a67a0648ec5e30" + integrity sha512-e+mFEaXB/Fax8OcFT9+b/Z/4NqG/qr6edITgQdk3WxW5O+HYF0ramsZ6grSCwS9tly+/QfTlCnLJCMPOcibqYA== + dependencies: + "@babel/code-frame" "^7.10.4" + "@rollup/plugin-node-resolve" "^8.4.0" + "@types/command-line-args" "^5.0.0" + "@web/config-loader" "^0.1.1" + "@web/dev-server-cli" "^0.0.3" + "@web/dev-server-core" "^0.2.15" + "@web/dev-server-rollup" "^0.2.10" + camelcase "^6.0.0" + chalk "^4.1.0" + command-line-args "^5.1.1" + command-line-usage "^6.1.0" + debounce "^1.2.0" + deepmerge "^4.2.2" + ip "^1.1.5" + open "^7.1.0" + portfinder "^1.0.27" + +"@web/parse5-utils@^1.0.0", "@web/parse5-utils@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@web/parse5-utils/-/parse5-utils-1.1.2.tgz#b53e7f62679170371da36023517b23bbb1f7c582" + integrity sha512-/JQHbK53BmYiFK2igr2B+Psl2Ivp2ju75Nx1InZweTbxLQNGG9yUBaudER85aqebIH6smkPkKwVtpdBXBiwy1A== + dependencies: + "@types/parse5" "^5.0.3" + parse5 "^6.0.1" + +"@web/polyfills-loader@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@web/polyfills-loader/-/polyfills-loader-1.0.1.tgz#cee51b6aa956a3c061c5018ce14424958b85946a" + integrity sha512-2c2UQpAYT2xSmo7mwf3RHsl9o7toB+dzVZbLEoDKCRhKX4T4jeiCSL828HrgHffckDI/PDIrsXtJ+SLvu4xGvg== + dependencies: + "@babel/core" "^7.11.1" + "@web/parse5-utils" "^1.1.2" + "@webcomponents/webcomponentsjs" "^2.5.0" + abortcontroller-polyfill "^1.4.0" + core-js-bundle "^3.6.0" + deepmerge "^4.2.2" + dynamic-import-polyfill "^0.1.1" + intersection-observer "^0.11.0" + parse5 "^6.0.0" + regenerator-runtime "^0.13.3" + resize-observer-polyfill "^1.5.1" + systemjs "^6.7.1" + terser "^5.3.8" + whatwg-fetch "^3.0.0" + "@web/rollup-plugin-copy@^0.1.2": version "0.1.2" resolved "https://registry.yarnpkg.com/@web/rollup-plugin-copy/-/rollup-plugin-copy-0.1.2.tgz#b8a3c1d5385bda0e94a1eb37cb375455cabfc3a1" @@ -3990,6 +4149,27 @@ dependencies: glob "^7.0.0" +"@web/rollup-plugin-html@^1.2.0": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@web/rollup-plugin-html/-/rollup-plugin-html-1.2.1.tgz#2cd5138394d31c3d10665e9ff14b369b17683409" + integrity sha512-hAfwTgDwdMnFk1NNo9d8S1gCMx3NhUNmkRs2ALDCTK4RYl3y2vOsBGZnNIFjaAke7MnGNvV3ajvxnuRDxLJSEQ== + dependencies: + "@web/parse5-utils" "^1.1.2" + glob "^7.1.6" + parse5 "^6.0.1" + +"@web/rollup-plugin-polyfills-loader@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@web/rollup-plugin-polyfills-loader/-/rollup-plugin-polyfills-loader-1.0.3.tgz#26b162c20cf22100117c154793d6be232cbb979b" + integrity sha512-9DkZy0x5F+axj3gDx36x5mxvqg9ugVIS85hCZT2uDEBJ1VBVdSG0pzI5R5zHaLAq/Xk88D999S0zLVRE7DKuHw== + dependencies: + "@web/polyfills-loader" "^1.0.1" + +"@web/storybook-prebuilt@^0.1.8": + version "0.1.8" + resolved "https://registry.yarnpkg.com/@web/storybook-prebuilt/-/storybook-prebuilt-0.1.8.tgz#03c97b03a3e3c9b3d96bde633874258fcb567fa0" + integrity sha512-MP7w8aRqtKCMjUFHoXlkWkMs/WSjgm/nYPJy4gT/v6+l+w6899cwo5QP6fQjm82TaSILOA7EFjwZvG+3r1Wi/Q== + "@web/test-runner-chrome@^0.7.2": version "0.7.2" resolved "https://registry.yarnpkg.com/@web/test-runner-chrome/-/test-runner-chrome-0.7.2.tgz#56b4241219f508d1a1b9bc7046d853dedad4c5b8" @@ -4266,7 +4446,7 @@ resolved "https://registry.yarnpkg.com/@webcomponents/shadycss/-/shadycss-1.10.2.tgz#40e03cab6dc5e12f199949ba2b79e02f183d1e7b" integrity sha512-9Iseu8bRtecb0klvv+WXZOVZatsRkbaH7M97Z+f+Pt909R4lDfgUODAnra23DOZTpeMTAkVpf4m/FZztN7Ox1A== -"@webcomponents/webcomponentsjs@^2.4.0": +"@webcomponents/webcomponentsjs@^2.4.0", "@webcomponents/webcomponentsjs@^2.5.0": version "2.5.0" resolved "https://registry.yarnpkg.com/@webcomponents/webcomponentsjs/-/webcomponentsjs-2.5.0.tgz#61b27785a6ad5bfd68fa018201fe418b118cb38d" integrity sha512-C0l51MWQZ9kLzcxOZtniOMohpIFdCLZum7/TEHv3XWFc1Fvt5HCpbSX84x8ltka/JuNKcuiDnxXFkiB2gaePcg== @@ -5201,7 +5381,7 @@ babel-plugin-syntax-object-rest-spread@^6.8.0: resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= -babel-plugin-template-html-minifier@^4.0.0: +babel-plugin-template-html-minifier@^4.0.0, babel-plugin-template-html-minifier@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/babel-plugin-template-html-minifier/-/babel-plugin-template-html-minifier-4.1.0.tgz#43d7306b7f19d15450cffc7cba676df85cea50b9" integrity sha512-fyuqn/SEPG68v+YUrBehOhQ81fxlu1A3YPATo3XXTNTsYsUFejRNNFTdQk5vkramMYy7/9XKIXIwsnB0VVvVTg== @@ -11122,6 +11302,11 @@ interpret@^2.0.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== +intersection-observer@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/intersection-observer/-/intersection-observer-0.11.0.tgz#f4ea067070326f68393ee161cc0a2ca4c0040c6f" + integrity sha512-KZArj2QVnmdud9zTpKf279m2bbGfG+4/kn16UU0NL3pTVl52ZHiJ9IRNSsnn6jaHrL9EGLFM5eWjTx2fz/+zoQ== + intersection-observer@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/intersection-observer/-/intersection-observer-0.7.0.tgz#ee16bee978db53516ead2f0a8154b09b400bbdc9" @@ -17106,6 +17291,13 @@ rollup@^2.16.0, rollup@^2.20.0, rollup@^2.23.1, rollup@^2.7.2: optionalDependencies: fsevents "~2.1.2" +rollup@^2.33.1: + version "2.33.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.33.1.tgz#802795164164ee63cd47769d8879c33ec8ae0c40" + integrity sha512-uY4O/IoL9oNW8MMcbA5hcOaz6tZTMIh7qJHx/tzIJm+n1wLoY38BLn6fuy7DhR57oNFLMbDQtDeJoFURt5933w== + optionalDependencies: + fsevents "~2.1.2" + rsvp@^4.8.4: version "4.8.5" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" @@ -18469,7 +18661,7 @@ symbol.prototype.description@^1.0.0: es-abstract "^1.17.0-next.1" has-symbols "^1.0.1" -systemjs@^6.3.1: +systemjs@^6.3.1, systemjs@^6.7.1: version "6.7.1" resolved "https://registry.yarnpkg.com/systemjs/-/systemjs-6.7.1.tgz#3db5036f450180a0701e078fbb5b434a690026f0" integrity sha512-Q78H/SYy9ErC8PH8r9vA/FcQ3X+Hf33dOpx2JKP/Ma6f2gHuSScPFuCKZH+6CIj7EsIJlzODxSG4mMIpjOh5oA== @@ -18619,7 +18811,7 @@ terser@^4.1.2, terser@^4.6.12, terser@^4.6.2, terser@^4.6.3, terser@^4.6.7, ters source-map "~0.6.1" source-map-support "~0.5.12" -terser@^5.0.0: +terser@^5.0.0, terser@^5.3.8: version "5.3.8" resolved "https://registry.yarnpkg.com/terser/-/terser-5.3.8.tgz#991ae8ba21a3d990579b54aa9af11586197a75dd" integrity sha512-zVotuHoIfnYjtlurOouTazciEfL7V38QMAOhGqpXDEg6yT13cF4+fEP9b0rrCEQTn+tT46uxgFsTZzhygk+CzQ==