From 422725baec14d863a3429d001a6756a7e82c72bf Mon Sep 17 00:00:00 2001 From: Caleb Eby Date: Mon, 8 Aug 2022 17:51:38 -0700 Subject: [PATCH 01/11] Hey... vite (mostly) works! --- .storybook/buffer-shim.mjs | 3 + .storybook/{main.js => main-old.js} | 0 .storybook/main.ts | 70 + .storybook/object-hash-shim.cjs | 10 + .storybook/preview.js | 14 +- README.md | 2 +- package-lock.json | 3055 ++++++++++++++--- package.json | 9 +- src/components/button/button.stories.mdx | 14 +- src/components/comment/comment.stories.mdx | 4 +- .../dot-leader/dot-leader.stories.mdx | 10 +- .../event-log/event-log.stories.mdx | 10 +- .../footnote-link/footnote-link.stories.mdx | 10 +- src/components/footnote/footnote.stories.mdx | 2 +- .../ground-nav/ground-nav.stories.mdx | 10 +- src/components/icon/icon.stories.mdx | 12 +- src/components/input/input.stories.mdx | 10 +- .../media-summary/media-summary.stories.mdx | 12 +- src/design/icons/icons.stories.mdx | 27 +- src/objects/bio/bio.stories.mdx | 10 +- src/objects/container/container.stories.mdx | 2 +- .../feature-group/feature-group.stories.mdx | 10 +- .../input-group/input-group.stories.mdx | 10 +- src/objects/logo-group/logo-group.stories.mdx | 10 +- src/objects/media/media.stories.mdx | 4 +- src/objects/overview/overview.stories.mdx | 13 +- src/objects/page/page.stories.mdx | 4 +- src/objects/rhythm/rhythm.stories.mdx | 2 +- src/utilities/text/text.stories.mdx | 14 +- twing/rollup-plugin.js | 52 + 30 files changed, 2737 insertions(+), 678 deletions(-) create mode 100644 .storybook/buffer-shim.mjs rename .storybook/{main.js => main-old.js} (100%) create mode 100644 .storybook/main.ts create mode 100644 .storybook/object-hash-shim.cjs create mode 100644 twing/rollup-plugin.js diff --git a/.storybook/buffer-shim.mjs b/.storybook/buffer-shim.mjs new file mode 100644 index 000000000..691404797 --- /dev/null +++ b/.storybook/buffer-shim.mjs @@ -0,0 +1,3 @@ +import { Buffer } from 'buffer'; + +export { Buffer }; diff --git a/.storybook/main.js b/.storybook/main-old.js similarity index 100% rename from .storybook/main.js rename to .storybook/main-old.js diff --git a/.storybook/main.ts b/.storybook/main.ts new file mode 100644 index 000000000..b87062547 --- /dev/null +++ b/.storybook/main.ts @@ -0,0 +1,70 @@ +const svgr = require('@svgr/rollup').default; +const { twingPlugin } = require('../twing/rollup-plugin'); + +module.exports = { + // We load the welcome story separately so it will be the first sidebar item. + stories: [ + '../src/welcome.stories.mdx', + // '../src/**/*.stories.@(js|mdx)', + '../src/components/**/*.stories.@(js|mdx)', + ], + core: { + builder: '@storybook/builder-vite', + }, + addons: [ + { + name: '@storybook/addon-essentials', + options: { + actions: false, + backgrounds: false, + }, + }, + // '@storybook/addon-a11y', + // Disabling these two until they are fixed upstream + // 'storybook-mobile', + // '@whitespace/storybook-addon-html', + 'storybook-addon-outline', + '@etchteam/storybook-addon-status', + '@storybook/addon-postcss', + ], + async viteFinal(config: import('vite').UserConfig) { + config.plugins ||= []; + config.plugins.push(twingPlugin()); + config.plugins.push(svgr()); + + config.resolve ||= {}; + config.resolve.alias ||= {}; + config.resolve.alias['object-hash'] = require.resolve( + './object-hash-shim.cjs' + ); + + config.optimizeDeps ||= {}; + config.optimizeDeps.disabled = false; + config.optimizeDeps.include = ['twing/dist/es/browser.js']; + config.optimizeDeps.esbuildOptions = { + inject: [require.resolve('./buffer-shim.mjs')], + sourcemap: false, + minify: false, + minifyIdentifiers: false, + minifySyntax: false, + minifyWhitespace: false, + plugins: [ + // { + // name: 'fix-object-hash', + // setup(build) { + // build.onResolve({ filter: /^object-hash$/ }, async (args) => { + // return { path: require.resolve('object-hash') }; + // }); + // }, + // }, + ], + }; + + config.css ||= {}; + config.css.preprocessorOptions ||= {}; + config.css.preprocessorOptions.scss = { + importer: [require('../glob-sass-importer')], + }; + return config; + }, +}; diff --git a/.storybook/object-hash-shim.cjs b/.storybook/object-hash-shim.cjs new file mode 100644 index 000000000..60cc004d7 --- /dev/null +++ b/.storybook/object-hash-shim.cjs @@ -0,0 +1,10 @@ +const stringify = require('fast-json-stable-stringify'); +var sha512 = require('hash.js/lib/hash/sha/512'); + +const objectHash = (obj) => { + const str = stringify(obj); + return str; + // return sha512(str); +}; + +module.exports = objectHash; diff --git a/.storybook/preview.js b/.storybook/preview.js index 5e67268e7..6842b4391 100644 --- a/.storybook/preview.js +++ b/.storybook/preview.js @@ -10,6 +10,7 @@ import '../src/index-with-dependencies.scss'; import './preview.scss'; import { makeTwigInclude } from '../src/make-twig-include'; const breakpoints = tokens.size.breakpoint; +import { useState, useEffect } from 'react'; // Extend the languages Storybook will highlight ReactSyntaxHighlighter.registerLanguage('twig', twig); @@ -56,7 +57,18 @@ export const parameters = { source: { language: 'twig', }, - prepareForInline: (storyFn) => htmlToReactParser.parse(storyFn()), + prepareForInline: (storyFn) => { + const [result, setResult] = useState('

Loading...

'); + useEffect(() => { + const output = storyFn(); + if (Promise.resolve(output) === output) { + output.then((result) => setResult(result)); + } else { + setResult(output); + } + }, [storyFn]); + return htmlToReactParser.parse(result); + }, transformSource(src, storyContext) { try { const storyFunction = storyContext.originalStoryFn; diff --git a/README.md b/README.md index c7ca15013..73f7f0bcf 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -

+

# Cloud Four Patterns diff --git a/package-lock.json b/package-lock.json index 72b9e57d8..412ece758 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@cloudfour/patterns", - "version": "12.3.0", + "version": "12.3.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@cloudfour/patterns", - "version": "12.3.0", + "version": "12.3.1", "license": "MIT", "dependencies": { "focus-visible": "5.2.0", @@ -25,7 +25,9 @@ "@storybook/addon-docs": "6.5.9", "@storybook/addon-essentials": "6.5.9", "@storybook/addon-postcss": "2.0.0", + "@storybook/builder-vite": "^0.2.2", "@storybook/html": "6.5.9", + "@svgr/rollup": "^5.5.0", "@svgr/webpack": "5.5.0", "@types/jest": "28.1.6", "@types/lodash": "4.14.182", @@ -34,18 +36,22 @@ "@wordpress/block-library": "3.2.20", "babel-loader": "8.2.5", "browserify-transform-tools": "1.7.0", + "buffer": "^6.0.3", "css-loader": "5.2.7", "cssnano": "5.1.12", "eliminate": "1.1.2", "eslint": "8.20.0", "eslint-plugin-mdx": "1.17.1", "eslint-plugin-react": "7.30.1", + "fast-json-stable-stringify": "^2.1.0", "gulp": "4.0.2", "gulp-postcss": "9.0.1", "gulp-rename": "2.0.0", "gulp-run": "1.7.1", "gulp-sass": "5.1.0", "gulp-svgmin": "3.0.0", + "hash-obj": "^4.0.0", + "hash.js": "^1.1.7", "html-to-react": "1.4.8", "jabber": "1.4.0", "jest": "28.1.3", @@ -81,8 +87,7 @@ "stylelint-use-logical-spec": "4.1.0", "through2": "4.0.2", "tiny-glob": "0.2.9", - "twing": "3.1.1", - "twing-loader": "3.0.1", + "twing": "5.1.1", "typescript": "4.7.4", "val-loader": "2.1.2", "webpack": "4.46.0" @@ -212,17 +217,17 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.6.tgz", - "integrity": "sha512-YfDzdnoxHGV8CzqHGyCbFvXg5QESPFkXlHtvdCkesLjjVMT2Adxe4FGUR5ChIb3DxSaXO12iIOCWoXdsUVwnqw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz", + "integrity": "sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-function-name": "^7.18.6", - "@babel/helper-member-expression-to-functions": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.9", "@babel/helper-split-export-declaration": "^7.18.6" }, "engines": { @@ -447,6 +452,15 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-string-parser": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", + "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-validator-identifier": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", @@ -969,11 +983,15 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.12.13", - "integrity": "sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", + "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -1074,11 +1092,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.14.5", - "integrity": "sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz", + "integrity": "sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1458,60 +1477,110 @@ } }, "node_modules/@babel/plugin-transform-react-constant-elements": { - "version": "7.13.10", - "integrity": "sha512-E+aCW9j7mLq01tOuGV08YzLBt+vSyr4bOPT75B6WrAlrUfmOYOZ/yWk847EH0dv0xXiCihWLEmlX//O30YhpIw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.18.9.tgz", + "integrity": "sha512-IrTYh1I3YCEL1trjknnlLKTp5JggjzhKl/d3ibzPc97JhpFcDTr38Jdek/oX4cFbS6By0bXJcOkpRvJ5ZHK2wQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.12.13", - "integrity": "sha512-MprESJzI9O5VnJZrL7gg1MpdqmiFcUv41Jc7SahxYsNP2kDkFqClxxTZq+1Qv4AFCamm+GXMRDQINNn+qrxmiA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz", + "integrity": "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.12.17", - "integrity": "sha512-mwaVNcXV+l6qJOuRhpdTEj8sT/Z0owAVWf9QujTZ0d2ye9X/K+MTOTSizcgKOj18PGnTc/7g1I4+cIUjsKhBcw==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.18.10.tgz", + "integrity": "sha512-gCy7Iikrpu3IZjYZolFE4M1Sm+nrh1/6za2Ewj77Z+XirT4TsbJcvOFOyF+fRPwU6AKKK136CZxx6L8AbSFG6A==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/plugin-syntax-jsx": "^7.12.13", - "@babel/types": "^7.12.17" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-jsx": "^7.18.6", + "@babel/types": "^7.18.10" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.12.17", - "integrity": "sha512-BPjYV86SVuOaudFhsJR1zjgxxOhJDt6JHNoD48DxWEIxUCAMjV1ys6DYw4SDYZh0b1QsS2vfIA9t/ZsQGsDOUQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", + "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", + "dev": true, + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz", + "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.18.6.tgz", + "integrity": "sha512-utZmlASneDfdaMh0m/WausbjUjEdGrQJz0vFK93d7wD3xf5wBtX219+q6IlCNZeguIcxS2f/CvLZrlLSvSHQXw==", "dev": true, "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.12.17" + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.12.1", - "integrity": "sha512-RqeaHiwZtphSIUZ5I85PEH19LOSzxfuEazoY7/pWASCAIBuATQzpSVD+eT6MebeeZT2F4eSL0u4vw6n4Nm0Mjg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz", + "integrity": "sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -1625,13 +1694,14 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.15.4", - "integrity": "sha512-sM1/FEjwYjXvMwu1PJStH11kJ154zd/lpY56NQJ5qH2D0mabMv1CAy/kdvS9RP4Xgfj9fBBA3JiSLdDHgXdzOA==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.10.tgz", + "integrity": "sha512-j2HQCJuMbi88QftIb5zlRu3c7PU+sXNnscqsrjqegoGiCgXR569pEdben9vly5QHKL2ilYkfnSwu64zsZo/VYQ==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-typescript": "^7.14.5" + "@babel/helper-create-class-features-plugin": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-typescript": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1776,28 +1846,34 @@ } }, "node_modules/@babel/preset-react": { - "version": "7.12.13", - "integrity": "sha512-TYM0V9z6Abb6dj1K7i5NrEhA13oS5ujUYQYDfqIBXYHOc2c2VkFgc+q9kyssIyUfy4/hEwqrgSlJ/Qgv8zJLsA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz", + "integrity": "sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/plugin-transform-react-display-name": "^7.12.13", - "@babel/plugin-transform-react-jsx": "^7.12.13", - "@babel/plugin-transform-react-jsx-development": "^7.12.12", - "@babel/plugin-transform-react-pure-annotations": "^7.12.1" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-transform-react-display-name": "^7.18.6", + "@babel/plugin-transform-react-jsx": "^7.18.6", + "@babel/plugin-transform-react-jsx-development": "^7.18.6", + "@babel/plugin-transform-react-pure-annotations": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-typescript": { - "version": "7.15.0", - "integrity": "sha512-lt0Y/8V3y06Wq/8H/u0WakrqciZ7Fz7mwPDHWUJAXlABL5hiUG42BNlRXiELNjeWjO5rWmnNKlx+yzJvxezHow==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz", + "integrity": "sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-transform-typescript": "^7.15.0" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-transform-typescript": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1873,11 +1949,12 @@ } }, "node_modules/@babel/types": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", - "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.10.tgz", + "integrity": "sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ==", "dev": true, "dependencies": { + "@babel/helper-string-parser": "^7.18.10", "@babel/helper-validator-identifier": "^7.18.6", "to-fast-properties": "^2.0.0" }, @@ -2638,6 +2715,22 @@ "node": "^14 || ^16 || ^17 || ^18" } }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.53.tgz", + "integrity": "sha512-W2dAL6Bnyn4xa/QRSU3ilIK4EzD5wgYXKXJiS1HDF5vU3675qc2bvFyLwbUcdmssDveyndy7FbitrCoiV/eMLg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@eslint/eslintrc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", @@ -4365,6 +4458,73 @@ "node": ">=8" } }, + "node_modules/@joshwooding/vite-plugin-react-docgen-typescript": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@joshwooding/vite-plugin-react-docgen-typescript/-/vite-plugin-react-docgen-typescript-0.0.5.tgz", + "integrity": "sha512-HwAEj/vAP1+hzBfIv9DTCyg+1O0/LG48Up7j1RmJ+pFwjb/wRxzUBco4LqKFKe7SZ0M6IyASNh1oKP3yHnJElA==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^4.2.1", + "glob": "^7.2.0", + "glob-promise": "^4.2.0", + "magic-string": "^0.26.1", + "react-docgen-typescript": "^2.1.1" + }, + "peerDependencies": { + "typescript": ">= 4.3.x", + "vite": ">2.0.0-0" + } + }, + "node_modules/@joshwooding/vite-plugin-react-docgen-typescript/node_modules/@rollup/pluginutils": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", + "dev": true, + "dependencies": { + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/@joshwooding/vite-plugin-react-docgen-typescript/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/@joshwooding/vite-plugin-react-docgen-typescript/node_modules/glob-promise": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/glob-promise/-/glob-promise-4.2.2.tgz", + "integrity": "sha512-xcUzJ8NWN5bktoTIX7eOclO1Npxd/dyVqUJxlLIDasT4C7KZyqlPIwkdJ0Ypiy3p2ZKahTjK4M9uC3sNSfNMzw==", + "dev": true, + "dependencies": { + "@types/glob": "^7.1.3" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/ahmadnassri" + }, + "peerDependencies": { + "glob": "^7.1.6" + } + }, + "node_modules/@joshwooding/vite-plugin-react-docgen-typescript/node_modules/magic-string": { + "version": "0.26.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz", + "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", @@ -7603,6 +7763,126 @@ "react-dom": "^16.8.0 || ^17.0.0" } }, + "node_modules/@storybook/builder-vite": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-0.2.2.tgz", + "integrity": "sha512-kFY/Rbk+Bu5KmXOCP8CMxp6gfbNGGyNZwikWZe21NHcrVzwHg/aTs+MR37maRqlWcpJvTZmbkKMHak0+vDqpvw==", + "dev": true, + "dependencies": { + "@joshwooding/vite-plugin-react-docgen-typescript": "0.0.5", + "@rollup/pluginutils": "^4.2.1", + "@storybook/core-common": "^6.4.3", + "@storybook/mdx1-csf": "^0.0.4", + "@storybook/node-logger": "^6.4.3", + "@storybook/source-loader": "^6.4.3", + "@vitejs/plugin-react": "^2.0.0", + "ast-types": "^0.14.2", + "es-module-lexer": "^0.9.3", + "glob": "^7.2.0", + "glob-promise": "^4.2.0", + "magic-string": "^0.26.1", + "react-docgen": "^6.0.0-alpha.0", + "slash": "^3.0.0", + "sveltedoc-parser": "^4.2.1" + }, + "peerDependencies": { + "@storybook/mdx2-csf": "^0.0.3", + "vite": ">= 3.0.0" + }, + "peerDependenciesMeta": { + "@storybook/mdx2-csf": { + "optional": true + } + } + }, + "node_modules/@storybook/builder-vite/node_modules/@rollup/pluginutils": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", + "dev": true, + "dependencies": { + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/@storybook/builder-vite/node_modules/@storybook/mdx1-csf": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@storybook/mdx1-csf/-/mdx1-csf-0.0.4.tgz", + "integrity": "sha512-xxUEMy0D+0G1aSYxbeVNbs+XBU5nCqW4I7awpBYSTywXDv/MJWeC6FDRpj5P1pgfq8j8jWDD5ZDvBQ7syFg0LQ==", + "dev": true, + "dependencies": { + "@babel/generator": "^7.12.11", + "@babel/parser": "^7.12.11", + "@babel/preset-env": "^7.12.11", + "@babel/types": "^7.12.11", + "@mdx-js/mdx": "^1.6.22", + "@mdx-js/react": "^1.6.22", + "@types/lodash": "^4.14.167", + "js-string-escape": "^1.0.1", + "loader-utils": "^2.0.0", + "lodash": "^4.17.21", + "prettier": ">=2.2.1 <=2.3.0", + "ts-dedent": "^2.0.0" + } + }, + "node_modules/@storybook/builder-vite/node_modules/es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true + }, + "node_modules/@storybook/builder-vite/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/@storybook/builder-vite/node_modules/glob-promise": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/glob-promise/-/glob-promise-4.2.2.tgz", + "integrity": "sha512-xcUzJ8NWN5bktoTIX7eOclO1Npxd/dyVqUJxlLIDasT4C7KZyqlPIwkdJ0Ypiy3p2ZKahTjK4M9uC3sNSfNMzw==", + "dev": true, + "dependencies": { + "@types/glob": "^7.1.3" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/ahmadnassri" + }, + "peerDependencies": { + "glob": "^7.1.6" + } + }, + "node_modules/@storybook/builder-vite/node_modules/magic-string": { + "version": "0.26.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz", + "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-vite/node_modules/prettier": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.0.tgz", + "integrity": "sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/@storybook/builder-webpack4": { "version": "6.5.9", "resolved": "https://registry.npmjs.org/@storybook/builder-webpack4/-/builder-webpack4-6.5.9.tgz", @@ -11810,6 +12090,29 @@ "node": ">=10" } }, + "node_modules/@svgr/rollup": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/rollup/-/rollup-5.5.0.tgz", + "integrity": "sha512-EiZmH2VTr+Xzyb6Ga8XtGa9MEbiU3WQnB5vHmqhwAUqibU3uwuwr7MN+QwIh/gtBk1ucMim8BCfcRTlLVREM8A==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/plugin-transform-react-constant-elements": "^7.12.1", + "@babel/preset-env": "^7.12.1", + "@babel/preset-react": "^7.12.5", + "@svgr/core": "^5.5.0", + "@svgr/plugin-jsx": "^5.5.0", + "@svgr/plugin-svgo": "^5.5.0", + "rollup-pluginutils": "^2.8.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, "node_modules/@svgr/webpack": { "version": "5.5.0", "integrity": "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==", @@ -12561,6 +12864,39 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@vitejs/plugin-react": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-2.0.0.tgz", + "integrity": "sha512-zHkRR+X4zqEPNBbKV2FvWSxK7Q6crjMBVIAYroSU8Nbb4M3E5x4qOiLoqJBHtXgr27kfednXjkwr3lr8jS6Wrw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.18.6", + "@babel/plugin-transform-react-jsx": "^7.18.6", + "@babel/plugin-transform-react-jsx-development": "^7.18.6", + "@babel/plugin-transform-react-jsx-self": "^7.18.6", + "@babel/plugin-transform-react-jsx-source": "^7.18.6", + "magic-string": "^0.26.2", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": ">=14.18.0" + }, + "peerDependencies": { + "vite": "^3.0.0" + } + }, + "node_modules/@vitejs/plugin-react/node_modules/magic-string": { + "version": "0.26.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz", + "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/@webassemblyjs/ast": { "version": "1.9.0", "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", @@ -14980,6 +15316,24 @@ "node": ">=0.10.0" } }, + "node_modules/ast-types": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz", + "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==", + "dev": true, + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ast-types/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, "node_modules/astral-regex": { "version": "2.0.0", "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", @@ -16258,13 +16612,27 @@ } }, "node_modules/buffer": { - "version": "4.9.2", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" } }, "node_modules/buffer-crc32": { @@ -16361,6 +16729,144 @@ "node": ">= 0.8" } }, + "node_modules/c8": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/c8/-/c8-7.12.0.tgz", + "integrity": "sha512-CtgQrHOkyxr5koX1wEUmN/5cfDa2ckbHRA4Gy5LAL0zaCFtVWJS5++n+w4/sr2GWGerBxgTjpKeDclk/Qk6W/A==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@istanbuljs/schema": "^0.1.3", + "find-up": "^5.0.0", + "foreground-child": "^2.0.0", + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-reports": "^3.1.4", + "rimraf": "^3.0.2", + "test-exclude": "^6.0.0", + "v8-to-istanbul": "^9.0.0", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9" + }, + "bin": { + "c8": "bin/c8.js" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/c8/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/c8/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/c8/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/c8/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/c8/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/c8/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/c8/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/c8/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/cacache": { "version": "15.3.0", "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", @@ -19428,9 +19934,9 @@ } }, "node_modules/esbuild": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.42.tgz", - "integrity": "sha512-V0uPZotCEHokJdNqyozH6qsaQXqmZEOiZWrXnds/zaH/0SyrIayRXWRB98CENO73MIZ9T3HBIOsmds5twWtmgw==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.53.tgz", + "integrity": "sha512-ohO33pUBQ64q6mmheX1mZ8mIXj8ivQY/L4oVuAshr+aJI+zLl+amrp3EodrUNDNYVrKJXGPfIHFGhO8slGRjuw==", "dev": true, "hasInstallScript": true, "bin": { @@ -19440,32 +19946,33 @@ "node": ">=12" }, "optionalDependencies": { - "esbuild-android-64": "0.14.42", - "esbuild-android-arm64": "0.14.42", - "esbuild-darwin-64": "0.14.42", - "esbuild-darwin-arm64": "0.14.42", - "esbuild-freebsd-64": "0.14.42", - "esbuild-freebsd-arm64": "0.14.42", - "esbuild-linux-32": "0.14.42", - "esbuild-linux-64": "0.14.42", - "esbuild-linux-arm": "0.14.42", - "esbuild-linux-arm64": "0.14.42", - "esbuild-linux-mips64le": "0.14.42", - "esbuild-linux-ppc64le": "0.14.42", - "esbuild-linux-riscv64": "0.14.42", - "esbuild-linux-s390x": "0.14.42", - "esbuild-netbsd-64": "0.14.42", - "esbuild-openbsd-64": "0.14.42", - "esbuild-sunos-64": "0.14.42", - "esbuild-windows-32": "0.14.42", - "esbuild-windows-64": "0.14.42", - "esbuild-windows-arm64": "0.14.42" + "@esbuild/linux-loong64": "0.14.53", + "esbuild-android-64": "0.14.53", + "esbuild-android-arm64": "0.14.53", + "esbuild-darwin-64": "0.14.53", + "esbuild-darwin-arm64": "0.14.53", + "esbuild-freebsd-64": "0.14.53", + "esbuild-freebsd-arm64": "0.14.53", + "esbuild-linux-32": "0.14.53", + "esbuild-linux-64": "0.14.53", + "esbuild-linux-arm": "0.14.53", + "esbuild-linux-arm64": "0.14.53", + "esbuild-linux-mips64le": "0.14.53", + "esbuild-linux-ppc64le": "0.14.53", + "esbuild-linux-riscv64": "0.14.53", + "esbuild-linux-s390x": "0.14.53", + "esbuild-netbsd-64": "0.14.53", + "esbuild-openbsd-64": "0.14.53", + "esbuild-sunos-64": "0.14.53", + "esbuild-windows-32": "0.14.53", + "esbuild-windows-64": "0.14.53", + "esbuild-windows-arm64": "0.14.53" } }, "node_modules/esbuild-android-64": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.42.tgz", - "integrity": "sha512-P4Y36VUtRhK/zivqGVMqhptSrFILAGlYp0Z8r9UQqHJ3iWztRCNWnlBzD9HRx0DbueXikzOiwyOri+ojAFfW6A==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.53.tgz", + "integrity": "sha512-fIL93sOTnEU+NrTAVMIKiAw0YH22HWCAgg4N4Z6zov2t0kY9RAJ50zY9ZMCQ+RT6bnOfDt8gCTnt/RaSNA2yRA==", "cpu": [ "x64" ], @@ -19479,9 +19986,9 @@ } }, "node_modules/esbuild-android-arm64": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.42.tgz", - "integrity": "sha512-0cOqCubq+RWScPqvtQdjXG3Czb3AWI2CaKw3HeXry2eoA2rrPr85HF7IpdU26UWdBXgPYtlTN1LUiuXbboROhg==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.53.tgz", + "integrity": "sha512-PC7KaF1v0h/nWpvlU1UMN7dzB54cBH8qSsm7S9mkwFA1BXpaEOufCg8hdoEI1jep0KeO/rjZVWrsH8+q28T77A==", "cpu": [ "arm64" ], @@ -19495,9 +20002,9 @@ } }, "node_modules/esbuild-darwin-64": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.42.tgz", - "integrity": "sha512-ipiBdCA3ZjYgRfRLdQwP82rTiv/YVMtW36hTvAN5ZKAIfxBOyPXY7Cejp3bMXWgzKD8B6O+zoMzh01GZsCuEIA==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.53.tgz", + "integrity": "sha512-gE7P5wlnkX4d4PKvLBUgmhZXvL7lzGRLri17/+CmmCzfncIgq8lOBvxGMiQ4xazplhxq+72TEohyFMZLFxuWvg==", "cpu": [ "x64" ], @@ -19511,9 +20018,9 @@ } }, "node_modules/esbuild-darwin-arm64": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.42.tgz", - "integrity": "sha512-bU2tHRqTPOaoH/4m0zYHbFWpiYDmaA0gt90/3BMEFaM0PqVK/a6MA2V/ypV5PO0v8QxN6gH5hBPY4YJ2lopXgA==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.53.tgz", + "integrity": "sha512-otJwDU3hnI15Q98PX4MJbknSZ/WSR1I45il7gcxcECXzfN4Mrpft5hBDHXNRnCh+5858uPXBXA1Vaz2jVWLaIA==", "cpu": [ "arm64" ], @@ -19527,9 +20034,9 @@ } }, "node_modules/esbuild-freebsd-64": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.42.tgz", - "integrity": "sha512-75h1+22Ivy07+QvxHyhVqOdekupiTZVLN1PMwCDonAqyXd8TVNJfIRFrdL8QmSJrOJJ5h8H1I9ETyl2L8LQDaw==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.53.tgz", + "integrity": "sha512-WkdJa8iyrGHyKiPF4lk0MiOF87Q2SkE+i+8D4Cazq3/iqmGPJ6u49je300MFi5I2eUsQCkaOWhpCVQMTKGww2w==", "cpu": [ "x64" ], @@ -19543,9 +20050,9 @@ } }, "node_modules/esbuild-freebsd-arm64": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.42.tgz", - "integrity": "sha512-W6Jebeu5TTDQMJUJVarEzRU9LlKpNkPBbjqSu+GUPTHDCly5zZEQq9uHkmHHl7OKm+mQ2zFySN83nmfCeZCyNA==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.53.tgz", + "integrity": "sha512-9T7WwCuV30NAx0SyQpw8edbKvbKELnnm1FHg7gbSYaatH+c8WJW10g/OdM7JYnv7qkimw2ZTtSA+NokOLd2ydQ==", "cpu": [ "arm64" ], @@ -19559,9 +20066,9 @@ } }, "node_modules/esbuild-linux-32": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.42.tgz", - "integrity": "sha512-Ooy/Bj+mJ1z4jlWcK5Dl6SlPlCgQB9zg1UrTCeY8XagvuWZ4qGPyYEWGkT94HUsRi2hKsXvcs6ThTOjBaJSMfg==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.53.tgz", + "integrity": "sha512-VGanLBg5en2LfGDgLEUxQko2lqsOS7MTEWUi8x91YmsHNyzJVT/WApbFFx3MQGhkf+XdimVhpyo5/G0PBY91zg==", "cpu": [ "ia32" ], @@ -19575,9 +20082,9 @@ } }, "node_modules/esbuild-linux-64": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.42.tgz", - "integrity": "sha512-2L0HbzQfbTuemUWfVqNIjOfaTRt9zsvjnme6lnr7/MO9toz/MJ5tZhjqrG6uDWDxhsaHI2/nsDgrv8uEEN2eoA==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.53.tgz", + "integrity": "sha512-pP/FA55j/fzAV7N9DF31meAyjOH6Bjuo3aSKPh26+RW85ZEtbJv9nhoxmGTd9FOqjx59Tc1ZbrJabuiXlMwuZQ==", "cpu": [ "x64" ], @@ -19591,9 +20098,9 @@ } }, "node_modules/esbuild-linux-arm": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.42.tgz", - "integrity": "sha512-STq69yzCMhdRaWnh29UYrLSr/qaWMm/KqwaRF1pMEK7kDiagaXhSL1zQGXbYv94GuGY/zAwzK98+6idCMUOOCg==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.53.tgz", + "integrity": "sha512-/u81NGAVZMopbmzd21Nu/wvnKQK3pT4CrvQ8BTje1STXcQAGnfyKgQlj3m0j2BzYbvQxSy+TMck4TNV2onvoPA==", "cpu": [ "arm" ], @@ -19607,9 +20114,9 @@ } }, "node_modules/esbuild-linux-arm64": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.42.tgz", - "integrity": "sha512-c3Ug3e9JpVr8jAcfbhirtpBauLxzYPpycjWulD71CF6ZSY26tvzmXMJYooQ2YKqDY4e/fPu5K8bm7MiXMnyxuA==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.53.tgz", + "integrity": "sha512-GDmWITT+PMsjCA6/lByYk7NyFssW4Q6in32iPkpjZ/ytSyH+xeEx8q7HG3AhWH6heemEYEWpTll/eui3jwlSnw==", "cpu": [ "arm64" ], @@ -19623,9 +20130,9 @@ } }, "node_modules/esbuild-linux-mips64le": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.42.tgz", - "integrity": "sha512-QuvpHGbYlkyXWf2cGm51LBCHx6eUakjaSrRpUqhPwjh/uvNUYvLmz2LgPTTPwCqaKt0iwL+OGVL0tXA5aDbAbg==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.53.tgz", + "integrity": "sha512-d6/XHIQW714gSSp6tOOX2UscedVobELvQlPMkInhx1NPz4ThZI9uNLQ4qQJHGBGKGfu+rtJsxM4NVHLhnNRdWQ==", "cpu": [ "mips64el" ], @@ -19639,9 +20146,9 @@ } }, "node_modules/esbuild-linux-ppc64le": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.42.tgz", - "integrity": "sha512-8ohIVIWDbDT+i7lCx44YCyIRrOW1MYlks9fxTo0ME2LS/fxxdoJBwHWzaDYhjvf8kNpA+MInZvyOEAGoVDrMHg==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.53.tgz", + "integrity": "sha512-ndnJmniKPCB52m+r6BtHHLAOXw+xBCWIxNnedbIpuREOcbSU/AlyM/2dA3BmUQhsHdb4w3amD5U2s91TJ3MzzA==", "cpu": [ "ppc64" ], @@ -19655,9 +20162,9 @@ } }, "node_modules/esbuild-linux-riscv64": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.42.tgz", - "integrity": "sha512-DzDqK3TuoXktPyG1Lwx7vhaF49Onv3eR61KwQyxYo4y5UKTpL3NmuarHSIaSVlTFDDpcIajCDwz5/uwKLLgKiQ==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.53.tgz", + "integrity": "sha512-yG2sVH+QSix6ct4lIzJj329iJF3MhloLE6/vKMQAAd26UVPVkhMFqFopY+9kCgYsdeWvXdPgmyOuKa48Y7+/EQ==", "cpu": [ "riscv64" ], @@ -19671,9 +20178,9 @@ } }, "node_modules/esbuild-linux-s390x": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.42.tgz", - "integrity": "sha512-YFRhPCxl8nb//Wn6SiS5pmtplBi4z9yC2gLrYoYI/tvwuB1jldir9r7JwAGy1Ck4D7sE7wBN9GFtUUX/DLdcEQ==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.53.tgz", + "integrity": "sha512-OCJlgdkB+XPYndHmw6uZT7jcYgzmx9K+28PVdOa/eLjdoYkeAFvH5hTwX4AXGLZLH09tpl4bVsEtvuyUldaNCg==", "cpu": [ "s390x" ], @@ -19687,9 +20194,9 @@ } }, "node_modules/esbuild-netbsd-64": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.42.tgz", - "integrity": "sha512-QYSD2k+oT9dqB/4eEM9c+7KyNYsIPgzYOSrmfNGDIyJrbT1d+CFVKvnKahDKNJLfOYj8N4MgyFaU9/Ytc6w5Vw==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.53.tgz", + "integrity": "sha512-gp2SB+Efc7MhMdWV2+pmIs/Ja/Mi5rjw+wlDmmbIn68VGXBleNgiEZG+eV2SRS0kJEUyHNedDtwRIMzaohWedQ==", "cpu": [ "x64" ], @@ -19703,9 +20210,9 @@ } }, "node_modules/esbuild-openbsd-64": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.42.tgz", - "integrity": "sha512-M2meNVIKWsm2HMY7+TU9AxM7ZVwI9havdsw6m/6EzdXysyCFFSoaTQ/Jg03izjCsK17FsVRHqRe26Llj6x0MNA==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.53.tgz", + "integrity": "sha512-eKQ30ZWe+WTZmteDYg8S+YjHV5s4iTxeSGhJKJajFfQx9TLZJvsJX0/paqwP51GicOUruFpSUAs2NCc0a4ivQQ==", "cpu": [ "x64" ], @@ -19719,9 +20226,9 @@ } }, "node_modules/esbuild-sunos-64": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.42.tgz", - "integrity": "sha512-uXV8TAZEw36DkgW8Ak3MpSJs1ofBb3Smkc/6pZ29sCAN1KzCAQzsje4sUwugf+FVicrHvlamCOlFZIXgct+iqQ==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.53.tgz", + "integrity": "sha512-OWLpS7a2FrIRukQqcgQqR1XKn0jSJoOdT+RlhAxUoEQM/IpytS3FXzCJM6xjUYtpO5GMY0EdZJp+ur2pYdm39g==", "cpu": [ "x64" ], @@ -19735,9 +20242,9 @@ } }, "node_modules/esbuild-windows-32": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.42.tgz", - "integrity": "sha512-4iw/8qWmRICWi9ZOnJJf9sYt6wmtp3hsN4TdI5NqgjfOkBVMxNdM9Vt3626G1Rda9ya2Q0hjQRD9W1o+m6Lz6g==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.53.tgz", + "integrity": "sha512-m14XyWQP5rwGW0tbEfp95U6A0wY0DYPInWBB7D69FAXUpBpBObRoGTKRv36lf2RWOdE4YO3TNvj37zhXjVL5xg==", "cpu": [ "ia32" ], @@ -19751,9 +20258,9 @@ } }, "node_modules/esbuild-windows-64": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.42.tgz", - "integrity": "sha512-j3cdK+Y3+a5H0wHKmLGTJcq0+/2mMBHPWkItR3vytp/aUGD/ua/t2BLdfBIzbNN9nLCRL9sywCRpOpFMx3CxzA==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.53.tgz", + "integrity": "sha512-s9skQFF0I7zqnQ2K8S1xdLSfZFsPLuOGmSx57h2btSEswv0N0YodYvqLcJMrNMXh6EynOmWD7rz+0rWWbFpIHQ==", "cpu": [ "x64" ], @@ -19767,9 +20274,9 @@ } }, "node_modules/esbuild-windows-arm64": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.42.tgz", - "integrity": "sha512-+lRAARnF+hf8J0mN27ujO+VbhPbDqJ8rCcJKye4y7YZLV6C4n3pTRThAb388k/zqF5uM0lS5O201u0OqoWSicw==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.53.tgz", + "integrity": "sha512-E+5Gvb+ZWts+00T9II6wp2L3KG2r3iGxByqd/a1RmLmYWVsSVUjkvIxZuJ3hYTIbhLkH5PRwpldGTKYqVz0nzQ==", "cpu": [ "arm64" ], @@ -20804,6 +21311,20 @@ "node": ">=4.0" } }, + "node_modules/estree-to-babel": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/estree-to-babel/-/estree-to-babel-3.2.1.tgz", + "integrity": "sha512-YNF+mZ/Wu2FU/gvmzuWtYc8rloubL7wfXCTgouFrnjGVXPA/EeYYA7pupXWrb3Iv1cTBeSSxxJIbK23l4MRNqg==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.1.6", + "@babel/types": "^7.2.0", + "c8": "^7.6.0" + }, + "engines": { + "node": ">=8.3.0" + } + }, "node_modules/estree-walker": { "version": "1.0.1", "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", @@ -21527,6 +22048,7 @@ }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, @@ -22021,6 +22543,78 @@ "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", "dev": true }, + "node_modules/foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/foreground-child/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/foreground-child/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/foreground-child/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/foreground-child/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/foreground-child/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/fork-ts-checker-webpack-plugin": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.2.tgz", @@ -23836,8 +24430,38 @@ } ] }, + "node_modules/hash-obj": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hash-obj/-/hash-obj-4.0.0.tgz", + "integrity": "sha512-FwO1BUVWkyHasWDW4S8o0ssQXjvyghLV2rfVhnN36b2bbcj45eGiuzdn9XOvOpjV3TKQD7Gm2BWNXdE9V4KKYg==", + "dev": true, + "dependencies": { + "is-obj": "^3.0.0", + "sort-keys": "^5.0.0", + "type-fest": "^1.0.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/hash-obj/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/hash.js": { "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "dev": true, "dependencies": { @@ -24192,6 +24816,38 @@ "node": ">= 6" } }, + "node_modules/html-minifier-terser/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/html-minifier-terser/node_modules/terser": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", + "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/html-minifier-terser/node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, "node_modules/html-tags": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz", @@ -24395,6 +25051,112 @@ "readable-stream": "^3.1.1" } }, + "node_modules/htmlparser2-svelte": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2-svelte/-/htmlparser2-svelte-4.1.0.tgz", + "integrity": "sha512-+4f4RBFz7Rj2Hp0ZbFbXC+Kzbd6S9PgjiuFtdT76VMNgKogrEZy0pG2UrPycPbrZzVEIM5lAT3lAdkSTCHLPjg==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^3.0.0", + "domutils": "^2.0.0", + "entities": "^2.0.0" + } + }, + "node_modules/htmlparser2-svelte/node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/htmlparser2-svelte/node_modules/dom-serializer/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/htmlparser2-svelte/node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/htmlparser2-svelte/node_modules/domhandler": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz", + "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/htmlparser2-svelte/node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/htmlparser2-svelte/node_modules/domutils/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/htmlparser2-svelte/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/htmlparser2/node_modules/readable-stream": { "version": "3.6.0", "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", @@ -25143,6 +25905,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-3.0.0.tgz", + "integrity": "sha512-IlsXEHOjtKhpN8r/tRFj2nDyTmHvcfNeu/nrRIcXE17ROeatXchkojffa1SpdqW4cr/Fj6QkEf/Gn4zf6KKvEQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-object": { "version": "1.0.2", "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==", @@ -30123,6 +30897,18 @@ "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", "dev": true }, + "node_modules/node-dir": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", + "integrity": "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==", + "dev": true, + "dependencies": { + "minimatch": "^3.0.2" + }, + "engines": { + "node": ">= 0.10.5" + } + }, "node_modules/node-fetch": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", @@ -30200,6 +30986,17 @@ "vm-browserify": "^1.0.1" } }, + "node_modules/node-libs-browser/node_modules/buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, "node_modules/node-libs-browser/node_modules/punycode": { "version": "1.4.1", "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", @@ -30468,14 +31265,6 @@ "node": ">=0.10.0" } }, - "node_modules/object-hash": { - "version": "1.3.1", - "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==", - "dev": true, - "engines": { - "node": ">= 0.10.0" - } - }, "node_modules/object-inspect": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.1.tgz", @@ -33269,6 +34058,57 @@ "react-dom": "^0.14 || ^15.5.4 || ^16.1.1" } }, + "node_modules/react-docgen": { + "version": "6.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-6.0.0-alpha.3.tgz", + "integrity": "sha512-DDLvB5EV9As1/zoUsct6Iz2Cupw9FObEGD3DMcIs3EDFIoSKyz8FZtoWj3Wj+oodrU4/NfidN0BL5yrapIcTSA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.7.5", + "@babel/generator": "^7.12.11", + "ast-types": "^0.14.2", + "commander": "^2.19.0", + "doctrine": "^3.0.0", + "estree-to-babel": "^3.1.0", + "neo-async": "^2.6.1", + "node-dir": "^0.1.10", + "resolve": "^1.17.0", + "strip-indent": "^3.0.0" + }, + "bin": { + "react-docgen": "bin/react-docgen.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/react-docgen-typescript": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-2.2.2.tgz", + "integrity": "sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==", + "dev": true, + "peerDependencies": { + "typescript": ">= 4.3.x" + } + }, + "node_modules/react-docgen/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/react-docgen/node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/react-dom": { "version": "16.14.0", "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", @@ -33426,6 +34266,15 @@ "react": "^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0" } }, + "node_modules/react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/react-resize-aware": { "version": "3.1.0", "integrity": "sha512-bIhHlxVTX7xKUz14ksXMEHjzCZPTpQZKZISY3nbTD273pDKPABGFNFBP6Tr42KECxzC5YQiKpMchjTVJCqaxpA==", @@ -34992,35 +35841,6 @@ "rollup": "^2.0.0" } }, - "node_modules/rollup-plugin-terser/node_modules/commander": { - "version": "2.20.3", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/rollup-plugin-terser/node_modules/source-map": { - "version": "0.7.3", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/rollup-plugin-terser/node_modules/terser": { - "version": "5.6.1", - "integrity": "sha512-yv9YLFQQ+3ZqgWCUk+pvNJwgUTdlIxUk1WTN+RnaFJe2L7ipG2csPT0ra2XRm7Cs8cxN7QXmK1rFzEwYEQkzXw==", - "dev": true, - "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.19" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/rollup-pluginutils": { "version": "2.8.2", "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", @@ -36199,6 +37019,33 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, + "node_modules/sort-keys": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-5.0.0.tgz", + "integrity": "sha512-Pdz01AvCAottHTPQGzndktFNdbRA75BgOfeT1hH+AMnJFv8lynkPi42rfeEhpx1saTEI3YNMWxfqu0sFD1G8pw==", + "dev": true, + "dependencies": { + "is-plain-obj": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/sort-keys/node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/source-list-map": { "version": "2.0.1", "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", @@ -37720,6 +38567,357 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/sveltedoc-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/sveltedoc-parser/-/sveltedoc-parser-4.2.1.tgz", + "integrity": "sha512-sWJRa4qOfRdSORSVw9GhfDEwsbsYsegnDzBevUCF6k/Eis/QqCu9lJ6I0+d/E2wOWCjOhlcJ3+jl/Iur+5mmCw==", + "dev": true, + "dependencies": { + "eslint": "8.4.1", + "espree": "9.2.0", + "htmlparser2-svelte": "4.1.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/sveltedoc-parser/node_modules/acorn": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/sveltedoc-parser/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/sveltedoc-parser/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/sveltedoc-parser/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/sveltedoc-parser/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/sveltedoc-parser/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/sveltedoc-parser/node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/sveltedoc-parser/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/sveltedoc-parser/node_modules/eslint": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.4.1.tgz", + "integrity": "sha512-TxU/p7LB1KxQ6+7aztTnO7K0i+h0tDi81YRY9VzB6Id71kNz+fFYnf5HD5UOQmxkzcoa0TlVZf9dpMtUv0GpWg==", + "dev": true, + "dependencies": { + "@eslint/eslintrc": "^1.0.5", + "@humanwhocodes/config-array": "^0.9.2", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.0", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.1.0", + "espree": "^9.2.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.2.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/sveltedoc-parser/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/sveltedoc-parser/node_modules/espree": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.2.0.tgz", + "integrity": "sha512-oP3utRkynpZWF/F2x/HZJ+AGtnIclaR7z1pYPxy7NYM2fSO6LgK/Rkny8anRSPK/VwEA1eqm2squui0T7ZMOBg==", + "dev": true, + "dependencies": { + "acorn": "^8.6.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^3.1.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/sveltedoc-parser/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/sveltedoc-parser/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/sveltedoc-parser/node_modules/globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/sveltedoc-parser/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sveltedoc-parser/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/sveltedoc-parser/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sveltedoc-parser/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sveltedoc-parser/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sveltedoc-parser/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/sveltedoc-parser/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sveltedoc-parser/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/sveltedoc-parser/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/sveltedoc-parser/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/sveltedoc-parser/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/sver-compat": { "version": "1.5.0", "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", @@ -38052,19 +39250,21 @@ } }, "node_modules/terser": { - "version": "4.8.0", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "version": "5.14.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", + "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", "dev": true, "dependencies": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" + "source-map-support": "~0.5.20" }, "bin": { "terser": "bin/terser" }, "engines": { - "node": ">=6.0.0" + "node": ">=10" } }, "node_modules/terser-webpack-plugin": { @@ -38094,24 +39294,6 @@ "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/terser-webpack-plugin/node_modules/acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/terser-webpack-plugin/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, "node_modules/terser-webpack-plugin/node_modules/find-cache-dir": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", @@ -38195,22 +39377,16 @@ "node": ">=0.10.0" } }, - "node_modules/terser-webpack-plugin/node_modules/terser": { - "version": "5.14.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.1.tgz", - "integrity": "sha512-+ahUAE+iheqBTDxXhTisdA8hgvbEG1hHOQ9xmNjeUJSoi6DU/gMrKNcfZjHkyY6Alnuyc+ikYJaxxfHkT3+WuQ==", + "node_modules/terser/node_modules/acorn": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", "dev": true, - "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, "bin": { - "terser": "bin/terser" + "acorn": "bin/acorn" }, "engines": { - "node": ">=10" + "node": ">=0.4.0" } }, "node_modules/terser/node_modules/commander": { @@ -38218,14 +39394,6 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, - "node_modules/terser/node_modules/source-map": { - "version": "0.6.1", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/test-exclude": { "version": "6.0.0", "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", @@ -38698,8 +39866,9 @@ } }, "node_modules/twing": { - "version": "3.1.1", - "integrity": "sha512-h/yXQC3lJpjtw19e6eGNPT+PAGmD4C13ynrDG7ayJDT7Rz/4j+GhWajIv+iJ/PCYz9JbcirwHjhyJBMhmhpj0w==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/twing/-/twing-5.1.1.tgz", + "integrity": "sha512-hLEifWOfxHqTim7WZzpYE2H+J1P/q/fGlX67tdqu9q34qG8T6Yo1qhTBJTOUrkQli40clDv0t/dMKOnw8BiIIg==", "dev": true, "dependencies": { "@types/luxon": "^1.4.0", @@ -38725,52 +39894,13 @@ "snake-case": "^2.1.0", "source-map": "^0.6.1", "tmp": "0.0.33", - "twig-lexer": "^0.7.0", - "utf8-binary-cutter": "^0.9.2", - "var-validator": "0.0.3" + "twig-lexer": "^0.7.2", + "utf8-binary-cutter": "^0.9.2" }, "engines": { "node": ">=6.0.0" } }, - "node_modules/twing-loader": { - "version": "3.0.1", - "integrity": "sha512-rwTo5v67IiITOC+ohbzvOKnHQkQVRtpxP+s2m3RT10YwZ/Tg7rrhHqwwWBZRakfyfnao+VAWuEE5FQiL9hcKjA==", - "dev": true, - "dependencies": { - "crypto-js": "^3.1.9-1", - "loader-utils": "^1.2.3", - "schema-utils": "^2.2.0", - "slash": "^3.0.0" - }, - "peerDependencies": { - "twing": "^3.0.1" - } - }, - "node_modules/twing-loader/node_modules/json5": { - "version": "1.0.1", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/twing-loader/node_modules/loader-utils": { - "version": "1.4.0", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/twing/node_modules/fs-extra": { "version": "5.0.0", "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", @@ -38797,6 +39927,15 @@ "node": ">=0.10.0" } }, + "node_modules/twing/node_modules/object-hash": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", + "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, "node_modules/twing/node_modules/source-map": { "version": "0.6.1", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", @@ -39687,11 +40826,6 @@ "node": ">= 0.10" } }, - "node_modules/var-validator": { - "version": "0.0.3", - "integrity": "sha1-jCAVWjUDcyM6VC0+Wu0EbJCJHXA=", - "dev": true - }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -39856,6 +40990,48 @@ "node": ">=0.8" } }, + "node_modules/vite": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-3.0.4.tgz", + "integrity": "sha512-NU304nqnBeOx2MkQnskBQxVsa0pRAH5FphokTGmyy8M3oxbvw7qAXts2GORxs+h/2vKsD+osMhZ7An6yK6F1dA==", + "dev": true, + "peer": true, + "dependencies": { + "esbuild": "^0.14.47", + "postcss": "^8.4.14", + "resolve": "^1.22.1", + "rollup": "^2.75.6" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "less": "*", + "sass": "*", + "stylus": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, "node_modules/vm-browserify": { "version": "1.1.2", "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", @@ -40424,6 +41600,12 @@ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", "dev": true }, + "node_modules/webpack/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, "node_modules/webpack/node_modules/eslint-scope": { "version": "4.0.3", "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", @@ -40594,6 +41776,23 @@ "figgy-pudding": "^3.5.1" } }, + "node_modules/webpack/node_modules/terser": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", + "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/webpack/node_modules/terser-webpack-plugin": { "version": "1.4.5", "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", @@ -41052,17 +42251,17 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.6.tgz", - "integrity": "sha512-YfDzdnoxHGV8CzqHGyCbFvXg5QESPFkXlHtvdCkesLjjVMT2Adxe4FGUR5ChIb3DxSaXO12iIOCWoXdsUVwnqw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz", + "integrity": "sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-function-name": "^7.18.6", - "@babel/helper-member-expression-to-functions": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.9", "@babel/helper-split-export-declaration": "^7.18.6" } }, @@ -41227,6 +42426,12 @@ "@babel/types": "^7.18.6" } }, + "@babel/helper-string-parser": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", + "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", + "dev": true + }, "@babel/helper-validator-identifier": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", @@ -41569,11 +42774,12 @@ } }, "@babel/plugin-syntax-jsx": { - "version": "7.12.13", - "integrity": "sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", + "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-syntax-logical-assignment-operators": { @@ -41641,11 +42847,12 @@ } }, "@babel/plugin-syntax-typescript": { - "version": "7.14.5", - "integrity": "sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz", + "integrity": "sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-arrow-functions": { @@ -41881,48 +43088,71 @@ } }, "@babel/plugin-transform-react-constant-elements": { - "version": "7.13.10", - "integrity": "sha512-E+aCW9j7mLq01tOuGV08YzLBt+vSyr4bOPT75B6WrAlrUfmOYOZ/yWk847EH0dv0xXiCihWLEmlX//O30YhpIw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.18.9.tgz", + "integrity": "sha512-IrTYh1I3YCEL1trjknnlLKTp5JggjzhKl/d3ibzPc97JhpFcDTr38Jdek/oX4cFbS6By0bXJcOkpRvJ5ZHK2wQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-react-display-name": { - "version": "7.12.13", - "integrity": "sha512-MprESJzI9O5VnJZrL7gg1MpdqmiFcUv41Jc7SahxYsNP2kDkFqClxxTZq+1Qv4AFCamm+GXMRDQINNn+qrxmiA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz", + "integrity": "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-react-jsx": { - "version": "7.12.17", - "integrity": "sha512-mwaVNcXV+l6qJOuRhpdTEj8sT/Z0owAVWf9QujTZ0d2ye9X/K+MTOTSizcgKOj18PGnTc/7g1I4+cIUjsKhBcw==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.18.10.tgz", + "integrity": "sha512-gCy7Iikrpu3IZjYZolFE4M1Sm+nrh1/6za2Ewj77Z+XirT4TsbJcvOFOyF+fRPwU6AKKK136CZxx6L8AbSFG6A==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/plugin-syntax-jsx": "^7.12.13", - "@babel/types": "^7.12.17" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-jsx": "^7.18.6", + "@babel/types": "^7.18.10" } }, "@babel/plugin-transform-react-jsx-development": { - "version": "7.12.17", - "integrity": "sha512-BPjYV86SVuOaudFhsJR1zjgxxOhJDt6JHNoD48DxWEIxUCAMjV1ys6DYw4SDYZh0b1QsS2vfIA9t/ZsQGsDOUQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", + "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", "dev": true, "requires": { - "@babel/plugin-transform-react-jsx": "^7.12.17" + "@babel/plugin-transform-react-jsx": "^7.18.6" + } + }, + "@babel/plugin-transform-react-jsx-self": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz", + "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-react-jsx-source": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.18.6.tgz", + "integrity": "sha512-utZmlASneDfdaMh0m/WausbjUjEdGrQJz0vFK93d7wD3xf5wBtX219+q6IlCNZeguIcxS2f/CvLZrlLSvSHQXw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-react-pure-annotations": { - "version": "7.12.1", - "integrity": "sha512-RqeaHiwZtphSIUZ5I85PEH19LOSzxfuEazoY7/pWASCAIBuATQzpSVD+eT6MebeeZT2F4eSL0u4vw6n4Nm0Mjg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz", + "integrity": "sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-regenerator": { @@ -41991,13 +43221,14 @@ } }, "@babel/plugin-transform-typescript": { - "version": "7.15.4", - "integrity": "sha512-sM1/FEjwYjXvMwu1PJStH11kJ154zd/lpY56NQJ5qH2D0mabMv1CAy/kdvS9RP4Xgfj9fBBA3JiSLdDHgXdzOA==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.10.tgz", + "integrity": "sha512-j2HQCJuMbi88QftIb5zlRu3c7PU+sXNnscqsrjqegoGiCgXR569pEdben9vly5QHKL2ilYkfnSwu64zsZo/VYQ==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-typescript": "^7.14.5" + "@babel/helper-create-class-features-plugin": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-typescript": "^7.18.6" } }, "@babel/plugin-transform-unicode-escapes": { @@ -42115,25 +43346,28 @@ } }, "@babel/preset-react": { - "version": "7.12.13", - "integrity": "sha512-TYM0V9z6Abb6dj1K7i5NrEhA13oS5ujUYQYDfqIBXYHOc2c2VkFgc+q9kyssIyUfy4/hEwqrgSlJ/Qgv8zJLsA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz", + "integrity": "sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/plugin-transform-react-display-name": "^7.12.13", - "@babel/plugin-transform-react-jsx": "^7.12.13", - "@babel/plugin-transform-react-jsx-development": "^7.12.12", - "@babel/plugin-transform-react-pure-annotations": "^7.12.1" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-transform-react-display-name": "^7.18.6", + "@babel/plugin-transform-react-jsx": "^7.18.6", + "@babel/plugin-transform-react-jsx-development": "^7.18.6", + "@babel/plugin-transform-react-pure-annotations": "^7.18.6" } }, "@babel/preset-typescript": { - "version": "7.15.0", - "integrity": "sha512-lt0Y/8V3y06Wq/8H/u0WakrqciZ7Fz7mwPDHWUJAXlABL5hiUG42BNlRXiELNjeWjO5rWmnNKlx+yzJvxezHow==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz", + "integrity": "sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-transform-typescript": "^7.15.0" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-transform-typescript": "^7.18.6" } }, "@babel/register": { @@ -42188,11 +43422,12 @@ } }, "@babel/types": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", - "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.10.tgz", + "integrity": "sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ==", "dev": true, "requires": { + "@babel/helper-string-parser": "^7.18.10", "@babel/helper-validator-identifier": "^7.18.6", "to-fast-properties": "^2.0.0" } @@ -42886,6 +44121,13 @@ "jsdoc-type-pratt-parser": "~3.1.0" } }, + "@esbuild/linux-loong64": { + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.53.tgz", + "integrity": "sha512-W2dAL6Bnyn4xa/QRSU3ilIK4EzD5wgYXKXJiS1HDF5vU3675qc2bvFyLwbUcdmssDveyndy7FbitrCoiV/eMLg==", + "dev": true, + "optional": true + }, "@eslint/eslintrc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", @@ -44227,6 +45469,55 @@ } } }, + "@joshwooding/vite-plugin-react-docgen-typescript": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@joshwooding/vite-plugin-react-docgen-typescript/-/vite-plugin-react-docgen-typescript-0.0.5.tgz", + "integrity": "sha512-HwAEj/vAP1+hzBfIv9DTCyg+1O0/LG48Up7j1RmJ+pFwjb/wRxzUBco4LqKFKe7SZ0M6IyASNh1oKP3yHnJElA==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^4.2.1", + "glob": "^7.2.0", + "glob-promise": "^4.2.0", + "magic-string": "^0.26.1", + "react-docgen-typescript": "^2.1.1" + }, + "dependencies": { + "@rollup/pluginutils": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", + "dev": true, + "requires": { + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + } + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "glob-promise": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/glob-promise/-/glob-promise-4.2.2.tgz", + "integrity": "sha512-xcUzJ8NWN5bktoTIX7eOclO1Npxd/dyVqUJxlLIDasT4C7KZyqlPIwkdJ0Ypiy3p2ZKahTjK4M9uC3sNSfNMzw==", + "dev": true, + "requires": { + "@types/glob": "^7.1.3" + } + }, + "magic-string": { + "version": "0.26.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz", + "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + } + } + }, "@jridgewell/gen-mapping": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", @@ -46580,6 +47871,97 @@ "util-deprecate": "^1.0.2" } }, + "@storybook/builder-vite": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-0.2.2.tgz", + "integrity": "sha512-kFY/Rbk+Bu5KmXOCP8CMxp6gfbNGGyNZwikWZe21NHcrVzwHg/aTs+MR37maRqlWcpJvTZmbkKMHak0+vDqpvw==", + "dev": true, + "requires": { + "@joshwooding/vite-plugin-react-docgen-typescript": "0.0.5", + "@rollup/pluginutils": "^4.2.1", + "@storybook/core-common": "^6.4.3", + "@storybook/mdx1-csf": "^0.0.4", + "@storybook/node-logger": "^6.4.3", + "@storybook/source-loader": "^6.4.3", + "@vitejs/plugin-react": "^2.0.0", + "ast-types": "^0.14.2", + "es-module-lexer": "^0.9.3", + "glob": "^7.2.0", + "glob-promise": "^4.2.0", + "magic-string": "^0.26.1", + "react-docgen": "^6.0.0-alpha.0", + "slash": "^3.0.0", + "sveltedoc-parser": "^4.2.1" + }, + "dependencies": { + "@rollup/pluginutils": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", + "dev": true, + "requires": { + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + } + }, + "@storybook/mdx1-csf": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@storybook/mdx1-csf/-/mdx1-csf-0.0.4.tgz", + "integrity": "sha512-xxUEMy0D+0G1aSYxbeVNbs+XBU5nCqW4I7awpBYSTywXDv/MJWeC6FDRpj5P1pgfq8j8jWDD5ZDvBQ7syFg0LQ==", + "dev": true, + "requires": { + "@babel/generator": "^7.12.11", + "@babel/parser": "^7.12.11", + "@babel/preset-env": "^7.12.11", + "@babel/types": "^7.12.11", + "@mdx-js/mdx": "^1.6.22", + "@mdx-js/react": "^1.6.22", + "@types/lodash": "^4.14.167", + "js-string-escape": "^1.0.1", + "loader-utils": "^2.0.0", + "lodash": "^4.17.21", + "prettier": ">=2.2.1 <=2.3.0", + "ts-dedent": "^2.0.0" + } + }, + "es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "glob-promise": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/glob-promise/-/glob-promise-4.2.2.tgz", + "integrity": "sha512-xcUzJ8NWN5bktoTIX7eOclO1Npxd/dyVqUJxlLIDasT4C7KZyqlPIwkdJ0Ypiy3p2ZKahTjK4M9uC3sNSfNMzw==", + "dev": true, + "requires": { + "@types/glob": "^7.1.3" + } + }, + "magic-string": { + "version": "0.26.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz", + "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "prettier": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.0.tgz", + "integrity": "sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w==", + "dev": true + } + } + }, "@storybook/builder-webpack4": { "version": "6.5.9", "resolved": "https://registry.npmjs.org/@storybook/builder-webpack4/-/builder-webpack4-6.5.9.tgz", @@ -49688,6 +51070,22 @@ } } }, + "@svgr/rollup": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@svgr/rollup/-/rollup-5.5.0.tgz", + "integrity": "sha512-EiZmH2VTr+Xzyb6Ga8XtGa9MEbiU3WQnB5vHmqhwAUqibU3uwuwr7MN+QwIh/gtBk1ucMim8BCfcRTlLVREM8A==", + "dev": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/plugin-transform-react-constant-elements": "^7.12.1", + "@babel/preset-env": "^7.12.1", + "@babel/preset-react": "^7.12.5", + "@svgr/core": "^5.5.0", + "@svgr/plugin-jsx": "^5.5.0", + "@svgr/plugin-svgo": "^5.5.0", + "rollup-pluginutils": "^2.8.2" + } + }, "@svgr/webpack": { "version": "5.5.0", "integrity": "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==", @@ -50327,6 +51725,32 @@ "eslint-visitor-keys": "^3.0.0" } }, + "@vitejs/plugin-react": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-2.0.0.tgz", + "integrity": "sha512-zHkRR+X4zqEPNBbKV2FvWSxK7Q6crjMBVIAYroSU8Nbb4M3E5x4qOiLoqJBHtXgr27kfednXjkwr3lr8jS6Wrw==", + "dev": true, + "requires": { + "@babel/core": "^7.18.6", + "@babel/plugin-transform-react-jsx": "^7.18.6", + "@babel/plugin-transform-react-jsx-development": "^7.18.6", + "@babel/plugin-transform-react-jsx-self": "^7.18.6", + "@babel/plugin-transform-react-jsx-source": "^7.18.6", + "magic-string": "^0.26.2", + "react-refresh": "^0.14.0" + }, + "dependencies": { + "magic-string": { + "version": "0.26.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz", + "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + } + } + }, "@webassemblyjs/ast": { "version": "1.9.0", "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", @@ -52320,6 +53744,23 @@ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, + "ast-types": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz", + "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==", + "dev": true, + "requires": { + "tslib": "^2.0.1" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, "astral-regex": { "version": "2.0.0", "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", @@ -53306,13 +54747,13 @@ } }, "buffer": { - "version": "4.9.2", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "dev": true, "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" } }, "buffer-crc32": { @@ -53387,6 +54828,101 @@ "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", "dev": true }, + "c8": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/c8/-/c8-7.12.0.tgz", + "integrity": "sha512-CtgQrHOkyxr5koX1wEUmN/5cfDa2ckbHRA4Gy5LAL0zaCFtVWJS5++n+w4/sr2GWGerBxgTjpKeDclk/Qk6W/A==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@istanbuljs/schema": "^0.1.3", + "find-up": "^5.0.0", + "foreground-child": "^2.0.0", + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-reports": "^3.1.4", + "rimraf": "^3.0.2", + "test-exclude": "^6.0.0", + "v8-to-istanbul": "^9.0.0", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9" + }, + "dependencies": { + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + } + } + }, "cacache": { "version": "15.3.0", "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", @@ -55852,170 +57388,171 @@ } }, "esbuild": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.42.tgz", - "integrity": "sha512-V0uPZotCEHokJdNqyozH6qsaQXqmZEOiZWrXnds/zaH/0SyrIayRXWRB98CENO73MIZ9T3HBIOsmds5twWtmgw==", - "dev": true, - "requires": { - "esbuild-android-64": "0.14.42", - "esbuild-android-arm64": "0.14.42", - "esbuild-darwin-64": "0.14.42", - "esbuild-darwin-arm64": "0.14.42", - "esbuild-freebsd-64": "0.14.42", - "esbuild-freebsd-arm64": "0.14.42", - "esbuild-linux-32": "0.14.42", - "esbuild-linux-64": "0.14.42", - "esbuild-linux-arm": "0.14.42", - "esbuild-linux-arm64": "0.14.42", - "esbuild-linux-mips64le": "0.14.42", - "esbuild-linux-ppc64le": "0.14.42", - "esbuild-linux-riscv64": "0.14.42", - "esbuild-linux-s390x": "0.14.42", - "esbuild-netbsd-64": "0.14.42", - "esbuild-openbsd-64": "0.14.42", - "esbuild-sunos-64": "0.14.42", - "esbuild-windows-32": "0.14.42", - "esbuild-windows-64": "0.14.42", - "esbuild-windows-arm64": "0.14.42" + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.53.tgz", + "integrity": "sha512-ohO33pUBQ64q6mmheX1mZ8mIXj8ivQY/L4oVuAshr+aJI+zLl+amrp3EodrUNDNYVrKJXGPfIHFGhO8slGRjuw==", + "dev": true, + "requires": { + "@esbuild/linux-loong64": "0.14.53", + "esbuild-android-64": "0.14.53", + "esbuild-android-arm64": "0.14.53", + "esbuild-darwin-64": "0.14.53", + "esbuild-darwin-arm64": "0.14.53", + "esbuild-freebsd-64": "0.14.53", + "esbuild-freebsd-arm64": "0.14.53", + "esbuild-linux-32": "0.14.53", + "esbuild-linux-64": "0.14.53", + "esbuild-linux-arm": "0.14.53", + "esbuild-linux-arm64": "0.14.53", + "esbuild-linux-mips64le": "0.14.53", + "esbuild-linux-ppc64le": "0.14.53", + "esbuild-linux-riscv64": "0.14.53", + "esbuild-linux-s390x": "0.14.53", + "esbuild-netbsd-64": "0.14.53", + "esbuild-openbsd-64": "0.14.53", + "esbuild-sunos-64": "0.14.53", + "esbuild-windows-32": "0.14.53", + "esbuild-windows-64": "0.14.53", + "esbuild-windows-arm64": "0.14.53" } }, "esbuild-android-64": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.42.tgz", - "integrity": "sha512-P4Y36VUtRhK/zivqGVMqhptSrFILAGlYp0Z8r9UQqHJ3iWztRCNWnlBzD9HRx0DbueXikzOiwyOri+ojAFfW6A==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.53.tgz", + "integrity": "sha512-fIL93sOTnEU+NrTAVMIKiAw0YH22HWCAgg4N4Z6zov2t0kY9RAJ50zY9ZMCQ+RT6bnOfDt8gCTnt/RaSNA2yRA==", "dev": true, "optional": true }, "esbuild-android-arm64": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.42.tgz", - "integrity": "sha512-0cOqCubq+RWScPqvtQdjXG3Czb3AWI2CaKw3HeXry2eoA2rrPr85HF7IpdU26UWdBXgPYtlTN1LUiuXbboROhg==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.53.tgz", + "integrity": "sha512-PC7KaF1v0h/nWpvlU1UMN7dzB54cBH8qSsm7S9mkwFA1BXpaEOufCg8hdoEI1jep0KeO/rjZVWrsH8+q28T77A==", "dev": true, "optional": true }, "esbuild-darwin-64": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.42.tgz", - "integrity": "sha512-ipiBdCA3ZjYgRfRLdQwP82rTiv/YVMtW36hTvAN5ZKAIfxBOyPXY7Cejp3bMXWgzKD8B6O+zoMzh01GZsCuEIA==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.53.tgz", + "integrity": "sha512-gE7P5wlnkX4d4PKvLBUgmhZXvL7lzGRLri17/+CmmCzfncIgq8lOBvxGMiQ4xazplhxq+72TEohyFMZLFxuWvg==", "dev": true, "optional": true }, "esbuild-darwin-arm64": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.42.tgz", - "integrity": "sha512-bU2tHRqTPOaoH/4m0zYHbFWpiYDmaA0gt90/3BMEFaM0PqVK/a6MA2V/ypV5PO0v8QxN6gH5hBPY4YJ2lopXgA==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.53.tgz", + "integrity": "sha512-otJwDU3hnI15Q98PX4MJbknSZ/WSR1I45il7gcxcECXzfN4Mrpft5hBDHXNRnCh+5858uPXBXA1Vaz2jVWLaIA==", "dev": true, "optional": true }, "esbuild-freebsd-64": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.42.tgz", - "integrity": "sha512-75h1+22Ivy07+QvxHyhVqOdekupiTZVLN1PMwCDonAqyXd8TVNJfIRFrdL8QmSJrOJJ5h8H1I9ETyl2L8LQDaw==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.53.tgz", + "integrity": "sha512-WkdJa8iyrGHyKiPF4lk0MiOF87Q2SkE+i+8D4Cazq3/iqmGPJ6u49je300MFi5I2eUsQCkaOWhpCVQMTKGww2w==", "dev": true, "optional": true }, "esbuild-freebsd-arm64": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.42.tgz", - "integrity": "sha512-W6Jebeu5TTDQMJUJVarEzRU9LlKpNkPBbjqSu+GUPTHDCly5zZEQq9uHkmHHl7OKm+mQ2zFySN83nmfCeZCyNA==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.53.tgz", + "integrity": "sha512-9T7WwCuV30NAx0SyQpw8edbKvbKELnnm1FHg7gbSYaatH+c8WJW10g/OdM7JYnv7qkimw2ZTtSA+NokOLd2ydQ==", "dev": true, "optional": true }, "esbuild-linux-32": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.42.tgz", - "integrity": "sha512-Ooy/Bj+mJ1z4jlWcK5Dl6SlPlCgQB9zg1UrTCeY8XagvuWZ4qGPyYEWGkT94HUsRi2hKsXvcs6ThTOjBaJSMfg==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.53.tgz", + "integrity": "sha512-VGanLBg5en2LfGDgLEUxQko2lqsOS7MTEWUi8x91YmsHNyzJVT/WApbFFx3MQGhkf+XdimVhpyo5/G0PBY91zg==", "dev": true, "optional": true }, "esbuild-linux-64": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.42.tgz", - "integrity": "sha512-2L0HbzQfbTuemUWfVqNIjOfaTRt9zsvjnme6lnr7/MO9toz/MJ5tZhjqrG6uDWDxhsaHI2/nsDgrv8uEEN2eoA==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.53.tgz", + "integrity": "sha512-pP/FA55j/fzAV7N9DF31meAyjOH6Bjuo3aSKPh26+RW85ZEtbJv9nhoxmGTd9FOqjx59Tc1ZbrJabuiXlMwuZQ==", "dev": true, "optional": true }, "esbuild-linux-arm": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.42.tgz", - "integrity": "sha512-STq69yzCMhdRaWnh29UYrLSr/qaWMm/KqwaRF1pMEK7kDiagaXhSL1zQGXbYv94GuGY/zAwzK98+6idCMUOOCg==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.53.tgz", + "integrity": "sha512-/u81NGAVZMopbmzd21Nu/wvnKQK3pT4CrvQ8BTje1STXcQAGnfyKgQlj3m0j2BzYbvQxSy+TMck4TNV2onvoPA==", "dev": true, "optional": true }, "esbuild-linux-arm64": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.42.tgz", - "integrity": "sha512-c3Ug3e9JpVr8jAcfbhirtpBauLxzYPpycjWulD71CF6ZSY26tvzmXMJYooQ2YKqDY4e/fPu5K8bm7MiXMnyxuA==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.53.tgz", + "integrity": "sha512-GDmWITT+PMsjCA6/lByYk7NyFssW4Q6in32iPkpjZ/ytSyH+xeEx8q7HG3AhWH6heemEYEWpTll/eui3jwlSnw==", "dev": true, "optional": true }, "esbuild-linux-mips64le": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.42.tgz", - "integrity": "sha512-QuvpHGbYlkyXWf2cGm51LBCHx6eUakjaSrRpUqhPwjh/uvNUYvLmz2LgPTTPwCqaKt0iwL+OGVL0tXA5aDbAbg==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.53.tgz", + "integrity": "sha512-d6/XHIQW714gSSp6tOOX2UscedVobELvQlPMkInhx1NPz4ThZI9uNLQ4qQJHGBGKGfu+rtJsxM4NVHLhnNRdWQ==", "dev": true, "optional": true }, "esbuild-linux-ppc64le": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.42.tgz", - "integrity": "sha512-8ohIVIWDbDT+i7lCx44YCyIRrOW1MYlks9fxTo0ME2LS/fxxdoJBwHWzaDYhjvf8kNpA+MInZvyOEAGoVDrMHg==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.53.tgz", + "integrity": "sha512-ndnJmniKPCB52m+r6BtHHLAOXw+xBCWIxNnedbIpuREOcbSU/AlyM/2dA3BmUQhsHdb4w3amD5U2s91TJ3MzzA==", "dev": true, "optional": true }, "esbuild-linux-riscv64": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.42.tgz", - "integrity": "sha512-DzDqK3TuoXktPyG1Lwx7vhaF49Onv3eR61KwQyxYo4y5UKTpL3NmuarHSIaSVlTFDDpcIajCDwz5/uwKLLgKiQ==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.53.tgz", + "integrity": "sha512-yG2sVH+QSix6ct4lIzJj329iJF3MhloLE6/vKMQAAd26UVPVkhMFqFopY+9kCgYsdeWvXdPgmyOuKa48Y7+/EQ==", "dev": true, "optional": true }, "esbuild-linux-s390x": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.42.tgz", - "integrity": "sha512-YFRhPCxl8nb//Wn6SiS5pmtplBi4z9yC2gLrYoYI/tvwuB1jldir9r7JwAGy1Ck4D7sE7wBN9GFtUUX/DLdcEQ==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.53.tgz", + "integrity": "sha512-OCJlgdkB+XPYndHmw6uZT7jcYgzmx9K+28PVdOa/eLjdoYkeAFvH5hTwX4AXGLZLH09tpl4bVsEtvuyUldaNCg==", "dev": true, "optional": true }, "esbuild-netbsd-64": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.42.tgz", - "integrity": "sha512-QYSD2k+oT9dqB/4eEM9c+7KyNYsIPgzYOSrmfNGDIyJrbT1d+CFVKvnKahDKNJLfOYj8N4MgyFaU9/Ytc6w5Vw==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.53.tgz", + "integrity": "sha512-gp2SB+Efc7MhMdWV2+pmIs/Ja/Mi5rjw+wlDmmbIn68VGXBleNgiEZG+eV2SRS0kJEUyHNedDtwRIMzaohWedQ==", "dev": true, "optional": true }, "esbuild-openbsd-64": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.42.tgz", - "integrity": "sha512-M2meNVIKWsm2HMY7+TU9AxM7ZVwI9havdsw6m/6EzdXysyCFFSoaTQ/Jg03izjCsK17FsVRHqRe26Llj6x0MNA==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.53.tgz", + "integrity": "sha512-eKQ30ZWe+WTZmteDYg8S+YjHV5s4iTxeSGhJKJajFfQx9TLZJvsJX0/paqwP51GicOUruFpSUAs2NCc0a4ivQQ==", "dev": true, "optional": true }, "esbuild-sunos-64": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.42.tgz", - "integrity": "sha512-uXV8TAZEw36DkgW8Ak3MpSJs1ofBb3Smkc/6pZ29sCAN1KzCAQzsje4sUwugf+FVicrHvlamCOlFZIXgct+iqQ==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.53.tgz", + "integrity": "sha512-OWLpS7a2FrIRukQqcgQqR1XKn0jSJoOdT+RlhAxUoEQM/IpytS3FXzCJM6xjUYtpO5GMY0EdZJp+ur2pYdm39g==", "dev": true, "optional": true }, "esbuild-windows-32": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.42.tgz", - "integrity": "sha512-4iw/8qWmRICWi9ZOnJJf9sYt6wmtp3hsN4TdI5NqgjfOkBVMxNdM9Vt3626G1Rda9ya2Q0hjQRD9W1o+m6Lz6g==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.53.tgz", + "integrity": "sha512-m14XyWQP5rwGW0tbEfp95U6A0wY0DYPInWBB7D69FAXUpBpBObRoGTKRv36lf2RWOdE4YO3TNvj37zhXjVL5xg==", "dev": true, "optional": true }, "esbuild-windows-64": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.42.tgz", - "integrity": "sha512-j3cdK+Y3+a5H0wHKmLGTJcq0+/2mMBHPWkItR3vytp/aUGD/ua/t2BLdfBIzbNN9nLCRL9sywCRpOpFMx3CxzA==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.53.tgz", + "integrity": "sha512-s9skQFF0I7zqnQ2K8S1xdLSfZFsPLuOGmSx57h2btSEswv0N0YodYvqLcJMrNMXh6EynOmWD7rz+0rWWbFpIHQ==", "dev": true, "optional": true }, "esbuild-windows-arm64": { - "version": "0.14.42", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.42.tgz", - "integrity": "sha512-+lRAARnF+hf8J0mN27ujO+VbhPbDqJ8rCcJKye4y7YZLV6C4n3pTRThAb388k/zqF5uM0lS5O201u0OqoWSicw==", + "version": "0.14.53", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.53.tgz", + "integrity": "sha512-E+5Gvb+ZWts+00T9II6wp2L3KG2r3iGxByqd/a1RmLmYWVsSVUjkvIxZuJ3hYTIbhLkH5PRwpldGTKYqVz0nzQ==", "dev": true, "optional": true }, @@ -56760,6 +58297,17 @@ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, + "estree-to-babel": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/estree-to-babel/-/estree-to-babel-3.2.1.tgz", + "integrity": "sha512-YNF+mZ/Wu2FU/gvmzuWtYc8rloubL7wfXCTgouFrnjGVXPA/EeYYA7pupXWrb3Iv1cTBeSSxxJIbK23l4MRNqg==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.6", + "@babel/types": "^7.2.0", + "c8": "^7.6.0" + } + }, "estree-walker": { "version": "1.0.1", "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", @@ -57332,6 +58880,7 @@ }, "fast-json-stable-stringify": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, @@ -57740,6 +59289,59 @@ "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", "dev": true }, + "foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, "fork-ts-checker-webpack-plugin": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.2.tgz", @@ -59147,8 +60749,28 @@ } } }, + "hash-obj": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hash-obj/-/hash-obj-4.0.0.tgz", + "integrity": "sha512-FwO1BUVWkyHasWDW4S8o0ssQXjvyghLV2rfVhnN36b2bbcj45eGiuzdn9XOvOpjV3TKQD7Gm2BWNXdE9V4KKYg==", + "dev": true, + "requires": { + "is-obj": "^3.0.0", + "sort-keys": "^5.0.0", + "type-fest": "^1.0.2" + }, + "dependencies": { + "type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true + } + } + }, "hash.js": { "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "dev": true, "requires": { @@ -59418,6 +61040,31 @@ "version": "4.1.1", "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "terser": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", + "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + } + } } } }, @@ -59579,6 +61226,85 @@ } } }, + "htmlparser2-svelte": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2-svelte/-/htmlparser2-svelte-4.1.0.tgz", + "integrity": "sha512-+4f4RBFz7Rj2Hp0ZbFbXC+Kzbd6S9PgjiuFtdT76VMNgKogrEZy0pG2UrPycPbrZzVEIM5lAT3lAdkSTCHLPjg==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^3.0.0", + "domutils": "^2.0.0", + "entities": "^2.0.0" + }, + "dependencies": { + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "dependencies": { + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + } + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domhandler": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz", + "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "dependencies": { + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + } + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + } + } + }, "htmlspecialchars": { "version": "1.0.5", "integrity": "sha1-9DD4wdXzcJvnvrrqaW3ASCQwajA=", @@ -60103,6 +61829,12 @@ "has-tostringtag": "^1.0.0" } }, + "is-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-3.0.0.tgz", + "integrity": "sha512-IlsXEHOjtKhpN8r/tRFj2nDyTmHvcfNeu/nrRIcXE17ROeatXchkojffa1SpdqW4cr/Fj6QkEf/Gn4zf6KKvEQ==", + "dev": true + }, "is-object": { "version": "1.0.2", "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==", @@ -63997,6 +65729,15 @@ } } }, + "node-dir": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", + "integrity": "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==", + "dev": true, + "requires": { + "minimatch": "^3.0.2" + } + }, "node-fetch": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", @@ -64065,6 +65806,17 @@ "vm-browserify": "^1.0.1" }, "dependencies": { + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, "punycode": { "version": "1.4.1", "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", @@ -64276,11 +66028,6 @@ } } }, - "object-hash": { - "version": "1.3.1", - "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==", - "dev": true - }, "object-inspect": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.1.tgz", @@ -66252,6 +67999,48 @@ "react-with-styles-interface-css": "^4.0.2" } }, + "react-docgen": { + "version": "6.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-6.0.0-alpha.3.tgz", + "integrity": "sha512-DDLvB5EV9As1/zoUsct6Iz2Cupw9FObEGD3DMcIs3EDFIoSKyz8FZtoWj3Wj+oodrU4/NfidN0BL5yrapIcTSA==", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@babel/generator": "^7.12.11", + "ast-types": "^0.14.2", + "commander": "^2.19.0", + "doctrine": "^3.0.0", + "estree-to-babel": "^3.1.0", + "neo-async": "^2.6.1", + "node-dir": "^0.1.10", + "resolve": "^1.17.0", + "strip-indent": "^3.0.0" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + } + } + }, + "react-docgen-typescript": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-2.2.2.tgz", + "integrity": "sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==", + "dev": true, + "requires": {} + }, "react-dom": { "version": "16.14.0", "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", @@ -66376,6 +68165,12 @@ "prop-types": "^15.5.8" } }, + "react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "dev": true + }, "react-resize-aware": { "version": "3.1.0", "integrity": "sha512-bIhHlxVTX7xKUz14ksXMEHjzCZPTpQZKZISY3nbTD273pDKPABGFNFBP6Tr42KECxzC5YQiKpMchjTVJCqaxpA==", @@ -67553,28 +69348,6 @@ "jest-worker": "^26.2.1", "serialize-javascript": "^4.0.0", "terser": "^5.0.0" - }, - "dependencies": { - "commander": { - "version": "2.20.3", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "source-map": { - "version": "0.7.3", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - }, - "terser": { - "version": "5.6.1", - "integrity": "sha512-yv9YLFQQ+3ZqgWCUk+pvNJwgUTdlIxUk1WTN+RnaFJe2L7ipG2csPT0ra2XRm7Cs8cxN7QXmK1rFzEwYEQkzXw==", - "dev": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.19" - } - } } }, "rollup-pluginutils": { @@ -68534,6 +70307,23 @@ } } }, + "sort-keys": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-5.0.0.tgz", + "integrity": "sha512-Pdz01AvCAottHTPQGzndktFNdbRA75BgOfeT1hH+AMnJFv8lynkPi42rfeEhpx1saTEI3YNMWxfqu0sFD1G8pw==", + "dev": true, + "requires": { + "is-plain-obj": "^4.0.0" + }, + "dependencies": { + "is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "dev": true + } + } + }, "source-list-map": { "version": "2.0.1", "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", @@ -69739,6 +71529,257 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true }, + "sveltedoc-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/sveltedoc-parser/-/sveltedoc-parser-4.2.1.tgz", + "integrity": "sha512-sWJRa4qOfRdSORSVw9GhfDEwsbsYsegnDzBevUCF6k/Eis/QqCu9lJ6I0+d/E2wOWCjOhlcJ3+jl/Iur+5mmCw==", + "dev": true, + "requires": { + "eslint": "8.4.1", + "espree": "9.2.0", + "htmlparser2-svelte": "4.1.0" + }, + "dependencies": { + "acorn": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.4.1.tgz", + "integrity": "sha512-TxU/p7LB1KxQ6+7aztTnO7K0i+h0tDi81YRY9VzB6Id71kNz+fFYnf5HD5UOQmxkzcoa0TlVZf9dpMtUv0GpWg==", + "dev": true, + "requires": { + "@eslint/eslintrc": "^1.0.5", + "@humanwhocodes/config-array": "^0.9.2", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.0", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.1.0", + "espree": "^9.2.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.2.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + } + }, + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "espree": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.2.0.tgz", + "integrity": "sha512-oP3utRkynpZWF/F2x/HZJ+AGtnIclaR7z1pYPxy7NYM2fSO6LgK/Rkny8anRSPK/VwEA1eqm2squui0T7ZMOBg==", + "dev": true, + "requires": { + "acorn": "^8.6.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^3.1.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, "sver-compat": { "version": "1.5.0", "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", @@ -70012,24 +72053,27 @@ } }, "terser": { - "version": "4.8.0", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "version": "5.14.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", + "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", "dev": true, "requires": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" + "source-map-support": "~0.5.20" }, "dependencies": { + "acorn": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "dev": true + }, "commander": { "version": "2.20.3", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true - }, - "source-map": { - "version": "0.6.1", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true } } }, @@ -70050,18 +72094,6 @@ "webpack-sources": "^1.4.3" }, "dependencies": { - "acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "dev": true - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, "find-cache-dir": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", @@ -70116,18 +72148,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "terser": { - "version": "5.14.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.1.tgz", - "integrity": "sha512-+ahUAE+iheqBTDxXhTisdA8hgvbEG1hHOQ9xmNjeUJSoi6DU/gMrKNcfZjHkyY6Alnuyc+ikYJaxxfHkT3+WuQ==", - "dev": true, - "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - } } } }, @@ -70511,8 +72531,9 @@ } }, "twing": { - "version": "3.1.1", - "integrity": "sha512-h/yXQC3lJpjtw19e6eGNPT+PAGmD4C13ynrDG7ayJDT7Rz/4j+GhWajIv+iJ/PCYz9JbcirwHjhyJBMhmhpj0w==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/twing/-/twing-5.1.1.tgz", + "integrity": "sha512-hLEifWOfxHqTim7WZzpYE2H+J1P/q/fGlX67tdqu9q34qG8T6Yo1qhTBJTOUrkQli40clDv0t/dMKOnw8BiIIg==", "dev": true, "requires": { "@types/luxon": "^1.4.0", @@ -70538,9 +72559,8 @@ "snake-case": "^2.1.0", "source-map": "^0.6.1", "tmp": "0.0.33", - "twig-lexer": "^0.7.0", - "utf8-binary-cutter": "^0.9.2", - "var-validator": "0.0.3" + "twig-lexer": "^0.7.2", + "utf8-binary-cutter": "^0.9.2" }, "dependencies": { "fs-extra": { @@ -70563,6 +72583,12 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, + "object-hash": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", + "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==", + "dev": true + }, "source-map": { "version": "0.6.1", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", @@ -70570,37 +72596,6 @@ } } }, - "twing-loader": { - "version": "3.0.1", - "integrity": "sha512-rwTo5v67IiITOC+ohbzvOKnHQkQVRtpxP+s2m3RT10YwZ/Tg7rrhHqwwWBZRakfyfnao+VAWuEE5FQiL9hcKjA==", - "dev": true, - "requires": { - "crypto-js": "^3.1.9-1", - "loader-utils": "^1.2.3", - "schema-utils": "^2.2.0", - "slash": "^3.0.0" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.4.0", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } - } - } - }, "type": { "version": "1.2.0", "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", @@ -71240,11 +73235,6 @@ "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", "dev": true }, - "var-validator": { - "version": "0.0.3", - "integrity": "sha1-jCAVWjUDcyM6VC0+Wu0EbJCJHXA=", - "dev": true - }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -71370,6 +73360,20 @@ "source-map": "^0.5.1" } }, + "vite": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-3.0.4.tgz", + "integrity": "sha512-NU304nqnBeOx2MkQnskBQxVsa0pRAH5FphokTGmyy8M3oxbvw7qAXts2GORxs+h/2vKsD+osMhZ7An6yK6F1dA==", + "dev": true, + "peer": true, + "requires": { + "esbuild": "^0.14.47", + "fsevents": "~2.3.2", + "postcss": "^8.4.14", + "resolve": "^1.22.1", + "rollup": "^2.75.6" + } + }, "vm-browserify": { "version": "1.1.2", "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", @@ -71729,6 +73733,12 @@ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", "dev": true }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, "eslint-scope": { "version": "4.0.3", "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", @@ -71864,6 +73874,17 @@ "figgy-pudding": "^3.5.1" } }, + "terser": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", + "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + } + }, "terser-webpack-plugin": { "version": "1.4.5", "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", diff --git a/package.json b/package.json index e6628c515..300f4002a 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,9 @@ "@storybook/addon-docs": "6.5.9", "@storybook/addon-essentials": "6.5.9", "@storybook/addon-postcss": "2.0.0", + "@storybook/builder-vite": "^0.2.2", "@storybook/html": "6.5.9", + "@svgr/rollup": "^5.5.0", "@svgr/webpack": "5.5.0", "@types/jest": "28.1.6", "@types/lodash": "4.14.182", @@ -65,18 +67,22 @@ "@wordpress/block-library": "3.2.20", "babel-loader": "8.2.5", "browserify-transform-tools": "1.7.0", + "buffer": "^6.0.3", "css-loader": "5.2.7", "cssnano": "5.1.12", "eliminate": "1.1.2", "eslint": "8.20.0", "eslint-plugin-mdx": "1.17.1", "eslint-plugin-react": "7.30.1", + "fast-json-stable-stringify": "^2.1.0", "gulp": "4.0.2", "gulp-postcss": "9.0.1", "gulp-rename": "2.0.0", "gulp-run": "1.7.1", "gulp-sass": "5.1.0", "gulp-svgmin": "3.0.0", + "hash-obj": "^4.0.0", + "hash.js": "^1.1.7", "html-to-react": "1.4.8", "jabber": "1.4.0", "jest": "28.1.3", @@ -112,8 +118,7 @@ "stylelint-use-logical-spec": "4.1.0", "through2": "4.0.2", "tiny-glob": "0.2.9", - "twing": "3.1.1", - "twing-loader": "3.0.1", + "twing": "5.1.1", "typescript": "4.7.4", "val-loader": "2.1.2", "webpack": "4.46.0" diff --git a/src/components/button/button.stories.mdx b/src/components/button/button.stories.mdx index bea1153e8..2137258be 100644 --- a/src/components/button/button.stories.mdx +++ b/src/components/button/button.stories.mdx @@ -1,19 +1,11 @@ import { Canvas, Meta, Story } from '@storybook/addon-docs'; -// The '!!raw-loader!' syntax is a non-standard, Webpack-specific, syntax. -// See: https://github.com/webpack-contrib/raw-loader#examples -// For now, it seems likely Storybook is pretty tied to Webpack, therefore, we are -// okay with the following Webpack-specific raw loader syntax. It's better to leave -// the ESLint rule enabled globally, and only thoughtfully disable as needed (e.g. -// within a Storybook docs page and not within an actual component). -// This can be revisited in the future if Storybook no longer relies on Webpack. -// eslint-disable-next-line @cloudfour/import/no-webpack-loader-syntax -import stylesDemoSource from '!!raw-loader!./demo/styles.twig'; +import stylesDemoSource from './demo/styles.twig?raw'; import stylesDemo from './demo/styles.twig'; // eslint-disable-next-line @cloudfour/import/no-webpack-loader-syntax -import iconButtonCustomDemoSource from '!!raw-loader!./demo/icon-button-custom-demo.twig'; +import iconButtonCustomDemoSource from './demo/icon-button-custom-demo.twig?raw'; import iconButtonCustomDemo from './demo/icon-button-custom-demo.twig'; // eslint-disable-next-line @cloudfour/import/no-webpack-loader-syntax -import slashedIconButtonCustomDemoSource from '!!raw-loader!./demo/slashed-icon-button-custom-demo.twig'; +import slashedIconButtonCustomDemoSource from './demo/slashed-icon-button-custom-demo.twig?raw'; import slashedIconButtonCustomDemo from './demo/slashed-icon-button-custom-demo.twig'; import button from './button.twig'; const iconControlConfig = { diff --git a/src/components/comment/comment.stories.mdx b/src/components/comment/comment.stories.mdx index 4ec908f34..f751bab59 100644 --- a/src/components/comment/comment.stories.mdx +++ b/src/components/comment/comment.stories.mdx @@ -14,9 +14,9 @@ import memberDemo from './demo/member.twig'; // within a Storybook docs page and not within an actual component). // This can be revisited in the future if Storybook no longer relies on Webpack. // eslint-disable-next-line @cloudfour/import/no-webpack-loader-syntax -import authorDemoSource from '!!raw-loader!./demo/author.twig'; +import authorDemoSource from './demo/author.twig?raw'; // eslint-disable-next-line @cloudfour/import/no-webpack-loader-syntax -import memberDemoSource from '!!raw-loader!./demo/member.twig'; +import memberDemoSource from './demo/member.twig?raw'; const tyler = { name: 'Tyler Sticka', link: 'https://cloudfour.com/is/tyler', diff --git a/src/components/dot-leader/dot-leader.stories.mdx b/src/components/dot-leader/dot-leader.stories.mdx index c64b3bdd8..ecd52933c 100644 --- a/src/components/dot-leader/dot-leader.stories.mdx +++ b/src/components/dot-leader/dot-leader.stories.mdx @@ -1,13 +1,5 @@ import { Canvas, Meta, Story } from '@storybook/addon-docs'; -// The '!!raw-loader!' syntax is a non-standard, Webpack-specific, syntax. -// See: https://github.com/webpack-contrib/raw-loader#examples -// For now, it seems likely Storybook is pretty tied to Webpack, therefore, we are -// okay with the following Webpack-specific raw loader syntax. It's better to leave -// the ESLint rule enabled globally, and only thoughtfully disable as needed (e.g. -// within a Storybook docs page and not within an actual component). -// This can be revisited in the future if Storybook no longer relies on Webpack. -// eslint-disable-next-line @cloudfour/import/no-webpack-loader-syntax -import listDemoSource from '!!raw-loader!./demo/list.twig'; +import listDemoSource from './demo/list.twig?raw'; import listDemo from './demo/list.twig'; import topics from './demo/topics.json'; import template from './dot-leader.twig'; diff --git a/src/components/event-log/event-log.stories.mdx b/src/components/event-log/event-log.stories.mdx index 1df63a1aa..b146bcb14 100644 --- a/src/components/event-log/event-log.stories.mdx +++ b/src/components/event-log/event-log.stories.mdx @@ -1,14 +1,6 @@ import { Canvas, Meta, Story } from '@storybook/addon-docs'; import events from './demo/events.json'; -// The '!!raw-loader!' syntax is a non-standard, Webpack-specific, syntax. -// See: https://github.com/webpack-contrib/raw-loader#examples -// For now, it seems likely Storybook is pretty tied to Webpack, therefore, we are -// okay with the following Webpack-specific raw loader syntax. It's better to leave -// the ESLint rule enabled globally, and only thoughtfully disable as needed (e.g. -// within a Storybook docs page and not within an actual component). -// This can be revisited in the future if Storybook no longer relies on Webpack. -// eslint-disable-next-line @cloudfour/import/no-webpack-loader-syntax -import eventsDemoSource from '!!raw-loader!./demo/events.twig'; +import eventsDemoSource from './demo/events.twig?raw'; import eventsDemo from './demo/events.twig'; const eventsDemoStory = (args) => eventsDemo({ items: events, ...args }); diff --git a/src/components/footnote-link/footnote-link.stories.mdx b/src/components/footnote-link/footnote-link.stories.mdx index e9c7dbc45..f453961c2 100644 --- a/src/components/footnote-link/footnote-link.stories.mdx +++ b/src/components/footnote-link/footnote-link.stories.mdx @@ -1,14 +1,6 @@ import { Canvas, Meta, Story } from '@storybook/addon-docs'; import template from './demo/demo.twig'; -// The '!!raw-loader!' syntax is a non-standard, Webpack-specific, syntax. -// See: https://github.com/webpack-contrib/raw-loader#examples -// For now, it seems likely Storybook is pretty tied to Webpack, therefore, we are -// okay with the following Webpack-specific raw loader syntax. It's better to leave -// the ESLint rule enabled globally, and only thoughtfully disable as needed (e.g. -// within a Storybook docs page and not within an actual component). -// This can be revisited in the future if Storybook no longer relies on Webpack. -// eslint-disable-next-line @cloudfour/import/no-webpack-loader-syntax -import footnoteLinkSource from '!!raw-loader!./demo/demo.twig'; +import footnoteLinkSource from './demo/demo.twig?raw'; { // Don't bother with the inline option if it is the default diff --git a/src/components/input/input.stories.mdx b/src/components/input/input.stories.mdx index b6a6b19fb..eec755d88 100644 --- a/src/components/input/input.stories.mdx +++ b/src/components/input/input.stories.mdx @@ -1,15 +1,7 @@ import { Canvas, Meta, Story } from '@storybook/addon-docs'; import { useEffect } from '@storybook/client-api'; import { makeTwigInclude } from '../../make-twig-include.js'; -// The '!!raw-loader!' syntax is a non-standard, Webpack-specific, syntax. -// See: https://github.com/webpack-contrib/raw-loader#examples -// For now, it seems likely Storybook is pretty tied to Webpack, therefore, we are -// okay with the following Webpack-specific raw loader syntax. It's better to leave -// the ESLint rule enabled globally, and only thoughtfully disable as needed (e.g. -// within a Storybook docs page and not within an actual component). -// This can be revisited in the future if Storybook no longer relies on Webpack. -// eslint-disable-next-line @cloudfour/import/no-webpack-loader-syntax -import selectDemoSource from '!!raw-loader!./demo/select.twig'; +import selectDemoSource from './demo/select.twig?raw'; import selectDemo from './demo/select.twig'; import input from './input.twig'; import './demo/styles.scss'; diff --git a/src/components/media-summary/media-summary.stories.mdx b/src/components/media-summary/media-summary.stories.mdx index 2eee702ac..37e413033 100644 --- a/src/components/media-summary/media-summary.stories.mdx +++ b/src/components/media-summary/media-summary.stories.mdx @@ -1,17 +1,9 @@ import { Canvas, Meta, Story } from '@storybook/addon-docs'; import bookDemo from './demo/book.twig'; import eventDemo from './demo/event.twig'; -// The '!!raw-loader!' syntax is a non-standard, Webpack-specific, syntax. -// See: https://github.com/webpack-contrib/raw-loader#examples -// For now, it seems likely Storybook is pretty tied to Webpack, therefore, we are -// okay with the following Webpack-specific raw loader syntax. It's better to leave -// the ESLint rule enabled globally, and only thoughtfully disable as needed (e.g. -// within a Storybook docs page and not within an actual component). -// This can be revisited in the future if Storybook no longer relies on Webpack. +import bookDemoSource from './demo/book.twig?raw'; // eslint-disable-next-line @cloudfour/import/no-webpack-loader-syntax -import bookDemoSource from '!!raw-loader!./demo/book.twig'; -// eslint-disable-next-line @cloudfour/import/no-webpack-loader-syntax -import eventDemoSource from '!!raw-loader!./demo/event.twig'; +import eventDemoSource from './demo/event.twig?raw'; diff --git a/src/design/icons/icons.stories.mdx b/src/design/icons/icons.stories.mdx index 7bf59bfe2..f1b64facd 100644 --- a/src/design/icons/icons.stories.mdx +++ b/src/design/icons/icons.stories.mdx @@ -1,36 +1,33 @@ import { IconGallery, IconItem, Meta } from '@storybook/addon-docs'; -import { extname, relative } from 'path'; // Import whole directory of icons together // Using inline loaders to confine SVG to React transform to this doc // @see https://webpack.js.org/guides/dependency-management/#context-module-api // @see https://webpack.js.org/concepts/loaders/#configuration // @see https://react-svgr.com/docs/webpack/ -const iconDir = require.context( - '!!@svgr/webpack!../../assets/icons', - false, - /\.svg$/ +const iconDir = import.meta.glob( + '../../assets/icons/*.svg', + { eager: true } ); -const iconElements = iconDir.keys().map((key) => { - const Icon = iconDir(key).default; +console.log(iconDir) +const iconElements = Object.entries(iconDir).map(([path, module]) => { + const Icon = module.ReactComponent; // Retains subdirectory if we want to organize with those in the future - const name = relative('.', key).replace(extname(key), ''); + const name = 'hi' // TODO return ( ); }); -const brandIconDir = require.context( - '!!@svgr/webpack!../../assets/icons/brands', - true, - /\.svg$/ +const brandIconDir = import.meta.glob( + '../../assets/icons/brands/**.svg', ); // This is duplicated from icons, we may want to consider keeping this logic DRY // in a single file in the future. -const brandIconElements = brandIconDir.keys().map((key) => { - const BrandIcon = brandIconDir(key).default; +const brandIconElements = Object.entries(brandIconDir).map(([path, module]) => { + const BrandIcon = module.ReactComponent; // Retains subdirectory if we want to organize with those in the future - const name = relative('.', key).replace(extname(key), ''); + const name = 'hi2' // TODO return ( diff --git a/src/objects/bio/bio.stories.mdx b/src/objects/bio/bio.stories.mdx index f87c1f11c..6024654a7 100644 --- a/src/objects/bio/bio.stories.mdx +++ b/src/objects/bio/bio.stories.mdx @@ -1,13 +1,5 @@ import { Canvas, Meta, Story } from '@storybook/addon-docs'; -// The '!!raw-loader!' syntax is a non-standard, Webpack-specific, syntax. -// See: https://github.com/webpack-contrib/raw-loader#examples -// For now, it seems likely Storybook is pretty tied to Webpack, therefore, we are -// okay with the following Webpack-specific raw loader syntax. It's better to leave -// the ESLint rule enabled globally, and only thoughtfully disable as needed (e.g. -// within a Storybook docs page and not within an actual component). -// This can be revisited in the future if Storybook no longer relies on Webpack. -// eslint-disable-next-line @cloudfour/import/no-webpack-loader-syntax -import defaultDemoSource from '!!raw-loader!./demo/demo.twig'; +import defaultDemoSource from './demo/demo.twig?raw'; import defaultDemo from './demo/demo.twig'; diff --git a/src/objects/container/container.stories.mdx b/src/objects/container/container.stories.mdx index fa42e08a0..1f29df9dd 100644 --- a/src/objects/container/container.stories.mdx +++ b/src/objects/container/container.stories.mdx @@ -9,7 +9,7 @@ import basicDemo from './demo/basic.twig'; // component). This can be revisited in the future if Storybook no longer relies // on Webpack. // eslint-disable-next-line @cloudfour/import/no-webpack-loader-syntax -import fillDemoSource from '!!raw-loader!./demo/fill.twig'; +import fillDemoSource from './demo/fill.twig?raw'; import fillDemo from './demo/fill.twig'; const basicDemoStory = (args) => { const modifiers = []; diff --git a/src/objects/feature-group/feature-group.stories.mdx b/src/objects/feature-group/feature-group.stories.mdx index b0aa26504..93ed79b39 100644 --- a/src/objects/feature-group/feature-group.stories.mdx +++ b/src/objects/feature-group/feature-group.stories.mdx @@ -1,13 +1,5 @@ import { Canvas, Meta, Story } from '@storybook/addon-docs'; -// The '!!raw-loader!' syntax is a non-standard, Webpack-specific, syntax. -// See: https://github.com/webpack-contrib/raw-loader#examples -// For now, it seems likely Storybook is pretty tied to Webpack, therefore, we are -// okay with the following Webpack-specific raw loader syntax. It's better to leave -// the ESLint rule enabled globally, and only thoughtfully disable as needed (e.g. -// within a Storybook docs page and not within an actual component). -// This can be revisited in the future if Storybook no longer relies on Webpack. -// eslint-disable-next-line @cloudfour/import/no-webpack-loader-syntax -import defaultDemoSource from '!!raw-loader!./demo/demo.twig'; +import defaultDemoSource from './demo/demo.twig?raw'; import defaultDemo from './demo/demo.twig'; { const args = storyContext.args || storyContext.initialArgs || {}; diff --git a/src/utilities/text/text.stories.mdx b/src/utilities/text/text.stories.mdx index 758749c13..f73ba7eae 100644 --- a/src/utilities/text/text.stories.mdx +++ b/src/utilities/text/text.stories.mdx @@ -1,17 +1,9 @@ import { Canvas, Meta, Story } from '@storybook/addon-docs'; -// The '!!raw-loader!' syntax is a non-standard, Webpack-specific, syntax. -// See: https://github.com/webpack-contrib/raw-loader#examples -// For now, it seems likely Storybook is pretty tied to Webpack, therefore, we are -// okay with the following Webpack-specific raw loader syntax. It's better to leave -// the ESLint rule enabled globally, and only thoughtfully disable as needed (e.g. -// within a Storybook docs page and not within an actual component). -// This can be revisited in the future if Storybook no longer relies on Webpack. +import noWrapDemoSource from './demo/nowrap.twig?raw'; // eslint-disable-next-line @cloudfour/import/no-webpack-loader-syntax -import noWrapDemoSource from '!!raw-loader!./demo/nowrap.twig'; +import colorDemoSource from './demo/color.twig?raw'; // eslint-disable-next-line @cloudfour/import/no-webpack-loader-syntax -import colorDemoSource from '!!raw-loader!./demo/color.twig'; -// eslint-disable-next-line @cloudfour/import/no-webpack-loader-syntax -import textAlignDemoSource from '!!raw-loader!./demo/text-align.twig'; +import textAlignDemoSource from './demo/text-align.twig?raw'; import noWrapDemo from './demo/nowrap.twig'; import colorDemo from './demo/color.twig'; import textAlignDemo from './demo/text-align.twig'; diff --git a/twing/rollup-plugin.js b/twing/rollup-plugin.js new file mode 100644 index 000000000..c10f0d276 --- /dev/null +++ b/twing/rollup-plugin.js @@ -0,0 +1,52 @@ +const glob = require('tiny-glob'); +const fs = require('fs/promises'); +const path = require('path'); + +/** @returns {import('vite').Plugin} */ +const twingPlugin = () => { + const twingEnv = '\0twingEnv'; + return { + name: 'twing', + async resolveId(id) { + if (id === twingEnv) return twingEnv; + }, + async load(id) { + if (id !== twingEnv) return; + + const files = await glob('src/**/*.twig', { cwd: process.cwd() }); + + const preloadedFiles = ( + await Promise.all( + files.map(async (f) => { + const newName = f.replace(/^src\//g, '@cloudfour/'); + return `${JSON.stringify(newName)}: ${JSON.stringify( + await fs.readFile(f, 'utf8') + )}`; + }) + ) + ).join(',\n'); + + return ` + import { TwingEnvironment, TwingLoaderArray } from 'twing/dist/es/browser.js' + const files = { ${preloadedFiles} } + export default new TwingEnvironment(new TwingLoaderArray(files)) + `; + }, + async transform(_code, id) { + const templateName = path + .relative(process.cwd(), id) + .replace(/^src\//g, '@cloudfour/'); + if (id.startsWith('\0') || !id.endsWith('.twig')) return; + + return ` + import twingEnv from ${JSON.stringify(twingEnv)} + export default async (args) => { + const template = await twingEnv.load(${JSON.stringify(templateName)}) + return template.render(args) + } + `; + }, + }; +}; + +module.exports = { twingPlugin }; From e82756e0145002961bbe25234842b43cfa21ce06 Mon Sep 17 00:00:00 2001 From: Caleb Eby Date: Tue, 9 Aug 2022 13:22:22 -0700 Subject: [PATCH 02/11] Fix reloading twig files without restarting --- twing/rollup-plugin.js | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/twing/rollup-plugin.js b/twing/rollup-plugin.js index c10f0d276..340308187 100644 --- a/twing/rollup-plugin.js +++ b/twing/rollup-plugin.js @@ -15,20 +15,23 @@ const twingPlugin = () => { const files = await glob('src/**/*.twig', { cwd: process.cwd() }); - const preloadedFiles = ( - await Promise.all( - files.map(async (f) => { - const newName = f.replace(/^src\//g, '@cloudfour/'); - return `${JSON.stringify(newName)}: ${JSON.stringify( - await fs.readFile(f, 'utf8') - )}`; - }) - ) - ).join(',\n'); - return ` import { TwingEnvironment, TwingLoaderArray } from 'twing/dist/es/browser.js' - const files = { ${preloadedFiles} } + ${files + .map( + (file, i) => + `import template${i} from ${JSON.stringify(`./${file}?raw`)}` + ) + .join('\n')} + + const files = { + ${files + .map((file, i) => { + const newName = file.replace(/^src\//g, '@cloudfour/'); + return `${JSON.stringify(newName)}: template${i}`; + }) + .join(',\n')} + } export default new TwingEnvironment(new TwingLoaderArray(files)) `; }, From 7f201084a7b77e74eb3679f99f29549b69ecc94f Mon Sep 17 00:00:00 2001 From: Caleb Eby Date: Thu, 18 Aug 2022 13:20:51 -0700 Subject: [PATCH 03/11] Fix a bunch of things --- .storybook/main.ts | 52 +- .storybook/path-shim.mjs | 13 + .storybook/{preview.js => preview.jsx} | 61 +- .style-dictionary/build.js | 2 +- package-lock.json | 1137 ++++++----------- package.json | 13 +- {static => public}/logo.svg | 0 ...ericana_-_Cantorchilus_semibadius_1902.jpg | Bin .../media/Glacial_lakes_Bhutan.jpg | Bin {static => public}/media/MtBlanc1-300x225.jpg | Bin {static => public}/media/MtBlanc1.jpg | Bin .../Sediment_off_the_Yucatan_Peninsula.jpg | Bin {static => public}/media/Windbuchencom.jpg | Bin {static => public}/media/avatar-default.svg | 0 {static => public}/media/bookicon.png | Bin .../media/client-logos/logo-ceasefire.svg | 0 .../media/client-logos/logo-deschutes.svg | 0 .../media/client-logos/logo-entertainment.svg | 0 .../media/client-logos/logo-hautelook.svg | 0 .../media/client-logos/logo-obama.svg | 0 .../media/client-logos/logo-treasurecoast.svg | 0 .../media/client-logos/logo-walmart.svg | 0 {static => public}/media/piano.ogg | Bin {static => public}/media/waterfall_edit.mp4 | Bin src/components/button/button.stories.mdx | 2 - src/components/checkbox/checkbox.twig | 2 +- .../comment-form/comment-form.stories.mdx | 24 +- src/components/comment/comment.stories.mdx | 163 +-- src/components/comment/demo/data.ts | 7 +- src/components/footnote/footnote.stories.mdx | 1 - src/components/icon/icon.stories.mdx | 1 - src/components/input/demo/select.twig | 2 +- src/components/input/input.stories.mdx | 15 +- src/components/input/input.twig | 2 +- src/components/input/select.twig | 4 +- .../media-summary/media-summary.stories.mdx | 1 - src/design/demo/favicon-apps.twig | 6 +- src/design/icons/icons.stories.mdx | 23 +- src/design/illustrations.stories.mdx | 15 +- src/docs/changelog.stories.mdx | 2 +- src/docs/contributing.stories.mdx | 2 +- src/docs/intro.stories.mdx | 2 +- src/file-path-to-name.js | 3 + src/objects/bunch/bunch.stories.mdx | 16 +- src/objects/container/container.stories.mdx | 9 - src/objects/media/media.stories.mdx | 10 - src/objects/overview/overview.stories.mdx | 1 - src/objects/page/page.stories.mdx | 10 - src/objects/rhythm/rhythm.stories.mdx | 9 - src/tokens/aspect-ratio.stories.mdx | 2 +- src/tokens/breakpoint.stories.mdx | 2 +- src/tokens/font.stories.mdx | 2 +- src/tokens/modular-scale.stories.mdx | 2 +- src/tokens/motion.stories.mdx | 2 +- src/tokens/opacity.stories.mdx | 2 +- src/types.ts | 5 +- src/utilities/text/text.stories.mdx | 2 - src/vendor/wordpress/utilities.stories.mdx | 2 +- twing/rollup-plugin.js | 142 +- 59 files changed, 702 insertions(+), 1071 deletions(-) create mode 100644 .storybook/path-shim.mjs rename .storybook/{preview.js => preview.jsx} (70%) rename {static => public}/logo.svg (100%) rename {static => public}/media/Biologia_Centrali-Americana_-_Cantorchilus_semibadius_1902.jpg (100%) rename {static => public}/media/Glacial_lakes_Bhutan.jpg (100%) rename {static => public}/media/MtBlanc1-300x225.jpg (100%) rename {static => public}/media/MtBlanc1.jpg (100%) rename {static => public}/media/Sediment_off_the_Yucatan_Peninsula.jpg (100%) rename {static => public}/media/Windbuchencom.jpg (100%) rename {static => public}/media/avatar-default.svg (100%) rename {static => public}/media/bookicon.png (100%) rename {static => public}/media/client-logos/logo-ceasefire.svg (100%) rename {static => public}/media/client-logos/logo-deschutes.svg (100%) rename {static => public}/media/client-logos/logo-entertainment.svg (100%) rename {static => public}/media/client-logos/logo-hautelook.svg (100%) rename {static => public}/media/client-logos/logo-obama.svg (100%) rename {static => public}/media/client-logos/logo-treasurecoast.svg (100%) rename {static => public}/media/client-logos/logo-walmart.svg (100%) rename {static => public}/media/piano.ogg (100%) rename {static => public}/media/waterfall_edit.mp4 (100%) create mode 100644 src/file-path-to-name.js diff --git a/.storybook/main.ts b/.storybook/main.ts index b87062547..6b956333f 100644 --- a/.storybook/main.ts +++ b/.storybook/main.ts @@ -3,11 +3,10 @@ const { twingPlugin } = require('../twing/rollup-plugin'); module.exports = { // We load the welcome story separately so it will be the first sidebar item. - stories: [ - '../src/welcome.stories.mdx', - // '../src/**/*.stories.@(js|mdx)', - '../src/components/**/*.stories.@(js|mdx)', - ], + stories: ['../src/welcome.stories.mdx', '../src/**/*.stories.@(js|mdx)'], + features: { + storyStoreV7: true, // TODO: figure out if this actually has an effect for vite + }, core: { builder: '@storybook/builder-vite', }, @@ -19,46 +18,31 @@ module.exports = { backgrounds: false, }, }, - // '@storybook/addon-a11y', + '@storybook/addon-a11y', // Disabling these two until they are fixed upstream // 'storybook-mobile', // '@whitespace/storybook-addon-html', - 'storybook-addon-outline', + // 'storybook-addon-outline', '@etchteam/storybook-addon-status', - '@storybook/addon-postcss', + '@storybook/addon-postcss', // TODO: still used with vite? ], async viteFinal(config: import('vite').UserConfig) { config.plugins ||= []; config.plugins.push(twingPlugin()); config.plugins.push(svgr()); - config.resolve ||= {}; - config.resolve.alias ||= {}; - config.resolve.alias['object-hash'] = require.resolve( - './object-hash-shim.cjs' - ); - config.optimizeDeps ||= {}; - config.optimizeDeps.disabled = false; - config.optimizeDeps.include = ['twing/dist/es/browser.js']; - config.optimizeDeps.esbuildOptions = { - inject: [require.resolve('./buffer-shim.mjs')], - sourcemap: false, - minify: false, - minifyIdentifiers: false, - minifySyntax: false, - minifyWhitespace: false, - plugins: [ - // { - // name: 'fix-object-hash', - // setup(build) { - // build.onResolve({ filter: /^object-hash$/ }, async (args) => { - // return { path: require.resolve('object-hash') }; - // }); - // }, - // }, - ], - }; + config.optimizeDeps.include = [ + '@storybook/addon-viewport', + 'react-syntax-highlighter/dist/esm/prism-light', + 'react-syntax-highlighter/dist/esm/languages/prism/twig', + 'focus-visible', + 'react', + '@mdx-js/react', + '@storybook/addon-docs', + 'jabber', + 'smoldash', + ]; config.css ||= {}; config.css.preprocessorOptions ||= {}; diff --git a/.storybook/path-shim.mjs b/.storybook/path-shim.mjs new file mode 100644 index 000000000..ff0867bec --- /dev/null +++ b/.storybook/path-shim.mjs @@ -0,0 +1,13 @@ +export const extname = (p) => /\.[^.]*$/.exec(p)?.[0] || ''; + +export const basename = (p, ext = '') => { + let result = /\/([^/]*)$/.exec(p)?.[1]; + if (!result) return ''; + if (ext && result.endsWith(ext)) + return result.slice(0, result.length - ext.length); + return result; +}; + +export const dirname = (p) => /(^.*)\/[^/]*$/.exec(p)?.[1] || p; + +export default { extname, dirname, basename }; diff --git a/.storybook/preview.js b/.storybook/preview.jsx similarity index 70% rename from .storybook/preview.js rename to .storybook/preview.jsx index 6842b4391..5f7c43c3d 100644 --- a/.storybook/preview.js +++ b/.storybook/preview.jsx @@ -1,4 +1,3 @@ -import { Parser } from 'html-to-react'; import { INITIAL_VIEWPORTS } from '@storybook/addon-viewport'; import ReactSyntaxHighlighter from 'react-syntax-highlighter/dist/esm/prism-light'; import twig from 'react-syntax-highlighter/dist/esm/languages/prism/twig'; @@ -10,7 +9,8 @@ import '../src/index-with-dependencies.scss'; import './preview.scss'; import { makeTwigInclude } from '../src/make-twig-include'; const breakpoints = tokens.size.breakpoint; -import { useState, useEffect } from 'react'; +import { useEffect, useRef } from 'react'; +import { useEffect as storyBookUseEffect } from '@storybook/client-api'; // Extend the languages Storybook will highlight ReactSyntaxHighlighter.registerLanguage('twig', twig); @@ -28,8 +28,6 @@ const breakpointViewports = Object.keys(breakpoints).map((name) => { }; }); -const htmlToReactParser = new Parser(); - export const parameters = { options: { storySort: { @@ -58,35 +56,25 @@ export const parameters = { language: 'twig', }, prepareForInline: (storyFn) => { - const [result, setResult] = useState('

Loading...

'); useEffect(() => { - const output = storyFn(); - if (Promise.resolve(output) === output) { - output.then((result) => setResult(result)); - } else { - setResult(output); + if (rootRef.current) { + const result = storyFn(); + if (result instanceof Element) { + rootRef.current.append(result); + } else { + rootRef.current.innerHTML = result; + } } - }, [storyFn]); - return htmlToReactParser.parse(result); + }, []); + const rootRef = useRef(); + return
; }, - transformSource(src, storyContext) { - try { - const storyFunction = storyContext.originalStoryFn; - if (!storyFunction) return src; - const rendered = storyFunction( - storyContext.args || storyContext.initialArgs - ); - // The twing/source-inputs-loader.js file makes it so that whenever twig templates are rendered, - // the arguments and input path are stored in the window.__twig_inputs__ variable. - // __twig_inputs__ is a map between the output HTML and and objects with the arguments and input paths - // Here, since we have the rendered HTML, we can look up what the arguments and path were - // that correspond to that output - const input = window.__twig_inputs__?.get(rendered); - if (!input) return src; - return makeTwigInclude(input.path, input.args); - } catch { - return src; - } + transformSource(_src, storyContext) { + return makeTwigInclude( + storyContext.originalStoryFn(storyContext.parameters.args) + ?.__twigSourceFile, + storyContext.parameters.args + ); }, }, viewport: { @@ -165,4 +153,15 @@ export const globalTypes = { }, }; -export const decorators = [withTheme, withTextFlow]; +const handleCleanup = (story, ctx) => { + const result = story(); + storyBookUseEffect(() => { + if (result instanceof Element) result.__onStoryBookAttach?.(); + return () => { + if (result instanceof Element) result.__onStoryBookDetach?.(); + }; + }, [ctx]); + return result; +}; + +export const decorators = [withTheme, withTextFlow, handleCleanup]; diff --git a/.style-dictionary/build.js b/.style-dictionary/build.js index 0c9895a85..ae8548455 100644 --- a/.style-dictionary/build.js +++ b/.style-dictionary/build.js @@ -1,5 +1,5 @@ const StyleDictionary = require('style-dictionary'); -const _ = require('lodash'); +const _ = require('smoldash'); /** * Custom Transform: Kebab-Case without Category diff --git a/package-lock.json b/package-lock.json index 58a68b10a..a03dbeaaa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,8 +13,8 @@ "prismjs": "1.28.0" }, "devDependencies": { - "@babel/core": "7.18.9", - "@babel/preset-env": "7.18.9", + "@babel/core": "7.18.10", + "@babel/preset-env": "7.18.10", "@changesets/changelog-github": "0.4.6", "@changesets/cli": "2.24.1", "@cloudfour/eslint-plugin": "21.1.0", @@ -34,13 +34,11 @@ "@types/prismjs": "1.26.0", "@whitespace/storybook-addon-html": "5.0.0", "@wordpress/block-library": "3.2.20", - "babel-loader": "8.2.5", "browserify-transform-tools": "1.7.0", "buffer": "^6.0.3", - "css-loader": "5.2.7", "cssnano": "5.1.12", "eliminate": "1.1.2", - "eslint": "8.20.0", + "eslint": "8.21.0", "eslint-plugin-mdx": "1.17.1", "eslint-plugin-react": "7.30.1", "fast-json-stable-stringify": "^2.1.0", @@ -52,21 +50,17 @@ "gulp-svgmin": "3.0.0", "hash-obj": "^4.0.0", "hash.js": "^1.1.7", - "html-to-react": "1.4.8", "jabber": "1.4.0", "jest": "28.1.3", "js-yaml": "4.1.0", - "lodash": "4.17.21", "ltx": "3.0.0", "mini-css-extract-plugin": "1.6.2", "npm-run-all": "4.1.5", "pleasantest": "2.2.0", "postcss": "8.4.14", "postcss-inline-svg": "4.1.0", - "postcss-loader": "4.3.0", "postcss-media-minmax": "5.0.0", "prettier": "2.7.1", - "raw-loader": "4.0.2", "react-syntax-highlighter": "13.5.3", "remark-preset-lint-recommended": "5.0.0", "remark-preset-prettier": "0.5.1", @@ -74,23 +68,20 @@ "rollup": "2.77.2", "rollup-plugin-dts": "4.2.2", "rollup-plugin-terser": "7.0.2", - "sass": "1.54.0", - "sass-loader": "10.3.1", + "sass": "1.54.3", + "smoldash": "^0.11.0", "storybook-addon-outline": "1.4.2", "storybook-mobile": "0.1.31", "style-dictionary": "3.7.1", - "style-loader": "2.0.0", "stylelint": "14.9.1", "stylelint-config-cloudfour": "5.1.0", "stylelint-config-prettier": "9.0.3", - "stylelint-scss": "^4.0.1", + "stylelint-scss": "4.3.0", "stylelint-use-logical-spec": "4.1.0", "through2": "4.0.2", "tiny-glob": "0.2.9", "twing": "5.1.1", - "typescript": "4.7.4", - "val-loader": "2.1.2", - "webpack": "4.46.0" + "typescript": "4.7.4" }, "engines": { "node": ">=12.16.3" @@ -127,20 +118,21 @@ } }, "node_modules/@babel/core": { - "version": "7.18.9", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz", + "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==", "dev": true, - "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.9", + "@babel/generator": "^7.18.10", "@babel/helper-compilation-targets": "^7.18.9", "@babel/helper-module-transforms": "^7.18.9", "@babel/helpers": "^7.18.9", - "@babel/parser": "^7.18.9", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9", + "@babel/parser": "^7.18.10", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.18.10", + "@babel/types": "^7.18.10", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -156,11 +148,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.18.9", + "version": "7.18.12", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.12.tgz", + "integrity": "sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/types": "^7.18.9", + "@babel/types": "^7.18.10", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, @@ -244,14 +237,13 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.3.1", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz", + "integrity": "sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", "debug": "^4.1.1", "lodash.debounce": "^4.0.8", "resolve": "^1.14.2", @@ -363,14 +355,15 @@ } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.18.6", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-wrap-function": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -452,14 +445,15 @@ } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.18.6", + "version": "7.18.11", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.11.tgz", + "integrity": "sha512-oBUlbv+rjZLh2Ks9SKi4aL7eKaAXBWleHzU89mP0G6BMUlRxSckk9tSIkgDGydhgFxHuGSlBQZfnaD47oBEB7w==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-function-name": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/helper-function-name": "^7.18.9", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.18.11", + "@babel/types": "^7.18.10" }, "engines": { "node": ">=6.9.0" @@ -492,9 +486,10 @@ } }, "node_modules/@babel/parser": { - "version": "7.18.9", + "version": "7.18.11", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.11.tgz", + "integrity": "sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ==", "dev": true, - "license": "MIT", "bin": { "parser": "bin/babel-parser.js" }, @@ -533,13 +528,14 @@ } }, "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.18.6", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz", + "integrity": "sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-remap-async-to-generator": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-remap-async-to-generator": "^7.18.9", "@babel/plugin-syntax-async-generators": "^7.8.4" }, "engines": { @@ -1619,11 +1615,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.18.6", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1648,9 +1645,10 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.18.9", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.10.tgz", + "integrity": "sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/compat-data": "^7.18.8", "@babel/helper-compilation-targets": "^7.18.9", @@ -1658,7 +1656,7 @@ "@babel/helper-validator-option": "^7.18.6", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.18.6", + "@babel/plugin-proposal-async-generator-functions": "^7.18.10", "@babel/plugin-proposal-class-properties": "^7.18.6", "@babel/plugin-proposal-class-static-block": "^7.18.6", "@babel/plugin-proposal-dynamic-import": "^7.18.6", @@ -1718,13 +1716,13 @@ "@babel/plugin-transform-sticky-regex": "^7.18.6", "@babel/plugin-transform-template-literals": "^7.18.9", "@babel/plugin-transform-typeof-symbol": "^7.18.9", - "@babel/plugin-transform-unicode-escapes": "^7.18.6", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", "@babel/plugin-transform-unicode-regex": "^7.18.6", "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.18.9", - "babel-plugin-polyfill-corejs2": "^0.3.1", - "babel-plugin-polyfill-corejs3": "^0.5.2", - "babel-plugin-polyfill-regenerator": "^0.3.1", + "@babel/types": "^7.18.10", + "babel-plugin-polyfill-corejs2": "^0.3.2", + "babel-plugin-polyfill-corejs3": "^0.5.3", + "babel-plugin-polyfill-regenerator": "^0.4.0", "core-js-compat": "^3.22.1", "semver": "^6.3.0" }, @@ -1815,31 +1813,33 @@ } }, "node_modules/@babel/template": { - "version": "7.18.6", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.18.9", + "version": "7.18.11", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.11.tgz", + "integrity": "sha512-TG9PiM2R/cWCAy6BPJKeHzNbu4lPzOSZpeMfeNErskGpTJx6trEvFaVCbDvpcxwy49BKWmEPwiW8mrysNiDvIQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.9", + "@babel/generator": "^7.18.10", "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-function-name": "^7.18.9", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.9", - "@babel/types": "^7.18.9", + "@babel/parser": "^7.18.11", + "@babel/types": "^7.18.10", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -2646,6 +2646,16 @@ "node": ">=10.10.0" } }, + "node_modules/@humanwhocodes/gitignore-to-minimatch": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", + "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@humanwhocodes/object-schema": { "version": "1.2.1", "dev": true, @@ -15022,12 +15032,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.3.1", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz", + "integrity": "sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.3.1", + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.2", "semver": "^6.1.1" }, "peerDependencies": { @@ -15035,11 +15046,12 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.5.2", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz", + "integrity": "sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.1", + "@babel/helper-define-polyfill-provider": "^0.3.2", "core-js-compat": "^3.21.0" }, "peerDependencies": { @@ -15047,11 +15059,12 @@ } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.3.1", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.0.tgz", + "integrity": "sha512-RW1cnryiADFeHmfLS+WW/G431p1PsW5qdRdz0SDRi7TKcUgc7Oh/uXkT7MZ/+tGsT1BkczEAmD5XjUyJ5SWDTw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.1" + "@babel/helper-define-polyfill-provider": "^0.3.2" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -17417,146 +17430,6 @@ "node": ">=12.22" } }, - "node_modules/css-loader": { - "version": "5.2.7", - "dev": true, - "license": "MIT", - "dependencies": { - "icss-utils": "^5.1.0", - "loader-utils": "^2.0.0", - "postcss": "^8.2.15", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.1.0", - "schema-utils": "^3.0.0", - "semver": "^7.3.5" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.27.0 || ^5.0.0" - } - }, - "node_modules/css-loader/node_modules/icss-utils": { - "version": "5.1.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/css-loader/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/css-loader/node_modules/postcss-modules-extract-imports": { - "version": "3.0.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/css-loader/node_modules/postcss-modules-local-by-default": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/css-loader/node_modules/postcss-modules-scope": { - "version": "3.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/css-loader/node_modules/postcss-modules-values": { - "version": "4.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "icss-utils": "^5.0.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/css-loader/node_modules/schema-utils": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/css-loader/node_modules/semver": { - "version": "7.3.5", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/css-loader/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, "node_modules/css-mediaquery": { "version": "0.1.2", "dev": true, @@ -18993,12 +18866,14 @@ } }, "node_modules/eslint": { - "version": "8.20.0", + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.21.0.tgz", + "integrity": "sha512-/XJ1+Qurf1T9G2M5IHrsjp+xrGT73RZf23xA1z5wB1ZzzEAWSZKvRwhWxTFp1rvkvCfwcvAUNAP31bhKTTGfDA==", "dev": true, - "license": "MIT", "dependencies": { "@eslint/eslintrc": "^1.3.0", - "@humanwhocodes/config-array": "^0.9.2", + "@humanwhocodes/config-array": "^0.10.4", + "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -19008,14 +18883,17 @@ "eslint-scope": "^7.1.1", "eslint-utils": "^3.0.0", "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.2", + "espree": "^9.3.3", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", "functional-red-black-tree": "^1.0.1", "glob-parent": "^6.0.1", "globals": "^13.15.0", + "globby": "^11.1.0", + "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", @@ -19638,6 +19516,20 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/eslint/node_modules/@humanwhocodes/config-array": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", + "integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, "node_modules/eslint/node_modules/ansi-styles": { "version": "4.3.0", "dev": true, @@ -19738,6 +19630,22 @@ "node": ">=4.0" } }, + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/eslint/node_modules/glob-parent": { "version": "6.0.2", "dev": true, @@ -19771,6 +19679,51 @@ "node": ">=8" } }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/eslint/node_modules/path-key": { "version": "3.1.1", "dev": true, @@ -19835,22 +19788,27 @@ } }, "node_modules/espree": { - "version": "9.3.2", + "version": "9.3.3", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.3.tgz", + "integrity": "sha512-ORs1Rt/uQTqUKjDdGCyrtYxbazf5umATSf/K4qxjmZHORR6HJk+2s/2Pqe+Kk49HHINC/xNIrGfgh8sZcll0ng==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.7.1", + "acorn": "^8.8.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.3.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/espree/node_modules/acorn": { - "version": "8.7.1", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", "dev": true, - "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -23364,117 +23322,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/html-to-react": { - "version": "1.4.8", - "dev": true, - "license": "MIT", - "dependencies": { - "domhandler": "^4.0", - "htmlparser2": "^7.0", - "lodash.camelcase": "^4.3.0", - "ramda": "^0.28.0" - }, - "peerDependencies": { - "react": "^16.0 || ^17.0" - } - }, - "node_modules/html-to-react/node_modules/dom-serializer": { - "version": "1.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/html-to-react/node_modules/dom-serializer/node_modules/entities": { - "version": "2.2.0", - "dev": true, - "license": "BSD-2-Clause", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/html-to-react/node_modules/domelementtype": { - "version": "2.2.0", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/html-to-react/node_modules/domhandler": { - "version": "4.3.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/html-to-react/node_modules/domutils": { - "version": "2.8.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/html-to-react/node_modules/entities": { - "version": "3.0.1", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/html-to-react/node_modules/htmlparser2": { - "version": "7.2.0", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.2", - "domutils": "^2.8.0", - "entities": "^3.0.1" - } - }, - "node_modules/html-to-react/node_modules/ramda": { - "version": "0.28.0", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda" - } - }, "node_modules/html-void-elements": { "version": "1.0.5", "dev": true, @@ -34162,9 +34009,10 @@ } }, "node_modules/sass": { - "version": "1.54.0", + "version": "1.54.3", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.3.tgz", + "integrity": "sha512-fLodey5Qd41Pxp/Tk7Al97sViYwF/TazRc5t6E65O7JOk4XF8pzwIW7CvCxYVOfJFFI/1x5+elDyBIixrp+zrw==", "dev": true, - "license": "MIT", "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -34177,89 +34025,6 @@ "node": ">=12.0.0" } }, - "node_modules/sass-loader": { - "version": "10.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "klona": "^2.0.4", - "loader-utils": "^2.0.0", - "neo-async": "^2.6.2", - "schema-utils": "^3.0.0", - "semver": "^7.3.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "fibers": ">= 3.1.0", - "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", - "sass": "^1.3.0", - "webpack": "^4.36.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "fibers": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "sass": { - "optional": true - } - } - }, - "node_modules/sass-loader/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sass-loader/node_modules/schema-utils": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/sass-loader/node_modules/semver": { - "version": "7.3.7", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sass-loader/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, "node_modules/sax": { "version": "1.2.4", "dev": true, @@ -34842,6 +34607,12 @@ "node": ">=8" } }, + "node_modules/smoldash": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/smoldash/-/smoldash-0.11.0.tgz", + "integrity": "sha512-NIuSeza9mstjtf6kR5NlWvwi+rixi2C6cD9hXpfIN1Ox2bywR3x9G7kMDHxOCiM1e2Ruhuw+ffO6OXWYIecPwA==", + "dev": true + }, "node_modules/snake-case": { "version": "2.1.0", "dev": true, @@ -35957,42 +35728,6 @@ "dev": true, "license": "MIT" }, - "node_modules/style-loader": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/style-loader/node_modules/schema-utils": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/style-search": { "version": "0.1.0", "dev": true, @@ -36267,9 +36002,10 @@ } }, "node_modules/stylelint-scss": { - "version": "4.0.1", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-4.3.0.tgz", + "integrity": "sha512-GvSaKCA3tipzZHoz+nNO7S02ZqOsdBzMiCx9poSmLlb3tdJlGddEX/8QzCOD8O7GQan9bjsvLMsO5xiw6IhhIQ==", "dev": true, - "license": "MIT", "dependencies": { "lodash": "^4.17.21", "postcss-media-query-parser": "^0.2.3", @@ -36278,7 +36014,7 @@ "postcss-value-parser": "^4.1.0" }, "peerDependencies": { - "stylelint": "^14.0.0" + "stylelint": "^14.5.1" } }, "node_modules/stylelint-use-logical-spec": { @@ -38607,42 +38343,6 @@ "node": ">= 0.10" } }, - "node_modules/val-loader": { - "version": "2.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/val-loader/node_modules/schema-utils": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "dev": true, @@ -39979,19 +39679,21 @@ "dev": true }, "@babel/core": { - "version": "7.18.9", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz", + "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==", "dev": true, "requires": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.9", + "@babel/generator": "^7.18.10", "@babel/helper-compilation-targets": "^7.18.9", "@babel/helper-module-transforms": "^7.18.9", "@babel/helpers": "^7.18.9", - "@babel/parser": "^7.18.9", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9", + "@babel/parser": "^7.18.10", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.18.10", + "@babel/types": "^7.18.10", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -40000,10 +39702,12 @@ } }, "@babel/generator": { - "version": "7.18.9", + "version": "7.18.12", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.12.tgz", + "integrity": "sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg==", "dev": true, "requires": { - "@babel/types": "^7.18.9", + "@babel/types": "^7.18.10", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" } @@ -40055,13 +39759,13 @@ } }, "@babel/helper-define-polyfill-provider": { - "version": "0.3.1", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz", + "integrity": "sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg==", "dev": true, "requires": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", "debug": "^4.1.1", "lodash.debounce": "^4.0.8", "resolve": "^1.14.2", @@ -40134,13 +39838,15 @@ "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.18.6", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-wrap-function": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" } }, "@babel/helper-replace-supers": { @@ -40188,13 +39894,15 @@ "dev": true }, "@babel/helper-wrap-function": { - "version": "7.18.6", + "version": "7.18.11", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.11.tgz", + "integrity": "sha512-oBUlbv+rjZLh2Ks9SKi4aL7eKaAXBWleHzU89mP0G6BMUlRxSckk9tSIkgDGydhgFxHuGSlBQZfnaD47oBEB7w==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/helper-function-name": "^7.18.9", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.18.11", + "@babel/types": "^7.18.10" } }, "@babel/helpers": { @@ -40216,7 +39924,9 @@ } }, "@babel/parser": { - "version": "7.18.9", + "version": "7.18.11", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.11.tgz", + "integrity": "sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ==", "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { @@ -40236,12 +39946,14 @@ } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.18.6", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz", + "integrity": "sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-remap-async-to-generator": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-remap-async-to-generator": "^7.18.9", "@babel/plugin-syntax-async-generators": "^7.8.4" } }, @@ -40829,10 +40541,12 @@ } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.18.6", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-unicode-regex": { @@ -40844,7 +40558,9 @@ } }, "@babel/preset-env": { - "version": "7.18.9", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.10.tgz", + "integrity": "sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA==", "dev": true, "requires": { "@babel/compat-data": "^7.18.8", @@ -40853,7 +40569,7 @@ "@babel/helper-validator-option": "^7.18.6", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.18.6", + "@babel/plugin-proposal-async-generator-functions": "^7.18.10", "@babel/plugin-proposal-class-properties": "^7.18.6", "@babel/plugin-proposal-class-static-block": "^7.18.6", "@babel/plugin-proposal-dynamic-import": "^7.18.6", @@ -40913,13 +40629,13 @@ "@babel/plugin-transform-sticky-regex": "^7.18.6", "@babel/plugin-transform-template-literals": "^7.18.9", "@babel/plugin-transform-typeof-symbol": "^7.18.9", - "@babel/plugin-transform-unicode-escapes": "^7.18.6", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", "@babel/plugin-transform-unicode-regex": "^7.18.6", "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.18.9", - "babel-plugin-polyfill-corejs2": "^0.3.1", - "babel-plugin-polyfill-corejs3": "^0.5.2", - "babel-plugin-polyfill-regenerator": "^0.3.1", + "@babel/types": "^7.18.10", + "babel-plugin-polyfill-corejs2": "^0.3.2", + "babel-plugin-polyfill-corejs3": "^0.5.3", + "babel-plugin-polyfill-regenerator": "^0.4.0", "core-js-compat": "^3.22.1", "semver": "^6.3.0" } @@ -40975,26 +40691,30 @@ } }, "@babel/template": { - "version": "7.18.6", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", "dev": true, "requires": { "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" } }, "@babel/traverse": { - "version": "7.18.9", + "version": "7.18.11", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.11.tgz", + "integrity": "sha512-TG9PiM2R/cWCAy6BPJKeHzNbu4lPzOSZpeMfeNErskGpTJx6trEvFaVCbDvpcxwy49BKWmEPwiW8mrysNiDvIQ==", "dev": true, "requires": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.9", + "@babel/generator": "^7.18.10", "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-function-name": "^7.18.9", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.9", - "@babel/types": "^7.18.9", + "@babel/parser": "^7.18.11", + "@babel/types": "^7.18.10", "debug": "^4.1.0", "globals": "^11.1.0" } @@ -41633,6 +41353,12 @@ "minimatch": "^3.0.4" } }, + "@humanwhocodes/gitignore-to-minimatch": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", + "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", + "dev": true + }, "@humanwhocodes/object-schema": { "version": "1.2.1", "dev": true @@ -50073,27 +49799,33 @@ } }, "babel-plugin-polyfill-corejs2": { - "version": "0.3.1", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz", + "integrity": "sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.3.1", + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.2", "semver": "^6.1.1" } }, "babel-plugin-polyfill-corejs3": { - "version": "0.5.2", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz", + "integrity": "sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.1", + "@babel/helper-define-polyfill-provider": "^0.3.2", "core-js-compat": "^3.21.0" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.3.1", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.0.tgz", + "integrity": "sha512-RW1cnryiADFeHmfLS+WW/G431p1PsW5qdRdz0SDRi7TKcUgc7Oh/uXkT7MZ/+tGsT1BkczEAmD5XjUyJ5SWDTw==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.1" + "@babel/helper-define-polyfill-provider": "^0.3.2" } }, "babel-plugin-styled-components": { @@ -51703,84 +51435,6 @@ "version": "3.1.0", "dev": true }, - "css-loader": { - "version": "5.2.7", - "dev": true, - "requires": { - "icss-utils": "^5.1.0", - "loader-utils": "^2.0.0", - "postcss": "^8.2.15", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.1.0", - "schema-utils": "^3.0.0", - "semver": "^7.3.5" - }, - "dependencies": { - "icss-utils": { - "version": "5.1.0", - "dev": true, - "requires": {} - }, - "lru-cache": { - "version": "6.0.0", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "postcss-modules-extract-imports": { - "version": "3.0.0", - "dev": true, - "requires": {} - }, - "postcss-modules-local-by-default": { - "version": "4.0.0", - "dev": true, - "requires": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-modules-scope": { - "version": "3.0.0", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.4" - } - }, - "postcss-modules-values": { - "version": "4.0.0", - "dev": true, - "requires": { - "icss-utils": "^5.0.0" - } - }, - "schema-utils": { - "version": "3.0.0", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "semver": { - "version": "7.3.5", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "dev": true - } - } - }, "css-mediaquery": { "version": "0.1.2", "dev": true @@ -52783,11 +52437,14 @@ "dev": true }, "eslint": { - "version": "8.20.0", + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.21.0.tgz", + "integrity": "sha512-/XJ1+Qurf1T9G2M5IHrsjp+xrGT73RZf23xA1z5wB1ZzzEAWSZKvRwhWxTFp1rvkvCfwcvAUNAP31bhKTTGfDA==", "dev": true, "requires": { "@eslint/eslintrc": "^1.3.0", - "@humanwhocodes/config-array": "^0.9.2", + "@humanwhocodes/config-array": "^0.10.4", + "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -52797,14 +52454,17 @@ "eslint-scope": "^7.1.1", "eslint-utils": "^3.0.0", "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.2", + "espree": "^9.3.3", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", "functional-red-black-tree": "^1.0.1", "glob-parent": "^6.0.1", "globals": "^13.15.0", + "globby": "^11.1.0", + "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", @@ -52823,6 +52483,17 @@ "v8-compile-cache": "^2.0.3" }, "dependencies": { + "@humanwhocodes/config-array": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", + "integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, "ansi-styles": { "version": "4.3.0", "dev": true, @@ -52881,6 +52552,16 @@ "version": "5.3.0", "dev": true }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, "glob-parent": { "version": "6.0.2", "dev": true, @@ -52899,6 +52580,33 @@ "version": "4.0.0", "dev": true }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, "path-key": { "version": "3.1.1", "dev": true @@ -53312,16 +53020,20 @@ "dev": true }, "espree": { - "version": "9.3.2", + "version": "9.3.3", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.3.tgz", + "integrity": "sha512-ORs1Rt/uQTqUKjDdGCyrtYxbazf5umATSf/K4qxjmZHORR6HJk+2s/2Pqe+Kk49HHINC/xNIrGfgh8sZcll0ng==", "dev": true, "requires": { - "acorn": "^8.7.1", + "acorn": "^8.8.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.3.0" }, "dependencies": { "acorn": { - "version": "8.7.1", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", "dev": true } } @@ -55727,71 +55439,6 @@ "version": "3.2.0", "dev": true }, - "html-to-react": { - "version": "1.4.8", - "dev": true, - "requires": { - "domhandler": "^4.0", - "htmlparser2": "^7.0", - "lodash.camelcase": "^4.3.0", - "ramda": "^0.28.0" - }, - "dependencies": { - "dom-serializer": { - "version": "1.3.2", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "dependencies": { - "entities": { - "version": "2.2.0", - "dev": true - } - } - }, - "domelementtype": { - "version": "2.2.0", - "dev": true - }, - "domhandler": { - "version": "4.3.0", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - } - }, - "domutils": { - "version": "2.8.0", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "entities": { - "version": "3.0.1", - "dev": true - }, - "htmlparser2": { - "version": "7.2.0", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.2", - "domutils": "^2.8.0", - "entities": "^3.0.1" - } - }, - "ramda": { - "version": "0.28.0", - "dev": true - } - } - }, "html-void-elements": { "version": "1.0.5", "dev": true @@ -62788,7 +62435,9 @@ } }, "sass": { - "version": "1.54.0", + "version": "1.54.3", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.3.tgz", + "integrity": "sha512-fLodey5Qd41Pxp/Tk7Al97sViYwF/TazRc5t6E65O7JOk4XF8pzwIW7CvCxYVOfJFFI/1x5+elDyBIixrp+zrw==", "dev": true, "requires": { "chokidar": ">=3.0.0 <4.0.0", @@ -62796,46 +62445,6 @@ "source-map-js": ">=0.6.2 <2.0.0" } }, - "sass-loader": { - "version": "10.3.1", - "dev": true, - "requires": { - "klona": "^2.0.4", - "loader-utils": "^2.0.0", - "neo-async": "^2.6.2", - "schema-utils": "^3.0.0", - "semver": "^7.3.2" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "schema-utils": { - "version": "3.1.1", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "semver": { - "version": "7.3.7", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "dev": true - } - } - }, "sax": { "version": "1.2.4", "dev": true @@ -63265,6 +62874,12 @@ } } }, + "smoldash": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/smoldash/-/smoldash-0.11.0.tgz", + "integrity": "sha512-NIuSeza9mstjtf6kR5NlWvwi+rixi2C6cD9hXpfIN1Ox2bywR3x9G7kMDHxOCiM1e2Ruhuw+ffO6OXWYIecPwA==", + "dev": true + }, "snake-case": { "version": "2.1.0", "dev": true, @@ -64073,25 +63688,6 @@ "version": "0.3.0", "dev": true }, - "style-loader": { - "version": "2.0.0", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "3.0.0", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, "style-search": { "version": "0.1.0", "dev": true @@ -64366,7 +63962,9 @@ "requires": {} }, "stylelint-scss": { - "version": "4.0.1", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-4.3.0.tgz", + "integrity": "sha512-GvSaKCA3tipzZHoz+nNO7S02ZqOsdBzMiCx9poSmLlb3tdJlGddEX/8QzCOD8O7GQan9bjsvLMsO5xiw6IhhIQ==", "dev": true, "requires": { "lodash": "^4.17.21", @@ -65803,25 +65401,6 @@ "homedir-polyfill": "^1.0.1" } }, - "val-loader": { - "version": "2.1.2", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "3.0.0", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, "validate-npm-package-license": { "version": "3.0.4", "dev": true, diff --git a/package.json b/package.json index 6f29c97aa..33efe392a 100644 --- a/package.json +++ b/package.json @@ -65,10 +65,8 @@ "@types/prismjs": "1.26.0", "@whitespace/storybook-addon-html": "5.0.0", "@wordpress/block-library": "3.2.20", - "babel-loader": "8.2.5", "browserify-transform-tools": "1.7.0", "buffer": "^6.0.3", - "css-loader": "5.2.7", "cssnano": "5.1.12", "eliminate": "1.1.2", "eslint": "8.21.0", @@ -83,21 +81,17 @@ "gulp-svgmin": "3.0.0", "hash-obj": "^4.0.0", "hash.js": "^1.1.7", - "html-to-react": "1.4.8", "jabber": "1.4.0", "jest": "28.1.3", "js-yaml": "4.1.0", - "lodash": "4.17.21", "ltx": "3.0.0", "mini-css-extract-plugin": "1.6.2", "npm-run-all": "4.1.5", "pleasantest": "2.2.0", "postcss": "8.4.14", "postcss-inline-svg": "4.1.0", - "postcss-loader": "4.3.0", "postcss-media-minmax": "5.0.0", "prettier": "2.7.1", - "raw-loader": "4.0.2", "react-syntax-highlighter": "13.5.3", "remark-preset-lint-recommended": "5.0.0", "remark-preset-prettier": "0.5.1", @@ -106,11 +100,10 @@ "rollup-plugin-dts": "4.2.2", "rollup-plugin-terser": "7.0.2", "sass": "1.54.3", - "sass-loader": "10.3.1", + "smoldash": "^0.11.0", "storybook-addon-outline": "1.4.2", "storybook-mobile": "0.1.31", "style-dictionary": "3.7.1", - "style-loader": "2.0.0", "stylelint": "14.9.1", "stylelint-config-cloudfour": "5.1.0", "stylelint-config-prettier": "9.0.3", @@ -119,9 +112,7 @@ "through2": "4.0.2", "tiny-glob": "0.2.9", "twing": "5.1.1", - "typescript": "4.7.4", - "val-loader": "2.1.2", - "webpack": "4.46.0" + "typescript": "4.7.4" }, "scripts": { "start": "npm run storybook", diff --git a/static/logo.svg b/public/logo.svg similarity index 100% rename from static/logo.svg rename to public/logo.svg diff --git a/static/media/Biologia_Centrali-Americana_-_Cantorchilus_semibadius_1902.jpg b/public/media/Biologia_Centrali-Americana_-_Cantorchilus_semibadius_1902.jpg similarity index 100% rename from static/media/Biologia_Centrali-Americana_-_Cantorchilus_semibadius_1902.jpg rename to public/media/Biologia_Centrali-Americana_-_Cantorchilus_semibadius_1902.jpg diff --git a/static/media/Glacial_lakes_Bhutan.jpg b/public/media/Glacial_lakes_Bhutan.jpg similarity index 100% rename from static/media/Glacial_lakes_Bhutan.jpg rename to public/media/Glacial_lakes_Bhutan.jpg diff --git a/static/media/MtBlanc1-300x225.jpg b/public/media/MtBlanc1-300x225.jpg similarity index 100% rename from static/media/MtBlanc1-300x225.jpg rename to public/media/MtBlanc1-300x225.jpg diff --git a/static/media/MtBlanc1.jpg b/public/media/MtBlanc1.jpg similarity index 100% rename from static/media/MtBlanc1.jpg rename to public/media/MtBlanc1.jpg diff --git a/static/media/Sediment_off_the_Yucatan_Peninsula.jpg b/public/media/Sediment_off_the_Yucatan_Peninsula.jpg similarity index 100% rename from static/media/Sediment_off_the_Yucatan_Peninsula.jpg rename to public/media/Sediment_off_the_Yucatan_Peninsula.jpg diff --git a/static/media/Windbuchencom.jpg b/public/media/Windbuchencom.jpg similarity index 100% rename from static/media/Windbuchencom.jpg rename to public/media/Windbuchencom.jpg diff --git a/static/media/avatar-default.svg b/public/media/avatar-default.svg similarity index 100% rename from static/media/avatar-default.svg rename to public/media/avatar-default.svg diff --git a/static/media/bookicon.png b/public/media/bookicon.png similarity index 100% rename from static/media/bookicon.png rename to public/media/bookicon.png diff --git a/static/media/client-logos/logo-ceasefire.svg b/public/media/client-logos/logo-ceasefire.svg similarity index 100% rename from static/media/client-logos/logo-ceasefire.svg rename to public/media/client-logos/logo-ceasefire.svg diff --git a/static/media/client-logos/logo-deschutes.svg b/public/media/client-logos/logo-deschutes.svg similarity index 100% rename from static/media/client-logos/logo-deschutes.svg rename to public/media/client-logos/logo-deschutes.svg diff --git a/static/media/client-logos/logo-entertainment.svg b/public/media/client-logos/logo-entertainment.svg similarity index 100% rename from static/media/client-logos/logo-entertainment.svg rename to public/media/client-logos/logo-entertainment.svg diff --git a/static/media/client-logos/logo-hautelook.svg b/public/media/client-logos/logo-hautelook.svg similarity index 100% rename from static/media/client-logos/logo-hautelook.svg rename to public/media/client-logos/logo-hautelook.svg diff --git a/static/media/client-logos/logo-obama.svg b/public/media/client-logos/logo-obama.svg similarity index 100% rename from static/media/client-logos/logo-obama.svg rename to public/media/client-logos/logo-obama.svg diff --git a/static/media/client-logos/logo-treasurecoast.svg b/public/media/client-logos/logo-treasurecoast.svg similarity index 100% rename from static/media/client-logos/logo-treasurecoast.svg rename to public/media/client-logos/logo-treasurecoast.svg diff --git a/static/media/client-logos/logo-walmart.svg b/public/media/client-logos/logo-walmart.svg similarity index 100% rename from static/media/client-logos/logo-walmart.svg rename to public/media/client-logos/logo-walmart.svg diff --git a/static/media/piano.ogg b/public/media/piano.ogg similarity index 100% rename from static/media/piano.ogg rename to public/media/piano.ogg diff --git a/static/media/waterfall_edit.mp4 b/public/media/waterfall_edit.mp4 similarity index 100% rename from static/media/waterfall_edit.mp4 rename to public/media/waterfall_edit.mp4 diff --git a/src/components/button/button.stories.mdx b/src/components/button/button.stories.mdx index 2137258be..c5263214c 100644 --- a/src/components/button/button.stories.mdx +++ b/src/components/button/button.stories.mdx @@ -1,10 +1,8 @@ import { Canvas, Meta, Story } from '@storybook/addon-docs'; import stylesDemoSource from './demo/styles.twig?raw'; import stylesDemo from './demo/styles.twig'; -// eslint-disable-next-line @cloudfour/import/no-webpack-loader-syntax import iconButtonCustomDemoSource from './demo/icon-button-custom-demo.twig?raw'; import iconButtonCustomDemo from './demo/icon-button-custom-demo.twig'; -// eslint-disable-next-line @cloudfour/import/no-webpack-loader-syntax import slashedIconButtonCustomDemoSource from './demo/slashed-icon-button-custom-demo.twig?raw'; import slashedIconButtonCustomDemo from './demo/slashed-icon-button-custom-demo.twig'; import button from './button.twig'; diff --git a/src/components/checkbox/checkbox.twig b/src/components/checkbox/checkbox.twig index a1d6cc68e..9bcec1f8e 100644 --- a/src/components/checkbox/checkbox.twig +++ b/src/components/checkbox/checkbox.twig @@ -16,7 +16,7 @@ 'disabled' ] %} {% set attribute_value = attribute(_context, attribute_name) %} - {% if attribute_value %}{{ attribute_name }}{% endif %} + {% if attribute_value and attribute_value != '' %}{{ attribute_name }}{% endif %} {% endfor %} {% endset %} diff --git a/src/components/comment-form/comment-form.stories.mdx b/src/components/comment-form/comment-form.stories.mdx index 5a5adbd2e..37f26113d 100644 --- a/src/components/comment-form/comment-form.stories.mdx +++ b/src/components/comment-form/comment-form.stories.mdx @@ -47,12 +47,12 @@ The form used to add a comment to an article. Including the `heading_id` and `he }} > {({ isLoggedIn, isReply }) => { - useEffect(() => { - const { destroy } = createElasticTextArea( - document.querySelector('.js-elastic-textarea') - ); - return destroy; - }, []); + /* useEffect(() => { */ + /* const { destroy } = createElasticTextArea( */ + /* document.querySelector('.js-elastic-textarea') */ + /* ); */ + /* return destroy; */ + /* }, []); */ return template({ logged_in_user: isLoggedIn ? tyler : undefined, log_out_url: '/logout', @@ -91,12 +91,12 @@ There is also a reply version of this component (`is_reply: true`), used to repl }} > {({ isLoggedIn, isReply }) => { - useEffect(() => { - const { destroy } = createElasticTextArea( - document.querySelector('.js-elastic-textarea') - ); - return destroy; - }, []); + /* useEffect(() => { */ + /* const { destroy } = createElasticTextArea( */ + /* document.querySelector('.js-elastic-textarea') */ + /* ); */ + /* return destroy; */ + /* }, []); */ return template({ logged_in_user: isLoggedIn ? tyler : undefined, log_out_url: '/logout', diff --git a/src/components/comment/comment.stories.mdx b/src/components/comment/comment.stories.mdx index f751bab59..add428b5f 100644 --- a/src/components/comment/comment.stories.mdx +++ b/src/components/comment/comment.stories.mdx @@ -3,19 +3,10 @@ import { makeComment } from './demo/data.ts'; import template from './comment.twig'; import { initCommentReplyForm } from './comment.ts'; import { createElasticTextArea } from '../input/elastic-textarea.ts'; -import { useEffect } from '@storybook/client-api'; import { makeTwigInclude } from '../../make-twig-include.js'; import authorDemo from './demo/author.twig'; import memberDemo from './demo/member.twig'; -// See: https://github.com/webpack-contrib/raw-loader#examples -// For now, it seems likely Storybook is pretty tied to Webpack, therefore, we are -// okay with the following Webpack-specific raw loader syntax. It's better to leave -// the ESLint rule enabled globally, and only thoughtfully disable as needed (e.g. -// within a Storybook docs page and not within an actual component). -// This can be revisited in the future if Storybook no longer relies on Webpack. -// eslint-disable-next-line @cloudfour/import/no-webpack-loader-syntax import authorDemoSource from './demo/author.twig?raw'; -// eslint-disable-next-line @cloudfour/import/no-webpack-loader-syntax import memberDemoSource from './demo/member.twig?raw'; const tyler = { name: 'Tyler Sticka', @@ -81,15 +72,17 @@ This information may be passed to the component as a `comment` object matching t }, }} > - {(args) => { - useEffect(() => initCommentReplyForms()); - return template({ - comment: makeComment(), - allow_replies: args.allowReplies, - logged_in_user: args.isLoggedIn ? tyler : null, - log_out_url: '/logout', - }); - }} + {(args) => + template( + { + comment: makeComment(), + allow_replies: args.allowReplies, + logged_in_user: args.isLoggedIn ? tyler : null, + log_out_url: '/logout', + }, + initCommentReplyForms + ) + } @@ -108,16 +101,18 @@ It is helpful for context within a discussion to know when a commentor is the or }, }} > - {(args) => { - useEffect(() => initCommentReplyForms()); - return authorDemo({ - comment: makeComment(), - allow_replies: args.allowReplies, - demo_post_author: true, - logged_in_user: args.isLoggedIn ? tyler : null, - log_out_url: '/logout', - }); - }} + {(args) => + authorDemo( + { + comment: makeComment(), + allow_replies: args.allowReplies, + demo_post_author: true, + logged_in_user: args.isLoggedIn ? tyler : null, + log_out_url: '/logout', + }, + initCommentReplyForms + ) + } @@ -132,16 +127,18 @@ It is helpful for context within a discussion to know when a commentor is the or }, }} > - {(args) => { - useEffect(() => initCommentReplyForms()); - return memberDemo({ - comment: makeComment(), - allow_replies: args.allowReplies, - demo_cloud_four_member: true, - logged_in_user: args.isLoggedIn ? tyler : null, - log_out_url: '/logout', - }); - }} + {(args) => + memberDemo( + { + comment: makeComment(), + allow_replies: args.allowReplies, + demo_cloud_four_member: true, + logged_in_user: args.isLoggedIn ? tyler : null, + log_out_url: '/logout', + }, + initCommentReplyForms + ) + } @@ -164,17 +161,19 @@ If `comment.approved` is not `true`, an [Alert](/docs/components-alert--basic) w }, }} > - {(args) => { - useEffect(() => initCommentReplyForms()); - return template({ - comment: makeComment({ - approved: false, - }), - allow_replies: args.allowReplies, - logged_in_user: args.isLoggedIn ? tyler : null, - log_out_url: '/logout', - }); - }} + {(args) => + template( + { + comment: makeComment({ + approved: false, + }), + allow_replies: args.allowReplies, + logged_in_user: args.isLoggedIn ? tyler : null, + log_out_url: '/logout', + }, + initCommentReplyForms + ) + } @@ -199,19 +198,21 @@ Additionally, a `source` object may be passed to the template consisting of a `u }, }} > - {(args) => { - useEffect(() => initCommentReplyForms()); - return template({ - comment: makeComment(), - source: { - url: 'https://twitter.com/smashingmag/status/1371521325236416516', - name: 'twitter.com', + {(args) => + template( + { + comment: makeComment(), + source: { + url: 'https://twitter.com/smashingmag/status/1371521325236416516', + name: 'twitter.com', + }, + allow_replies: args.allowReplies, + logged_in_user: args.isLoggedIn ? tyler : null, + log_out_url: '/logout', }, - allow_replies: args.allowReplies, - logged_in_user: args.isLoggedIn ? tyler : null, - log_out_url: '/logout', - }); - }} + initCommentReplyForms + ) + } @@ -240,15 +241,17 @@ If the user is logged in, you should pass in `logged_in_user` and `log_out_url` }, }} > - {(args) => { - useEffect(() => initCommentReplyForms()); - return template({ - comment: makeComment(), - allow_replies: args.allowReplies, - logged_in_user: args.isLoggedIn ? tyler : null, - log_out_url: '/logout', - }); - }} + {(args) => + template( + { + comment: makeComment(), + allow_replies: args.allowReplies, + logged_in_user: args.isLoggedIn ? tyler : null, + log_out_url: '/logout', + }, + initCommentReplyForms + ) + } @@ -276,15 +279,17 @@ While it is theoretically possible to infinitely nest `children`, it's recommend }, }} > - {(args) => { - useEffect(() => initCommentReplyForms()); - return template({ - comment: makeComment({ replies: 2 }), - allow_replies: args.allowReplies, - logged_in_user: args.isLoggedIn ? tyler : null, - log_out_url: '/logout', - }); - }} + {(args) => + template( + { + comment: makeComment({ replies: 2 }), + allow_replies: args.allowReplies, + logged_in_user: args.isLoggedIn ? tyler : null, + log_out_url: '/logout', + }, + initCommentReplyForms + ) + } diff --git a/src/components/comment/demo/data.ts b/src/components/comment/demo/data.ts index 4b05ec495..c484836ea 100644 --- a/src/components/comment/demo/data.ts +++ b/src/components/comment/demo/data.ts @@ -1,5 +1,10 @@ import Jabber from 'jabber'; -import { random, sample, uniqueId } from 'lodash'; +import { uniqueId } from 'smoldash'; + +const random = (lower: number, upper: number) => + Math.round(Math.random() * (upper - lower) + lower); + +const sample = (arr: any[]) => arr[random(0, arr.length - 1)]; const themeWords = [ 'Progressive Web App (PWA)', diff --git a/src/components/footnote/footnote.stories.mdx b/src/components/footnote/footnote.stories.mdx index a07963e90..b99e544eb 100644 --- a/src/components/footnote/footnote.stories.mdx +++ b/src/components/footnote/footnote.stories.mdx @@ -1,6 +1,5 @@ import { Canvas, Meta, Story } from '@storybook/addon-docs'; import template from './demo/demo.twig'; -// eslint-disable-next-line @cloudfour/import/no-webpack-loader-syntax import demoSource from './demo/demo.twig?raw'; { diff --git a/src/components/input/demo/select.twig b/src/components/input/demo/select.twig index 430087cdc..4e68aec92 100644 --- a/src/components/input/demo/select.twig +++ b/src/components/input/demo/select.twig @@ -1,4 +1,4 @@ -{% embed '@cloudfour/components/input/select.twig' only %} +{% embed '@cloudfour/components/input/select.twig' %} {% block options %} diff --git a/src/components/input/input.stories.mdx b/src/components/input/input.stories.mdx index eec755d88..4fc415901 100644 --- a/src/components/input/input.stories.mdx +++ b/src/components/input/input.stories.mdx @@ -1,5 +1,4 @@ import { Canvas, Meta, Story } from '@storybook/addon-docs'; -import { useEffect } from '@storybook/client-api'; import { makeTwigInclude } from '../../make-twig-include.js'; import selectDemoSource from './demo/select.twig?raw'; import selectDemo from './demo/select.twig'; @@ -108,14 +107,12 @@ If the `rows` attribute is set, it will be used as the minimum height. }, }} > - {(args) => { - // Use storybook hooks to trigger JS after story renders - // @see https://github.com/storybookjs/storybook/issues/7786 - useEffect(() => { - createElasticTextArea(document.querySelector('.js-elastic-textarea')); - }, []); - return input(args); - }} + {(args) => + input(args, () => { + const { destroy } = createElasticTextArea(document.querySelector('.js-elastic-textarea')); + return destroy; + }) + } diff --git a/src/components/input/input.twig b/src/components/input/input.twig index 624cac0af..73cc60d45 100644 --- a/src/components/input/input.twig +++ b/src/components/input/input.twig @@ -27,7 +27,7 @@ 'readonly' ] %} {% set attribute_value = attribute(_context, attribute_name) %} - {% if attribute_value %}{{ attribute_name }}{% endif %} + {% if attribute_value and attribute_value != '' %}{{ attribute_name }}{% endif %} {% endfor %} {% endset %} diff --git a/src/components/input/select.twig b/src/components/input/select.twig index 04114a9c3..f9260db3a 100644 --- a/src/components/input/select.twig +++ b/src/components/input/select.twig @@ -6,7 +6,7 @@ 'autocomplete' ] %} {% set attribute_value = attribute(_context, attribute_name) %} - {% if attribute_value %}{{ attribute_name }}="{{ attribute_value }}"{% endif %} + {% if attribute_value and attribute_value != '' %}{{ attribute_name }}="{{ attribute_value }}"{% endif %} {% endfor %} {% for attribute_name in [ 'autofocus', @@ -14,7 +14,7 @@ 'disabled' ] %} {% set attribute_value = attribute(_context, attribute_name) %} - {% if attribute_value %}{{ attribute_name }}{% endif %} + {% if attribute_value and attribute_value != '' %}{{ attribute_name }}{% endif %} {% endfor %} {% endset %} diff --git a/src/components/media-summary/media-summary.stories.mdx b/src/components/media-summary/media-summary.stories.mdx index 37e413033..a56ffab3f 100644 --- a/src/components/media-summary/media-summary.stories.mdx +++ b/src/components/media-summary/media-summary.stories.mdx @@ -2,7 +2,6 @@ import { Canvas, Meta, Story } from '@storybook/addon-docs'; import bookDemo from './demo/book.twig'; import eventDemo from './demo/event.twig'; import bookDemoSource from './demo/book.twig?raw'; -// eslint-disable-next-line @cloudfour/import/no-webpack-loader-syntax import eventDemoSource from './demo/event.twig?raw'; diff --git a/src/design/demo/favicon-apps.twig b/src/design/demo/favicon-apps.twig index 31b9df8b7..c4124bfd9 100644 --- a/src/design/demo/favicon-apps.twig +++ b/src/design/demo/favicon-apps.twig @@ -2,20 +2,20 @@ {% if platform == 'apple' %}
  • - + Cloud Four
  • {% else %}
  • - + Cloud Four
  • - + Cloud Four
  • diff --git a/src/design/icons/icons.stories.mdx b/src/design/icons/icons.stories.mdx index f1b64facd..0cd861d07 100644 --- a/src/design/icons/icons.stories.mdx +++ b/src/design/icons/icons.stories.mdx @@ -1,36 +1,33 @@ import { IconGallery, IconItem, Meta } from '@storybook/addon-docs'; +import { filePathToName } from '../../file-path-to-name.js' // Import whole directory of icons together -// Using inline loaders to confine SVG to React transform to this doc -// @see https://webpack.js.org/guides/dependency-management/#context-module-api -// @see https://webpack.js.org/concepts/loaders/#configuration -// @see https://react-svgr.com/docs/webpack/ const iconDir = import.meta.glob( '../../assets/icons/*.svg', { eager: true } ); -console.log(iconDir) -const iconElements = Object.entries(iconDir).map(([path, module]) => { +const iconElements = Object.values(iconDir).map((module) => { const Icon = module.ReactComponent; // Retains subdirectory if we want to organize with those in the future - const name = 'hi' // TODO + const name = filePathToName(module.default); return ( - - + + ); }); const brandIconDir = import.meta.glob( '../../assets/icons/brands/**.svg', + { eager: true } ); // This is duplicated from icons, we may want to consider keeping this logic DRY // in a single file in the future. -const brandIconElements = Object.entries(brandIconDir).map(([path, module]) => { +const brandIconElements = Object.values(brandIconDir).map((module) => { const BrandIcon = module.ReactComponent; // Retains subdirectory if we want to organize with those in the future - const name = 'hi2' // TODO + const name = module.default.replace('/src/assets/icons/brands/', '').replace('.svg', ''); return ( - - + + ); }); diff --git a/src/design/illustrations.stories.mdx b/src/design/illustrations.stories.mdx index f2271f04f..ca0fc6544 100644 --- a/src/design/illustrations.stories.mdx +++ b/src/design/illustrations.stories.mdx @@ -1,17 +1,16 @@ import { Meta, Story } from '@storybook/addon-docs'; -import { basename, extname } from 'path'; import imageDeck from './demo/image-deck.twig'; import responsiveImageDeck from './demo/responsive-image-deck.twig'; import responsiveImage from '../assets/illustrations/responsive-fallback.svg'; import avatarDefaultSrc from '../assets/illustrations/avatar-default.svg'; -const featureImageDir = require.context( - '../assets/illustrations/feature', - false, - /\.svg$/ +import { filePathToName } from '../file-path-to-name.js' +const featureImageDir = import.meta.glob( + '../assets/illustrations/feature/*.svg', + { eager: true } ); -const featureImageData = featureImageDir.keys().map((key) => { - const name = basename(key, extname(key)); - const src = featureImageDir(key); +const featureImageData = Object.values(featureImageDir).map((module) => { + const src = module.default; + const name = filePathToName(src); return { name, src }; }); diff --git a/src/docs/changelog.stories.mdx b/src/docs/changelog.stories.mdx index d0c52dd50..b6c081bc7 100644 --- a/src/docs/changelog.stories.mdx +++ b/src/docs/changelog.stories.mdx @@ -1,5 +1,5 @@ import { Description, Meta } from '@storybook/addon-docs'; -import changelog from '../../CHANGELOG.md'; +import changelog from '../../CHANGELOG.md?raw'; diff --git a/src/docs/contributing.stories.mdx b/src/docs/contributing.stories.mdx index 1e71db34c..219c0b9b1 100644 --- a/src/docs/contributing.stories.mdx +++ b/src/docs/contributing.stories.mdx @@ -1,5 +1,5 @@ import { Description, Meta } from '@storybook/addon-docs'; -import contributing from '../../CONTRIBUTING.md'; +import contributing from '../../CONTRIBUTING.md?raw'; diff --git a/src/docs/intro.stories.mdx b/src/docs/intro.stories.mdx index a89d10f85..1abd1ad42 100644 --- a/src/docs/intro.stories.mdx +++ b/src/docs/intro.stories.mdx @@ -1,5 +1,5 @@ import { Description, Meta } from '@storybook/addon-docs'; -import readme from '../../README.md'; +import readme from '../../README.md?raw'; diff --git a/src/file-path-to-name.js b/src/file-path-to-name.js new file mode 100644 index 000000000..6f53051f2 --- /dev/null +++ b/src/file-path-to-name.js @@ -0,0 +1,3 @@ +// Converts e.g. /asdf/1234/some-name.js to some-name +export const filePathToName = (filePath) => + /([^/.]*)\.?[^/]*$/.exec(filePath)?.[1] || filePath; diff --git a/src/objects/bunch/bunch.stories.mdx b/src/objects/bunch/bunch.stories.mdx index 0c4ae4b73..124d8ad75 100644 --- a/src/objects/bunch/bunch.stories.mdx +++ b/src/objects/bunch/bunch.stories.mdx @@ -1,8 +1,18 @@ import { ArgsTable, Canvas, Meta, Story } from '@storybook/addon-docs'; -import { shuffle } from 'lodash'; import avatarsDemo from './demo/avatars.twig'; -const demoImageDir = require.context('./demo', false, /\.png$/); -const demoImageSrcs = demoImageDir.keys().map((key) => demoImageDir(key)); +const demoImageDir = import.meta.glob('./demo/*.png', { eager: true }); +const demoImageSrcs = Object.values(demoImageDir).map( + (module) => module.default +); +// https://www.w3docs.com/snippets/javascript/how-to-randomize-shuffle-a-javascript-array.html +const shuffle = (array) => { + let arr = array.slice(); + for (let i = arr.length - 1; i > 0; i--) { + const j = Math.floor(Math.random() * (i + 1)); + [arr[i], arr[j]] = [arr[j], arr[i]]; + } + return arr; +}; const avatarsDemoStory = (args) => { const srcs = shuffle(demoImageSrcs).slice(0, args.count); return avatarsDemo({ srcs }); diff --git a/src/objects/container/container.stories.mdx b/src/objects/container/container.stories.mdx index 1f29df9dd..8c4be3178 100644 --- a/src/objects/container/container.stories.mdx +++ b/src/objects/container/container.stories.mdx @@ -1,14 +1,5 @@ import { Canvas, Meta, Story } from '@storybook/addon-docs'; import basicDemo from './demo/basic.twig'; -// The '!!raw-loader!' syntax is a non-standard, Webpack-specific, syntax. -// See: https://github.com/webpack-contrib/raw-loader#examples -// For now, it seems likely Storybook is pretty tied to Webpack, therefore, we -// are okay with the following Webpack-specific raw loader syntax. It's better -// to leave the ESLint rule enabled globally, and only thoughtfully disable as -// needed (e.g. within a Storybook docs page and not within an actual -// component). This can be revisited in the future if Storybook no longer relies -// on Webpack. -// eslint-disable-next-line @cloudfour/import/no-webpack-loader-syntax import fillDemoSource from './demo/fill.twig?raw'; import fillDemo from './demo/fill.twig'; const basicDemoStory = (args) => { diff --git a/src/objects/media/media.stories.mdx b/src/objects/media/media.stories.mdx index 6d001ab7e..e22f82d30 100644 --- a/src/objects/media/media.stories.mdx +++ b/src/objects/media/media.stories.mdx @@ -1,16 +1,6 @@ import { Canvas, Meta, Story } from '@storybook/addon-docs'; -// The '!!raw-loader!' syntax is a non-standard, Webpack-specific, syntax. -// See: https://github.com/webpack-contrib/raw-loader#examples -// For now, it seems likely Storybook is pretty tied to Webpack, therefore, we -// are okay with the following Webpack-specific raw loader syntax. It's better -// to leave the ESLint rule enabled globally, and only thoughtfully disable as -// needed (e.g. within a Storybook docs page and not within an actual -// component). This can be revisited in the future if Storybook no longer relies -// on Webpack. -// eslint-disable-next-line @cloudfour/import/no-webpack-loader-syntax import calendarDateDemoSource from './demo/calendar-date.twig?raw'; import calendarDateDemo from './demo/calendar-date.twig'; -// eslint-disable-next-line @cloudfour/import/no-webpack-loader-syntax import checkboxDemoSource from './demo/checkbox.twig?raw'; import checkboxDemo from './demo/checkbox.twig'; import imageDemo from './demo/image.twig'; diff --git a/src/objects/overview/overview.stories.mdx b/src/objects/overview/overview.stories.mdx index a3c0538bb..130683747 100644 --- a/src/objects/overview/overview.stories.mdx +++ b/src/objects/overview/overview.stories.mdx @@ -2,7 +2,6 @@ import { Canvas, Meta, Story } from '@storybook/addon-docs'; import basicDemo from './demo/basic.twig'; import advancedDemo from './demo/advanced.twig'; import basicDemoSource from './demo/basic.twig?raw'; -// eslint-disable-next-line @cloudfour/import/no-webpack-loader-syntax import advancedDemoSource from './demo/advanced.twig?raw'; import topics from '../../components/dot-leader/demo/topics.json'; diff --git a/src/objects/page/page.stories.mdx b/src/objects/page/page.stories.mdx index 757dccb59..310b9069a 100644 --- a/src/objects/page/page.stories.mdx +++ b/src/objects/page/page.stories.mdx @@ -1,17 +1,7 @@ import { Canvas, Meta, Story } from '@storybook/addon-docs'; import { useEffect } from '@storybook/client-api'; -// The '!!raw-loader!' syntax is a non-standard, Webpack-specific, syntax. -// See: https://github.com/webpack-contrib/raw-loader#examples -// For now, it seems likely Storybook is pretty tied to Webpack, therefore, we -// are okay with the following Webpack-specific raw loader syntax. It's better -// to leave the ESLint rule enabled globally, and only thoughtfully disable as -// needed (e.g. within a Storybook docs page and not within an actual -// component). This can be revisited in the future if Storybook no longer relies -// on Webpack. -// eslint-disable-next-line @cloudfour/import/no-webpack-loader-syntax import exampleDemoSource from './demo/example.twig?raw'; import exampleDemo from './demo/example.twig'; -// eslint-disable-next-line @cloudfour/import/no-webpack-loader-syntax import exampleDemoWithAlertSource from './demo/example-with-alert.twig?raw'; import exampleDemoWithAlert from './demo/example-with-alert.twig'; diff --git a/src/objects/rhythm/rhythm.stories.mdx b/src/objects/rhythm/rhythm.stories.mdx index 10011321c..ff3be7d6c 100644 --- a/src/objects/rhythm/rhythm.stories.mdx +++ b/src/objects/rhythm/rhythm.stories.mdx @@ -1,14 +1,5 @@ import { ArgsTable, Canvas, Meta, Story } from '@storybook/addon-docs'; import demo from './demo/example.twig'; -// The '!!raw-loader!' syntax is a non-standard, Webpack-specific, syntax. -// See: https://github.com/webpack-contrib/raw-loader#examples -// For now, it seems likely Storybook is pretty tied to Webpack, therefore, we -// are okay with the following Webpack-specific raw loader syntax. It's better -// to leave the ESLint rule enabled globally, and only thoughtfully disable as -// needed (e.g. within a Storybook docs page and not within an actual -// component). This can be revisited in the future if Storybook no longer relies -// on Webpack. -// eslint-disable-next-line @cloudfour/import/no-webpack-loader-syntax import nestingDemoSource from './demo/nesting.twig?raw'; import nestingDemo from './demo/nesting.twig'; const argsStringFromStoryContext = (storyContext) => { diff --git a/src/tokens/aspect-ratio.stories.mdx b/src/tokens/aspect-ratio.stories.mdx index 2d47929a4..8643670f1 100644 --- a/src/tokens/aspect-ratio.stories.mdx +++ b/src/tokens/aspect-ratio.stories.mdx @@ -1,6 +1,6 @@ import { Meta } from '@storybook/addon-docs'; import tokens from '../compiled/tokens/js/tokens.js'; -const _ = require('lodash'); +import * as _ from 'smoldash'; const aspectRatios = tokens.number.aspect_ratio; const aspectRatioRows = Object.keys(aspectRatios).map((key) => { const { name, attributes, value, comment } = aspectRatios[key]; diff --git a/src/tokens/breakpoint.stories.mdx b/src/tokens/breakpoint.stories.mdx index 80c5bf378..d80840180 100644 --- a/src/tokens/breakpoint.stories.mdx +++ b/src/tokens/breakpoint.stories.mdx @@ -1,6 +1,6 @@ import { Meta } from '@storybook/addon-docs'; import tokens from '../compiled/tokens/js/tokens.js'; -const _ = require('lodash'); +import * as _ from 'smoldash'; const breakpoints = tokens.size.breakpoint; const breakpointRows = Object.keys(breakpoints).map((key) => { const { name, attributes, value } = breakpoints[key]; diff --git a/src/tokens/font.stories.mdx b/src/tokens/font.stories.mdx index b13215b05..954925437 100644 --- a/src/tokens/font.stories.mdx +++ b/src/tokens/font.stories.mdx @@ -1,6 +1,6 @@ import { Meta } from '@storybook/addon-docs'; import tokens from '../compiled/tokens/js/tokens.js'; -const _ = require('lodash'); +import * as _ from 'smoldash'; const generateTokenTable = (props) => { const propsArray = Object.values(props); const hasComments = propsArray.some((p) => Boolean(p.comment)); diff --git a/src/tokens/modular-scale.stories.mdx b/src/tokens/modular-scale.stories.mdx index 8b361bad1..3ab8c488f 100644 --- a/src/tokens/modular-scale.stories.mdx +++ b/src/tokens/modular-scale.stories.mdx @@ -1,6 +1,6 @@ import { Meta } from '@storybook/addon-docs'; import tokens from '../compiled/tokens/js/tokens.js'; -const _ = require('lodash'); +import * as _ from 'smoldash'; const modularScale = tokens.number.scale.modular; const modularScaleRows = Object.keys(modularScale).map((key) => { const { name, attributes, value } = modularScale[key]; diff --git a/src/tokens/motion.stories.mdx b/src/tokens/motion.stories.mdx index 64293382a..7395a8bbc 100644 --- a/src/tokens/motion.stories.mdx +++ b/src/tokens/motion.stories.mdx @@ -1,6 +1,6 @@ import { Meta } from '@storybook/addon-docs'; import tokens from '../compiled/tokens/js/tokens.js'; -const _ = require('lodash'); +import * as _ from 'smoldash'; const generateTokenTable = (props, filterLevel) => { const propsArray = Object.values(props); const hasComments = propsArray.some((p) => Boolean(p.comment)); diff --git a/src/tokens/opacity.stories.mdx b/src/tokens/opacity.stories.mdx index c76b82bfe..e17a074b9 100644 --- a/src/tokens/opacity.stories.mdx +++ b/src/tokens/opacity.stories.mdx @@ -1,6 +1,6 @@ import { Meta } from '@storybook/addon-docs'; import tokens from '../compiled/tokens/js/tokens.js'; -const _ = require('lodash'); +import * as _ from 'smoldash'; const opacities = tokens.number.opacity; const opacityRows = Object.keys(opacities).map((key) => { const { name, attributes, value } = opacities[key]; diff --git a/src/types.ts b/src/types.ts index a0d347371..79cbf97c3 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,5 +1,8 @@ declare module '*.twig' { - function template(opts: Record): string; + function template( + opts: Record, + callback?: (root: Element) => unknown + ): string; export default template; } diff --git a/src/utilities/text/text.stories.mdx b/src/utilities/text/text.stories.mdx index f73ba7eae..56afa4342 100644 --- a/src/utilities/text/text.stories.mdx +++ b/src/utilities/text/text.stories.mdx @@ -1,8 +1,6 @@ import { Canvas, Meta, Story } from '@storybook/addon-docs'; import noWrapDemoSource from './demo/nowrap.twig?raw'; -// eslint-disable-next-line @cloudfour/import/no-webpack-loader-syntax import colorDemoSource from './demo/color.twig?raw'; -// eslint-disable-next-line @cloudfour/import/no-webpack-loader-syntax import textAlignDemoSource from './demo/text-align.twig?raw'; import noWrapDemo from './demo/nowrap.twig'; import colorDemo from './demo/color.twig'; diff --git a/src/vendor/wordpress/utilities.stories.mdx b/src/vendor/wordpress/utilities.stories.mdx index 2477245f6..4666cc335 100644 --- a/src/vendor/wordpress/utilities.stories.mdx +++ b/src/vendor/wordpress/utilities.stories.mdx @@ -1,5 +1,5 @@ import { ArgsTable, Canvas, Meta, Story } from '@storybook/addon-docs'; -import { kebabCase } from 'lodash'; +import { kebabCase } from 'smoldash'; import tokens from '../../compiled/tokens/js/tokens.js'; import alignmentDemo from './demo/alignment.twig'; import colorDemo from './demo/color.twig'; diff --git a/twing/rollup-plugin.js b/twing/rollup-plugin.js index 340308187..eb761ca67 100644 --- a/twing/rollup-plugin.js +++ b/twing/rollup-plugin.js @@ -1,39 +1,87 @@ -const glob = require('tiny-glob'); const fs = require('fs/promises'); +const glob = require('tiny-glob'); const path = require('path'); /** @returns {import('vite').Plugin} */ const twingPlugin = () => { const twingEnv = '\0twingEnv'; + const twingLoader = '\0twingLoader'; return { name: 'twing', async resolveId(id) { if (id === twingEnv) return twingEnv; + if (id === twingLoader) return twingLoader; }, async load(id) { - if (id !== twingEnv) return; - - const files = await glob('src/**/*.twig', { cwd: process.cwd() }); - - return ` - import { TwingEnvironment, TwingLoaderArray } from 'twing/dist/es/browser.js' - ${files - .map( - (file, i) => - `import template${i} from ${JSON.stringify(`./${file}?raw`)}` - ) - .join('\n')} + if (id === twingLoader) { + const files = await glob('src/**/*.twig', { cwd: process.cwd() }); - const files = { + // const preloadedFiles = ( + // await Promise.all( + // files.map(async (f) => { + // const newName = f.replace(/^src\//g, '@cloudfour/'); + // return `${JSON.stringify(newName)}: ${JSON.stringify( + // await fs.readFile(f, 'utf8') + // )}`; + // }) + // ) + // ).join(',\n'); + return ` + import { TwingLoaderArray } from '@cloudfour/twing-browser-esm' + import { environment } from ${JSON.stringify(twingEnv)} ${files - .map((file, i) => { - const newName = file.replace(/^src\//g, '@cloudfour/'); - return `${JSON.stringify(newName)}: template${i}`; - }) - .join(',\n')} - } - export default new TwingEnvironment(new TwingLoaderArray(files)) - `; + .map( + (f, i) => `import rawTwig${i} from ${JSON.stringify(`/${f}?raw`)}` + ) + .join('\n')} + const files = { + ${files + .map( + (f, i) => + `${JSON.stringify( + f.replace(/^src\//g, '@cloudfour/') + )}: rawTwig${i}` + ) + .join(',\n')} + } + export const loader = new TwingLoaderArray(files) + export const currentlyRenderedElements = new Set() + if (import.meta.hot) { + const update = () => { + environment.loadedTemplates.clear() + const renderUpdateQueue = [...currentlyRenderedElements] + for (const renderedElement of renderUpdateQueue) { + // not attached to DOM + if (renderedElement.el.getRootNode() === renderedElement.el) { + currentlyRenderedElements.delete(renderedElement) + } else { + currentlyRenderedElements.delete(renderedElement) + const newRoot = renderedElement.render(renderedElement.args) + renderedElement.el.replaceWith(newRoot) + } + } + } + ${files.map( + (f) => `import.meta.hot.accept(${JSON.stringify( + `/${f}?raw` + )}, async (mod) => { + const templateName = ${JSON.stringify( + f.replace(/^src\//g, '@cloudfour/') + )} + await loader.setTemplate(templateName, mod.default) + update() + })` + )} + } + `; + } + if (id === twingEnv) { + return ` + import { TwingEnvironment } from '@cloudfour/twing-browser-esm' + import { loader } from ${JSON.stringify(twingLoader)} + export const environment = new TwingEnvironment(loader, { cache: false }) + `; + } }, async transform(_code, id) { const templateName = path @@ -42,11 +90,55 @@ const twingPlugin = () => { if (id.startsWith('\0') || !id.endsWith('.twig')) return; return ` - import twingEnv from ${JSON.stringify(twingEnv)} - export default async (args) => { - const template = await twingEnv.load(${JSON.stringify(templateName)}) + import { environment } from ${JSON.stringify(twingEnv)} + import { loader, currentlyRenderedElements } from ${JSON.stringify( + twingLoader + )} + import { useState, useEffect } from 'react' + + const templateName = ${JSON.stringify(templateName)}; + const getHTML = async (args) => { + const template = await environment.load(templateName) return template.render(args) } + + const render = (args = {}, callback = () => {}) => { + const el = document.createElement('div') + let cleanup = null + if (import.meta.hot) { + currentlyRenderedElements.add(() => { + cleanup?.() + cleanup = null + // not in the document, ignore + if (el.getRootNode() === el) return + getHTML(args).then((html) => { + el.innerHTML = html + cleanup = callback() + }).catch((err) => { + el.innerHTML = err.stack + }) + }) + } + el.__twigSourceFile = templateName + el.__onStoryBookAttach = () => { + getHTML(args).then((html) => { + el.innerHTML = html + cleanup = callback() + }).catch((err) => { + el.innerHTML = err.stack + }) + } + el.__onStoryBookDetach = () => { + cleanup?.() + cleanup = null + } + return el + } + export default render + + if (import.meta.hot) { + import.meta.hot.accept((mod) => {}) + } `; }, }; From 7deb0f491e8ab2f1c838674ddb17c297af0a9b68 Mon Sep 17 00:00:00 2001 From: Caleb Eby Date: Thu, 18 Aug 2022 13:22:41 -0700 Subject: [PATCH 04/11] Delete unused files --- .storybook/buffer-shim.mjs | 3 - .storybook/main-old.js | 98 --------------------------------- .storybook/object-hash-shim.cjs | 10 ---- .storybook/path-shim.mjs | 13 ----- 4 files changed, 124 deletions(-) delete mode 100644 .storybook/buffer-shim.mjs delete mode 100644 .storybook/main-old.js delete mode 100644 .storybook/object-hash-shim.cjs delete mode 100644 .storybook/path-shim.mjs diff --git a/.storybook/buffer-shim.mjs b/.storybook/buffer-shim.mjs deleted file mode 100644 index 691404797..000000000 --- a/.storybook/buffer-shim.mjs +++ /dev/null @@ -1,3 +0,0 @@ -import { Buffer } from 'buffer'; - -export { Buffer }; diff --git a/.storybook/main-old.js b/.storybook/main-old.js deleted file mode 100644 index e9ba89237..000000000 --- a/.storybook/main-old.js +++ /dev/null @@ -1,98 +0,0 @@ -const { join } = require('path'); -const MiniCssExtractPlugin = require('mini-css-extract-plugin'); -const { - twingLoader, - valLoader, - alias: twingAlias, -} = require('../twing/webpack-options'); - -module.exports = { - // We load the welcome story separately so it will be the first sidebar item. - stories: ['../src/welcome.stories.mdx', '../src/**/*.stories.@(js|mdx)'], - staticDirs: ['../static', '../src/assets'], - addons: [ - { - name: '@storybook/addon-essentials', - options: { - actions: false, - backgrounds: false, - }, - }, - '@storybook/addon-a11y', - // Disabling these two until they are fixed upstream - // 'storybook-mobile', - // '@whitespace/storybook-addon-html', - 'storybook-addon-outline', - '@etchteam/storybook-addon-status', - '@storybook/addon-postcss', - ], - managerHead: (head) => { - const iconSuffix = process.env.NODE_ENV === 'development' ? '-dev' : ''; - return `${head} - - `; - }, - webpackFinal: async (config) => { - const isDev = config.mode === 'development'; - - /** - * For development, leave the default 'cheap-module-source-map', as it's faster and works. - * For the build, using the default does not work correctly, but this option appears to. - * @see https://webpack.js.org/configuration/devtool/ - */ - if (!isDev) { - config.devtool = 'source-map'; - } - - // Push new rules - config.module.rules.push( - { - test: /\.s[ca]ss$/, - use: [ - { - // @see https://github.com/webpack-contrib/style-loader/issues/303#issuecomment-581168870 - loader: MiniCssExtractPlugin.loader, - }, - { - loader: 'css-loader', - options: { - sourceMap: true, - // Lets CSS loader know there are two loaders left that may be - // handling imports. - // @see https://github.com/webpack-contrib/css-loader#importloaders - importLoaders: 2, - }, - }, - { - loader: 'postcss-loader', - options: { - sourceMap: true, - }, - }, - { - loader: 'sass-loader', - options: { - // Dart Sass is easier to install than Node Sass - implementation: require('sass'), - sourceMap: true, - sassOptions: { - importer: [require('../glob-sass-importer')], - }, - }, - }, - ], - }, - twingLoader, - valLoader - ); - - Object.assign(config.resolve.alias, twingAlias); - // Allow resolving `static/*` paths so relative paths don't have to be used - // This is used for url() paths in CSS - config.resolve.alias['static'] = join(__dirname, '..', 'static'); - - config.plugins.push(new MiniCssExtractPlugin()); - - return config; - }, -}; diff --git a/.storybook/object-hash-shim.cjs b/.storybook/object-hash-shim.cjs deleted file mode 100644 index 60cc004d7..000000000 --- a/.storybook/object-hash-shim.cjs +++ /dev/null @@ -1,10 +0,0 @@ -const stringify = require('fast-json-stable-stringify'); -var sha512 = require('hash.js/lib/hash/sha/512'); - -const objectHash = (obj) => { - const str = stringify(obj); - return str; - // return sha512(str); -}; - -module.exports = objectHash; diff --git a/.storybook/path-shim.mjs b/.storybook/path-shim.mjs deleted file mode 100644 index ff0867bec..000000000 --- a/.storybook/path-shim.mjs +++ /dev/null @@ -1,13 +0,0 @@ -export const extname = (p) => /\.[^.]*$/.exec(p)?.[0] || ''; - -export const basename = (p, ext = '') => { - let result = /\/([^/]*)$/.exec(p)?.[1]; - if (!result) return ''; - if (ext && result.endsWith(ext)) - return result.slice(0, result.length - ext.length); - return result; -}; - -export const dirname = (p) => /(^.*)\/[^/]*$/.exec(p)?.[1] || p; - -export default { extname, dirname, basename }; From c4106aa11d5e35dfdf15086eccb538797212ea2c Mon Sep 17 00:00:00 2001 From: Caleb Eby Date: Thu, 18 Aug 2022 13:23:26 -0700 Subject: [PATCH 05/11] Rename --- .storybook/{main.ts => main.js} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .storybook/{main.ts => main.js} (100%) diff --git a/.storybook/main.ts b/.storybook/main.js similarity index 100% rename from .storybook/main.ts rename to .storybook/main.js From dfe7ee464fa6a756e0d4faaee8b91c44beb4a941 Mon Sep 17 00:00:00 2001 From: Caleb Eby Date: Thu, 18 Aug 2022 13:24:09 -0700 Subject: [PATCH 06/11] oops ts syntax --- .storybook/main.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.storybook/main.js b/.storybook/main.js index 6b956333f..27275c835 100644 --- a/.storybook/main.js +++ b/.storybook/main.js @@ -26,7 +26,8 @@ module.exports = { '@etchteam/storybook-addon-status', '@storybook/addon-postcss', // TODO: still used with vite? ], - async viteFinal(config: import('vite').UserConfig) { + /** @param {import('vite').UserConfig} config */ + async viteFinal(config) { config.plugins ||= []; config.plugins.push(twingPlugin()); config.plugins.push(svgr()); From 96beeb6983e4cf98e4ac4fd55d43c1b5af158012 Mon Sep 17 00:00:00 2001 From: Caleb Eby Date: Thu, 18 Aug 2022 13:26:55 -0700 Subject: [PATCH 07/11] Remove unused deps --- package-lock.json | 233 +--------------------------------------------- package.json | 6 -- 2 files changed, 3 insertions(+), 236 deletions(-) diff --git a/package-lock.json b/package-lock.json index a03dbeaaa..ca35ed96f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,28 +28,22 @@ "@storybook/builder-vite": "^0.2.2", "@storybook/html": "6.5.9", "@svgr/rollup": "^5.5.0", - "@svgr/webpack": "5.5.0", "@types/jest": "28.1.6", "@types/lodash": "4.14.182", "@types/prismjs": "1.26.0", "@whitespace/storybook-addon-html": "5.0.0", "@wordpress/block-library": "3.2.20", - "browserify-transform-tools": "1.7.0", - "buffer": "^6.0.3", "cssnano": "5.1.12", "eliminate": "1.1.2", "eslint": "8.21.0", "eslint-plugin-mdx": "1.17.1", "eslint-plugin-react": "7.30.1", - "fast-json-stable-stringify": "^2.1.0", "gulp": "4.0.2", "gulp-postcss": "9.0.1", "gulp-rename": "2.0.0", "gulp-run": "1.7.1", "gulp-sass": "5.1.0", "gulp-svgmin": "3.0.0", - "hash-obj": "^4.0.0", - "hash.js": "^1.1.7", "jabber": "1.4.0", "jest": "28.1.3", "js-yaml": "4.1.0", @@ -11466,28 +11460,6 @@ "url": "https://github.com/sponsors/gregberge" } }, - "node_modules/@svgr/webpack": { - "version": "5.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/plugin-transform-react-constant-elements": "^7.12.1", - "@babel/preset-env": "^7.12.1", - "@babel/preset-react": "^7.12.5", - "@svgr/core": "^5.5.0", - "@svgr/plugin-jsx": "^5.5.0", - "@svgr/plugin-svgo": "^5.5.0", - "loader-utils": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, "node_modules/@tannin/compile": { "version": "1.1.0", "dev": true, @@ -13906,6 +13878,7 @@ "version": "7.4.1", "dev": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -15699,15 +15672,6 @@ ], "license": "MIT" }, - "node_modules/browserify-transform-tools": { - "version": "1.7.0", - "dev": true, - "license": "MIT", - "dependencies": { - "falafel": "^2.0.0", - "through": "^2.3.7" - } - }, "node_modules/browserify-zlib": { "version": "0.2.0", "dev": true, @@ -15752,29 +15716,6 @@ "node-int64": "^0.4.0" } }, - "node_modules/buffer": { - "version": "6.0.3", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, "node_modules/buffer-crc32": { "version": "0.2.13", "dev": true, @@ -20522,25 +20463,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/falafel": { - "version": "2.2.4", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^7.1.1", - "foreach": "^2.0.5", - "isarray": "^2.0.1", - "object-keys": "^1.0.6" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/falafel/node_modules/isarray": { - "version": "2.0.5", - "dev": true, - "license": "MIT" - }, "node_modules/fancy-log": { "version": "1.3.3", "dev": true, @@ -21067,11 +20989,6 @@ "node": ">=0.10.0" } }, - "node_modules/foreach": { - "version": "2.0.5", - "dev": true, - "license": "MIT" - }, "node_modules/foreground-child": { "version": "2.0.0", "dev": true, @@ -22901,33 +22818,6 @@ ], "license": "MIT" }, - "node_modules/hash-obj": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-obj": "^3.0.0", - "sort-keys": "^5.0.0", - "type-fest": "^1.0.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/hash-obj/node_modules/type-fest": { - "version": "1.4.0", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/hash.js": { "version": "1.1.7", "dev": true, @@ -24215,17 +24105,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-obj": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-object": { "version": "1.0.2", "dev": true, @@ -34776,31 +34655,6 @@ "dev": true, "license": "MIT" }, - "node_modules/sort-keys": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-plain-obj": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/sort-keys/node_modules/is-plain-obj": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/source-list-map": { "version": "2.0.1", "dev": true, @@ -47199,20 +47053,6 @@ "rollup-pluginutils": "^2.8.2" } }, - "@svgr/webpack": { - "version": "5.5.0", - "dev": true, - "requires": { - "@babel/core": "^7.12.3", - "@babel/plugin-transform-react-constant-elements": "^7.12.1", - "@babel/preset-env": "^7.12.1", - "@babel/preset-react": "^7.12.5", - "@svgr/core": "^5.5.0", - "@svgr/plugin-jsx": "^5.5.0", - "@svgr/plugin-svgo": "^5.5.0", - "loader-utils": "^2.0.0" - } - }, "@tannin/compile": { "version": "1.1.0", "dev": true, @@ -49050,7 +48890,8 @@ }, "acorn": { "version": "7.4.1", - "dev": true + "dev": true, + "peer": true }, "acorn-jsx": { "version": "5.3.2", @@ -50251,14 +50092,6 @@ } } }, - "browserify-transform-tools": { - "version": "1.7.0", - "dev": true, - "requires": { - "falafel": "^2.0.0", - "through": "^2.3.7" - } - }, "browserify-zlib": { "version": "0.2.0", "dev": true, @@ -50284,14 +50117,6 @@ "node-int64": "^0.4.0" } }, - "buffer": { - "version": "6.0.3", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, "buffer-crc32": { "version": "0.2.13", "dev": true @@ -53516,22 +53341,6 @@ } } }, - "falafel": { - "version": "2.2.4", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "foreach": "^2.0.5", - "isarray": "^2.0.1", - "object-keys": "^1.0.6" - }, - "dependencies": { - "isarray": { - "version": "2.0.5", - "dev": true - } - } - }, "fancy-log": { "version": "1.3.3", "dev": true, @@ -53912,10 +53721,6 @@ "for-in": "^1.0.1" } }, - "foreach": { - "version": "2.0.5", - "dev": true - }, "foreground-child": { "version": "2.0.0", "dev": true, @@ -55160,21 +54965,6 @@ } } }, - "hash-obj": { - "version": "4.0.0", - "dev": true, - "requires": { - "is-obj": "^3.0.0", - "sort-keys": "^5.0.0", - "type-fest": "^1.0.2" - }, - "dependencies": { - "type-fest": { - "version": "1.4.0", - "dev": true - } - } - }, "hash.js": { "version": "1.1.7", "dev": true, @@ -55989,10 +55779,6 @@ "has-tostringtag": "^1.0.0" } }, - "is-obj": { - "version": "3.0.0", - "dev": true - }, "is-object": { "version": "1.0.2", "dev": true @@ -63002,19 +62788,6 @@ } } }, - "sort-keys": { - "version": "5.0.0", - "dev": true, - "requires": { - "is-plain-obj": "^4.0.0" - }, - "dependencies": { - "is-plain-obj": { - "version": "4.1.0", - "dev": true - } - } - }, "source-list-map": { "version": "2.0.1", "dev": true diff --git a/package.json b/package.json index 33efe392a..ccef3f3be 100644 --- a/package.json +++ b/package.json @@ -59,28 +59,22 @@ "@storybook/builder-vite": "^0.2.2", "@storybook/html": "6.5.9", "@svgr/rollup": "^5.5.0", - "@svgr/webpack": "5.5.0", "@types/jest": "28.1.6", "@types/lodash": "4.14.182", "@types/prismjs": "1.26.0", "@whitespace/storybook-addon-html": "5.0.0", "@wordpress/block-library": "3.2.20", - "browserify-transform-tools": "1.7.0", - "buffer": "^6.0.3", "cssnano": "5.1.12", "eliminate": "1.1.2", "eslint": "8.21.0", "eslint-plugin-mdx": "1.17.1", "eslint-plugin-react": "7.30.1", - "fast-json-stable-stringify": "^2.1.0", "gulp": "4.0.2", "gulp-postcss": "9.0.1", "gulp-rename": "2.0.0", "gulp-run": "1.7.1", "gulp-sass": "5.1.0", "gulp-svgmin": "3.0.0", - "hash-obj": "^4.0.0", - "hash.js": "^1.1.7", "jabber": "1.4.0", "jest": "28.1.3", "js-yaml": "4.1.0", From 3269b3f0de9e37cca21fddf12fec2faec13f2613 Mon Sep 17 00:00:00 2001 From: Caleb Eby Date: Thu, 18 Aug 2022 13:27:50 -0700 Subject: [PATCH 08/11] Remove ^ from deps --- package-lock.json | 8 ++++---- package.json | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index ca35ed96f..0ad38caf0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,16 +18,16 @@ "@changesets/changelog-github": "0.4.6", "@changesets/cli": "2.24.1", "@cloudfour/eslint-plugin": "21.1.0", - "@etchteam/storybook-addon-status": "^4.2.1", + "@etchteam/storybook-addon-status": "4.2.1", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", "@storybook/addon-a11y": "6.5.9", "@storybook/addon-docs": "6.5.9", "@storybook/addon-essentials": "6.5.9", "@storybook/addon-postcss": "2.0.0", - "@storybook/builder-vite": "^0.2.2", + "@storybook/builder-vite": "0.2.2", "@storybook/html": "6.5.9", - "@svgr/rollup": "^5.5.0", + "@svgr/rollup": "5.5.0", "@types/jest": "28.1.6", "@types/lodash": "4.14.182", "@types/prismjs": "1.26.0", @@ -63,7 +63,7 @@ "rollup-plugin-dts": "4.2.2", "rollup-plugin-terser": "7.0.2", "sass": "1.54.3", - "smoldash": "^0.11.0", + "smoldash": "0.11.0", "storybook-addon-outline": "1.4.2", "storybook-mobile": "0.1.31", "style-dictionary": "3.7.1", diff --git a/package.json b/package.json index ccef3f3be..0c96d5fa7 100644 --- a/package.json +++ b/package.json @@ -49,16 +49,16 @@ "@changesets/changelog-github": "0.4.6", "@changesets/cli": "2.24.1", "@cloudfour/eslint-plugin": "21.1.0", - "@etchteam/storybook-addon-status": "^4.2.1", + "@etchteam/storybook-addon-status": "4.2.1", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", "@storybook/addon-a11y": "6.5.9", "@storybook/addon-docs": "6.5.9", "@storybook/addon-essentials": "6.5.9", "@storybook/addon-postcss": "2.0.0", - "@storybook/builder-vite": "^0.2.2", + "@storybook/builder-vite": "0.2.2", "@storybook/html": "6.5.9", - "@svgr/rollup": "^5.5.0", + "@svgr/rollup": "5.5.0", "@types/jest": "28.1.6", "@types/lodash": "4.14.182", "@types/prismjs": "1.26.0", @@ -94,7 +94,7 @@ "rollup-plugin-dts": "4.2.2", "rollup-plugin-terser": "7.0.2", "sass": "1.54.3", - "smoldash": "^0.11.0", + "smoldash": "0.11.0", "storybook-addon-outline": "1.4.2", "storybook-mobile": "0.1.31", "style-dictionary": "3.7.1", From 118e5b6d44f8cab66b035e189f77d3976d155f79 Mon Sep 17 00:00:00 2001 From: Caleb Eby Date: Thu, 18 Aug 2022 13:28:27 -0700 Subject: [PATCH 09/11] Another unused dep --- package-lock.json | 58 ----------------------------------------------- package.json | 1 - 2 files changed, 59 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0ad38caf0..ffedc4748 100644 --- a/package-lock.json +++ b/package-lock.json @@ -48,7 +48,6 @@ "jest": "28.1.3", "js-yaml": "4.1.0", "ltx": "3.0.0", - "mini-css-extract-plugin": "1.6.2", "npm-run-all": "4.1.5", "pleasantest": "2.2.0", "postcss": "8.4.14", @@ -28443,43 +28442,6 @@ "node": ">=4" } }, - "node_modules/mini-css-extract-plugin": { - "version": "1.6.2", - "dev": true, - "license": "MIT", - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0", - "webpack-sources": "^1.1.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.4.0 || ^5.0.0" - } - }, - "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/minimalistic-assert": { "version": "1.0.1", "dev": true, @@ -58698,26 +58660,6 @@ "version": "1.0.1", "dev": true }, - "mini-css-extract-plugin": { - "version": "1.6.2", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0", - "webpack-sources": "^1.1.0" - }, - "dependencies": { - "schema-utils": { - "version": "3.0.0", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, "minimalistic-assert": { "version": "1.0.1", "dev": true diff --git a/package.json b/package.json index 0c96d5fa7..911747f1f 100644 --- a/package.json +++ b/package.json @@ -79,7 +79,6 @@ "jest": "28.1.3", "js-yaml": "4.1.0", "ltx": "3.0.0", - "mini-css-extract-plugin": "1.6.2", "npm-run-all": "4.1.5", "pleasantest": "2.2.0", "postcss": "8.4.14", From 66429ff602deda9685edf485f372349336e5c3b2 Mon Sep 17 00:00:00 2001 From: Caleb Eby Date: Thu, 18 Aug 2022 13:30:52 -0700 Subject: [PATCH 10/11] Another dep! --- package-lock.json | 1 - package.json | 1 - 2 files changed, 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index ffedc4748..6b4e735f3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -57,7 +57,6 @@ "react-syntax-highlighter": "13.5.3", "remark-preset-lint-recommended": "5.0.0", "remark-preset-prettier": "0.5.1", - "resolve": "1.22.1", "rollup": "2.77.2", "rollup-plugin-dts": "4.2.2", "rollup-plugin-terser": "7.0.2", diff --git a/package.json b/package.json index 911747f1f..ed6e11ab9 100644 --- a/package.json +++ b/package.json @@ -88,7 +88,6 @@ "react-syntax-highlighter": "13.5.3", "remark-preset-lint-recommended": "5.0.0", "remark-preset-prettier": "0.5.1", - "resolve": "1.22.1", "rollup": "2.77.2", "rollup-plugin-dts": "4.2.2", "rollup-plugin-terser": "7.0.2", From df419d4ab99d1ad0baedd48ca5d05dc10bf69306 Mon Sep 17 00:00:00 2001 From: Caleb Eby Date: Thu, 18 Aug 2022 17:02:15 -0700 Subject: [PATCH 11/11] Fix more stories --- .storybook/main.js | 24 ++++++-- package-lock.json | 13 ++++ package.json | 1 + .../comment-form/comment-form.stories.mdx | 21 +++---- src/file-path-to-name.js | 7 ++- src/objects/bio/bio.stories.mdx | 2 +- src/objects/bunch/bunch.stories.mdx | 2 +- src/vendor/prism/prism.stories.mdx | 61 +++++++++---------- twing/rollup-plugin.js | 21 +++---- 9 files changed, 89 insertions(+), 63 deletions(-) diff --git a/.storybook/main.js b/.storybook/main.js index 27275c835..9b3220127 100644 --- a/.storybook/main.js +++ b/.storybook/main.js @@ -34,14 +34,28 @@ module.exports = { config.optimizeDeps ||= {}; config.optimizeDeps.include = [ - '@storybook/addon-viewport', - 'react-syntax-highlighter/dist/esm/prism-light', - 'react-syntax-highlighter/dist/esm/languages/prism/twig', - 'focus-visible', - 'react', + '@cloudfour/twing-browser-esm', '@mdx-js/react', '@storybook/addon-docs', + '@storybook/addon-viewport', + 'focus-visible', 'jabber', + 'prismjs', + 'prismjs/components/prism-bash', + 'prismjs/components/prism-handlebars', + 'prismjs/components/prism-json', + 'prismjs/components/prism-jsx', + 'prismjs/components/prism-markup-templating', + 'prismjs/components/prism-php', + 'prismjs/components/prism-scss', + 'prismjs/components/prism-toml', + 'prismjs/components/prism-tsx', + 'prismjs/components/prism-twig', + 'prismjs/components/prism-typescript', + 'prismjs/components/prism-yaml', + 'react', + 'react-syntax-highlighter/dist/esm/languages/prism/twig', + 'react-syntax-highlighter/dist/esm/prism-light', 'smoldash', ]; diff --git a/package-lock.json b/package-lock.json index 6b4e735f3..83b4d0604 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,6 +18,7 @@ "@changesets/changelog-github": "0.4.6", "@changesets/cli": "2.24.1", "@cloudfour/eslint-plugin": "21.1.0", + "@cloudfour/twing-browser-esm": "^5.1.1", "@etchteam/storybook-addon-status": "4.2.1", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", @@ -2255,6 +2256,12 @@ "eslint": "^8.0.0" } }, + "node_modules/@cloudfour/twing-browser-esm": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@cloudfour/twing-browser-esm/-/twing-browser-esm-5.1.1.tgz", + "integrity": "sha512-qXbhB7C3QV3fKREyWk4taz/xcL4ix+7GONfNB5Na6NUY8fnmC2ICyc5tST/ksAczzwt6fTuJYfbCTYITS0Gbmg==", + "dev": true + }, "node_modules/@cnakazawa/watch": { "version": "1.0.4", "dev": true, @@ -40891,6 +40898,12 @@ "eslint-plugin-unicorn": "^43.0.0" } }, + "@cloudfour/twing-browser-esm": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@cloudfour/twing-browser-esm/-/twing-browser-esm-5.1.1.tgz", + "integrity": "sha512-qXbhB7C3QV3fKREyWk4taz/xcL4ix+7GONfNB5Na6NUY8fnmC2ICyc5tST/ksAczzwt6fTuJYfbCTYITS0Gbmg==", + "dev": true + }, "@cnakazawa/watch": { "version": "1.0.4", "dev": true, diff --git a/package.json b/package.json index ed6e11ab9..7b7060c26 100644 --- a/package.json +++ b/package.json @@ -49,6 +49,7 @@ "@changesets/changelog-github": "0.4.6", "@changesets/cli": "2.24.1", "@cloudfour/eslint-plugin": "21.1.0", + "@cloudfour/twing-browser-esm": "^5.1.1", "@etchteam/storybook-addon-status": "4.2.1", "@rollup/plugin-babel": "5.3.1", "@rollup/plugin-node-resolve": "13.3.0", diff --git a/src/components/comment-form/comment-form.stories.mdx b/src/components/comment-form/comment-form.stories.mdx index 37f26113d..008cbf35e 100644 --- a/src/components/comment-form/comment-form.stories.mdx +++ b/src/components/comment-form/comment-form.stories.mdx @@ -1,5 +1,4 @@ import { Canvas, Meta, Story } from '@storybook/addon-docs'; -import { useEffect } from '@storybook/client-api'; import { createElasticTextArea } from '../input/elastic-textarea.ts'; import { makeTwigInclude } from '../../make-twig-include.js'; import template from './comment-form.twig'; @@ -46,21 +45,21 @@ The form used to add a comment to an article. Including the `heading_id` and `he }, }} > - {({ isLoggedIn, isReply }) => { - /* useEffect(() => { */ + {({ isLoggedIn, isReply }) => + /* UseEffect(() => { */ /* const { destroy } = createElasticTextArea( */ /* document.querySelector('.js-elastic-textarea') */ /* ); */ /* return destroy; */ /* }, []); */ - return template({ + template({ logged_in_user: isLoggedIn ? tyler : undefined, log_out_url: '/logout', is_reply: isReply, heading_id: 'leave-a-comment', help_text_id: 'leave-a-comment-help-text', - }); - }} + }) + } @@ -90,14 +89,14 @@ There is also a reply version of this component (`is_reply: true`), used to repl }, }} > - {({ isLoggedIn, isReply }) => { - /* useEffect(() => { */ + {({ isLoggedIn, isReply }) => + /* UseEffect(() => { */ /* const { destroy } = createElasticTextArea( */ /* document.querySelector('.js-elastic-textarea') */ /* ); */ /* return destroy; */ /* }, []); */ - return template({ + template({ logged_in_user: isLoggedIn ? tyler : undefined, log_out_url: '/logout', is_reply: isReply, @@ -106,8 +105,8 @@ There is also a reply version of this component (`is_reply: true`), used to repl heading_text: 'Reply to John Doe', heading_class: 'u-hidden-visually', main_label: 'Reply', - }); - }} + }) + } diff --git a/src/file-path-to-name.js b/src/file-path-to-name.js index 6f53051f2..58ce5af66 100644 --- a/src/file-path-to-name.js +++ b/src/file-path-to-name.js @@ -1,3 +1,6 @@ -// Converts e.g. /asdf/1234/some-name.js to some-name +/** + * Converts e.g. /asdf/1234/some-name.js to some-name + * @param {string} filePath + */ export const filePathToName = (filePath) => - /([^/.]*)\.?[^/]*$/.exec(filePath)?.[1] || filePath; + /([^./]*)\.?[^/]*$/.exec(filePath)?.[1] || filePath; diff --git a/src/objects/bio/bio.stories.mdx b/src/objects/bio/bio.stories.mdx index 6024654a7..366992af9 100644 --- a/src/objects/bio/bio.stories.mdx +++ b/src/objects/bio/bio.stories.mdx @@ -19,7 +19,7 @@ The Bio layout object can be used for extended biographical details that include }, }} > - {defaultDemo} + {(args) => defaultDemo(args)} diff --git a/src/objects/bunch/bunch.stories.mdx b/src/objects/bunch/bunch.stories.mdx index 124d8ad75..36c95ba33 100644 --- a/src/objects/bunch/bunch.stories.mdx +++ b/src/objects/bunch/bunch.stories.mdx @@ -6,7 +6,7 @@ const demoImageSrcs = Object.values(demoImageDir).map( ); // https://www.w3docs.com/snippets/javascript/how-to-randomize-shuffle-a-javascript-array.html const shuffle = (array) => { - let arr = array.slice(); + const arr = [...array]; for (let i = arr.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [arr[i], arr[j]] = [arr[j], arr[i]]; diff --git a/src/vendor/prism/prism.stories.mdx b/src/vendor/prism/prism.stories.mdx index 5f2bc9015..b6751176e 100644 --- a/src/vendor/prism/prism.stories.mdx +++ b/src/vendor/prism/prism.stories.mdx @@ -1,29 +1,28 @@ import { Meta, Story } from '@storybook/addon-docs'; -import { useEffect } from '@storybook/client-api'; -import { basename, extname } from 'path'; +import { filePathToName } from '../../file-path-to-name.js' import sampleDemo from './demo/sample.twig'; import './config.js'; -// Load samples directory as "raw" text -const samplesDir = require.context('!!raw-loader!./demo/samples', false); -// Initialize an object to store sample content in +const samplesDir = import.meta.glob( + './demo/samples/*', + { eager: true, as: 'raw' } +); const samples = {}; // For each sample, fetch its content and build an object for our template -for (const key of samplesDir.keys()) { - const filename = basename(key); - const ext = extname(key); - const name = filename.replace(ext, ''); - const content = samplesDir(key).default; +for (const [filename, content] of Object.entries(samplesDir)) { + const name = filePathToName(filename); + const ext = /\.([^.]*)$/.exec(filename)?.[1] samples[name] = { filename, name, ext, content }; } +const renderSample = (sample) => { + const el = sampleDemo( + sample, + () => Prism.highlightAllUnder(el) + ) + return el +} { - useEffect(() => Prism.highlightAll()); - return storyFn(); - }, - ]} /> # Prism @@ -32,32 +31,32 @@ Our CSS includes a custom [Prism](https://prismjs.com/index.html) theme to suppo ## Supported Languages -{sampleDemo(samples.bash)} +{renderSample(samples.bash)} -{sampleDemo(samples.css)} +{renderSample(samples.css)} -{sampleDemo(samples.handlebars)} +{renderSample(samples.handlebars)} -{sampleDemo(samples.js)} +{renderSample(samples.js)} -{sampleDemo(samples.json)} +{renderSample(samples.json)} -{sampleDemo(samples.liquid)} +{renderSample(samples.liquid)} -{sampleDemo(samples.markup)} +{renderSample(samples.markup)} -{sampleDemo(samples.php)} +{renderSample(samples.php)} -{sampleDemo(samples.jsx)} +{renderSample(samples.jsx)} -{sampleDemo(samples.tsx)} +{renderSample(samples.tsx)} -{sampleDemo(samples.scss)} +{renderSample(samples.scss)} -{sampleDemo(samples.toml)} +{renderSample(samples.toml)} -{sampleDemo(samples.twig)} +{renderSample(samples.twig)} -{sampleDemo(samples.typescript)} +{renderSample(samples.typescript)} -{sampleDemo(samples.yaml)} +{renderSample(samples.yaml)} diff --git a/twing/rollup-plugin.js b/twing/rollup-plugin.js index eb761ca67..189e9e6bb 100644 --- a/twing/rollup-plugin.js +++ b/twing/rollup-plugin.js @@ -1,6 +1,6 @@ -const fs = require('fs/promises'); +const path = require('node:path'); + const glob = require('tiny-glob'); -const path = require('path'); /** @returns {import('vite').Plugin} */ const twingPlugin = () => { @@ -16,16 +16,6 @@ const twingPlugin = () => { if (id === twingLoader) { const files = await glob('src/**/*.twig', { cwd: process.cwd() }); - // const preloadedFiles = ( - // await Promise.all( - // files.map(async (f) => { - // const newName = f.replace(/^src\//g, '@cloudfour/'); - // return `${JSON.stringify(newName)}: ${JSON.stringify( - // await fs.readFile(f, 'utf8') - // )}`; - // }) - // ) - // ).join(',\n'); return ` import { TwingLoaderArray } from '@cloudfour/twing-browser-esm' import { environment } from ${JSON.stringify(twingEnv)} @@ -103,6 +93,11 @@ const twingPlugin = () => { } const render = (args = {}, callback = () => {}) => { + if (typeof callback !== 'function') { + const msg = '2nd parameter to twig template, if passed, must be a callback function.' + console.error(msg, 'found', callback) + throw new Error('2nd parameter to twig template, if passed, must be a callback function.') + } const el = document.createElement('div') let cleanup = null if (import.meta.hot) { @@ -116,6 +111,7 @@ const twingPlugin = () => { cleanup = callback() }).catch((err) => { el.innerHTML = err.stack + console.error(err) }) }) } @@ -126,6 +122,7 @@ const twingPlugin = () => { cleanup = callback() }).catch((err) => { el.innerHTML = err.stack + console.error(err) }) } el.__onStoryBookDetach = () => {