diff --git a/components/BackgroundSelect.js b/components/BackgroundSelect.js index 9ed07fd..50ca6d2 100644 --- a/components/BackgroundSelect.js +++ b/components/BackgroundSelect.js @@ -1,5 +1,4 @@ import React from 'react' -import colornames from 'colornames' import ImagePicker from './ImagePicker' import ColorPicker from './ColorPicker' @@ -9,7 +8,7 @@ import { COLORS, DEFAULT_BG_COLOR } from '../lib/constants' import { capitalize, stringifyRGBA } from '../lib/util' 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 } } diff --git a/components/Carbon.js b/components/Carbon.js index a7562b6..9433a60 100644 --- a/components/Carbon.js +++ b/components/Carbon.js @@ -1,10 +1,13 @@ import React from 'react' 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 ms from 'ms' import { Controlled as CodeMirror } from 'react-codemirror2' +hljs.registerLanguage('javascript', javascript) + import SpinnerWrapper from './SpinnerWrapper' import WindowControls from './WindowControls' @@ -337,19 +340,35 @@ class Carbon extends React.PureComponent { } } -const modesLoaded = new Set() +let modesLoaded = false function useModeLoader() { React.useEffect(() => { - LANGUAGES.filter(language => language.mode !== 'auto' && language.mode !== 'text').forEach( - language => { - if (language.mode && !modesLoaded.has(language.mode)) { - language.custom - ? require(`../lib/custom/modes/${language.mode}`) - : require(`codemirror/mode/${language.mode}/${language.mode}`) - modesLoaded.add(language.mode) - } - } - ) + if (!modesLoaded) { + LANGUAGES.filter( + language => language.mode && language.mode !== 'auto' && language.mode !== 'text' + ).forEach(language => { + language.custom + ? require(`../lib/custom/modes/${language.mode}`) + : require(`codemirror/mode/${language.mode}/${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) { useModeLoader() + useHighlightLoader() const onGutterClick = useGutterClickHandler(props) return diff --git a/components/ColorPicker.js b/components/ColorPicker.js index 50e1746..6b9bc5d 100644 --- a/components/ColorPicker.js +++ b/components/ColorPicker.js @@ -1,5 +1,5 @@ import React from 'react' -import { SketchPicker } from 'react-color' +import SketchPicker from 'react-color/lib/Sketch' import { COLORS } from '../lib/constants' diff --git a/components/Editor.js b/components/Editor.js index ea802d9..e8f9bd0 100644 --- a/components/Editor.js +++ b/components/Editor.js @@ -1,7 +1,6 @@ // Theirs import React from 'react' import domtoimage from 'dom-to-image' -import dynamic from 'next/dynamic' import Dropzone from 'dropperx' // Ours @@ -10,6 +9,7 @@ import Dropdown from './Dropdown' import Settings from './Settings' import Toolbar from './Toolbar' import Overlay from './Overlay' +import BackgroundSelect from './BackgroundSelect' import Carbon from './Carbon' import ExportMenu from './ExportMenu' import Themes from './Themes' @@ -34,10 +34,6 @@ import LanguageIcon from './svg/Language' const languageIcon = -const BackgroundSelect = dynamic(() => import('./BackgroundSelect'), { - loading: () => null -}) - const getConfig = omit(['code']) class Editor extends React.Component { diff --git a/lib/constants.js b/lib/constants.js index 9675fd6..921110d 100644 --- a/lib/constants.js +++ b/lib/constants.js @@ -599,12 +599,14 @@ export const LANGUAGES = [ name: 'Apache', mode: 'apache', mime: 'text/apache', - custom: true + custom: true, + highlight: true }, { name: 'Bash', mode: 'shell', - mime: 'application/x-sh' + mime: 'application/x-sh', + highlight: true }, { name: 'Plain Text', @@ -620,17 +622,20 @@ export const LANGUAGES = [ name: 'C++', mode: 'clike', mime: 'text/x-c++src', - short: 'cpp' + short: 'cpp', + highlight: true }, { name: 'C#', mode: 'clike', mime: 'text/x-csharp', - short: 'cs' + short: 'cs', + highlight: true }, { name: 'Clojure', - mode: 'clojure' + mode: 'clojure', + highlight: true }, { name: 'COBOL', @@ -638,57 +643,70 @@ export const LANGUAGES = [ }, { name: 'CoffeeScript', - mode: 'coffeescript' + mode: 'coffeescript', + highlight: true }, { name: 'Crystal', - mode: 'crystal' + mode: 'crystal', + highlight: true }, { name: 'CSS', - mode: 'css' + mode: 'css', + highlight: true }, { name: 'D', - mode: 'd' + mode: 'd', + highlight: true }, { name: 'Dart', - mode: 'dart' + mode: 'dart', + highlight: true }, { name: 'Diff', mode: 'diff', - mime: 'text/x-diff' + mime: 'text/x-diff', + highlight: true }, { name: 'Django', - mode: 'django' + mode: 'django', + highlight: true }, { name: 'Docker', - mode: 'dockerfile' + mode: 'dockerfile', + highlight: true }, { name: 'Elixir', mode: 'elixir', - custom: true + custom: true, + highlight: true }, { name: 'Elm', - mode: 'elm' + mode: 'elm', + highlight: true }, { name: 'Erlang', - mode: 'erlang' + mode: 'erlang', + highlight: true }, { name: 'Fortran', - mode: 'fortran' + mode: 'fortran', + highlight: true }, { name: 'Gherkin', - mode: 'gherkin' + mode: 'gherkin', + highlight: true }, { name: 'GraphQL', @@ -698,19 +716,23 @@ export const LANGUAGES = [ { name: 'Go', mode: 'go', - mime: 'text/x-go' + mime: 'text/x-go', + highlight: true }, { name: 'Groovy', - mode: 'groovy' + mode: 'groovy', + highlight: true }, { name: 'Handlebars', - mode: 'handlebars' + mode: 'handlebars', + highlight: true }, { name: 'Haskell', - mode: 'haskell' + mode: 'haskell', + highlight: true }, { name: 'HTML/XML', @@ -720,18 +742,21 @@ export const LANGUAGES = [ name: 'Java', mode: 'clike', mime: 'text/x-java', - short: 'java' + short: 'java', + highlight: true }, { name: 'JavaScript', mode: 'javascript', - short: 'javascript' + short: 'javascript', + highlight: true }, { name: 'JSON', mode: 'javascript', mime: 'application/json', - short: 'json' + short: 'json', + highlight: true }, { name: 'JSX', @@ -740,13 +765,15 @@ export const LANGUAGES = [ }, { name: 'Julia', - mode: 'julia' + mode: 'julia', + highlight: true }, { name: 'Kotlin', mode: 'clike', mime: 'text/x-kotlin', - short: 'kotlin' + short: 'kotlin', + highlight: true }, { name: 'LaTeX', @@ -758,15 +785,18 @@ export const LANGUAGES = [ }, { name: 'Lua', - mode: 'lua' + mode: 'lua', + highlight: true }, { name: 'Markdown', - mode: 'markdown' + mode: 'markdown', + highlight: true }, { name: 'Mathematica', - mode: 'mathematica' + mode: 'mathematica', + highlight: true }, { name: 'MATLAB/Octave', @@ -786,18 +816,21 @@ export const LANGUAGES = [ }, { name: 'NGINX', - mode: 'nginx' + mode: 'nginx', + highlight: true }, { name: 'Nim', mode: 'nimrod', - custom: true + custom: true, + highlight: true }, { name: 'Objective C', mode: 'clike', mime: 'text/x-objectivec', - short: 'objectivec' + short: 'objectivec', + highlight: true }, { name: 'OCaml/F#', @@ -809,25 +842,30 @@ export const LANGUAGES = [ }, { name: 'Perl', - mode: 'perl' + mode: 'perl', + highlight: true }, { name: 'PHP', mode: 'php', mime: 'text/x-php', - short: 'php' + short: 'php', + highlight: true }, { name: 'PowerShell', - mode: 'powershell' + mode: 'powershell', + highlight: true }, { name: 'Python', - mode: 'python' + mode: 'python', + highlight: true }, { name: 'R', - mode: 'r' + mode: 'r', + highlight: true }, { name: 'RISC-V', @@ -836,11 +874,13 @@ export const LANGUAGES = [ }, { name: 'Ruby', - mode: 'ruby' + mode: 'ruby', + highlight: true }, { name: 'Rust', - mode: 'rust' + mode: 'rust', + highlight: true }, { name: 'Sass', @@ -850,11 +890,13 @@ export const LANGUAGES = [ name: 'Scala', mode: 'clike', mime: 'text/x-scala', - short: 'scala' + short: 'scala', + highlight: true }, { name: 'Smalltalk', - mode: 'smalltalk' + mode: 'smalltalk', + highlight: true }, { name: 'Solidity', @@ -868,20 +910,24 @@ export const LANGUAGES = [ }, { name: 'SQL', - mode: 'sql' + mode: 'sql', + highlight: true }, { name: 'Stylus', mode: 'stylus', - mime: 'stylus' + mime: 'stylus', + highlight: true }, { name: 'Swift', - mode: 'swift' + mode: 'swift', + highlight: true }, { name: 'TCL', - mode: 'tcl' + mode: 'tcl', + highlight: true }, { name: 'TOML', @@ -896,7 +942,8 @@ export const LANGUAGES = [ name: 'TypeScript', mode: 'javascript', mime: 'application/typescript', - short: 'typescript' + short: 'typescript', + highlight: true }, { name: 'TSX', @@ -907,7 +954,8 @@ export const LANGUAGES = [ { name: 'Twig', mode: 'twig', - mime: 'text/x-twig' + mime: 'text/x-twig', + highlight: true }, { name: 'VB.NET', @@ -915,11 +963,13 @@ export const LANGUAGES = [ }, { name: 'Verilog', - mode: 'verilog' + mode: 'verilog', + highlight: true }, { name: 'VHDL', - mode: 'vhdl' + mode: 'vhdl', + highlight: true }, { name: 'Vue', @@ -927,11 +977,13 @@ export const LANGUAGES = [ }, { name: 'XQuery', - mode: 'xquery' + mode: 'xquery', + highlight: true }, { name: 'YAML', - mode: 'yaml' + mode: 'yaml', + highlight: true } ] diff --git a/lib/highlight-languages.js b/lib/highlight-languages.js new file mode 100644 index 0000000..aa22271 --- /dev/null +++ b/lib/highlight-languages.js @@ -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}`)]) diff --git a/next.config.js b/next.config.js index 0df80a3..c68d1d6 100644 --- a/next.config.js +++ b/next.config.js @@ -1,6 +1,9 @@ +const bundleAnalyzer = require('@next/bundle-analyzer') const withOffline = require('next-offline') -module.exports = withOffline({ +const withBundleAnalyzer = bundleAnalyzer({ enabled: true }) + +const config = withOffline({ target: 'serverless', dontAutoRegisterSw: true, workboxOpts: { @@ -22,3 +25,5 @@ module.exports = withOffline({ ] } }) + +module.exports = process.env.ANALYZE === 'true' ? withBundleAnalyzer(config) : config diff --git a/package.json b/package.json index ab4af43..556c413 100644 --- a/package.json +++ b/package.json @@ -19,13 +19,13 @@ }, "dependencies": { "@dawnlabs/tacklebox": "^0.0.11", + "@next/bundle-analyzer": "^9.0.3", "@reach/visually-hidden": "^0.1.4", "axios": "^0.19.0", "codemirror": "^5.48.2", "codemirror-graphql": "^0.8.3", "codemirror-mode-elixir": "^1.1.2", "codemirror-solidity": "^0.1.6", - "colornames": "^1.1.1", "cross-env": "^5.2.0", "dom-to-image": "^2.5.2", "downshift": "^3.2.12", diff --git a/yarn.lock b/yarn.lock index b9c4990..eab8596 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1119,6 +1119,13 @@ "@types/istanbul-reports" "^1.1.1" "@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": version "2.1.1" 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" 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" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== @@ -2038,6 +2045,16 @@ bcrypt-pbkdf@^1.0.0: dependencies: 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: version "5.2.2" 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" 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: version "2.1.6" 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" 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: version "1.1.2" resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" @@ -2586,7 +2603,7 @@ commander@2.9.0: dependencies: 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" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== @@ -3202,6 +3219,11 @@ dropperx@^1.0.1: dependencies: 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: version "3.7.1" 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" 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: version "1.3.193" 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-regex-util "^24.3.0" -express@^4.17.1: +express@^4.16.3, express@^4.17.1: version "4.17.1" resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== @@ -3952,6 +3979,11 @@ file-selector@^0.1.8: dependencies: 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: version "4.0.0" 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" 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: version "4.1.2" 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" 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: version "2.7.1" 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" 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: version "0.6.1" 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" 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: version "1.10.0" 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" 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: version "3.7.0" 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: 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: version "7.1.1" resolved "https://registry.yarnpkg.com/ws/-/ws-7.1.1.tgz#f9942dc868b6dffb72c14fd8f2ba05f77a4d5983"