diff --git a/.eslintrc.js b/.eslintrc.js
index 6b594419a..562ab2e5e 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -6,6 +6,7 @@ module.exports = {
'**/test-suites/**/*.js',
'**/test/**/*.js',
'**/test-node/**/*.js',
+ '**/demo/**/*.js',
'**/stories/**/*.js',
'**/*.config.js',
],
diff --git a/packages/babel-plugin-extend-docs/README.md b/packages/babel-plugin-extend-docs/README.md
new file mode 100644
index 000000000..36d5780f0
--- /dev/null
+++ b/packages/babel-plugin-extend-docs/README.md
@@ -0,0 +1,225 @@
+# babel-plugin-extend-docs
+
+A plugin which rewrites imports and templates according to a configuration.
+This enables the reuse of existing documentation from source packages while still using your extensions code.
+
+## Installation
+
+```bash
+npm i -D babel-plugin-extend-docs
+```
+
+We want to only execute `babel-plugin-extend-docs` on the actual files we want to modify/extend.
+We recommend using [babel overrides](https://babeljs.io/docs/en/options#overrides) for it.
+
+👉 _babel.config.js_
+
+```js
+const extendDocsConfig = {
+ rootPath: process.cwd(), // or `path.resolve('./')` as plugin needs to know the rootPath of your project
+ changes: [
+ // possible changes as described below
+ ],
+};
+
+module.exports = {
+ overrides: [
+ {
+ // plugin will only be executed on files that match this pattern
+ test: ['./node_modules/source-library/demos/**/*.js'],
+ plugins: [['babel-plugin-extend-docs', extendDocsConfig]],
+ },
+ ],
+};
+```
+
+## Features
+
+- Renames named imports and all it's usage
+- Adjusts import paths
+- Replace tags in template literals
+
+## A Change
+
+A change is what gets placed between in the extendDocsConfig within the `changes` array.
+
+> automating the generation of changes is optional but encouraged
+
+It has the following possibilities:
+
+```js
+changes: [
+ {
+ description: 'MyCounter', // not needed but can be added for easier reading of the config
+ variable: {
+ // see below
+ },
+ tag: {
+ // see below
+ },
+ },
+];
+```
+
+### Paths
+
+Both `variable` and `tag` are required to have a `paths` array which defines how to remap import paths.
+As demos can use multiple ways to import all of them needs to be written down in the config.
+
+```js
+paths: [
+ { from: './index.js', to: './my-extension/index.js' },
+ { from: '../index.js', to: '../my-extension/index.js' },
+ { from: './src/MyCounter.js', to: './my-extension/index.js' },
+ { from: '../src/MyCounter.js', to: '../my-extension/index.js' },
+],
+```
+
+## Replacement of tags
+
+We have an existing demo code which we want to reuse.
+
+```js
+import { LitElement, html } from 'lit-element';
+import './my-counter.js';
+class MyApp extends LitElement {
+ render() {
+ return html`
+
Example App
+
+ `;
+ }
+}
+customElements.define('my-app', MyApp);
+```
+
+We created a "better" version of `` so we would like to use that in the demo.
+Our extension is called `` and is available in `./my-extension/my-extension.js`.
+
+Within `babel-plugin-extend-docs` we can define to replace the tag + it's import.
+
+```js
+tag: {
+ from: 'my-counter',
+ to: 'my-extension',
+ paths: [{ from: './my-counter.js', to: './my-extension/my-extension.js' }],
+}
+```
+
+### Result of Replacement of tags
+
+```js
+import { LitElement, html } from 'lit-element';
+import './my-extension/my-extension.js';
+class MyApp extends LitElement {
+ render() {
+ return html`
+ Example App
+
+ `;
+ }
+}
+customElements.define('my-app', MyApp);
+```
+
+## Replacement of classes
+
+We have an existing demo code which we want to reuse.
+
+```js
+import { LitElement, html } from 'lit-element';
+import { MyCounter } from './src/MyCounter.js';
+class TenCounter extends MyCounter {
+ inc() {
+ this.count += 10;
+ }
+}
+customElements.define('ten-counter', TenCounter);
+class MyApp extends LitElement {
+ render() {
+ return html`
+ Example App
+
+ `;
+ }
+}
+customElements.define('my-app', MyApp);
+```
+
+We created a "better" version of `MyCounter` so we would like that `TenCounter` now extends it instead.
+
+Within `babel-plugin-extend-docs` we can define to replace the class + it's import.
+
+```js
+variable: {
+ from: 'MyCounter',
+ to: 'MyExtension',
+ paths: [
+ { from: './src/MyCounter.js', to: './my-extension/index.js' },
+ ],
+},
+```
+
+### Result of Replacement of classes
+
+```js
+import { LitElement, html } from 'lit-element';
+import { MyExtension } from './my-extension/index.js';
+class TenCounter extends MyExtension {
+ inc() {
+ this.count += 10;
+ }
+}
+customElements.define('ten-counter', TenCounter);
+class MyApp extends LitElement {
+ render() {
+ return html`
+ Example App
+
+ `;
+ }
+}
+customElements.define('my-app', MyApp);
+```
+
+## Full Demo & Api Example
+
+You can run the example locally via `npm run start` or look at its [source code](https://github.com/ing-bank/lion/tree/master/packages/babel-plugin-extend-docs/demo/).
+_Note we are configuring babel via the [server.config.js](https://github.com/ing-bank/lion/tree/master/packages/babel-plugin-extend-docs/demo/server.config.js)_
+
+👉 _babel.config.js_
+
+```js
+const path = require('path');
+
+const extendDocsConfig = {
+ rootPath: path.resolve('./demo'),
+ changes: [
+ {
+ name: 'MyCounter',
+ variable: {
+ from: 'MyCounter',
+ to: 'MyExtension',
+ paths: [
+ { from: './index.js', to: './my-extension/index.js' },
+ { from: './src/MyCounter.js', to: './my-extension/index.js' },
+ ],
+ },
+ tag: {
+ from: 'my-counter',
+ to: 'my-extension',
+ paths: [{ from: './my-counter.js', to: './my-extension/my-extension.js' }],
+ },
+ },
+ ],
+};
+
+module.exports = {
+ overrides: [
+ {
+ test: ['./node_modules/@lion/*/README.md', './node_modules/@lion/*/docs/**/*.md',
+ plugins: [['babel-plugin-docs-extend', extendDocsConfig]],
+ },
+ ],
+};
+```
diff --git a/packages/babel-plugin-extend-docs/demo/index.html b/packages/babel-plugin-extend-docs/demo/index.html
new file mode 100644
index 000000000..8d29efb55
--- /dev/null
+++ b/packages/babel-plugin-extend-docs/demo/index.html
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/packages/babel-plugin-extend-docs/demo/my-app.demo.js b/packages/babel-plugin-extend-docs/demo/my-app.demo.js
new file mode 100644
index 000000000..64fc4c084
--- /dev/null
+++ b/packages/babel-plugin-extend-docs/demo/my-app.demo.js
@@ -0,0 +1,25 @@
+import { LitElement, html } from 'lit-element';
+
+import { MyCounter } from './src/MyCounter.js';
+import './my-counter.js';
+
+class TenCounter extends MyCounter {
+ inc() {
+ this.count += 10;
+ }
+}
+customElements.define('ten-counter', TenCounter);
+
+class MyApp extends LitElement {
+ render() {
+ return html`
+ Example App
+
+
+
+
+ `;
+ }
+}
+
+customElements.define('my-app', MyApp);
diff --git a/packages/babel-plugin-extend-docs/demo/my-counter.js b/packages/babel-plugin-extend-docs/demo/my-counter.js
new file mode 100644
index 000000000..d4aa4c3db
--- /dev/null
+++ b/packages/babel-plugin-extend-docs/demo/my-counter.js
@@ -0,0 +1,3 @@
+import { MyCounter } from './src/MyCounter.js';
+
+customElements.define('my-counter', MyCounter);
diff --git a/packages/babel-plugin-extend-docs/demo/my-extension/MyExtension.js b/packages/babel-plugin-extend-docs/demo/my-extension/MyExtension.js
new file mode 100644
index 000000000..16b8983ee
--- /dev/null
+++ b/packages/babel-plugin-extend-docs/demo/my-extension/MyExtension.js
@@ -0,0 +1,19 @@
+import { html, css } from 'lit-element';
+import { MyCounter } from '../src/MyCounter.js';
+
+export class MyExtension extends MyCounter {
+ static get styles() {
+ return [
+ super.styles,
+ css`
+ button {
+ background: #c43f16;
+ }
+ `,
+ ];
+ }
+
+ _renderHeader() {
+ return html`I am MyExtension `;
+ }
+}
diff --git a/packages/babel-plugin-extend-docs/demo/my-extension/index.js b/packages/babel-plugin-extend-docs/demo/my-extension/index.js
new file mode 100644
index 000000000..81f8bf6c8
--- /dev/null
+++ b/packages/babel-plugin-extend-docs/demo/my-extension/index.js
@@ -0,0 +1 @@
+export { MyExtension } from './MyExtension.js';
diff --git a/packages/babel-plugin-extend-docs/demo/my-extension/my-extension.js b/packages/babel-plugin-extend-docs/demo/my-extension/my-extension.js
new file mode 100644
index 000000000..96e5ccd73
--- /dev/null
+++ b/packages/babel-plugin-extend-docs/demo/my-extension/my-extension.js
@@ -0,0 +1,3 @@
+import { MyExtension } from './MyExtension.js';
+
+customElements.define('my-extension', MyExtension);
diff --git a/packages/babel-plugin-extend-docs/demo/server.config.js b/packages/babel-plugin-extend-docs/demo/server.config.js
new file mode 100644
index 000000000..63cfd6766
--- /dev/null
+++ b/packages/babel-plugin-extend-docs/demo/server.config.js
@@ -0,0 +1,38 @@
+const path = require('path');
+
+const extendDocsConfig = {
+ changes: [
+ {
+ name: 'MyCounter',
+ variable: {
+ from: 'MyCounter',
+ to: 'MyExtension',
+ paths: [
+ { from: './index.js', to: './my-extension/index.js' },
+ { from: './src/MyCounter.js', to: './my-extension/index.js' },
+ ],
+ },
+ tag: {
+ from: 'my-counter',
+ to: 'my-extension',
+ paths: [{ from: './my-counter.js', to: './my-extension/my-extension.js' }],
+ },
+ },
+ ],
+ rootPath: path.resolve('./demo'),
+};
+
+module.exports = {
+ nodeResolve: true,
+ watch: true,
+ open: 'packages/babel-plugin-extend-docs/demo/',
+ babel: true,
+ babelConfig: {
+ overrides: [
+ {
+ test: ['./demo/**/*.demo.js'],
+ plugins: [[path.resolve('./'), extendDocsConfig]],
+ },
+ ],
+ },
+};
diff --git a/packages/babel-plugin-extend-docs/demo/server.no-babel.config.js b/packages/babel-plugin-extend-docs/demo/server.no-babel.config.js
new file mode 100644
index 000000000..46f31ac7e
--- /dev/null
+++ b/packages/babel-plugin-extend-docs/demo/server.no-babel.config.js
@@ -0,0 +1,5 @@
+module.exports = {
+ nodeResolve: true,
+ watch: true,
+ open: 'packages/babel-plugin-extend-docs/demo/',
+};
diff --git a/packages/babel-plugin-extend-docs/demo/src/MyCounter.js b/packages/babel-plugin-extend-docs/demo/src/MyCounter.js
new file mode 100644
index 000000000..d2f57c8be
--- /dev/null
+++ b/packages/babel-plugin-extend-docs/demo/src/MyCounter.js
@@ -0,0 +1,69 @@
+import { LitElement, html, css } from 'lit-element';
+
+export class MyCounter extends LitElement {
+ static properties = {
+ count: { type: Number },
+ };
+
+ static styles = css`
+ :host {
+ display: block;
+ width: 220px;
+ margin: 0 auto;
+ }
+
+ button,
+ span {
+ font-size: 200%;
+ }
+
+ span {
+ width: 4rem;
+ display: inline-block;
+ text-align: center;
+ }
+
+ button {
+ width: 64px;
+ height: 64px;
+ border: none;
+ border-radius: 10px;
+ background-color: seagreen;
+ color: white;
+ }
+
+ h3 {
+ text-align: center;
+ }
+ `;
+
+ constructor() {
+ super();
+ this.count = 0;
+ }
+
+ inc() {
+ this.count += 1;
+ }
+
+ dec() {
+ this.count -= 1;
+ }
+
+ _renderHeader() {
+ return html`I am MyCounter `;
+ }
+
+ _renderIncButton() {
+ return html`+ `;
+ }
+
+ render() {
+ return html`
+ ${this._renderHeader()}
+ -
+ ${this.count}
+ ${this._renderIncButton()}
+ `;
+ }
+}
diff --git a/packages/babel-plugin-extend-docs/index.js b/packages/babel-plugin-extend-docs/index.js
new file mode 100644
index 000000000..a49bb4cb5
--- /dev/null
+++ b/packages/babel-plugin-extend-docs/index.js
@@ -0,0 +1,3 @@
+const babelPlugin = require('./src/babelPluginExtendDocs');
+
+module.exports = babelPlugin;
diff --git a/packages/babel-plugin-extend-docs/package.json b/packages/babel-plugin-extend-docs/package.json
new file mode 100644
index 000000000..acd9315e7
--- /dev/null
+++ b/packages/babel-plugin-extend-docs/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "babel-plugin-extend-docs",
+ "version": "0.0.0",
+ "description": "Babel plugin which rewrites imports and templates according to a configuration",
+ "author": "ing-bank",
+ "homepage": "https://github.com/ing-bank/lion/",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/ing-bank/lion.git",
+ "directory": "packages/babel-plugin-extend-docs"
+ },
+ "scripts": {
+ "prepublishOnly": "../../scripts/npm-prepublish.js",
+ "start": "es-dev-server -c demo/server.config.js --root-dir ../../",
+ "start:no-babel": "es-dev-server -c demo/server.no-babel.config.js --root-dir ../../",
+ "test": "npm run test:node",
+ "test:node": "mocha test-node",
+ "test:watch": "mocha test-node --watch"
+ },
+ "keywords": [
+ "babel",
+ "extend"
+ ],
+ "main": "index.js",
+ "files": [
+ "src",
+ "test-node",
+ "*.js"
+ ]
+}
diff --git a/packages/babel-plugin-extend-docs/src/babelPluginExtendDocs.js b/packages/babel-plugin-extend-docs/src/babelPluginExtendDocs.js
new file mode 100644
index 000000000..9264a364c
--- /dev/null
+++ b/packages/babel-plugin-extend-docs/src/babelPluginExtendDocs.js
@@ -0,0 +1,63 @@
+/* eslint-disable no-param-reassign */
+const {
+ renameAndStoreImports,
+ generateImportStatements,
+ replaceTagImports,
+} = require('./handleImports.js');
+const { validateOptions } = require('./validateOptions.js');
+
+function replaceTemplateElements({ path, opts }) {
+ const replaceTag = (value, from, to) =>
+ value
+ .replace(new RegExp(`<${from}`, 'g'), `<${to}`)
+ .replace(new RegExp(`${from}>`, 'g'), `${to}>`);
+ path.node.quasi.quasis.forEach(quasi => {
+ opts.changes.forEach(change => {
+ if (change.tag && quasi.value.raw.match(change.tag.from)) {
+ quasi.value.raw = replaceTag(quasi.value.raw, change.tag.from, change.tag.to);
+ if (typeof quasi.value.cooked === 'string') {
+ quasi.value.cooked = replaceTag(quasi.value.cooked, change.tag.from, change.tag.to);
+ }
+ }
+ });
+ });
+}
+
+function insertImportStatements({ imports, path }) {
+ path.node.body = [...imports, ...path.node.body];
+}
+
+module.exports = ({ types: t }) => ({
+ visitor: {
+ ImportDeclaration(path, state) {
+ // If a filePath is not passed explicitly by the user, take the filename provided by babel
+ // and subtract the rootpath from it, to get the desired filePath relative to the root.
+ state.filePath = state.opts.__filePath
+ ? state.opts.__filePath
+ : state.file.opts.filename.replace(state.opts.rootPath, '');
+
+ if (path.node.specifiers.length > 0) {
+ renameAndStoreImports({ path, state, opts: state.opts, types: t });
+ } else {
+ replaceTagImports({ path, state, opts: state.opts, types: t });
+ }
+ },
+ TaggedTemplateExpression(path, state) {
+ if (t.isIdentifier(path.node.tag) && path.node.tag.name === 'html') {
+ replaceTemplateElements({ path, opts: state.opts });
+ }
+ },
+ Program: {
+ enter: (path, state) => {
+ validateOptions(state.opts);
+
+ state.importedStorage = [];
+ state.filePath = '';
+ },
+ exit: (path, state) => {
+ const imports = generateImportStatements({ state, types: t });
+ insertImportStatements({ imports, path });
+ },
+ },
+ },
+});
diff --git a/packages/babel-plugin-extend-docs/src/handleImports.js b/packages/babel-plugin-extend-docs/src/handleImports.js
new file mode 100644
index 000000000..d0f072f40
--- /dev/null
+++ b/packages/babel-plugin-extend-docs/src/handleImports.js
@@ -0,0 +1,96 @@
+/* eslint-disable no-param-reassign */
+
+const { joinPaths } = require('./helpers.js');
+
+/**
+ * -1 because filepath is an absolute path starting with '/' and we turn it into a relative path without a '/' at the start
+ * @param {*} filePath
+ */
+function getFolderDepth(filePath) {
+ return [...filePath.match(new RegExp('/', 'g'))].length - 1;
+}
+
+function getImportAs(specifier, newImportName) {
+ if (specifier.local && specifier.local.name && specifier.local.name !== specifier.imported.name) {
+ return specifier.local.name;
+ }
+ return newImportName;
+}
+
+function renameAndStoreImports({ path, state, opts, types: t }) {
+ for (const specifier of path.node.specifiers) {
+ let managed = false;
+
+ if (t.isIdentifier(specifier.imported) && specifier.type === 'ImportSpecifier') {
+ for (const change of opts.changes) {
+ if (specifier.imported.name === change.variable.from) {
+ for (const { from, to } of change.variable.paths) {
+ if (managed === false && from === path.node.source.value) {
+ const relativePart = '../'.repeat(getFolderDepth(state.filePath));
+ const importAs = getImportAs(specifier, change.variable.to);
+ const newPath = joinPaths(relativePart, to);
+
+ // rename so it replaces all occurrences
+ path.scope.rename(specifier.local.name, importAs);
+ if (specifier.imported && specifier.imported.name) {
+ specifier.imported.name = change.variable.to;
+ }
+ state.importedStorage.push({
+ action: 'change',
+ specifier,
+ path: newPath,
+ });
+ managed = true;
+ }
+ }
+ }
+ }
+ }
+
+ if (managed === false) {
+ state.importedStorage.push({
+ action: 'keep',
+ specifier,
+ path: path.node.source.value,
+ });
+ }
+ }
+ path.remove();
+}
+
+function generateImportStatements({ state, types: t }) {
+ const statements = {};
+ for (const imp of state.importedStorage) {
+ if (!statements[imp.path]) {
+ statements[imp.path] = [];
+ }
+ statements[imp.path].push(imp.specifier);
+ }
+ const res = [];
+ for (const path of Object.keys(statements)) {
+ const importSpecifiers = statements[path];
+ const source = t.stringLiteral(path);
+ res.push(t.importDeclaration(importSpecifiers, source));
+ }
+ return res;
+}
+
+function replaceTagImports({ path, state, opts, types: t }) {
+ for (const change of opts.changes) {
+ if (change.tag && Array.isArray(change.tag.paths) && change.tag.paths.length > 0) {
+ for (const { from, to } of change.tag.paths) {
+ if (from === path.node.source.value) {
+ const relativePart = '../'.repeat(getFolderDepth(state.filePath));
+ const updatedPath = joinPaths(relativePart, to);
+ path.node.source = t.stringLiteral(updatedPath);
+ }
+ }
+ }
+ }
+}
+
+module.exports = {
+ renameAndStoreImports,
+ generateImportStatements,
+ replaceTagImports,
+};
diff --git a/packages/babel-plugin-extend-docs/src/helpers.js b/packages/babel-plugin-extend-docs/src/helpers.js
new file mode 100644
index 000000000..95fd4ed55
--- /dev/null
+++ b/packages/babel-plugin-extend-docs/src/helpers.js
@@ -0,0 +1,19 @@
+const path = require('path');
+
+function joinPaths(a, b) {
+ let joinMe = b;
+ if (a && a === b.substring(0, a.length)) {
+ joinMe = b.substring(a.length + 1);
+ }
+ const updatedPath = path.join(a, joinMe);
+ // console.log({ a, b, updatedPath });
+
+ if (a === '' && b.startsWith('./')) {
+ return `./${updatedPath}`;
+ }
+ return updatedPath;
+}
+
+module.exports = {
+ joinPaths,
+};
diff --git a/packages/babel-plugin-extend-docs/src/validateOptions.js b/packages/babel-plugin-extend-docs/src/validateOptions.js
new file mode 100644
index 000000000..2a961e62e
--- /dev/null
+++ b/packages/babel-plugin-extend-docs/src/validateOptions.js
@@ -0,0 +1,149 @@
+const fs = require('fs');
+
+const { joinPaths } = require('./helpers.js');
+
+const tagExample = [
+ 'Should be example:',
+ ' {',
+ " from: 'my-counter',",
+ " to: 'my-extension',",
+ ' paths: [',
+ ' {',
+ " from: './my-counter.js',",
+ " to: './my-extension/my-extension.js'",
+ ' }',
+ ' ]',
+ ' }',
+];
+
+const variableExample = [
+ 'Should be example:',
+ ' {',
+ " from: 'MyCounter',",
+ " to: 'MyExtension',",
+ ' paths: [',
+ ' {',
+ " from: './index.js',",
+ " to: './my-extension/index.js'",
+ ' }',
+ ' ]',
+ ' }',
+];
+
+function formatJsonErrorMessage(json) {
+ if (!json) {
+ return '';
+ }
+ return `\n ${JSON.stringify(json, null, 2).split('\n').join('\n ')}`;
+}
+
+function validatePaths(paths, given, intro, example, options) {
+ if (!Array.isArray(paths) || (Array.isArray(paths) && paths.length === 0)) {
+ const errorMsg = [
+ intro,
+ 'The paths array is missing.',
+ `Given: ${formatJsonErrorMessage(given)}`,
+ ...example,
+ ].join('\n');
+ throw new Error(errorMsg);
+ }
+
+ const errorMsg = [
+ intro,
+ 'The path object is invalid.',
+ `Given: ${formatJsonErrorMessage(given)}`,
+ ...example,
+ ].join('\n');
+ for (const pathObj of paths) {
+ if (typeof pathObj.from !== 'string' || !pathObj.from) {
+ throw new Error(errorMsg);
+ }
+ if (typeof pathObj.to !== 'string' || !pathObj.to) {
+ throw new Error(errorMsg);
+ } else if (options.throwOnNonExistingPathToFiles === true) {
+ const filePath = joinPaths(options.rootPath, pathObj.to);
+ if (!(fs.existsSync(filePath) && fs.lstatSync(filePath).isFile())) {
+ throw new Error(
+ `babel-plugin-extend-docs: Rewriting import from "${pathObj.from}" to "${pathObj.to}" but we could not find a file at "${filePath}".`,
+ );
+ }
+ }
+ }
+}
+
+function validateChanges(changes, options) {
+ if (!Array.isArray(changes) || (Array.isArray(changes) && changes.length === 0)) {
+ const errorMsg = [
+ 'babel-plugin-extend-docs: The required changes array is missing.',
+ `Given: ${formatJsonErrorMessage(changes)}`,
+ ...tagExample,
+ ].join('\n');
+ throw new Error(errorMsg);
+ }
+ for (const change of changes) {
+ if (change.tag) {
+ const { tag } = change;
+ const intro = 'babel-plugin-extend-docs: The provided tag change is not valid.';
+ const errorMsg = [intro, `Given: ${formatJsonErrorMessage(tag)}`, ...tagExample].join('\n');
+ if (typeof tag.from !== 'string' || !tag.from) {
+ throw new Error(errorMsg);
+ }
+ if (typeof tag.to !== 'string' || !tag.to) {
+ throw new Error(errorMsg);
+ }
+
+ validatePaths(tag.paths, tag, intro, tagExample, options);
+ }
+
+ if (change.variable) {
+ const { variable } = change;
+ const intro = 'babel-plugin-extend-docs: The provided variable change is not valid.';
+ const errorMsg = [
+ intro,
+ `Given: ${formatJsonErrorMessage(variable)}`,
+ ...variableExample,
+ ].join('\n');
+ if (typeof variable.from !== 'string' || !variable.from) {
+ throw new Error(errorMsg);
+ }
+ if (typeof variable.to !== 'string' || !variable.to) {
+ throw new Error(errorMsg);
+ }
+
+ validatePaths(variable.paths, variable, intro, variableExample, options);
+ }
+ }
+}
+
+function validateOptions(_options) {
+ const options = {
+ throwOnNonExistingPathToFiles: true,
+ throwOnNonExistingRootPath: true,
+ ..._options,
+ };
+ if (options.throwOnNonExistingRootPath) {
+ if (!options.rootPath) {
+ throw new Error(
+ `babel-plugin-extend-docs: You need to provide a rootPath option (string)\nExample: rootPath: path.resolve('.')`,
+ );
+ }
+ if (!fs.existsSync(options.rootPath)) {
+ throw new Error(
+ `babel-plugin-extend-docs: The provided rootPath "${options.rootPath}" does not exist.`,
+ );
+ }
+ if (!fs.lstatSync(options.rootPath).isDirectory()) {
+ throw new Error(
+ `babel-plugin-extend-docs: The provided rootPath "${options.rootPath}" is not a directory.`,
+ );
+ }
+ }
+ validateChanges(options.changes, {
+ throwOnNonExistingPathToFiles: options.throwOnNonExistingPathToFiles,
+ rootPath: options.rootPath,
+ });
+}
+
+module.exports = {
+ validateOptions,
+};
diff --git a/packages/babel-plugin-extend-docs/test-node/babelPluginExtendDocs.test.js b/packages/babel-plugin-extend-docs/test-node/babelPluginExtendDocs.test.js
new file mode 100644
index 000000000..c57edbe50
--- /dev/null
+++ b/packages/babel-plugin-extend-docs/test-node/babelPluginExtendDocs.test.js
@@ -0,0 +1,291 @@
+const { expect } = require('chai');
+const { executeBabel, baseConfig } = require('./helpers.js');
+
+const testConfig = {
+ ...baseConfig,
+ throwOnNonExistingPathToFiles: false,
+ throwOnNonExistingRootPath: false,
+ __filePath: '/node_module/@lion/input/README.md',
+};
+
+describe('babel-plugin-extend-docs', () => {
+ it('replaces local src class imports (1)', () => {
+ const code = `import { LionInput } from './src/LionInput.js';`;
+ const output = `import { WolfInput } from "../../../index.js";`;
+ expect(executeBabel(code, testConfig)).to.equal(output);
+ });
+
+ it('renames classes everywhere', () => {
+ const code = [
+ `import { LionInput } from './src/LionInput.js';`,
+ `class Foo extends LionInput {}`,
+ ].join('\n');
+ const output = [
+ `import { WolfInput } from "../../../index.js";`,
+ '',
+ `class Foo extends WolfInput {}`,
+ ].join('\n');
+ expect(executeBabel(code, testConfig)).to.equal(output);
+ });
+
+ it('replaces local src class imports (2)', () => {
+ const code = `import { LionInput } from './src/LionInput.js';`;
+ const output = `import { WolfInput } from "../../../../index.js";`;
+ const config = {
+ ...testConfig,
+ __filePath: '/node_module/@lion/input/docs/README.md',
+ };
+ expect(executeBabel(code, config)).to.equal(output);
+ });
+
+ it('replaces local src class imports (3)', () => {
+ const code = `import { LionInput as Foo } from './src/LionInput.js';`;
+ const output = `import { WolfInput as Foo } from "../../../index.js";`;
+ expect(executeBabel(code, testConfig)).to.equal(output);
+ });
+
+ it('replaces local src class imports (4)', () => {
+ const code = [
+ `import someDefaultHelper, { LionInput, someHelper } from './src/LionInput.js';`,
+ `import { LionButton } from '@lion/button';`,
+ ].join('\n');
+ const output = [
+ `import someDefaultHelper, { someHelper } from "./src/LionInput.js";`,
+ `import { WolfInput, WolfButton } from "../../../index.js";`,
+ ].join('\n');
+ expect(executeBabel(code, testConfig)).to.equal(output);
+ });
+
+ it('replaces local src class imports (5)', () => {
+ const code = `import { LionInput, LionFoo, LionBar, someHelper } from '@lion/input';`;
+ const output = [
+ `import { WolfInput, WolfFoo } from "../../../index.js";`,
+ `import { WolfBar } from "../../../somewhere-else.js";`,
+ `import { someHelper } from "@lion/input";`,
+ ].join('\n');
+ const config = {
+ ...testConfig,
+ changes: [
+ ...baseConfig.changes,
+ {
+ description: 'LionFoo',
+ variable: {
+ from: 'LionFoo',
+ to: 'WolfFoo',
+ paths: [
+ {
+ from: '@lion/input',
+ to: './index.js',
+ },
+ ],
+ },
+ },
+ {
+ description: 'LionBar',
+ variable: {
+ from: 'LionBar',
+ to: 'WolfBar',
+ paths: [
+ {
+ from: '@lion/input',
+ to: './somewhere-else.js',
+ },
+ ],
+ },
+ },
+ ],
+ __filePath: '/node_module/@lion/input/README.md',
+ };
+ expect(executeBabel(code, config)).to.equal(output);
+ });
+
+ it('replaces local src class imports (6)', () => {
+ const code = `
+ import { localize } from '@lion/localize';
+ import { LionInput } from '@lion/input';
+ `;
+ const output = [
+ `import { localize } from "../../../localize.js";`,
+ `import { WolfInput } from "../../../index.js";`,
+ ].join('\n');
+ expect(executeBabel(code, testConfig)).to.equal(output);
+ });
+
+ it('allows separate import paths of managed imports', () => {
+ const code1 = `import { LionInput } from '@lion/input';`;
+ const code2 = `import { LionInput } from './src/LionInput.js';`;
+ const output1 = `import { WolfInput } from "../../../index.js";`;
+ const output2 = `import { WolfInput } from "../../../packages/input/src/WolfInput.js";`;
+ const config = {
+ ...testConfig,
+ changes: [
+ {
+ description: 'LionInput',
+ variable: {
+ from: 'LionInput',
+ to: 'WolfInput',
+ paths: [
+ {
+ from: '@lion/input',
+ to: './index.js',
+ },
+ {
+ from: './src/LionInput.js',
+ to: './packages/input/src/WolfInput.js',
+ },
+ ],
+ },
+ },
+ ],
+ __filePath: '/node_module/@lion/input/README.md',
+ };
+ expect(executeBabel(code1, config)).to.equal(output1);
+ expect(executeBabel(code2, config)).to.equal(output2);
+ });
+
+ it('replaces local index.js class imports (1)', () => {
+ const code = `import { LionInput } from './index.js';`;
+ const output = `import { WolfInput } from "../../../index.js";`;
+ expect(executeBabel(code, testConfig)).to.equal(output);
+ });
+
+ it('replaces local index.js class imports (2)', () => {
+ const code = `import { LionInput } from './index.js';`;
+ const output = `import { WolfInput } from "../../../../index.js";`;
+ const config = {
+ ...testConfig,
+ __filePath: '/node_module/@lion/input/docs/README.md',
+ };
+ expect(executeBabel(code, config)).to.equal(output);
+ });
+
+ it('works with local index.js class imports with an empty relative path', () => {
+ const code = `import { LionInput } from './index.js';`;
+ const output = `import { WolfInput } from "./index.js";`;
+ const config = {
+ ...testConfig,
+ __filePath: './README.md',
+ };
+ expect(executeBabel(code, config)).to.equal(output);
+ });
+
+ it('replaces `@lion` class imports', () => {
+ const code = `import { LionInput } from '@lion/input';`;
+ const output = `import { WolfInput } from "../../../index.js";`;
+ expect(executeBabel(code, testConfig)).to.equal(output);
+ });
+
+ it('does NOT replace imports no in the config', () => {
+ const code = `import { FooInput } from '@lion/input';`;
+ const output = `import { FooInput } from "@lion/input";`;
+ expect(executeBabel(code, testConfig)).to.equal(output);
+ });
+
+ it('replaces local tag imports', () => {
+ const code = `import './lion-input.js';`;
+ const output = `import "../../../__element-definitions/wolf-input.js";`;
+ expect(executeBabel(code, testConfig)).to.equal(output);
+ });
+
+ it('replaces `@lion` tag imports', () => {
+ const code = `import '@lion/input/lion-input.js';`;
+ const output = `import "../../../__element-definitions/wolf-input.js";`;
+ expect(executeBabel(code, testConfig)).to.equal(output);
+ });
+
+ it('replaces tags in function occurrences', () => {
+ const code = [
+ 'export const main = () => html`',
+ ` `,
+ '`;',
+ ].join('\n');
+ const output = [
+ 'export const main = () => html`',
+ ` `,
+ '`;',
+ ].join('\n');
+ expect(executeBabel(code, testConfig)).to.equal(output);
+ });
+
+ it('will no touch content of tags', () => {
+ const code = [
+ 'export const main = () => html`',
+ ` `,
+ ' ',
+ '`;',
+ ].join('\n');
+ const output = [
+ 'export const main = () => html`',
+ ` `,
+ ' ',
+ '`;',
+ ].join('\n');
+ expect(executeBabel(code, testConfig)).to.equal(output);
+ });
+
+ it('replaces nested tags in function occurrences', () => {
+ const code = [
+ 'export const main = () => html`',
+ ' ',
+ ' ${html`',
+ ' ',
+ ' `}',
+ ' ',
+ '`;',
+ ].join('\n');
+ const output = [
+ 'export const main = () => html`',
+ ' ',
+ ' ${html`',
+ ' ',
+ ' `}',
+ ' ',
+ '`;',
+ ].join('\n');
+ expect(executeBabel(code, testConfig)).to.equal(output);
+ });
+
+ it('replaces tags in classes occurrences', () => {
+ const code = [
+ 'class Foo extends LitElement {',
+ ' render() {',
+ ' return html`',
+ ' ',
+ ' light dom
',
+ ' ',
+ ' ',
+ ' `;',
+ ' }',
+ '}',
+ ].join('\n');
+ const output = [
+ 'class Foo extends LitElement {',
+ ' render() {',
+ ' return html`',
+ ' ',
+ ' light dom
',
+ ' ',
+ ' ',
+ ' `;',
+ ' }',
+ '', // babel puts an empty line here?
+ '}',
+ ].join('\n');
+ expect(executeBabel(code, testConfig)).to.equal(output);
+ });
+
+ // nice to have
+ it.skip("doesn't care about namespace imports", () => {
+ const code = `import * as all from '@lion/input';`;
+ const output = `
+ import { notRenameHelper } from "@lion/input";
+ import { WolfInput } from "../../../index.js";
+ const all = { LionInput: WolfInput, someHelper };
+ `;
+ expect(executeBabel(code, testConfig)).to.equal(output);
+ });
+});
diff --git a/packages/babel-plugin-extend-docs/test-node/helpers.js b/packages/babel-plugin-extend-docs/test-node/helpers.js
new file mode 100644
index 000000000..03ad7f208
--- /dev/null
+++ b/packages/babel-plugin-extend-docs/test-node/helpers.js
@@ -0,0 +1,110 @@
+const babel = require('babel-core');
+const babelPluginExtendDocs = require('../src/babelPluginExtendDocs.js');
+
+function executeBabel(input, options) {
+ const result = babel.transform(input, {
+ plugins: [[babelPluginExtendDocs, options]],
+ });
+ return result.code;
+}
+
+const baseConfig = {
+ changes: [
+ {
+ description: 'LionInput',
+ variable: {
+ from: 'LionInput',
+ to: 'WolfInput',
+ paths: [
+ {
+ from: './index.js',
+ to: './index.js',
+ },
+ {
+ from: './src/LionInput.js',
+ to: './index.js',
+ },
+ {
+ from: '@lion/input',
+ to: './index.js',
+ },
+ ],
+ },
+ tag: {
+ from: 'lion-input',
+ to: 'wolf-input',
+ paths: [
+ {
+ from: './lion-input.js',
+ to: './__element-definitions/wolf-input.js',
+ },
+ {
+ from: '@lion/input/lion-input.js',
+ to: './__element-definitions/wolf-input.js',
+ },
+ ],
+ },
+ },
+ {
+ description: 'LionButton',
+ variable: {
+ from: 'LionButton',
+ to: 'WolfButton',
+ paths: [
+ {
+ from: './index.js',
+ to: './index.js',
+ },
+ {
+ from: './src/LionButton.js',
+ to: './index.js',
+ },
+ {
+ from: '@lion/button',
+ to: './index.js',
+ },
+ ],
+ },
+ tag: {
+ from: 'lion-button',
+ to: 'wolf-button',
+ paths: [
+ {
+ from: './lion-button.js',
+ to: './__element-definitions/wolf-button.js',
+ },
+ {
+ from: '@lion/button/lion-button.js',
+ to: './__element-definitions/wolf-button.js',
+ },
+ ],
+ },
+ },
+ {
+ description: 'localize',
+ variable: {
+ from: 'localize',
+ to: 'localize',
+ paths: [
+ {
+ from: './index.js',
+ to: './localize.js',
+ },
+ {
+ from: './src/localize.js',
+ to: './localize.js',
+ },
+ {
+ from: '@lion/localize',
+ to: './localize.js',
+ },
+ ],
+ },
+ },
+ ],
+};
+
+module.exports = {
+ executeBabel,
+ baseConfig,
+};
diff --git a/packages/babel-plugin-extend-docs/test-node/integration.test.js b/packages/babel-plugin-extend-docs/test-node/integration.test.js
new file mode 100644
index 000000000..2121899df
--- /dev/null
+++ b/packages/babel-plugin-extend-docs/test-node/integration.test.js
@@ -0,0 +1,84 @@
+const { expect } = require('chai');
+const path = require('path');
+const { executeBabel } = require('./helpers.js');
+
+const extendDocsConfig = {
+ changes: [
+ {
+ name: 'MyCounter',
+ variable: {
+ from: 'MyCounter',
+ to: 'MyExtension',
+ paths: [
+ { from: './index.js', to: './my-extension/index.js' },
+ { from: './src/MyCounter.js', to: './my-extension/index.js' },
+ ],
+ },
+ tag: {
+ from: 'my-counter',
+ to: 'my-extension',
+ paths: [{ from: './my-counter.js', to: './my-extension/my-extension.js' }],
+ },
+ },
+ ],
+ rootPath: path.resolve('./demo'),
+ __filePath: '/my-app.demo.js',
+};
+
+describe('babel-plugin-extend-docs: integration tests', () => {
+ it('works for the demo', () => {
+ const code = `import { LitElement, html } from 'lit-element';
+import { MyCounter } from './src/MyCounter.js';
+import './my-counter.js';
+
+class TenCounter extends MyCounter {
+ inc() {
+ this.count += 10;
+ }
+}
+customElements.define('ten-counter', TenCounter);
+
+class MyApp extends LitElement {
+ render() {
+ return html\`
+ Example App
+
+
+
+
+ \`;
+ }
+}
+
+customElements.define('my-app', MyApp);
+`;
+ const output = `import { LitElement, html } from "lit-element";
+import { MyExtension } from "./my-extension/index.js";
+import "./my-extension/my-extension.js";
+
+class TenCounter extends MyExtension {
+ inc() {
+ this.count += 10;
+ }
+
+}
+
+customElements.define('ten-counter', TenCounter);
+
+class MyApp extends LitElement {
+ render() {
+ return html\`
+ Example App
+
+
+
+
+ \`;
+ }
+
+}
+
+customElements.define('my-app', MyApp);`;
+ expect(executeBabel(code, extendDocsConfig)).to.equal(output);
+ });
+});
diff --git a/packages/babel-plugin-extend-docs/test-node/validateOptions.test.js b/packages/babel-plugin-extend-docs/test-node/validateOptions.test.js
new file mode 100644
index 000000000..c982551af
--- /dev/null
+++ b/packages/babel-plugin-extend-docs/test-node/validateOptions.test.js
@@ -0,0 +1,217 @@
+const { expect } = require('chai');
+const path = require('path');
+const { executeBabel, baseConfig } = require('./helpers.js');
+
+function formatJsonErrorMessage(json) {
+ if (!json) {
+ return '';
+ }
+ return `\n ${JSON.stringify(json, null, 2).split('\n').join('\n ')}`;
+}
+
+describe('babel-plugin-extend-docs: validateOptions', () => {
+ it('throws if no rootPath string is provided', () => {
+ expect(() => executeBabel('', { ...baseConfig })).to.throw(
+ `babel-plugin-extend-docs: You need to provide a rootPath option (string)\nExample: rootPath: path.resolve('.')`,
+ );
+ });
+
+ it('throws if rootPath does not exist', () => {
+ expect(() => executeBabel('', { ...baseConfig, rootPath: 'something' })).to.throw(
+ `babel-plugin-extend-docs: The provided rootPath "something" does not exist.`,
+ );
+ });
+
+ it('throws if rootPath is not a directory', () => {
+ const rootPath = path.resolve('./index.js');
+ expect(() => {
+ executeBabel('', {
+ ...baseConfig,
+ rootPath,
+ });
+ }).to.throw(
+ `babel-plugin-extend-docs: The provided rootPath "${rootPath}" is not a directory.`,
+ );
+ });
+
+ it('throws if no changes array is provided', () => {
+ expect(() => {
+ executeBabel('', {
+ rootPath: path.resolve('./'),
+ });
+ }).to.throw(
+ [
+ 'babel-plugin-extend-docs: The required changes array is missing.',
+ `Given: ${formatJsonErrorMessage(undefined)}`,
+ 'Should be example:',
+ ' {',
+ " from: 'my-counter',",
+ " to: 'my-extension',",
+ ' paths: [',
+ ' {',
+ " from: './my-counter.js',",
+ " to: './my-extension/my-extension.js'",
+ ' }',
+ ' ]',
+ ' }',
+ ].join('\n'),
+ );
+ });
+
+ it('throws if tag change does not have a valid to, from, and paths property', () => {
+ const defaultMsg = ['babel-plugin-extend-docs: The provided tag change is not valid.'];
+ function tagThrowsErrorFor(tag, msg = defaultMsg) {
+ expect(() => {
+ executeBabel('', {
+ rootPath: path.resolve('./'),
+ changes: [{ tag }],
+ });
+ }).to.throw(
+ [
+ ...msg,
+ `Given: ${formatJsonErrorMessage(tag)}`,
+ 'Should be example:',
+ ' {',
+ " from: 'my-counter',",
+ " to: 'my-extension',",
+ ' paths: [',
+ ' {',
+ " from: './my-counter.js',",
+ " to: './my-extension/my-extension.js'",
+ ' }',
+ ' ]',
+ ' }',
+ ].join('\n'),
+ );
+ }
+
+ tagThrowsErrorFor({});
+ tagThrowsErrorFor({ from: '' });
+ tagThrowsErrorFor({ from: 'my-counter' });
+ tagThrowsErrorFor({ from: 'my-counter', to: '' });
+ tagThrowsErrorFor({ from: 'my-counter', to: 'my-extension' }, [
+ 'babel-plugin-extend-docs: The provided tag change is not valid.',
+ 'The paths array is missing.',
+ ]);
+ tagThrowsErrorFor({ from: 'my-counter', to: 'my-extension', paths: [] }, [
+ 'babel-plugin-extend-docs: The provided tag change is not valid.',
+ 'The paths array is missing.',
+ ]);
+
+ const pathMsg = [
+ 'babel-plugin-extend-docs: The provided tag change is not valid.',
+ 'The path object is invalid.',
+ ];
+ const pathSetup = { from: 'my-counter', to: 'my-extension' };
+ tagThrowsErrorFor({ ...pathSetup, paths: [{}] }, pathMsg);
+ tagThrowsErrorFor({ ...pathSetup, paths: [{ from: '' }] }, pathMsg);
+ tagThrowsErrorFor({ ...pathSetup, paths: [{ from: './index.js' }] }, pathMsg);
+ tagThrowsErrorFor({ ...pathSetup, paths: [{ to: '' }] }, pathMsg);
+ tagThrowsErrorFor({ ...pathSetup, paths: [{ to: './index.js' }] }, pathMsg);
+ tagThrowsErrorFor({ ...pathSetup, paths: [{ from: './index.js', to: '' }] }, pathMsg);
+ tagThrowsErrorFor({ ...pathSetup, paths: [{ from: '', to: './index.js' }] }, pathMsg);
+ });
+
+ it('throws if variable change does not have a valid to, from, and paths property', () => {
+ const defaultMsg = ['babel-plugin-extend-docs: The provided variable change is not valid.'];
+ function variableThrowsErrorFor(variable, msg = defaultMsg) {
+ expect(() => {
+ executeBabel('', {
+ rootPath: path.resolve('./'),
+ changes: [{ variable }],
+ });
+ }).to.throw(
+ [
+ ...msg,
+ `Given: ${formatJsonErrorMessage(variable)}`,
+ 'Should be example:',
+ ' {',
+ " from: 'MyCounter',",
+ " to: 'MyExtension',",
+ ' paths: [',
+ ' {',
+ " from: './index.js',",
+ " to: './my-extension/index.js'",
+ ' }',
+ ' ]',
+ ' }',
+ ].join('\n'),
+ );
+ }
+
+ variableThrowsErrorFor({});
+ variableThrowsErrorFor({ from: '' });
+ variableThrowsErrorFor({ from: 'my-counter' });
+ variableThrowsErrorFor({ from: 'my-counter', to: '' });
+ variableThrowsErrorFor({ from: 'my-counter', to: 'my-extension' }, [
+ 'babel-plugin-extend-docs: The provided variable change is not valid.',
+ 'The paths array is missing.',
+ ]);
+ variableThrowsErrorFor({ from: 'my-counter', to: 'my-extension', paths: [] }, [
+ 'babel-plugin-extend-docs: The provided variable change is not valid.',
+ 'The paths array is missing.',
+ ]);
+
+ const pathMsg = [
+ 'babel-plugin-extend-docs: The provided variable change is not valid.',
+ 'The path object is invalid.',
+ ];
+ const pathSetup = { from: 'my-counter', to: 'my-extension' };
+ variableThrowsErrorFor({ ...pathSetup, paths: [{}] }, pathMsg);
+ variableThrowsErrorFor({ ...pathSetup, paths: [{ from: '' }] }, pathMsg);
+ variableThrowsErrorFor({ ...pathSetup, paths: [{ from: './index.js' }] }, pathMsg);
+ variableThrowsErrorFor({ ...pathSetup, paths: [{ to: '' }] }, pathMsg);
+ variableThrowsErrorFor({ ...pathSetup, paths: [{ to: './index.js' }] }, pathMsg);
+ variableThrowsErrorFor({ ...pathSetup, paths: [{ from: './index.js', to: '' }] }, pathMsg);
+ variableThrowsErrorFor({ ...pathSetup, paths: [{ from: '', to: './index.js' }] }, pathMsg);
+ });
+
+ it('throws if "to path" could not be found on file system', () => {
+ expect(() => {
+ executeBabel('', {
+ changes: [
+ {
+ tag: {
+ from: 'lion-input',
+ to: 'wolf-input',
+ paths: [
+ {
+ from: './lion-input.js',
+ to: './non-existing/wolf-input.js',
+ },
+ ],
+ },
+ },
+ ],
+ rootPath: path.resolve('./'),
+ });
+ }).to.throw(
+ [
+ 'babel-plugin-extend-docs: Rewriting import from "./lion-input.js" to "./non-existing/wolf-input.js" but we ',
+ `could not find a file at "${path.resolve('./')}/non-existing/wolf-input.js".`,
+ ].join(''),
+ );
+ });
+
+ it('does NOT throws if "to path" could be found on file system', () => {
+ expect(() => {
+ executeBabel('', {
+ changes: [
+ {
+ tag: {
+ from: 'lion-input',
+ to: 'wolf-input',
+ paths: [
+ {
+ from: './lion-input.js',
+ to: path.resolve('./test-node/validateOptions.test.js'),
+ },
+ ],
+ },
+ },
+ ],
+ rootPath: path.resolve('./'),
+ });
+ }).to.not.throw();
+ });
+});
diff --git a/yarn.lock b/yarn.lock
index 226f2a01d..35ff5184e 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2120,48 +2120,47 @@
lit-element "^2.2.1"
"@mdx-js/loader@^1.5.1":
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/@mdx-js/loader/-/loader-1.6.0.tgz#d04b598332dfb5e7674e7cb6d4a73ba5258b1ae9"
- integrity sha512-rgXFDZ8B6f+MuMlJMOGAknv0OzK52AB8WKRz98N+pQnQntRCbosjOsUTwXftfvir2xQSigXybWHe6axsXplVHg==
+ version "1.5.8"
+ resolved "https://registry.yarnpkg.com/@mdx-js/loader/-/loader-1.5.8.tgz#3d1c4031b934c03309cabbbfe01628f3960e3221"
+ integrity sha512-Tmrx1ZSTDEBF6oBG6aoEmLNhKVvLqfCQe7mpnTFDjAG0O26E96m45Saj/FJkl373ulJ8BRED2EamNjejrKoeJQ==
dependencies:
- "@mdx-js/mdx" "^1.6.0"
- "@mdx-js/react" "^1.6.0"
- loader-utils "2.0.0"
+ "@mdx-js/mdx" "^1.5.8"
+ "@mdx-js/react" "^1.5.8"
+ loader-utils "1.2.3"
-"@mdx-js/mdx@^1.5.1", "@mdx-js/mdx@^1.6.0":
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-1.6.0.tgz#176c7851be2092afd0cf8c10ce41ed21c30512b5"
- integrity sha512-e4RZtMWU3jM0mA02fL0fvAOcxzGMTL8awDUHv/7bbU7z5JnfMAX4wSvR3Mp2y0J+hNjQ723696CP5zL92xVjyw==
+"@mdx-js/mdx@^1.5.1", "@mdx-js/mdx@^1.5.8":
+ version "1.5.8"
+ resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-1.5.8.tgz#40740eaf0b0007b461cee8df13a7ae5a1af8064a"
+ integrity sha512-OzanPTN0p9GZOEVeEuEa8QsjxxGyfFOOnI/+V1oC1su9UIN4KUg1k4n/hWTZC+VZhdW1Lfj6+Ho8nIs6L+pbDA==
dependencies:
- "@babel/core" "7.9.0"
+ "@babel/core" "7.8.4"
"@babel/plugin-syntax-jsx" "7.8.3"
"@babel/plugin-syntax-object-rest-spread" "7.8.3"
- "@mdx-js/util" "^1.6.0"
- babel-plugin-apply-mdx-type-prop "^1.6.0"
- babel-plugin-extract-import-names "^1.6.0"
+ "@mdx-js/util" "^1.5.8"
+ babel-plugin-apply-mdx-type-prop "^1.5.8"
+ babel-plugin-extract-import-names "^1.5.8"
camelcase-css "2.0.1"
detab "2.0.3"
hast-util-raw "5.0.2"
lodash.uniq "4.5.0"
- mdast-util-to-hast "8.2.0"
- remark-footnotes "1.0.0"
- remark-mdx "^1.6.0"
- remark-parse "8.0.1"
- remark-squeeze-paragraphs "4.0.0"
+ mdast-util-to-hast "7.0.0"
+ remark-mdx "^1.5.8"
+ remark-parse "7.0.2"
+ remark-squeeze-paragraphs "3.0.4"
style-to-object "0.3.0"
- unified "9.0.0"
+ unified "8.4.2"
unist-builder "2.0.3"
unist-util-visit "2.0.2"
-"@mdx-js/react@^1.5.1", "@mdx-js/react@^1.6.0":
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-1.6.0.tgz#96ec0c153beca0e1fc7111460f7b6982f092aeb4"
- integrity sha512-Sn9Rm7/C02PzrpzusM12etSMdZHFUNJGgY1t7nR8Ds10S9hnFKWxnQ1J2b4YrQfzRKn1fOm4wv/KAEUy3oubPA==
+"@mdx-js/react@^1.5.1", "@mdx-js/react@^1.5.8":
+ version "1.5.8"
+ resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-1.5.8.tgz#fc38fe0eb278ae24666b2df3c751e726e33f5fac"
+ integrity sha512-L3rehITVxqDHOPJFGBSHKt3Mv/p3MENYlGIwLNYU89/iVqTLMD/vz8hL9RQtKqRoMbKuWpzzLlKIObqJzthNYg==
-"@mdx-js/util@^1.6.0":
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/@mdx-js/util/-/util-1.6.0.tgz#896eace2b34238320521c0a92180c349942cd8f6"
- integrity sha512-zzGMtKnc28voDQ4LZFczZzwkm5VwwF7ZbC5iePaWFaF+kD+ekPVdronJEOMFK9SUEKUbmc31Bz81rtS6264z4w==
+"@mdx-js/util@^1.5.8":
+ version "1.5.8"
+ resolved "https://registry.yarnpkg.com/@mdx-js/util/-/util-1.5.8.tgz#cbadda0378af899c17ce1aa69c677015cab28448"
+ integrity sha512-a7Gjjw8bfBSertA/pTWBA/9WKEhgaSxvQE2NTSUzaknrzGFOhs4alZSHh3RHmSFdSWv5pUuzAgsWseMLhWEVkQ==
"@mrmlnc/readdir-enhanced@^2.2.1":
version "2.2.1"
@@ -2272,9 +2271,9 @@
universal-user-agent "^4.0.0"
"@octokit/types@^2.0.0", "@octokit/types@^2.0.1", "@octokit/types@^2.11.1":
- version "2.12.2"
- resolved "https://registry.yarnpkg.com/@octokit/types/-/types-2.12.2.tgz#e9fbffa294adb54140946d436da9f73bc94b169c"
- integrity sha512-1GHLI/Jll3j6F0GbYyZPFTcHZMGjAiRfkTEoRUyaVVk2IWbDdwEiClAJvXzfXCDayuGSNCqAUH8lpjZtqW9GDw==
+ version "2.11.1"
+ resolved "https://registry.yarnpkg.com/@octokit/types/-/types-2.11.1.tgz#bd5b059596b42845be3f8e66065667aff8c8bf8b"
+ integrity sha512-QaLoLkmFdfoNbk3eOzPv7vKrUY0nRJIYmZDoz/pTer4ICpqu80aSQTVHnnUxEFuURCiidig76CcxUOYC/bY3RQ==
dependencies:
"@types/node" ">= 8"
@@ -2298,7 +2297,39 @@
rollup-plugin-terser "^5.1.0"
rollup-plugin-workbox "^4.0.0"
-"@open-wc/building-utils@^2.16.2", "@open-wc/building-utils@^2.16.4":
+"@open-wc/building-utils@^2.16.2", "@open-wc/building-utils@^2.16.3":
+ version "2.16.3"
+ resolved "https://registry.yarnpkg.com/@open-wc/building-utils/-/building-utils-2.16.3.tgz#f512d68198c31458849c79111fa9d3f24f03049d"
+ integrity sha512-lO/HD2wEl2avRSgqISeP4S1zPQEGRQ/+Zh8RBk9AggDma3uPiRU0RbuRvhunmu7hFWVDBj5o1FRJ7xJ94AWCnw==
+ dependencies:
+ "@babel/core" "^7.9.0"
+ "@babel/plugin-syntax-dynamic-import" "^7.8.3"
+ "@webcomponents/shadycss" "^1.9.4"
+ "@webcomponents/webcomponentsjs" "^2.4.0"
+ arrify "^2.0.1"
+ browserslist "^4.9.1"
+ chokidar "^3.0.0"
+ clean-css "^4.2.1"
+ clone "^2.1.2"
+ core-js-bundle "^3.6.0"
+ deepmerge "^4.2.2"
+ es-module-shims "^0.4.6"
+ html-minifier "^4.0.0"
+ lru-cache "^5.1.1"
+ minimatch "^3.0.4"
+ parse5 "^5.1.1"
+ path-is-inside "^1.0.2"
+ regenerator-runtime "^0.13.3"
+ resolve "^1.11.1"
+ rimraf "^3.0.2"
+ shady-css-scoped-element "^0.0.2"
+ systemjs "^4.0.0"
+ terser "^4.6.7"
+ valid-url "^1.0.9"
+ whatwg-fetch "^3.0.0"
+ whatwg-url "^7.0.0"
+
+"@open-wc/building-utils@^2.16.4":
version "2.16.4"
resolved "https://registry.yarnpkg.com/@open-wc/building-utils/-/building-utils-2.16.4.tgz#10d64e0d2b92c017caf47a57991f8b1eef91c634"
integrity sha512-ByknIanbo2wSpNs7gHy/hBHmPOO91IOJCDravSNreK88XdTd4vnCkx0DrRltgwvPIg7GVHWv/NFfSfWecRrh4Q==
@@ -2338,10 +2369,10 @@
"@open-wc/semantic-dom-diff" "^0.13.16"
"@types/chai" "^4.1.7"
-"@open-wc/dedupe-mixin@^1.2.1", "@open-wc/dedupe-mixin@^1.2.17":
- version "1.2.17"
- resolved "https://registry.yarnpkg.com/@open-wc/dedupe-mixin/-/dedupe-mixin-1.2.17.tgz#50fb903fc8785639487d7987caae45d7bba08ec7"
- integrity sha512-9A3WohqNxEloJa4y1DuBL5zH12cNRNW1vsrkiaLMnOGuQdhibs2XY1oliudsKpvIeNjDXRVRPUdIIzn65BypCw==
+"@open-wc/dedupe-mixin@^1.2.1", "@open-wc/dedupe-mixin@^1.2.16":
+ version "1.2.16"
+ resolved "https://registry.yarnpkg.com/@open-wc/dedupe-mixin/-/dedupe-mixin-1.2.16.tgz#ec543814d3f4396dfe6e5f560c6d26ef274acc4c"
+ integrity sha512-7FMRmUyxAmNqFN0Vm5/yLIwxkD3UO97r10ymZc/nz9YyPksfHk0CxjCM4upDBzte5F6qyomhMW5POCr1c7/6vw==
"@open-wc/demoing-storybook@^1.10.4":
version "1.15.2"
@@ -2380,28 +2411,27 @@
eslint-plugin-no-only-tests "^2.3.1"
eslint-plugin-wc "^1.2.0"
-"@open-wc/karma-esm@^2.13.28":
- version "2.13.28"
- resolved "https://registry.yarnpkg.com/@open-wc/karma-esm/-/karma-esm-2.13.28.tgz#17a4551bdc48936df8096ae4bb51b6f1b6855fb5"
- integrity sha512-Qq77hJRQkRHg2XqBIJQxqslaiz5iqoU1VqkR15NfQsvLEdEpS/2kZBPGQDw08kBw/COhix44F6h6TYBDxY5qrA==
+"@open-wc/karma-esm@^2.13.23":
+ version "2.13.23"
+ resolved "https://registry.yarnpkg.com/@open-wc/karma-esm/-/karma-esm-2.13.23.tgz#bd676154cf4f987f980d3d601bb1277fe3f09779"
+ integrity sha512-UnC0Vy06F5doojitKIkG+UMbvJBqfRf6o5bdcXaOAd+7SpvpGRwmOq9+/4mkqzIKe/EIiTKc2SoCIh82JI0CTw==
dependencies:
- "@open-wc/building-utils" "^2.16.4"
+ "@open-wc/building-utils" "^2.16.3"
babel-plugin-istanbul "^5.1.4"
chokidar "^3.0.0"
deepmerge "^4.2.2"
- es-dev-server "^1.47.0"
+ es-dev-server "^1.46.2"
minimatch "^3.0.4"
node-fetch "^2.6.0"
- polyfills-loader "^1.5.6"
portfinder "^1.0.21"
request "^2.88.0"
-"@open-wc/scoped-elements@^1.0.3", "@open-wc/scoped-elements@^1.1.1":
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/@open-wc/scoped-elements/-/scoped-elements-1.1.1.tgz#732744dac4d029ffacdeb169d85855714eda9d0c"
- integrity sha512-Fx9bFOA14xGeNFQpSeyp6GmqW1vJyETr1qlem9pDS3hlK/HpWUtoBRAPyo4yexjY+aeSsenUeAYDXzPWQgeWXw==
+"@open-wc/scoped-elements@^1.0.3":
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/@open-wc/scoped-elements/-/scoped-elements-1.0.8.tgz#4bed4c810cb775b8567b7571e8799630b00fa882"
+ integrity sha512-eM6MPG0kArvFdbRUTaOFR9/oUIn6O0GxlGy/T22PSB7flaDWKm6eJtn/Xn6zpWc9a6n84sOq9CWv8Y817NiTRA==
dependencies:
- "@open-wc/dedupe-mixin" "^1.2.17"
+ "@open-wc/dedupe-mixin" "^1.2.16"
lit-html "^1.0.0"
"@open-wc/semantic-dom-diff@^0.13.16":
@@ -2409,39 +2439,31 @@
resolved "https://registry.yarnpkg.com/@open-wc/semantic-dom-diff/-/semantic-dom-diff-0.13.21.tgz#718b9ec5f9a98935fc775e577ad094ae8d8b7dea"
integrity sha512-BONpjHcGX2zFa9mfnwBCLEmlDsOHzT+j6Qt1yfK3MzFXFtAykfzFjAgaxPetu0YbBlCfXuMlfxI4vlRGCGMvFg==
-"@open-wc/semantic-dom-diff@^0.17.9":
- version "0.17.9"
- resolved "https://registry.yarnpkg.com/@open-wc/semantic-dom-diff/-/semantic-dom-diff-0.17.9.tgz#15ed61dfdf7a01ebbf21755527e25c90c78bf5e2"
- integrity sha512-wO4xM3FhLmGGZM3wDexUPFb55tqVX45LJQ9l3uNKj1Roi0/aV1KjIohdE2J0zUJivfCxAWo1Dy45hNkCHO4CVA==
- dependencies:
- "@types/chai" "^4.2.11"
+"@open-wc/semantic-dom-diff@^0.17.7":
+ version "0.17.7"
+ resolved "https://registry.yarnpkg.com/@open-wc/semantic-dom-diff/-/semantic-dom-diff-0.17.7.tgz#94b7a406275b786e525a6f9b2005f2bc0b2e9782"
+ integrity sha512-7SyZLBoXxYMIq2mQh3kJ80a09+M+ZpOiobBpwbW/8TKZEoOriB+eWAej5yPj6bM/XvUfn4y725vyS58U+GBeSw==
-"@open-wc/testing-helpers@^1.0.0", "@open-wc/testing-helpers@^1.8.1":
- version "1.8.1"
- resolved "https://registry.yarnpkg.com/@open-wc/testing-helpers/-/testing-helpers-1.8.1.tgz#e523352f911f273dc4d7cfc2405c8eb886f0be59"
- integrity sha512-gvTD5BrXdm0LEZbuy/4XweDjbdTsmZVpuK2172lkwCmoia1VaMvWL1iO7mBWZiACK5SJnBSWy6VX2GkaDHcUoQ==
- dependencies:
- "@open-wc/scoped-elements" "^1.1.1"
+"@open-wc/testing-helpers@^1.0.0", "@open-wc/testing-helpers@^1.7.1":
+ version "1.7.1"
+ resolved "https://registry.yarnpkg.com/@open-wc/testing-helpers/-/testing-helpers-1.7.1.tgz#e93a4931e0d117deb7185ce9ea0acc87f6de47c0"
+ integrity sha512-v7AYqIGA50mFfwuZNqCxB0ZWI+aioZtiprBMl5bZT4eRMRz876jRMiX9y327RwwisGie6+HDIJHwhWjrd1GdOA==
"@open-wc/testing-karma-bs@^1.3.30":
- version "1.3.60"
- resolved "https://registry.yarnpkg.com/@open-wc/testing-karma-bs/-/testing-karma-bs-1.3.60.tgz#de3db76a7b3cb4ddd6d8ee8cb7fb6f6458710576"
- integrity sha512-kRFXP+C7ERCZ5U+kHETFJ3xpqbnclA9Fyvbk48FblKXeWD5hj8akfXStF6drYt0+ppxjQA0EHUVkU9OdsjoFIg==
+ version "1.3.56"
+ resolved "https://registry.yarnpkg.com/@open-wc/testing-karma-bs/-/testing-karma-bs-1.3.56.tgz#cf7559f15d5fadba3ce76d56a55e5ef013d70289"
+ integrity sha512-pdni8cmFj7GMwQYOkm2UN6pT2S4JZh2r6w7ACGPGKAe3VMgdGz2esWS9j3q10Ry00wnEOC/bFybU6u6z8tYDuQ==
dependencies:
- "@open-wc/testing-karma" "^3.3.17"
+ "@open-wc/testing-karma" "^3.3.12"
"@types/node" "^11.13.0"
karma-browserstack-launcher "^1.0.0"
-"@open-wc/testing-karma@^3.2.30", "@open-wc/testing-karma@^3.3.17":
- version "3.3.17"
- resolved "https://registry.yarnpkg.com/@open-wc/testing-karma/-/testing-karma-3.3.17.tgz#3104083acd843906802eb69959025eb42b8007e7"
- integrity sha512-dFjXua5/edY7BAWInXF0URxOIDKpyCnU/TUfbZGo2ZDi0ZkSHpeE6sax/bg1T/ymTBWgg1tPqP+IP7he1A7ZGA==
+"@open-wc/testing-karma@^3.2.30", "@open-wc/testing-karma@^3.3.12":
+ version "3.3.12"
+ resolved "https://registry.yarnpkg.com/@open-wc/testing-karma/-/testing-karma-3.3.12.tgz#c6e3dc0415789b985369aa4c0ce6a0806845ff43"
+ integrity sha512-Hl0VGwBUQKuyuDrtr2dLi1SdD/BbkImuuE/Ieui37RyRevZy+QH97dIHvHLOSyrCqzaEzV9ePvxiPc7lEHnYIQ==
dependencies:
- "@open-wc/karma-esm" "^2.13.28"
- "@types/karma" "^5.0.0"
- "@types/karma-coverage-istanbul-reporter" "^2.1.0"
- "@types/karma-mocha" "^1.3.0"
- "@types/karma-mocha-reporter" "^2.2.0"
+ "@open-wc/karma-esm" "^2.13.23"
axe-core "^3.3.1"
karma "^4.1.0"
karma-chrome-launcher "^3.1.0"
@@ -2462,14 +2484,14 @@
webpack "^4.28.0"
"@open-wc/testing@^2.5.0":
- version "2.5.15"
- resolved "https://registry.yarnpkg.com/@open-wc/testing/-/testing-2.5.15.tgz#3062c17e2aca05e58c33a36b0bb2e0a3941a692a"
- integrity sha512-rXuwa3Kf7NE7jhoYgzJVNDQQKb8guWLUCxOrhZcX0QaYIaDbNhierxLtbrpu9z78Y5PvcbwaH+ekO2jO44lxfQ==
+ version "2.5.11"
+ resolved "https://registry.yarnpkg.com/@open-wc/testing/-/testing-2.5.11.tgz#97c455ade0645cd2c83b7a902db4ea072f8523d0"
+ integrity sha512-QtLA5jGpfEJOoC0ka2OAqRAAZ0/pbgWPVLzgKPu//OC3CDxvVgKdEObW9pXVKpti5oLa7NRMxeJcTMkE4aO68Q==
dependencies:
"@open-wc/chai-dom-equals" "^0.12.36"
- "@open-wc/semantic-dom-diff" "^0.17.9"
- "@open-wc/testing-helpers" "^1.8.1"
- "@types/chai" "^4.2.11"
+ "@open-wc/semantic-dom-diff" "^0.17.7"
+ "@open-wc/testing-helpers" "^1.7.1"
+ "@types/chai" "^4.1.7"
"@types/chai-dom" "^0.0.9"
"@types/mocha" "^5.0.0"
"@types/sinon-chai" "^3.2.3"
@@ -2894,7 +2916,7 @@
dependencies:
"@types/chai" "*"
-"@types/chai@*", "@types/chai@^4.1.7", "@types/chai@^4.2.11":
+"@types/chai@*", "@types/chai@^4.1.7":
version "4.2.11"
resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.11.tgz#d3614d6c5f500142358e6ed24e1bf16657536c50"
integrity sha512-t7uW6eFafjO+qJ3BIV2gGUyZs27egcNRkUdalkud+Qa3+kg//f129iuOFivHDXQ+vnU3fDXuwgv0cqMCbcE8sw==
@@ -2958,33 +2980,6 @@
"@types/istanbul-lib-coverage" "*"
"@types/istanbul-lib-report" "*"
-"@types/karma-coverage-istanbul-reporter@^2.1.0":
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/@types/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-2.1.0.tgz#cc913da37827a8d2149021dbebd294a5db01388e"
- integrity sha512-r6y5GgvSUjAhztwDWpRxiZV+Q6knsudGQtF3/ri80AFyHawD0LC9Oz64ZhfexRU0EYWpU3hQJl35IjgTLGtvUg==
-
-"@types/karma-mocha-reporter@^2.2.0":
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/@types/karma-mocha-reporter/-/karma-mocha-reporter-2.2.0.tgz#54b22a7375e695110974ae4c43b7483e34680e36"
- integrity sha512-dsn9iXtwP3HzBCTkGS++1KLCzkhBWoz9fql8WOAcCGDYHlDlNL43R9DklPcNydl1i0/UMh48a0dPrT8b7kKuxw==
- dependencies:
- "@types/karma" "*"
-
-"@types/karma-mocha@^1.3.0":
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/@types/karma-mocha/-/karma-mocha-1.3.0.tgz#1163badc60ba22342964918be0a1a2eee097bdf1"
- integrity sha512-q7JAJ6oqtMph1/2fpwckutRQXzukvSAJf3ZNIbpOIX1uPktnenDxdqJdpFz7LUMEr+X9Soul3KkHvSR17sPDKQ==
- dependencies:
- "@types/karma" "*"
-
-"@types/karma@*", "@types/karma@^5.0.0":
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/@types/karma/-/karma-5.0.0.tgz#6750ffc633c0fbc63dfb725146f198e8c3afcd08"
- integrity sha512-5quuLnxdJWkzJCEwFatOClM6O7EkeDWfXltGySb01LQnBVjtbLzIky9JLW0IKt+JfzurUjwj7b7Sb/Omsx4QYA==
- dependencies:
- "@types/node" "*"
- log4js "^4.0.0"
-
"@types/minimatch@*", "@types/minimatch@^3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
@@ -2996,14 +2991,14 @@
integrity sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==
"@types/node@*", "@types/node@>= 8":
- version "13.13.4"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-13.13.4.tgz#1581d6c16e3d4803eb079c87d4ac893ee7501c2c"
- integrity sha512-x26ur3dSXgv5AwKS0lNfbjpCakGIduWU1DU91Zz58ONRWrIKGunmZBNv4P7N+e27sJkiGDsw/3fT4AtsqQBrBA==
+ version "13.13.0"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-13.13.0.tgz#30d2d09f623fe32cde9cb582c7a6eda2788ce4a8"
+ integrity sha512-WE4IOAC6r/yBZss1oQGM5zs2D7RuKR6Q+w+X2SouPofnWn+LbCqClRyhO3ZE7Ix8nmFgo/oVuuE01cJT2XB13A==
"@types/node@^11.13.0":
- version "11.15.12"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-11.15.12.tgz#bf5d348c4d37c026029ad81e874946fa6ad100ba"
- integrity sha512-iefeBfpmhoYaZfj+gJM5z9H9eiTwhuzhPsJgH/flx4HP2SBI2FNDra1D3vKljqPLGDr9Cazvh9gP9Xszc30ncA==
+ version "11.15.11"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-11.15.11.tgz#c428d8327dcbd2106d559433728ba261e27bf7c0"
+ integrity sha512-TyWPoOfqHw3zu61/+2nNuUPhk3XUZnw271ot5K5dhcdSPeO35AjMHU+oBXfvsqdrA+Owwa2Z1999E4m2ENtdrg==
"@types/parse-json@^4.0.0":
version "4.0.0"
@@ -3016,9 +3011,9 @@
integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==
"@types/reach__router@^1.2.3":
- version "1.3.5"
- resolved "https://registry.yarnpkg.com/@types/reach__router/-/reach__router-1.3.5.tgz#14e1e981cccd3a5e50dc9e969a72de0b9d472f6d"
- integrity sha512-h0NbqXN/tJuBY/xggZSej1SKQEstbHO7J/omt1tYoFGmj3YXOodZKbbqD4mNDh7zvEGYd7YFrac1LTtAr3xsYQ==
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/@types/reach__router/-/reach__router-1.3.4.tgz#98ef393d06f59d296b5c021ba94b94e5fc463245"
+ integrity sha512-DZgYfxUIlVSjvf0AvBbYNbpXLrTFNNpU1HrvCRbnMtx3nvGUUWC1/zlAe4dD4FCPFtc+LQuIPEsDiTb0zQkthg==
dependencies:
"@types/history" "*"
"@types/react" "*"
@@ -3328,7 +3323,7 @@ acorn@^4.0.4, acorn@~4.0.2:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787"
integrity sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=
-acorn@^6.4.1:
+acorn@^6.2.1:
version "6.4.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474"
integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==
@@ -3833,13 +3828,13 @@ babel-extract-comments@^1.0.0:
dependencies:
babylon "^6.18.0"
-babel-plugin-apply-mdx-type-prop@^1.6.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.0.tgz#81955e1d6594dde24f36ef57905d149c33543a7e"
- integrity sha512-wtYaotCmckVs9yiVnubiwE5XjmKOd/cFXLpQJoPzE768HPyrv9FVCauSidjxbrJvZv6wLS+yrfOpZdzGAeI8XA==
+babel-plugin-apply-mdx-type-prop@^1.5.8:
+ version "1.5.8"
+ resolved "https://registry.yarnpkg.com/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.5.8.tgz#f5ff6d9d7a7fcde0e5f5bd02d3d3cd10e5cca5bf"
+ integrity sha512-xYp5F9mAnZdDRFSd1vF3XQ0GQUbIulCpnuht2jCmK30GAHL8szVL7TgzwhEGamQ6yJmP/gEyYNM9OR5D2n26eA==
dependencies:
"@babel/helper-plugin-utils" "7.8.3"
- "@mdx-js/util" "^1.6.0"
+ "@mdx-js/util" "^1.5.8"
babel-plugin-bundled-import-meta@^0.3.0:
version "0.3.2"
@@ -3872,10 +3867,10 @@ babel-plugin-emotion@^10.0.27:
find-root "^1.1.0"
source-map "^0.5.7"
-babel-plugin-extract-import-names@^1.6.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.0.tgz#37de43583c1b3e80fe9a7c5bc05f414c70f9e9c8"
- integrity sha512-Uo+g6ykLCYK0I8jxMH3kovHphyHFp4niMmz1+dGCkYblLe3lpYnPDP39JPAh3lbm/c2bLyRcDQHRBgmoUO6fhQ==
+babel-plugin-extract-import-names@^1.5.8:
+ version "1.5.8"
+ resolved "https://registry.yarnpkg.com/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.5.8.tgz#418057261346451d689dff5036168567036b8cf6"
+ integrity sha512-LcLfP8ZRBZMdMAXHLugyvvd5PY0gMmLMWFogWAUsG32X6TYW2Eavx+il2bw73KDbW+UdCC1bAJ3NuU25T1MI3g==
dependencies:
"@babel/helper-plugin-utils" "7.8.3"
@@ -4212,7 +4207,17 @@ browserslist-useragent@^3.0.2:
semver "^7.3.2"
useragent "^2.3.0"
-browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.8.5, browserslist@^4.9.1:
+browserslist@^4.0.0, browserslist@^4.8.5, browserslist@^4.9.1:
+ version "4.11.1"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.11.1.tgz#92f855ee88d6e050e7e7311d987992014f1a1f1b"
+ integrity sha512-DCTr3kDrKEYNw6Jb9HFxVLQNaue8z+0ZfRBRjmCunKDEXEBajKDj2Y+Uelg+Pi29OnvaSGwjOsnRyNEkXzHg5g==
+ dependencies:
+ caniuse-lite "^1.0.30001038"
+ electron-to-chromium "^1.3.390"
+ node-releases "^1.1.53"
+ pkg-up "^2.0.0"
+
+browserslist@^4.12.0:
version "4.12.0"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.12.0.tgz#06c6d5715a1ede6c51fc39ff67fd647f740b656d"
integrity sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==
@@ -4509,7 +4514,12 @@ caniuse-api@^3.0.0:
lodash.memoize "^4.1.2"
lodash.uniq "^4.5.0"
-caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001033, caniuse-lite@^1.0.30001043:
+caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001033, caniuse-lite@^1.0.30001038:
+ version "1.0.30001043"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001043.tgz#1b561de27aefbe6ff99e41866b8d7d87840c513b"
+ integrity sha512-MrBDRPJPDBYwACtSQvxg9+fkna5jPXhJlKmuxenl/ml9uf8LHKlDmLpElu+zTW/bEz7lC1m0wTDD7jiIB+hgFg==
+
+caniuse-lite@^1.0.30001043:
version "1.0.30001048"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001048.tgz#4bb4f1bc2eb304e5e1154da80b93dee3f1cf447e"
integrity sha512-g1iSHKVxornw0K8LG9LLdf+Fxnv7T1Z+mMsf0/YYLclQX4Cd522Ap0Lrw6NFqHgezit78dtyWxzlV2Xfc7vgRg==
@@ -5888,6 +5898,11 @@ ee-first@1.1.1:
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
+electron-to-chromium@^1.3.390:
+ version "1.3.413"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.413.tgz#9c457a4165c7b42e59d66dff841063eb9bfe5614"
+ integrity sha512-Jm1Rrd3siqYHO3jftZwDljL2LYQafj3Kki5r+udqE58d0i91SkjItVJ5RwlJn9yko8i7MOcoidVKjQlgSdd1hg==
+
electron-to-chromium@^1.3.413:
version "1.3.420"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.420.tgz#e95b731f475433d29d2835a200dab413e45ba819"
@@ -5926,6 +5941,11 @@ emoji-regex@^8.0.0:
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
+emojis-list@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
+ integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k=
+
emojis-list@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
@@ -6078,10 +6098,10 @@ es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstrac
string.prototype.trimleft "^2.1.1"
string.prototype.trimright "^2.1.1"
-es-dev-server@^1.46.1, es-dev-server@^1.47.0:
- version "1.47.0"
- resolved "https://registry.yarnpkg.com/es-dev-server/-/es-dev-server-1.47.0.tgz#d7d257b9a8f1177aa651465b00c47f18bfac6ee7"
- integrity sha512-5+i5oD+dkE7dl1b+A65uyEky41ee7T85unjsA0S7d0mngOYR9YQjBdqG6lYCDVXNQBwMJ841OlU1WxM4jtWSWA==
+es-dev-server@^1.46.1, es-dev-server@^1.46.2:
+ version "1.46.2"
+ resolved "https://registry.yarnpkg.com/es-dev-server/-/es-dev-server-1.46.2.tgz#f2a17cc7a5dab1e8a7fa212b586cb51f3abea32f"
+ integrity sha512-pqJ1bejSEbcxXFcMi4egkLaLWg5ASaxNeSRiGS9vpxu3S5f0aWX8XgYwifT6VeBpEHalkwb10prm/nvDCZKQlw==
dependencies:
"@babel/core" "^7.9.0"
"@babel/plugin-proposal-dynamic-import" "^7.8.3"
@@ -6094,7 +6114,7 @@ es-dev-server@^1.46.1, es-dev-server@^1.47.0:
"@babel/plugin-syntax-optional-chaining" "^7.8.3"
"@babel/plugin-transform-template-literals" "^7.8.3"
"@babel/preset-env" "^7.9.0"
- "@open-wc/building-utils" "^2.16.4"
+ "@open-wc/building-utils" "^2.16.3"
"@rollup/plugin-node-resolve" "^7.1.1"
"@rollup/pluginutils" "^3.0.0"
"@types/minimatch" "^3.0.3"
@@ -6122,7 +6142,7 @@ es-dev-server@^1.46.1, es-dev-server@^1.47.0:
opn "^5.4.0"
parse5 "^5.1.1"
path-is-inside "^1.0.2"
- polyfills-loader "^1.5.6"
+ polyfills-loader "^1.5.4"
portfinder "^1.0.21"
strip-ansi "^5.2.0"
systemjs "^4.0.0"
@@ -6768,9 +6788,9 @@ fn-name@~2.0.1:
integrity sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=
focus-lock@^0.6.3, focus-lock@^0.6.7:
- version "0.6.8"
- resolved "https://registry.yarnpkg.com/focus-lock/-/focus-lock-0.6.8.tgz#61985fadfa92f02f2ee1d90bc738efaf7f3c9f46"
- integrity sha512-vkHTluRCoq9FcsrldC0ulQHiyBYgVJB2CX53I8r0nTC6KnEij7Of0jpBspjt3/CuNb6fyoj3aOh9J2HgQUM0og==
+ version "0.6.7"
+ resolved "https://registry.yarnpkg.com/focus-lock/-/focus-lock-0.6.7.tgz#65e298f2ba2a3372ab57a4e4c4bdc19e1e32a4e5"
+ integrity sha512-KRo93U/afEqt7w5tBm4t0FHf/Li8tEYav3n4GUiZdeRlRfrtMbL8yQg0xRVnY/kmBRmQ4xkqIlbaMvuqlu53kg==
follow-redirects@1.5.10:
version "1.5.10"
@@ -9244,14 +9264,14 @@ loader-runner@^2.4.0:
resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357"
integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==
-loader-utils@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0"
- integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==
+loader-utils@1.2.3:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7"
+ integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==
dependencies:
big.js "^5.2.2"
- emojis-list "^3.0.0"
- json5 "^2.1.2"
+ emojis-list "^2.0.0"
+ json5 "^1.0.1"
loader-utils@^1.2.3:
version "1.4.0"
@@ -9664,12 +9684,12 @@ md5@^2.2.1:
crypt "~0.0.1"
is-buffer "~1.1.1"
-mdast-squeeze-paragraphs@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz#7c4c114679c3bee27ef10b58e2e015be79f1ef97"
- integrity sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ==
+mdast-squeeze-paragraphs@^3.0.0:
+ version "3.0.5"
+ resolved "https://registry.yarnpkg.com/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-3.0.5.tgz#f428b6b944f8faef454db9b58f170c4183cb2e61"
+ integrity sha512-xX6Vbe348Y/rukQlG4W3xH+7v4ZlzUbSY4HUIQCuYrF2DrkcHx584mCaFxkWoDZKNUfyLZItHC9VAqX3kIP7XA==
dependencies:
- unist-util-remove "^2.0.0"
+ unist-util-remove "^1.0.0"
mdast-util-compact@^1.0.0:
version "1.0.4"
@@ -9685,22 +9705,15 @@ mdast-util-definitions@^1.2.0, mdast-util-definitions@^1.2.3:
dependencies:
unist-util-visit "^1.0.0"
-mdast-util-definitions@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-2.0.1.tgz#2c931d8665a96670639f17f98e32c3afcfee25f3"
- integrity sha512-Co+DQ6oZlUzvUR7JCpP249PcexxygiaKk9axJh+eRzHDZJk2julbIdKB4PXHVxdBuLzvJ1Izb+YDpj2deGMOuA==
- dependencies:
- unist-util-visit "^2.0.0"
-
-mdast-util-to-hast@8.2.0, mdast-util-to-hast@^8.0.0:
- version "8.2.0"
- resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-8.2.0.tgz#adf9f824defcd382e53dd7bace4282a45602ac67"
- integrity sha512-WjH/KXtqU66XyTJQ7tg7sjvTw1OQcVV0hKdFh3BgHPwZ96fSBCQ/NitEHsN70Mmnggt+5eUUC7pCnK+2qGQnCA==
+mdast-util-to-hast@7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-7.0.0.tgz#589b562ce1ae0a7849e6c38536a9e7bc4f415e54"
+ integrity sha512-vxnXKSZgvPG2grZM3kxaF052pxsLtq8TPAkiMkqYj1nFTOazYUPXt3LFYIEB6Ws/IX7Uyvljzk64kD6DwZl/wQ==
dependencies:
collapse-white-space "^1.0.0"
detab "^2.0.0"
- mdast-util-definitions "^2.0.0"
- mdurl "^1.0.0"
+ mdast-util-definitions "^1.2.0"
+ mdurl "^1.0.1"
trim-lines "^1.0.0"
unist-builder "^2.0.0"
unist-util-generated "^1.0.0"
@@ -9724,12 +9737,27 @@ mdast-util-to-hast@^6.0.0:
unist-util-visit "^1.1.0"
xtend "^4.0.1"
+mdast-util-to-hast@^8.0.0:
+ version "8.2.0"
+ resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-8.2.0.tgz#adf9f824defcd382e53dd7bace4282a45602ac67"
+ integrity sha512-WjH/KXtqU66XyTJQ7tg7sjvTw1OQcVV0hKdFh3BgHPwZ96fSBCQ/NitEHsN70Mmnggt+5eUUC7pCnK+2qGQnCA==
+ dependencies:
+ collapse-white-space "^1.0.0"
+ detab "^2.0.0"
+ mdast-util-definitions "^2.0.0"
+ mdurl "^1.0.0"
+ trim-lines "^1.0.0"
+ unist-builder "^2.0.0"
+ unist-util-generated "^1.0.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^2.0.0"
+
mdast-util-to-string@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz#27055500103f51637bd07d01da01eb1967a43527"
integrity sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==
-mdurl@^1.0.0, mdurl@^1.0.1:
+mdurl@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e"
integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=
@@ -10850,7 +10878,7 @@ parse-asn1@^5.0.0:
pbkdf2 "^3.0.3"
safe-buffer "^5.1.1"
-parse-entities@^1.0.2, parse-entities@^1.1.0, parse-entities@^1.1.2:
+parse-entities@^1.0.2, parse-entities@^1.1.2:
version "1.2.2"
resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-1.2.2.tgz#c31bf0f653b6661354f8973559cb86dd1d5edf50"
integrity sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==
@@ -11168,6 +11196,28 @@ polished@^3.3.1:
dependencies:
"@babel/runtime" "^7.8.7"
+polyfills-loader@^1.5.4:
+ version "1.5.4"
+ resolved "https://registry.yarnpkg.com/polyfills-loader/-/polyfills-loader-1.5.4.tgz#2ec7327cff00c0c596e99d774d00099ce1554b34"
+ integrity sha512-Jttph/AKpsmtw5+HGeCqZYaKTYZ3WswVgnTuSzUZOpChSETXiYQ1eihMiTfPIoD9FpIsTb7Ow0VHTFChBvzw9g==
+ dependencies:
+ "@babel/core" "^7.9.0"
+ "@open-wc/building-utils" "^2.16.3"
+ "@webcomponents/webcomponentsjs" "^2.4.0"
+ abortcontroller-polyfill "^1.4.0"
+ core-js-bundle "^3.6.0"
+ deepmerge "^4.2.2"
+ dynamic-import-polyfill "^0.1.1"
+ es-module-shims "^0.4.6"
+ html-minifier "^4.0.0"
+ intersection-observer "^0.7.0"
+ parse5 "^5.1.1"
+ regenerator-runtime "^0.13.3"
+ resize-observer-polyfill "^1.5.1"
+ systemjs "^4.0.0"
+ terser "^4.6.7"
+ whatwg-fetch "^3.0.0"
+
polyfills-loader@^1.5.6:
version "1.5.6"
resolved "https://registry.yarnpkg.com/polyfills-loader/-/polyfills-loader-1.5.6.tgz#5bfd107ebeaaab19da84dfeeb3811fc41a49b29e"
@@ -12136,11 +12186,6 @@ remark-external-links@^5.0.0:
space-separated-tokens "^1.1.2"
unist-util-visit "^1.4.0"
-remark-footnotes@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/remark-footnotes/-/remark-footnotes-1.0.0.tgz#9c7a97f9a89397858a50033373020b1ea2aad011"
- integrity sha512-X9Ncj4cj3/CIvLI2Z9IobHtVi8FVdUrdJkCNaL9kdX8ohfsi18DXHsCVd/A7ssARBdccdDb5ODnt62WuEWaM/g==
-
remark-html@^10.0.0:
version "10.0.0"
resolved "https://registry.yarnpkg.com/remark-html/-/remark-html-10.0.0.tgz#927047c16845ec47e2c361e1d7f7c32ab72c63c7"
@@ -12161,21 +12206,42 @@ remark-html@^11.0.1:
mdast-util-to-hast "^8.0.0"
xtend "^4.0.1"
-remark-mdx@^1.6.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-1.6.0.tgz#9c9d7e4b55c0e81210ed7a8094bf53388fa618a5"
- integrity sha512-L8cHfD44yM07iPTZzLSY9q2MYdOnVdiR+Q41ntPq+CMvWjPoTqDqSAJjYrt+q9GrV+sn6HYXCgShnUxlAOV//A==
+remark-mdx@^1.5.8:
+ version "1.5.8"
+ resolved "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-1.5.8.tgz#81fd9085e56ea534b977d08d6f170899138b3f38"
+ integrity sha512-wtqqsDuO/mU/ucEo/CDp0L8SPdS2oOE6PRsMm+lQ9TLmqgep4MBmyH8bLpoc8Wf7yjNmae/5yBzUN1YUvR/SsQ==
dependencies:
- "@babel/core" "7.9.0"
+ "@babel/core" "7.8.4"
"@babel/helper-plugin-utils" "7.8.3"
- "@babel/plugin-proposal-object-rest-spread" "7.9.5"
+ "@babel/plugin-proposal-object-rest-spread" "7.8.3"
"@babel/plugin-syntax-jsx" "7.8.3"
- "@mdx-js/util" "^1.6.0"
+ "@mdx-js/util" "^1.5.8"
is-alphabetical "1.0.4"
- remark-parse "8.0.1"
- unified "9.0.0"
+ remark-parse "7.0.2"
+ unified "8.4.2"
-remark-parse@8.0.1:
+remark-parse@7.0.2, remark-parse@^7.0.0, remark-parse@^7.0.2:
+ version "7.0.2"
+ resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-7.0.2.tgz#41e7170d9c1d96c3d32cf1109600a9ed50dba7cf"
+ integrity sha512-9+my0lQS80IQkYXsMA8Sg6m9QfXYJBnXjWYN5U+kFc5/n69t+XZVXU/ZBYr3cYH8FheEGf1v87rkFDhJ8bVgMA==
+ dependencies:
+ collapse-white-space "^1.0.2"
+ is-alphabetical "^1.0.0"
+ is-decimal "^1.0.0"
+ is-whitespace-character "^1.0.0"
+ is-word-character "^1.0.0"
+ markdown-escapes "^1.0.0"
+ parse-entities "^1.1.0"
+ repeat-string "^1.5.4"
+ state-toggle "^1.0.0"
+ trim "0.0.1"
+ trim-trailing-lines "^1.0.0"
+ unherit "^1.0.4"
+ unist-util-remove-position "^1.0.0"
+ vfile-location "^2.0.0"
+ xtend "^4.0.1"
+
+remark-parse@8.0.1, remark-parse@^8.0.0:
version "8.0.1"
resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-8.0.1.tgz#7fc95d8f2b58fc6791cffb54803c763eb3756743"
integrity sha512-Ye/5W57tdQZWsfkuVyRq9SUWRgECHnDsMuyUMzdSKpTbNPkZeGtoYfsrkeSi4+Xyl0mhcPPddHITXPcCPHrl3w==
@@ -12218,49 +12284,6 @@ remark-parse@^4.0.0:
vfile-location "^2.0.0"
xtend "^4.0.1"
-remark-parse@^7.0.0, remark-parse@^7.0.2:
- version "7.0.2"
- resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-7.0.2.tgz#41e7170d9c1d96c3d32cf1109600a9ed50dba7cf"
- integrity sha512-9+my0lQS80IQkYXsMA8Sg6m9QfXYJBnXjWYN5U+kFc5/n69t+XZVXU/ZBYr3cYH8FheEGf1v87rkFDhJ8bVgMA==
- dependencies:
- collapse-white-space "^1.0.2"
- is-alphabetical "^1.0.0"
- is-decimal "^1.0.0"
- is-whitespace-character "^1.0.0"
- is-word-character "^1.0.0"
- markdown-escapes "^1.0.0"
- parse-entities "^1.1.0"
- repeat-string "^1.5.4"
- state-toggle "^1.0.0"
- trim "0.0.1"
- trim-trailing-lines "^1.0.0"
- unherit "^1.0.4"
- unist-util-remove-position "^1.0.0"
- vfile-location "^2.0.0"
- xtend "^4.0.1"
-
-remark-parse@^8.0.0:
- version "8.0.2"
- resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-8.0.2.tgz#5999bc0b9c2e3edc038800a64ff103d0890b318b"
- integrity sha512-eMI6kMRjsAGpMXXBAywJwiwAse+KNpmt+BK55Oofy4KvBZEqUDj6mWbGLJZrujoPIPPxDXzn3T9baRlpsm2jnQ==
- dependencies:
- ccount "^1.0.0"
- collapse-white-space "^1.0.2"
- is-alphabetical "^1.0.0"
- is-decimal "^1.0.0"
- is-whitespace-character "^1.0.0"
- is-word-character "^1.0.0"
- markdown-escapes "^1.0.0"
- parse-entities "^2.0.0"
- repeat-string "^1.5.4"
- state-toggle "^1.0.0"
- trim "0.0.1"
- trim-trailing-lines "^1.0.0"
- unherit "^1.0.4"
- unist-util-remove-position "^2.0.0"
- vfile-location "^3.0.0"
- xtend "^4.0.1"
-
remark-rehype@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-5.0.0.tgz#dcf85b481bfaadf262ddde9b4ecefbb7f2673e70"
@@ -12277,12 +12300,12 @@ remark-slug@^5.1.2:
mdast-util-to-string "^1.0.0"
unist-util-visit "^1.0.0"
-remark-squeeze-paragraphs@4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz#76eb0e085295131c84748c8e43810159c5653ead"
- integrity sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw==
+remark-squeeze-paragraphs@3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-3.0.4.tgz#9fe50c3bf3b572dd88754cd426ada007c0b8dc5f"
+ integrity sha512-Wmz5Yj9q+W1oryo8BV17JrOXZgUKVcpJ2ApE2pwnoHwhFKSk4Wp2PmFNbmJMgYSqAdFwfkoe+TSYop5Fy8wMgA==
dependencies:
- mdast-squeeze-paragraphs "^4.0.0"
+ mdast-squeeze-paragraphs "^3.0.0"
remark-stringify@^7.0.0:
version "7.0.4"
@@ -12463,9 +12486,9 @@ resolve-url@^0.2.1:
integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
resolve@^1.1.6, resolve@^1.10.0, resolve@^1.11.1, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.3.2:
- version "1.17.0"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444"
- integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==
+ version "1.16.1"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.16.1.tgz#49fac5d8bacf1fd53f200fa51247ae736175832c"
+ integrity sha512-rmAglCSqWWMrrBv/XM6sW0NuRFiKViw/W4d9EbC4pt+49H8JwHy+mcGmALTEg504AUDcLTvb1T2q3E9AnmY+ig==
dependencies:
path-parse "^1.0.6"
@@ -12552,12 +12575,12 @@ rollup-plugin-babel@^4.3.2:
rollup-pluginutils "^2.8.1"
rollup-plugin-index-html@^1.10.5:
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/rollup-plugin-index-html/-/rollup-plugin-index-html-1.11.1.tgz#43cdb0e9c7a0bd9e6ad7c09643eadc8452d1bc8c"
- integrity sha512-hvXF7KkKtcwrfpEnzAVahc32+LD6gDwJWHIjxxIO3aADRypQf4enOwTK0saW8BCyzIRX0t3rQoAQLwu+cP7gug==
+ version "1.11.0"
+ resolved "https://registry.yarnpkg.com/rollup-plugin-index-html/-/rollup-plugin-index-html-1.11.0.tgz#924dc06715cd55a10988d309f4aadf7aaa198ff1"
+ integrity sha512-/XOjrefVf5undG/zAa+mVRJDSTFSgjFAuHmDNCOg5H4TYffBNYg55cS2mhEed/8yv91xZ1FWdL4Z7hbSe1fwdA==
dependencies:
"@import-maps/resolve" "^0.2.6"
- "@open-wc/building-utils" "^2.16.4"
+ "@open-wc/building-utils" "^2.16.3"
deepmerge "^4.2.2"
lit-html "^1.0.0"
md5 "^2.2.1"
@@ -12605,9 +12628,11 @@ rsvp@^4.8.4:
integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==
run-async@^2.2.0, run-async@^2.4.0:
- version "2.4.1"
- resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
- integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.0.tgz#e59054a5b86876cfae07f431d18cbaddc594f1e8"
+ integrity sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==
+ dependencies:
+ is-promise "^2.1.0"
run-node@^1.0.0:
version "1.0.0"
@@ -13020,9 +13045,9 @@ source-map-resolve@^0.5.0:
urix "^0.1.0"
source-map-support@^0.5.16, source-map-support@^0.5.5, source-map-support@~0.5.12:
- version "0.5.19"
- resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61"
- integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==
+ version "0.5.17"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.17.tgz#29fe1b3c98b9dbd5064ada89052ee8ff070cb46c"
+ integrity sha512-bwdKOBZ5L0gFRh4KOxNap/J/MpvX9Yxsq9lFDx65s3o7F/NiHy7JRaGIS8MwW6tZPAq9UXE207Il0cfcb5yu/Q==
dependencies:
buffer-from "^1.0.0"
source-map "^0.6.0"
@@ -13167,9 +13192,9 @@ store2@^2.7.1:
integrity sha512-llZqXAXjG2E4FvWsZxFmBDfh6kqQuGFZm64TX23qW02Hf4dyElhDEbYx1IIVTEMKWrrDnDA9oqOjY8WHo2NgcA==
storybook-addon-markdown-docs@^0.2.3:
- version "0.2.8"
- resolved "https://registry.yarnpkg.com/storybook-addon-markdown-docs/-/storybook-addon-markdown-docs-0.2.8.tgz#c4108825cbfb0271658331506ef855572d61bab4"
- integrity sha512-p0VH8MyKb/CcL2opKwPaHkJdhjB8gL6kMTDZpVCoRqum0gguWIEjkk4upzr7ZhbdI6SPmDde0WieeB4Je5r2ug==
+ version "0.2.6"
+ resolved "https://registry.yarnpkg.com/storybook-addon-markdown-docs/-/storybook-addon-markdown-docs-0.2.6.tgz#b88683a789bd539023438d1873c892e32d7001bf"
+ integrity sha512-MdOqhe5IgnkJS+sp2iqGzWL0wByRwAFVIH/YqV6qJ25WaGvXlt8t92841jDDuIz3+54otViibTu+8KcY4a7VtQ==
dependencies:
"@babel/code-frame" "^7.8.3"
"@babel/core" "^7.9.0"
@@ -13660,9 +13685,9 @@ terser-webpack-plugin@^1.4.3:
worker-farm "^1.7.0"
terser@^4.1.2, terser@^4.6.2, terser@^4.6.7:
- version "4.6.12"
- resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.12.tgz#44b98aef8703fdb09a3491bf79b43faffc5b4fee"
- integrity sha512-fnIwuaKjFPANG6MAixC/k1TDtnl1YlPLUlLVIxxGZUn1gfUx2+l3/zGNB72wya+lgsb50QBi2tUV75RiODwnww==
+ version "4.6.11"
+ resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.11.tgz#12ff99fdd62a26de2a82f508515407eb6ccd8a9f"
+ integrity sha512-76Ynm7OXUG5xhOpblhytE7X58oeNSmC8xnNhjWVo8CksHit0U0kO4hfNbPrrYwowLWFgM2n9L176VNx2QaHmtA==
dependencies:
commander "^2.20.0"
source-map "~0.6.1"
@@ -14191,20 +14216,13 @@ unist-util-remove-position@^2.0.0:
dependencies:
unist-util-visit "^2.0.0"
-unist-util-remove@^1.0.3:
+unist-util-remove@^1.0.0, unist-util-remove@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/unist-util-remove/-/unist-util-remove-1.0.3.tgz#58ec193dfa84b52d5a055ffbc58e5444eb8031a3"
integrity sha512-mB6nCHCQK0pQffUAcCVmKgIWzG/AXs/V8qpS8K72tMPtOSCMSjDeMc5yN+Ye8rB0FhcE+JvW++o1xRNc0R+++g==
dependencies:
unist-util-is "^3.0.0"
-unist-util-remove@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/unist-util-remove/-/unist-util-remove-2.0.0.tgz#32c2ad5578802f2ca62ab808173d505b2c898488"
- integrity sha512-HwwWyNHKkeg/eXRnE11IpzY8JT55JNM1YCwwU9YNCnfzk6s8GhPXrVBBZWiwLeATJbI7euvoGSzcy9M29UeW3g==
- dependencies:
- unist-util-is "^4.0.0"
-
unist-util-select@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/unist-util-select/-/unist-util-select-3.0.1.tgz#787fc452db9ba77f0ade0e7dc53c3d9d4acc79c7"
@@ -14556,9 +14574,9 @@ void-elements@^2.0.0, void-elements@^2.0.1:
integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=
vue-docgen-api@^4.1.0:
- version "4.19.0"
- resolved "https://registry.yarnpkg.com/vue-docgen-api/-/vue-docgen-api-4.19.0.tgz#5713c5d42686954f28048e952251e6b193ac49f7"
- integrity sha512-cqCkj6n4DcybZNsM72L+4OPrV+Rllp3CDQmvkJeAREYoE35o7FDWkMl6GnWqykQvvo+jvLz3cNDLtJGxOEqvbw==
+ version "4.18.0"
+ resolved "https://registry.yarnpkg.com/vue-docgen-api/-/vue-docgen-api-4.18.0.tgz#7d066ee38983c093651cab43e040afc716eb2293"
+ integrity sha512-y59WmG4+k26567rKKvKGT0ohhrIDlM6BJLLWVM6An44OCS+1b1vRnZvnQom2PElrhz0wNhZPbfqudlwMkyclxw==
dependencies:
"@babel/parser" "^7.6.0"
"@babel/types" "^7.6.0"
@@ -14653,15 +14671,15 @@ webpack-sources@^1.4.0, webpack-sources@^1.4.1:
source-map "~0.6.1"
webpack@^4.28.0:
- version "4.43.0"
- resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.43.0.tgz#c48547b11d563224c561dad1172c8aa0b8a678e6"
- integrity sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g==
+ version "4.42.1"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.42.1.tgz#ae707baf091f5ca3ef9c38b884287cfe8f1983ef"
+ integrity sha512-SGfYMigqEfdGchGhFFJ9KyRpQKnipvEvjc1TwrXEPCM6H5Wywu10ka8o3KGrMzSMxMQKt8aCHUFh5DaQ9UmyRg==
dependencies:
"@webassemblyjs/ast" "1.9.0"
"@webassemblyjs/helper-module-context" "1.9.0"
"@webassemblyjs/wasm-edit" "1.9.0"
"@webassemblyjs/wasm-parser" "1.9.0"
- acorn "^6.4.1"
+ acorn "^6.2.1"
ajv "^6.10.2"
ajv-keywords "^3.4.1"
chrome-trace-event "^1.0.2"
@@ -14678,7 +14696,7 @@ webpack@^4.28.0:
schema-utils "^1.0.0"
tapable "^1.1.3"
terser-webpack-plugin "^1.4.3"
- watchpack "^1.6.1"
+ watchpack "^1.6.0"
webpack-sources "^1.4.1"
whatwg-fetch@>=0.10.0, whatwg-fetch@^3.0.0: