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"