diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 0000000..3783ef8
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,17 @@
+module.exports = {
+ 'env': {
+ 'browser': true,
+ 'es6': true
+ },
+ 'extends': 'standard',
+ 'globals': {
+ 'Atomics': 'readonly',
+ 'SharedArrayBuffer': 'readonly'
+ },
+ 'parserOptions': {
+ 'ecmaVersion': 2018,
+ 'sourceType': 'module'
+ },
+ 'rules': {
+ }
+}
diff --git a/.jsbeautifyrc b/.jsbeautifyrc
new file mode 100644
index 0000000..2746744
--- /dev/null
+++ b/.jsbeautifyrc
@@ -0,0 +1,17 @@
+{
+ "js": {
+ "indent_size": 2,
+ "indent_char": " ",
+ "other": " ",
+ "indent_level": 0,
+ "indent_with_tabs": false,
+ "preserve_newlines": true,
+ "max_preserve_newlines": 2,
+ "jslint_happy": true,
+ "indent_handlebars": true
+ },
+ "json": {
+ "indent_size": 2,
+ "indent_char": " "
+ }
+}
diff --git a/lib/src/elm-live.js b/lib/src/elm-live.js
index 70032cd..7a863a0 100644
--- a/lib/src/elm-live.js
+++ b/lib/src/elm-live.js
@@ -35,11 +35,15 @@ module.exports = (argv, options) => {
const path = require('path')
const spawnSync = require('cross-spawn').sync
- const elmServe = require('elm-serve')
+ const elmServe = require('./elm-serve')
const chokidar = require('chokidar')
const debounce = require('./debounce')
const getSourceDirs = require('./get-source-dirs')
+ var webServer
+ var elmStdout
+ var elmStderr
+
const auxiliaryBuild = execPath => {
const process = spawnSync(execPath, [], {
stdio: [inputStream, outputStream, outputStream]
@@ -92,10 +96,17 @@ ${chalk.dim('elm-live:')}
return beforeBuild
}
}
- const elmMake = spawnSync(args.pathToElm, ['make', ...args.elmMakeArgs], {
- stdio: [inputStream, outputStream, outputStream]
- })
+ const elmMake = spawnSync(args.pathToElm, ['make', ...args.elmMakeArgs])
+ elmStdout = elmMake.stdout.toString();
+ elmStderr = elmMake.stderr.toString();
+
+ outputStream.write(
+ `
+${chalk.dim('elm-make:')}
+${elmStdout}
+${chalk.cyan(elmStderr)}
+`)
if (elmMake.error && elmMake.error.code === 'ENOENT') {
outputStream.write(
`
@@ -159,7 +170,7 @@ ${chalk.dim('elm-live:')}
`
)
- elmServe({
+ webServer = elmServe({
watchDir: args.dir,
port: args.port,
host: args.host,
@@ -172,6 +183,8 @@ ${chalk.dim('elm-live:')}
ssl: args.ssl
})
+ // Initial reload (in case there are other tabs open in the browser)
+ webServer.sendMessage("reload");
serverStarted = true
}
@@ -206,7 +219,8 @@ ${chalk.dim('elm-live:')}
outputStream.write(
`
${chalk.dim('elm-live:')}
- Watching ${sourceDirs.join(', ')}.
+ Watching
+ ${sourceDirs.join('\n ')}.
`
)
@@ -222,16 +236,28 @@ ${chalk.dim('elm-live:')}
debounce((event, filePath) => {
const relativePath = path.relative(process.cwd(), filePath)
const eventName = eventNameMap[event] || event
+ const message = `You’ve ${eventName} \`${relativePath}\`. Rebuilding!`
outputStream.write(
`
${chalk.dim('elm-live:')}
- You’ve ${eventName} \`${relativePath}\`. Rebuilding!
+ ${message}
`
)
+ if (webServer && webServer.sendMessage) {
+ webServer.sendMessage(`compiling::${message}`);
+ }
const buildResult = build()
+ if (webServer && webServer.sendMessage) {
+ if (buildResult.exitCode === SUCCESS) {
+ webServer.sendMessage("reload");
+ } else {
+ webServer.sendMessage(`error::${elmStderr}`);
+ }
+ }
+
if (!serverStarted && buildResult.exitCode === SUCCESS) {
startServer()
}
diff --git a/lib/src/elm-reload-client.js b/lib/src/elm-reload-client.js
new file mode 100644
index 0000000..6fbbe6f
--- /dev/null
+++ b/lib/src/elm-reload-client.js
@@ -0,0 +1,198 @@
+(function refresh () {
+ var verboseLogging = false
+ var socketUrl = window.location.origin
+
+ socketUrl = socketUrl.replace() // This is dynamically populated by the reload.js file before it is sent to the browser
+ var socket
+
+ if (verboseLogging) {
+ console.log('Reload Script Loaded')
+ }
+
+ if (!('WebSocket' in window)) {
+ throw new Error('Reload only works with browsers that support WebSockets')
+ }
+
+ // Explanation of the flags below:
+
+ // The first change flag is used to tell reload to wait until the socket closes at least once before we allow the page to open on a socket open event. Otherwise reload will go into a inifite loop, as the page will have a socket on open event once it loads for the first time
+ var firstChangeFlag = false
+
+ // The navigatedAwayFromPageFlag is set to true in the event handler onbeforeunload because we want to short-circuit reload to prevent it from causing the page to reload before the navigation occurs.
+ var navigatedAwayFromPageFlag
+
+ // Wait until the page loads for the first time and then call the webSocketWaiter function so that we can connect the socket for the first time
+ window.addEventListener('load', function () {
+ if (verboseLogging === true) {
+ console.log('Page Loaded - Calling webSocketWaiter')
+ }
+ websocketWaiter()
+ })
+
+ // If the user navigates away from the page, we want to short-circuit reload to prevent it from causing the page to reload before the navigation occurs.
+ window.addEventListener('beforeunload', function () {
+ if (verboseLogging === true) {
+ console.log('Navigated away from the current URL')
+ }
+
+ navigatedAwayFromPageFlag = true
+ })
+
+ function showError(error) {
+ console.error(error)
+ if (hideCompiling()) {
+ setTimeout(function () {
+ showError_(error)
+ }, 400);
+ } else {
+ showError_(error)
+ }
+ }
+
+ function showError_(error) {
+ var nodeContainer = document.getElementById("elm-live:elmErrorContainer");
+ if (!nodeContainer) {
+ nodeContainer = document.createElement('div');
+ nodeContainer.id = "elm-live:elmErrorContainer"
+ document.body.appendChild(nodeContainer);
+ }
+ nodeContainer.innerHTML =
+ "
" +
+ "
" +
+ error +
+ "" +
+ ""
+ setTimeout(function () {
+ document.getElementById("elm-live:elmErrorBackground").style.opacity = 1
+ document.getElementById("elm-live:elmError").style.transform = "rotateX(0deg)"
+ }, 0);
+ }
+
+ function hideError() {
+ var node = document.getElementById("elm-live:elmErrorContainer");
+ if (node) {
+ document.getElementById("elm-live:elmErrorBackground").style.opacity = 0
+ document.getElementById("elm-live:elmError").style.transform = "rotateX(-90deg)"
+ setTimeout(function () {
+ document.getElementById("elm-live:elmErrorContainer").remove();
+ }, 300);
+ }
+ }
+
+ function showCompiling(message) {
+ hideError();
+ var nodeContainer = document.getElementById("elm-live:elmCompilingContainer");
+ if (!nodeContainer) {
+ nodeContainer = document.createElement('div');
+ nodeContainer.id = "elm-live:elmCompilingContainer"
+ document.body.appendChild(nodeContainer);
+ }
+ nodeContainer.innerHTML =
+ "" +
+ "" +
+ "
" +
+ "
" +
+ "
" +
+ message +
+ "
"+
+ "
"
+ setTimeout(function () {
+ document.getElementById("elm-live:elmCompilingBackground").style.opacity = 1
+ }, 0);
+ }
+
+ function hideCompiling() {
+ var node = document.getElementById("elm-live:elmCompilingContainer");
+ if (node) {
+ document.getElementById("elm-live:elmCompilingBackground").style.opacity = 0
+ setTimeout(function () {
+ document.getElementById("elm-live:elmCompilingContainer").remove();
+ }, 300);
+ return (true);
+ } else {
+ return (false);
+ }
+ }
+
+ // Check to see if the server sent us reload (meaning a manually reload event was fired) and then reloads the page
+ var socketOnMessage = function (msg) {
+ if (msg.data.match(/^error::/)) {
+ // Displaying the Elm compiler error in the console
+ // and in the browsers
+ showError(msg.data.replace(/^error::/, ""));
+ }
+ else if (msg.data === 'reload') {
+ hideCompiling()
+ window.location.reload()
+ }
+ else if (msg.data.match(/^compiling::/)) {
+ showCompiling(msg.data.replace(/^compiling::/, ""))
+ }
+ }
+
+ var socketOnOpen = function (msg) {
+ if (verboseLogging) {
+ console.log('Socket Opened')
+ }
+
+ // We only allow the reload on two conditions, one when the socket closed (firstChange === true) and two if we didn't navigate to a new page (navigatedAwayFromPageFlag === false)
+ if (firstChangeFlag === true && navigatedAwayFromPageFlag !== true) {
+ if (verboseLogging) {
+ // console.log('Reloaded')
+ }
+
+ // Reset the firstChangeFlag to false so that when the socket on open events are being fired it won't keep reloading the page
+ firstChangeFlag = false
+
+ // Now that everything is set up properly we reload the page
+ // window.location.reload()
+ }
+ }
+
+ // Socket on close event that sets flags and calls the webSocketWaiter function
+ var socketOnClose = function (msg) {
+ if (verboseLogging) {
+ console.log('Socket Closed - Calling webSocketWaiter')
+ }
+
+ // We encountered a change so we set firstChangeFlag to true so that as soon as the server comes back up and the socket opens we can allow the reload
+ firstChangeFlag = true
+
+ // Call the webSocketWaiter function so that we can open a new socket and set the event handlers
+ websocketWaiter()
+ }
+
+ var socketOnError = function (msg) {
+ if (verboseLogging) {
+ console.log(msg)
+ }
+ }
+
+ // Function that opens a new socket and sets the event handlers for the socket
+ function websocketWaiter () {
+ if (verboseLogging) {
+ console.log('Waiting for socket')
+ }
+ setTimeout(function () {
+ socket = new WebSocket(socketUrl); // eslint-disable-line
+
+ socket.onopen = socketOnOpen
+ socket.onclose = socketOnClose
+ socket.onmessage = socketOnMessage
+ socket.onerror = socketOnError
+ }, 250)
+ }
+})()
diff --git a/lib/src/elm-reload-server.js b/lib/src/elm-reload-server.js
new file mode 100644
index 0000000..7e0cfd0
--- /dev/null
+++ b/lib/src/elm-reload-server.js
@@ -0,0 +1,141 @@
+module.exports = function elmServe (opts) {
+ const http = require('http')
+ const https = require('https')
+ const elmReload = require('./elm-reload')
+ const fs = require('fs')
+ const opn = require('opn')
+ const clc = require('cli-color')
+ const internalIp = require('internal-ip')
+ const serveStatic = require('serve-static')
+ const finalhandler = require('finalhandler')
+ const URL = require('url-parse')
+
+ const port = opts[0]
+ const dir = opts[1]
+ const openBrowser = opts[2] === 'true'
+ const hostname = opts[3]
+ const runFile = opts[4]
+ const startPage = opts[5]
+ const pushstate = opts[6] === 'true'
+ const verbose = opts[7] === 'true'
+ const proxyPrefix = opts[8]
+ const proxyHost = opts[9]
+ const ssl = opts[10] === 'true'
+ const ip = internalIp.v4.sync()
+ const reloadOpts = {
+ port: port,
+ verbose: verbose
+ }
+
+ let reloadReturned
+
+ const serve = serveStatic(dir, { index: ['index.html', 'index.htm'] })
+
+ const proxy = (typeof proxyPrefix === 'string' && typeof proxyHost === 'string')
+ ? require('http-proxy').createProxyServer()
+ : false
+
+ function handler (req, res) {
+ const url = new URL(req.url)
+
+ if (proxy && url.pathname.startsWith(proxyPrefix)) {
+ proxy.web(req, res, { target: proxyHost })
+ return
+ }
+
+ const pathname = url.pathname.replace(/(\/)(.*)/, '$2') // Strip leading `/` so we can find files on file system
+ const fileEnding = pathname.split('.')[1]
+
+ if (
+ (pushstate && fileEnding === undefined) ||
+ fileEnding === 'html' ||
+ pathname === '/' ||
+ pathname === ''
+ ) {
+ const finalpath =
+ pathname === '/' || pathname === ''
+ ? dir + '/' + startPage
+ : dir + '/' + pathname
+
+ fs.readFile(finalpath, 'utf8', function (err, contents) {
+ if (err) {
+ const rootpath = dir + '/' + startPage
+ fs.readFile(rootpath, 'utf8', function (err, contents) {
+ if (err) {
+ res.writeHead(404, { 'Content-Type': 'text/plain' })
+ res.end('File Not Found')
+ } else {
+ res.setHeader('Content-Type', 'text/html')
+ res.end(
+ `${contents} \n\n\n\n\n`
+ )
+ }
+ })
+ } else {
+ res.setHeader('Content-Type', 'text/html')
+ res.end(
+ `${contents} \n\n\n\n\n`
+ )
+ }
+ })
+ } else if (pathname === 'reload/reload.js') {
+ // Server reload-client.js file from injected script tag
+ res.setHeader('Content-Type', 'text/javascript')
+ res.end(reloadReturned.reloadClientCode())
+ } else {
+ // Serve any other file using serve-static
+ serve(req, res, finalhandler(req, res))
+ }
+ }
+
+ function listener () {
+ if (!fs.existsSync(runFile)) {
+ fs.writeFileSync(runFile)
+
+ // If openBrowser, open the browser with the given start page above, at a hostname (localhost default or specified).
+ if (openBrowser) {
+ const protocol = ssl ? 'https://' : 'http://'
+ opn(protocol + hostname + ':' + port)
+ }
+ const time = new Date()
+ console.log(
+ clc.green('Server started at ' + time.toTimeString().slice(0, 8))
+ )
+ } else {
+ const time = new Date()
+ console.log(
+ clc.green('Server restarted at ' + time.toTimeString().slice(0, 8))
+ )
+ }
+ }
+
+ if (true) {
+ if (ssl) {
+ const pem = require('pem')
+ const baseNames = [ 'localhost', '127.0.0.1' ]
+ const altNames = (ip && baseNames.indexOf(ip) === -1)
+ ? [ip, ...baseNames]
+ : baseNames
+
+ pem.createCertificate({
+ days: 1,
+ selfSigned: true,
+ commonName: ip,
+ altNames
+ }, function (err, { serviceKey, certificate }) {
+ if (err) throw new Error(err)
+ const server = https.createServer({ key: serviceKey, cert: certificate }, handler)
+ reloadReturned = elmReload(reloadOpts, server)
+ server.listen(port, listener)
+ })
+ } else {
+ const server = http.createServer(handler)
+ reloadReturned = elmReload(reloadOpts, server)
+ server.listen(port, listener)
+ }
+ }
+
+ return {
+ sendMessage: reloadReturned.sendMessage
+ }
+}
diff --git a/lib/src/elm-reload.js b/lib/src/elm-reload.js
new file mode 100644
index 0000000..71d506f
--- /dev/null
+++ b/lib/src/elm-reload.js
@@ -0,0 +1,82 @@
+module.exports = function elmReload (opts = {}, server) {
+ // Requires
+ const path = require('path')
+ const fs = require('fs')
+
+ // Parameter variables
+ const verboseLogging = opts.verbose === true || opts.verbose === 'true'
+
+ // Application variables
+ const RELOAD_FILE = path.join(__dirname, './elm-reload-client.js')
+ let reloadCode = fs.readFileSync(RELOAD_FILE, 'utf8')
+
+ // Websocket server variables
+ const ws = require('ws')
+ const WebSocketServer = ws.Server
+ var wss
+
+ if (arguments.length === 0) {
+ throw new TypeError(
+ 'Lack of/invalid arguments provided to reload',
+ 'reload.js',
+ 7
+ )
+ }
+
+ // Application setup
+ if (verboseLogging) {
+ reloadCode = reloadCode.replace(
+ 'verboseLogging = false',
+ 'verboseLogging = true'
+ )
+ }
+
+ reloadCode = reloadCode.replace(
+ 'socketUrl.replace()',
+ 'socketUrl.replace(/(^http(s?):\\/\\/)(.*)/, "ws$2://$3")'
+ )
+
+ startWebSocketServer()
+
+ // Websocket server setup
+ function startWebSocketServer () {
+ if (verboseLogging) {
+ console.log('Starting WebSocket Server')
+ }
+
+ wss = new WebSocketServer({ server })
+
+ wss.on('connection', ws => {
+ if (verboseLogging) {
+ console.log('Reload client connected to server');
+ // setInterval(function(){sendMessage('reload');}, 3000);
+
+ }
+ })
+ }
+
+ function sendMessage (message) {
+ if (verboseLogging) {
+ console.log(
+ 'Sending message to ' + wss.clients.size + ' connection(s): ' + message
+ )
+ }
+
+ wss.clients.forEach(function each (client) {
+ if (client.readyState === ws.OPEN) {
+ client.send(message)
+ }
+ })
+ }
+
+ return {
+ reload () {
+ sendMessage('reload')
+ },
+ reloadClientCode () {
+ return reloadCode
+ },
+ wss: wss,
+ sendMessage: sendMessage
+ }
+}
diff --git a/lib/src/elm-serve.js b/lib/src/elm-serve.js
new file mode 100644
index 0000000..f7ec3d6
--- /dev/null
+++ b/lib/src/elm-serve.js
@@ -0,0 +1,74 @@
+module.exports = function elmServe (opts) {
+ // const supervisor = require('supervisor')
+ const path = require('path')
+ const os = require('os')
+ const clc = require('cli-color')
+ const elmReload = require('./elm-reload-server')
+
+ const runFile = path.join(
+ os.tmpdir(),
+ 'reload-' +
+ Math.random()
+ .toString()
+ .slice(2)
+ )
+
+ const serverFile = path.join(__dirname, './elm-reload-server.js')
+
+ if (opts.proxyPrefix && !opts.proxyPrefix.startsWith('/')) {
+ opts.proxyPrefix = opts.proxyPrefix + '/'
+ }
+
+ var args = [
+ '-e',
+ opts.exts || 'html|js|css',
+ '-w',
+ opts.watchDir || process.cwd(),
+ '-q',
+ '--',
+ serverFile,
+ opts.port || 1234,
+ opts.dir || process.cwd(),
+ opts.open || false,
+ opts.host || 'localhost',
+ runFile,
+ opts.startPage || 'index.html',
+ opts.pushstate || false,
+ true,
+ opts.proxyPrefix || false,
+ opts.proxyHost || false,
+ opts.ssl || false
+ ]
+
+ if ((opts.proxyPrefix && !opts.proxyHost) || (opts.proxyHost && !opts.proxyPrefix)) {
+ throw new Error('If either `--proxyPrefix` and `--proxyHost` is given, the other must be as well')
+ }
+
+ // supervisor.run(args)
+ console.log('\nReload web server:')
+ console.log(' - Website URL: ' + clc.blue.bold((opts.ssl ? 'https://' : 'http://') + (opts.host || 'localhost') + ':' + (opts.port || 1234)))
+ console.log(' - Listening on port: ' + clc.cyan.bold(opts.port || 1234))
+ // console.log(' - Monitoring dir: ' + clc.green.bold(opts.dir || process.cwd()))
+ if (opts.proxyPrefix && opts.proxyHost) {
+ console.log('proxying requests starting with ' + clc.green(opts.proxyPrefix) + ' to ' + clc.green(opts.proxyHost))
+ }
+
+ var args2 =
+ [opts.port || 1234,
+ opts.dir || process.cwd(),
+ opts.open || false,
+ opts.host || 'localhost',
+ runFile,
+ opts.startPage || 'index.html',
+ opts.pushstate || false,
+ true,
+ opts.proxyPrefix || false,
+ opts.proxyHost || false,
+ opts.ssl || false];
+
+ const ggg = elmReload(args2);
+ return {
+ sendMessage: ggg.sendMessage
+ }
+
+}
diff --git a/package-lock.json b/package-lock.json
index 30f9a77..e83503c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1362,11 +1362,6 @@
"integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
"dev": true
},
- "charenc": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
- "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc="
- },
"chokidar": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.0.0.tgz",
@@ -1534,16 +1529,16 @@
"dev": true
},
"cli-color": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-1.2.0.tgz",
- "integrity": "sha1-OlrnT9drYmevZm5p4q+70B3vNNE=",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-1.4.0.tgz",
+ "integrity": "sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w==",
"requires": {
"ansi-regex": "^2.1.1",
"d": "1",
- "es5-ext": "^0.10.12",
- "es6-iterator": "2",
- "memoizee": "^0.4.3",
- "timers-ext": "0.1"
+ "es5-ext": "^0.10.46",
+ "es6-iterator": "^2.0.3",
+ "memoizee": "^0.4.14",
+ "timers-ext": "^0.1.5"
}
},
"cli-cursor": {
@@ -1785,11 +1780,6 @@
}
}
},
- "connect-pushstate": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/connect-pushstate/-/connect-pushstate-1.1.0.tgz",
- "integrity": "sha1-vKsiQnHEOWBKD7D2FMCl9WPojiQ="
- },
"contains-path": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz",
@@ -1899,11 +1889,6 @@
"which": "^1.2.9"
}
},
- "crypt": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
- "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs="
- },
"crypto-random-string": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
@@ -2008,11 +1993,11 @@
"dev": true
},
"default-gateway": {
- "version": "2.7.2",
- "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-2.7.2.tgz",
- "integrity": "sha512-lAc4i9QJR0YHSDFdzeBQKfZ1SRDG3hsJNEkrpcZa8QhBfidLAilT60BDEIVUUGqosFp425KOgB3uYqcnQrWafQ==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz",
+ "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==",
"requires": {
- "execa": "^0.10.0",
+ "execa": "^1.0.0",
"ip-regex": "^2.1.0"
},
"dependencies": {
@@ -2029,12 +2014,12 @@
}
},
"execa": {
- "version": "0.10.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz",
- "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==",
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+ "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
"requires": {
"cross-spawn": "^6.0.0",
- "get-stream": "^3.0.0",
+ "get-stream": "^4.0.0",
"is-stream": "^1.1.0",
"npm-run-path": "^2.0.0",
"p-finally": "^1.0.0",
@@ -2042,10 +2027,18 @@
"strip-eof": "^1.0.0"
}
},
+ "get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "requires": {
+ "pump": "^3.0.0"
+ }
+ },
"semver": {
- "version": "5.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
- "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg=="
+ "version": "5.7.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
+ "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA=="
}
}
},
@@ -2271,36 +2264,6 @@
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
},
- "elm-serve": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/elm-serve/-/elm-serve-0.4.0.tgz",
- "integrity": "sha512-NYXzzaJT/zw8v7jzDWGXuvX3/soj+5NTLHxX0n/T6DICbmyDj8kO7rlI2wSKs9UTNjXhZ7quFQEKcgcf/SZksw==",
- "requires": {
- "cli-color": "1.2.0",
- "commander": "2.9.0",
- "connect-pushstate": "1.1.0",
- "finalhandler": "1.1.1",
- "http-proxy": "1.17.0",
- "internal-ip": "3.0.1",
- "minimist": "1.2.0",
- "opn": "5.3.0",
- "pem": "1.13.2",
- "serve-static": "1.13.2",
- "supervisor": "0.12.0",
- "url-parse": "1.4.3",
- "ws": "5.2.0"
- },
- "dependencies": {
- "commander": {
- "version": "2.9.0",
- "resolved": "http://registry.npmjs.org/commander/-/commander-2.9.0.tgz",
- "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=",
- "requires": {
- "graceful-readlink": ">= 1.0.0"
- }
- }
- }
- },
"emittery": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/emittery/-/emittery-0.4.1.tgz",
@@ -2332,7 +2295,6 @@
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
"integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
- "dev": true,
"requires": {
"once": "^1.4.0"
}
@@ -2395,13 +2357,13 @@
}
},
"es5-ext": {
- "version": "0.10.46",
- "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.46.tgz",
- "integrity": "sha512-24XxRvJXNFwEMpJb3nOkiRJKRoupmjYmOPVlI65Qy2SrtxwOTB+g6ODjBKOtwEHbYrhWRty9xxOWLNdClT2djw==",
+ "version": "0.10.50",
+ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.50.tgz",
+ "integrity": "sha512-KMzZTPBkeQV/JcSQhI5/z6d9VWJ3EnQ194USTUwIYZ2ZbpN8+SGXQKt1h68EX44+qt+Fzr8DO17vnxrw7c3agw==",
"requires": {
"es6-iterator": "~2.0.3",
"es6-symbol": "~3.1.1",
- "next-tick": "1"
+ "next-tick": "^1.0.0"
}
},
"es6-error": {
@@ -2420,11 +2382,6 @@
"es6-symbol": "^3.1.1"
}
},
- "es6-promisify": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-6.0.1.tgz",
- "integrity": "sha512-J3ZkwbEnnO+fGAKrjVpeUAnZshAdfZvbhQpqfIH9kSAspReRC4nJnu8ewm55b4y9ElyeuhCTzJD0XiH8Tsbhlw=="
- },
"es6-symbol": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
@@ -2499,26 +2456,6 @@
"text-table": "^0.2.0"
},
"dependencies": {
- "@babel/code-frame": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz",
- "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==",
- "dev": true,
- "requires": {
- "@babel/highlight": "^7.0.0"
- }
- },
- "@babel/highlight": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz",
- "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==",
- "dev": true,
- "requires": {
- "chalk": "^2.0.0",
- "esutils": "^2.0.2",
- "js-tokens": "^4.0.0"
- }
- },
"ajv": {
"version": "6.10.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz",
@@ -2570,18 +2507,6 @@
"ms": "^2.1.1"
}
},
- "globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
- "dev": true
- },
- "js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "dev": true
- },
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
@@ -2628,13 +2553,13 @@
}
},
"eslint-module-utils": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz",
- "integrity": "sha1-snA2LNiLGkitMIl2zn+lTphBF0Y=",
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.4.0.tgz",
+ "integrity": "sha512-14tltLm38Eu3zS+mt0KvILC3q8jyIAH518MlG+HO0p+yK885Lb1UHTY/UgR91eOyGdmxAPb+OLoW4znqIT6Ndw==",
"dev": true,
"requires": {
"debug": "^2.6.8",
- "pkg-dir": "^1.0.0"
+ "pkg-dir": "^2.0.0"
}
},
"eslint-plugin-es": {
@@ -2648,21 +2573,22 @@
}
},
"eslint-plugin-import": {
- "version": "2.14.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz",
- "integrity": "sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g==",
+ "version": "2.17.3",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.17.3.tgz",
+ "integrity": "sha512-qeVf/UwXFJbeyLbxuY8RgqDyEKCkqV7YC+E5S5uOjAp4tOc8zj01JP3ucoBM8JcEqd1qRasJSg6LLlisirfy0Q==",
"dev": true,
"requires": {
+ "array-includes": "^3.0.3",
"contains-path": "^0.1.0",
- "debug": "^2.6.8",
+ "debug": "^2.6.9",
"doctrine": "1.5.0",
- "eslint-import-resolver-node": "^0.3.1",
- "eslint-module-utils": "^2.2.0",
- "has": "^1.0.1",
- "lodash": "^4.17.4",
- "minimatch": "^3.0.3",
+ "eslint-import-resolver-node": "^0.3.2",
+ "eslint-module-utils": "^2.4.0",
+ "has": "^1.0.3",
+ "lodash": "^4.17.11",
+ "minimatch": "^3.0.4",
"read-pkg-up": "^2.0.0",
- "resolve": "^1.6.0"
+ "resolve": "^1.11.0"
},
"dependencies": {
"doctrine": {
@@ -2674,35 +2600,86 @@
"esutils": "^2.0.2",
"isarray": "^1.0.0"
}
+ },
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
+ },
+ "has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1"
+ }
+ },
+ "path-parse": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
+ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
+ "dev": true
+ },
+ "resolve": {
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz",
+ "integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==",
+ "dev": true,
+ "requires": {
+ "path-parse": "^1.0.6"
+ }
}
}
},
"eslint-plugin-node": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-7.0.1.tgz",
- "integrity": "sha512-lfVw3TEqThwq0j2Ba/Ckn2ABdwmL5dkOgAux1rvOk6CO7A6yGyPI2+zIxN6FyNkp1X1X/BSvKOceD6mBWSj4Yw==",
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-9.1.0.tgz",
+ "integrity": "sha512-ZwQYGm6EoV2cfLpE1wxJWsfnKUIXfM/KM09/TlorkukgCAwmkgajEJnPCmyzoFPQQkmvo5DrW/nyKutNIw36Mw==",
"dev": true,
"requires": {
- "eslint-plugin-es": "^1.3.1",
+ "eslint-plugin-es": "^1.4.0",
"eslint-utils": "^1.3.1",
- "ignore": "^4.0.2",
+ "ignore": "^5.1.1",
"minimatch": "^3.0.4",
- "resolve": "^1.8.1",
- "semver": "^5.5.0"
+ "resolve": "^1.10.1",
+ "semver": "^6.1.0"
},
"dependencies": {
+ "ignore": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.2.tgz",
+ "integrity": "sha512-vdqWBp7MyzdmHkkRWV5nY+PfGRbYbahfuvsBCh277tq+w9zyNi7h5CYJCK0kmzti9kU+O/cB7sE8HvKv6aXAKQ==",
+ "dev": true
+ },
+ "path-parse": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
+ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
+ "dev": true
+ },
+ "resolve": {
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz",
+ "integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==",
+ "dev": true,
+ "requires": {
+ "path-parse": "^1.0.6"
+ }
+ },
"semver": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
- "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.1.tgz",
+ "integrity": "sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ==",
"dev": true
}
}
},
"eslint-plugin-promise": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.0.1.tgz",
- "integrity": "sha512-Si16O0+Hqz1gDHsys6RtFRrW7cCTB6P7p3OJmKp3Y3dxpQE2qwOA7d3xnV+0mBmrPoi0RBnxlCKvqu70te6wjg==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.1.1.tgz",
+ "integrity": "sha512-faAHw7uzlNPy7b45J1guyjazw28M+7gJokKUjC5JSFoYfUEyy6Gw/i7YQvmv2Yk00sUjWcmzXQLpU1Ki/C2IZQ==",
"dev": true
},
"eslint-plugin-react": {
@@ -2860,11 +2837,6 @@
"es5-ext": "~0.10.14"
}
},
- "eventemitter3": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz",
- "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA=="
- },
"execa": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
@@ -3110,16 +3082,16 @@
}
},
"finalhandler": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
- "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==",
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
+ "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
"requires": {
"debug": "2.6.9",
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"on-finished": "~2.3.0",
- "parseurl": "~1.3.2",
- "statuses": "~1.4.0",
+ "parseurl": "~1.3.3",
+ "statuses": "~1.5.0",
"unpipe": "~1.0.0"
}
},
@@ -3130,13 +3102,12 @@
"dev": true
},
"find-up": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
- "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
"dev": true,
"requires": {
- "path-exists": "^2.0.0",
- "pinkie-promise": "^2.0.0"
+ "locate-path": "^2.0.0"
}
},
"flat-cache": {
@@ -3156,24 +3127,6 @@
"integrity": "sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==",
"dev": true
},
- "follow-redirects": {
- "version": "1.5.10",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
- "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
- "requires": {
- "debug": "=3.1.0"
- },
- "dependencies": {
- "debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
- "requires": {
- "ms": "2.0.0"
- }
- }
- }
- },
"for-in": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
@@ -3259,7 +3212,8 @@
"ansi-regex": {
"version": "2.1.1",
"bundled": true,
- "dev": true
+ "dev": true,
+ "optional": true
},
"aproba": {
"version": "1.2.0",
@@ -3280,12 +3234,14 @@
"balanced-match": {
"version": "1.0.0",
"bundled": true,
- "dev": true
+ "dev": true,
+ "optional": true
},
"brace-expansion": {
"version": "1.1.11",
"bundled": true,
"dev": true,
+ "optional": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -3300,17 +3256,20 @@
"code-point-at": {
"version": "1.1.0",
"bundled": true,
- "dev": true
+ "dev": true,
+ "optional": true
},
"concat-map": {
"version": "0.0.1",
"bundled": true,
- "dev": true
+ "dev": true,
+ "optional": true
},
"console-control-strings": {
"version": "1.1.0",
"bundled": true,
- "dev": true
+ "dev": true,
+ "optional": true
},
"core-util-is": {
"version": "1.0.2",
@@ -3427,7 +3386,8 @@
"inherits": {
"version": "2.0.3",
"bundled": true,
- "dev": true
+ "dev": true,
+ "optional": true
},
"ini": {
"version": "1.3.5",
@@ -3439,6 +3399,7 @@
"version": "1.0.0",
"bundled": true,
"dev": true,
+ "optional": true,
"requires": {
"number-is-nan": "^1.0.0"
}
@@ -3453,6 +3414,7 @@
"version": "3.0.4",
"bundled": true,
"dev": true,
+ "optional": true,
"requires": {
"brace-expansion": "^1.1.7"
}
@@ -3460,12 +3422,14 @@
"minimist": {
"version": "0.0.8",
"bundled": true,
- "dev": true
+ "dev": true,
+ "optional": true
},
"minipass": {
"version": "2.3.5",
"bundled": true,
"dev": true,
+ "optional": true,
"requires": {
"safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
@@ -3484,6 +3448,7 @@
"version": "0.5.1",
"bundled": true,
"dev": true,
+ "optional": true,
"requires": {
"minimist": "0.0.8"
}
@@ -3564,7 +3529,8 @@
"number-is-nan": {
"version": "1.0.1",
"bundled": true,
- "dev": true
+ "dev": true,
+ "optional": true
},
"object-assign": {
"version": "4.1.1",
@@ -3576,6 +3542,7 @@
"version": "1.4.0",
"bundled": true,
"dev": true,
+ "optional": true,
"requires": {
"wrappy": "1"
}
@@ -3661,7 +3628,8 @@
"safe-buffer": {
"version": "5.1.2",
"bundled": true,
- "dev": true
+ "dev": true,
+ "optional": true
},
"safer-buffer": {
"version": "2.1.2",
@@ -3697,6 +3665,7 @@
"version": "1.0.2",
"bundled": true,
"dev": true,
+ "optional": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
@@ -3716,6 +3685,7 @@
"version": "3.0.1",
"bundled": true,
"dev": true,
+ "optional": true,
"requires": {
"ansi-regex": "^2.0.0"
}
@@ -3759,12 +3729,14 @@
"wrappy": {
"version": "1.0.2",
"bundled": true,
- "dev": true
+ "dev": true,
+ "optional": true
},
"yallist": {
"version": "3.0.3",
"bundled": true,
- "dev": true
+ "dev": true,
+ "optional": true
}
}
},
@@ -3795,7 +3767,8 @@
"get-stream": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
- "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ="
+ "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
+ "dev": true
},
"get-value": {
"version": "2.0.6",
@@ -3856,6 +3829,12 @@
"ini": "^1.3.4"
}
},
+ "globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "dev": true
+ },
"globby": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz",
@@ -3915,11 +3894,6 @@
"integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
"dev": true
},
- "graceful-readlink": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
- "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU="
- },
"growl": {
"version": "1.10.5",
"resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz",
@@ -4031,24 +4005,15 @@
"dev": true
},
"http-errors": {
- "version": "1.6.3",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
- "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
+ "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
"requires": {
"depd": "~1.1.2",
"inherits": "2.0.3",
- "setprototypeof": "1.1.0",
- "statuses": ">= 1.4.0 < 2"
- }
- },
- "http-proxy": {
- "version": "1.17.0",
- "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz",
- "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==",
- "requires": {
- "eventemitter3": "^3.0.0",
- "follow-redirects": "^1.0.0",
- "requires-port": "^1.0.0"
+ "setprototypeof": "1.1.1",
+ "statuses": ">= 1.5.0 < 2",
+ "toidentifier": "1.0.0"
}
},
"http-signature": {
@@ -4285,12 +4250,12 @@
}
},
"internal-ip": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-3.0.1.tgz",
- "integrity": "sha512-NXXgESC2nNVtU+pqmC9e6R8B1GpKxzsAQhffvh5AL79qKnodd+L7tnEQmTiUAVngqLalPbSqRA7XGIEL5nCd0Q==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz",
+ "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==",
"requires": {
- "default-gateway": "^2.6.0",
- "ipaddr.js": "^1.5.2"
+ "default-gateway": "^4.2.0",
+ "ipaddr.js": "^1.9.0"
}
},
"invert-kv": {
@@ -4305,9 +4270,9 @@
"integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk="
},
"ipaddr.js": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.1.tgz",
- "integrity": "sha1-+kt5+kf9Pe9eOxWYJRYcClGclCc="
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz",
+ "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA=="
},
"irregular-plurals": {
"version": "2.0.0",
@@ -4353,7 +4318,8 @@
"is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
},
"is-builtin-module": {
"version": "1.0.0",
@@ -5166,16 +5132,6 @@
"escape-string-regexp": "^1.0.4"
}
},
- "md5": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz",
- "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=",
- "requires": {
- "charenc": "~0.0.1",
- "crypt": "~0.0.1",
- "is-buffer": "~1.1.1"
- }
- },
"md5-hex": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-2.0.0.tgz",
@@ -5365,9 +5321,9 @@
}
},
"mime": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
- "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ=="
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
},
"mime-db": {
"version": "1.36.0",
@@ -5402,7 +5358,8 @@
"minimist": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
- "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "dev": true
},
"minimist-options": {
"version": "3.0.2",
@@ -5865,7 +5822,6 @@
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "dev": true,
"requires": {
"wrappy": "1"
}
@@ -5880,9 +5836,9 @@
}
},
"opn": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz",
- "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/opn/-/opn-6.0.0.tgz",
+ "integrity": "sha512-I9PKfIZC+e4RXZ/qr1RhgyCnGgYX0UEIlXgWnCOVACIvFgaC9rz6Won7xbdhoHrd8IIhV7YEpHjreNUNkqCGkQ==",
"requires": {
"is-wsl": "^1.1.0"
}
@@ -6032,7 +5988,8 @@
"os-tmpdir": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
- "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+ "dev": true
},
"p-defer": {
"version": "1.0.0",
@@ -6138,9 +6095,9 @@
"dev": true
},
"parseurl": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
- "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M="
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
},
"pascalcase": {
"version": "0.1.1",
@@ -6154,15 +6111,6 @@
"integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
"dev": true
},
- "path-exists": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
- "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
- "dev": true,
- "requires": {
- "pinkie-promise": "^2.0.0"
- }
- },
"path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
@@ -6195,27 +6143,6 @@
"pify": "^2.0.0"
}
},
- "pem": {
- "version": "1.13.2",
- "resolved": "https://registry.npmjs.org/pem/-/pem-1.13.2.tgz",
- "integrity": "sha512-MPJWuEb/r6AG+GpZi2JnfNtGAZDeL/8+ERKwXEWRuST5i+4lq/Uy36B352OWIUSPQGH+HR1HEDcIDi+8cKxXNg==",
- "requires": {
- "es6-promisify": "^6.0.0",
- "md5": "^2.2.1",
- "os-tmpdir": "^1.0.1",
- "which": "^1.3.1"
- },
- "dependencies": {
- "which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "requires": {
- "isexe": "^2.0.0"
- }
- }
- }
- },
"performance-now": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
@@ -6309,12 +6236,12 @@
}
},
"pkg-dir": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz",
- "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
+ "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
"dev": true,
"requires": {
- "find-up": "^1.0.0"
+ "find-up": "^2.1.0"
}
},
"plur": {
@@ -6427,7 +6354,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
"integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
- "dev": true,
"requires": {
"end-of-stream": "^1.1.0",
"once": "^1.3.1"
@@ -6483,9 +6409,9 @@
"dev": true
},
"querystringify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.0.tgz",
- "integrity": "sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg=="
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz",
+ "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA=="
},
"quick-lru": {
"version": "1.1.0",
@@ -6494,9 +6420,9 @@
"dev": true
},
"range-parser": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
- "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4="
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
},
"rc": {
"version": "1.2.8",
@@ -6535,17 +6461,6 @@
"requires": {
"find-up": "^2.0.0",
"read-pkg": "^2.0.0"
- },
- "dependencies": {
- "find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
- "dev": true,
- "requires": {
- "locate-path": "^2.0.0"
- }
- }
}
},
"readable-stream": {
@@ -6908,9 +6823,9 @@
}
},
"send": {
- "version": "0.16.2",
- "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
- "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
+ "version": "0.17.1",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
+ "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
"requires": {
"debug": "2.6.9",
"depd": "~1.1.2",
@@ -6919,12 +6834,19 @@
"escape-html": "~1.0.3",
"etag": "~1.8.1",
"fresh": "0.5.2",
- "http-errors": "~1.6.2",
- "mime": "1.4.1",
- "ms": "2.0.0",
+ "http-errors": "~1.7.2",
+ "mime": "1.6.0",
+ "ms": "2.1.1",
"on-finished": "~2.3.0",
- "range-parser": "~1.2.0",
- "statuses": "~1.4.0"
+ "range-parser": "~1.2.1",
+ "statuses": "~1.5.0"
+ },
+ "dependencies": {
+ "ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
+ }
}
},
"serialize-error": {
@@ -6934,14 +6856,14 @@
"dev": true
},
"serve-static": {
- "version": "1.13.2",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
- "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
+ "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
"requires": {
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
- "parseurl": "~1.3.2",
- "send": "0.16.2"
+ "parseurl": "~1.3.3",
+ "send": "0.17.1"
}
},
"set-blocking": {
@@ -6974,9 +6896,9 @@
}
},
"setprototypeof": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
- "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
+ "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
},
"shebang-command": {
"version": "1.2.0",
@@ -7380,6 +7302,71 @@
"text-table": "^0.2.0"
}
},
+ "eslint-plugin-import": {
+ "version": "2.14.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz",
+ "integrity": "sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g==",
+ "dev": true,
+ "requires": {
+ "contains-path": "^0.1.0",
+ "debug": "^2.6.8",
+ "doctrine": "1.5.0",
+ "eslint-import-resolver-node": "^0.3.1",
+ "eslint-module-utils": "^2.2.0",
+ "has": "^1.0.1",
+ "lodash": "^4.17.4",
+ "minimatch": "^3.0.3",
+ "read-pkg-up": "^2.0.0",
+ "resolve": "^1.6.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "doctrine": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
+ "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "isarray": "^1.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ }
+ }
+ },
+ "eslint-plugin-node": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-7.0.1.tgz",
+ "integrity": "sha512-lfVw3TEqThwq0j2Ba/Ckn2ABdwmL5dkOgAux1rvOk6CO7A6yGyPI2+zIxN6FyNkp1X1X/BSvKOceD6mBWSj4Yw==",
+ "dev": true,
+ "requires": {
+ "eslint-plugin-es": "^1.3.1",
+ "eslint-utils": "^1.3.1",
+ "ignore": "^4.0.2",
+ "minimatch": "^3.0.4",
+ "resolve": "^1.8.1",
+ "semver": "^5.5.0"
+ }
+ },
+ "eslint-plugin-promise": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.0.1.tgz",
+ "integrity": "sha512-Si16O0+Hqz1gDHsys6RtFRrW7cCTB6P7p3OJmKp3Y3dxpQE2qwOA7d3xnV+0mBmrPoi0RBnxlCKvqu70te6wjg==",
+ "dev": true
+ },
"espree": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/espree/-/espree-4.1.0.tgz",
@@ -7554,9 +7541,9 @@
}
},
"statuses": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
- "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
},
"string-width": {
"version": "2.1.1",
@@ -7668,11 +7655,6 @@
}
}
},
- "supervisor": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/supervisor/-/supervisor-0.12.0.tgz",
- "integrity": "sha1-3n5jNwFbKRhRwQ81OMSn8EkX7ME="
- },
"supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -7992,6 +7974,11 @@
}
}
},
+ "toidentifier": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
+ "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
+ },
"tough-cookie": {
"version": "2.4.3",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
@@ -8297,11 +8284,11 @@
"dev": true
},
"url-parse": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.3.tgz",
- "integrity": "sha512-rh+KuAW36YKo0vClhQzLLveoj8FwPJNu65xLb7Mrt+eZht0IPT0IXgSv8gcMegZ6NvjJUALf6Mf25POlMwD1Fw==",
+ "version": "1.4.7",
+ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz",
+ "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==",
"requires": {
- "querystringify": "^2.0.0",
+ "querystringify": "^2.1.1",
"requires-port": "^1.0.0"
}
},
@@ -8439,8 +8426,7 @@
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
- "dev": true
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
},
"write": {
"version": "1.0.3",
@@ -8463,11 +8449,11 @@
}
},
"ws": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.0.tgz",
- "integrity": "sha512-c18dMeW+PEQdDFzkhDsnBAlS4Z8KGStBQQUcQ5mf7Nf689jyGk0594L+i9RaQuf4gog6SvWLJorz2NfSaqxZ7w==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.0.0.tgz",
+ "integrity": "sha512-cknCal4k0EAOrh1SHHPPWWh4qm93g1IuGGGwBjWkXmCG7LsDtL8w9w+YVfaF+KSVwiHQKDIMsSLBVftKf9d1pg==",
"requires": {
- "async-limiter": "~1.0.0"
+ "async-limiter": "^1.0.0"
}
},
"xdg-basedir": {
diff --git a/package.json b/package.json
index 2a3232f..078ba1b 100644
--- a/package.json
+++ b/package.json
@@ -9,9 +9,15 @@
"dependencies": {
"chalk": "^1.1.1",
"chokidar": "3.0.0",
+ "cli-color": "^1.4.0",
"commander": "2.17.1",
"cross-spawn": "5.0.1",
- "elm-serve": "0.4.0"
+ "finalhandler": "^1.1.2",
+ "internal-ip": "^4.3.0",
+ "opn": "^6.0.0",
+ "serve-static": "^1.14.1",
+ "url-parse": "^1.4.7",
+ "ws": "^7.0.0"
},
"scripts": {
"develop": "ava --watch",
@@ -51,8 +57,12 @@
"ava": "1.4.1",
"coveralls": "3.0.2",
"dev-null": "^0.1.1",
- "eslint": "5.16.0",
- "eslint-plugin-import": "2.14.0",
+ "eslint": "^5.16.0",
+ "eslint-config-standard": "^12.0.0",
+ "eslint-plugin-import": "^2.17.3",
+ "eslint-plugin-node": "^9.1.0",
+ "eslint-plugin-promise": "^4.1.1",
+ "eslint-plugin-standard": "^4.0.0",
"husky": "0.14.3",
"nyc": "14.1.1",
"proxyquire": "^1.7.4",