Bundle size (#844)

* just load SketchPicker

* remove colornames package

* load other highlight.js modes lazily

* add bundle analyzer hook

* only load modes once per session

* fix up modes loaded

* fix up
main
Michael Fix 5 years ago committed by GitHub
parent 61e9951e37
commit ecaf48b30c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1,5 +1,4 @@
import React from 'react' import React from 'react'
import colornames from 'colornames'
import ImagePicker from './ImagePicker' import ImagePicker from './ImagePicker'
import ColorPicker from './ColorPicker' import ColorPicker from './ColorPicker'
@ -9,7 +8,7 @@ import { COLORS, DEFAULT_BG_COLOR } from '../lib/constants'
import { capitalize, stringifyRGBA } from '../lib/util' import { capitalize, stringifyRGBA } from '../lib/util'
function validateColor(str) { function validateColor(str) {
if (/#\d{3,6}|rgba{0,1}\(.*?\)/gi.test(str) || colornames(str)) { if (/#\d{3,6}|rgba{0,1}\(.*?\)/gi.test(str) || /\w+/gi.test(str)) {
return str return str
} }
} }

@ -1,10 +1,13 @@
import React from 'react' import React from 'react'
import dynamic from 'next/dynamic' import dynamic from 'next/dynamic'
import * as hljs from 'highlight.js' import hljs from 'highlight.js/lib/highlight'
import javascript from 'highlight.js/lib/languages/javascript'
import debounce from 'lodash.debounce' import debounce from 'lodash.debounce'
import ms from 'ms' import ms from 'ms'
import { Controlled as CodeMirror } from 'react-codemirror2' import { Controlled as CodeMirror } from 'react-codemirror2'
hljs.registerLanguage('javascript', javascript)
import SpinnerWrapper from './SpinnerWrapper' import SpinnerWrapper from './SpinnerWrapper'
import WindowControls from './WindowControls' import WindowControls from './WindowControls'
@ -337,19 +340,35 @@ class Carbon extends React.PureComponent {
} }
} }
const modesLoaded = new Set() let modesLoaded = false
function useModeLoader() { function useModeLoader() {
React.useEffect(() => { React.useEffect(() => {
LANGUAGES.filter(language => language.mode !== 'auto' && language.mode !== 'text').forEach( if (!modesLoaded) {
language => { LANGUAGES.filter(
if (language.mode && !modesLoaded.has(language.mode)) { language => language.mode && language.mode !== 'auto' && language.mode !== 'text'
).forEach(language => {
language.custom language.custom
? require(`../lib/custom/modes/${language.mode}`) ? require(`../lib/custom/modes/${language.mode}`)
: require(`codemirror/mode/${language.mode}/${language.mode}`) : require(`codemirror/mode/${language.mode}/${language.mode}`)
modesLoaded.add(language.mode) })
modesLoaded = true
} }
}, [])
}
let highLightsLoaded = false
function useHighlightLoader() {
React.useEffect(() => {
if (!highLightsLoaded) {
import('../lib/highlight-languages')
.then(res => {
// console.log(res.default)
res.default.map(config => hljs.registerLanguage(config[0], config[1]))
})
.then(() => {
highLightsLoaded = true
})
} }
)
}, []) }, [])
} }
@ -410,6 +429,7 @@ function useGutterClickHandler(props) {
function CarbonContainer(props, ref) { function CarbonContainer(props, ref) {
useModeLoader() useModeLoader()
useHighlightLoader()
const onGutterClick = useGutterClickHandler(props) const onGutterClick = useGutterClickHandler(props)
return <Carbon {...props} innerRef={ref} onGutterClick={onGutterClick} /> return <Carbon {...props} innerRef={ref} onGutterClick={onGutterClick} />

@ -1,5 +1,5 @@
import React from 'react' import React from 'react'
import { SketchPicker } from 'react-color' import SketchPicker from 'react-color/lib/Sketch'
import { COLORS } from '../lib/constants' import { COLORS } from '../lib/constants'

@ -1,7 +1,6 @@
// Theirs // Theirs
import React from 'react' import React from 'react'
import domtoimage from 'dom-to-image' import domtoimage from 'dom-to-image'
import dynamic from 'next/dynamic'
import Dropzone from 'dropperx' import Dropzone from 'dropperx'
// Ours // Ours
@ -10,6 +9,7 @@ import Dropdown from './Dropdown'
import Settings from './Settings' import Settings from './Settings'
import Toolbar from './Toolbar' import Toolbar from './Toolbar'
import Overlay from './Overlay' import Overlay from './Overlay'
import BackgroundSelect from './BackgroundSelect'
import Carbon from './Carbon' import Carbon from './Carbon'
import ExportMenu from './ExportMenu' import ExportMenu from './ExportMenu'
import Themes from './Themes' import Themes from './Themes'
@ -34,10 +34,6 @@ import LanguageIcon from './svg/Language'
const languageIcon = <LanguageIcon /> const languageIcon = <LanguageIcon />
const BackgroundSelect = dynamic(() => import('./BackgroundSelect'), {
loading: () => null
})
const getConfig = omit(['code']) const getConfig = omit(['code'])
class Editor extends React.Component { class Editor extends React.Component {

@ -599,12 +599,14 @@ export const LANGUAGES = [
name: 'Apache', name: 'Apache',
mode: 'apache', mode: 'apache',
mime: 'text/apache', mime: 'text/apache',
custom: true custom: true,
highlight: true
}, },
{ {
name: 'Bash', name: 'Bash',
mode: 'shell', mode: 'shell',
mime: 'application/x-sh' mime: 'application/x-sh',
highlight: true
}, },
{ {
name: 'Plain Text', name: 'Plain Text',
@ -620,17 +622,20 @@ export const LANGUAGES = [
name: 'C++', name: 'C++',
mode: 'clike', mode: 'clike',
mime: 'text/x-c++src', mime: 'text/x-c++src',
short: 'cpp' short: 'cpp',
highlight: true
}, },
{ {
name: 'C#', name: 'C#',
mode: 'clike', mode: 'clike',
mime: 'text/x-csharp', mime: 'text/x-csharp',
short: 'cs' short: 'cs',
highlight: true
}, },
{ {
name: 'Clojure', name: 'Clojure',
mode: 'clojure' mode: 'clojure',
highlight: true
}, },
{ {
name: 'COBOL', name: 'COBOL',
@ -638,57 +643,70 @@ export const LANGUAGES = [
}, },
{ {
name: 'CoffeeScript', name: 'CoffeeScript',
mode: 'coffeescript' mode: 'coffeescript',
highlight: true
}, },
{ {
name: 'Crystal', name: 'Crystal',
mode: 'crystal' mode: 'crystal',
highlight: true
}, },
{ {
name: 'CSS', name: 'CSS',
mode: 'css' mode: 'css',
highlight: true
}, },
{ {
name: 'D', name: 'D',
mode: 'd' mode: 'd',
highlight: true
}, },
{ {
name: 'Dart', name: 'Dart',
mode: 'dart' mode: 'dart',
highlight: true
}, },
{ {
name: 'Diff', name: 'Diff',
mode: 'diff', mode: 'diff',
mime: 'text/x-diff' mime: 'text/x-diff',
highlight: true
}, },
{ {
name: 'Django', name: 'Django',
mode: 'django' mode: 'django',
highlight: true
}, },
{ {
name: 'Docker', name: 'Docker',
mode: 'dockerfile' mode: 'dockerfile',
highlight: true
}, },
{ {
name: 'Elixir', name: 'Elixir',
mode: 'elixir', mode: 'elixir',
custom: true custom: true,
highlight: true
}, },
{ {
name: 'Elm', name: 'Elm',
mode: 'elm' mode: 'elm',
highlight: true
}, },
{ {
name: 'Erlang', name: 'Erlang',
mode: 'erlang' mode: 'erlang',
highlight: true
}, },
{ {
name: 'Fortran', name: 'Fortran',
mode: 'fortran' mode: 'fortran',
highlight: true
}, },
{ {
name: 'Gherkin', name: 'Gherkin',
mode: 'gherkin' mode: 'gherkin',
highlight: true
}, },
{ {
name: 'GraphQL', name: 'GraphQL',
@ -698,19 +716,23 @@ export const LANGUAGES = [
{ {
name: 'Go', name: 'Go',
mode: 'go', mode: 'go',
mime: 'text/x-go' mime: 'text/x-go',
highlight: true
}, },
{ {
name: 'Groovy', name: 'Groovy',
mode: 'groovy' mode: 'groovy',
highlight: true
}, },
{ {
name: 'Handlebars', name: 'Handlebars',
mode: 'handlebars' mode: 'handlebars',
highlight: true
}, },
{ {
name: 'Haskell', name: 'Haskell',
mode: 'haskell' mode: 'haskell',
highlight: true
}, },
{ {
name: 'HTML/XML', name: 'HTML/XML',
@ -720,18 +742,21 @@ export const LANGUAGES = [
name: 'Java', name: 'Java',
mode: 'clike', mode: 'clike',
mime: 'text/x-java', mime: 'text/x-java',
short: 'java' short: 'java',
highlight: true
}, },
{ {
name: 'JavaScript', name: 'JavaScript',
mode: 'javascript', mode: 'javascript',
short: 'javascript' short: 'javascript',
highlight: true
}, },
{ {
name: 'JSON', name: 'JSON',
mode: 'javascript', mode: 'javascript',
mime: 'application/json', mime: 'application/json',
short: 'json' short: 'json',
highlight: true
}, },
{ {
name: 'JSX', name: 'JSX',
@ -740,13 +765,15 @@ export const LANGUAGES = [
}, },
{ {
name: 'Julia', name: 'Julia',
mode: 'julia' mode: 'julia',
highlight: true
}, },
{ {
name: 'Kotlin', name: 'Kotlin',
mode: 'clike', mode: 'clike',
mime: 'text/x-kotlin', mime: 'text/x-kotlin',
short: 'kotlin' short: 'kotlin',
highlight: true
}, },
{ {
name: 'LaTeX', name: 'LaTeX',
@ -758,15 +785,18 @@ export const LANGUAGES = [
}, },
{ {
name: 'Lua', name: 'Lua',
mode: 'lua' mode: 'lua',
highlight: true
}, },
{ {
name: 'Markdown', name: 'Markdown',
mode: 'markdown' mode: 'markdown',
highlight: true
}, },
{ {
name: 'Mathematica', name: 'Mathematica',
mode: 'mathematica' mode: 'mathematica',
highlight: true
}, },
{ {
name: 'MATLAB/Octave', name: 'MATLAB/Octave',
@ -786,18 +816,21 @@ export const LANGUAGES = [
}, },
{ {
name: 'NGINX', name: 'NGINX',
mode: 'nginx' mode: 'nginx',
highlight: true
}, },
{ {
name: 'Nim', name: 'Nim',
mode: 'nimrod', mode: 'nimrod',
custom: true custom: true,
highlight: true
}, },
{ {
name: 'Objective C', name: 'Objective C',
mode: 'clike', mode: 'clike',
mime: 'text/x-objectivec', mime: 'text/x-objectivec',
short: 'objectivec' short: 'objectivec',
highlight: true
}, },
{ {
name: 'OCaml/F#', name: 'OCaml/F#',
@ -809,25 +842,30 @@ export const LANGUAGES = [
}, },
{ {
name: 'Perl', name: 'Perl',
mode: 'perl' mode: 'perl',
highlight: true
}, },
{ {
name: 'PHP', name: 'PHP',
mode: 'php', mode: 'php',
mime: 'text/x-php', mime: 'text/x-php',
short: 'php' short: 'php',
highlight: true
}, },
{ {
name: 'PowerShell', name: 'PowerShell',
mode: 'powershell' mode: 'powershell',
highlight: true
}, },
{ {
name: 'Python', name: 'Python',
mode: 'python' mode: 'python',
highlight: true
}, },
{ {
name: 'R', name: 'R',
mode: 'r' mode: 'r',
highlight: true
}, },
{ {
name: 'RISC-V', name: 'RISC-V',
@ -836,11 +874,13 @@ export const LANGUAGES = [
}, },
{ {
name: 'Ruby', name: 'Ruby',
mode: 'ruby' mode: 'ruby',
highlight: true
}, },
{ {
name: 'Rust', name: 'Rust',
mode: 'rust' mode: 'rust',
highlight: true
}, },
{ {
name: 'Sass', name: 'Sass',
@ -850,11 +890,13 @@ export const LANGUAGES = [
name: 'Scala', name: 'Scala',
mode: 'clike', mode: 'clike',
mime: 'text/x-scala', mime: 'text/x-scala',
short: 'scala' short: 'scala',
highlight: true
}, },
{ {
name: 'Smalltalk', name: 'Smalltalk',
mode: 'smalltalk' mode: 'smalltalk',
highlight: true
}, },
{ {
name: 'Solidity', name: 'Solidity',
@ -868,20 +910,24 @@ export const LANGUAGES = [
}, },
{ {
name: 'SQL', name: 'SQL',
mode: 'sql' mode: 'sql',
highlight: true
}, },
{ {
name: 'Stylus', name: 'Stylus',
mode: 'stylus', mode: 'stylus',
mime: 'stylus' mime: 'stylus',
highlight: true
}, },
{ {
name: 'Swift', name: 'Swift',
mode: 'swift' mode: 'swift',
highlight: true
}, },
{ {
name: 'TCL', name: 'TCL',
mode: 'tcl' mode: 'tcl',
highlight: true
}, },
{ {
name: 'TOML', name: 'TOML',
@ -896,7 +942,8 @@ export const LANGUAGES = [
name: 'TypeScript', name: 'TypeScript',
mode: 'javascript', mode: 'javascript',
mime: 'application/typescript', mime: 'application/typescript',
short: 'typescript' short: 'typescript',
highlight: true
}, },
{ {
name: 'TSX', name: 'TSX',
@ -907,7 +954,8 @@ export const LANGUAGES = [
{ {
name: 'Twig', name: 'Twig',
mode: 'twig', mode: 'twig',
mime: 'text/x-twig' mime: 'text/x-twig',
highlight: true
}, },
{ {
name: 'VB.NET', name: 'VB.NET',
@ -915,11 +963,13 @@ export const LANGUAGES = [
}, },
{ {
name: 'Verilog', name: 'Verilog',
mode: 'verilog' mode: 'verilog',
highlight: true
}, },
{ {
name: 'VHDL', name: 'VHDL',
mode: 'vhdl' mode: 'vhdl',
highlight: true
}, },
{ {
name: 'Vue', name: 'Vue',
@ -927,11 +977,13 @@ export const LANGUAGES = [
}, },
{ {
name: 'XQuery', name: 'XQuery',
mode: 'xquery' mode: 'xquery',
highlight: true
}, },
{ {
name: 'YAML', name: 'YAML',
mode: 'yaml' mode: 'yaml',
highlight: true
} }
] ]

@ -0,0 +1,5 @@
import { LANGUAGES } from './constants'
export default LANGUAGES.filter(l => l.highlight)
.map(l => l.short || l.mode)
.map(lang => [lang, require(`highlight.js/lib/languages/${lang}`)])

@ -1,6 +1,9 @@
const bundleAnalyzer = require('@next/bundle-analyzer')
const withOffline = require('next-offline') const withOffline = require('next-offline')
module.exports = withOffline({ const withBundleAnalyzer = bundleAnalyzer({ enabled: true })
const config = withOffline({
target: 'serverless', target: 'serverless',
dontAutoRegisterSw: true, dontAutoRegisterSw: true,
workboxOpts: { workboxOpts: {
@ -22,3 +25,5 @@ module.exports = withOffline({
] ]
} }
}) })
module.exports = process.env.ANALYZE === 'true' ? withBundleAnalyzer(config) : config

@ -19,13 +19,13 @@
}, },
"dependencies": { "dependencies": {
"@dawnlabs/tacklebox": "^0.0.11", "@dawnlabs/tacklebox": "^0.0.11",
"@next/bundle-analyzer": "^9.0.3",
"@reach/visually-hidden": "^0.1.4", "@reach/visually-hidden": "^0.1.4",
"axios": "^0.19.0", "axios": "^0.19.0",
"codemirror": "^5.48.2", "codemirror": "^5.48.2",
"codemirror-graphql": "^0.8.3", "codemirror-graphql": "^0.8.3",
"codemirror-mode-elixir": "^1.1.2", "codemirror-mode-elixir": "^1.1.2",
"codemirror-solidity": "^0.1.6", "codemirror-solidity": "^0.1.6",
"colornames": "^1.1.1",
"cross-env": "^5.2.0", "cross-env": "^5.2.0",
"dom-to-image": "^2.5.2", "dom-to-image": "^2.5.2",
"downshift": "^3.2.12", "downshift": "^3.2.12",

@ -1119,6 +1119,13 @@
"@types/istanbul-reports" "^1.1.1" "@types/istanbul-reports" "^1.1.1"
"@types/yargs" "^12.0.9" "@types/yargs" "^12.0.9"
"@next/bundle-analyzer@^9.0.3":
version "9.0.3"
resolved "https://registry.yarnpkg.com/@next/bundle-analyzer/-/bundle-analyzer-9.0.3.tgz#27fc66edc3089f04650b2dfcb57efdbd6ccb06c9"
integrity sha512-0RkiiByBXv69R4u3ipFB6sGQs17uDW0FgjuydFcrcnTFBlZ8zanWGEB7SYPLhA2DVeAKdXBN6Wgccc+vsfC3mQ==
dependencies:
webpack-bundle-analyzer "3.3.2"
"@nodelib/fs.scandir@2.1.1": "@nodelib/fs.scandir@2.1.1":
version "2.1.1" version "2.1.1"
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.1.tgz#7fa8fed654939e1a39753d286b48b4836d00e0eb" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.1.tgz#7fa8fed654939e1a39753d286b48b4836d00e0eb"
@ -1459,7 +1466,7 @@ acorn-jsx@^5.0.0:
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e"
integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg== integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==
acorn-walk@^6.0.1: acorn-walk@^6.0.1, acorn-walk@^6.1.1:
version "6.2.0" version "6.2.0"
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c"
integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==
@ -2038,6 +2045,16 @@ bcrypt-pbkdf@^1.0.0:
dependencies: dependencies:
tweetnacl "^0.14.3" tweetnacl "^0.14.3"
bfj@^6.1.1:
version "6.1.2"
resolved "https://registry.yarnpkg.com/bfj/-/bfj-6.1.2.tgz#325c861a822bcb358a41c78a33b8e6e2086dde7f"
integrity sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw==
dependencies:
bluebird "^3.5.5"
check-types "^8.0.3"
hoopy "^0.1.4"
tryer "^1.0.1"
big.js@^5.2.2: big.js@^5.2.2:
version "5.2.2" version "5.2.2"
resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
@ -2378,6 +2395,11 @@ check-more-types@2.24.0:
resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600" resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600"
integrity sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA= integrity sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA=
check-types@^8.0.3:
version "8.0.3"
resolved "https://registry.yarnpkg.com/check-types/-/check-types-8.0.3.tgz#3356cca19c889544f2d7a95ed49ce508a0ecf552"
integrity sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ==
chokidar@^2.0.2, chokidar@^2.0.4: chokidar@^2.0.2, chokidar@^2.0.4:
version "2.1.6" version "2.1.6"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.6.tgz#b6cad653a929e244ce8a834244164d241fa954c5" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.6.tgz#b6cad653a929e244ce8a834244164d241fa954c5"
@ -2557,11 +2579,6 @@ color-name@1.1.3:
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
colornames@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/colornames/-/colornames-1.1.1.tgz#f8889030685c7c4ff9e2a559f5077eb76a816f96"
integrity sha1-+IiQMGhcfE/54qVZ9Qd+t2qBb5Y=
colors@1.1.2: colors@1.1.2:
version "1.1.2" version "1.1.2"
resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63"
@ -2586,7 +2603,7 @@ commander@2.9.0:
dependencies: dependencies:
graceful-readlink ">= 1.0.0" graceful-readlink ">= 1.0.0"
commander@^2.11.0, commander@^2.19.0, commander@^2.20.0, commander@~2.20.0: commander@^2.11.0, commander@^2.18.0, commander@^2.19.0, commander@^2.20.0, commander@~2.20.0:
version "2.20.0" version "2.20.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422"
integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==
@ -3202,6 +3219,11 @@ dropperx@^1.0.1:
dependencies: dependencies:
react-dropzone "^8.0.3" react-dropzone "^8.0.3"
duplexer@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=
duplexify@^3.4.2, duplexify@^3.6.0: duplexify@^3.4.2, duplexify@^3.6.0:
version "3.7.1" version "3.7.1"
resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309"
@ -3230,6 +3252,11 @@ eitherx@^1.0.2:
resolved "https://registry.yarnpkg.com/eitherx/-/eitherx-1.0.2.tgz#f4659f3621e2b60787afa31e7d0467587ef890f2" resolved "https://registry.yarnpkg.com/eitherx/-/eitherx-1.0.2.tgz#f4659f3621e2b60787afa31e7d0467587ef890f2"
integrity sha512-A3S4t6mtsEJZMNIwjYvZiaGf5rxY0ITViHW9hULTAtcYlQyckznxq9q6wEGJu3GGFLftO89yq2Lx1qzg00VJkw== integrity sha512-A3S4t6mtsEJZMNIwjYvZiaGf5rxY0ITViHW9hULTAtcYlQyckznxq9q6wEGJu3GGFLftO89yq2Lx1qzg00VJkw==
ejs@^2.6.1:
version "2.6.2"
resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.2.tgz#3a32c63d1cd16d11266cd4703b14fec4e74ab4f6"
integrity sha512-PcW2a0tyTuPHz3tWyYqtK6r1fZ3gp+3Sop8Ph+ZYN81Ob5rwmbHEzaqs10N3BEsaGTkh/ooniXK+WwszGlc2+Q==
electron-to-chromium@^1.3.191: electron-to-chromium@^1.3.191:
version "1.3.193" version "1.3.193"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.193.tgz#de9b89959288070bffb14557daf8cf9f75b2caf8" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.193.tgz#de9b89959288070bffb14557daf8cf9f75b2caf8"
@ -3764,7 +3791,7 @@ expect@^24.8.0:
jest-message-util "^24.8.0" jest-message-util "^24.8.0"
jest-regex-util "^24.3.0" jest-regex-util "^24.3.0"
express@^4.17.1: express@^4.16.3, express@^4.17.1:
version "4.17.1" version "4.17.1"
resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134"
integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==
@ -3952,6 +3979,11 @@ file-selector@^0.1.8:
dependencies: dependencies:
tslib "^1.9.0" tslib "^1.9.0"
filesize@^3.6.1:
version "3.6.1"
resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317"
integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==
fill-range@^4.0.0: fill-range@^4.0.0:
version "4.0.0" version "4.0.0"
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
@ -4426,6 +4458,14 @@ growly@^1.3.0:
resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081"
integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=
gzip-size@^5.0.0:
version "5.1.1"
resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274"
integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==
dependencies:
duplexer "^0.1.1"
pify "^4.0.1"
handlebars@^4.1.2: handlebars@^4.1.2:
version "4.1.2" version "4.1.2"
resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.2.tgz#b6b37c1ced0306b221e094fc7aca3ec23b131b67" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.2.tgz#b6b37c1ced0306b221e094fc7aca3ec23b131b67"
@ -4555,6 +4595,11 @@ hoist-non-react-statics@^2.1.1:
resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47"
integrity sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw== integrity sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==
hoopy@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d"
integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==
hosted-git-info@^2.1.4: hosted-git-info@^2.1.4:
version "2.7.1" version "2.7.1"
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047"
@ -6836,6 +6881,11 @@ opencollective-postinstall@^2.0.2:
resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz#5657f1bede69b6e33a45939b061eb53d3c6c3a89" resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz#5657f1bede69b6e33a45939b061eb53d3c6c3a89"
integrity sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw== integrity sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw==
opener@^1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed"
integrity sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==
optimist@^0.6.1: optimist@^0.6.1:
version "0.6.1" version "0.6.1"
resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686"
@ -8849,6 +8899,11 @@ trim-right@^1.0.1:
resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=
tryer@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8"
integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==
tslib@^1.9.0: tslib@^1.9.0:
version "1.10.0" version "1.10.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a"
@ -9149,6 +9204,25 @@ webidl-conversions@^4.0.2:
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"
integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==
webpack-bundle-analyzer@3.3.2:
version "3.3.2"
resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.3.2.tgz#3da733a900f515914e729fcebcd4c40dde71fc6f"
integrity sha512-7qvJLPKB4rRWZGjVp5U1KEjwutbDHSKboAl0IfafnrdXMrgC0tOtZbQD6Rw0u4cmpgRN4O02Fc0t8eAT+FgGzA==
dependencies:
acorn "^6.0.7"
acorn-walk "^6.1.1"
bfj "^6.1.1"
chalk "^2.4.1"
commander "^2.18.0"
ejs "^2.6.1"
express "^4.16.3"
filesize "^3.6.1"
gzip-size "^5.0.0"
lodash "^4.17.10"
mkdirp "^0.5.1"
opener "^1.5.1"
ws "^6.0.0"
webpack-dev-middleware@3.7.0: webpack-dev-middleware@3.7.0:
version "3.7.0" version "3.7.0"
resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.0.tgz#ef751d25f4e9a5c8a35da600c5fda3582b5c6cff" resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.0.tgz#ef751d25f4e9a5c8a35da600c5fda3582b5c6cff"
@ -9521,6 +9595,13 @@ ws@^5.2.0:
dependencies: dependencies:
async-limiter "~1.0.0" async-limiter "~1.0.0"
ws@^6.0.0:
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: ws@^7.0.0:
version "7.1.1" version "7.1.1"
resolved "https://registry.yarnpkg.com/ws/-/ws-7.1.1.tgz#f9942dc868b6dffb72c14fd8f2ba05f77a4d5983" resolved "https://registry.yarnpkg.com/ws/-/ws-7.1.1.tgz#f9942dc868b6dffb72c14fd8f2ba05f77a4d5983"

Loading…
Cancel
Save