diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 6407fe6..60239e7 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -26,7 +26,7 @@ jobs:
- run: yarn test
- run: yarn lint
- publish:
+ publish-release:
name: Publish to npmjs and GitHub Releases
needs: [test]
if: startsWith(github.ref, 'refs/tags/v')
@@ -66,3 +66,26 @@ jobs:
dist/*.tar.gz
packages/ipynb2html-cli/dist/*.tar.gz
packages/ipynb2html-cli/dist/*.zip
+
+ deploy-viewer:
+ name: Build and deploy viewer to ipynb.js.org
+ needs: [test]
+ if: github.ref == 'refs/heads/viewer' && github.event_name == 'push' # TODO: replace 'viewer' with 'master'
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ fetch-depth: 0 # fetch all history to make `git describe` work
+
+ - run: yarn install
+
+ - name: Build ipynb-viewer
+ run: BUILD_DESTDIR=$(pwd)/site yarn workspace ipynb2html-viewer build-site
+
+ - name: Deploy to gh-pages
+ uses: JamesIves/github-pages-deploy-action@releases/v3
+ with:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ BRANCH: gh-pages
+ FOLDER: site
+ CLEAN: true
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
index 83f99da..ea5c3c0 100644
--- a/.vscode/extensions.json
+++ b/.vscode/extensions.json
@@ -4,6 +4,7 @@
// List of extensions which should be recommended for users of this workspace.
"recommendations": [
+ "cpylua.language-postcss",
"dbaeumer.vscode-eslint",
"EditorConfig.EditorConfig",
"gamunu.vscode-yarn",
diff --git a/.vscode/settings.json b/.vscode/settings.json
index b7f924c..f67f0d5 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -8,6 +8,11 @@
"typescript"
],
+ "files.associations": {
+ // XXX: PostCSS extension doesn't provide as nice autocompletion as
+ // VSCode's native CSS support. But this doesn't understand nested rules...
+ "*.pcss": "css",
+ },
"files.encoding": "utf8",
"files.eol": "\n",
"files.exclude": {
diff --git a/README.adoc b/README.adoc
index dd607d9..c5f8f03 100644
--- a/README.adoc
+++ b/README.adoc
@@ -215,6 +215,7 @@ ifndef::npm-readme[]
* https://yarnpkg.com[yarn] for dependencies management and building
* https://eslint.org[ESLint] for linting JS/TypeScript code
* https://jestjs.io[Jest] for testing
+* https://postcss.org[PostCSS] for transforming stylesheets to plain CSS
* https://rollupjs.org[Rollup] for building single-file bundles
@@ -254,6 +255,7 @@ If you use Visual Studio Code, you should install the following extensions:
* link:{vs-marketplace-uri}ryanluker.vscode-coverage-gutters[Coverage Gutters]
* link:{vs-marketplace-uri}EditorConfig.EditorConfig[EditorConfig for VS Code]
* link:{vs-marketplace-uri}dbaeumer.vscode-eslint[ESLint]
+* link:{vs-marketplace-uri}cpylua.language-postcss[language-postcss]
* link:{vs-marketplace-uri}Orta.vscode-jest[Jest] (and link:{vs-marketplace-uri}shtian.jest-snippets-standard[Jest Snippets Standard Style])
* link:{vs-marketplace-uri}gamunu.vscode-yarn[yarn]
diff --git a/package.json b/package.json
index 8638be1..fb9d524 100644
--- a/package.json
+++ b/package.json
@@ -3,11 +3,11 @@
"version": "0.3.0",
"private": true,
"scripts": {
- "build": "ttsc --build",
- "bundle": "wsrun --exclude-missing bundle",
+ "build": "ttsc --build && wsrun --exclude-missing build-except-ts",
+ "build-ts": "ttsc --build",
"clean": "rimraf coverage/ dist/ lib/ .eslintcache *.log && wsrun clean",
"lint": "eslint --cache --ext .ts,.tsx,.js .",
- "postinstall": "patch-package && run-s build",
+ "postinstall": "patch-package && run-s build-ts",
"publish-all": "wsrun --serial publish",
"test": "jest --detectOpenHandles --coverage --verbose",
"version": "./scripts/bump-version && git add README.adoc **/package.json",
@@ -21,6 +21,7 @@
"@babel/preset-env": "^7.10.3",
"@rollup/plugin-babel": "^5.0.3",
"@rollup/plugin-commonjs": "^13.0.0",
+ "@rollup/plugin-html": "^0.2.0",
"@rollup/plugin-node-resolve": "^8.0.1",
"@types/dedent": "^0.7.0",
"@types/jest": "^24.9.1",
@@ -30,6 +31,7 @@
"arrify": "^2.0.1",
"common-path-prefix": "^3.0.0",
"core-js": "^3.6.5",
+ "cssnano": "^4.1.10",
"csso-cli": "^3.0.0",
"dedent": "^0.7.0",
"eslint": "^7.3.0",
@@ -42,17 +44,25 @@
"fs-extra": "^8.1.0",
"jest": "^25.5.4",
"jest-chain": "^1.1.5",
+ "mkdirp": "^1.0.4",
"node-html-parser": "^1.2.19",
"nodom": "^2.3.0",
"npm-run-all": "^4.1.5",
"patch-package": "^6.2.2",
+ "postcss-inline-svg": "^4.1.0",
+ "postcss-nesting": "^7.0.1",
+ "postcss-sort-media-queries": "^1.6.24",
"postinstall-postinstall": "^2.1.0",
"rimraf": "^3.0.2",
"rollup": "^2.17.1",
"rollup-plugin-add-git-msg": "^1.1.0",
+ "rollup-plugin-conditional": "^3.1.2",
"rollup-plugin-executable": "^1.6.0",
+ "rollup-plugin-livereload": "^1.3.0",
"rollup-plugin-node-externals": "^2.2.0",
"rollup-plugin-node-license": "^0.2.0",
+ "rollup-plugin-postcss": "2.0.6",
+ "rollup-plugin-serve": "^1.0.1",
"rollup-plugin-terser": "^6.1.0",
"rollup-plugin-typescript2": "^0.27.1",
"tar": "^5.0.5",
diff --git a/packages/ipynb2html-cli/package.json b/packages/ipynb2html-cli/package.json
index 1d8a2d6..9bfba2f 100644
--- a/packages/ipynb2html-cli/package.json
+++ b/packages/ipynb2html-cli/package.json
@@ -29,11 +29,14 @@
"src"
],
"scripts": {
- "build": "ttsc --build",
- "bundle": "rollup -c && ./scripts/pack-bundle",
+ "build": "run-p build-except-ts build-ts",
+ "build-bundle": "rollup -c",
+ "build-except-ts": "run-s build-bundle",
+ "build-ts": "ttsc --build",
"clean": "rimraf coverage/ dist/ lib/ .eslintcache .tsbuildinfo",
"lint": "PKGDIR=$PWD; cd ../../ && eslint --cache --ext .ts,.tsx,.js $PKGDIR",
- "prepublishOnly": "run-s readme2md",
+ "pack-bundle": "./scripts/pack-bundle",
+ "prepublishOnly": "run-s build readme2md pack-bundle",
"readme2md": "../../scripts/adoc2md -a npm-readme ../../README.adoc > README.md",
"watch-ts": "ttsc --build --watch"
},
diff --git a/packages/ipynb2html-core/package.json b/packages/ipynb2html-core/package.json
index dd3e782..240b226 100644
--- a/packages/ipynb2html-core/package.json
+++ b/packages/ipynb2html-core/package.json
@@ -24,10 +24,11 @@
"src"
],
"scripts": {
- "build": "ttsc --build",
+ "build": "run-s build-ts",
+ "build-ts": "ttsc --build",
"clean": "rimraf coverage/ lib/ .eslintcache .tsbuildinfo",
"lint": "PKGDIR=$PWD; cd ../../ && eslint --cache --ext .ts,.tsx,.js $PKGDIR",
- "prepublishOnly": "run-s readme2md",
+ "prepublishOnly": "run-p build readme2md",
"test": "jest --detectOpenHandles --coverage --verbose",
"readme2md": "../../scripts/adoc2md -a npm-readme ../../README.adoc > README.md",
"watch-ts": "ttsc --build --watch"
diff --git a/packages/ipynb2html-viewer/index-html.js b/packages/ipynb2html-viewer/index-html.js
new file mode 100644
index 0000000..55b44e1
--- /dev/null
+++ b/packages/ipynb2html-viewer/index-html.js
@@ -0,0 +1,33 @@
+export default ({ files: { css: [css], js: [js] }, publicPath }) => `\
+
+
+
+
+
+ .ipynb viewer
+
+
+
+
+
+
+
+
+
+
+
+`
diff --git a/packages/ipynb2html-viewer/package.json b/packages/ipynb2html-viewer/package.json
new file mode 100644
index 0000000..dd2e32a
--- /dev/null
+++ b/packages/ipynb2html-viewer/package.json
@@ -0,0 +1,54 @@
+{
+ "name": "ipynb2html-viewer",
+ "version": "0.0.0",
+ "description": "Web viewer of Jupyter Notebooks",
+ "author": "Jakub Jirutka ",
+ "license": "MIT",
+ "homepage": "https://github.com/jirutka/ipynb2html",
+ "bugs": "https://github.com/jirutka/ipynb2html/issues",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jirutka/ipynb2html.git"
+ },
+ "keywords": [
+ "browser",
+ "converter",
+ "ipython",
+ "jupyter",
+ "notebook",
+ "webapp"
+ ],
+ "main": "lib/index.js",
+ "browser": "dist/ipynb-viewer.min.js",
+ "types": "lib/index.d.ts",
+ "files": [
+ "dist",
+ "lib",
+ "src",
+ "index.html"
+ ],
+ "scripts": {
+ "build": "run-p build:*",
+ "build:dev": "rollup -c",
+ "build:prod": "BUILD_FLAGS=minify rollup -c",
+ "build-except-ts": "run-p build:*",
+ "build-site": "BUILD_FLAGS=minify,hash rollup -c",
+ "build-ts": "ttsc --build",
+ "clean": "rimraf coverage/ dist/ lib/ .eslintcache .tsbuildinfo",
+ "lint": "PKGDIR=$PWD; cd ../../ && eslint --cache --ext .ts,.tsx,.js $PKGDIR",
+ "prepublishOnly": "run-p build readme2md",
+ "readme2md": "../../scripts/adoc2md -a npm-readme ../../README.adoc > README.md",
+ "watch": "rollup -c --watch",
+ "watch-ts": "tssc --build --watch"
+ },
+ "dependencies": {
+ "@hyperapp/events": "^0.0.4",
+ "hyperapp": "^2.0.4",
+ "ipynb2html": "0.3.0"
+ },
+ "browserslist": [
+ ">0.5%",
+ "Firefox ESR",
+ "not dead"
+ ]
+}
diff --git a/packages/ipynb2html-viewer/postcss.config.js b/packages/ipynb2html-viewer/postcss.config.js
new file mode 100644
index 0000000..e2f994e
--- /dev/null
+++ b/packages/ipynb2html-viewer/postcss.config.js
@@ -0,0 +1,13 @@
+module.exports = ({ env }) => ({
+ map: {
+ inline: false,
+ },
+ plugins: {
+ 'postcss-inline-svg': {},
+ 'postcss-nesting': {},
+ 'postcss-sort-media-queries': {
+ sort: 'desktop-first',
+ },
+ 'cssnano': env === 'production',
+ },
+})
diff --git a/packages/ipynb2html-viewer/rollup.config.js b/packages/ipynb2html-viewer/rollup.config.js
new file mode 100644
index 0000000..15eaee5
--- /dev/null
+++ b/packages/ipynb2html-viewer/rollup.config.js
@@ -0,0 +1,130 @@
+import addGitMsg from 'rollup-plugin-add-git-msg'
+import babel from '@rollup/plugin-babel'
+import commonjs from '@rollup/plugin-commonjs'
+import conditional from 'rollup-plugin-conditional'
+import html from '@rollup/plugin-html'
+import license from 'rollup-plugin-node-license'
+import livereload from 'rollup-plugin-livereload'
+import postcss from 'rollup-plugin-postcss'
+import resolve from '@rollup/plugin-node-resolve'
+import serve from 'rollup-plugin-serve'
+import { terser } from 'rollup-plugin-terser'
+import ttypescript from 'ttypescript'
+import typescript from 'rollup-plugin-typescript2'
+
+import indexTemplate from './index-html'
+import pkg from './package.json'
+
+
+const flags = (process.env.BUILD_FLAGS || '').split(',').reduce((obj, flag) => {
+ obj[flag] = true
+ return obj
+}, {})
+flags.watch = !!process.env.ROLLUP_WATCH
+
+const assetInfix =
+ flags.hash ? '.[hash]' :
+ flags.minify ? '.min' :
+ ''
+const destDir = process.env.BUILD_DESTDIR || './dist'
+const extensions = ['.mjs', '.js', '.ts']
+
+
+export default {
+ input: 'src/index.ts',
+ plugins: [
+ // Transpile TypeScript sources to JS.
+ typescript({
+ typescript: ttypescript,
+ tsconfigOverride: {
+ compilerOptions: {
+ target: 'ES5',
+ module: 'ESNext',
+ declaration: false,
+ declarationMap: false,
+ composite: false,
+ incremental: true,
+ },
+ },
+ clean: true,
+ }),
+ // Resolve node modules.
+ resolve({
+ extensions,
+ mainFields: ['browser', 'module', 'main'],
+ }),
+ // Convert CommonJS modules to ES6 modules.
+ commonjs(),
+ // Transpile all sources for older browsers and inject needed polyfills.
+ babel({
+ babelrc: false,
+ // To avoid Babel injecting core-js polyfills into core-js.
+ exclude: [/node_modules\/core-js\//],
+ extensions,
+ presets: [
+ [
+ '@babel/env', {
+ corejs: 3,
+ debug: false,
+ modules: false,
+ useBuiltIns: 'usage', // inject polyfills
+ // targets: reads from "browserslist" in package.json
+ },
+ ],
+ ],
+ }),
+ // Convert PostCSS styles to CSS.
+ postcss({
+ autoModules: false,
+ extract: true,
+ sourceMap: true,
+ minimize: !!flags.minify,
+ }),
+ // Generate index.html from the template.
+ html({
+ template: indexTemplate,
+ }),
+ conditional(!flags.watch, [
+ // Add git tag, commit SHA and build date at top of the file.
+ addGitMsg({
+ copyright: [
+ pkg.author,
+ '* This project is licensed under the terms of the MIT license.'
+ ].join('\n'),
+ }),
+ // Generate table of the bundled packages at top of the file.
+ license({ format: 'table' }),
+ ]),
+ conditional(flags.minify, [
+ // Minify JS.
+ terser({
+ ecma: 5,
+ output: {
+ // Preserve comment injected by addGitMsg and license.
+ comments: RegExp(`(?:\\$\\{${pkg.name}\\}|Bundled npm packages)`),
+ },
+ }),
+ ]),
+ // Use only when running in watch mode...
+ conditional(flags.watch, () => [
+ serve({
+ contentBase: destDir,
+ }),
+ livereload(),
+ ]),
+ ],
+ external: [
+ 'ipynb2html',
+ ],
+ output: {
+ dir: destDir,
+ entryFileNames: `ipynb-viewer${assetInfix}.js`,
+ assetFileNames: `ipynb-viewer${assetInfix}.[ext]`,
+ format: 'umd',
+ name: 'init',
+ sourcemap: true,
+ globals: {
+ ipynb2html: 'ipynb2html',
+ },
+ },
+}
diff --git a/packages/ipynb2html-viewer/src/actions.ts b/packages/ipynb2html-viewer/src/actions.ts
new file mode 100644
index 0000000..80c89bb
--- /dev/null
+++ b/packages/ipynb2html-viewer/src/actions.ts
@@ -0,0 +1,220 @@
+/* eslint-disable @typescript-eslint/no-non-null-assertion, @typescript-eslint/no-use-before-define */
+import * as hyperapp from 'hyperapp'
+import * as ipynb2html from 'ipynb2html'
+
+import {
+ historyPush,
+ readFile,
+ readFromStorage,
+ request,
+ ResponseError,
+ setPageTitle,
+ writeToStorage,
+} from './effects'
+import { State, ErrorMessage } from './types'
+
+
+type Action = hyperapp.Action
+type Dispatchable = hyperapp.Dispatchable
+
+
+const initState: State = {
+ mainView: 'BLANK',
+ fileUrl: null,
+ title: '.ipynb viewer',
+ notebook: null,
+ error: null,
+ dragover: false,
+ historyIdx: 0,
+ fromHistory: false,
+}
+
+
+// Helpers
+
+// FIXME: This is just a quick & dirty solution.
+const isNotebook = (notebook: any): notebook is ipynb2html.Notebook => {
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
+ return typeof notebook === 'object' && !!notebook?.metadata && !!notebook?.cells
+}
+
+const isFileDataTransfer = (transfer: DataTransfer | null): transfer is DataTransfer => {
+ return !!transfer && !!Array.from(transfer.items).find(item => item.kind === 'file')
+}
+
+const rewriteFileUrl = (url: string): string => {
+ const { host, pathname } = new URL(url)
+
+ switch (host) {
+ case 'gist.github.com':
+ return `https://gist.githubusercontent.com${pathname}/raw/`
+ default:
+ return url
+ }
+}
+
+const stateToUrlQuery = (state: State): string => {
+ const params: Record = {}
+ if (state.fileUrl) {
+ params.url = state.fileUrl
+ }
+ return new URLSearchParams(params).toString()
+}
+
+
+// Actions
+
+export const Initialize: hyperapp.ActionOnInit = () => {
+ const url = new URLSearchParams(window.location.search).get('url')
+
+ return url
+ ? (FetchNotebook({ ...initState, fileUrl: url }) as hyperapp.DispatchableOnInit)
+ : initState
+}
+
+export const ShowNotebook: Action = (state, notebook): Dispatchable => {
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
+ notebook = typeof notebook === 'string' ? JSON.parse(notebook) : notebook
+
+ if (!isNotebook(notebook)) {
+ return [ShowError, {
+ title: 'Invalid Format',
+ message: 'The file is not in Jupyter Notebook format.',
+ }]
+ }
+ const title = ipynb2html.readNotebookTitle(notebook) ?? initState.title
+
+ const effects = [
+ setPageTitle(title),
+ ]
+ if (!state.fromHistory) {
+ state.historyIdx++
+
+ effects.push(
+ writeToStorage({
+ key: `notebook/${state.historyIdx}`,
+ value: notebook,
+ session: true,
+ }),
+ historyPush({
+ state: { ...state, notebook: null },
+ urlQuery: stateToUrlQuery(state),
+ }),
+ )
+ }
+
+ return [
+ {
+ ...state,
+ title,
+ notebook,
+ mainView: 'NOTEBOOK',
+ fromHistory: false,
+ error: null,
+ },
+ ...effects,
+ ]
+}
+
+export const ShowBlank: Action = (state): Dispatchable => [
+ (state = { ...state, mainView: 'BLANK', fileUrl: null, notebook: null }),
+ setPageTitle(initState.title!),
+ historyPush({
+ state,
+ urlQuery: '',
+ }),
+]
+
+export const ShowError: Action = (state, error): Dispatchable => {
+ let title = 'title' in error ? error.title : 'Error'
+ let message = error.message
+ let detail = error.message
+
+ if (error instanceof SyntaxError && error.message.startsWith('JSON.parse:')) {
+ title = 'Malformed Notebook'
+ message = 'The file is not a valid JSON.'
+ } else if (error instanceof ResponseError) {
+ title = 'HTTP Error'
+ message = 'Failed to fetch notebook from the given address.'
+ } else if (error instanceof TypeError
+ && (error.message === 'Failed to fetch' || error.message.startsWith('NetworkError '))
+ ) {
+ title = 'Network Error'
+ message = 'Failed to fetch notebook from the given address.'
+ } else {
+ detail = ''
+ }
+ console.error(error)
+
+ return {
+ ...state,
+ mainView: 'ERROR',
+ error: { title, message, detail },
+ notebook: null,
+ }
+}
+
+export const SubmitFileUrl: Action = (state): Dispatchable => (
+ state.fileUrl ? FetchNotebook : ShowBlank
+)
+
+export const SetFileUrl: Action = (state, fileUrl): Dispatchable => (
+ { ...state, fileUrl }
+)
+
+export const FetchNotebook: Action = (state): Dispatchable => [
+ { ...state, mainView: 'FETCHING', notebook: null },
+ request({
+ url: rewriteFileUrl(state.fileUrl!),
+ options: {
+ mode: 'cors',
+ redirect: 'follow',
+ referrerPolicy: 'no-referrer',
+ },
+ onSuccess: ShowNotebook,
+ onError: ShowError,
+ }),
+]
+
+export const LoadLocalFile: Action = (state, file): Dispatchable => [
+ { ...state, fileUrl: null },
+ readFile({ file, onSuccess: ShowNotebook }),
+]
+
+export const HistoryPop: Action = (state, event): Dispatchable => [
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
+ { ...(state = event.state ?? state), fromHistory: true },
+ readFromStorage({
+ key: `notebook/${state.historyIdx}`,
+ session: true,
+ onSuccess: ShowNotebook,
+ }),
+]
+
+export const DragOver: Action = (state, event): Dispatchable => {
+ if (!isFileDataTransfer(event.dataTransfer)) {
+ return state
+ }
+ event.preventDefault()
+ event.dataTransfer.dropEffect = 'copy'
+
+ return { ...state, dragover: true }
+}
+
+export const DragLeave: Action = (state): Dispatchable => ({
+ ...state,
+ dragover: false,
+})
+
+export const DropFile: Action = (state, event): Dispatchable => {
+ if (!isFileDataTransfer(event.dataTransfer)) {
+ return state
+ }
+ event.preventDefault()
+ const file = event.dataTransfer.files?.[0]
+
+ return [
+ { ...state, dragover: false, fileUrl: null },
+ readFile({ file, onSuccess: ShowNotebook }),
+ ]
+}
diff --git a/packages/ipynb2html-viewer/src/effects.ts b/packages/ipynb2html-viewer/src/effects.ts
new file mode 100644
index 0000000..54e45c8
--- /dev/null
+++ b/packages/ipynb2html-viewer/src/effects.ts
@@ -0,0 +1,113 @@
+import { AnyState, Dispatch, Dispatchable, Effect } from 'hyperapp'
+
+
+function fx (
+ fn: (dispatch: Dispatch, props: Props) => void,
+) {
+ return (props: Props): Effect => [fn, props]
+}
+
+
+type HistoryPush = (props: { state: any, urlQuery?: string }) => Effect
+
+export const historyPush: HistoryPush = fx((_, { state, urlQuery }) => {
+ const url = new URL(window.location.href)
+ if (urlQuery != null) {
+ url.search = urlQuery
+ }
+ history.pushState(state, document.title, url.href)
+})
+
+
+type ReadFile = (props: {
+ file: File,
+ onSuccess: Dispatchable,
+ onError?: Dispatchable,
+}) => Effect
+
+export const readFile: ReadFile = fx((dispatch, { file, onSuccess, onError }) => {
+ const reader = new FileReader()
+
+ reader.onload = (event) => {
+ dispatch(onSuccess, event.target?.result?.toString() ?? '')
+ }
+ if (onError) {
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
+ reader.onerror = () => dispatch(onError, reader.error!)
+ }
+ reader.readAsText(file, 'utf8')
+})
+
+
+type ReadFromStorage = (props: {
+ key: string,
+ session: boolean,
+ onSuccess: Dispatchable,
+}) => Effect
+
+export const readFromStorage: ReadFromStorage = fx((dispatch, { key, session, onSuccess }) => {
+ const storage = session ? window.sessionStorage : window.localStorage
+
+ const value = storage.getItem(key)
+ if (value == null) {
+ // FIXME
+ } else {
+ dispatch(onSuccess, JSON.parse(value))
+ }
+})
+
+
+type WriteToStorage = (props: {
+ key: string,
+ value: unknown,
+ session: boolean,
+}) => Effect
+
+export const writeToStorage: WriteToStorage = fx((_, { key, value, session }) => {
+ const storage = session ? window.sessionStorage : window.localStorage
+
+ if (value == null) {
+ storage.removeItem(key)
+ } else {
+ storage.setItem(key, JSON.stringify(value))
+ }
+})
+
+
+export class ResponseError extends Error {
+ constructor (readonly response: Response) {
+ super(`${response.status} ${response.statusText}`)
+ // See https://github.com/Microsoft/TypeScript/issues/13965 *facepalm*
+ Object.setPrototypeOf(this, new.target.prototype)
+ }
+}
+
+type Request = (props: {
+ url: Parameters[0],
+ options?: Parameters[1],
+ onSuccess: Dispatchable,
+ onError: Dispatchable,
+}) => Effect
+
+export const request: Request = fx((dispatch, { url, options = {}, onSuccess, onError }) => {
+ options.headers = {
+ ...options.headers,
+ accept: 'application/json',
+ }
+ fetch(url, options)
+ .then(async response => {
+ if (!response.ok) {
+ throw new ResponseError(response)
+ }
+ return await response.json() as unknown
+ })
+ .then(result => dispatch(onSuccess, result))
+ .catch(error => dispatch(onError, error))
+})
+
+
+type SetPageTitle = (title: string) => Effect
+
+export const setPageTitle: SetPageTitle = fx((_, title: string) => {
+ document.title = title
+})
diff --git a/packages/ipynb2html-viewer/src/events.ts b/packages/ipynb2html-viewer/src/events.ts
new file mode 100644
index 0000000..e3d59b1
--- /dev/null
+++ b/packages/ipynb2html-viewer/src/events.ts
@@ -0,0 +1,7 @@
+import { createOnCustomEvent } from '@hyperapp/events'
+
+
+export const onDragOver = createOnCustomEvent('dragover')
+export const onDragLeave = createOnCustomEvent('dragleave')
+export const onDrop = createOnCustomEvent('drop')
+export const onPopState = createOnCustomEvent('popstate')
diff --git a/packages/ipynb2html-viewer/src/icons/alert.svg b/packages/ipynb2html-viewer/src/icons/alert.svg
new file mode 100644
index 0000000..6145366
--- /dev/null
+++ b/packages/ipynb2html-viewer/src/icons/alert.svg
@@ -0,0 +1,3 @@
+
diff --git a/packages/ipynb2html-viewer/src/icons/chevron-down.svg b/packages/ipynb2html-viewer/src/icons/chevron-down.svg
new file mode 100644
index 0000000..7c9f57b
--- /dev/null
+++ b/packages/ipynb2html-viewer/src/icons/chevron-down.svg
@@ -0,0 +1,3 @@
+
diff --git a/packages/ipynb2html-viewer/src/icons/chevron-up.svg b/packages/ipynb2html-viewer/src/icons/chevron-up.svg
new file mode 100644
index 0000000..485566e
--- /dev/null
+++ b/packages/ipynb2html-viewer/src/icons/chevron-up.svg
@@ -0,0 +1,3 @@
+
diff --git a/packages/ipynb2html-viewer/src/icons/folder.svg b/packages/ipynb2html-viewer/src/icons/folder.svg
new file mode 100644
index 0000000..d3447ce
--- /dev/null
+++ b/packages/ipynb2html-viewer/src/icons/folder.svg
@@ -0,0 +1,3 @@
+
diff --git a/packages/ipynb2html-viewer/src/icons/github.svg b/packages/ipynb2html-viewer/src/icons/github.svg
new file mode 100644
index 0000000..60bc95d
--- /dev/null
+++ b/packages/ipynb2html-viewer/src/icons/github.svg
@@ -0,0 +1,3 @@
+
diff --git a/packages/ipynb2html-viewer/src/icons/logo.src.svg b/packages/ipynb2html-viewer/src/icons/logo.src.svg
new file mode 100644
index 0000000..61f242e
--- /dev/null
+++ b/packages/ipynb2html-viewer/src/icons/logo.src.svg
@@ -0,0 +1,84 @@
+
+
+
+
diff --git a/packages/ipynb2html-viewer/src/icons/logo.svg b/packages/ipynb2html-viewer/src/icons/logo.svg
new file mode 100644
index 0000000..65a9f2f
--- /dev/null
+++ b/packages/ipynb2html-viewer/src/icons/logo.svg
@@ -0,0 +1,6 @@
+
diff --git a/packages/ipynb2html-viewer/src/index.ts b/packages/ipynb2html-viewer/src/index.ts
new file mode 100644
index 0000000..e2d3e99
--- /dev/null
+++ b/packages/ipynb2html-viewer/src/index.ts
@@ -0,0 +1,20 @@
+import { app } from 'hyperapp'
+import { preventDefault } from '@hyperapp/events'
+
+import * as actions from './actions'
+import { onDragLeave, onDragOver, onDrop, onPopState } from './events'
+import { State } from './types'
+import { App } from './view'
+
+
+export default (): void => app({
+ node: document.body,
+ init: actions.Initialize,
+ view: App,
+ subscriptions: () => [
+ onDragOver(actions.DragOver),
+ onDragLeave(preventDefault(actions.DragLeave)),
+ onDrop(actions.DropFile),
+ onPopState(actions.HistoryPop),
+ ],
+})
diff --git a/packages/ipynb2html-viewer/src/types.ts b/packages/ipynb2html-viewer/src/types.ts
new file mode 100644
index 0000000..93eb1f0
--- /dev/null
+++ b/packages/ipynb2html-viewer/src/types.ts
@@ -0,0 +1,18 @@
+import { Notebook } from 'ipynb2html'
+
+export type State = {
+ fileUrl: string | null,
+ title: string | null,
+ notebook: Notebook | null,
+ error: ErrorMessage | null,
+ dragover: boolean,
+ historyIdx: number,
+ fromHistory: boolean,
+ mainView: 'BLANK' | 'ERROR' | 'FETCHING' | 'NOTEBOOK',
+}
+
+export type ErrorMessage = {
+ title: string,
+ message: string,
+ detail?: string,
+}
diff --git a/packages/ipynb2html-viewer/src/utils.ts b/packages/ipynb2html-viewer/src/utils.ts
new file mode 100644
index 0000000..2270ec4
--- /dev/null
+++ b/packages/ipynb2html-viewer/src/utils.ts
@@ -0,0 +1,25 @@
+import { AnyState, Dispatch, Effect } from 'hyperapp'
+
+
+export function fx (
+ fn: (dispatch: Dispatch, props: Props) => void,
+) {
+ return (props: Props): Effect => [fn, props]
+}
+
+export function match any}> (
+ value: T,
+ matcher: U,
+): U extends {[K in T]: (k: K) => infer R} ? R : never {
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
+ return matcher[value](value)
+}
+
+export function targetFile (event: Event): File {
+ const file = (event.target as HTMLInputElement | null)?.files?.[0]
+
+ if (!file) {
+ throw TypeError("Event doesn't contain any file")
+ }
+ return file
+}
diff --git a/packages/ipynb2html-viewer/src/view.pcss b/packages/ipynb2html-viewer/src/view.pcss
new file mode 100644
index 0000000..1cde32e
--- /dev/null
+++ b/packages/ipynb2html-viewer/src/view.pcss
@@ -0,0 +1,281 @@
+html,
+body {
+ margin: 0;
+ padding: 0;
+ color: #2a2a2a;
+ font-family: sans-serif;
+ background-color: #dedede;
+
+ @media print {
+ color: black;
+ background-color: white;
+ }
+}
+
+code,
+pre {
+ font-size: 0.85rem;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ margin-top: 1.6em;
+ position: relative;
+}
+
+h1 .anchor,
+h2 .anchor,
+h3 .anchor,
+h4 .anchor,
+h5 .anchor,
+h6 .anchor {
+ display: block;
+ width: 1em;
+ left: -1em;
+ height: 100%;
+ position: absolute;
+}
+
+h1:hover .anchor,
+h2:hover .anchor,
+h3:hover .anchor,
+h4:hover .anchor,
+h5:hover .anchor,
+h6:hover .anchor {
+ background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 50 50'%3E%3Cg fill='none' stroke='%23000' stroke-width='3'%3E%3Cpath d='M26.1 22a5.8 5.8 0 00-8.1 0l-9.6 9.5a5.8 5.8 0 008.2 8.2l5.8-5.9'/%3E%3Cpath d='M23.6 28a5.8 5.8 0 008.2 0l9.5-9.5a5.8 5.8 0 00-8.1-8.2l-5.8 5.9'/%3E%3C/g%3E%3C/svg%3E") no-repeat 100% center;
+}
+
+table {
+ border: 1px solid #cfcfcf;
+ border-collapse: collapse;
+}
+
+th {
+ font-weight: 600;
+}
+
+td,
+th {
+ padding: 0.2em 0.4em;
+ border: 1px solid #cfcfcf;
+}
+
+thead tr,
+tbody tr:nth-child(even) {
+ background-color: #f7f7f7;
+}
+
+thead tr:hover,
+tbody tr:hover {
+ background-color: #cfcfcf;
+}
+
+.dragover {
+ opacity: 0.5;
+}
+
+#header {
+ display: flex;
+ flex-wrap: nowrap;
+ align-items: center;
+ color: #fff;
+ background-color: #24292e;
+
+ @media print {
+ display: none;
+ }
+
+ & .logo {
+ flex-shrink: 0;
+ width: 7.5rem;
+ height: 2rem;
+ margin: 0 0.6rem;
+ font-size: 0;
+ background: svg-load('icons/logo.svg', fill: #fff) no-repeat left center / contain;
+
+ @media (max-width: 40em) {
+ width: 3.8rem;
+ margin: 0 0.2rem 0 0.5rem;
+ background-size: 6.8rem 1.75rem;
+ }
+ }
+
+ & .file-input {
+ position: absolute !important;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ overflow: hidden;
+ white-space: nowrap;
+ border: 0;
+ clip: rect(0, 0, 0, 0);
+ }
+
+ & .file-label {
+ display: inline-block;
+ flex-shrink: 0;
+ width: 1.5rem;
+ height: 1.5rem;
+ margin: 0 0.8rem;
+ color: transparent;
+ background: svg-load('icons/folder.svg', fill: #ddd) no-repeat center / contain;
+ cursor: pointer;
+
+ @media (max-width: 40em) {
+ margin: 0.6rem;
+ }
+ }
+
+ & .url-form {
+ width: 100%;
+ }
+
+ & .url-input {
+ box-sizing: border-box;
+ width: 100%;
+ margin: 0.6rem 0;
+ padding: 0 0.5em;
+ color: #fff;
+ font-size: 0.9rem;
+ line-height: 2;
+ background-color: hsla(0, 0%, 100%, 0.15);
+ border: 0;
+ border-radius: 0.2em;
+ }
+
+ & .github-link {
+ display: block;
+ flex-shrink: 0;
+ width: 1.6rem;
+ height: 1.6rem;
+ margin: 0 1rem;
+ font-size: 0;
+ background: svg-load('icons/github.svg', fill: #eee) no-repeat center / contain;
+
+ @media (max-width: 40em) {
+ margin: 0 0.5rem;
+ }
+ }
+}
+
+.error {
+ display: table;
+ max-width: 28rem;
+ height: 6rem;
+ margin: 32vh auto 0 auto;
+ padding-left: 8.5rem;
+ background: svg-load('icons/alert.svg') no-repeat;
+ background-position: left top;
+ background-size: 6rem 6rem;
+
+ @media (max-width: 40em) {
+ height: unset;
+ margin: 10vh auto 0 auto;
+ padding: 8rem 1rem 0 1rem;
+ text-align: center;
+ background-position: top center;
+ }
+
+ & summary {
+ display: block;
+ font-size: 1.13em;
+ cursor: pointer;
+
+ &::-webkit-details-marker {
+ display: none;
+ }
+
+ &::after {
+ /* Expand arrow after the summary text. */
+ display: inline-block;
+ width: 0.7em;
+ height: 0.7em;
+ margin-left: 0.5em;
+ background: svg-load('icons/chevron-down.svg') no-repeat center / contain;
+ content: '';
+ }
+ }
+
+ & details[open] summary::after {
+ /* Collapse arrow after the summary text. */
+ background: svg-load('icons/chevron-up.svg') no-repeat center / contain;
+ }
+
+ & details :not(summary) {
+ color: #666;
+ }
+
+ & :first-child {
+ margin-top: 0;
+ }
+}
+
+.fetching {
+ width: 12rem;
+ margin: 32vh auto 0 auto;
+ font-size: 1.13rem;
+ text-align: center;
+
+ &::before {
+ /* Spinner */
+ display: block;
+ width: 4rem;
+ height: 4rem;
+ margin: 0 auto 2rem auto;
+ border-top: 0.3rem solid #f37726;
+ border-right: 0.3rem solid transparent;
+ border-radius: 50%;
+ animation: rotation 1s linear infinite;
+ content: "";
+ }
+}
+
+.nb-notebook {
+ max-width: 45rem;
+ margin: 1rem auto 2rem auto;
+ padding: 3rem 6rem;
+ background-color: white;
+ box-shadow: 4px 4px 8px #cfcfcf, -4px -4px 8px #cfcfcf;
+
+ @media screen and (max-width: 940px) {
+ max-width: none;
+ margin: 0;
+ padding-right: 3rem;
+ padding-left: 5rem;
+ box-shadow: none;
+ }
+
+ @media screen and (max-width: 768px) {
+ padding: 0.1rem 5% 2rem 5%;
+ }
+
+ @media print {
+ max-width: none;
+ margin: 0;
+ padding: 0 0 0 5rem;
+ box-shadow: none;
+ }
+}
+
+.nb-output table {
+ font-size: 0.9em;
+}
+
+@keyframes rotation {
+ from {
+ transform: rotate(0deg);
+ }
+
+ to {
+ transform: rotate(360deg);
+ }
+}
+
+@page {
+ size: A4;
+ margin: 30mm 15mm 15mm 7mm;
+}
diff --git a/packages/ipynb2html-viewer/src/view.tsx b/packages/ipynb2html-viewer/src/view.tsx
new file mode 100644
index 0000000..b52fa55
--- /dev/null
+++ b/packages/ipynb2html-viewer/src/view.tsx
@@ -0,0 +1,80 @@
+/* eslint-disable @typescript-eslint/no-non-null-assertion, @typescript-eslint/no-use-before-define */
+import { h, Lazy, View } from 'hyperapp'
+import { preventDefault, targetValue } from '@hyperapp/events'
+import * as ipynb2html from 'ipynb2html'
+import { $INLINE_JSON } from 'ts-transformer-inline-file'
+
+import * as actions from './actions'
+import { State, ErrorMessage } from './types'
+import { match, targetFile } from './utils'
+
+import './view.pcss'
+
+
+const { homepage } = $INLINE_JSON<{ homepage: string }>('../package.json')
+const renderNotebook = ipynb2html.createRenderer(document)
+
+export const App: View = (state) => (
+
+
+ {
+ match(state.mainView, {
+ ERROR: () => ,
+ FETCHING: () => ,
+ NOTEBOOK: () => ,
+ BLANK: () => null,
+ })
+ }
+
+)
+
+const Header: View> = ({ fileUrl }) => (
+
+)
+
+const Notebook: View> = ({ notebook }) => (
+
+)
+
+const ErrorBox: View<{ error: ErrorMessage }> = ({ error }) => (
+
+)
+
+const FetchingSpinner: View<{}> = () => (
+
+)
diff --git a/packages/ipynb2html-viewer/tsconfig.json b/packages/ipynb2html-viewer/tsconfig.json
new file mode 100644
index 0000000..519fcf1
--- /dev/null
+++ b/packages/ipynb2html-viewer/tsconfig.json
@@ -0,0 +1,16 @@
+{
+ "extends": "../../tsconfig.base.json",
+ "compilerOptions": {
+ "jsxFactory": "h",
+ "rootDir": "./src",
+ "outDir": "./lib",
+ "tsBuildInfoFile": "./.tsbuildinfo",
+ "baseUrl": ".",
+ },
+ "include": [
+ "./src",
+ ],
+ "references": [
+ { "path": "../ipynb2html" },
+ ],
+}
diff --git a/packages/ipynb2html/package.json b/packages/ipynb2html/package.json
index b7b1b69..f3ac040 100644
--- a/packages/ipynb2html/package.json
+++ b/packages/ipynb2html/package.json
@@ -29,12 +29,14 @@
"styles"
],
"scripts": {
- "build": "ttsc --build",
- "bundle": "rollup -c",
+ "build": "run-p build-except-ts build-ts",
+ "build-bundle": "rollup -c",
+ "build-css": "mkdirp dist/ && csso styles/notebook.css -o dist/notebook.min.css -s dist/notebook.min.css.map",
+ "build-except-ts": "run-p build-bundle build-css",
+ "build-ts": "ttsc --build",
"clean": "rimraf coverage/ dist/ lib/ .eslintcache .tsbuildinfo",
"lint": "PKGDIR=$PWD; cd ../../ && eslint --cache --ext .ts,.tsx,.js $PKGDIR",
- "minify-css": "csso styles/notebook.css -o dist/notebook.min.css -s dist/notebook.min.css.map",
- "prepublishOnly": "run-p bundle minify-css readme2md",
+ "prepublishOnly": "run-p build readme2md",
"test": "jest --detectOpenHandles --coverage --verbose",
"readme2md": "../../scripts/adoc2md -a npm-readme ../../README.adoc > README.md",
"watch-ts": "ttsc --build --watch"
diff --git a/patches/rollup-plugin-postcss+2.0.6.patch b/patches/rollup-plugin-postcss+2.0.6.patch
new file mode 100644
index 0000000..49804ec
--- /dev/null
+++ b/patches/rollup-plugin-postcss+2.0.6.patch
@@ -0,0 +1,85 @@
+Ported from https://github.com/egoist/rollup-plugin-postcss/pull/226
+
+diff --git a/node_modules/rollup-plugin-postcss/dist/index.js b/node_modules/rollup-plugin-postcss/dist/index.js
+index 3d04b2e..01dda37 100644
+--- a/node_modules/rollup-plugin-postcss/dist/index.js
++++ b/node_modules/rollup-plugin-postcss/dist/index.js
+@@ -789,15 +789,14 @@ var index = ((options = {}) => {
+ },
+
+ generateBundle(opts, bundle) {
+- return _asyncToGenerator(function* () {
+- if (extracted.size === 0) return; // TODO: support `[hash]`
++ var _this2 = this;
+
++ return _asyncToGenerator(function* () {
++ if (extracted.size === 0) return;
+ const dir = opts.dir || path.dirname(opts.file);
+ const file = opts.file || path.join(opts.dir, Object.keys(bundle).find(fileName => bundle[fileName].isEntry));
+
+ const getExtracted = () => {
+- const fileName = typeof postcssLoaderOptions.extract === 'string' ? normalizePath(path.relative(dir, postcssLoaderOptions.extract)) : `${path.basename(file, path.extname(file))}.css`;
+- const concat = new Concat(true, fileName, '\n');
+ const entries = Array.from(extracted.values());
+ const modules = bundle[normalizePath(path.relative(dir, file))].modules;
+
+@@ -806,6 +805,32 @@ var index = ((options = {}) => {
+ entries.sort((a, b) => fileList.indexOf(a.id) - fileList.indexOf(b.id));
+ }
+
++ let referenceId;
++
++ if (typeof postcssLoaderOptions.extract === 'string') {
++ referenceId = _this2.emitFile({
++ type: 'asset',
++ source: '',
++ // init
++ fileName: normalizePath(path.relative(dir, postcssLoaderOptions.extract))
++ });
++ } else {
++ const name = `${path.basename(file, path.extname(file))}.css`; // Base hash digest on concatenation of extracted code...
++
++ const source = entries.reduce((acc, {
++ code
++ }) => acc + code, '');
++ referenceId = _this2.emitFile({
++ type: 'asset',
++ source,
++ name
++ });
++ }
++
++ const fileName = _this2.getFileName(referenceId);
++
++ const concat = new Concat(true, fileName, '\n');
++
+ for (var _i = 0; _i < entries.length; _i++) {
+ const res = entries[_i];
+ const relative = normalizePath(path.relative(dir, res.id));
+@@ -872,20 +897,14 @@ var index = ((options = {}) => {
+ }
+ }
+
+- const codeFile = {
+- fileName: codeFileName,
+- isAsset: true,
+- source: code
+- };
+- bundle[codeFile.fileName] = codeFile;
++ bundle[codeFileName].source = code; // update
+
+ if (map) {
+- const mapFile = {
+- fileName: mapFileName,
+- isAsset: true,
+- source: map
+- };
+- bundle[mapFile.fileName] = mapFile;
++ _this2.emitFile({
++ type: 'asset',
++ source: map,
++ fileName: mapFileName
++ });
+ }
+ })();
+ }
diff --git a/tsconfig.json b/tsconfig.json
index e8ed575..1f8f8f3 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -4,5 +4,6 @@
{ "path": "./packages/ipynb2html-core" },
{ "path": "./packages/ipynb2html" },
{ "path": "./packages/ipynb2html-cli" },
+ { "path": "./packages/ipynb2html-viewer" },
]
}
diff --git a/types/@hyperapp/events.d.ts b/types/@hyperapp/events.d.ts
new file mode 100644
index 0000000..631cc9a
--- /dev/null
+++ b/types/@hyperapp/events.d.ts
@@ -0,0 +1,62 @@
+type EventArgument = Parameters>[0];
+
+export declare function onMouseEnter(action: hyperappSubset.Dispatchable>): hyperappSubset.Subscription;
+export declare function onMouseLeave(action: hyperappSubset.Dispatchable>): hyperappSubset.Subscription;
+export declare function onMouseMove(action: hyperappSubset.Dispatchable>): hyperappSubset.Subscription;
+export declare function onMouseOut(action: hyperappSubset.Dispatchable>): hyperappSubset.Subscription;
+export declare function onMouseOver(action: hyperappSubset.Dispatchable>): hyperappSubset.Subscription;
+export declare function onMouseUp(action: hyperappSubset.Dispatchable>): hyperappSubset.Subscription;
+export declare function onTouchStart(action: hyperappSubset.Dispatchable>): hyperappSubset.Subscription;
+export declare function onTouchMove(action: hyperappSubset.Dispatchable>): hyperappSubset.Subscription;
+export declare function onTouchEnd(action: hyperappSubset.Dispatchable>): hyperappSubset.Subscription;
+export declare function onKeyDown(action: hyperappSubset.Dispatchable>): hyperappSubset.Subscription;
+export declare function onKeyUp(action: hyperappSubset.Dispatchable>): hyperappSubset.Subscription;
+export declare function onFocus(action: hyperappSubset.Dispatchable>): hyperappSubset.Subscription;
+export declare function onBlur(action: hyperappSubset.Dispatchable>): hyperappSubset.Subscription;
+
+export declare function onAnimationFrame(action: hyperappSubset.Dispatchable): hyperappSubset.Subscription;
+
+export declare function eventKey(e: Event): any;
+export declare function eventDetail(e: Event): any;
+export declare function targetChecked(e: Event): any;
+export declare function targetValue(e: Event): any;
+
+export declare function eventOptions(props: { preventDefault?: boolean, stopPropagation?: boolean, action?: hyperappSubset.Dispatchable }): hyperappSubset.Effect;
+export declare function preventDefault(action: hyperappSubset.Dispatchable): hyperappSubset.Action;
+export declare function stopPropagation(action: hyperappSubset.Dispatchable): hyperappSubset.Action;
+
+export declare function dispatchCustomEvent(props: {name: string}): hyperappSubset.Action;
+export declare function createOnCustomEvent(eventName: string): (action: hyperappSubset.Dispatchable) => hyperappSubset.Subscription;
+
+declare namespace hyperappSubset {
+ type AnyState = boolean | string | number | object | symbol | null | undefined;
+
+ type PayloadCreator = ((data: DPayload) => CPayload);
+
+ type Dispatchable = (
+ State
+ | [State, ...Effect[]]
+ | ([Action, PayloadCreator])
+ | ([Action, CPayload])
+ | Action // (state) => ({ ... }) | (state) => ([{ ... }, effect1, ...])
+ | Action // (state, data) => ({ ... }) | (state, data) => ([{ ... }, effect1, ...])
+ );
+
+ type Dispatch = (obj: Dispatchable, data: NextPayload) => State;
+
+ interface EffectRunner {
+ (dispatch: Dispatch, props: Props): void;
+ }
+
+ type Effect = [EffectRunner, any] | [EffectRunner];
+
+ interface SubscriptionRunner {
+ (dispatch: Dispatch, props: Props): (() => void);
+ }
+
+ type Subscription = [SubscriptionRunner, any] | [SubscriptionRunner];
+
+ interface Action {
+ (state: State, data: Payload): Dispatchable;
+ }
+}
diff --git a/types/@hyperapp/http.d.ts b/types/@hyperapp/http.d.ts
new file mode 100644
index 0000000..d1261e3
--- /dev/null
+++ b/types/@hyperapp/http.d.ts
@@ -0,0 +1,64 @@
+export declare function request(props: RequestProps): hyperappSubset.Effect;
+
+type RequestProps =
+ JsonRequestProps | TextRequestProps | FormDataRequestProps | BlobRequestProps | ArrayBufferRequestProps;
+
+interface RequestPropsBase {
+ url: Parameters[0];
+ options?: Parameters[1];
+}
+
+interface JsonRequestProps extends RequestPropsBase {
+ expect?: 'json';
+ action: hyperappSubset.Dispatchable;
+}
+interface TextRequestProps extends RequestPropsBase {
+ expect: 'text';
+ action: hyperappSubset.Dispatchable;
+}
+interface FormDataRequestProps extends RequestPropsBase {
+ expect: 'formData';
+ action: hyperappSubset.Dispatchable;
+}
+interface BlobRequestProps extends RequestPropsBase {
+ expect: 'blob';
+ action: hyperappSubset.Dispatchable;
+}
+interface ArrayBufferRequestProps extends RequestPropsBase {
+ expect: 'arrayBuffer';
+ action: hyperappSubset.Dispatchable;
+}
+
+
+declare namespace hyperappSubset {
+ type AnyState = boolean | string | number | object | symbol | null | undefined;
+
+ type PayloadCreator = ((data: DPayload) => CPayload);
+
+ type Dispatchable = (
+ State
+ | [State, ...Effect[]]
+ | ([Action, PayloadCreator])
+ | ([Action, CPayload])
+ | Action // (state) => ({ ... }) | (state) => ([{ ... }, effect1, ...])
+ | Action // (state, data) => ({ ... }) | (state, data) => ([{ ... }, effect1, ...])
+ );
+
+ type Dispatch = (obj: Dispatchable, data: NextPayload) => State;
+
+ interface EffectRunner {
+ (dispatch: Dispatch, props: Props): void;
+ }
+
+ type Effect = [EffectRunner, any] | [EffectRunner];
+
+ interface SubscriptionRunner {
+ (dispatch: Dispatch, props: Props): (() => void);
+ }
+
+ type Subscription = [SubscriptionRunner, any] | [SubscriptionRunner];
+
+ interface Action {
+ (state: State, data: Payload): Dispatchable;
+ }
+}
diff --git a/types/@hyperapp/index.d.ts b/types/@hyperapp/index.d.ts
new file mode 100644
index 0000000..5924f9c
--- /dev/null
+++ b/types/@hyperapp/index.d.ts
@@ -0,0 +1 @@
+declare module '@hyperapp' {}
diff --git a/types/hyperapp.d.ts b/types/hyperapp.d.ts
new file mode 100644
index 0000000..9c54686
--- /dev/null
+++ b/types/hyperapp.d.ts
@@ -0,0 +1,232 @@
+// TypeScript Version: 3.0
+
+export as namespace hyperapp;
+
+/** @namespace [VDOM] */
+
+/** The VDOM representation of an Element.
+ *
+ * @memberOf [VDOM]
+ */
+export interface VNode {
+ name: unknown; // protected (internal implementation)
+ props: unknown; // protected (internal implementation)
+ children: unknown; // protected (internal implementation)
+ node: unknown; // protected (internal implementation)
+ type: unknown; // protected (internal implementation)
+ key: unknown; // protected (internal implementation)
+ lazy: unknown; // protected (internal implementation)
+}
+
+/**
+ * Possibles state types (all except Array and Function)
+ */
+export type AnyState = boolean | string | number | object | symbol | null | undefined;
+
+/**
+ * Possibles children types
+ */
+export type Children = VNode | string | number | null
+
+/** A Component is a function that returns a custom VNode or View.
+ *
+ * @memberOf [VDOM]
+ */
+export interface Component {
+ (attributes: Attributes, children: VNode[]): VNode | null;
+}
+
+/** The soft way to create a VNode.
+ * @param name An element name or a Component function
+ * @param attributes Any valid HTML atributes, events, styles, and meta data
+ * @param children The children of the VNode
+ * @returns A VNode tree.
+ *
+ * @memberOf [VDOM]
+ */
+export function h(
+ nodeName: Component | string,
+ attributes?: Attributes,
+ ...children: (Children | Children[])[]
+): VNode
+
+/** @namespace [App] */
+
+type PayloadCreator = ((data: DPayload) => CPayload);
+
+/** Usable to 1st argument of `dispatch`. Usually, This is a reference to an action to be invoked by Hyperapp, with custom payload
+ *
+ * @memberOf [App]
+ */
+export type Dispatchable =
+ | State
+ | [State, ...Effect[]]
+ | [Action, PayloadCreator]
+ | [Action, CPayload]
+ | Action // (state) => ({ ... }) | (state) => ([{ ... }, effect1, ...])
+ | Action; // (state, data) => ({ ... }) | (state, data) => ([{ ... }, effect1, ...])
+
+/** Usable to 1st argument of `dispatch`. make strict for `init` (initial state and default payload are always undefined)
+ *
+ * @memberOf [App]
+ */
+export type DispatchableOnInit =
+ | State
+ | [State, ...Effect[]]
+ | [ActionOnInit, CPayload]
+ | ActionOnInit;
+
+/** A definition of `dispatch`. This is passed as an argument of effect or subscription runner.
+ *
+ * @memberOf [App]
+ */
+export type Dispatch = (obj: Dispatchable, data: Payload) => State;
+
+
+/** An effect runner. It is actually invoked when effect is reflected.
+ *
+ * @memberOf [App]
+ */
+export interface EffectRunner {
+ (dispatch: Dispatch, props: Props): void;
+}
+
+/** An effect as the result of an action.
+ *
+ * @memberOf [App]
+ */
+export type Effect = [EffectRunner, Props] | [EffectRunner];
+
+/** An subscription runner. It is actually invoked when effect is reflected.
+ *
+ * @memberOf [App]
+ */
+export interface SubscriptionRunner {
+ (dispatch: Dispatch, props: Props): (() => void);
+}
+
+/** A reference to an subscription to be managed by Hyperapp, with optional additional parameters
+ *
+ * @memberOf [App]
+ */
+export type Subscription = [SubscriptionRunner, Props] | [SubscriptionRunner];
+
+/** The interface for a single action implementation.
+ *
+ * @memberOf [App]
+ */
+export interface Action {
+ (state: State, data: Payload): Dispatchable;
+}
+
+/** The interface for a single action implementation, make strict for `init` (given state are always undefined)
+ *
+ * @memberOf [App]
+ */
+export interface ActionOnInit {
+ (state: undefined, data: Payload): DispatchableOnInit;
+}
+
+/** The view function describes the application UI as a tree of VNodes.
+ * @returns A VNode tree.
+ * @memberOf [App]
+ */
+export interface View {
+ (state: State): VNode | null;
+}
+
+/** The possible response types for the subscription callback for an application
+ *
+ * @memberOf [App]
+ */
+export type SubscriptionsResult = (Subscription | Falsy)[] | Subscription | Falsy;
+
+type Falsy = false | '' | 0 | null | undefined;
+
+/** The lazy view. {@link https://github.com/jorgebucaran/hyperapp/issues/721#issuecomment-402150041}
+ *
+ * @memberOf [App]
+ */
+export function Lazy(props: { view: (props: Props) => VNode | null, key?: string | number | null } & Props): VNode;
+
+/** The set of properties that define a Hyperapp application.
+ *
+ * @memberOf [App]
+ */
+export interface AppProps {
+ init?: DispatchableOnInit;
+ view?: View;
+ node: Element;
+ subscriptions?: (state: State) => SubscriptionsResult;
+ middleware?: Middleware;
+}
+
+/** The middleware function.
+ *
+ * @memberOf [App]
+ */
+export type MiddlewareFunc = (action: Dispatchable, props: unknown) => void;
+
+/** The middleware.
+ *
+ * @memberOf [App]
+ */
+export type Middleware = (func: MiddlewareFunc) => MiddlewareFunc;
+
+/** The app() call creates and renders a new application.
+ *
+ * @param state The state object.
+ * @param actions The actions object implementation.
+ * @param view The view function.
+ * @param container The DOM element where the app will be rendered to.
+ * @returns The actions wired to the application.
+ * @memberOf [App]
+ */
+export function app(app: AppProps): void
+
+/**
+ * The class attribute value of VNode.
+ *
+ * @memberOf [VDOM]
+ */
+export type ClassAttribute = ClassAttributeItem | null | undefined;
+
+type ClassAttributeItem = (string | { [key: string]: any } | ClassAttributeArray);
+
+interface ClassAttributeArray extends Array { }
+
+/**
+ * The style attribute value of VNode.
+ *
+ * @memberOf [VDOM]
+ */
+export type StyleAttribute = { [key: string]: any } | null | string | undefined;
+
+// e.g.) onchange, onupdate, oninput, ...
+//
+type EventKeys = keyof GlobalEventHandlers;
+
+type EventParameterType = Parameters>[0];
+
+//
+// -> A: Dispatchable
+//
+type EventAttributes = Partial<{ [key in EventKeys]: Dispatchable> }>;
+
+export interface JSXAttribute extends EventAttributes {
+ key?: PropertyKey;
+ class?: ClassAttribute;
+ style?: StyleAttribute;
+
+ [attrName: string]: any;
+}
+
+// /** @namespace [JSX] */
+declare global {
+ namespace JSX {
+ interface Element extends VNode { }
+ interface IntrinsicElements {
+ [elemName: string]: JSXAttribute;
+ }
+ }
+}
diff --git a/yarn.lock b/yarn.lock
index 657628d..6e5f813 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1013,6 +1013,11 @@
exec-sh "^0.3.2"
minimist "^1.2.0"
+"@hyperapp/events@^0.0.4":
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/@hyperapp/events/-/events-0.0.4.tgz#dfeae0f0a0ad1b414034da5f7057611aa30cbfca"
+ integrity sha512-3X8D/ZsuLDu5GjVMhyGv4Hy16FsY1uPNln90J19MaTd22yvUyIqjhDj4J+1OK2cteFPAZPjfmf6lplJA+K+J3A==
+
"@istanbuljs/load-nyc-config@^1.0.0":
version "1.0.0"
resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz#10602de5570baea82f8afbfa2630b24e7a8cfe5b"
@@ -1226,6 +1231,11 @@
magic-string "^0.25.2"
resolve "^1.11.0"
+"@rollup/plugin-html@^0.2.0":
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/@rollup/plugin-html/-/plugin-html-0.2.0.tgz#a01068e3e0e089a65f44c1b1988b8acd236f36e9"
+ integrity sha512-aT73feaTUmJIQ45K61+5pL9GE5IYgHi0SvQ+yhQfPG1HoDlPnIjk3af9IA/DxJ+8ZlWDWFcN3pik0VavWF88hw==
+
"@rollup/plugin-node-resolve@^8.0.1":
version "8.0.1"
resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-8.0.1.tgz#364b5938808ee6b5164dea5ef7291be3f7395199"
@@ -1387,6 +1397,11 @@
resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-1.19.1.tgz#33509849f8e679e4add158959fdb086440e9553f"
integrity sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ==
+"@types/q@^1.5.1":
+ version "1.5.4"
+ resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24"
+ integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==
+
"@types/resolve@0.0.8":
version "0.0.8"
resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194"
@@ -1522,6 +1537,11 @@ ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5:
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
+alphanum-sort@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
+ integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=
+
anser@^1.4.9:
version "1.4.9"
resolved "https://registry.yarnpkg.com/anser/-/anser-1.4.9.tgz#1f85423a5dcf8da4631a341665ff675b96845760"
@@ -1696,6 +1716,11 @@ astral-regex@^1.0.0:
resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9"
integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==
+async-limiter@~1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
+ integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
+
asynckit@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
@@ -1807,6 +1832,11 @@ bcrypt-pbkdf@^1.0.0:
dependencies:
tweetnacl "^0.14.3"
+big.js@^5.2.2:
+ version "5.2.2"
+ resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
+ integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
+
binary-extensions@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c"
@@ -1817,6 +1847,11 @@ bluebird@^3.5.1:
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
+boolbase@^1.0.0, boolbase@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
+ integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
+
brace-expansion@^1.1.7:
version "1.1.11"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
@@ -1860,7 +1895,7 @@ browser-resolve@^1.11.3:
dependencies:
resolve "1.1.7"
-browserslist@^4.12.0, browserslist@^4.8.3:
+browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.8.3:
version "4.16.6"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2"
integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==
@@ -1915,6 +1950,25 @@ cache-base@^1.0.1:
union-value "^1.0.0"
unset-value "^1.0.0"
+caller-callsite@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134"
+ integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=
+ dependencies:
+ callsites "^2.0.0"
+
+caller-path@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4"
+ integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=
+ dependencies:
+ caller-callsite "^2.0.0"
+
+callsites@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50"
+ integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=
+
callsites@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
@@ -1925,6 +1979,21 @@ camelcase@^5.0.0, camelcase@^5.3.1:
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
+caniuse-api@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0"
+ integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==
+ dependencies:
+ browserslist "^4.0.0"
+ caniuse-lite "^1.0.0"
+ lodash.memoize "^4.1.2"
+ lodash.uniq "^4.5.0"
+
+caniuse-lite@^1.0.0:
+ version "1.0.30001085"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001085.tgz#bed28bd51ff7425d33ee23e730c7f3b703711db6"
+ integrity sha512-x0YRFRE0pmOD90z+9Xk7jwO58p4feVNXP+U8kWV+Uo/HADyrgESlepzIkUqPgaXkpyceZU6siM1gsK7sHgplqA==
+
caniuse-lite@^1.0.30001219:
version "1.0.30001236"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001236.tgz#0a80de4cdf62e1770bb46a30d884fc8d633e3958"
@@ -2004,6 +2073,21 @@ chokidar@^3.0.0:
optionalDependencies:
fsevents "~2.1.2"
+chokidar@^3.3.0:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.0.tgz#b30611423ce376357c765b9b8f904b9fba3c0be8"
+ integrity sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ==
+ dependencies:
+ anymatch "~3.1.1"
+ braces "~3.0.2"
+ glob-parent "~5.1.0"
+ is-binary-path "~2.1.0"
+ is-glob "~4.0.1"
+ normalize-path "~3.0.0"
+ readdirp "~3.4.0"
+ optionalDependencies:
+ fsevents "~2.1.2"
+
chownr@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142"
@@ -2054,6 +2138,15 @@ co@^4.6.0:
resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=
+coa@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3"
+ integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==
+ dependencies:
+ "@types/q" "^1.5.1"
+ chalk "^2.4.1"
+ q "^1.1.2"
+
collect-v8-coverage@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.0.tgz#150ee634ac3650b71d9c985eb7f608942334feb1"
@@ -2067,7 +2160,7 @@ collection-visit@^1.0.0:
map-visit "^1.0.0"
object-visit "^1.0.0"
-color-convert@^1.9.0:
+color-convert@^1.9.0, color-convert@^1.9.1:
version "1.9.3"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
@@ -2086,11 +2179,27 @@ color-name@1.1.3:
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
-color-name@~1.1.4:
+color-name@^1.0.0, color-name@~1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+color-string@^1.5.2:
+ version "1.5.3"
+ resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc"
+ integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==
+ dependencies:
+ color-name "^1.0.0"
+ simple-swizzle "^0.2.2"
+
+color@^3.0.0:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10"
+ integrity sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==
+ dependencies:
+ color-convert "^1.9.1"
+ color-string "^1.5.2"
+
colorette@^1.2.2:
version "1.2.2"
resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94"
@@ -2103,7 +2212,7 @@ combined-stream@^1.0.6, combined-stream@~1.0.6:
dependencies:
delayed-stream "~1.0.0"
-commander@^2.20.0:
+commander@^2.19.0, commander@^2.20.0:
version "2.20.3"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
@@ -2133,6 +2242,13 @@ concat-map@0.0.1:
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
+concat-with-sourcemaps@^1.0.5:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz#d4ea93f05ae25790951b99e7b3b09e3908a4082e"
+ integrity sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==
+ dependencies:
+ source-map "^0.6.1"
+
contains-path@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a"
@@ -2168,6 +2284,16 @@ core-util-is@1.0.2:
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
+cosmiconfig@^5.0.0:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a"
+ integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==
+ dependencies:
+ import-fresh "^2.0.0"
+ is-directory "^0.3.1"
+ js-yaml "^3.13.1"
+ parse-json "^4.0.0"
+
cross-spawn@^6.0.0, cross-spawn@^6.0.5:
version "6.0.5"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
@@ -2197,6 +2323,55 @@ cross-spawn@^7.0.2:
shebang-command "^2.0.0"
which "^2.0.1"
+css-color-names@0.0.4, css-color-names@^0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
+ integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=
+
+css-declaration-sorter@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22"
+ integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==
+ dependencies:
+ postcss "^7.0.1"
+ timsort "^0.3.0"
+
+css-modules-loader-core@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz#5908668294a1becd261ae0a4ce21b0b551f21d16"
+ integrity sha1-WQhmgpShvs0mGuCkziGwtVHyHRY=
+ dependencies:
+ icss-replace-symbols "1.1.0"
+ postcss "6.0.1"
+ postcss-modules-extract-imports "1.1.0"
+ postcss-modules-local-by-default "1.2.0"
+ postcss-modules-scope "1.1.0"
+ postcss-modules-values "1.3.0"
+
+css-select-base-adapter@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7"
+ integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==
+
+css-select@^2.0.0, css-select@^2.0.2:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef"
+ integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==
+ dependencies:
+ boolbase "^1.0.0"
+ css-what "^3.2.1"
+ domutils "^1.7.0"
+ nth-check "^1.0.2"
+
+css-selector-tokenizer@^0.7.0:
+ version "0.7.2"
+ resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.2.tgz#11e5e27c9a48d90284f22d45061c303d7a25ad87"
+ integrity sha512-yj856NGuAymN6r8bn8/Jl46pR+OC3eEvAhfGYDUe7YPtTPAYrSSw4oAniZ9Y8T5B92hjhwTBLUen0/vKPxf6pw==
+ dependencies:
+ cssesc "^3.0.0"
+ fastparse "^1.1.2"
+ regexpu-core "^4.6.0"
+
css-tree@1.0.0-alpha.37:
version "1.0.0-alpha.37"
resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22"
@@ -2205,6 +2380,92 @@ css-tree@1.0.0-alpha.37:
mdn-data "2.0.4"
source-map "^0.6.1"
+css-tree@1.0.0-alpha.39:
+ version "1.0.0-alpha.39"
+ resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.39.tgz#2bff3ffe1bb3f776cf7eefd91ee5cba77a149eeb"
+ integrity sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==
+ dependencies:
+ mdn-data "2.0.6"
+ source-map "^0.6.1"
+
+css-what@^3.2.1:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.3.0.tgz#10fec696a9ece2e591ac772d759aacabac38cd39"
+ integrity sha512-pv9JPyatiPaQ6pf4OvD/dbfm0o5LviWmwxNWzblYf/1u9QZd0ihV+PMwy5jdQWQ3349kZmKEx9WXuSka2dM4cg==
+
+cssesc@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
+ integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
+
+cssnano-preset-default@^4.0.7:
+ version "4.0.7"
+ resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76"
+ integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==
+ dependencies:
+ css-declaration-sorter "^4.0.1"
+ cssnano-util-raw-cache "^4.0.1"
+ postcss "^7.0.0"
+ postcss-calc "^7.0.1"
+ postcss-colormin "^4.0.3"
+ postcss-convert-values "^4.0.1"
+ postcss-discard-comments "^4.0.2"
+ postcss-discard-duplicates "^4.0.2"
+ postcss-discard-empty "^4.0.1"
+ postcss-discard-overridden "^4.0.1"
+ postcss-merge-longhand "^4.0.11"
+ postcss-merge-rules "^4.0.3"
+ postcss-minify-font-values "^4.0.2"
+ postcss-minify-gradients "^4.0.2"
+ postcss-minify-params "^4.0.2"
+ postcss-minify-selectors "^4.0.2"
+ postcss-normalize-charset "^4.0.1"
+ postcss-normalize-display-values "^4.0.2"
+ postcss-normalize-positions "^4.0.2"
+ postcss-normalize-repeat-style "^4.0.2"
+ postcss-normalize-string "^4.0.2"
+ postcss-normalize-timing-functions "^4.0.2"
+ postcss-normalize-unicode "^4.0.1"
+ postcss-normalize-url "^4.0.1"
+ postcss-normalize-whitespace "^4.0.2"
+ postcss-ordered-values "^4.1.2"
+ postcss-reduce-initial "^4.0.3"
+ postcss-reduce-transforms "^4.0.2"
+ postcss-svgo "^4.0.2"
+ postcss-unique-selectors "^4.0.1"
+
+cssnano-util-get-arguments@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f"
+ integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=
+
+cssnano-util-get-match@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d"
+ integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=
+
+cssnano-util-raw-cache@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282"
+ integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==
+ dependencies:
+ postcss "^7.0.0"
+
+cssnano-util-same-parent@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3"
+ integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==
+
+cssnano@^4.1.10, cssnano@^4.1.8:
+ version "4.1.10"
+ resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2"
+ integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==
+ dependencies:
+ cosmiconfig "^5.0.0"
+ cssnano-preset-default "^4.0.7"
+ is-resolvable "^1.0.0"
+ postcss "^7.0.0"
+
csso-cli@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/csso-cli/-/csso-cli-3.0.0.tgz#a9bf3de54067c5ee471cbdb002da2b89ece9b06c"
@@ -2222,6 +2483,13 @@ csso@^4.0.1:
dependencies:
css-tree "1.0.0-alpha.37"
+csso@^4.0.2:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/csso/-/csso-4.0.3.tgz#0d9985dc852c7cc2b2cacfbbe1079014d1a8e903"
+ integrity sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==
+ dependencies:
+ css-tree "1.0.0-alpha.39"
+
cssom@^0.4.1:
version "0.4.4"
resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10"
@@ -2386,6 +2654,32 @@ doctrine@^3.0.0:
dependencies:
esutils "^2.0.2"
+dom-serializer@0:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51"
+ integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==
+ dependencies:
+ domelementtype "^2.0.1"
+ entities "^2.0.0"
+
+dom-serializer@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0"
+ integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==
+ dependencies:
+ domelementtype "^1.3.0"
+ entities "^1.1.1"
+
+domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f"
+ integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==
+
+domelementtype@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d"
+ integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==
+
domexception@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90"
@@ -2393,6 +2687,28 @@ domexception@^1.0.1:
dependencies:
webidl-conversions "^4.0.2"
+domhandler@^2.3.0:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803"
+ integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==
+ dependencies:
+ domelementtype "1"
+
+domutils@^1.5.1, domutils@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
+ integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==
+ dependencies:
+ dom-serializer "0"
+ domelementtype "1"
+
+dot-prop@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb"
+ integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==
+ dependencies:
+ is-obj "^2.0.0"
+
ecc-jsbn@~0.1.1:
version "0.1.2"
resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
@@ -2416,6 +2732,11 @@ emoji-regex@^8.0.0:
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
+emojis-list@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
+ integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
+
end-of-stream@^1.1.0:
version "1.4.4"
resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
@@ -2430,6 +2751,16 @@ enquirer@^2.3.5:
dependencies:
ansi-colors "^3.2.1"
+entities@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56"
+ integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==
+
+entities@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f"
+ integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==
+
error-ex@^1.2.0, error-ex@^1.3.1:
version "1.3.2"
resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
@@ -2454,6 +2785,23 @@ es-abstract@^1.17.0, es-abstract@^1.17.0-next.1:
string.prototype.trimleft "^2.1.1"
string.prototype.trimright "^2.1.1"
+es-abstract@^1.17.2, es-abstract@^1.17.5:
+ version "1.17.6"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a"
+ integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==
+ dependencies:
+ es-to-primitive "^1.2.1"
+ function-bind "^1.1.1"
+ has "^1.0.3"
+ has-symbols "^1.0.1"
+ is-callable "^1.2.0"
+ is-regex "^1.1.0"
+ object-inspect "^1.7.0"
+ object-keys "^1.1.1"
+ object.assign "^4.1.0"
+ string.prototype.trimend "^1.0.1"
+ string.prototype.trimstart "^1.0.1"
+
es-to-primitive@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
@@ -2687,6 +3035,11 @@ estraverse@^5.1.0:
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642"
integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==
+estree-walker@^0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362"
+ integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==
+
estree-walker@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700"
@@ -2820,6 +3173,11 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6:
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
+fastparse@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9"
+ integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==
+
fb-watchman@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85"
@@ -2984,6 +3342,13 @@ functional-red-black-tree@^1.0.1:
resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
+generic-names@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/generic-names/-/generic-names-2.0.1.tgz#f8a378ead2ccaa7a34f0317b05554832ae41b872"
+ integrity sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ==
+ dependencies:
+ loader-utils "^1.1.0"
+
gensync@^1.0.0-beta.1:
version "1.0.0-beta.1"
resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269"
@@ -3103,6 +3468,11 @@ has-ansi@^2.0.0:
dependencies:
ansi-regex "^2.0.0"
+has-flag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
+ integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=
+
has-flag@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
@@ -3149,7 +3519,7 @@ has-values@^1.0.0:
is-number "^3.0.0"
kind-of "^4.0.0"
-has@^1.0.3:
+has@^1.0.0, has@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
@@ -3161,16 +3531,41 @@ he@1.1.1:
resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd"
integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0=
+hex-color-regex@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e"
+ integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==
+
highlight.js@^10.7.3:
version "10.7.3"
resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531"
integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==
+highlightjs@^9.16.2:
+ version "9.16.2"
+ resolved "https://registry.yarnpkg.com/highlightjs/-/highlightjs-9.16.2.tgz#07ea6cc7c93340fc440734fb7abf28558f1f0fe1"
+ integrity sha512-FK1vmMj8BbEipEy8DLIvp71t5UsC7n2D6En/UfM/91PCwmOpj6f2iu0Y0coRC62KSRHHC+dquM2xMULV/X7NFg==
+
hosted-git-info@^2.1.4:
version "2.8.9"
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9"
integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==
+hsl-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e"
+ integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=
+
+hsla-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38"
+ integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg=
+
+html-comment-regex@^1.1.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7"
+ integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==
+
html-encoding-sniffer@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8"
@@ -3183,6 +3578,18 @@ html-escaper@^2.0.0:
resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.0.tgz#71e87f931de3fe09e56661ab9a29aadec707b491"
integrity sha512-a4u9BeERWGu/S8JiWEAQcdrg9v4QArtP9keViQjGMdff20fBdd8waotXaNmODqBe6uZ3Nafi7K/ho4gCQHV3Ig==
+htmlparser2@^3.10.1:
+ version "3.10.1"
+ resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f"
+ integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==
+ dependencies:
+ domelementtype "^1.3.1"
+ domhandler "^2.3.0"
+ domutils "^1.5.1"
+ entities "^1.1.1"
+ inherits "^2.0.1"
+ readable-stream "^3.1.1"
+
http-signature@~1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
@@ -3197,6 +3604,11 @@ human-signals@^1.1.1:
resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3"
integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==
+hyperapp@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/hyperapp/-/hyperapp-2.0.4.tgz#0be1bdfe46b28c73677adc408ce3a73f79cfd03f"
+ integrity sha512-1S0KIsyB97S/hH84GkuYjH/hmpnNQ546x16o+W7g/PnszxRPudJlwwGBKKnaRVL7x+dyevvuX4XLH67FooEt4w==
+
iconv-lite@0.4.24:
version "0.4.24"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
@@ -3204,6 +3616,11 @@ iconv-lite@0.4.24:
dependencies:
safer-buffer ">= 2.1.2 < 3"
+icss-replace-symbols@1.1.0, icss-replace-symbols@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded"
+ integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=
+
ignore@^4.0.6:
version "4.0.6"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
@@ -3214,6 +3631,21 @@ ignore@^5.1.1:
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf"
integrity sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==
+import-cwd@^2.0.0, import-cwd@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9"
+ integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=
+ dependencies:
+ import-from "^2.1.0"
+
+import-fresh@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546"
+ integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY=
+ dependencies:
+ caller-path "^2.0.0"
+ resolve-from "^3.0.0"
+
import-fresh@^3.0.0:
version "3.2.1"
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66"
@@ -3222,6 +3654,13 @@ import-fresh@^3.0.0:
parent-module "^1.0.0"
resolve-from "^4.0.0"
+import-from@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1"
+ integrity sha1-M1238qev/VOqpHHUuAId7ja387E=
+ dependencies:
+ resolve-from "^3.0.0"
+
import-local@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6"
@@ -3235,6 +3674,11 @@ imurmurhash@^0.1.4:
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
+indexes-of@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607"
+ integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc=
+
inflight@^1.0.4:
version "1.0.6"
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
@@ -3243,7 +3687,7 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
-inherits@2:
+inherits@2, inherits@^2.0.1, inherits@^2.0.3:
version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@@ -3260,6 +3704,27 @@ ip-regex@^2.1.0:
resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9"
integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=
+ipynb2html-core@0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/ipynb2html-core/-/ipynb2html-core-0.2.0.tgz#af3c89fb13358ee90e6f50d71c40f57fb8e82eff"
+ integrity sha512-UxFyJaN/+rChuUT5MG8+CX6nFpEw9LYBD1MyNy7xJZG5PMr9G+cA0EdsAo7OOYOjLROIIck4VIS9+o3Isu6FjQ==
+
+ipynb2html@0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/ipynb2html/-/ipynb2html-0.2.0.tgz#9b0a6ba08c7a9d4c549faffaf13d8fcfc316ee08"
+ integrity sha512-WZOMF8CiXyotf7wHxvDRUOJYc3bkyDP/yjhWCrslEk0vLncdIbg8qKSaC51dOdXwrMM1Wg0t87xy8OlWuPbBag==
+ dependencies:
+ anser "^1.4.9"
+ highlightjs "^9.16.2"
+ ipynb2html-core "0.2.0"
+ katex "^0.11.1"
+ marked "^0.8.2"
+
+is-absolute-url@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6"
+ integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=
+
is-accessor-descriptor@^0.1.6:
version "0.1.6"
resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
@@ -3279,6 +3744,11 @@ is-arrayish@^0.2.1:
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
+is-arrayish@^0.3.1:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
+ integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
+
is-binary-path@~2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
@@ -3296,6 +3766,11 @@ is-callable@^1.1.4, is-callable@^1.1.5:
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab"
integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==
+is-callable@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb"
+ integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==
+
is-ci@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c"
@@ -3303,6 +3778,18 @@ is-ci@^2.0.0:
dependencies:
ci-info "^2.0.0"
+is-color-stop@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345"
+ integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=
+ dependencies:
+ css-color-names "^0.0.4"
+ hex-color-regex "^1.1.0"
+ hsl-regex "^1.0.0"
+ hsla-regex "^1.0.0"
+ rgb-regex "^1.0.1"
+ rgba-regex "^1.0.0"
+
is-data-descriptor@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
@@ -3340,6 +3827,11 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2:
is-data-descriptor "^1.0.0"
kind-of "^6.0.2"
+is-directory@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1"
+ integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=
+
is-extendable@^0.1.0, is-extendable@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
@@ -3396,6 +3888,11 @@ is-number@^7.0.0:
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+is-obj@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982"
+ integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==
+
is-plain-obj@^1.0.0, is-plain-obj@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
@@ -3422,6 +3919,18 @@ is-regex@^1.0.5:
dependencies:
has "^1.0.3"
+is-regex@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.0.tgz#ece38e389e490df0dc21caea2bd596f987f767ff"
+ integrity sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==
+ dependencies:
+ has-symbols "^1.0.1"
+
+is-resolvable@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88"
+ integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==
+
is-stream@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
@@ -3437,6 +3946,13 @@ is-string@^1.0.5:
resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6"
integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==
+is-svg@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75"
+ integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==
+ dependencies:
+ html-comment-regex "^1.1.0"
+
is-symbol@^1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937"
@@ -4054,6 +4570,13 @@ jsprim@^1.2.2:
json-schema "0.2.3"
verror "1.10.0"
+katex@^0.11.1:
+ version "0.11.1"
+ resolved "https://registry.yarnpkg.com/katex/-/katex-0.11.1.tgz#df30ca40c565c9df01a466a00d53e079e84ffaa2"
+ integrity sha512-5oANDICCTX0NqYIyAiFCCwjQ7ERu3DQG2JFHLbYOf+fXaMoH8eg/zOq5WSYJsKMi/QebW+Eh3gSM+oss1H/bww==
+ dependencies:
+ commander "^2.19.0"
+
katex@^0.13.11:
version "0.13.11"
resolved "https://registry.yarnpkg.com/katex/-/katex-0.13.11.tgz#66138ebf173f25ef130cd3a3ea3ea1d12a3f1362"
@@ -4146,6 +4669,21 @@ lines-and-columns@^1.1.6:
resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=
+livereload-js@^3.1.0:
+ version "3.2.3"
+ resolved "https://registry.yarnpkg.com/livereload-js/-/livereload-js-3.2.3.tgz#64beff07ce5b2a74485d1a08c2ec04ac68e021bc"
+ integrity sha512-dXL/WgTGI2K3oeYX/z1lngFXSKtjCB2j7n9WSSluoU6/6+N4LWNoMiCBFNgn8dh3luBn4JBajVSvM5I7Xn6SLA==
+
+livereload@^0.9.1:
+ version "0.9.1"
+ resolved "https://registry.yarnpkg.com/livereload/-/livereload-0.9.1.tgz#65125dabdf2db4fd3f1169e953fe56e3bcc6f477"
+ integrity sha512-9g7sua11kkyZNo2hLRCG3LuZZwqexoyEyecSlV8cAsfAVVCZqLzVir6XDqmH0r+Vzgnd5LrdHDMyjtFnJQLAYw==
+ dependencies:
+ chokidar "^3.3.0"
+ livereload-js "^3.1.0"
+ opts ">= 1.2.0"
+ ws "^6.2.1"
+
load-json-file@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8"
@@ -4177,6 +4715,15 @@ load-json-file@^5.0.0:
strip-bom "^3.0.0"
type-fest "^0.3.0"
+loader-utils@^1.1.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613"
+ integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==
+ dependencies:
+ big.js "^5.2.2"
+ emojis-list "^3.0.0"
+ json5 "^1.0.1"
+
locate-path@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
@@ -4200,7 +4747,12 @@ locate-path@^5.0.0:
dependencies:
p-locate "^4.1.0"
-lodash.memoize@4.x:
+lodash.camelcase@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
+ integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY=
+
+lodash.memoize@4.x, lodash.memoize@^4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=
@@ -4210,10 +4762,15 @@ lodash.sortby@^4.7.0:
resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=
+lodash.uniq@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
+ integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
+
lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4:
- version "4.17.21"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
- integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
+ version "4.17.15"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
+ integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
lolex@^5.0.0:
version "5.1.2"
@@ -4286,6 +4843,11 @@ markdown-table@1.1.3:
resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.3.tgz#9fcb69bcfdb8717bfd0398c6ec2d93036ef8de60"
integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==
+marked@^0.8.2:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/marked/-/marked-0.8.2.tgz#4faad28d26ede351a7a1aaa5fec67915c869e355"
+ integrity sha512-EGwzEeCcLniFX51DhTpmTom+dSA/MG/OBUDjnWtHbEnjAH180VzUeAw+oE4+Zv+CoYBWyRlYOTR0N8SO9R1PVw==
+
marked@^2.0.7:
version "2.0.7"
resolved "https://registry.yarnpkg.com/marked/-/marked-2.0.7.tgz#bc5b857a09071b48ce82a1f7304913a993d4b7d1"
@@ -4296,6 +4858,11 @@ mdn-data@2.0.4:
resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b"
integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==
+mdn-data@2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.6.tgz#852dc60fcaa5daa2e8cf6c9189c440ed3e042978"
+ integrity sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==
+
memorystream@^0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2"
@@ -4345,6 +4912,11 @@ mime-types@^2.1.12, mime-types@~2.1.19:
dependencies:
mime-db "1.43.0"
+mime@>=2.0.3:
+ version "2.4.6"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1"
+ integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==
+
mimic-fn@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
@@ -4415,6 +4987,18 @@ mkdirp@^0.3.5:
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.5.tgz#de3e5f8961c88c787ee1368df849ac4413eca8d7"
integrity sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc=
+mkdirp@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
+ integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
+
+mkdirp@~0.5.1:
+ version "0.5.5"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
+ integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
+ dependencies:
+ minimist "^1.2.5"
+
ms@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
@@ -4519,6 +5103,11 @@ normalize-path@^3.0.0, normalize-path@~3.0.0:
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
+normalize-url@^3.0.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559"
+ integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==
+
npm-normalize-package-bin@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2"
@@ -4553,6 +5142,13 @@ npm-run-path@^4.0.0:
dependencies:
path-key "^3.0.0"
+nth-check@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c"
+ integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==
+ dependencies:
+ boolbase "~1.0.0"
+
nwsapi@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7"
@@ -4599,6 +5195,14 @@ object.assign@^4.1.0:
has-symbols "^1.0.0"
object-keys "^1.0.11"
+object.getownpropertydescriptors@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649"
+ integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.17.0-next.1"
+
object.pick@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
@@ -4606,7 +5210,7 @@ object.pick@^1.3.0:
dependencies:
isobject "^3.0.1"
-object.values@^1.1.1:
+object.values@^1.1.0, object.values@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e"
integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==
@@ -4630,6 +5234,11 @@ onetime@^5.1.0:
dependencies:
mimic-fn "^2.1.0"
+opener@1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed"
+ integrity sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==
+
optionator@^0.8.1:
version "0.8.3"
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495"
@@ -4654,6 +5263,11 @@ optionator@^0.9.1:
type-check "^0.4.0"
word-wrap "^1.2.3"
+"opts@>= 1.2.0":
+ version "1.2.7"
+ resolved "https://registry.yarnpkg.com/opts/-/opts-1.2.7.tgz#4de4721d592c96901dae623a438c988e9ea7779f"
+ integrity sha512-hwZhzGGG/GQ7igxAVFOEun2N4fWul31qE9nfBdCnZGQCB5+L7tN9xZ+94B4aUpLOJx/of3zZs5XsuubayQYQjA==
+
os-tmpdir@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
@@ -4716,6 +5330,11 @@ p-locate@^4.1.0:
dependencies:
p-limit "^2.2.0"
+p-queue@^2.4.2:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-2.4.2.tgz#03609826682b743be9a22dba25051bd46724fc34"
+ integrity sha512-n8/y+yDJwBjoLQe1GSJbbaYQLTI7QHNZI2+rpmCDbe++WLf9HC3gf6iqj5yfPAV71W4UF3ql5W1+UBPXoXTxng==
+
p-try@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
@@ -4840,7 +5459,7 @@ picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.0.7:
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a"
integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA==
-picomatch@^2.2.2:
+picomatch@^2.2.1, picomatch@^2.2.2:
version "2.2.2"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
@@ -4896,6 +5515,384 @@ posix-character-classes@^0.1.0:
resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
+postcss-calc@^7.0.1:
+ version "7.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.2.tgz#504efcd008ca0273120568b0792b16cdcde8aac1"
+ integrity sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ==
+ dependencies:
+ postcss "^7.0.27"
+ postcss-selector-parser "^6.0.2"
+ postcss-value-parser "^4.0.2"
+
+postcss-colormin@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381"
+ integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==
+ dependencies:
+ browserslist "^4.0.0"
+ color "^3.0.0"
+ has "^1.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-convert-values@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f"
+ integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==
+ dependencies:
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-discard-comments@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033"
+ integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==
+ dependencies:
+ postcss "^7.0.0"
+
+postcss-discard-duplicates@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb"
+ integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==
+ dependencies:
+ postcss "^7.0.0"
+
+postcss-discard-empty@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765"
+ integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==
+ dependencies:
+ postcss "^7.0.0"
+
+postcss-discard-overridden@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57"
+ integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==
+ dependencies:
+ postcss "^7.0.0"
+
+postcss-inline-svg@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-inline-svg/-/postcss-inline-svg-4.1.0.tgz#54e9199632242cc181af5b55f0f0691ad1020f95"
+ integrity sha512-0pYBJyoQ9/sJViYRc1cNOOTM7DYh0/rmASB0TBeRmWkG8YFK2tmgdkfjHkbRma1iFtBFKFHZFsHwRTDZTMKzSQ==
+ dependencies:
+ css-select "^2.0.2"
+ dom-serializer "^0.1.1"
+ htmlparser2 "^3.10.1"
+ postcss "^7.0.17"
+ postcss-value-parser "^4.0.0"
+
+postcss-load-config@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.0.tgz#c84d692b7bb7b41ddced94ee62e8ab31b417b003"
+ integrity sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==
+ dependencies:
+ cosmiconfig "^5.0.0"
+ import-cwd "^2.0.0"
+
+postcss-merge-longhand@^4.0.11:
+ version "4.0.11"
+ resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24"
+ integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==
+ dependencies:
+ css-color-names "0.0.4"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+ stylehacks "^4.0.0"
+
+postcss-merge-rules@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650"
+ integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==
+ dependencies:
+ browserslist "^4.0.0"
+ caniuse-api "^3.0.0"
+ cssnano-util-same-parent "^4.0.0"
+ postcss "^7.0.0"
+ postcss-selector-parser "^3.0.0"
+ vendors "^1.0.0"
+
+postcss-minify-font-values@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6"
+ integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==
+ dependencies:
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-minify-gradients@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471"
+ integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==
+ dependencies:
+ cssnano-util-get-arguments "^4.0.0"
+ is-color-stop "^1.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-minify-params@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874"
+ integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==
+ dependencies:
+ alphanum-sort "^1.0.0"
+ browserslist "^4.0.0"
+ cssnano-util-get-arguments "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+ uniqs "^2.0.0"
+
+postcss-minify-selectors@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8"
+ integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==
+ dependencies:
+ alphanum-sort "^1.0.0"
+ has "^1.0.0"
+ postcss "^7.0.0"
+ postcss-selector-parser "^3.0.0"
+
+postcss-modules-extract-imports@1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz#b614c9720be6816eaee35fb3a5faa1dba6a05ddb"
+ integrity sha1-thTJcgvmgW6u41+zpfqh26agXds=
+ dependencies:
+ postcss "^6.0.1"
+
+postcss-modules-local-by-default@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069"
+ integrity sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=
+ dependencies:
+ css-selector-tokenizer "^0.7.0"
+ postcss "^6.0.1"
+
+postcss-modules-scope@1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90"
+ integrity sha1-1upkmUx5+XtipytCb75gVqGUu5A=
+ dependencies:
+ css-selector-tokenizer "^0.7.0"
+ postcss "^6.0.1"
+
+postcss-modules-values@1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20"
+ integrity sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=
+ dependencies:
+ icss-replace-symbols "^1.1.0"
+ postcss "^6.0.1"
+
+postcss-modules@^1.4.1:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/postcss-modules/-/postcss-modules-1.5.0.tgz#08da6ce43fcfadbc685a021fe6ed30ef929f0bcc"
+ integrity sha512-KiAihzcV0TxTTNA5OXreyIXctuHOfR50WIhqBpc8pe0Q5dcs/Uap9EVlifOI9am7zGGdGOJQ6B1MPYKo2UxgOg==
+ dependencies:
+ css-modules-loader-core "^1.1.0"
+ generic-names "^2.0.1"
+ lodash.camelcase "^4.3.0"
+ postcss "^7.0.1"
+ string-hash "^1.1.1"
+
+postcss-nesting@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052"
+ integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==
+ dependencies:
+ postcss "^7.0.2"
+
+postcss-normalize-charset@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4"
+ integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==
+ dependencies:
+ postcss "^7.0.0"
+
+postcss-normalize-display-values@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a"
+ integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==
+ dependencies:
+ cssnano-util-get-match "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-positions@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f"
+ integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==
+ dependencies:
+ cssnano-util-get-arguments "^4.0.0"
+ has "^1.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-repeat-style@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c"
+ integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==
+ dependencies:
+ cssnano-util-get-arguments "^4.0.0"
+ cssnano-util-get-match "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-string@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c"
+ integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==
+ dependencies:
+ has "^1.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-timing-functions@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9"
+ integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==
+ dependencies:
+ cssnano-util-get-match "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-unicode@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb"
+ integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==
+ dependencies:
+ browserslist "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-url@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1"
+ integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==
+ dependencies:
+ is-absolute-url "^2.0.0"
+ normalize-url "^3.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-whitespace@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82"
+ integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==
+ dependencies:
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-ordered-values@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee"
+ integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==
+ dependencies:
+ cssnano-util-get-arguments "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-reduce-initial@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df"
+ integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==
+ dependencies:
+ browserslist "^4.0.0"
+ caniuse-api "^3.0.0"
+ has "^1.0.0"
+ postcss "^7.0.0"
+
+postcss-reduce-transforms@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29"
+ integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==
+ dependencies:
+ cssnano-util-get-match "^4.0.0"
+ has "^1.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-selector-parser@^3.0.0:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270"
+ integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==
+ dependencies:
+ dot-prop "^5.2.0"
+ indexes-of "^1.0.1"
+ uniq "^1.0.1"
+
+postcss-selector-parser@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c"
+ integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==
+ dependencies:
+ cssesc "^3.0.0"
+ indexes-of "^1.0.1"
+ uniq "^1.0.1"
+
+postcss-sort-media-queries@^1.6.24:
+ version "1.6.24"
+ resolved "https://registry.yarnpkg.com/postcss-sort-media-queries/-/postcss-sort-media-queries-1.6.24.tgz#42cf1014e33005c52c07701540a367e7b3d6f96c"
+ integrity sha512-UPg6X/GzE0C1o5N41awn+UaD5lUL3c0qSh1FbZcG89zLvxnSf5Jd1XDK1qjXxQz3zgRyLzJrVhiOXl58xLuh5w==
+ dependencies:
+ postcss "^7.0.32"
+ sort-css-media-queries "1.5.0"
+
+postcss-svgo@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258"
+ integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==
+ dependencies:
+ is-svg "^3.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+ svgo "^1.0.0"
+
+postcss-unique-selectors@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac"
+ integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==
+ dependencies:
+ alphanum-sort "^1.0.0"
+ postcss "^7.0.0"
+ uniqs "^2.0.0"
+
+postcss-value-parser@^3.0.0:
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281"
+ integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==
+
+postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb"
+ integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==
+
+postcss@6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.1.tgz#000dbd1f8eef217aa368b9a212c5fc40b2a8f3f2"
+ integrity sha1-AA29H47vIXqjaLmiEsX8QLKo8/I=
+ dependencies:
+ chalk "^1.1.3"
+ source-map "^0.5.6"
+ supports-color "^3.2.3"
+
+postcss@^6.0.1:
+ version "6.0.23"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324"
+ integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==
+ dependencies:
+ chalk "^2.4.1"
+ source-map "^0.6.1"
+ supports-color "^5.4.0"
+
+postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.27, postcss@^7.0.32:
+ version "7.0.32"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.32.tgz#4310d6ee347053da3433db2be492883d62cec59d"
+ integrity sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==
+ dependencies:
+ chalk "^2.4.2"
+ source-map "^0.6.1"
+ supports-color "^6.1.0"
+
postinstall-postinstall@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz#4f7f77441ef539d1512c40bd04c71b06a4704ca3"
@@ -4941,6 +5938,11 @@ progress@^2.0.0:
resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
+promise.series@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/promise.series/-/promise.series-0.2.0.tgz#2cc7ebe959fc3a6619c04ab4dbdc9e452d864bbd"
+ integrity sha1-LMfr6Vn8OmYZwEq029yeRS2GS70=
+
prompts@^2.0.1:
version "2.3.0"
resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.0.tgz#a444e968fa4cc7e86689a74050685ac8006c4cc4"
@@ -4972,6 +5974,11 @@ punycode@^2.1.0, punycode@^2.1.1:
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
+q@^1.1.2:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
+ integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=
+
qs@~6.5.2:
version "6.5.2"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
@@ -5060,6 +6067,15 @@ read-pkg@^5.2.0:
parse-json "^5.0.0"
type-fest "^0.6.0"
+readable-stream@^3.1.1:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
+ integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
+ dependencies:
+ inherits "^2.0.3"
+ string_decoder "^1.1.1"
+ util-deprecate "^1.0.1"
+
readdir-scoped-modules@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309"
@@ -5077,6 +6093,13 @@ readdirp@~3.3.0:
dependencies:
picomatch "^2.0.7"
+readdirp@~3.4.0:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada"
+ integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==
+ dependencies:
+ picomatch "^2.2.1"
+
realpath-native@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-2.0.0.tgz#7377ac429b6e1fd599dc38d08ed942d0d7beb866"
@@ -5242,6 +6265,11 @@ require-main-filename@^2.0.0:
resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
+reserved-words@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/reserved-words/-/reserved-words-0.1.2.tgz#00a0940f98cd501aeaaac316411d9adc52b31ab1"
+ integrity sha1-AKCUD5jNUBrqqsMWQR2a3FKzGrE=
+
resolve-cwd@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d"
@@ -5249,6 +6277,11 @@ resolve-cwd@^3.0.0:
dependencies:
resolve-from "^5.0.0"
+resolve-from@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
+ integrity sha1-six699nWiBvItuZTM17rywoYh0g=
+
resolve-from@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
@@ -5283,7 +6316,7 @@ resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.1
dependencies:
path-parse "^1.0.6"
-resolve@^1.14.2, resolve@^1.17.0:
+resolve@^1.14.2, resolve@^1.17.0, resolve@^1.5.0:
version "1.17.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444"
integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==
@@ -5295,6 +6328,16 @@ ret@~0.1.10:
resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
+rgb-regex@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1"
+ integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE=
+
+rgba-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3"
+ integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=
+
rimraf@2.6.3:
version "2.6.3"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
@@ -5328,6 +6371,11 @@ rollup-plugin-add-git-msg@^1.1.0:
resolved "https://registry.yarnpkg.com/rollup-plugin-add-git-msg/-/rollup-plugin-add-git-msg-1.1.0.tgz#064241be1bbaf6e1a99294b149ba9fe86e2554f4"
integrity sha512-f714AUl4sTSkIIzy9HFbOE3JsjM7x6GaQAfCKnWUwsV7qnDzW4G7gKsSKK3JTl37b9L1mZGsRqgCUtuv+1j5AQ==
+rollup-plugin-conditional@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/rollup-plugin-conditional/-/rollup-plugin-conditional-3.1.2.tgz#396f81b77d0db31dc3eeb88774ff9411f4de9f37"
+ integrity sha512-1QKQ8gz3MZea4mieMocJC2pua2BhAt7RF19/wURxEvjDwD5l2y/Bkipix45CvtzDC400biBqJLNFhtB+I6qnoA==
+
rollup-plugin-executable@^1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/rollup-plugin-executable/-/rollup-plugin-executable-1.6.0.tgz#ec10622751a81565d854daf0d23f59ef69b9883f"
@@ -5335,6 +6383,13 @@ rollup-plugin-executable@^1.6.0:
dependencies:
"@babel/runtime" "^7.9.6"
+rollup-plugin-livereload@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/rollup-plugin-livereload/-/rollup-plugin-livereload-1.3.0.tgz#8da90df13df6502b9d982997d6ac871092f15fdd"
+ integrity sha512-abyqXaB21+nFHo+vJULBqfzNx6zXABC19UyvqgDfdoxR/8pFAd041GO+GIUe8ZYC2DbuMUmioh1Lvbk14YLZgw==
+ dependencies:
+ livereload "^0.9.1"
+
rollup-plugin-node-externals@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/rollup-plugin-node-externals/-/rollup-plugin-node-externals-2.2.0.tgz#23946e8c0fdd0e321cc3f225d4cebc3d819d17c4"
@@ -5350,6 +6405,34 @@ rollup-plugin-node-license@^0.2.0:
license-checker "16.0.0"
markdown-table "1.1.3"
+rollup-plugin-postcss@2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/rollup-plugin-postcss/-/rollup-plugin-postcss-2.0.6.tgz#7e1c4e299e42cca170de7b789ecdd405a154c5a6"
+ integrity sha512-DTfIoKoC6ljQA4MmrPVbjnumWFx9tZAylDnduIhwJy9JQsq0iiVFmHy0c4cM//h7Auhf1RGB3FLqFuyNUcnExQ==
+ dependencies:
+ chalk "^2.4.2"
+ concat-with-sourcemaps "^1.0.5"
+ cssnano "^4.1.8"
+ import-cwd "^2.1.0"
+ p-queue "^2.4.2"
+ pify "^3.0.0"
+ postcss "^7.0.14"
+ postcss-load-config "^2.0.0"
+ postcss-modules "^1.4.1"
+ promise.series "^0.2.0"
+ reserved-words "^0.1.2"
+ resolve "^1.5.0"
+ rollup-pluginutils "^2.0.1"
+ style-inject "^0.3.0"
+
+rollup-plugin-serve@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/rollup-plugin-serve/-/rollup-plugin-serve-1.0.1.tgz#2da2a784a916c5564609c7696cd9dacdbf17f6cc"
+ integrity sha512-bni0pb4s1YLvn1xBmj+dH1OsLdp8gWA4zqh3yuEtT6/YHhg3nDneGU2GwMcRDQwY2tXzuI0uSeAlF1rY+ODitg==
+ dependencies:
+ mime ">=2.0.3"
+ opener "1"
+
rollup-plugin-terser@^6.1.0:
version "6.1.0"
resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-6.1.0.tgz#071866585aea104bfbb9dd1019ac523e63c81e45"
@@ -5371,6 +6454,13 @@ rollup-plugin-typescript2@^0.27.1:
resolve "1.15.1"
tslib "1.11.2"
+rollup-pluginutils@^2.0.1:
+ version "2.8.2"
+ resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e"
+ integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==
+ dependencies:
+ estree-walker "^0.6.1"
+
rollup@^2.17.1:
version "2.17.1"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.17.1.tgz#d01a27c1b76e42efe2cd786609589f6332e81aa6"
@@ -5388,7 +6478,7 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.2:
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519"
integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==
-safe-buffer@^5.1.0:
+safe-buffer@^5.1.0, safe-buffer@~5.2.0:
version "5.2.1"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
@@ -5425,6 +6515,11 @@ sane@^4.0.3:
minimist "^1.1.1"
walker "~1.0.5"
+sax@~1.2.4:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
+ integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
+
saxes@^3.1.9:
version "3.1.11"
resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b"
@@ -5513,6 +6608,13 @@ signal-exit@^3.0.0, signal-exit@^3.0.2:
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
+simple-swizzle@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
+ integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=
+ dependencies:
+ is-arrayish "^0.3.1"
+
sisteransi@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.4.tgz#386713f1ef688c7c0304dc4c0632898941cad2e3"
@@ -5572,6 +6674,11 @@ snapdragon@^0.8.1:
source-map-resolve "^0.5.0"
use "^3.1.0"
+sort-css-media-queries@1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/sort-css-media-queries/-/sort-css-media-queries-1.5.0.tgz#8f605ad372caad0b81be010311882c046e738093"
+ integrity sha512-QofNE7CEVH1AKdhS7L9IPbV9UtyQYNXyw++8lC+xG6iOLlpzsmncZRiKbihTAESvZ8wOhwnPoesHbMrehrQyyw==
+
sort-keys@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128"
@@ -5756,6 +6863,11 @@ sshpk@^1.7.0:
safer-buffer "^2.0.2"
tweetnacl "~0.14.0"
+stable@^0.1.8:
+ version "0.1.8"
+ resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
+ integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
+
stack-utils@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8"
@@ -5774,6 +6886,11 @@ stealthy-require@^1.1.1:
resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b"
integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=
+string-hash@^1.1.1:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b"
+ integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=
+
string-length@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/string-length/-/string-length-3.1.0.tgz#107ef8c23456e187a8abd4a61162ff4ac6e25837"
@@ -5808,6 +6925,14 @@ string.prototype.padend@^3.0.0:
define-properties "^1.1.3"
es-abstract "^1.17.0-next.1"
+string.prototype.trimend@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913"
+ integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.17.5"
+
string.prototype.trimleft@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74"
@@ -5824,6 +6949,21 @@ string.prototype.trimright@^2.1.1:
define-properties "^1.1.3"
function-bind "^1.1.1"
+string.prototype.trimstart@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54"
+ integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.17.5"
+
+string_decoder@^1.1.1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
+ integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
+ dependencies:
+ safe-buffer "~5.2.0"
+
strip-ansi@^0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.3.0.tgz#25f48ea22ca79187f3174a4db8759347bb126220"
@@ -5877,6 +7017,20 @@ strip-json-comments@^3.1.0:
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180"
integrity sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==
+style-inject@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/style-inject/-/style-inject-0.3.0.tgz#d21c477affec91811cc82355832a700d22bf8dd3"
+ integrity sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw==
+
+stylehacks@^4.0.0:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5"
+ integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==
+ dependencies:
+ browserslist "^4.0.0"
+ postcss "^7.0.0"
+ postcss-selector-parser "^3.0.0"
+
supports-color@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a"
@@ -5887,13 +7041,27 @@ supports-color@^2.0.0:
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
-supports-color@^5.3.0:
+supports-color@^3.2.3:
+ version "3.2.3"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6"
+ integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=
+ dependencies:
+ has-flag "^1.0.0"
+
+supports-color@^5.3.0, supports-color@^5.4.0:
version "5.5.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
dependencies:
has-flag "^3.0.0"
+supports-color@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3"
+ integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==
+ dependencies:
+ has-flag "^3.0.0"
+
supports-color@^7.0.0, supports-color@^7.1.0:
version "7.1.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1"
@@ -5909,6 +7077,25 @@ supports-hyperlinks@^2.0.0:
has-flag "^4.0.0"
supports-color "^7.0.0"
+svgo@^1.0.0:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167"
+ integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==
+ dependencies:
+ chalk "^2.4.1"
+ coa "^2.0.2"
+ css-select "^2.0.0"
+ css-select-base-adapter "^0.1.1"
+ css-tree "1.0.0-alpha.37"
+ csso "^4.0.2"
+ js-yaml "^3.13.1"
+ mkdirp "~0.5.1"
+ object.values "^1.1.0"
+ sax "~1.2.4"
+ stable "^0.1.8"
+ unquote "~1.1.1"
+ util.promisify "~1.0.0"
+
symbol-tree@^3.2.2:
version "3.2.4"
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
@@ -5982,6 +7169,11 @@ through@2:
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
+timsort@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4"
+ integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=
+
tiny-glob@^0.2.6:
version "0.2.6"
resolved "https://registry.yarnpkg.com/tiny-glob/-/tiny-glob-0.2.6.tgz#9e056e169d9788fe8a734dfa1ff02e9b92ed7eda"
@@ -6245,11 +7437,26 @@ union-value@^1.0.0:
is-extendable "^0.1.1"
set-value "^2.0.1"
+uniq@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
+ integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=
+
+uniqs@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02"
+ integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI=
+
universalify@^0.1.0:
version "0.1.2"
resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
+unquote@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544"
+ integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=
+
unset-value@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
@@ -6275,11 +7482,26 @@ use@^3.1.0:
resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
+util-deprecate@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+ integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
+
util-extend@^1.0.1:
version "1.0.3"
resolved "https://registry.yarnpkg.com/util-extend/-/util-extend-1.0.3.tgz#a7c216d267545169637b3b6edc6ca9119e2ff93f"
integrity sha1-p8IW0mdUUWljeztu3GypEZ4v+T8=
+util.promisify@~1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee"
+ integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.17.2"
+ has-symbols "^1.0.1"
+ object.getownpropertydescriptors "^2.1.0"
+
uuid@^3.3.2:
version "3.4.0"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
@@ -6307,6 +7529,11 @@ validate-npm-package-license@^3.0.1:
spdx-correct "^3.0.0"
spdx-expression-parse "^3.0.0"
+vendors@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e"
+ integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==
+
verror@1.10.0:
version "1.10.0"
resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
@@ -6450,6 +7677,13 @@ write@1.0.3:
dependencies:
mkdirp "^0.5.1"
+ws@^6.2.1:
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb"
+ integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==
+ dependencies:
+ async-limiter "~1.0.0"
+
ws@^7.0.0:
version "7.4.6"
resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c"