diff --git a/.eslintrc.js b/.eslintrc.js index 3561f90..08788ca 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -26,6 +26,7 @@ module.exports = { // allow debugger during development 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0, + 'no-control-regex': 0, 'no-useless-escape': 0, 'comma-dangle': 0, 'space-before-function-paren': 0, diff --git a/dist/vue-upload-component.js b/dist/vue-upload-component.js index 47ee12e..b2f91a3 100644 --- a/dist/vue-upload-component.js +++ b/dist/vue-upload-component.js @@ -1,1643 +1,1526 @@ /*! * Name: vue-upload-component - * Version: 2.8.6 + * Version: 2.8.7 * Author: LianYue */ (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.VueUploadComponent = factory()); + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global.VueUploadComponent = factory()); }(this, (function () { 'use strict'; -/** - * Creates a XHR request - * - * @param {Object} options - */ -var createRequest = function createRequest(options) { - var xhr = new XMLHttpRequest(); - xhr.open(options.method || 'GET', options.url); - xhr.responseType = 'json'; - if (options.headers) { - Object.keys(options.headers).forEach(function (key) { - xhr.setRequestHeader(key, options.headers[key]); - }); - } - - return xhr; -}; - -/** - * Sends a XHR request with certain body - * - * @param {XMLHttpRequest} xhr - * @param {Object} body - */ -var sendRequest = function sendRequest(xhr, body) { - return new Promise(function (resolve, reject) { - xhr.onload = function () { - if (xhr.status >= 200 && xhr.status < 300) { - var response; - try { - response = JSON.parse(xhr.response); - } catch (err) { - response = xhr.response; - } - resolve(response); - } else { - reject(xhr.response); - } - }; - xhr.onerror = function () { - return reject(xhr.response); - }; - xhr.send(JSON.stringify(body)); - }); -}; + /** + * Creates a XHR request + * + * @param {Object} options + */ + var createRequest = function createRequest(options) { + var xhr = new XMLHttpRequest(); + xhr.open(options.method || 'GET', options.url); + xhr.responseType = 'json'; + if (options.headers) { + Object.keys(options.headers).forEach(function (key) { + xhr.setRequestHeader(key, options.headers[key]); + }); + } -/** - * Sends a XHR request with certain form data - * - * @param {XMLHttpRequest} xhr - * @param {Object} data - */ -var sendFormRequest = function sendFormRequest(xhr, data) { - var body = new FormData(); - for (var name in data) { - body.append(name, data[name]); - } + return xhr; + }; - return new Promise(function (resolve, reject) { - xhr.onload = function () { - if (xhr.status >= 200 && xhr.status < 300) { - var response; - try { - response = JSON.parse(xhr.response); - } catch (err) { - response = xhr.response; + /** + * Sends a XHR request with certain body + * + * @param {XMLHttpRequest} xhr + * @param {Object} body + */ + var sendRequest = function sendRequest(xhr, body) { + return new Promise(function (resolve, reject) { + xhr.onload = function () { + if (xhr.status >= 200 && xhr.status < 300) { + var response; + try { + response = JSON.parse(xhr.response); + } catch (err) { + response = xhr.response; + } + resolve(response); + } else { + reject(xhr.response); } - resolve(response); - } else { - reject(xhr.response); - } - }; - xhr.onerror = function () { - return reject(xhr.response); - }; - xhr.send(body); - }); -}; - -/** - * Creates and sends XHR request - * - * @param {Object} options - * - * @returns Promise - */ -var request = function (options) { - var xhr = createRequest(options); - - return sendRequest(xhr, options.body); -}; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + }; + xhr.onerror = function () { + return reject(xhr.response); + }; + xhr.send(JSON.stringify(body)); + }); + }; -var ChunkUploadHandler = function () { /** - * Constructor + * Sends a XHR request with certain form data * - * @param {File} file - * @param {Object} options + * @param {XMLHttpRequest} xhr + * @param {Object} data */ - function ChunkUploadHandler(file, options) { - _classCallCheck(this, ChunkUploadHandler); + var sendFormRequest = function sendFormRequest(xhr, data) { + var body = new FormData(); + for (var name in data) { + body.append(name, data[name]); + } - this.file = file; - this.options = options; - } + return new Promise(function (resolve, reject) { + xhr.onload = function () { + if (xhr.status >= 200 && xhr.status < 300) { + var response; + try { + response = JSON.parse(xhr.response); + } catch (err) { + response = xhr.response; + } + resolve(response); + } else { + reject(xhr.response); + } + }; + xhr.onerror = function () { + return reject(xhr.response); + }; + xhr.send(body); + }); + }; /** - * Gets the max retries from options + * Creates and sends XHR request + * + * @param {Object} options + * + * @returns Promise */ + function request (options) { + var xhr = createRequest(options); + return sendRequest(xhr, options.body); + } - _createClass(ChunkUploadHandler, [{ - key: 'createChunks', + var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + var ChunkUploadHandler = function () { /** - * Creates all the chunks in the initial state - */ - value: function createChunks() { - this.chunks = []; - - var start = 0; - var end = this.chunkSize; - while (start < this.fileSize) { - this.chunks.push({ - blob: this.file.file.slice(start, end), - startOffset: start, - active: false, - retries: this.maxRetries - }); - start = end; - end = start + this.chunkSize; - } - } - - /** - * Updates the progress of the file with the handler's progress + * Constructor + * + * @param {File} file + * @param {Object} options */ + function ChunkUploadHandler(file, options) { + _classCallCheck(this, ChunkUploadHandler); - }, { - key: 'updateFileProgress', - value: function updateFileProgress() { - this.file.progress = this.progress; + this.file = file; + this.options = options; } /** - * Paues the upload process - * - Stops all active requests - * - Sets the file not active + * Gets the max retries from options */ - }, { - key: 'pause', - value: function pause() { - this.file.active = false; - this.stopChunks(); - } - /** - * Stops all the current chunks - */ + _createClass(ChunkUploadHandler, [{ + key: 'createChunks', - }, { - key: 'stopChunks', - value: function stopChunks() { - this.chunksUploading.forEach(function (chunk) { - chunk.xhr.abort(); - chunk.active = false; - }); - } - /** - * Resumes the file upload - * - Sets the file active - * - Starts the following chunks - */ + /** + * Creates all the chunks in the initial state + */ + value: function createChunks() { + this.chunks = []; - }, { - key: 'resume', - value: function resume() { - this.file.active = true; - this.startChunking(); - } + var start = 0; + var end = this.chunkSize; + while (start < this.fileSize) { + this.chunks.push({ + blob: this.file.file.slice(start, end), + startOffset: start, + active: false, + retries: this.maxRetries + }); + start = end; + end = start + this.chunkSize; + } + } - /** - * Starts the file upload - * - * @returns Promise - * - resolve The file was uploaded - * - reject The file upload failed - */ + /** + * Updates the progress of the file with the handler's progress + */ - }, { - key: 'upload', - value: function upload() { - var _this = this; + }, { + key: 'updateFileProgress', + value: function updateFileProgress() { + this.file.progress = this.progress; + } - this.promise = new Promise(function (resolve, reject) { - _this.resolve = resolve; - _this.reject = reject; - }); - this.start(); + /** + * Paues the upload process + * - Stops all active requests + * - Sets the file not active + */ + + }, { + key: 'pause', + value: function pause() { + this.file.active = false; + this.stopChunks(); + } - return this.promise; - } + /** + * Stops all the current chunks + */ - /** - * Start phase - * Sends a request to the backend to initialise the chunks - */ + }, { + key: 'stopChunks', + value: function stopChunks() { + this.chunksUploading.forEach(function (chunk) { + chunk.xhr.abort(); + chunk.active = false; + }); + } - }, { - key: 'start', - value: function start() { - var _this2 = this; - - request({ - method: 'POST', - headers: Object.assign({}, this.headers, { - 'Content-Type': 'application/json' - }), - url: this.action, - body: Object.assign(this.startBody, { - phase: 'start', - mime_type: this.fileType, - size: this.fileSize - }) - }).then(function (res) { - if (res.status !== 'success') { - _this2.file.response = res; - return _this2.reject('server'); - } + /** + * Resumes the file upload + * - Sets the file active + * - Starts the following chunks + */ + + }, { + key: 'resume', + value: function resume() { + this.file.active = true; + this.startChunking(); + } - _this2.sessionId = res.data.session_id; - _this2.chunkSize = res.data.end_offset; + /** + * Starts the file upload + * + * @returns Promise + * - resolve The file was uploaded + * - reject The file upload failed + */ + + }, { + key: 'upload', + value: function upload() { + var _this = this; + + this.promise = new Promise(function (resolve, reject) { + _this.resolve = resolve; + _this.reject = reject; + }); + this.start(); - _this2.createChunks(); - _this2.startChunking(); - }).catch(function (res) { - _this2.file.response = res; - _this2.reject('server'); - }); - } + return this.promise; + } - /** - * Starts to upload chunks - */ + /** + * Start phase + * Sends a request to the backend to initialise the chunks + */ + + }, { + key: 'start', + value: function start() { + var _this2 = this; + + request({ + method: 'POST', + headers: Object.assign({}, this.headers, { + 'Content-Type': 'application/json' + }), + url: this.action, + body: Object.assign(this.startBody, { + phase: 'start', + mime_type: this.fileType, + size: this.fileSize + }) + }).then(function (res) { + if (res.status !== 'success') { + _this2.file.response = res; + return _this2.reject('server'); + } - }, { - key: 'startChunking', - value: function startChunking() { - for (var i = 0; i < this.maxActiveChunks; i++) { - this.uploadNextChunk(); + _this2.sessionId = res.data.session_id; + _this2.chunkSize = res.data.end_offset; + + _this2.createChunks(); + _this2.startChunking(); + }).catch(function (res) { + _this2.file.response = res; + _this2.reject('server'); + }); } - } - /** - * Uploads the next chunk - * - Won't do anything if the process is paused - * - Will start finish phase if there are no more chunks to upload - */ + /** + * Starts to upload chunks + */ - }, { - key: 'uploadNextChunk', - value: function uploadNextChunk() { - if (this.file.active) { - if (this.hasChunksToUpload) { - return this.uploadChunk(this.chunksToUpload[0]); + }, { + key: 'startChunking', + value: function startChunking() { + for (var i = 0; i < this.maxActiveChunks; i++) { + this.uploadNextChunk(); } + } - if (this.chunksUploading.length === 0) { - return this.finish(); + /** + * Uploads the next chunk + * - Won't do anything if the process is paused + * - Will start finish phase if there are no more chunks to upload + */ + + }, { + key: 'uploadNextChunk', + value: function uploadNextChunk() { + if (this.file.active) { + if (this.hasChunksToUpload) { + return this.uploadChunk(this.chunksToUpload[0]); + } + + if (this.chunksUploading.length === 0) { + return this.finish(); + } } } - } - /** - * Uploads a chunk - * - Sends the chunk to the backend - * - Sets the chunk as uploaded if everything went well - * - Decreases the number of retries if anything went wrong - * - Fails if there are no more retries - * - * @param {Object} chunk - */ + /** + * Uploads a chunk + * - Sends the chunk to the backend + * - Sets the chunk as uploaded if everything went well + * - Decreases the number of retries if anything went wrong + * - Fails if there are no more retries + * + * @param {Object} chunk + */ + + }, { + key: 'uploadChunk', + value: function uploadChunk(chunk) { + var _this3 = this; + + chunk.progress = 0; + chunk.active = true; + this.updateFileProgress(); + chunk.xhr = createRequest({ + method: 'POST', + headers: this.headers, + url: this.action + }); - }, { - key: 'uploadChunk', - value: function uploadChunk(chunk) { - var _this3 = this; - - chunk.progress = 0; - chunk.active = true; - this.updateFileProgress(); - chunk.xhr = createRequest({ - method: 'POST', - headers: this.headers, - url: this.action - }); + chunk.xhr.upload.addEventListener('progress', function (evt) { + if (evt.lengthComputable) { + chunk.progress = Math.round(evt.loaded / evt.total * 100); + } + }, false); + + sendFormRequest(chunk.xhr, Object.assign(this.uploadBody, { + phase: 'upload', + session_id: this.sessionId, + start_offset: chunk.startOffset, + chunk: chunk.blob + })).then(function (res) { + chunk.active = false; + if (res.status === 'success') { + chunk.uploaded = true; + } else { + if (chunk.retries-- <= 0) { + _this3.stopChunks(); + return _this3.reject('upload'); + } + } - chunk.xhr.upload.addEventListener('progress', function (evt) { - if (evt.lengthComputable) { - chunk.progress = Math.round(evt.loaded / evt.total * 100); - } - }, false); - - sendFormRequest(chunk.xhr, Object.assign(this.uploadBody, { - phase: 'upload', - session_id: this.sessionId, - start_offset: chunk.startOffset, - chunk: chunk.blob - })).then(function (res) { - chunk.active = false; - if (res.status === 'success') { - chunk.uploaded = true; - } else { + _this3.uploadNextChunk(); + }).catch(function () { + chunk.active = false; if (chunk.retries-- <= 0) { _this3.stopChunks(); return _this3.reject('upload'); } - } - _this3.uploadNextChunk(); - }).catch(function () { - chunk.active = false; - if (chunk.retries-- <= 0) { - _this3.stopChunks(); - return _this3.reject('upload'); - } - - _this3.uploadNextChunk(); - }); - } + _this3.uploadNextChunk(); + }); + } - /** - * Finish phase - * Sends a request to the backend to finish the process - */ + /** + * Finish phase + * Sends a request to the backend to finish the process + */ + + }, { + key: 'finish', + value: function finish() { + var _this4 = this; + + this.updateFileProgress(); + + request({ + method: 'POST', + headers: Object.assign({}, this.headers, { + 'Content-Type': 'application/json' + }), + url: this.action, + body: Object.assign(this.finishBody, { + phase: 'finish', + session_id: this.sessionId + }) + }).then(function (res) { + _this4.file.response = res; + if (res.status !== 'success') { + return _this4.reject('server'); + } - }, { - key: 'finish', - value: function finish() { - var _this4 = this; - - this.updateFileProgress(); - - request({ - method: 'POST', - headers: Object.assign({}, this.headers, { - 'Content-Type': 'application/json' - }), - url: this.action, - body: Object.assign(this.finishBody, { - phase: 'finish', - session_id: this.sessionId - }) - }).then(function (res) { - _this4.file.response = res; - if (res.status !== 'success') { - return _this4.reject('server'); - } - - _this4.resolve(res); - }).catch(function (res) { - _this4.file.response = res; - _this4.reject('server'); - }); - } - }, { - key: 'maxRetries', - get: function get() { - return parseInt(this.options.maxRetries); - } + _this4.resolve(res); + }).catch(function (res) { + _this4.file.response = res; + _this4.reject('server'); + }); + } + }, { + key: 'maxRetries', + get: function get() { + return parseInt(this.options.maxRetries); + } - /** - * Gets the max number of active chunks being uploaded at once from options - */ + /** + * Gets the max number of active chunks being uploaded at once from options + */ - }, { - key: 'maxActiveChunks', - get: function get() { - return parseInt(this.options.maxActive); - } + }, { + key: 'maxActiveChunks', + get: function get() { + return parseInt(this.options.maxActive); + } - /** - * Gets the file type - */ + /** + * Gets the file type + */ - }, { - key: 'fileType', - get: function get() { - return this.file.type; - } + }, { + key: 'fileType', + get: function get() { + return this.file.type; + } - /** - * Gets the file size - */ + /** + * Gets the file size + */ - }, { - key: 'fileSize', - get: function get() { - return this.file.size; - } + }, { + key: 'fileSize', + get: function get() { + return this.file.size; + } - /** - * Gets action (url) to upload the file - */ + /** + * Gets action (url) to upload the file + */ - }, { - key: 'action', - get: function get() { - return this.options.action || null; - } + }, { + key: 'action', + get: function get() { + return this.options.action || null; + } - /** - * Gets the body to be merged when sending the request in start phase - */ + /** + * Gets the body to be merged when sending the request in start phase + */ - }, { - key: 'startBody', - get: function get() { - return this.options.startBody || {}; - } + }, { + key: 'startBody', + get: function get() { + return this.options.startBody || {}; + } - /** - * Gets the body to be merged when sending the request in upload phase - */ + /** + * Gets the body to be merged when sending the request in upload phase + */ - }, { - key: 'uploadBody', - get: function get() { - return this.options.uploadBody || {}; - } + }, { + key: 'uploadBody', + get: function get() { + return this.options.uploadBody || {}; + } - /** - * Gets the body to be merged when sending the request in finish phase - */ + /** + * Gets the body to be merged when sending the request in finish phase + */ - }, { - key: 'finishBody', - get: function get() { - return this.options.finishBody || {}; - } + }, { + key: 'finishBody', + get: function get() { + return this.options.finishBody || {}; + } - /** - * Gets the headers of the requests from options - */ + /** + * Gets the headers of the requests from options + */ - }, { - key: 'headers', - get: function get() { - return this.options.headers || {}; - } + }, { + key: 'headers', + get: function get() { + return this.options.headers || {}; + } - /** - * Whether it's ready to upload files or not - */ + /** + * Whether it's ready to upload files or not + */ - }, { - key: 'readyToUpload', - get: function get() { - return !!this.chunks; - } + }, { + key: 'readyToUpload', + get: function get() { + return !!this.chunks; + } - /** - * Gets the progress of the chunk upload - * - Gets all the completed chunks - * - Gets the progress of all the chunks that are being uploaded - */ + /** + * Gets the progress of the chunk upload + * - Gets all the completed chunks + * - Gets the progress of all the chunks that are being uploaded + */ - }, { - key: 'progress', - get: function get() { - var _this5 = this; + }, { + key: 'progress', + get: function get() { + var _this5 = this; - var completedProgress = this.chunksUploaded.length / this.chunks.length * 100; - var uploadingProgress = this.chunksUploading.reduce(function (progress, chunk) { - return progress + (chunk.progress | 0) / _this5.chunks.length; - }, 0); + var completedProgress = this.chunksUploaded.length / this.chunks.length * 100; + var uploadingProgress = this.chunksUploading.reduce(function (progress, chunk) { + return progress + (chunk.progress | 0) / _this5.chunks.length; + }, 0); - return Math.min(completedProgress + uploadingProgress, 100); - } + return Math.min(completedProgress + uploadingProgress, 100); + } - /** - * Gets all the chunks that are pending to be uploaded - */ + /** + * Gets all the chunks that are pending to be uploaded + */ - }, { - key: 'chunksToUpload', - get: function get() { - return this.chunks.filter(function (chunk) { - return !chunk.active && !chunk.uploaded; - }); - } + }, { + key: 'chunksToUpload', + get: function get() { + return this.chunks.filter(function (chunk) { + return !chunk.active && !chunk.uploaded; + }); + } - /** - * Whether there are chunks to upload or not - */ + /** + * Whether there are chunks to upload or not + */ - }, { - key: 'hasChunksToUpload', - get: function get() { - return this.chunksToUpload.length > 0; - } + }, { + key: 'hasChunksToUpload', + get: function get() { + return this.chunksToUpload.length > 0; + } - /** - * Gets all the chunks that are uploading - */ + /** + * Gets all the chunks that are uploading + */ - }, { - key: 'chunksUploading', - get: function get() { - return this.chunks.filter(function (chunk) { - return !!chunk.xhr && !!chunk.active; - }); - } + }, { + key: 'chunksUploading', + get: function get() { + return this.chunks.filter(function (chunk) { + return !!chunk.xhr && !!chunk.active; + }); + } - /** - * Gets all the chunks that have finished uploading - */ + /** + * Gets all the chunks that have finished uploading + */ - }, { - key: 'chunksUploaded', - get: function get() { - return this.chunks.filter(function (chunk) { - return !!chunk.uploaded; - }); + }, { + key: 'chunksUploaded', + get: function get() { + return this.chunks.filter(function (chunk) { + return !!chunk.uploaded; + }); + } + }]); + + return ChunkUploadHandler; + }(); + + // + // + // + // + // + // + // + // + // + // + // + // + // + + var script = { + methods: { + change: function change(e) { + this.$destroy(); + this.$parent.addInputFile(e.target); + // eslint-disable-next-line + new this.constructor({ + parent: this.$parent, + el: this.$el + }); + } } - }]); - - return ChunkUploadHandler; -}(); - -(function () { - if (typeof document !== 'undefined') { - var head = document.head || document.getElementsByTagName('head')[0], - style = document.createElement('style'), - css = "";style.type = 'text/css';if (style.styleSheet) { - style.styleSheet.cssText = css; - } else { - style.appendChild(document.createTextNode(css)); - }head.appendChild(style); - } -})(); + }; -var InputFile = { render: function render() { + var __vue_script__ = script; + + /* template */ + var __vue_render__ = function __vue_render__() { var _vm = this;var _h = _vm.$createElement;var _c = _vm._self._c || _h;return _c('input', { attrs: { "type": "file", "name": _vm.$parent.name, "id": _vm.$parent.inputId || _vm.$parent.name, "accept": _vm.$parent.accept, "capture": _vm.$parent.capture, "webkitdirectory": _vm.$parent.directory && _vm.$parent.features.directory, "directory": _vm.$parent.directory && _vm.$parent.features.directory, "multiple": _vm.$parent.multiple && _vm.$parent.features.html5 }, on: { "change": _vm.change } }); - }, staticRenderFns: [], - methods: { - change: function change(e) { - this.$destroy(); - this.$parent.addInputFile(e.target); - // eslint-disable-next-line - new this.constructor({ - parent: this.$parent, - el: this.$el - }); + }; + var __vue_staticRenderFns__ = []; + + var __vue_template__ = typeof __vue_render__ !== 'undefined' ? { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ } : {}; + /* style */ + var __vue_inject_styles__ = undefined; + /* scoped */ + var __vue_scope_id__ = undefined; + /* module identifier */ + var __vue_module_identifier__ = undefined; + /* functional template */ + var __vue_is_functional_template__ = false; + /* component normalizer */ + function __vue_normalize__(template, style, script$$1, scope, functional, moduleIdentifier, createInjector, createInjectorSSR) { + var component = script$$1 || {}; + + if (!component.render) { + component.render = template.render; + component.staticRenderFns = template.staticRenderFns; + component._compiled = true; + + if (functional) component.functional = true; } - } -}; - -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + component._scopeId = scope; -function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } - -(function () { - if (typeof document !== 'undefined') { - var head = document.head || document.getElementsByTagName('head')[0], - style = document.createElement('style'), - css = " .file-uploads { overflow: hidden; position: relative; text-align: center; display: inline-block; } .file-uploads.file-uploads-html4 input[type=\"file\"] { opacity: 0; font-size: 20em; z-index: 1; top: 0; left: 0; right: 0; bottom: 0; position: absolute; width: 100%; height: 100%; } .file-uploads.file-uploads-html5 input[type=\"file\"] { overflow: hidden; position: fixed; width: 1px; height: 1px; z-index: -1; opacity: 0; } ";style.type = 'text/css';if (style.styleSheet) { - style.styleSheet.cssText = css; - } else { - style.appendChild(document.createTextNode(css)); - }head.appendChild(style); + return component; } -})(); + /* style inject */ + function __vue_create_injector__() { + var head = document.head || document.getElementsByTagName('head')[0]; + var styles = __vue_create_injector__.styles || (__vue_create_injector__.styles = {}); + var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase()); + + return function addStyle(id, css) { + if (document.querySelector('style[data-vue-ssr-id~="' + id + '"]')) return; // SSR styles are present. + + var group = isOldIE ? css.media || 'default' : id; + var style = styles[group] || (styles[group] = { ids: [], parts: [], element: undefined }); + + if (!style.ids.includes(id)) { + var code = css.source; + var index = style.ids.length; + + style.ids.push(id); + + if (css.map) { + // https://developer.chrome.com/devtools/docs/javascript-debugging + // this makes source maps inside style tags work properly in Chrome + code += '\n/*# sourceURL=' + css.map.sources[0] + ' */'; + // http://stackoverflow.com/a/26603875 + code += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(css.map)))) + ' */'; + } -var CHUNK_DEFAULT_OPTIONS = { - headers: {}, - action: '', - minSize: 1048576, - maxActive: 3, - maxRetries: 5, + if (isOldIE) { + style.element = style.element || document.querySelector('style[data-group=' + group + ']'); + } - handler: ChunkUploadHandler -}; + if (!style.element) { + var el = style.element = document.createElement('style'); + el.type = 'text/css'; -var FileUpload = { render: function render() { - var _vm = this;var _h = _vm.$createElement;var _c = _vm._self._c || _h;return _c('label', { class: _vm.className }, [_vm._t("default"), _vm._v(" "), _c('input-file')], 2); - }, staticRenderFns: [], - components: { - InputFile: InputFile - }, - props: { - inputId: { - type: String - }, + if (css.media) el.setAttribute('media', css.media); + if (isOldIE) { + el.setAttribute('data-group', group); + el.setAttribute('data-next-index', '0'); + } - name: { - type: String, - default: 'file' - }, + head.appendChild(el); + } - accept: { - type: String - }, + if (isOldIE) { + index = parseInt(style.element.getAttribute('data-next-index')); + style.element.setAttribute('data-next-index', index + 1); + } - capture: {}, + if (style.element.styleSheet) { + style.parts.push(code); + style.element.styleSheet.cssText = style.parts.filter(Boolean).join('\n'); + } else { + var textNode = document.createTextNode(code); + var nodes = style.element.childNodes; + if (nodes[index]) style.element.removeChild(nodes[index]); + if (nodes.length) style.element.insertBefore(textNode, nodes[index]);else style.element.appendChild(textNode); + } + } + }; + } + /* style inject SSR */ - multiple: { - type: Boolean - }, + var InputFile = __vue_normalize__(__vue_template__, __vue_inject_styles__, typeof __vue_script__ === 'undefined' ? {} : __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, typeof __vue_create_injector__ !== 'undefined' ? __vue_create_injector__ : function () {}, typeof __vue_create_injector_ssr__ !== 'undefined' ? __vue_create_injector_ssr__ : function () {}); - maximum: { - type: Number, - default: function _default() { - return this.multiple ? 0 : 1; - } - }, + var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - addIndex: { - type: [Boolean, Number] - }, + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - directory: { - type: Boolean - }, + function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } - postAction: { - type: String - }, + var CHUNK_DEFAULT_OPTIONS = { + headers: {}, + action: '', + minSize: 1048576, + maxActive: 3, + maxRetries: 5, - putAction: { - type: String - }, + handler: ChunkUploadHandler + }; - customAction: { - type: Function + var script$1 = { + components: { + InputFile: InputFile }, + props: { + inputId: { + type: String + }, - headers: { - type: Object, - default: Object - }, + name: { + type: String, + default: 'file' + }, - data: { - type: Object, - default: Object - }, + accept: { + type: String + }, - timeout: { - type: Number, - default: 0 - }, + capture: {}, - drop: { - default: false - }, + multiple: { + type: Boolean + }, - dropDirectory: { - type: Boolean, - default: true - }, + maximum: { + type: Number, + default: function _default() { + return this.multiple ? 0 : 1; + } + }, - size: { - type: Number, - default: 0 - }, + addIndex: { + type: [Boolean, Number] + }, - extensions: { - default: Array - }, + directory: { + type: Boolean + }, - value: { - type: Array, - default: Array - }, + postAction: { + type: String + }, - thread: { - type: Number, - default: 1 - }, + putAction: { + type: String + }, - // Chunk upload enabled - chunkEnabled: { - type: Boolean, - default: false - }, + customAction: { + type: Function + }, - // Chunk upload properties - chunk: { - type: Object, - default: function _default() { - return CHUNK_DEFAULT_OPTIONS; - } - } - }, - - data: function data() { - return { - files: this.value, - features: { - html5: true, - directory: false, - drag: false + headers: { + type: Object, + default: Object }, - active: false, - dropActive: false, + data: { + type: Object, + default: Object + }, - uploading: 0, + timeout: { + type: Number, + default: 0 + }, - destroy: false - }; - }, + drop: { + default: false + }, + dropDirectory: { + type: Boolean, + default: true + }, - /** - * mounted - * @return {[type]} [description] - */ - mounted: function mounted() { - var input = document.createElement('input'); - input.type = 'file'; - input.multiple = true; - - // html5 特征 - if (window.FormData && input.files) { - // 上传目录特征 - if (typeof input.webkitdirectory === 'boolean' || typeof input.directory === 'boolean') { - this.features.directory = true; - } + size: { + type: Number, + default: 0 + }, - // 拖拽特征 - if (this.features.html5 && typeof input.ondrop !== 'undefined') { - this.features.drop = true; - } - } else { - this.features.html5 = false; - } + extensions: { + default: Array + }, - // files 定位缓存 - this.maps = {}; + value: { + type: Array, + default: Array + }, - this.$nextTick(function () { + thread: { + type: Number, + default: 1 + }, - // 更新下父级 - if (this.$parent) { - this.$parent.$forceUpdate(); - } + // Chunk upload enabled + chunkEnabled: { + type: Boolean, + default: false + }, - // 拖拽渲染 - this.watchDrop(this.drop); - }); - }, + // Chunk upload properties + chunk: { + type: Object, + default: function _default() { + return CHUNK_DEFAULT_OPTIONS; + } + } + }, + data: function data() { + return { + files: this.value, + features: { + html5: true, + directory: false, + drag: false + }, - /** - * beforeDestroy - * @return {[type]} [description] - */ - beforeDestroy: function beforeDestroy() { - // 已销毁 - this.destroy = true; + active: false, + dropActive: false, - // 设置成不激活 - this.active = false; - }, + uploading: 0, + destroy: false + }; + }, - computed: { - /** - * uploading 正在上传的线程 - * @return {[type]} [description] - */ /** - * uploaded 文件列表是否全部已上传 + * mounted * @return {[type]} [description] */ - uploaded: function uploaded() { - var file = void 0; - for (var i = 0; i < this.files.length; i++) { - file = this.files[i]; - if (file.fileObject && !file.error && !file.success) { - return false; + mounted: function mounted() { + var input = document.createElement('input'); + input.type = 'file'; + input.multiple = true; + + // html5 特征 + if (window.FormData && input.files) { + // 上传目录特征 + if (typeof input.webkitdirectory === 'boolean' || typeof input.directory === 'boolean') { + this.features.directory = true; } - } - return true; - }, - chunkOptions: function chunkOptions() { - return Object.assign(CHUNK_DEFAULT_OPTIONS, this.chunk); - }, - className: function className() { - return ['file-uploads', this.features.html5 ? 'file-uploads-html5' : 'file-uploads-html4', this.features.directory && this.directory ? 'file-uploads-directory' : undefined, this.features.drop && this.drop ? 'file-uploads-drop' : undefined]; - } - }, - watch: { - active: function active(_active) { - this.watchActive(_active); - }, - dropActive: function dropActive() { - if (this.$parent) { - this.$parent.$forceUpdate(); - } - }, - drop: function drop(value) { - this.watchDrop(value); - }, - value: function value(files) { - if (this.files === files) { - return; + // 拖拽特征 + if (this.features.html5 && typeof input.ondrop !== 'undefined') { + this.features.drop = true; + } + } else { + this.features.html5 = false; } - this.files = files; - - var oldMaps = this.maps; - // 重写 maps 缓存 + // files 定位缓存 this.maps = {}; - for (var i = 0; i < this.files.length; i++) { - var file = this.files[i]; - this.maps[file.id] = file; - } - // add, update - for (var key in this.maps) { - var newFile = this.maps[key]; - var oldFile = oldMaps[key]; - if (newFile !== oldFile) { - this.emitFile(newFile, oldFile); - } - } + this.$nextTick(function () { - // delete - for (var _key in oldMaps) { - if (!this.maps[_key]) { - this.emitFile(undefined, oldMaps[_key]); + // 更新下父级 + if (this.$parent) { + this.$parent.$forceUpdate(); } - } - } - }, - - methods: { - - // 清空 - clear: function clear() { - if (this.files.length) { - var files = this.files; - this.files = []; - - // 定位 - this.maps = {}; - // 事件 - this.emitInput(); - for (var i = 0; i < files.length; i++) { - this.emitFile(undefined, files[i]); - } - } - return true; + // 拖拽渲染 + this.watchDrop(this.drop); + }); }, - // 选择 - get: function get(id) { - if (!id) { - return false; - } - - if ((typeof id === 'undefined' ? 'undefined' : _typeof(id)) === 'object') { - return this.maps[id.id] || false; - } + /** + * beforeDestroy + * @return {[type]} [description] + */ + beforeDestroy: function beforeDestroy() { + // 已销毁 + this.destroy = true; - return this.maps[id] || false; + // 设置成不激活 + this.active = false; }, - // 添加 - add: function add(_files) { - var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.addIndex; - - var files = _files; - var isArray = files instanceof Array; - - // 不是数组整理成数组 - if (!isArray) { - files = [files]; + computed: { + /** + * uploading 正在上传的线程 + * @return {[type]} [description] + */ + + /** + * uploaded 文件列表是否全部已上传 + * @return {[type]} [description] + */ + uploaded: function uploaded() { + var file = void 0; + for (var i = 0; i < this.files.length; i++) { + file = this.files[i]; + if (file.fileObject && !file.error && !file.success) { + return false; + } + } + return true; + }, + chunkOptions: function chunkOptions() { + return Object.assign(CHUNK_DEFAULT_OPTIONS, this.chunk); + }, + className: function className() { + return ['file-uploads', this.features.html5 ? 'file-uploads-html5' : 'file-uploads-html4', this.features.directory && this.directory ? 'file-uploads-directory' : undefined, this.features.drop && this.drop ? 'file-uploads-drop' : undefined]; } + }, - // 遍历规范对象 - var addFiles = []; - for (var i = 0; i < files.length; i++) { - var file = files[i]; - if (this.features.html5 && file instanceof Blob) { - file = { - file: file, - size: file.size, - name: file.webkitRelativePath || file.relativePath || file.name || 'unknown', - type: file.type - }; + watch: { + active: function active(_active) { + this.watchActive(_active); + }, + dropActive: function dropActive() { + if (this.$parent) { + this.$parent.$forceUpdate(); } - var fileObject = false; - if (file.fileObject === false) { - // false - } else if (file.fileObject) { - fileObject = true; - } else if (typeof Element !== 'undefined' && file.el instanceof Element) { - fileObject = true; - } else if (typeof Blob !== 'undefined' && file.file instanceof Blob) { - fileObject = true; - } - if (fileObject) { - file = _extends({ - fileObject: true, - size: -1, - name: 'Filename', - type: '', - active: false, - error: '', - success: false, - putAction: this.putAction, - postAction: this.postAction, - timeout: this.timeout - }, file, { - response: {}, - - progress: '0.00', // 只读 - speed: 0 // 只读 - // xhr: false, // 只读 - // iframe: false, // 只读 - }); - - file.data = _extends({}, this.data, file.data ? file.data : {}); - - file.headers = _extends({}, this.headers, file.headers ? file.headers : {}); + }, + drop: function drop(value) { + this.watchDrop(value); + }, + value: function value(files) { + if (this.files === files) { + return; } + this.files = files; - // 必须包含 id - if (!file.id) { - file.id = Math.random().toString(36).substr(2); - } + var oldMaps = this.maps; - if (this.emitFilter(file, undefined)) { - continue; + // 重写 maps 缓存 + this.maps = {}; + for (var i = 0; i < this.files.length; i++) { + var file = this.files[i]; + this.maps[file.id] = file; } - // 最大数量限制 - if (this.maximum > 1 && addFiles.length + this.files.length >= this.maximum) { - break; + // add, update + for (var key in this.maps) { + var newFile = this.maps[key]; + var oldFile = oldMaps[key]; + if (newFile !== oldFile) { + this.emitFile(newFile, oldFile); + } } - addFiles.push(file); - - // 最大数量限制 - if (this.maximum === 1) { - break; + // delete + for (var _key in oldMaps) { + if (!this.maps[_key]) { + this.emitFile(undefined, oldMaps[_key]); + } } } + }, - // 没有文件 - if (!addFiles.length) { - return false; - } + methods: { - // 如果是 1 清空 - if (this.maximum === 1) { - this.clear(); - } + // 清空 + clear: function clear() { + if (this.files.length) { + var files = this.files; + this.files = []; - // 添加进去 files - var newFiles = void 0; - if (index === true || index === 0) { - newFiles = addFiles.concat(this.files); - } else if (index) { - newFiles = addFiles.concat([]); - newFiles.splice(index, 0, addFiles); - } else { - newFiles = this.files.concat(addFiles); - } + // 定位 + this.maps = {}; - this.files = newFiles; + // 事件 + this.emitInput(); + for (var i = 0; i < files.length; i++) { + this.emitFile(undefined, files[i]); + } + } + return true; + }, - // 定位 - for (var _i = 0; _i < addFiles.length; _i++) { - var _file2 = addFiles[_i]; - this.maps[_file2.id] = _file2; - } - // 事件 - this.emitInput(); - for (var _i2 = 0; _i2 < addFiles.length; _i2++) { - this.emitFile(addFiles[_i2], undefined); - } + // 选择 + get: function get(id) { + if (!id) { + return false; + } - return isArray ? addFiles : addFiles[0]; - }, + if ((typeof id === 'undefined' ? 'undefined' : _typeof(id)) === 'object') { + return this.maps[id.id] || false; + } + return this.maps[id] || false; + }, - // 添加表单文件 - addInputFile: function addInputFile(el) { - var files = []; - if (el.files) { - for (var i = 0; i < el.files.length; i++) { - var file = el.files[i]; - files.push({ - size: file.size, - name: file.webkitRelativePath || file.relativePath || file.name, - type: file.type, - file: file, - el: el - }); - } - } else { - files.push({ - name: el.value.replace(/^.*?([^\/\\\r\n]+)$/, '$1'), - el: el - }); - } - return this.add(files); - }, + // 添加 + add: function add(_files) { + var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.addIndex; - // 添加 DataTransfer - addDataTransfer: function addDataTransfer(dataTransfer) { - var _this = this; + var files = _files; + var isArray = files instanceof Array; - var files = []; - if (dataTransfer.items && dataTransfer.items.length) { - var items = []; - for (var i = 0; i < dataTransfer.items.length; i++) { - var item = dataTransfer.items[i]; - if (item.getAsEntry) { - item = item.getAsEntry() || item.getAsFile(); - } else if (item.webkitGetAsEntry) { - item = item.webkitGetAsEntry() || item.getAsFile(); - } else { - item = item.getAsFile(); - } - if (item) { - items.push(item); - } + // 不是数组整理成数组 + if (!isArray) { + files = [files]; } - return new Promise(function (resolve, reject) { - var forEach = function forEach(i) { - var item = items[i]; - // 结束 文件数量大于 最大数量 - if (!item || _this.maximum > 0 && files.length >= _this.maximum) { - return resolve(_this.add(files)); - } - _this.getEntry(item).then(function (results) { - files.push.apply(files, _toConsumableArray(results)); - forEach(i + 1); + // 遍历规范对象 + var addFiles = []; + for (var i = 0; i < files.length; i++) { + var file = files[i]; + if (this.features.html5 && file instanceof Blob) { + file = { + file: file, + size: file.size, + name: file.webkitRelativePath || file.relativePath || file.name || 'unknown', + type: file.type + }; + } + var fileObject = false; + if (file.fileObject === false) ; else if (file.fileObject) { + fileObject = true; + } else if (typeof Element !== 'undefined' && file.el instanceof Element) { + fileObject = true; + } else if (typeof Blob !== 'undefined' && file.file instanceof Blob) { + fileObject = true; + } + if (fileObject) { + file = _extends({ + fileObject: true, + size: -1, + name: 'Filename', + type: '', + active: false, + error: '', + success: false, + putAction: this.putAction, + postAction: this.postAction, + timeout: this.timeout + }, file, { + response: {}, + + progress: '0.00', // 只读 + speed: 0 // 只读 + // xhr: false, // 只读 + // iframe: false, // 只读 }); - }; - forEach(0); - }); - } - if (dataTransfer.files.length) { - for (var _i3 = 0; _i3 < dataTransfer.files.length; _i3++) { - files.push(dataTransfer.files[_i3]); - if (this.maximum > 0 && files.length >= this.maximum) { - break; + file.data = _extends({}, this.data, file.data ? file.data : {}); + + file.headers = _extends({}, this.headers, file.headers ? file.headers : {}); } - } - return Promise.resolve(this.add(files)); - } - return Promise.resolve([]); - }, + // 必须包含 id + if (!file.id) { + file.id = Math.random().toString(36).substr(2); + } + if (this.emitFilter(file, undefined)) { + continue; + } - // 获得 entry - getEntry: function getEntry(entry) { - var _this2 = this; + // 最大数量限制 + if (this.maximum > 1 && addFiles.length + this.files.length >= this.maximum) { + break; + } - var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; + addFiles.push(file); - return new Promise(function (resolve, reject) { - if (entry.isFile) { - entry.file(function (file) { - resolve([{ - size: file.size, - name: path + file.name, - type: file.type, - file: file - }]); - }); - } else if (entry.isDirectory && _this2.dropDirectory) { - var files = []; - var dirReader = entry.createReader(); - var readEntries = function readEntries() { - dirReader.readEntries(function (entries) { - var forEach = function forEach(i) { - if (!entries[i] && i === 0 || _this2.maximum > 0 && files.length >= _this2.maximum) { - return resolve(files); - } - if (!entries[i]) { - return readEntries(); - } - _this2.getEntry(entries[i], path + entry.name + '/').then(function (results) { - files.push.apply(files, _toConsumableArray(results)); - forEach(i + 1); - }); - }; - forEach(0); - }); - }; - readEntries(); - } else { - resolve([]); + // 最大数量限制 + if (this.maximum === 1) { + break; + } } - }); - }, - replace: function replace(id1, id2) { - var file1 = this.get(id1); - var file2 = this.get(id2); - if (!file1 || !file2 || file1 === file2) { - return false; - } - var files = this.files.concat([]); - var index1 = files.indexOf(file1); - var index2 = files.indexOf(file2); - if (index1 === -1 || index2 === -1) { - return false; - } - files[index1] = file2; - files[index2] = file1; - this.files = files; - this.emitInput(); - return true; - }, - - // 移除 - remove: function remove(id) { - var file = this.get(id); - if (file) { - if (this.emitFilter(undefined, file)) { - return false; - } - var files = this.files.concat([]); - var index = files.indexOf(file); - if (index === -1) { - console.error('remove', file); + // 没有文件 + if (!addFiles.length) { return false; } - files.splice(index, 1); - this.files = files; - - // 定位 - delete this.maps[file.id]; - // 事件 - this.emitInput(); - this.emitFile(undefined, file); - } - return file; - }, - - - // 更新 - update: function update(id, data) { - var file = this.get(id); - if (file) { - var newFile = _extends({}, file, data); - // 停用必须加上错误 - if (file.fileObject && file.active && !newFile.active && !newFile.error && !newFile.success) { - newFile.error = 'abort'; + // 如果是 1 清空 + if (this.maximum === 1) { + this.clear(); } - if (this.emitFilter(newFile, file)) { - return false; + // 添加进去 files + var newFiles = void 0; + if (index === true || index === 0) { + newFiles = addFiles.concat(this.files); + } else if (index) { + newFiles = addFiles.concat([]); + newFiles.splice(index, 0, addFiles); + } else { + newFiles = this.files.concat(addFiles); } - var files = this.files.concat([]); - var index = files.indexOf(file); - if (index === -1) { - console.error('update', file); - return false; - } - files.splice(index, 1, newFile); - this.files = files; + this.files = newFiles; - // 删除 旧定位 写入 新定位 (已便支持修改id) - delete this.maps[file.id]; - this.maps[newFile.id] = newFile; + // 定位 + for (var _i = 0; _i < addFiles.length; _i++) { + var _file2 = addFiles[_i]; + this.maps[_file2.id] = _file2; + } // 事件 this.emitInput(); - this.emitFile(newFile, file); - return newFile; - } - return false; - }, - - - // 预处理 事件 过滤器 - emitFilter: function emitFilter(newFile, oldFile) { - var isPrevent = false; - this.$emit('input-filter', newFile, oldFile, function () { - isPrevent = true; - return isPrevent; - }); - return isPrevent; - }, - - - // 处理后 事件 分发 - emitFile: function emitFile(newFile, oldFile) { - this.$emit('input-file', newFile, oldFile); - if (newFile && newFile.fileObject && newFile.active && (!oldFile || !oldFile.active)) { - this.uploading++; - // 激活 - this.$nextTick(function () { - var _this3 = this; - - setTimeout(function () { - _this3.upload(newFile).then(function () { - // eslint-disable-next-line - newFile = _this3.get(newFile); - if (newFile && newFile.fileObject) { - _this3.update(newFile, { - active: false, - success: !newFile.error - }); - } - }).catch(function (e) { - _this3.update(newFile, { - active: false, - success: false, - error: e.code || e.error || e.message || e - }); - }); - }, parseInt(Math.random() * 50 + 50, 10)); - }); - } else if ((!newFile || !newFile.fileObject || !newFile.active) && oldFile && oldFile.fileObject && oldFile.active) { - // 停止 - this.uploading--; - } - - // 自动延续激活 - if (this.active && (Boolean(newFile) !== Boolean(oldFile) || newFile.active !== oldFile.active)) { - this.watchActive(true); - } - }, - emitInput: function emitInput() { - this.$emit('input', this.files); - }, - - - // 上传 - upload: function upload(id) { - var file = this.get(id); - - // 被删除 - if (!file) { - return Promise.reject('not_exists'); - } - - // 不是文件对象 - if (!file.fileObject) { - return Promise.reject('file_object'); - } + for (var _i2 = 0; _i2 < addFiles.length; _i2++) { + this.emitFile(addFiles[_i2], undefined); + } - // 有错误直接响应 - if (file.error) { - return Promise.reject(file.error); - } + return isArray ? addFiles : addFiles[0]; + }, - // 已完成直接响应 - if (file.success) { - return Promise.resolve(file); - } - // 后缀 - var extensions = this.extensions; - if (extensions && (extensions.length || typeof extensions.length === 'undefined')) { - if ((typeof extensions === 'undefined' ? 'undefined' : _typeof(extensions)) !== 'object' || !(extensions instanceof RegExp)) { - if (typeof extensions === 'string') { - extensions = extensions.split(',').map(function (value) { - return value.trim(); - }).filter(function (value) { - return value; + // 添加表单文件 + addInputFile: function addInputFile(el) { + var files = []; + if (el.files) { + for (var i = 0; i < el.files.length; i++) { + var file = el.files[i]; + files.push({ + size: file.size, + name: file.webkitRelativePath || file.relativePath || file.name, + type: file.type, + file: file, + el: el }); } - extensions = new RegExp('\\.(' + extensions.join('|').replace(/\./g, '\\.') + ')$', 'i'); - } - if (file.name.search(extensions) === -1) { - return Promise.reject('extension'); + } else { + files.push({ + name: el.value.replace(/^.*?([^\/\\\r\n]+)$/, '$1'), + el: el + }); } - } + return this.add(files); + }, - // 大小 - if (this.size > 0 && file.size >= 0 && file.size > this.size) { - return Promise.reject('size'); - } - if (this.customAction) { - return this.customAction(file, this); - } + // 添加 DataTransfer + addDataTransfer: function addDataTransfer(dataTransfer) { + var _this = this; - if (this.features.html5) { - if (this.shouldUseChunkUpload(file)) { - return this.uploadChunk(file); - } - if (file.putAction) { - return this.uploadPut(file); + var files = []; + if (dataTransfer.items && dataTransfer.items.length) { + var items = []; + for (var i = 0; i < dataTransfer.items.length; i++) { + var item = dataTransfer.items[i]; + if (item.getAsEntry) { + item = item.getAsEntry() || item.getAsFile(); + } else if (item.webkitGetAsEntry) { + item = item.webkitGetAsEntry() || item.getAsFile(); + } else { + item = item.getAsFile(); + } + if (item) { + items.push(item); + } + } + + return new Promise(function (resolve, reject) { + var forEach = function forEach(i) { + var item = items[i]; + // 结束 文件数量大于 最大数量 + if (!item || _this.maximum > 0 && files.length >= _this.maximum) { + return resolve(_this.add(files)); + } + _this.getEntry(item).then(function (results) { + files.push.apply(files, _toConsumableArray(results)); + forEach(i + 1); + }); + }; + forEach(0); + }); } - if (file.postAction) { - return this.uploadHtml5(file); + + if (dataTransfer.files.length) { + for (var _i3 = 0; _i3 < dataTransfer.files.length; _i3++) { + files.push(dataTransfer.files[_i3]); + if (this.maximum > 0 && files.length >= this.maximum) { + break; + } + } + return Promise.resolve(this.add(files)); } - } - if (file.postAction) { - return this.uploadHtml4(file); - } - return Promise.reject('No action configured'); - }, + return Promise.resolve([]); + }, - /** - * Whether this file should be uploaded using chunk upload or not - * - * @param Object file - */ - shouldUseChunkUpload: function shouldUseChunkUpload(file) { - return this.chunkEnabled && !!this.chunkOptions.handler && file.size > this.chunkOptions.minSize; - }, + // 获得 entry + getEntry: function getEntry(entry) { + var _this2 = this; - /** - * Upload a file using Chunk method - * - * @param File file - */ - uploadChunk: function uploadChunk(file) { - var HandlerClass = this.chunkOptions.handler; - file.chunk = new HandlerClass(file, this.chunkOptions); + var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; - return file.chunk.upload(); - }, - uploadPut: function uploadPut(file) { - var querys = []; - var value = void 0; - for (var key in file.data) { - value = file.data[key]; - if (value !== null && value !== undefined) { - querys.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); - } - } - var queryString = querys.length ? (file.putAction.indexOf('?') === -1 ? '?' : '&') + querys.join('&') : ''; - var xhr = new XMLHttpRequest(); - xhr.open('PUT', file.putAction + queryString); - return this.uploadXhr(xhr, file, file.file); - }, - uploadHtml5: function uploadHtml5(file) { - var form = new window.FormData(); - var value = void 0; - for (var key in file.data) { - value = file.data[key]; - if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && typeof value.toString !== 'function') { - if (value instanceof File) { - form.append(key, value, value.name); + return new Promise(function (resolve, reject) { + if (entry.isFile) { + entry.file(function (file) { + resolve([{ + size: file.size, + name: path + file.name, + type: file.type, + file: file + }]); + }); + } else if (entry.isDirectory && _this2.dropDirectory) { + var files = []; + var dirReader = entry.createReader(); + var readEntries = function readEntries() { + dirReader.readEntries(function (entries) { + var forEach = function forEach(i) { + if (!entries[i] && i === 0 || _this2.maximum > 0 && files.length >= _this2.maximum) { + return resolve(files); + } + if (!entries[i]) { + return readEntries(); + } + _this2.getEntry(entries[i], path + entry.name + '/').then(function (results) { + files.push.apply(files, _toConsumableArray(results)); + forEach(i + 1); + }); + }; + forEach(0); + }); + }; + readEntries(); } else { - form.append(key, JSON.stringify(value)); + resolve([]); } - } else if (value !== null && value !== undefined) { - form.append(key, value); + }); + }, + replace: function replace(id1, id2) { + var file1 = this.get(id1); + var file2 = this.get(id2); + if (!file1 || !file2 || file1 === file2) { + return false; } - } - form.append(this.name, file.file, file.file.filename || file.name); - var xhr = new XMLHttpRequest(); - xhr.open('POST', file.postAction); - return this.uploadXhr(xhr, file, form); - }, - uploadXhr: function uploadXhr(xhr, _file, body) { - var _this4 = this; - - var file = _file; - var speedTime = 0; - var speedLoaded = 0; - - // 进度条 - xhr.upload.onprogress = function (e) { - // 还未开始上传 已删除 未激活 - file = _this4.get(file); - if (!e.lengthComputable || !file || !file.fileObject || !file.active) { - return; + var files = this.files.concat([]); + var index1 = files.indexOf(file1); + var index2 = files.indexOf(file2); + if (index1 === -1 || index2 === -1) { + return false; } + files[index1] = file2; + files[index2] = file1; + this.files = files; + this.emitInput(); + return true; + }, - // 进度 速度 每秒更新一次 - var speedTime2 = Math.round(Date.now() / 1000); - if (speedTime2 === speedTime) { - return; - } - speedTime = speedTime2; - file = _this4.update(file, { - progress: (e.loaded / e.total * 100).toFixed(2), - speed: e.loaded - speedLoaded - }); - speedLoaded = e.loaded; - }; + // 移除 + remove: function remove(id) { + var file = this.get(id); + if (file) { + if (this.emitFilter(undefined, file)) { + return false; + } + var files = this.files.concat([]); + var index = files.indexOf(file); + if (index === -1) { + console.error('remove', file); + return false; + } + files.splice(index, 1); + this.files = files; - // 检查激活状态 - var interval = setInterval(function () { - file = _this4.get(file); - if (file && file.fileObject && !file.success && !file.error && file.active) { - return; - } + // 定位 + delete this.maps[file.id]; - if (interval) { - clearInterval(interval); - interval = false; + // 事件 + this.emitInput(); + this.emitFile(undefined, file); } + return file; + }, - try { - xhr.abort(); - xhr.timeout = 1; - } catch (e) {} - }, 100); - return new Promise(function (resolve, reject) { - var complete = void 0; - var fn = function fn(e) { - // 已经处理过了 - if (complete) { - return; - } - complete = true; - if (interval) { - clearInterval(interval); - interval = false; + // 更新 + update: function update(id, data) { + var file = this.get(id); + if (file) { + var newFile = _extends({}, file, data); + // 停用必须加上错误 + if (file.fileObject && file.active && !newFile.active && !newFile.error && !newFile.success) { + newFile.error = 'abort'; } - file = _this4.get(file); - - // 不存在直接响应 - if (!file) { - return reject('not_exists'); + if (this.emitFilter(newFile, file)) { + return false; } - // 不是文件对象 - if (!file.fileObject) { - return reject('file_object'); + var files = this.files.concat([]); + var index = files.indexOf(file); + if (index === -1) { + console.error('update', file); + return false; } + files.splice(index, 1, newFile); + this.files = files; - // 有错误自动响应 - if (file.error) { - return reject(file.error); - } + // 删除 旧定位 写入 新定位 (已便支持修改id) + delete this.maps[file.id]; + this.maps[newFile.id] = newFile; - // 未激活 - if (!file.active) { - return reject('abort'); - } + // 事件 + this.emitInput(); + this.emitFile(newFile, file); + return newFile; + } + return false; + }, - // 已完成 直接相应 - if (file.success) { - return resolve(file); - } - var data = {}; + // 预处理 事件 过滤器 + emitFilter: function emitFilter(newFile, oldFile) { + var isPrevent = false; + this.$emit('input-filter', newFile, oldFile, function () { + isPrevent = true; + return isPrevent; + }); + return isPrevent; + }, - switch (e.type) { - case 'timeout': - case 'abort': - data.error = e.type; - break; - case 'error': - if (!xhr.status) { - data.error = 'network'; - } else if (xhr.status >= 500) { - data.error = 'server'; - } else if (xhr.status >= 400) { - data.error = 'denied'; - } - break; - default: - if (xhr.status >= 500) { - data.error = 'server'; - } else if (xhr.status >= 400) { - data.error = 'denied'; - } else { - data.progress = '100.00'; - } - } - if (xhr.responseText) { - var contentType = xhr.getResponseHeader('Content-Type'); - if (contentType && contentType.indexOf('/json') !== -1) { - data.response = JSON.parse(xhr.responseText); - } else { - data.response = xhr.responseText; - } - } + // 处理后 事件 分发 + emitFile: function emitFile(newFile, oldFile) { + this.$emit('input-file', newFile, oldFile); + if (newFile && newFile.fileObject && newFile.active && (!oldFile || !oldFile.active)) { + this.uploading++; + // 激活 + this.$nextTick(function () { + var _this3 = this; + + setTimeout(function () { + _this3.upload(newFile).then(function () { + // eslint-disable-next-line + newFile = _this3.get(newFile); + if (newFile && newFile.fileObject) { + _this3.update(newFile, { + active: false, + success: !newFile.error + }); + } + }).catch(function (e) { + _this3.update(newFile, { + active: false, + success: false, + error: e.code || e.error || e.message || e + }); + }); + }, parseInt(Math.random() * 50 + 50, 10)); + }); + } else if ((!newFile || !newFile.fileObject || !newFile.active) && oldFile && oldFile.fileObject && oldFile.active) { + // 停止 + this.uploading--; + } - // 更新 - file = _this4.update(file, data); + // 自动延续激活 + if (this.active && (Boolean(newFile) !== Boolean(oldFile) || newFile.active !== oldFile.active)) { + this.watchActive(true); + } + }, + emitInput: function emitInput() { + this.$emit('input', this.files); + }, - // 相应错误 - if (file.error) { - return reject(file.error); - } - // 响应 - return resolve(file); - }; + // 上传 + upload: function upload(id) { + var file = this.get(id); - // 事件 - xhr.onload = fn; - xhr.onerror = fn; - xhr.onabort = fn; - xhr.ontimeout = fn; + // 被删除 + if (!file) { + return Promise.reject('not_exists'); + } - // 超时 - if (file.timeout) { - xhr.timeout = file.timeout; + // 不是文件对象 + if (!file.fileObject) { + return Promise.reject('file_object'); } - // headers - for (var key in file.headers) { - xhr.setRequestHeader(key, file.headers[key]); + // 有错误直接响应 + if (file.error) { + return Promise.reject(file.error); } - // 更新 xhr - file = _this4.update(file, { xhr: xhr }); + // 已完成直接响应 + if (file.success) { + return Promise.resolve(file); + } - // 开始上传 - xhr.send(body); - }); - }, - uploadHtml4: function uploadHtml4(_file) { - var _this5 = this; + // 后缀 + var extensions = this.extensions; + if (extensions && (extensions.length || typeof extensions.length === 'undefined')) { + if ((typeof extensions === 'undefined' ? 'undefined' : _typeof(extensions)) !== 'object' || !(extensions instanceof RegExp)) { + if (typeof extensions === 'string') { + extensions = extensions.split(',').map(function (value) { + return value.trim(); + }).filter(function (value) { + return value; + }); + } + extensions = new RegExp('\\.(' + extensions.join('|').replace(/\./g, '\\.') + ')$', 'i'); + } + if (file.name.search(extensions) === -1) { + return Promise.reject('extension'); + } + } - var file = _file; - var onKeydown = function onKeydown(e) { - if (e.keyCode === 27) { - e.preventDefault(); + // 大小 + if (this.size > 0 && file.size >= 0 && file.size > this.size) { + return Promise.reject('size'); + } + + if (this.customAction) { + return this.customAction(file, this); } - }; - var iframe = document.createElement('iframe'); - iframe.id = 'upload-iframe-' + file.id; - iframe.name = 'upload-iframe-' + file.id; - iframe.src = 'about:blank'; - iframe.setAttribute('style', 'width:1px;height:1px;top:-999em;position:absolute; margin-top:-999em;'); + if (this.features.html5) { + if (this.shouldUseChunkUpload(file)) { + return this.uploadChunk(file); + } + if (file.putAction) { + return this.uploadPut(file); + } + if (file.postAction) { + return this.uploadHtml5(file); + } + } + if (file.postAction) { + return this.uploadHtml4(file); + } + return Promise.reject('No action configured'); + }, - var form = document.createElement('form'); - form.action = file.postAction; + /** + * Whether this file should be uploaded using chunk upload or not + * + * @param Object file + */ + shouldUseChunkUpload: function shouldUseChunkUpload(file) { + return this.chunkEnabled && !!this.chunkOptions.handler && file.size > this.chunkOptions.minSize; + }, - form.name = 'upload-form-' + file.id; - form.setAttribute('method', 'POST'); - form.setAttribute('target', 'upload-iframe-' + file.id); - form.setAttribute('enctype', 'multipart/form-data'); + /** + * Upload a file using Chunk method + * + * @param File file + */ + uploadChunk: function uploadChunk(file) { + var HandlerClass = this.chunkOptions.handler; + file.chunk = new HandlerClass(file, this.chunkOptions); - var value = void 0; - var input = void 0; - for (var key in file.data) { - value = file.data[key]; - if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && typeof value.toString !== 'function') { - value = JSON.stringify(value); + return file.chunk.upload(); + }, + uploadPut: function uploadPut(file) { + var querys = []; + var value = void 0; + for (var key in file.data) { + value = file.data[key]; + if (value !== null && value !== undefined) { + querys.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + } } - if (value !== null && value !== undefined) { - input = document.createElement('input'); - input.type = 'hidden'; - input.name = key; - input.value = value; - form.appendChild(input); + var queryString = querys.length ? (file.putAction.indexOf('?') === -1 ? '?' : '&') + querys.join('&') : ''; + var xhr = new XMLHttpRequest(); + xhr.open('PUT', file.putAction + queryString); + return this.uploadXhr(xhr, file, file.file); + }, + uploadHtml5: function uploadHtml5(file) { + var form = new window.FormData(); + var value = void 0; + for (var key in file.data) { + value = file.data[key]; + if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && typeof value.toString !== 'function') { + if (value instanceof File) { + form.append(key, value, value.name); + } else { + form.append(key, JSON.stringify(value)); + } + } else if (value !== null && value !== undefined) { + form.append(key, value); + } } - } - form.appendChild(file.el); + form.append(this.name, file.file, file.file.filename || file.name); + var xhr = new XMLHttpRequest(); + xhr.open('POST', file.postAction); + return this.uploadXhr(xhr, file, form); + }, + uploadXhr: function uploadXhr(xhr, _file, body) { + var _this4 = this; - document.body.appendChild(iframe).appendChild(form); + var file = _file; + var speedTime = 0; + var speedLoaded = 0; - var getResponseData = function getResponseData() { - var doc = void 0; - try { - if (iframe.contentWindow) { - doc = iframe.contentWindow.document; + // 进度条 + xhr.upload.onprogress = function (e) { + // 还未开始上传 已删除 未激活 + file = _this4.get(file); + if (!e.lengthComputable || !file || !file.fileObject || !file.active) { + return; } - } catch (err) {} - if (!doc) { - try { - doc = iframe.contentDocument ? iframe.contentDocument : iframe.document; - } catch (err) { - doc = iframe.document; + + // 进度 速度 每秒更新一次 + var speedTime2 = Math.round(Date.now() / 1000); + if (speedTime2 === speedTime) { + return; } - } - if (doc && doc.body) { - return doc.body.innerHTML; - } - return null; - }; + speedTime = speedTime2; - return new Promise(function (resolve, reject) { - setTimeout(function () { - file = _this5.update(file, { iframe: iframe }); + file = _this4.update(file, { + progress: (e.loaded / e.total * 100).toFixed(2), + speed: e.loaded - speedLoaded + }); + speedLoaded = e.loaded; + }; - // 不存在 - if (!file) { - return reject('not_exists'); + // 检查激活状态 + var interval = setInterval(function () { + file = _this4.get(file); + if (file && file.fileObject && !file.success && !file.error && file.active) { + return; } - // 定时检查 - var interval = setInterval(function () { - file = _this5.get(file); - if (file && file.fileObject && !file.success && !file.error && file.active) { - return; - } - - if (interval) { - clearInterval(interval); - interval = false; - } + if (interval) { + clearInterval(interval); + interval = false; + } - iframe.onabort({ type: file ? 'abort' : 'not_exists' }); - }, 100); + try { + xhr.abort(); + xhr.timeout = 1; + } catch (e) {} + }, 100); + return new Promise(function (resolve, reject) { var complete = void 0; var fn = function fn(e) { // 已经处理过了 @@ -1645,16 +1528,12 @@ var FileUpload = { render: function render() { return; } complete = true; - if (interval) { clearInterval(interval); interval = false; } - // 关闭 esc 事件 - document.body.removeEventListener('keydown', onKeydown); - - file = _this5.get(file); + file = _this4.get(file); // 不存在直接响应 if (!file) { @@ -1681,43 +1560,45 @@ var FileUpload = { render: function render() { return resolve(file); } - var response = getResponseData(); var data = {}; + switch (e.type) { + case 'timeout': case 'abort': - data.error = 'abort'; + data.error = e.type; break; case 'error': - if (file.error) { - data.error = file.error; - } else if (response === null) { + if (!xhr.status) { data.error = 'network'; - } else { + } else if (xhr.status >= 500) { + data.error = 'server'; + } else if (xhr.status >= 400) { data.error = 'denied'; } break; default: - if (file.error) { - data.error = file.error; - } else if (data === null) { - data.error = 'network'; + if (xhr.status >= 500) { + data.error = 'server'; + } else if (xhr.status >= 400) { + data.error = 'denied'; } else { data.progress = '100.00'; } } - if (response !== null) { - if (response && response.substr(0, 1) === '{' && response.substr(response.length - 1, 1) === '}') { - try { - response = JSON.parse(response); - } catch (err) {} + if (xhr.responseText) { + var contentType = xhr.getResponseHeader('Content-Type'); + if (contentType && contentType.indexOf('/json') !== -1) { + data.response = JSON.parse(xhr.responseText); + } else { + data.response = xhr.responseText; } - data.response = response; } // 更新 - file = _this5.update(file, data); + file = _this4.update(file, data); + // 相应错误 if (file.error) { return reject(file.error); } @@ -1726,118 +1607,440 @@ var FileUpload = { render: function render() { return resolve(file); }; - // 添加事件 - iframe.onload = fn; - iframe.onerror = fn; - iframe.onabort = fn; - - // 禁止 esc 键 - document.body.addEventListener('keydown', onKeydown); - - // 提交 - form.submit(); - }, 50); - }).then(function (res) { - iframe.parentNode && iframe.parentNode.removeChild(iframe); - return res; - }).catch(function (res) { - iframe.parentNode && iframe.parentNode.removeChild(iframe); - return res; - }); - }, - watchActive: function watchActive(active) { - var file = void 0; - var index = 0; - while (file = this.files[index]) { - index++; - if (!file.fileObject) { - // 不是文件对象 - } else if (active && !this.destroy) { - if (this.uploading >= this.thread || this.uploading && !this.features.html5) { - break; + // 事件 + xhr.onload = fn; + xhr.onerror = fn; + xhr.onabort = fn; + xhr.ontimeout = fn; + + // 超时 + if (file.timeout) { + xhr.timeout = file.timeout; } - if (!file.active && !file.error && !file.success) { - this.update(file, { active: true }); + + // headers + for (var key in file.headers) { + xhr.setRequestHeader(key, file.headers[key]); } - } else { - if (file.active) { - this.update(file, { active: false }); + + // 更新 xhr + file = _this4.update(file, { xhr: xhr }); + + // 开始上传 + xhr.send(body); + }); + }, + uploadHtml4: function uploadHtml4(_file) { + var _this5 = this; + + var file = _file; + var onKeydown = function onKeydown(e) { + if (e.keyCode === 27) { + e.preventDefault(); + } + }; + + var iframe = document.createElement('iframe'); + iframe.id = 'upload-iframe-' + file.id; + iframe.name = 'upload-iframe-' + file.id; + iframe.src = 'about:blank'; + iframe.setAttribute('style', 'width:1px;height:1px;top:-999em;position:absolute; margin-top:-999em;'); + + var form = document.createElement('form'); + + form.action = file.postAction; + + form.name = 'upload-form-' + file.id; + + form.setAttribute('method', 'POST'); + form.setAttribute('target', 'upload-iframe-' + file.id); + form.setAttribute('enctype', 'multipart/form-data'); + + var value = void 0; + var input = void 0; + for (var key in file.data) { + value = file.data[key]; + if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && typeof value.toString !== 'function') { + value = JSON.stringify(value); + } + if (value !== null && value !== undefined) { + input = document.createElement('input'); + input.type = 'hidden'; + input.name = key; + input.value = value; + form.appendChild(input); } } - } - if (this.uploading === 0) { - this.active = false; - } - }, - watchDrop: function watchDrop(_el) { - var el = _el; - if (!this.features.drop) { - return; - } + form.appendChild(file.el); - // 移除挂载 - if (this.dropElement) { - try { - document.removeEventListener('dragenter', this.onDragenter, false); - document.removeEventListener('dragleave', this.onDragleave, false); - document.removeEventListener('drop', this.onDocumentDrop, false); - this.dropElement.removeEventListener('dragover', this.onDragover, false); - this.dropElement.removeEventListener('drop', this.onDrop, false); - } catch (e) {} - } + document.body.appendChild(iframe).appendChild(form); - if (!el) { - el = false; - } else if (typeof el === 'string') { - el = document.querySelector(el) || this.$root.$el.querySelector(el); - } else if (el === true) { - el = this.$parent.$el; - } + var getResponseData = function getResponseData() { + var doc = void 0; + try { + if (iframe.contentWindow) { + doc = iframe.contentWindow.document; + } + } catch (err) {} + if (!doc) { + try { + doc = iframe.contentDocument ? iframe.contentDocument : iframe.document; + } catch (err) { + doc = iframe.document; + } + } + if (doc && doc.body) { + return doc.body.innerHTML; + } + return null; + }; + + return new Promise(function (resolve, reject) { + setTimeout(function () { + file = _this5.update(file, { iframe: iframe }); + + // 不存在 + if (!file) { + return reject('not_exists'); + } + + // 定时检查 + var interval = setInterval(function () { + file = _this5.get(file); + if (file && file.fileObject && !file.success && !file.error && file.active) { + return; + } + + if (interval) { + clearInterval(interval); + interval = false; + } + + iframe.onabort({ type: file ? 'abort' : 'not_exists' }); + }, 100); + + var complete = void 0; + var fn = function fn(e) { + // 已经处理过了 + if (complete) { + return; + } + complete = true; + + if (interval) { + clearInterval(interval); + interval = false; + } + + // 关闭 esc 事件 + document.body.removeEventListener('keydown', onKeydown); + + file = _this5.get(file); + + // 不存在直接响应 + if (!file) { + return reject('not_exists'); + } + + // 不是文件对象 + if (!file.fileObject) { + return reject('file_object'); + } + + // 有错误自动响应 + if (file.error) { + return reject(file.error); + } + + // 未激活 + if (!file.active) { + return reject('abort'); + } + + // 已完成 直接相应 + if (file.success) { + return resolve(file); + } + + var response = getResponseData(); + var data = {}; + switch (e.type) { + case 'abort': + data.error = 'abort'; + break; + case 'error': + if (file.error) { + data.error = file.error; + } else if (response === null) { + data.error = 'network'; + } else { + data.error = 'denied'; + } + break; + default: + if (file.error) { + data.error = file.error; + } else if (data === null) { + data.error = 'network'; + } else { + data.progress = '100.00'; + } + } + + if (response !== null) { + if (response && response.substr(0, 1) === '{' && response.substr(response.length - 1, 1) === '}') { + try { + response = JSON.parse(response); + } catch (err) {} + } + data.response = response; + } + + // 更新 + file = _this5.update(file, data); + + if (file.error) { + return reject(file.error); + } + + // 响应 + return resolve(file); + }; + + // 添加事件 + iframe.onload = fn; + iframe.onerror = fn; + iframe.onabort = fn; + + // 禁止 esc 键 + document.body.addEventListener('keydown', onKeydown); + + // 提交 + form.submit(); + }, 50); + }).then(function (res) { + iframe.parentNode && iframe.parentNode.removeChild(iframe); + return res; + }).catch(function (res) { + iframe.parentNode && iframe.parentNode.removeChild(iframe); + return res; + }); + }, + watchActive: function watchActive(active) { + var file = void 0; + var index = 0; + while (file = this.files[index]) { + index++; + if (!file.fileObject) ; else if (active && !this.destroy) { + if (this.uploading >= this.thread || this.uploading && !this.features.html5) { + break; + } + if (!file.active && !file.error && !file.success) { + this.update(file, { active: true }); + } + } else { + if (file.active) { + this.update(file, { active: false }); + } + } + } + if (this.uploading === 0) { + this.active = false; + } + }, + watchDrop: function watchDrop(_el) { + var el = _el; + if (!this.features.drop) { + return; + } + + // 移除挂载 + if (this.dropElement) { + try { + document.removeEventListener('dragenter', this.onDragenter, false); + document.removeEventListener('dragleave', this.onDragleave, false); + document.removeEventListener('drop', this.onDocumentDrop, false); + this.dropElement.removeEventListener('dragover', this.onDragover, false); + this.dropElement.removeEventListener('drop', this.onDrop, false); + } catch (e) {} + } - this.dropElement = el; + if (!el) { + el = false; + } else if (typeof el === 'string') { + el = document.querySelector(el) || this.$root.$el.querySelector(el); + } else if (el === true) { + el = this.$parent.$el; + } + + this.dropElement = el; - if (this.dropElement) { - document.addEventListener('dragenter', this.onDragenter, false); - document.addEventListener('dragleave', this.onDragleave, false); - document.addEventListener('drop', this.onDocumentDrop, false); - this.dropElement.addEventListener('dragover', this.onDragover, false); - this.dropElement.addEventListener('drop', this.onDrop, false); + if (this.dropElement) { + document.addEventListener('dragenter', this.onDragenter, false); + document.addEventListener('dragleave', this.onDragleave, false); + document.addEventListener('drop', this.onDocumentDrop, false); + this.dropElement.addEventListener('dragover', this.onDragover, false); + this.dropElement.addEventListener('drop', this.onDrop, false); + } + }, + onDragenter: function onDragenter(e) { + e.preventDefault(); + if (!this.dropActive) { + this.dropActive = true; + } + }, + onDragleave: function onDragleave(e) { + e.preventDefault(); + if (e.target.nodeName === 'HTML' || e.target === e.explicitOriginalTarget || e.screenX === 0 && e.screenY === 0 && !e.fromElement && e.offsetX <= 0) { + this.dropActive = false; + } + }, + onDragover: function onDragover(e) { + e.preventDefault(); + }, + onDocumentDrop: function onDocumentDrop() { + this.dropActive = false; + }, + onDrop: function onDrop(e) { + e.preventDefault(); + this.addDataTransfer(e.dataTransfer); } - }, - onDragenter: function onDragenter(e) { - e.preventDefault(); - if (!this.dropActive) { - this.dropActive = true; + } + }; + + var __vue_script__$1 = script$1; + + /* template */ + var __vue_render__$1 = function __vue_render__() { + var _vm = this;var _h = _vm.$createElement;var _c = _vm._self._c || _h;return _c('label', { class: _vm.className }, [_vm._t("default"), _vm._v(" "), _c('input-file')], 2); + }; + var __vue_staticRenderFns__$1 = []; + + var __vue_template__$1 = typeof __vue_render__$1 !== 'undefined' ? { render: __vue_render__$1, staticRenderFns: __vue_staticRenderFns__$1 } : {}; + /* style */ + var __vue_inject_styles__$1 = function (inject) { + if (!inject) return; + inject("data-v-62fe22ff_0", { source: "\n.file-uploads{overflow:hidden;position:relative;text-align:center;display:inline-block\n}\n.file-uploads.file-uploads-html4 input[type=file]{opacity:0;font-size:20em;z-index:1;top:0;left:0;right:0;bottom:0;position:absolute;width:100%;height:100%\n}\n.file-uploads.file-uploads-html5 input[type=file]{overflow:hidden;position:fixed;width:1px;height:1px;z-index:-1;opacity:0\n}", map: undefined, media: undefined }); + }; + /* scoped */ + var __vue_scope_id__$1 = undefined; + /* module identifier */ + var __vue_module_identifier__$1 = undefined; + /* functional template */ + var __vue_is_functional_template__$1 = false; + /* component normalizer */ + function __vue_normalize__$1(template, style, script, scope, functional, moduleIdentifier, createInjector, createInjectorSSR) { + var component = script || {}; + + if (!component.render) { + component.render = template.render; + component.staticRenderFns = template.staticRenderFns; + component._compiled = true; + + if (functional) component.functional = true; + } + + component._scopeId = scope; + + { + var hook = void 0; + if (style) { + hook = function hook(context) { + style.call(this, createInjector(context)); + }; } - }, - onDragleave: function onDragleave(e) { - e.preventDefault(); - if (e.target.nodeName === 'HTML' || e.screenX === 0 && e.screenY === 0 && !e.fromElement && e.offsetX <= 0) { - this.dropActive = false; + + if (hook !== undefined) { + if (component.functional) { + // register for functional component in vue file + var originalRender = component.render; + component.render = function renderWithStyleInjection(h, context) { + hook.call(context); + return originalRender(h, context); + }; + } else { + // inject component registration as beforeCreate hook + var existing = component.beforeCreate; + component.beforeCreate = existing ? [].concat(existing, hook) : [hook]; + } } - }, - onDragover: function onDragover(e) { - e.preventDefault(); - }, - onDocumentDrop: function onDocumentDrop() { - this.dropActive = false; - }, - onDrop: function onDrop(e) { - e.preventDefault(); - this.addDataTransfer(e.dataTransfer); } + + return component; + } + /* style inject */ + function __vue_create_injector__$1() { + var head = document.head || document.getElementsByTagName('head')[0]; + var styles = __vue_create_injector__$1.styles || (__vue_create_injector__$1.styles = {}); + var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase()); + + return function addStyle(id, css) { + if (document.querySelector('style[data-vue-ssr-id~="' + id + '"]')) return; // SSR styles are present. + + var group = isOldIE ? css.media || 'default' : id; + var style = styles[group] || (styles[group] = { ids: [], parts: [], element: undefined }); + + if (!style.ids.includes(id)) { + var code = css.source; + var index = style.ids.length; + + style.ids.push(id); + + if (css.map) { + // https://developer.chrome.com/devtools/docs/javascript-debugging + // this makes source maps inside style tags work properly in Chrome + code += '\n/*# sourceURL=' + css.map.sources[0] + ' */'; + // http://stackoverflow.com/a/26603875 + code += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(css.map)))) + ' */'; + } + + if (isOldIE) { + style.element = style.element || document.querySelector('style[data-group=' + group + ']'); + } + + if (!style.element) { + var el = style.element = document.createElement('style'); + el.type = 'text/css'; + + if (css.media) el.setAttribute('media', css.media); + if (isOldIE) { + el.setAttribute('data-group', group); + el.setAttribute('data-next-index', '0'); + } + + head.appendChild(el); + } + + if (isOldIE) { + index = parseInt(style.element.getAttribute('data-next-index')); + style.element.setAttribute('data-next-index', index + 1); + } + + if (style.element.styleSheet) { + style.parts.push(code); + style.element.styleSheet.cssText = style.parts.filter(Boolean).join('\n'); + } else { + var textNode = document.createTextNode(code); + var nodes = style.element.childNodes; + if (nodes[index]) style.element.removeChild(nodes[index]); + if (nodes.length) style.element.insertBefore(textNode, nodes[index]);else style.element.appendChild(textNode); + } + } + }; } -}; + /* style inject SSR */ -var FileUpload$1 = Object.freeze({ - default: FileUpload -}); + var FileUpload = __vue_normalize__$1(__vue_template__$1, __vue_inject_styles__$1, typeof __vue_script__$1 === 'undefined' ? {} : __vue_script__$1, __vue_scope_id__$1, __vue_is_functional_template__$1, __vue_module_identifier__$1, typeof __vue_create_injector__$1 !== 'undefined' ? __vue_create_injector__$1 : function () {}, typeof __vue_create_injector_ssr__ !== 'undefined' ? __vue_create_injector_ssr__ : function () {}); + + var FileUpload$1 = /*#__PURE__*/Object.freeze({ + default: FileUpload + }); -var require$$0 = ( FileUpload$1 && FileUpload ) || FileUpload$1; + var require$$0 = ( FileUpload$1 && FileUpload ) || FileUpload$1; -var src = require$$0; + var src = require$$0; -return src; + return src; }))); //# sourceMappingURL=vue-upload-component.js.map diff --git a/dist/vue-upload-component.js.map b/dist/vue-upload-component.js.map index d28aeb7..b36ca51 100644 --- a/dist/vue-upload-component.js.map +++ b/dist/vue-upload-component.js.map @@ -1 +1 @@ -{"version":3,"file":"vue-upload-component.js","sources":["../src/utils/request.js","../src/chunk/ChunkUploadHandler.js","../src/InputFile.vue","../src/FileUpload.vue","../src/index.js"],"sourcesContent":["/**\n * Creates a XHR request\n *\n * @param {Object} options\n */\nexport const createRequest = (options) => {\n const xhr = new XMLHttpRequest()\n xhr.open(options.method || 'GET', options.url)\n xhr.responseType = 'json'\n if (options.headers) {\n Object.keys(options.headers).forEach(key => {\n xhr.setRequestHeader(key, options.headers[key])\n })\n }\n\n return xhr\n}\n\n/**\n * Sends a XHR request with certain body\n *\n * @param {XMLHttpRequest} xhr\n * @param {Object} body\n */\nexport const sendRequest = (xhr, body) => {\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n var response\n try {\n response = JSON.parse(xhr.response)\n } catch (err) {\n response = xhr.response\n }\n resolve(response)\n } else {\n reject(xhr.response)\n }\n }\n xhr.onerror = () => reject(xhr.response)\n xhr.send(JSON.stringify(body))\n })\n}\n\n/**\n * Sends a XHR request with certain form data\n *\n * @param {XMLHttpRequest} xhr\n * @param {Object} data\n */\nexport const sendFormRequest = (xhr, data) => {\n const body = new FormData()\n for (var name in data) {\n body.append(name, data[name])\n }\n\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n var response\n try {\n response = JSON.parse(xhr.response)\n } catch (err) {\n response = xhr.response\n }\n resolve(response)\n } else {\n reject(xhr.response)\n }\n }\n xhr.onerror = () => reject(xhr.response)\n xhr.send(body)\n })\n}\n\n/**\n * Creates and sends XHR request\n *\n * @param {Object} options\n *\n * @returns Promise\n */\nexport default function (options) {\n const xhr = createRequest(options)\n\n return sendRequest(xhr, options.body)\n}\n","import {\n default as request,\n createRequest,\n sendFormRequest\n} from '../utils/request'\n\nexport default class ChunkUploadHandler {\n /**\n * Constructor\n *\n * @param {File} file\n * @param {Object} options\n */\n constructor (file, options) {\n this.file = file\n this.options = options\n }\n\n /**\n * Gets the max retries from options\n */\n get maxRetries () {\n return parseInt(this.options.maxRetries)\n }\n\n /**\n * Gets the max number of active chunks being uploaded at once from options\n */\n get maxActiveChunks () {\n return parseInt(this.options.maxActive)\n }\n\n /**\n * Gets the file type\n */\n get fileType () {\n return this.file.type\n }\n\n /**\n * Gets the file size\n */\n get fileSize () {\n return this.file.size\n }\n\n /**\n * Gets action (url) to upload the file\n */\n get action () {\n return this.options.action || null\n }\n\n /**\n * Gets the body to be merged when sending the request in start phase\n */\n get startBody () {\n return this.options.startBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in upload phase\n */\n get uploadBody () {\n return this.options.uploadBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in finish phase\n */\n get finishBody () {\n return this.options.finishBody || {}\n }\n\n /**\n * Gets the headers of the requests from options\n */\n get headers () {\n return this.options.headers || {}\n }\n\n /**\n * Whether it's ready to upload files or not\n */\n get readyToUpload () {\n return !!this.chunks\n }\n\n /**\n * Gets the progress of the chunk upload\n * - Gets all the completed chunks\n * - Gets the progress of all the chunks that are being uploaded\n */\n get progress () {\n const completedProgress = (this.chunksUploaded.length / this.chunks.length) * 100\n const uploadingProgress = this.chunksUploading.reduce((progress, chunk) => {\n return progress + ((chunk.progress | 0) / this.chunks.length)\n }, 0)\n\n return Math.min(completedProgress + uploadingProgress, 100)\n }\n\n /**\n * Gets all the chunks that are pending to be uploaded\n */\n get chunksToUpload () {\n return this.chunks.filter(chunk => {\n return !chunk.active && !chunk.uploaded\n })\n }\n\n /**\n * Whether there are chunks to upload or not\n */\n get hasChunksToUpload () {\n return this.chunksToUpload.length > 0\n }\n\n /**\n * Gets all the chunks that are uploading\n */\n get chunksUploading () {\n return this.chunks.filter(chunk => {\n return !!chunk.xhr && !!chunk.active\n })\n }\n\n /**\n * Gets all the chunks that have finished uploading\n */\n get chunksUploaded () {\n return this.chunks.filter(chunk => {\n return !!chunk.uploaded\n })\n }\n\n /**\n * Creates all the chunks in the initial state\n */\n createChunks () {\n this.chunks = []\n\n let start = 0\n let end = this.chunkSize\n while (start < this.fileSize) {\n this.chunks.push({\n blob: this.file.file.slice(start, end),\n startOffset: start,\n active: false,\n retries: this.maxRetries\n })\n start = end\n end = start + this.chunkSize\n }\n }\n\n /**\n * Updates the progress of the file with the handler's progress\n */\n updateFileProgress () {\n this.file.progress = this.progress\n }\n\n /**\n * Paues the upload process\n * - Stops all active requests\n * - Sets the file not active\n */\n pause () {\n this.file.active = false\n this.stopChunks()\n }\n\n /**\n * Stops all the current chunks\n */\n stopChunks () {\n this.chunksUploading.forEach(chunk => {\n chunk.xhr.abort()\n chunk.active = false\n })\n }\n\n /**\n * Resumes the file upload\n * - Sets the file active\n * - Starts the following chunks\n */\n resume () {\n this.file.active = true\n this.startChunking()\n }\n\n /**\n * Starts the file upload\n *\n * @returns Promise\n * - resolve The file was uploaded\n * - reject The file upload failed\n */\n upload () {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve\n this.reject = reject\n })\n this.start()\n\n return this.promise\n }\n\n /**\n * Start phase\n * Sends a request to the backend to initialise the chunks\n */\n start () {\n request({\n method: 'POST',\n headers: Object.assign({}, this.headers, {\n 'Content-Type': 'application/json'\n }),\n url: this.action,\n body: Object.assign(this.startBody, {\n phase: 'start',\n mime_type: this.fileType,\n size: this.fileSize\n })\n }).then(res => {\n if (res.status !== 'success') {\n this.file.response = res\n return this.reject('server')\n }\n\n this.sessionId = res.data.session_id\n this.chunkSize = res.data.end_offset\n\n this.createChunks()\n this.startChunking()\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n\n /**\n * Starts to upload chunks\n */\n startChunking () {\n for (let i = 0; i < this.maxActiveChunks; i++) {\n this.uploadNextChunk()\n }\n }\n\n /**\n * Uploads the next chunk\n * - Won't do anything if the process is paused\n * - Will start finish phase if there are no more chunks to upload\n */\n uploadNextChunk () {\n if (this.file.active) {\n if (this.hasChunksToUpload) {\n return this.uploadChunk(this.chunksToUpload[0])\n }\n\n if (this.chunksUploading.length === 0) {\n return this.finish()\n }\n }\n }\n\n /**\n * Uploads a chunk\n * - Sends the chunk to the backend\n * - Sets the chunk as uploaded if everything went well\n * - Decreases the number of retries if anything went wrong\n * - Fails if there are no more retries\n *\n * @param {Object} chunk\n */\n uploadChunk (chunk) {\n chunk.progress = 0\n chunk.active = true\n this.updateFileProgress()\n chunk.xhr = createRequest({\n method: 'POST',\n headers: this.headers,\n url: this.action\n })\n\n chunk.xhr.upload.addEventListener('progress', function (evt) {\n if (evt.lengthComputable) {\n chunk.progress = Math.round(evt.loaded / evt.total * 100)\n }\n }, false)\n\n sendFormRequest(chunk.xhr, Object.assign(this.uploadBody, {\n phase: 'upload',\n session_id: this.sessionId,\n start_offset: chunk.startOffset,\n chunk: chunk.blob\n })).then(res => {\n chunk.active = false\n if (res.status === 'success') {\n chunk.uploaded = true\n } else {\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n }\n\n this.uploadNextChunk()\n }).catch(() => {\n chunk.active = false\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n\n this.uploadNextChunk()\n })\n }\n\n /**\n * Finish phase\n * Sends a request to the backend to finish the process\n */\n finish () {\n this.updateFileProgress()\n\n request({\n method: 'POST',\n headers: Object.assign({}, this.headers, {\n 'Content-Type': 'application/json'\n }),\n url: this.action,\n body: Object.assign(this.finishBody, {\n phase: 'finish',\n session_id: this.sessionId\n })\n }).then(res => {\n this.file.response = res\n if (res.status !== 'success') {\n return this.reject('server')\n }\n\n this.resolve(res)\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n}\n","\n\n","\n\n\n","module.exports = require('./FileUpload.vue')\n"],"names":["createRequest","options","xhr","XMLHttpRequest","open","method","url","responseType","headers","keys","forEach","setRequestHeader","key","sendRequest","body","Promise","resolve","reject","onload","status","response","JSON","parse","err","onerror","send","stringify","sendFormRequest","data","FormData","name","append","ChunkUploadHandler","file","chunks","start","end","chunkSize","fileSize","push","slice","maxRetries","progress","active","stopChunks","chunksUploading","abort","startChunking","promise","Object","assign","action","startBody","fileType","then","res","sessionId","session_id","end_offset","createChunks","catch","i","maxActiveChunks","uploadNextChunk","hasChunksToUpload","uploadChunk","chunksToUpload","length","finish","chunk","updateFileProgress","upload","addEventListener","evt","lengthComputable","Math","round","loaded","total","uploadBody","startOffset","blob","uploaded","retries","finishBody","parseInt","maxActive","type","size","completedProgress","chunksUploaded","uploadingProgress","reduce","min","filter","render","e","$destroy","$parent","addInputFile","target","constructor","$el","CHUNK_DEFAULT_OPTIONS","ChunkUploadDefaultHandler","String","Boolean","Number","multiple","Function","Array","value","input","document","createElement","window","files","webkitdirectory","directory","features","html5","ondrop","drop","maps","$nextTick","$forceUpdate","watchDrop","destroy","fileObject","error","success","undefined","watchActive","oldMaps","id","newFile","oldFile","emitFile","emitInput","_files","index","addIndex","isArray","addFiles","Blob","webkitRelativePath","relativePath","Element","el","putAction","postAction","timeout","random","toString","substr","emitFilter","maximum","clear","newFiles","concat","splice","replace","add","dataTransfer","items","item","getAsEntry","getAsFile","webkitGetAsEntry","getEntry","results","entry","path","isFile","isDirectory","dropDirectory","dirReader","createReader","readEntries","entries","id1","id2","file1","get","file2","index1","indexOf","index2","isPrevent","$emit","uploading","update","code","message","extensions","RegExp","split","map","trim","join","search","customAction","shouldUseChunkUpload","uploadPut","uploadHtml5","uploadHtml4","chunkEnabled","chunkOptions","handler","minSize","HandlerClass","querys","encodeURIComponent","queryString","uploadXhr","form","File","filename","_file","speedTime","speedLoaded","onprogress","speedTime2","Date","now","toFixed","interval","setInterval","complete","fn","responseText","contentType","getResponseHeader","onabort","ontimeout","onKeydown","keyCode","preventDefault","iframe","src","setAttribute","appendChild","getResponseData","doc","contentWindow","contentDocument","innerHTML","removeEventListener","submit","parentNode","removeChild","thread","_el","dropElement","onDragenter","onDragleave","onDocumentDrop","onDragover","onDrop","querySelector","$root","dropActive","nodeName","screenX","screenY","fromElement","offsetX","addDataTransfer","require$$0"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"vue-upload-component.js","sources":["../src/utils/request.js","../src/chunk/ChunkUploadHandler.js","../src/InputFile.vue.js?rollup-plugin-vue=script.js","../src/FileUpload.vue.js?rollup-plugin-vue=script.js","../src/index.js"],"sourcesContent":["/**\n * Creates a XHR request\n *\n * @param {Object} options\n */\nexport const createRequest = (options) => {\n const xhr = new XMLHttpRequest()\n xhr.open(options.method || 'GET', options.url)\n xhr.responseType = 'json'\n if (options.headers) {\n Object.keys(options.headers).forEach(key => {\n xhr.setRequestHeader(key, options.headers[key])\n })\n }\n\n return xhr\n}\n\n/**\n * Sends a XHR request with certain body\n *\n * @param {XMLHttpRequest} xhr\n * @param {Object} body\n */\nexport const sendRequest = (xhr, body) => {\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n var response\n try {\n response = JSON.parse(xhr.response)\n } catch (err) {\n response = xhr.response\n }\n resolve(response)\n } else {\n reject(xhr.response)\n }\n }\n xhr.onerror = () => reject(xhr.response)\n xhr.send(JSON.stringify(body))\n })\n}\n\n/**\n * Sends a XHR request with certain form data\n *\n * @param {XMLHttpRequest} xhr\n * @param {Object} data\n */\nexport const sendFormRequest = (xhr, data) => {\n const body = new FormData()\n for (var name in data) {\n body.append(name, data[name])\n }\n\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n var response\n try {\n response = JSON.parse(xhr.response)\n } catch (err) {\n response = xhr.response\n }\n resolve(response)\n } else {\n reject(xhr.response)\n }\n }\n xhr.onerror = () => reject(xhr.response)\n xhr.send(body)\n })\n}\n\n/**\n * Creates and sends XHR request\n *\n * @param {Object} options\n *\n * @returns Promise\n */\nexport default function (options) {\n const xhr = createRequest(options)\n\n return sendRequest(xhr, options.body)\n}\n","import {\n default as request,\n createRequest,\n sendFormRequest\n} from '../utils/request'\n\nexport default class ChunkUploadHandler {\n /**\n * Constructor\n *\n * @param {File} file\n * @param {Object} options\n */\n constructor (file, options) {\n this.file = file\n this.options = options\n }\n\n /**\n * Gets the max retries from options\n */\n get maxRetries () {\n return parseInt(this.options.maxRetries)\n }\n\n /**\n * Gets the max number of active chunks being uploaded at once from options\n */\n get maxActiveChunks () {\n return parseInt(this.options.maxActive)\n }\n\n /**\n * Gets the file type\n */\n get fileType () {\n return this.file.type\n }\n\n /**\n * Gets the file size\n */\n get fileSize () {\n return this.file.size\n }\n\n /**\n * Gets action (url) to upload the file\n */\n get action () {\n return this.options.action || null\n }\n\n /**\n * Gets the body to be merged when sending the request in start phase\n */\n get startBody () {\n return this.options.startBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in upload phase\n */\n get uploadBody () {\n return this.options.uploadBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in finish phase\n */\n get finishBody () {\n return this.options.finishBody || {}\n }\n\n /**\n * Gets the headers of the requests from options\n */\n get headers () {\n return this.options.headers || {}\n }\n\n /**\n * Whether it's ready to upload files or not\n */\n get readyToUpload () {\n return !!this.chunks\n }\n\n /**\n * Gets the progress of the chunk upload\n * - Gets all the completed chunks\n * - Gets the progress of all the chunks that are being uploaded\n */\n get progress () {\n const completedProgress = (this.chunksUploaded.length / this.chunks.length) * 100\n const uploadingProgress = this.chunksUploading.reduce((progress, chunk) => {\n return progress + ((chunk.progress | 0) / this.chunks.length)\n }, 0)\n\n return Math.min(completedProgress + uploadingProgress, 100)\n }\n\n /**\n * Gets all the chunks that are pending to be uploaded\n */\n get chunksToUpload () {\n return this.chunks.filter(chunk => {\n return !chunk.active && !chunk.uploaded\n })\n }\n\n /**\n * Whether there are chunks to upload or not\n */\n get hasChunksToUpload () {\n return this.chunksToUpload.length > 0\n }\n\n /**\n * Gets all the chunks that are uploading\n */\n get chunksUploading () {\n return this.chunks.filter(chunk => {\n return !!chunk.xhr && !!chunk.active\n })\n }\n\n /**\n * Gets all the chunks that have finished uploading\n */\n get chunksUploaded () {\n return this.chunks.filter(chunk => {\n return !!chunk.uploaded\n })\n }\n\n /**\n * Creates all the chunks in the initial state\n */\n createChunks () {\n this.chunks = []\n\n let start = 0\n let end = this.chunkSize\n while (start < this.fileSize) {\n this.chunks.push({\n blob: this.file.file.slice(start, end),\n startOffset: start,\n active: false,\n retries: this.maxRetries\n })\n start = end\n end = start + this.chunkSize\n }\n }\n\n /**\n * Updates the progress of the file with the handler's progress\n */\n updateFileProgress () {\n this.file.progress = this.progress\n }\n\n /**\n * Paues the upload process\n * - Stops all active requests\n * - Sets the file not active\n */\n pause () {\n this.file.active = false\n this.stopChunks()\n }\n\n /**\n * Stops all the current chunks\n */\n stopChunks () {\n this.chunksUploading.forEach(chunk => {\n chunk.xhr.abort()\n chunk.active = false\n })\n }\n\n /**\n * Resumes the file upload\n * - Sets the file active\n * - Starts the following chunks\n */\n resume () {\n this.file.active = true\n this.startChunking()\n }\n\n /**\n * Starts the file upload\n *\n * @returns Promise\n * - resolve The file was uploaded\n * - reject The file upload failed\n */\n upload () {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve\n this.reject = reject\n })\n this.start()\n\n return this.promise\n }\n\n /**\n * Start phase\n * Sends a request to the backend to initialise the chunks\n */\n start () {\n request({\n method: 'POST',\n headers: Object.assign({}, this.headers, {\n 'Content-Type': 'application/json'\n }),\n url: this.action,\n body: Object.assign(this.startBody, {\n phase: 'start',\n mime_type: this.fileType,\n size: this.fileSize\n })\n }).then(res => {\n if (res.status !== 'success') {\n this.file.response = res\n return this.reject('server')\n }\n\n this.sessionId = res.data.session_id\n this.chunkSize = res.data.end_offset\n\n this.createChunks()\n this.startChunking()\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n\n /**\n * Starts to upload chunks\n */\n startChunking () {\n for (let i = 0; i < this.maxActiveChunks; i++) {\n this.uploadNextChunk()\n }\n }\n\n /**\n * Uploads the next chunk\n * - Won't do anything if the process is paused\n * - Will start finish phase if there are no more chunks to upload\n */\n uploadNextChunk () {\n if (this.file.active) {\n if (this.hasChunksToUpload) {\n return this.uploadChunk(this.chunksToUpload[0])\n }\n\n if (this.chunksUploading.length === 0) {\n return this.finish()\n }\n }\n }\n\n /**\n * Uploads a chunk\n * - Sends the chunk to the backend\n * - Sets the chunk as uploaded if everything went well\n * - Decreases the number of retries if anything went wrong\n * - Fails if there are no more retries\n *\n * @param {Object} chunk\n */\n uploadChunk (chunk) {\n chunk.progress = 0\n chunk.active = true\n this.updateFileProgress()\n chunk.xhr = createRequest({\n method: 'POST',\n headers: this.headers,\n url: this.action\n })\n\n chunk.xhr.upload.addEventListener('progress', function (evt) {\n if (evt.lengthComputable) {\n chunk.progress = Math.round(evt.loaded / evt.total * 100)\n }\n }, false)\n\n sendFormRequest(chunk.xhr, Object.assign(this.uploadBody, {\n phase: 'upload',\n session_id: this.sessionId,\n start_offset: chunk.startOffset,\n chunk: chunk.blob\n })).then(res => {\n chunk.active = false\n if (res.status === 'success') {\n chunk.uploaded = true\n } else {\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n }\n\n this.uploadNextChunk()\n }).catch(() => {\n chunk.active = false\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n\n this.uploadNextChunk()\n })\n }\n\n /**\n * Finish phase\n * Sends a request to the backend to finish the process\n */\n finish () {\n this.updateFileProgress()\n\n request({\n method: 'POST',\n headers: Object.assign({}, this.headers, {\n 'Content-Type': 'application/json'\n }),\n url: this.action,\n body: Object.assign(this.finishBody, {\n phase: 'finish',\n session_id: this.sessionId\n })\n }).then(res => {\n this.file.response = res\n if (res.status !== 'success') {\n return this.reject('server')\n }\n\n this.resolve(res)\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n}\n","//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nexport default {\n methods: {\n change(e) {\n this.$destroy()\n this.$parent.addInputFile(e.target)\n // eslint-disable-next-line\n new this.constructor({\n parent: this.$parent,\n el: this.$el,\n })\n }\n }\n}\n","//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport ChunkUploadDefaultHandler from './chunk/ChunkUploadHandler'\nimport InputFile from './InputFile.vue'\n\nconst CHUNK_DEFAULT_OPTIONS = {\n headers: {},\n action: '',\n minSize: 1048576,\n maxActive: 3,\n maxRetries: 5,\n\n handler: ChunkUploadDefaultHandler\n}\n\nexport default {\n components: {\n InputFile,\n },\n props: {\n inputId: {\n type: String,\n },\n\n name: {\n type: String,\n default: 'file',\n },\n\n accept: {\n type: String,\n },\n\n capture: {\n },\n\n multiple: {\n type: Boolean,\n },\n\n maximum: {\n type: Number,\n default() {\n return this.multiple ? 0 : 1\n }\n },\n\n addIndex: {\n type: [Boolean, Number],\n },\n\n directory: {\n type: Boolean,\n },\n\n postAction: {\n type: String,\n },\n\n putAction: {\n type: String,\n },\n\n customAction: {\n type: Function,\n },\n\n headers: {\n type: Object,\n default: Object,\n },\n\n data: {\n type: Object,\n default: Object,\n },\n\n timeout: {\n type: Number,\n default: 0,\n },\n\n\n drop: {\n default: false,\n },\n\n dropDirectory: {\n type: Boolean,\n default: true,\n },\n\n size: {\n type: Number,\n default: 0,\n },\n\n extensions: {\n default: Array,\n },\n\n\n value: {\n type: Array,\n default: Array,\n },\n\n thread: {\n type: Number,\n default: 1,\n },\n\n // Chunk upload enabled\n chunkEnabled: {\n type: Boolean,\n default: false\n },\n\n // Chunk upload properties\n chunk: {\n type: Object,\n default: () => {\n return CHUNK_DEFAULT_OPTIONS\n }\n }\n },\n\n data() {\n return {\n files: this.value,\n features: {\n html5: true,\n directory: false,\n drag: false,\n },\n\n active: false,\n dropActive: false,\n\n uploading: 0,\n\n destroy: false,\n }\n },\n\n\n /**\n * mounted\n * @return {[type]} [description]\n */\n mounted() {\n let input = document.createElement('input')\n input.type = 'file'\n input.multiple = true\n\n // html5 特征\n if (window.FormData && input.files) {\n // 上传目录特征\n if (typeof input.webkitdirectory === 'boolean' || typeof input.directory === 'boolean') {\n this.features.directory = true\n }\n\n // 拖拽特征\n if (this.features.html5 && typeof input.ondrop !== 'undefined') {\n this.features.drop = true\n }\n } else {\n this.features.html5 = false\n }\n\n // files 定位缓存\n this.maps = {}\n\n this.$nextTick(function () {\n\n // 更新下父级\n if (this.$parent) {\n this.$parent.$forceUpdate()\n }\n\n // 拖拽渲染\n this.watchDrop(this.drop)\n })\n },\n\n /**\n * beforeDestroy\n * @return {[type]} [description]\n */\n beforeDestroy() {\n // 已销毁\n this.destroy = true\n\n // 设置成不激活\n this.active = false\n },\n\n computed: {\n /**\n * uploading 正在上传的线程\n * @return {[type]} [description]\n */\n\n /**\n * uploaded 文件列表是否全部已上传\n * @return {[type]} [description]\n */\n uploaded() {\n let file\n for (let i = 0; i < this.files.length; i++) {\n file = this.files[i]\n if (file.fileObject && !file.error && !file.success) {\n return false\n }\n }\n return true\n },\n\n chunkOptions () {\n return Object.assign(CHUNK_DEFAULT_OPTIONS, this.chunk)\n },\n\n className() {\n return [\n 'file-uploads',\n this.features.html5 ? 'file-uploads-html5' : 'file-uploads-html4',\n this.features.directory && this.directory ? 'file-uploads-directory' : undefined,\n this.features.drop && this.drop ? 'file-uploads-drop' : undefined,\n ]\n }\n },\n\n\n watch: {\n active(active) {\n this.watchActive(active)\n },\n\n dropActive() {\n if (this.$parent) {\n this.$parent.$forceUpdate()\n }\n },\n\n drop(value) {\n this.watchDrop(value)\n },\n\n value(files) {\n if (this.files === files) {\n return\n }\n this.files = files\n\n let oldMaps = this.maps\n\n // 重写 maps 缓存\n this.maps = {}\n for (let i = 0; i < this.files.length; i++) {\n let file = this.files[i]\n this.maps[file.id] = file\n }\n\n // add, update\n for (let key in this.maps) {\n let newFile = this.maps[key]\n let oldFile = oldMaps[key]\n if (newFile !== oldFile) {\n this.emitFile(newFile, oldFile)\n }\n }\n\n // delete\n for (let key in oldMaps) {\n if (!this.maps[key]) {\n this.emitFile(undefined, oldMaps[key])\n }\n }\n },\n },\n\n methods: {\n\n // 清空\n clear() {\n if (this.files.length) {\n let files = this.files\n this.files = []\n\n // 定位\n this.maps = {}\n\n // 事件\n this.emitInput()\n for (let i = 0; i < files.length; i++) {\n this.emitFile(undefined, files[i])\n }\n }\n return true\n },\n\n // 选择\n get(id) {\n if (!id) {\n return false\n }\n\n if (typeof id === 'object') {\n return this.maps[id.id] || false\n }\n\n return this.maps[id] || false\n },\n\n // 添加\n add(_files, index = this.addIndex) {\n let files = _files\n let isArray = files instanceof Array\n\n // 不是数组整理成数组\n if (!isArray) {\n files = [files]\n }\n\n // 遍历规范对象\n let addFiles = []\n for (let i = 0; i < files.length; i++) {\n let file = files[i]\n if (this.features.html5 && file instanceof Blob) {\n file = {\n file,\n size: file.size,\n name: file.webkitRelativePath || file.relativePath || file.name || 'unknown',\n type: file.type,\n }\n }\n let fileObject = false\n if (file.fileObject === false) {\n // false\n } else if (file.fileObject) {\n fileObject = true\n } else if (typeof Element !== 'undefined' && file.el instanceof Element) {\n fileObject = true\n } else if (typeof Blob !== 'undefined' && file.file instanceof Blob) {\n fileObject = true\n }\n if (fileObject) {\n file = {\n fileObject: true,\n size: -1,\n name: 'Filename',\n type: '',\n active: false,\n error: '',\n success: false,\n putAction: this.putAction,\n postAction: this.postAction,\n timeout: this.timeout,\n ...file,\n response: {},\n\n progress: '0.00', // 只读\n speed: 0, // 只读\n // xhr: false, // 只读\n // iframe: false, // 只读\n }\n\n file.data = {\n ...this.data,\n ...file.data ? file.data : {},\n }\n\n file.headers = {\n ...this.headers,\n ...file.headers ? file.headers : {},\n }\n }\n\n // 必须包含 id\n if (!file.id) {\n file.id = Math.random().toString(36).substr(2)\n }\n\n if (this.emitFilter(file, undefined)) {\n continue\n }\n\n // 最大数量限制\n if (this.maximum > 1 && (addFiles.length + this.files.length) >= this.maximum) {\n break\n }\n\n addFiles.push(file)\n\n // 最大数量限制\n if (this.maximum === 1) {\n break\n }\n }\n\n // 没有文件\n if (!addFiles.length) {\n return false\n }\n\n // 如果是 1 清空\n if (this.maximum === 1) {\n this.clear()\n }\n\n\n // 添加进去 files\n let newFiles\n if (index === true || index === 0) {\n newFiles = addFiles.concat(this.files)\n } else if (index) {\n newFiles = addFiles.concat([])\n newFiles.splice(index, 0, addFiles)\n } else {\n newFiles = this.files.concat(addFiles)\n }\n\n this.files = newFiles\n\n // 定位\n for (let i = 0; i < addFiles.length; i++) {\n let file = addFiles[i]\n this.maps[file.id] = file\n }\n\n // 事件\n this.emitInput()\n for (let i = 0; i < addFiles.length; i++) {\n this.emitFile(addFiles[i], undefined)\n }\n\n return isArray ? addFiles : addFiles[0]\n },\n\n\n\n // 添加表单文件\n addInputFile(el) {\n let files = []\n if (el.files) {\n for (let i = 0; i < el.files.length; i++) {\n let file = el.files[i]\n files.push({\n size: file.size,\n name: file.webkitRelativePath || file.relativePath || file.name,\n type: file.type,\n file,\n el\n })\n }\n } else {\n files.push({\n name: el.value.replace(/^.*?([^\\/\\\\\\r\\n]+)$/, '$1'),\n el,\n })\n }\n return this.add(files)\n },\n\n\n // 添加 DataTransfer\n addDataTransfer(dataTransfer) {\n let files = []\n if (dataTransfer.items && dataTransfer.items.length) {\n let items = []\n for (let i = 0; i < dataTransfer.items.length; i++) {\n let item = dataTransfer.items[i]\n if (item.getAsEntry) {\n item = item.getAsEntry() || item.getAsFile()\n } else if (item.webkitGetAsEntry) {\n item = item.webkitGetAsEntry() || item.getAsFile()\n } else {\n item = item.getAsFile()\n }\n if (item) {\n items.push(item)\n }\n }\n\n return new Promise((resolve, reject) => {\n let forEach = (i) => {\n let item = items[i]\n // 结束 文件数量大于 最大数量\n if (!item || (this.maximum > 0 && files.length >= this.maximum)) {\n return resolve(this.add(files))\n }\n this.getEntry(item).then(function (results) {\n files.push(...results)\n forEach(i + 1)\n })\n }\n forEach(0)\n })\n }\n\n if (dataTransfer.files.length) {\n for (let i = 0; i < dataTransfer.files.length; i++) {\n files.push(dataTransfer.files[i])\n if (this.maximum > 0 && files.length >= this.maximum) {\n break\n }\n }\n return Promise.resolve(this.add(files))\n }\n\n return Promise.resolve([])\n },\n\n\n // 获得 entry\n getEntry(entry, path = '') {\n return new Promise((resolve, reject) => {\n if (entry.isFile) {\n entry.file(function (file) {\n resolve([\n {\n size: file.size,\n name: path + file.name,\n type: file.type,\n file,\n }\n ])\n })\n } else if (entry.isDirectory && this.dropDirectory) {\n let files = []\n let dirReader = entry.createReader()\n let readEntries = () => {\n dirReader.readEntries((entries) => {\n let forEach = (i) => {\n if ((!entries[i] && i === 0) || (this.maximum > 0 && files.length >= this.maximum)) {\n return resolve(files)\n }\n if (!entries[i]) {\n return readEntries()\n }\n this.getEntry(entries[i], path + entry.name + '/').then((results) => {\n files.push(...results)\n forEach(i + 1)\n })\n }\n forEach(0)\n })\n }\n readEntries()\n } else {\n resolve([])\n }\n })\n },\n\n\n replace(id1, id2) {\n let file1 = this.get(id1)\n let file2 = this.get(id2)\n if (!file1 || !file2 || file1 === file2) {\n return false\n }\n let files = this.files.concat([])\n let index1 = files.indexOf(file1)\n let index2 = files.indexOf(file2)\n if (index1 === -1 || index2 === -1) {\n return false\n }\n files[index1] = file2\n files[index2] = file1\n this.files = files\n this.emitInput()\n return true\n },\n\n // 移除\n remove(id) {\n let file = this.get(id)\n if (file) {\n if (this.emitFilter(undefined, file)) {\n return false\n }\n let files = this.files.concat([])\n let index = files.indexOf(file)\n if (index === -1) {\n console.error('remove', file)\n return false\n }\n files.splice(index, 1)\n this.files = files\n\n // 定位\n delete this.maps[file.id]\n\n // 事件\n this.emitInput()\n this.emitFile(undefined, file)\n }\n return file\n },\n\n // 更新\n update(id, data) {\n let file = this.get(id)\n if (file) {\n let newFile = {\n ...file,\n ...data\n }\n // 停用必须加上错误\n if (file.fileObject && file.active && !newFile.active && !newFile.error && !newFile.success) {\n newFile.error = 'abort'\n }\n\n if (this.emitFilter(newFile, file)) {\n return false\n }\n\n let files = this.files.concat([])\n let index = files.indexOf(file)\n if (index === -1) {\n console.error('update', file)\n return false\n }\n files.splice(index, 1, newFile)\n this.files = files\n\n // 删除 旧定位 写入 新定位 (已便支持修改id)\n delete this.maps[file.id]\n this.maps[newFile.id] = newFile\n\n // 事件\n this.emitInput()\n this.emitFile(newFile, file)\n return newFile\n }\n return false\n },\n\n\n\n // 预处理 事件 过滤器\n emitFilter(newFile, oldFile) {\n let isPrevent = false\n this.$emit('input-filter', newFile, oldFile, function () {\n isPrevent = true\n return isPrevent\n })\n return isPrevent\n },\n\n // 处理后 事件 分发\n emitFile(newFile, oldFile) {\n this.$emit('input-file', newFile, oldFile)\n if (newFile && newFile.fileObject && newFile.active && (!oldFile || !oldFile.active)) {\n this.uploading++\n // 激活\n this.$nextTick(function () {\n setTimeout(() => {\n this.upload(newFile).then(() => {\n // eslint-disable-next-line\n newFile = this.get(newFile)\n if (newFile && newFile.fileObject) {\n this.update(newFile, {\n active: false,\n success: !newFile.error\n })\n }\n }).catch((e) => {\n this.update(newFile, {\n active: false,\n success: false,\n error: e.code || e.error || e.message || e\n })\n })\n }, parseInt(Math.random() * 50 + 50, 10))\n })\n } else if ((!newFile || !newFile.fileObject || !newFile.active) && oldFile && oldFile.fileObject && oldFile.active) {\n // 停止\n this.uploading--\n }\n\n // 自动延续激活\n if (this.active && (Boolean(newFile) !== Boolean(oldFile) || newFile.active !== oldFile.active)) {\n this.watchActive(true)\n }\n },\n\n emitInput() {\n this.$emit('input', this.files)\n },\n\n\n // 上传\n upload(id) {\n let file = this.get(id)\n\n // 被删除\n if (!file) {\n return Promise.reject('not_exists')\n }\n\n // 不是文件对象\n if (!file.fileObject) {\n return Promise.reject('file_object')\n }\n\n // 有错误直接响应\n if (file.error) {\n return Promise.reject(file.error)\n }\n\n // 已完成直接响应\n if (file.success) {\n return Promise.resolve(file)\n }\n\n // 后缀\n let extensions = this.extensions\n if (extensions && (extensions.length || typeof extensions.length === 'undefined')) {\n if (typeof extensions !== 'object' || !(extensions instanceof RegExp)) {\n if (typeof extensions === 'string') {\n extensions = extensions.split(',').map(value => value.trim()).filter(value => value)\n }\n extensions = new RegExp('\\\\.(' + extensions.join('|').replace(/\\./g, '\\\\.') + ')$', 'i')\n }\n if (file.name.search(extensions) === -1) {\n return Promise.reject('extension')\n }\n }\n\n // 大小\n if (this.size > 0 && file.size >= 0 && file.size > this.size) {\n return Promise.reject('size')\n }\n\n if (this.customAction) {\n return this.customAction(file, this)\n }\n\n if (this.features.html5) {\n if (this.shouldUseChunkUpload(file)) {\n return this.uploadChunk(file)\n }\n if (file.putAction) {\n return this.uploadPut(file)\n }\n if (file.postAction) {\n return this.uploadHtml5(file)\n }\n }\n if (file.postAction) {\n return this.uploadHtml4(file)\n }\n return Promise.reject('No action configured')\n },\n\n /**\n * Whether this file should be uploaded using chunk upload or not\n *\n * @param Object file\n */\n shouldUseChunkUpload (file) {\n return this.chunkEnabled &&\n !!this.chunkOptions.handler &&\n file.size > this.chunkOptions.minSize\n },\n\n /**\n * Upload a file using Chunk method\n *\n * @param File file\n */\n uploadChunk (file) {\n const HandlerClass = this.chunkOptions.handler\n file.chunk = new HandlerClass(file, this.chunkOptions)\n\n return file.chunk.upload()\n },\n\n uploadPut(file) {\n let querys = []\n let value\n for (let key in file.data) {\n value = file.data[key]\n if (value !== null && value !== undefined) {\n querys.push(encodeURIComponent(key) + '=' + encodeURIComponent(value))\n }\n }\n let queryString = querys.length ? (file.putAction.indexOf('?') === -1 ? '?' : '&') + querys.join('&') : ''\n let xhr = new XMLHttpRequest()\n xhr.open('PUT', file.putAction + queryString)\n return this.uploadXhr(xhr, file, file.file)\n },\n\n uploadHtml5(file) {\n let form = new window.FormData()\n let value\n for (let key in file.data) {\n value = file.data[key]\n if (value && typeof value === 'object' && typeof value.toString !== 'function') {\n if (value instanceof File) {\n form.append(key, value, value.name)\n } else {\n form.append(key, JSON.stringify(value))\n }\n } else if (value !== null && value !== undefined) {\n form.append(key, value)\n }\n }\n form.append(this.name, file.file, file.file.filename || file.name)\n let xhr = new XMLHttpRequest()\n xhr.open('POST', file.postAction)\n return this.uploadXhr(xhr, file, form)\n },\n\n uploadXhr(xhr, _file, body) {\n let file = _file\n let speedTime = 0\n let speedLoaded = 0\n\n // 进度条\n xhr.upload.onprogress = (e) => {\n // 还未开始上传 已删除 未激活\n file = this.get(file)\n if (!e.lengthComputable || !file || !file.fileObject || !file.active) {\n return\n }\n\n // 进度 速度 每秒更新一次\n let speedTime2 = Math.round(Date.now() / 1000)\n if (speedTime2 === speedTime) {\n return\n }\n speedTime = speedTime2\n\n file = this.update(file, {\n progress: (e.loaded / e.total * 100).toFixed(2),\n speed: e.loaded - speedLoaded,\n })\n speedLoaded = e.loaded\n }\n\n // 检查激活状态\n let interval = setInterval(() => {\n file = this.get(file)\n if (file && file.fileObject && !file.success && !file.error && file.active) {\n return\n }\n\n if (interval) {\n clearInterval(interval)\n interval = false\n }\n\n try {\n xhr.abort()\n xhr.timeout = 1\n } catch (e) {\n }\n }, 100)\n\n return new Promise((resolve, reject) => {\n let complete\n let fn = (e) => {\n // 已经处理过了\n if (complete) {\n return\n }\n complete = true\n if (interval) {\n clearInterval(interval)\n interval = false\n }\n\n file = this.get(file)\n\n // 不存在直接响应\n if (!file) {\n return reject('not_exists')\n }\n\n // 不是文件对象\n if (!file.fileObject) {\n return reject('file_object')\n }\n\n // 有错误自动响应\n if (file.error) {\n return reject(file.error)\n }\n\n // 未激活\n if (!file.active) {\n return reject('abort')\n }\n\n\n // 已完成 直接相应\n if (file.success) {\n return resolve(file)\n }\n\n let data = {}\n\n switch (e.type) {\n case 'timeout':\n case 'abort':\n data.error = e.type\n break\n case 'error':\n if (!xhr.status) {\n data.error = 'network'\n } else if (xhr.status >= 500) {\n data.error = 'server'\n } else if (xhr.status >= 400) {\n data.error = 'denied'\n }\n break\n default:\n if (xhr.status >= 500) {\n data.error = 'server'\n } else if (xhr.status >= 400) {\n data.error = 'denied'\n } else {\n data.progress = '100.00'\n }\n }\n\n if (xhr.responseText) {\n let contentType = xhr.getResponseHeader('Content-Type')\n if (contentType && contentType.indexOf('/json') !== -1) {\n data.response = JSON.parse(xhr.responseText)\n } else {\n data.response = xhr.responseText\n }\n }\n\n // 更新\n file = this.update(file, data)\n\n // 相应错误\n if (file.error) {\n return reject(file.error)\n }\n\n // 响应\n return resolve(file)\n }\n\n // 事件\n xhr.onload = fn\n xhr.onerror = fn\n xhr.onabort = fn\n xhr.ontimeout = fn\n\n // 超时\n if (file.timeout) {\n xhr.timeout = file.timeout\n }\n\n // headers\n for (let key in file.headers) {\n xhr.setRequestHeader(key, file.headers[key])\n }\n\n // 更新 xhr\n file = this.update(file, { xhr })\n\n // 开始上传\n xhr.send(body)\n })\n },\n\n\n\n\n uploadHtml4(_file) {\n let file = _file\n let onKeydown = function (e) {\n if (e.keyCode === 27) {\n e.preventDefault()\n }\n }\n\n let iframe = document.createElement('iframe')\n iframe.id = 'upload-iframe-' + file.id\n iframe.name = 'upload-iframe-' + file.id\n iframe.src = 'about:blank'\n iframe.setAttribute('style', 'width:1px;height:1px;top:-999em;position:absolute; margin-top:-999em;')\n\n\n let form = document.createElement('form')\n\n form.action = file.postAction\n\n form.name = 'upload-form-' + file.id\n\n\n form.setAttribute('method', 'POST')\n form.setAttribute('target', 'upload-iframe-' + file.id)\n form.setAttribute('enctype', 'multipart/form-data')\n\n let value\n let input\n for (let key in file.data) {\n value = file.data[key]\n if (value && typeof value === 'object' && typeof value.toString !== 'function') {\n value = JSON.stringify(value)\n }\n if (value !== null && value !== undefined) {\n input = document.createElement('input')\n input.type = 'hidden'\n input.name = key\n input.value = value\n form.appendChild(input)\n }\n }\n form.appendChild(file.el)\n\n document.body.appendChild(iframe).appendChild(form)\n\n\n\n\n let getResponseData = function () {\n let doc\n try {\n if (iframe.contentWindow) {\n doc = iframe.contentWindow.document\n }\n } catch (err) {\n }\n if (!doc) {\n try {\n doc = iframe.contentDocument ? iframe.contentDocument : iframe.document\n } catch (err) {\n doc = iframe.document\n }\n }\n if (doc && doc.body) {\n return doc.body.innerHTML\n }\n return null\n }\n\n\n return new Promise((resolve, reject) => {\n setTimeout(() => {\n file = this.update(file, { iframe })\n\n // 不存在\n if (!file) {\n return reject('not_exists')\n }\n\n // 定时检查\n let interval = setInterval(() => {\n file = this.get(file)\n if (file && file.fileObject && !file.success && !file.error && file.active) {\n return\n }\n\n if (interval) {\n clearInterval(interval)\n interval = false\n }\n\n iframe.onabort({ type: file ? 'abort' : 'not_exists' })\n }, 100)\n\n\n let complete\n let fn = (e) => {\n // 已经处理过了\n if (complete) {\n return\n }\n complete = true\n\n\n if (interval) {\n clearInterval(interval)\n interval = false\n }\n\n // 关闭 esc 事件\n document.body.removeEventListener('keydown', onKeydown)\n\n file = this.get(file)\n\n // 不存在直接响应\n if (!file) {\n return reject('not_exists')\n }\n\n // 不是文件对象\n if (!file.fileObject) {\n return reject('file_object')\n }\n\n // 有错误自动响应\n if (file.error) {\n return reject(file.error)\n }\n\n // 未激活\n if (!file.active) {\n return reject('abort')\n }\n\n // 已完成 直接相应\n if (file.success) {\n return resolve(file)\n }\n\n let response = getResponseData()\n let data = {}\n switch (e.type) {\n case 'abort':\n data.error = 'abort'\n break\n case 'error':\n if (file.error) {\n data.error = file.error\n } else if (response === null) {\n data.error = 'network'\n } else {\n data.error = 'denied'\n }\n break\n default:\n if (file.error) {\n data.error = file.error\n } else if (data === null) {\n data.error = 'network'\n } else {\n data.progress = '100.00'\n }\n }\n\n if (response !== null) {\n if (response && response.substr(0, 1) === '{' && response.substr(response.length - 1, 1) === '}') {\n try {\n response = JSON.parse(response)\n } catch (err) {\n }\n }\n data.response = response\n }\n\n // 更新\n file = this.update(file, data)\n\n if (file.error) {\n return reject(file.error)\n }\n\n // 响应\n return resolve(file)\n }\n\n\n // 添加事件\n iframe.onload = fn\n iframe.onerror = fn\n iframe.onabort = fn\n\n\n // 禁止 esc 键\n document.body.addEventListener('keydown', onKeydown)\n\n // 提交\n form.submit()\n }, 50)\n }).then(function (res) {\n iframe.parentNode && iframe.parentNode.removeChild(iframe)\n return res\n }).catch(function (res) {\n iframe.parentNode && iframe.parentNode.removeChild(iframe)\n return res\n })\n },\n\n\n\n watchActive(active) {\n let file\n let index = 0\n while ((file = this.files[index])) {\n index++\n if (!file.fileObject) {\n // 不是文件对象\n } else if (active && !this.destroy) {\n if (this.uploading >= this.thread || (this.uploading && !this.features.html5)) {\n break\n }\n if (!file.active && !file.error && !file.success) {\n this.update(file, { active: true })\n }\n } else {\n if (file.active) {\n this.update(file, { active: false })\n }\n }\n }\n if (this.uploading === 0) {\n this.active = false\n }\n },\n\n\n watchDrop(_el) {\n let el = _el\n if (!this.features.drop) {\n return\n }\n\n // 移除挂载\n if (this.dropElement) {\n try {\n document.removeEventListener('dragenter', this.onDragenter, false)\n document.removeEventListener('dragleave', this.onDragleave, false)\n document.removeEventListener('drop', this.onDocumentDrop, false)\n this.dropElement.removeEventListener('dragover', this.onDragover, false)\n this.dropElement.removeEventListener('drop', this.onDrop, false)\n } catch (e) {\n }\n }\n\n if (!el) {\n el = false\n } else if (typeof el === 'string') {\n el = document.querySelector(el) || this.$root.$el.querySelector(el)\n } else if (el === true) {\n el = this.$parent.$el\n }\n\n this.dropElement = el\n\n if (this.dropElement) {\n document.addEventListener('dragenter', this.onDragenter, false)\n document.addEventListener('dragleave', this.onDragleave, false)\n document.addEventListener('drop', this.onDocumentDrop, false)\n this.dropElement.addEventListener('dragover', this.onDragover, false)\n this.dropElement.addEventListener('drop', this.onDrop, false)\n }\n },\n\n\n onDragenter(e) {\n e.preventDefault()\n if (!this.dropActive) {\n this.dropActive = true\n }\n },\n\n onDragleave(e) {\n e.preventDefault()\n if (e.target.nodeName === 'HTML' || e.target === e.explicitOriginalTarget || (e.screenX === 0 && e.screenY === 0 && !e.fromElement && e.offsetX <= 0)) {\n this.dropActive = false\n }\n },\n\n onDragover(e) {\n e.preventDefault()\n },\n\n onDocumentDrop() {\n this.dropActive = false\n },\n\n onDrop(e) {\n e.preventDefault()\n this.addDataTransfer(e.dataTransfer)\n },\n }\n}\n","module.exports = require('./FileUpload.vue')\n"],"names":["createRequest","options","xhr","XMLHttpRequest","open","method","url","responseType","headers","Object","keys","forEach","setRequestHeader","key","sendRequest","body","Promise","resolve","reject","onload","status","response","JSON","parse","err","onerror","send","stringify","sendFormRequest","data","FormData","name","append","ChunkUploadHandler","file","chunks","start","end","chunkSize","fileSize","push","blob","slice","startOffset","active","retries","maxRetries","progress","stopChunks","chunksUploading","chunk","abort","startChunking","promise","request","assign","action","startBody","phase","mime_type","fileType","size","then","res","sessionId","session_id","end_offset","createChunks","catch","i","maxActiveChunks","uploadNextChunk","hasChunksToUpload","uploadChunk","chunksToUpload","length","finish","updateFileProgress","upload","addEventListener","evt","lengthComputable","Math","round","loaded","total","uploadBody","start_offset","uploaded","finishBody","parseInt","maxActive","type","completedProgress","chunksUploaded","uploadingProgress","reduce","min","filter","methods","change","e","$destroy","$parent","addInputFile","target","constructor","parent","el","$el","CHUNK_DEFAULT_OPTIONS","minSize","handler","ChunkUploadDefaultHandler","components","InputFile","props","inputId","String","default","accept","capture","multiple","Boolean","maximum","Number","addIndex","directory","postAction","putAction","customAction","Function","timeout","drop","dropDirectory","extensions","Array","value","thread","chunkEnabled","files","features","html5","drag","dropActive","uploading","destroy","mounted","input","document","createElement","window","webkitdirectory","ondrop","maps","$nextTick","$forceUpdate","watchDrop","beforeDestroy","computed","fileObject","error","success","chunkOptions","className","undefined","watch","watchActive","oldMaps","id","newFile","oldFile","emitFile","clear","emitInput","get","add","_files","index","isArray","addFiles","Blob","webkitRelativePath","relativePath","Element","speed","random","toString","substr","emitFilter","newFiles","concat","splice","replace","addDataTransfer","dataTransfer","items","item","getAsEntry","getAsFile","webkitGetAsEntry","getEntry","results","entry","path","isFile","isDirectory","dirReader","createReader","readEntries","entries","id1","id2","file1","file2","index1","indexOf","index2","remove","console","update","isPrevent","$emit","setTimeout","code","message","RegExp","split","map","trim","join","search","shouldUseChunkUpload","uploadPut","uploadHtml5","uploadHtml4","HandlerClass","querys","encodeURIComponent","queryString","uploadXhr","form","File","filename","_file","speedTime","speedLoaded","onprogress","speedTime2","Date","now","toFixed","interval","setInterval","clearInterval","complete","fn","responseText","contentType","getResponseHeader","onabort","ontimeout","onKeydown","keyCode","preventDefault","iframe","src","setAttribute","appendChild","getResponseData","doc","contentWindow","contentDocument","innerHTML","removeEventListener","submit","parentNode","removeChild","_el","dropElement","onDragenter","onDragleave","onDocumentDrop","onDragover","onDrop","querySelector","$root","nodeName","explicitOriginalTarget","screenX","screenY","fromElement","offsetX","require$$0"],"mappings":"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"} \ No newline at end of file diff --git a/dist/vue-upload-component.min.js b/dist/vue-upload-component.min.js index 33995bc..e926bc4 100644 --- a/dist/vue-upload-component.min.js +++ b/dist/vue-upload-component.min.js @@ -1,7 +1,7 @@ /*! * Name: vue-upload-component - * Version: 2.8.6 + * Version: 2.8.7 * Author: LianYue */ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.VueUploadComponent=t()}(this,function(){"use strict";var e=function(e){var t=new XMLHttpRequest;return t.open(e.method||"GET",e.url),t.responseType="json",e.headers&&Object.keys(e.headers).forEach(function(i){t.setRequestHeader(i,e.headers[i])}),t},t=function(t){var i,n,r=e(t);return i=r,n=t.body,new Promise(function(e,t){i.onload=function(){if(i.status>=200&&i.status<300){var n;try{n=JSON.parse(i.response)}catch(e){n=i.response}e(n)}else t(i.response)},i.onerror=function(){return t(i.response)},i.send(JSON.stringify(n))})},i=function(){function e(e,t){for(var i=0;i=200&&e.status<300){var i;try{i=JSON.parse(e.response)}catch(t){i=e.response}t(i)}else n(e.response)},e.onerror=function(){return n(e.response)},e.send(i)})}(t.xhr,Object.assign(this.uploadBody,{phase:"upload",session_id:this.sessionId,start_offset:t.startOffset,chunk:t.blob})).then(function(e){if(t.active=!1,"success"===e.status)t.uploaded=!0;else if(t.retries--<=0)return i.stopChunks(),i.reject("upload");i.uploadNextChunk()}).catch(function(){if(t.active=!1,t.retries--<=0)return i.stopChunks(),i.reject("upload");i.uploadNextChunk()})}},{key:"finish",value:function(){var e=this;this.updateFileProgress(),t({method:"POST",headers:Object.assign({},this.headers,{"Content-Type":"application/json"}),url:this.action,body:Object.assign(this.finishBody,{phase:"finish",session_id:this.sessionId})}).then(function(t){if(e.file.response=t,"success"!==t.status)return e.reject("server");e.resolve(t)}).catch(function(t){e.file.response=t,e.reject("server")})}},{key:"maxRetries",get:function(){return parseInt(this.options.maxRetries)}},{key:"maxActiveChunks",get:function(){return parseInt(this.options.maxActive)}},{key:"fileType",get:function(){return this.file.type}},{key:"fileSize",get:function(){return this.file.size}},{key:"action",get:function(){return this.options.action||null}},{key:"startBody",get:function(){return this.options.startBody||{}}},{key:"uploadBody",get:function(){return this.options.uploadBody||{}}},{key:"finishBody",get:function(){return this.options.finishBody||{}}},{key:"headers",get:function(){return this.options.headers||{}}},{key:"readyToUpload",get:function(){return!!this.chunks}},{key:"progress",get:function(){var e=this,t=this.chunksUploaded.length/this.chunks.length*100,i=this.chunksUploading.reduce(function(t,i){return t+(0|i.progress)/e.chunks.length},0);return Math.min(t+i,100)}},{key:"chunksToUpload",get:function(){return this.chunks.filter(function(e){return!e.active&&!e.uploaded})}},{key:"hasChunksToUpload",get:function(){return this.chunksToUpload.length>0}},{key:"chunksUploading",get:function(){return this.chunks.filter(function(e){return!!e.xhr&&!!e.active})}},{key:"chunksUploaded",get:function(){return this.chunks.filter(function(e){return!!e.uploaded})}}]),n}();!function(){if("undefined"!=typeof document){var e=document.head||document.getElementsByTagName("head")[0],t=document.createElement("style");t.type="text/css",t.styleSheet?t.styleSheet.cssText="":t.appendChild(document.createTextNode("")),e.appendChild(t)}}();var r=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:this.addIndex,i=e,n=i instanceof Array;n||(i=[i]);for(var o=[],s=0;s1&&o.length+this.files.length>=this.maximum)break;if(o.push(a),1===this.maximum)break}}if(!o.length)return!1;1===this.maximum&&this.clear();var c=void 0;!0===t||0===t?c=o.concat(this.files):t?(c=o.concat([])).splice(t,0,o):c=this.files.concat(o),this.files=c;for(var d=0;d0&&i.length>=t.maximum)return e(t.add(i));t.getEntry(a).then(function(e){i.push.apply(i,s(e)),r(o+1)})}(0)})}if(e.files.length){for(var a=0;a0&&i.length>=this.maximum));a++);return Promise.resolve(this.add(i))}return Promise.resolve([])},getEntry:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return new Promise(function(n,r){if(e.isFile)e.file(function(e){n([{size:e.size,name:i+e.name,type:e.type,file:e}])});else if(e.isDirectory&&t.dropDirectory){var o=[],a=e.createReader();!function r(){a.readEntries(function(a){!function u(c){return!a[c]&&0===c||t.maximum>0&&o.length>=t.maximum?n(o):a[c]?void t.getEntry(a[c],i+e.name+"/").then(function(e){o.push.apply(o,s(e)),u(c+1)}):r()}(0)})}()}else n([])})},replace:function(e,t){var i=this.get(e),n=this.get(t);if(!i||!n||i===n)return!1;var r=this.files.concat([]),o=r.indexOf(i),s=r.indexOf(n);return-1!==o&&-1!==s&&(r[o]=n,r[s]=i,this.files=r,this.emitInput(),!0)},remove:function(e){var t=this.get(e);if(t){if(this.emitFilter(void 0,t))return!1;var i=this.files.concat([]),n=i.indexOf(t);if(-1===n)return console.error("remove",t),!1;i.splice(n,1),this.files=i,delete this.maps[t.id],this.emitInput(),this.emitFile(void 0,t)}return t},update:function(e,t){var i=this.get(e);if(i){var n=r({},i,t);if(!i.fileObject||!i.active||n.active||n.error||n.success||(n.error="abort"),this.emitFilter(n,i))return!1;var o=this.files.concat([]),s=o.indexOf(i);return-1===s?(console.error("update",i),!1):(o.splice(s,1,n),this.files=o,delete this.maps[i.id],this.maps[n.id]=n,this.emitInput(),this.emitFile(n,i),n)}return!1},emitFilter:function(e,t){var i=!1;return this.$emit("input-filter",e,t,function(){return i=!0}),i},emitFile:function(e,t){this.$emit("input-file",e,t),!(e&&e.fileObject&&e.active)||t&&t.active?e&&e.fileObject&&e.active||!t||!t.fileObject||!t.active||this.uploading--:(this.uploading++,this.$nextTick(function(){var t=this;setTimeout(function(){t.upload(e).then(function(){(e=t.get(e))&&e.fileObject&&t.update(e,{active:!1,success:!e.error})}).catch(function(i){t.update(e,{active:!1,success:!1,error:i.code||i.error||i.message||i})})},parseInt(50*Math.random()+50,10))})),!this.active||Boolean(e)===Boolean(t)&&e.active===t.active||this.watchActive(!0)},emitInput:function(){this.$emit("input",this.files)},upload:function(e){var t=this.get(e);if(!t)return Promise.reject("not_exists");if(!t.fileObject)return Promise.reject("file_object");if(t.error)return Promise.reject(t.error);if(t.success)return Promise.resolve(t);var i=this.extensions;if(i&&(i.length||void 0===i.length)&&("object"===(void 0===i?"undefined":o(i))&&i instanceof RegExp||("string"==typeof i&&(i=i.split(",").map(function(e){return e.trim()}).filter(function(e){return e})),i=new RegExp("\\.("+i.join("|").replace(/\./g,"\\.")+")$","i")),-1===t.name.search(i)))return Promise.reject("extension");if(this.size>0&&t.size>=0&&t.size>this.size)return Promise.reject("size");if(this.customAction)return this.customAction(t,this);if(this.features.html5){if(this.shouldUseChunkUpload(t))return this.uploadChunk(t);if(t.putAction)return this.uploadPut(t);if(t.postAction)return this.uploadHtml5(t)}return t.postAction?this.uploadHtml4(t):Promise.reject("No action configured")},shouldUseChunkUpload:function(e){return this.chunkEnabled&&!!this.chunkOptions.handler&&e.size>this.chunkOptions.minSize},uploadChunk:function(e){var t=this.chunkOptions.handler;return e.chunk=new t(e,this.chunkOptions),e.chunk.upload()},uploadPut:function(e){var t=[],i=void 0;for(var n in e.data)null!==(i=e.data[n])&&void 0!==i&&t.push(encodeURIComponent(n)+"="+encodeURIComponent(i));var r=t.length?(-1===e.putAction.indexOf("?")?"?":"&")+t.join("&"):"",o=new XMLHttpRequest;return o.open("PUT",e.putAction+r),this.uploadXhr(o,e,e.file)},uploadHtml5:function(e){var t=new window.FormData,i=void 0;for(var n in e.data)(i=e.data[n])&&"object"===(void 0===i?"undefined":o(i))&&"function"!=typeof i.toString?i instanceof File?t.append(n,i,i.name):t.append(n,JSON.stringify(i)):null!==i&&void 0!==i&&t.append(n,i);t.append(this.name,e.file,e.file.filename||e.name);var r=new XMLHttpRequest;return r.open("POST",e.postAction),this.uploadXhr(r,e,t)},uploadXhr:function(e,t,i){var n=this,r=t,o=0,s=0;e.upload.onprogress=function(e){if(r=n.get(r),e.lengthComputable&&r&&r.fileObject&&r.active){var t=Math.round(Date.now()/1e3);t!==o&&(o=t,r=n.update(r,{progress:(e.loaded/e.total*100).toFixed(2),speed:e.loaded-s}),s=e.loaded)}};var a=setInterval(function(){if(!(r=n.get(r))||!r.fileObject||r.success||r.error||!r.active){a&&(clearInterval(a),a=!1);try{e.abort(),e.timeout=1}catch(e){}}},100);return new Promise(function(t,o){var s=void 0,u=function(i){if(!s){if(s=!0,a&&(clearInterval(a),a=!1),!(r=n.get(r)))return o("not_exists");if(!r.fileObject)return o("file_object");if(r.error)return o(r.error);if(!r.active)return o("abort");if(r.success)return t(r);var u={};switch(i.type){case"timeout":case"abort":u.error=i.type;break;case"error":e.status?e.status>=500?u.error="server":e.status>=400&&(u.error="denied"):u.error="network";break;default:e.status>=500?u.error="server":e.status>=400?u.error="denied":u.progress="100.00"}if(e.responseText){var c=e.getResponseHeader("Content-Type");c&&-1!==c.indexOf("/json")?u.response=JSON.parse(e.responseText):u.response=e.responseText}return(r=n.update(r,u)).error?o(r.error):t(r)}};for(var c in e.onload=u,e.onerror=u,e.onabort=u,e.ontimeout=u,r.timeout&&(e.timeout=r.timeout),r.headers)e.setRequestHeader(c,r.headers[c]);r=n.update(r,{xhr:e}),e.send(i)})},uploadHtml4:function(e){var t=this,i=e,n=function(e){27===e.keyCode&&e.preventDefault()},r=document.createElement("iframe");r.id="upload-iframe-"+i.id,r.name="upload-iframe-"+i.id,r.src="about:blank",r.setAttribute("style","width:1px;height:1px;top:-999em;position:absolute; margin-top:-999em;");var s=document.createElement("form");s.action=i.postAction,s.name="upload-form-"+i.id,s.setAttribute("method","POST"),s.setAttribute("target","upload-iframe-"+i.id),s.setAttribute("enctype","multipart/form-data");var a=void 0,u=void 0;for(var c in i.data)(a=i.data[c])&&"object"===(void 0===a?"undefined":o(a))&&"function"!=typeof a.toString&&(a=JSON.stringify(a)),null!==a&&void 0!==a&&((u=document.createElement("input")).type="hidden",u.name=c,u.value=a,s.appendChild(u));s.appendChild(i.el),document.body.appendChild(r).appendChild(s);return new Promise(function(e,o){setTimeout(function(){if(!(i=t.update(i,{iframe:r})))return o("not_exists");var a=setInterval(function(){(i=t.get(i))&&i.fileObject&&!i.success&&!i.error&&i.active||(a&&(clearInterval(a),a=!1),r.onabort({type:i?"abort":"not_exists"}))},100),u=void 0,c=function(s){if(!u){if(u=!0,a&&(clearInterval(a),a=!1),document.body.removeEventListener("keydown",n),!(i=t.get(i)))return o("not_exists");if(!i.fileObject)return o("file_object");if(i.error)return o(i.error);if(!i.active)return o("abort");if(i.success)return e(i);var c=function(){var e=void 0;try{r.contentWindow&&(e=r.contentWindow.document)}catch(e){}if(!e)try{e=r.contentDocument?r.contentDocument:r.document}catch(t){e=r.document}return e&&e.body?e.body.innerHTML:null}(),d={};switch(s.type){case"abort":d.error="abort";break;case"error":i.error?d.error=i.error:d.error=null===c?"network":"denied";break;default:i.error?d.error=i.error:null===d?d.error="network":d.progress="100.00"}if(null!==c){if(c&&"{"===c.substr(0,1)&&"}"===c.substr(c.length-1,1))try{c=JSON.parse(c)}catch(e){}d.response=c}return(i=t.update(i,d)).error?o(i.error):e(i)}};r.onload=c,r.onerror=c,r.onabort=c,document.body.addEventListener("keydown",n),s.submit()},50)}).then(function(e){return r.parentNode&&r.parentNode.removeChild(r),e}).catch(function(e){return r.parentNode&&r.parentNode.removeChild(r),e})},watchActive:function(e){for(var t=void 0,i=0;t=this.files[i];)if(i++,t.fileObject)if(e&&!this.destroy){if(this.uploading>=this.thread||this.uploading&&!this.features.html5)break;t.active||t.error||t.success||this.update(t,{active:!0})}else t.active&&this.update(t,{active:!1});else;0===this.uploading&&(this.active=!1)},watchDrop:function(e){var t=e;if(this.features.drop){if(this.dropElement)try{document.removeEventListener("dragenter",this.onDragenter,!1),document.removeEventListener("dragleave",this.onDragleave,!1),document.removeEventListener("drop",this.onDocumentDrop,!1),this.dropElement.removeEventListener("dragover",this.onDragover,!1),this.dropElement.removeEventListener("drop",this.onDrop,!1)}catch(e){}t?"string"==typeof t?t=document.querySelector(t)||this.$root.$el.querySelector(t):!0===t&&(t=this.$parent.$el):t=!1,this.dropElement=t,this.dropElement&&(document.addEventListener("dragenter",this.onDragenter,!1),document.addEventListener("dragleave",this.onDragleave,!1),document.addEventListener("drop",this.onDocumentDrop,!1),this.dropElement.addEventListener("dragover",this.onDragover,!1),this.dropElement.addEventListener("drop",this.onDrop,!1))}},onDragenter:function(e){e.preventDefault(),this.dropActive||(this.dropActive=!0)},onDragleave:function(e){e.preventDefault(),("HTML"===e.target.nodeName||0===e.screenX&&0===e.screenY&&!e.fromElement&&e.offsetX<=0)&&(this.dropActive=!1)},onDragover:function(e){e.preventDefault()},onDocumentDrop:function(){this.dropActive=!1},onDrop:function(e){e.preventDefault(),this.addDataTransfer(e.dataTransfer)}}},c=Object.freeze({default:u});return c&&u||c}); +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.VueUploadComponent=t()}(this,function(){"use strict";var r=function(t){var i=new XMLHttpRequest;return i.open(t.method||"GET",t.url),i.responseType="json",t.headers&&Object.keys(t.headers).forEach(function(e){i.setRequestHeader(e,t.headers[e])}),i};function e(e){var n,t,i=r(e);return n=i,t=e.body,new Promise(function(e,i){n.onload=function(){if(200<=n.status&&n.status<300){var t;try{t=JSON.parse(n.response)}catch(e){t=n.response}e(t)}else i(n.response)},n.onerror=function(){return i(n.response)},n.send(JSON.stringify(t))})}var t=function(){function n(e,t){for(var i=0;i=this.maximum)break;if(r.push(s),1===this.maximum)break}}if(!r.length)return!1;1===this.maximum&&this.clear();var u=void 0;!0===t||0===t?u=r.concat(this.files):t?(u=r.concat([])).splice(t,0,r):u=this.files.concat(r),this.files=u;for(var c=0;c=r.maximum)return n(r.add(o));r.getEntry(e).then(function(e){o.push.apply(o,h(e)),t(i+1)})}(0)})}if(e.files.length){for(var n=0;n=this.maximum));n++);return Promise.resolve(this.add(o))}return Promise.resolve([])},getEntry:function(s){var a=this,u=1=a.maximum?r(o):e[i]?void a.getEntry(e[i],u+s.name+"/").then(function(e){o.push.apply(o,h(e)),t(i+1)}):n()}(0)})}()}else r([])})},replace:function(e,t){var i=this.get(e),n=this.get(t);if(!i||!n||i===n)return!1;var r=this.files.concat([]),o=r.indexOf(i),s=r.indexOf(n);return-1!==o&&-1!==s&&(r[o]=n,r[s]=i,this.files=r,this.emitInput(),!0)},remove:function(e){var t=this.get(e);if(t){if(this.emitFilter(void 0,t))return!1;var i=this.files.concat([]),n=i.indexOf(t);if(-1===n)return console.error("remove",t),!1;i.splice(n,1),this.files=i,delete this.maps[t.id],this.emitInput(),this.emitFile(void 0,t)}return t},update:function(e,t){var i=this.get(e);if(i){var n=f({},i,t);if(!i.fileObject||!i.active||n.active||n.error||n.success||(n.error="abort"),this.emitFilter(n,i))return!1;var r=this.files.concat([]),o=r.indexOf(i);return-1===o?(console.error("update",i),!1):(r.splice(o,1,n),this.files=r,delete this.maps[i.id],this.maps[n.id]=n,this.emitInput(),this.emitFile(n,i),n)}return!1},emitFilter:function(e,t){var i=!1;return this.$emit("input-filter",e,t,function(){return i=!0}),i},emitFile:function(i,e){this.$emit("input-file",i,e),!(i&&i.fileObject&&i.active)||e&&e.active?i&&i.fileObject&&i.active||!e||!e.fileObject||!e.active||this.uploading--:(this.uploading++,this.$nextTick(function(){var t=this;setTimeout(function(){t.upload(i).then(function(){(i=t.get(i))&&i.fileObject&&t.update(i,{active:!1,success:!i.error})}).catch(function(e){t.update(i,{active:!1,success:!1,error:e.code||e.error||e.message||e})})},parseInt(50*Math.random()+50,10))})),!this.active||Boolean(i)===Boolean(e)&&i.active===e.active||this.watchActive(!0)},emitInput:function(){this.$emit("input",this.files)},upload:function(e){var t=this.get(e);if(!t)return Promise.reject("not_exists");if(!t.fileObject)return Promise.reject("file_object");if(t.error)return Promise.reject(t.error);if(t.success)return Promise.resolve(t);var i=this.extensions;if(i&&(i.length||void 0===i.length)&&("object"===(void 0===i?"undefined":l(i))&&i instanceof RegExp||("string"==typeof i&&(i=i.split(",").map(function(e){return e.trim()}).filter(function(e){return e})),i=new RegExp("\\.("+i.join("|").replace(/\./g,"\\.")+")$","i")),-1===t.name.search(i)))return Promise.reject("extension");if(0this.size)return Promise.reject("size");if(this.customAction)return this.customAction(t,this);if(this.features.html5){if(this.shouldUseChunkUpload(t))return this.uploadChunk(t);if(t.putAction)return this.uploadPut(t);if(t.postAction)return this.uploadHtml5(t)}return t.postAction?this.uploadHtml4(t):Promise.reject("No action configured")},shouldUseChunkUpload:function(e){return this.chunkEnabled&&!!this.chunkOptions.handler&&e.size>this.chunkOptions.minSize},uploadChunk:function(e){var t=this.chunkOptions.handler;return e.chunk=new t(e,this.chunkOptions),e.chunk.upload()},uploadPut:function(e){var t=[],i=void 0;for(var n in e.data)null!=(i=e.data[n])&&t.push(encodeURIComponent(n)+"="+encodeURIComponent(i));var r=t.length?(-1===e.putAction.indexOf("?")?"?":"&")+t.join("&"):"",o=new XMLHttpRequest;return o.open("PUT",e.putAction+r),this.uploadXhr(o,e,e.file)},uploadHtml5:function(e){var t=new window.FormData,i=void 0;for(var n in e.data)(i=e.data[n])&&"object"===(void 0===i?"undefined":l(i))&&"function"!=typeof i.toString?i instanceof File?t.append(n,i,i.name):t.append(n,JSON.stringify(i)):null!=i&&t.append(n,i);t.append(this.name,e.file,e.file.filename||e.name);var r=new XMLHttpRequest;return r.open("POST",e.postAction),this.uploadXhr(r,e,t)},uploadXhr:function(s,e,i){var a=this,u=e,n=0,r=0;s.upload.onprogress=function(e){if(u=a.get(u),e.lengthComputable&&u&&u.fileObject&&u.active){var t=Math.round(Date.now()/1e3);t!==n&&(n=t,u=a.update(u,{progress:(e.loaded/e.total*100).toFixed(2),speed:e.loaded-r}),r=e.loaded)}};var c=setInterval(function(){if(!(u=a.get(u))||!u.fileObject||u.success||u.error||!u.active){c&&(clearInterval(c),c=!1);try{s.abort(),s.timeout=1}catch(e){}}},100);return new Promise(function(n,r){var o=void 0,e=function(e){if(!o){if(o=!0,c&&(clearInterval(c),c=!1),!(u=a.get(u)))return r("not_exists");if(!u.fileObject)return r("file_object");if(u.error)return r(u.error);if(!u.active)return r("abort");if(u.success)return n(u);var t={};switch(e.type){case"timeout":case"abort":t.error=e.type;break;case"error":s.status?500<=s.status?t.error="server":400<=s.status&&(t.error="denied"):t.error="network";break;default:500<=s.status?t.error="server":400<=s.status?t.error="denied":t.progress="100.00"}if(s.responseText){var i=s.getResponseHeader("Content-Type");i&&-1!==i.indexOf("/json")?t.response=JSON.parse(s.responseText):t.response=s.responseText}return(u=a.update(u,t)).error?r(u.error):n(u)}};for(var t in s.onload=e,s.onerror=e,s.onabort=e,s.ontimeout=e,u.timeout&&(s.timeout=u.timeout),u.headers)s.setRequestHeader(t,u.headers[t]);u=a.update(u,{xhr:s}),s.send(i)})},uploadHtml4:function(e){var a=this,u=e,c=function(e){27===e.keyCode&&e.preventDefault()},d=document.createElement("iframe");d.id="upload-iframe-"+u.id,d.name="upload-iframe-"+u.id,d.src="about:blank",d.setAttribute("style","width:1px;height:1px;top:-999em;position:absolute; margin-top:-999em;");var t=document.createElement("form");t.action=u.postAction,t.name="upload-form-"+u.id,t.setAttribute("method","POST"),t.setAttribute("target","upload-iframe-"+u.id),t.setAttribute("enctype","multipart/form-data");var i=void 0,n=void 0;for(var r in u.data)(i=u.data[r])&&"object"===(void 0===i?"undefined":l(i))&&"function"!=typeof i.toString&&(i=JSON.stringify(i)),null!=i&&((n=document.createElement("input")).type="hidden",n.name=r,n.value=i,t.appendChild(n));t.appendChild(u.el),document.body.appendChild(d).appendChild(t);return new Promise(function(o,s){setTimeout(function(){if(!(u=a.update(u,{iframe:d})))return s("not_exists");var n=setInterval(function(){(u=a.get(u))&&u.fileObject&&!u.success&&!u.error&&u.active||(n&&(clearInterval(n),n=!1),d.onabort({type:u?"abort":"not_exists"}))},100),r=void 0,e=function(e){if(!r){if(r=!0,n&&(clearInterval(n),n=!1),document.body.removeEventListener("keydown",c),!(u=a.get(u)))return s("not_exists");if(!u.fileObject)return s("file_object");if(u.error)return s(u.error);if(!u.active)return s("abort");if(u.success)return o(u);var t=function(){var t=void 0;try{d.contentWindow&&(t=d.contentWindow.document)}catch(e){}if(!t)try{t=d.contentDocument?d.contentDocument:d.document}catch(e){t=d.document}return t&&t.body?t.body.innerHTML:null}(),i={};switch(e.type){case"abort":i.error="abort";break;case"error":u.error?i.error=u.error:i.error=null===t?"network":"denied";break;default:u.error?i.error=u.error:null===i?i.error="network":i.progress="100.00"}if(null!==t){if(t&&"{"===t.substr(0,1)&&"}"===t.substr(t.length-1,1))try{t=JSON.parse(t)}catch(e){}i.response=t}return(u=a.update(u,i)).error?s(u.error):o(u)}};d.onload=e,d.onerror=e,d.onabort=e,document.body.addEventListener("keydown",c),t.submit()},50)}).then(function(e){return d.parentNode&&d.parentNode.removeChild(d),e}).catch(function(e){return d.parentNode&&d.parentNode.removeChild(d),e})},watchActive:function(e){for(var t=void 0,i=0;t=this.files[i];)if(i++,t.fileObject)if(e&&!this.destroy){if(this.uploading>=this.thread||this.uploading&&!this.features.html5)break;t.active||t.error||t.success||this.update(t,{active:!0})}else t.active&&this.update(t,{active:!1});else;0===this.uploading&&(this.active=!1)},watchDrop:function(e){var t=e;if(this.features.drop){if(this.dropElement)try{document.removeEventListener("dragenter",this.onDragenter,!1),document.removeEventListener("dragleave",this.onDragleave,!1),document.removeEventListener("drop",this.onDocumentDrop,!1),this.dropElement.removeEventListener("dragover",this.onDragover,!1),this.dropElement.removeEventListener("drop",this.onDrop,!1)}catch(e){}t?"string"==typeof t?t=document.querySelector(t)||this.$root.$el.querySelector(t):!0===t&&(t=this.$parent.$el):t=!1,this.dropElement=t,this.dropElement&&(document.addEventListener("dragenter",this.onDragenter,!1),document.addEventListener("dragleave",this.onDragleave,!1),document.addEventListener("drop",this.onDocumentDrop,!1),this.dropElement.addEventListener("dragover",this.onDragover,!1),this.dropElement.addEventListener("drop",this.onDrop,!1))}},onDragenter:function(e){e.preventDefault(),this.dropActive||(this.dropActive=!0)},onDragleave:function(e){e.preventDefault(),("HTML"===e.target.nodeName||e.target===e.explicitOriginalTarget||0===e.screenX&&0===e.screenY&&!e.fromElement&&e.offsetX<=0)&&(this.dropActive=!1)},onDragover:function(e){e.preventDefault()},onDocumentDrop:function(){this.dropActive=!1},onDrop:function(e){e.preventDefault(),this.addDataTransfer(e.dataTransfer)}}},v=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("label",{class:e.className},[e._t("default"),e._ssrNode(" "),i("input-file")],2)};function y(o){if(o||"undefined"==typeof __VUE_SSR_CONTEXT__||(o=__VUE_SSR_CONTEXT__),!o)return function(){};return o.hasOwnProperty("styles")||(Object.defineProperty(o,"styles",{enumerable:!0,get:function(){return o._styles}}),o._renderStyles=function(e){var t="",i=!0,n=!1,r=void 0;try{for(var o,s=e[Symbol.iterator]();!(i=(o=s.next()).done);i=!0){var a=o.value,u=a.ids,c=a.media,d=a.parts;t+='"}}catch(e){n=!0,r=e}finally{try{!i&&s.return&&s.return()}finally{if(n)throw r}}return t}),function(e,t){var i=t.media||"default",n=o._styles[i]||(o._styles[i]={ids:[],parts:[]});if(!n.ids.includes(e)){n.media=t.media,n.ids.push(e);var r=t.source;n.parts.push(r)}}}var g=function(e,t,i,n,r,o,s,a){var u,c=i||{};if(c.render||(c.render=e.render,c.staticRenderFns=e.staticRenderFns,c._compiled=!0,r&&(c.functional=!0)),c._scopeId=n,u=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),t&&t.call(this,a(e)),e&&e._registeredComponents&&e._registeredComponents.add(o)},void 0!==(c._ssrRegister=u))if(c.functional){var d=c.render;c.render=function(e,t){return u.call(t),d(e,t)}}else{var l=c.beforeCreate;c.beforeCreate=l?[].concat(l,u):[u]}return c}(void 0!==v?{render:v,staticRenderFns:[]}:{},function(e){e&&e("data-v-62fe22ff_0",{source:"\n.file-uploads{overflow:hidden;position:relative;text-align:center;display:inline-block\n}\n.file-uploads.file-uploads-html4 input[type=file]{opacity:0;font-size:20em;z-index:1;top:0;left:0;right:0;bottom:0;position:absolute;width:100%;height:100%\n}\n.file-uploads.file-uploads-html5 input[type=file]{overflow:hidden;position:fixed;width:1px;height:1px;z-index:-1;opacity:0\n}",map:void 0,media:void 0})},void 0===m?{}:m,void 0,!1,"data-v-62fe22ff","undefined"!=typeof __vue_create_injector__&&__vue_create_injector__,void 0!==y?y:function(){}),b=Object.freeze({default:g});return b&&g||b}); //# sourceMappingURL=vue-upload-component.min.js.map diff --git a/dist/vue-upload-component.min.js.map b/dist/vue-upload-component.min.js.map index b02c7aa..08e6cda 100644 --- a/dist/vue-upload-component.min.js.map +++ b/dist/vue-upload-component.min.js.map @@ -1 +1 @@ -{"version":3,"file":"vue-upload-component.min.js","sources":["../src/utils/request.js","../src/chunk/ChunkUploadHandler.js","../src/InputFile.vue","../src/FileUpload.vue"],"sourcesContent":["/**\n * Creates a XHR request\n *\n * @param {Object} options\n */\nexport const createRequest = (options) => {\n const xhr = new XMLHttpRequest()\n xhr.open(options.method || 'GET', options.url)\n xhr.responseType = 'json'\n if (options.headers) {\n Object.keys(options.headers).forEach(key => {\n xhr.setRequestHeader(key, options.headers[key])\n })\n }\n\n return xhr\n}\n\n/**\n * Sends a XHR request with certain body\n *\n * @param {XMLHttpRequest} xhr\n * @param {Object} body\n */\nexport const sendRequest = (xhr, body) => {\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n var response\n try {\n response = JSON.parse(xhr.response)\n } catch (err) {\n response = xhr.response\n }\n resolve(response)\n } else {\n reject(xhr.response)\n }\n }\n xhr.onerror = () => reject(xhr.response)\n xhr.send(JSON.stringify(body))\n })\n}\n\n/**\n * Sends a XHR request with certain form data\n *\n * @param {XMLHttpRequest} xhr\n * @param {Object} data\n */\nexport const sendFormRequest = (xhr, data) => {\n const body = new FormData()\n for (var name in data) {\n body.append(name, data[name])\n }\n\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n var response\n try {\n response = JSON.parse(xhr.response)\n } catch (err) {\n response = xhr.response\n }\n resolve(response)\n } else {\n reject(xhr.response)\n }\n }\n xhr.onerror = () => reject(xhr.response)\n xhr.send(body)\n })\n}\n\n/**\n * Creates and sends XHR request\n *\n * @param {Object} options\n *\n * @returns Promise\n */\nexport default function (options) {\n const xhr = createRequest(options)\n\n return sendRequest(xhr, options.body)\n}\n","import {\n default as request,\n createRequest,\n sendFormRequest\n} from '../utils/request'\n\nexport default class ChunkUploadHandler {\n /**\n * Constructor\n *\n * @param {File} file\n * @param {Object} options\n */\n constructor (file, options) {\n this.file = file\n this.options = options\n }\n\n /**\n * Gets the max retries from options\n */\n get maxRetries () {\n return parseInt(this.options.maxRetries)\n }\n\n /**\n * Gets the max number of active chunks being uploaded at once from options\n */\n get maxActiveChunks () {\n return parseInt(this.options.maxActive)\n }\n\n /**\n * Gets the file type\n */\n get fileType () {\n return this.file.type\n }\n\n /**\n * Gets the file size\n */\n get fileSize () {\n return this.file.size\n }\n\n /**\n * Gets action (url) to upload the file\n */\n get action () {\n return this.options.action || null\n }\n\n /**\n * Gets the body to be merged when sending the request in start phase\n */\n get startBody () {\n return this.options.startBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in upload phase\n */\n get uploadBody () {\n return this.options.uploadBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in finish phase\n */\n get finishBody () {\n return this.options.finishBody || {}\n }\n\n /**\n * Gets the headers of the requests from options\n */\n get headers () {\n return this.options.headers || {}\n }\n\n /**\n * Whether it's ready to upload files or not\n */\n get readyToUpload () {\n return !!this.chunks\n }\n\n /**\n * Gets the progress of the chunk upload\n * - Gets all the completed chunks\n * - Gets the progress of all the chunks that are being uploaded\n */\n get progress () {\n const completedProgress = (this.chunksUploaded.length / this.chunks.length) * 100\n const uploadingProgress = this.chunksUploading.reduce((progress, chunk) => {\n return progress + ((chunk.progress | 0) / this.chunks.length)\n }, 0)\n\n return Math.min(completedProgress + uploadingProgress, 100)\n }\n\n /**\n * Gets all the chunks that are pending to be uploaded\n */\n get chunksToUpload () {\n return this.chunks.filter(chunk => {\n return !chunk.active && !chunk.uploaded\n })\n }\n\n /**\n * Whether there are chunks to upload or not\n */\n get hasChunksToUpload () {\n return this.chunksToUpload.length > 0\n }\n\n /**\n * Gets all the chunks that are uploading\n */\n get chunksUploading () {\n return this.chunks.filter(chunk => {\n return !!chunk.xhr && !!chunk.active\n })\n }\n\n /**\n * Gets all the chunks that have finished uploading\n */\n get chunksUploaded () {\n return this.chunks.filter(chunk => {\n return !!chunk.uploaded\n })\n }\n\n /**\n * Creates all the chunks in the initial state\n */\n createChunks () {\n this.chunks = []\n\n let start = 0\n let end = this.chunkSize\n while (start < this.fileSize) {\n this.chunks.push({\n blob: this.file.file.slice(start, end),\n startOffset: start,\n active: false,\n retries: this.maxRetries\n })\n start = end\n end = start + this.chunkSize\n }\n }\n\n /**\n * Updates the progress of the file with the handler's progress\n */\n updateFileProgress () {\n this.file.progress = this.progress\n }\n\n /**\n * Paues the upload process\n * - Stops all active requests\n * - Sets the file not active\n */\n pause () {\n this.file.active = false\n this.stopChunks()\n }\n\n /**\n * Stops all the current chunks\n */\n stopChunks () {\n this.chunksUploading.forEach(chunk => {\n chunk.xhr.abort()\n chunk.active = false\n })\n }\n\n /**\n * Resumes the file upload\n * - Sets the file active\n * - Starts the following chunks\n */\n resume () {\n this.file.active = true\n this.startChunking()\n }\n\n /**\n * Starts the file upload\n *\n * @returns Promise\n * - resolve The file was uploaded\n * - reject The file upload failed\n */\n upload () {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve\n this.reject = reject\n })\n this.start()\n\n return this.promise\n }\n\n /**\n * Start phase\n * Sends a request to the backend to initialise the chunks\n */\n start () {\n request({\n method: 'POST',\n headers: Object.assign({}, this.headers, {\n 'Content-Type': 'application/json'\n }),\n url: this.action,\n body: Object.assign(this.startBody, {\n phase: 'start',\n mime_type: this.fileType,\n size: this.fileSize\n })\n }).then(res => {\n if (res.status !== 'success') {\n this.file.response = res\n return this.reject('server')\n }\n\n this.sessionId = res.data.session_id\n this.chunkSize = res.data.end_offset\n\n this.createChunks()\n this.startChunking()\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n\n /**\n * Starts to upload chunks\n */\n startChunking () {\n for (let i = 0; i < this.maxActiveChunks; i++) {\n this.uploadNextChunk()\n }\n }\n\n /**\n * Uploads the next chunk\n * - Won't do anything if the process is paused\n * - Will start finish phase if there are no more chunks to upload\n */\n uploadNextChunk () {\n if (this.file.active) {\n if (this.hasChunksToUpload) {\n return this.uploadChunk(this.chunksToUpload[0])\n }\n\n if (this.chunksUploading.length === 0) {\n return this.finish()\n }\n }\n }\n\n /**\n * Uploads a chunk\n * - Sends the chunk to the backend\n * - Sets the chunk as uploaded if everything went well\n * - Decreases the number of retries if anything went wrong\n * - Fails if there are no more retries\n *\n * @param {Object} chunk\n */\n uploadChunk (chunk) {\n chunk.progress = 0\n chunk.active = true\n this.updateFileProgress()\n chunk.xhr = createRequest({\n method: 'POST',\n headers: this.headers,\n url: this.action\n })\n\n chunk.xhr.upload.addEventListener('progress', function (evt) {\n if (evt.lengthComputable) {\n chunk.progress = Math.round(evt.loaded / evt.total * 100)\n }\n }, false)\n\n sendFormRequest(chunk.xhr, Object.assign(this.uploadBody, {\n phase: 'upload',\n session_id: this.sessionId,\n start_offset: chunk.startOffset,\n chunk: chunk.blob\n })).then(res => {\n chunk.active = false\n if (res.status === 'success') {\n chunk.uploaded = true\n } else {\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n }\n\n this.uploadNextChunk()\n }).catch(() => {\n chunk.active = false\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n\n this.uploadNextChunk()\n })\n }\n\n /**\n * Finish phase\n * Sends a request to the backend to finish the process\n */\n finish () {\n this.updateFileProgress()\n\n request({\n method: 'POST',\n headers: Object.assign({}, this.headers, {\n 'Content-Type': 'application/json'\n }),\n url: this.action,\n body: Object.assign(this.finishBody, {\n phase: 'finish',\n session_id: this.sessionId\n })\n }).then(res => {\n this.file.response = res\n if (res.status !== 'success') {\n return this.reject('server')\n }\n\n this.resolve(res)\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n}\n","\n\n","\n\n\n"],"names":["createRequest","options","xhr","XMLHttpRequest","open","method","url","responseType","headers","keys","forEach","setRequestHeader","key","body","Promise","resolve","reject","onload","status","response","JSON","parse","err","onerror","send","stringify","ChunkUploadHandler","file","chunks","start","end","this","chunkSize","fileSize","push","slice","maxRetries","progress","active","stopChunks","chunksUploading","abort","startChunking","promise","Object","assign","action","startBody","fileType","then","res","_this2","sessionId","data","session_id","end_offset","createChunks","catch","i","maxActiveChunks","uploadNextChunk","hasChunksToUpload","uploadChunk","chunksToUpload","length","finish","chunk","updateFileProgress","upload","addEventListener","evt","lengthComputable","Math","round","loaded","total","FormData","name","append","uploadBody","startOffset","blob","uploaded","retries","_this3","finishBody","_this4","parseInt","maxActive","type","size","completedProgress","chunksUploaded","uploadingProgress","reduce","_this5","min","filter","CHUNK_DEFAULT_OPTIONS","ChunkUploadDefaultHandler","render","e","$destroy","$parent","addInputFile","target","constructor","$el","String","Boolean","Number","multiple","Function","Array","value","input","document","createElement","window","files","webkitdirectory","directory","features","html5","ondrop","drop","maps","$nextTick","$forceUpdate","watchDrop","destroy","fileObject","error","success","undefined","watchActive","oldMaps","id","newFile","oldFile","emitFile","emitInput","_files","index","addIndex","isArray","addFiles","Blob","webkitRelativePath","relativePath","Element","el","putAction","postAction","timeout","random","toString","substr","emitFilter","maximum","clear","newFiles","concat","splice","replace","add","dataTransfer","items","item","getAsEntry","getAsFile","webkitGetAsEntry","_this","getEntry","results","entry","path","isFile","isDirectory","dropDirectory","dirReader","createReader","readEntries","entries","id1","id2","file1","get","file2","index1","indexOf","index2","isPrevent","$emit","uploading","update","code","message","extensions","RegExp","split","map","trim","join","search","customAction","shouldUseChunkUpload","uploadPut","uploadHtml5","uploadHtml4","chunkEnabled","chunkOptions","handler","minSize","HandlerClass","querys","encodeURIComponent","queryString","uploadXhr","form","File","filename","_file","speedTime","speedLoaded","onprogress","speedTime2","Date","now","toFixed","interval","setInterval","complete","fn","responseText","contentType","getResponseHeader","onabort","ontimeout","onKeydown","keyCode","preventDefault","iframe","src","setAttribute","appendChild","removeEventListener","doc","contentWindow","contentDocument","innerHTML","getResponseData","submit","parentNode","removeChild","thread","_el","dropElement","onDragenter","onDragleave","onDocumentDrop","onDragover","onDrop","querySelector","$root","dropActive","nodeName","screenX","screenY","fromElement","offsetX","addDataTransfer"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"vue-upload-component.min.js","sources":["../src/utils/request.js","../src/chunk/ChunkUploadHandler.js","../src/InputFile.vue.js?rollup-plugin-vue=script.js","../src/FileUpload.vue.js?rollup-plugin-vue=script.js"],"sourcesContent":["/**\n * Creates a XHR request\n *\n * @param {Object} options\n */\nexport const createRequest = (options) => {\n const xhr = new XMLHttpRequest()\n xhr.open(options.method || 'GET', options.url)\n xhr.responseType = 'json'\n if (options.headers) {\n Object.keys(options.headers).forEach(key => {\n xhr.setRequestHeader(key, options.headers[key])\n })\n }\n\n return xhr\n}\n\n/**\n * Sends a XHR request with certain body\n *\n * @param {XMLHttpRequest} xhr\n * @param {Object} body\n */\nexport const sendRequest = (xhr, body) => {\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n var response\n try {\n response = JSON.parse(xhr.response)\n } catch (err) {\n response = xhr.response\n }\n resolve(response)\n } else {\n reject(xhr.response)\n }\n }\n xhr.onerror = () => reject(xhr.response)\n xhr.send(JSON.stringify(body))\n })\n}\n\n/**\n * Sends a XHR request with certain form data\n *\n * @param {XMLHttpRequest} xhr\n * @param {Object} data\n */\nexport const sendFormRequest = (xhr, data) => {\n const body = new FormData()\n for (var name in data) {\n body.append(name, data[name])\n }\n\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n var response\n try {\n response = JSON.parse(xhr.response)\n } catch (err) {\n response = xhr.response\n }\n resolve(response)\n } else {\n reject(xhr.response)\n }\n }\n xhr.onerror = () => reject(xhr.response)\n xhr.send(body)\n })\n}\n\n/**\n * Creates and sends XHR request\n *\n * @param {Object} options\n *\n * @returns Promise\n */\nexport default function (options) {\n const xhr = createRequest(options)\n\n return sendRequest(xhr, options.body)\n}\n","import {\n default as request,\n createRequest,\n sendFormRequest\n} from '../utils/request'\n\nexport default class ChunkUploadHandler {\n /**\n * Constructor\n *\n * @param {File} file\n * @param {Object} options\n */\n constructor (file, options) {\n this.file = file\n this.options = options\n }\n\n /**\n * Gets the max retries from options\n */\n get maxRetries () {\n return parseInt(this.options.maxRetries)\n }\n\n /**\n * Gets the max number of active chunks being uploaded at once from options\n */\n get maxActiveChunks () {\n return parseInt(this.options.maxActive)\n }\n\n /**\n * Gets the file type\n */\n get fileType () {\n return this.file.type\n }\n\n /**\n * Gets the file size\n */\n get fileSize () {\n return this.file.size\n }\n\n /**\n * Gets action (url) to upload the file\n */\n get action () {\n return this.options.action || null\n }\n\n /**\n * Gets the body to be merged when sending the request in start phase\n */\n get startBody () {\n return this.options.startBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in upload phase\n */\n get uploadBody () {\n return this.options.uploadBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in finish phase\n */\n get finishBody () {\n return this.options.finishBody || {}\n }\n\n /**\n * Gets the headers of the requests from options\n */\n get headers () {\n return this.options.headers || {}\n }\n\n /**\n * Whether it's ready to upload files or not\n */\n get readyToUpload () {\n return !!this.chunks\n }\n\n /**\n * Gets the progress of the chunk upload\n * - Gets all the completed chunks\n * - Gets the progress of all the chunks that are being uploaded\n */\n get progress () {\n const completedProgress = (this.chunksUploaded.length / this.chunks.length) * 100\n const uploadingProgress = this.chunksUploading.reduce((progress, chunk) => {\n return progress + ((chunk.progress | 0) / this.chunks.length)\n }, 0)\n\n return Math.min(completedProgress + uploadingProgress, 100)\n }\n\n /**\n * Gets all the chunks that are pending to be uploaded\n */\n get chunksToUpload () {\n return this.chunks.filter(chunk => {\n return !chunk.active && !chunk.uploaded\n })\n }\n\n /**\n * Whether there are chunks to upload or not\n */\n get hasChunksToUpload () {\n return this.chunksToUpload.length > 0\n }\n\n /**\n * Gets all the chunks that are uploading\n */\n get chunksUploading () {\n return this.chunks.filter(chunk => {\n return !!chunk.xhr && !!chunk.active\n })\n }\n\n /**\n * Gets all the chunks that have finished uploading\n */\n get chunksUploaded () {\n return this.chunks.filter(chunk => {\n return !!chunk.uploaded\n })\n }\n\n /**\n * Creates all the chunks in the initial state\n */\n createChunks () {\n this.chunks = []\n\n let start = 0\n let end = this.chunkSize\n while (start < this.fileSize) {\n this.chunks.push({\n blob: this.file.file.slice(start, end),\n startOffset: start,\n active: false,\n retries: this.maxRetries\n })\n start = end\n end = start + this.chunkSize\n }\n }\n\n /**\n * Updates the progress of the file with the handler's progress\n */\n updateFileProgress () {\n this.file.progress = this.progress\n }\n\n /**\n * Paues the upload process\n * - Stops all active requests\n * - Sets the file not active\n */\n pause () {\n this.file.active = false\n this.stopChunks()\n }\n\n /**\n * Stops all the current chunks\n */\n stopChunks () {\n this.chunksUploading.forEach(chunk => {\n chunk.xhr.abort()\n chunk.active = false\n })\n }\n\n /**\n * Resumes the file upload\n * - Sets the file active\n * - Starts the following chunks\n */\n resume () {\n this.file.active = true\n this.startChunking()\n }\n\n /**\n * Starts the file upload\n *\n * @returns Promise\n * - resolve The file was uploaded\n * - reject The file upload failed\n */\n upload () {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve\n this.reject = reject\n })\n this.start()\n\n return this.promise\n }\n\n /**\n * Start phase\n * Sends a request to the backend to initialise the chunks\n */\n start () {\n request({\n method: 'POST',\n headers: Object.assign({}, this.headers, {\n 'Content-Type': 'application/json'\n }),\n url: this.action,\n body: Object.assign(this.startBody, {\n phase: 'start',\n mime_type: this.fileType,\n size: this.fileSize\n })\n }).then(res => {\n if (res.status !== 'success') {\n this.file.response = res\n return this.reject('server')\n }\n\n this.sessionId = res.data.session_id\n this.chunkSize = res.data.end_offset\n\n this.createChunks()\n this.startChunking()\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n\n /**\n * Starts to upload chunks\n */\n startChunking () {\n for (let i = 0; i < this.maxActiveChunks; i++) {\n this.uploadNextChunk()\n }\n }\n\n /**\n * Uploads the next chunk\n * - Won't do anything if the process is paused\n * - Will start finish phase if there are no more chunks to upload\n */\n uploadNextChunk () {\n if (this.file.active) {\n if (this.hasChunksToUpload) {\n return this.uploadChunk(this.chunksToUpload[0])\n }\n\n if (this.chunksUploading.length === 0) {\n return this.finish()\n }\n }\n }\n\n /**\n * Uploads a chunk\n * - Sends the chunk to the backend\n * - Sets the chunk as uploaded if everything went well\n * - Decreases the number of retries if anything went wrong\n * - Fails if there are no more retries\n *\n * @param {Object} chunk\n */\n uploadChunk (chunk) {\n chunk.progress = 0\n chunk.active = true\n this.updateFileProgress()\n chunk.xhr = createRequest({\n method: 'POST',\n headers: this.headers,\n url: this.action\n })\n\n chunk.xhr.upload.addEventListener('progress', function (evt) {\n if (evt.lengthComputable) {\n chunk.progress = Math.round(evt.loaded / evt.total * 100)\n }\n }, false)\n\n sendFormRequest(chunk.xhr, Object.assign(this.uploadBody, {\n phase: 'upload',\n session_id: this.sessionId,\n start_offset: chunk.startOffset,\n chunk: chunk.blob\n })).then(res => {\n chunk.active = false\n if (res.status === 'success') {\n chunk.uploaded = true\n } else {\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n }\n\n this.uploadNextChunk()\n }).catch(() => {\n chunk.active = false\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n\n this.uploadNextChunk()\n })\n }\n\n /**\n * Finish phase\n * Sends a request to the backend to finish the process\n */\n finish () {\n this.updateFileProgress()\n\n request({\n method: 'POST',\n headers: Object.assign({}, this.headers, {\n 'Content-Type': 'application/json'\n }),\n url: this.action,\n body: Object.assign(this.finishBody, {\n phase: 'finish',\n session_id: this.sessionId\n })\n }).then(res => {\n this.file.response = res\n if (res.status !== 'success') {\n return this.reject('server')\n }\n\n this.resolve(res)\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n}\n","//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nexport default {\n methods: {\n change(e) {\n this.$destroy()\n this.$parent.addInputFile(e.target)\n // eslint-disable-next-line\n new this.constructor({\n parent: this.$parent,\n el: this.$el,\n })\n }\n }\n}\n","//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport ChunkUploadDefaultHandler from './chunk/ChunkUploadHandler'\nimport InputFile from './InputFile.vue'\n\nconst CHUNK_DEFAULT_OPTIONS = {\n headers: {},\n action: '',\n minSize: 1048576,\n maxActive: 3,\n maxRetries: 5,\n\n handler: ChunkUploadDefaultHandler\n}\n\nexport default {\n components: {\n InputFile,\n },\n props: {\n inputId: {\n type: String,\n },\n\n name: {\n type: String,\n default: 'file',\n },\n\n accept: {\n type: String,\n },\n\n capture: {\n },\n\n multiple: {\n type: Boolean,\n },\n\n maximum: {\n type: Number,\n default() {\n return this.multiple ? 0 : 1\n }\n },\n\n addIndex: {\n type: [Boolean, Number],\n },\n\n directory: {\n type: Boolean,\n },\n\n postAction: {\n type: String,\n },\n\n putAction: {\n type: String,\n },\n\n customAction: {\n type: Function,\n },\n\n headers: {\n type: Object,\n default: Object,\n },\n\n data: {\n type: Object,\n default: Object,\n },\n\n timeout: {\n type: Number,\n default: 0,\n },\n\n\n drop: {\n default: false,\n },\n\n dropDirectory: {\n type: Boolean,\n default: true,\n },\n\n size: {\n type: Number,\n default: 0,\n },\n\n extensions: {\n default: Array,\n },\n\n\n value: {\n type: Array,\n default: Array,\n },\n\n thread: {\n type: Number,\n default: 1,\n },\n\n // Chunk upload enabled\n chunkEnabled: {\n type: Boolean,\n default: false\n },\n\n // Chunk upload properties\n chunk: {\n type: Object,\n default: () => {\n return CHUNK_DEFAULT_OPTIONS\n }\n }\n },\n\n data() {\n return {\n files: this.value,\n features: {\n html5: true,\n directory: false,\n drag: false,\n },\n\n active: false,\n dropActive: false,\n\n uploading: 0,\n\n destroy: false,\n }\n },\n\n\n /**\n * mounted\n * @return {[type]} [description]\n */\n mounted() {\n let input = document.createElement('input')\n input.type = 'file'\n input.multiple = true\n\n // html5 特征\n if (window.FormData && input.files) {\n // 上传目录特征\n if (typeof input.webkitdirectory === 'boolean' || typeof input.directory === 'boolean') {\n this.features.directory = true\n }\n\n // 拖拽特征\n if (this.features.html5 && typeof input.ondrop !== 'undefined') {\n this.features.drop = true\n }\n } else {\n this.features.html5 = false\n }\n\n // files 定位缓存\n this.maps = {}\n\n this.$nextTick(function () {\n\n // 更新下父级\n if (this.$parent) {\n this.$parent.$forceUpdate()\n }\n\n // 拖拽渲染\n this.watchDrop(this.drop)\n })\n },\n\n /**\n * beforeDestroy\n * @return {[type]} [description]\n */\n beforeDestroy() {\n // 已销毁\n this.destroy = true\n\n // 设置成不激活\n this.active = false\n },\n\n computed: {\n /**\n * uploading 正在上传的线程\n * @return {[type]} [description]\n */\n\n /**\n * uploaded 文件列表是否全部已上传\n * @return {[type]} [description]\n */\n uploaded() {\n let file\n for (let i = 0; i < this.files.length; i++) {\n file = this.files[i]\n if (file.fileObject && !file.error && !file.success) {\n return false\n }\n }\n return true\n },\n\n chunkOptions () {\n return Object.assign(CHUNK_DEFAULT_OPTIONS, this.chunk)\n },\n\n className() {\n return [\n 'file-uploads',\n this.features.html5 ? 'file-uploads-html5' : 'file-uploads-html4',\n this.features.directory && this.directory ? 'file-uploads-directory' : undefined,\n this.features.drop && this.drop ? 'file-uploads-drop' : undefined,\n ]\n }\n },\n\n\n watch: {\n active(active) {\n this.watchActive(active)\n },\n\n dropActive() {\n if (this.$parent) {\n this.$parent.$forceUpdate()\n }\n },\n\n drop(value) {\n this.watchDrop(value)\n },\n\n value(files) {\n if (this.files === files) {\n return\n }\n this.files = files\n\n let oldMaps = this.maps\n\n // 重写 maps 缓存\n this.maps = {}\n for (let i = 0; i < this.files.length; i++) {\n let file = this.files[i]\n this.maps[file.id] = file\n }\n\n // add, update\n for (let key in this.maps) {\n let newFile = this.maps[key]\n let oldFile = oldMaps[key]\n if (newFile !== oldFile) {\n this.emitFile(newFile, oldFile)\n }\n }\n\n // delete\n for (let key in oldMaps) {\n if (!this.maps[key]) {\n this.emitFile(undefined, oldMaps[key])\n }\n }\n },\n },\n\n methods: {\n\n // 清空\n clear() {\n if (this.files.length) {\n let files = this.files\n this.files = []\n\n // 定位\n this.maps = {}\n\n // 事件\n this.emitInput()\n for (let i = 0; i < files.length; i++) {\n this.emitFile(undefined, files[i])\n }\n }\n return true\n },\n\n // 选择\n get(id) {\n if (!id) {\n return false\n }\n\n if (typeof id === 'object') {\n return this.maps[id.id] || false\n }\n\n return this.maps[id] || false\n },\n\n // 添加\n add(_files, index = this.addIndex) {\n let files = _files\n let isArray = files instanceof Array\n\n // 不是数组整理成数组\n if (!isArray) {\n files = [files]\n }\n\n // 遍历规范对象\n let addFiles = []\n for (let i = 0; i < files.length; i++) {\n let file = files[i]\n if (this.features.html5 && file instanceof Blob) {\n file = {\n file,\n size: file.size,\n name: file.webkitRelativePath || file.relativePath || file.name || 'unknown',\n type: file.type,\n }\n }\n let fileObject = false\n if (file.fileObject === false) {\n // false\n } else if (file.fileObject) {\n fileObject = true\n } else if (typeof Element !== 'undefined' && file.el instanceof Element) {\n fileObject = true\n } else if (typeof Blob !== 'undefined' && file.file instanceof Blob) {\n fileObject = true\n }\n if (fileObject) {\n file = {\n fileObject: true,\n size: -1,\n name: 'Filename',\n type: '',\n active: false,\n error: '',\n success: false,\n putAction: this.putAction,\n postAction: this.postAction,\n timeout: this.timeout,\n ...file,\n response: {},\n\n progress: '0.00', // 只读\n speed: 0, // 只读\n // xhr: false, // 只读\n // iframe: false, // 只读\n }\n\n file.data = {\n ...this.data,\n ...file.data ? file.data : {},\n }\n\n file.headers = {\n ...this.headers,\n ...file.headers ? file.headers : {},\n }\n }\n\n // 必须包含 id\n if (!file.id) {\n file.id = Math.random().toString(36).substr(2)\n }\n\n if (this.emitFilter(file, undefined)) {\n continue\n }\n\n // 最大数量限制\n if (this.maximum > 1 && (addFiles.length + this.files.length) >= this.maximum) {\n break\n }\n\n addFiles.push(file)\n\n // 最大数量限制\n if (this.maximum === 1) {\n break\n }\n }\n\n // 没有文件\n if (!addFiles.length) {\n return false\n }\n\n // 如果是 1 清空\n if (this.maximum === 1) {\n this.clear()\n }\n\n\n // 添加进去 files\n let newFiles\n if (index === true || index === 0) {\n newFiles = addFiles.concat(this.files)\n } else if (index) {\n newFiles = addFiles.concat([])\n newFiles.splice(index, 0, addFiles)\n } else {\n newFiles = this.files.concat(addFiles)\n }\n\n this.files = newFiles\n\n // 定位\n for (let i = 0; i < addFiles.length; i++) {\n let file = addFiles[i]\n this.maps[file.id] = file\n }\n\n // 事件\n this.emitInput()\n for (let i = 0; i < addFiles.length; i++) {\n this.emitFile(addFiles[i], undefined)\n }\n\n return isArray ? addFiles : addFiles[0]\n },\n\n\n\n // 添加表单文件\n addInputFile(el) {\n let files = []\n if (el.files) {\n for (let i = 0; i < el.files.length; i++) {\n let file = el.files[i]\n files.push({\n size: file.size,\n name: file.webkitRelativePath || file.relativePath || file.name,\n type: file.type,\n file,\n el\n })\n }\n } else {\n files.push({\n name: el.value.replace(/^.*?([^\\/\\\\\\r\\n]+)$/, '$1'),\n el,\n })\n }\n return this.add(files)\n },\n\n\n // 添加 DataTransfer\n addDataTransfer(dataTransfer) {\n let files = []\n if (dataTransfer.items && dataTransfer.items.length) {\n let items = []\n for (let i = 0; i < dataTransfer.items.length; i++) {\n let item = dataTransfer.items[i]\n if (item.getAsEntry) {\n item = item.getAsEntry() || item.getAsFile()\n } else if (item.webkitGetAsEntry) {\n item = item.webkitGetAsEntry() || item.getAsFile()\n } else {\n item = item.getAsFile()\n }\n if (item) {\n items.push(item)\n }\n }\n\n return new Promise((resolve, reject) => {\n let forEach = (i) => {\n let item = items[i]\n // 结束 文件数量大于 最大数量\n if (!item || (this.maximum > 0 && files.length >= this.maximum)) {\n return resolve(this.add(files))\n }\n this.getEntry(item).then(function (results) {\n files.push(...results)\n forEach(i + 1)\n })\n }\n forEach(0)\n })\n }\n\n if (dataTransfer.files.length) {\n for (let i = 0; i < dataTransfer.files.length; i++) {\n files.push(dataTransfer.files[i])\n if (this.maximum > 0 && files.length >= this.maximum) {\n break\n }\n }\n return Promise.resolve(this.add(files))\n }\n\n return Promise.resolve([])\n },\n\n\n // 获得 entry\n getEntry(entry, path = '') {\n return new Promise((resolve, reject) => {\n if (entry.isFile) {\n entry.file(function (file) {\n resolve([\n {\n size: file.size,\n name: path + file.name,\n type: file.type,\n file,\n }\n ])\n })\n } else if (entry.isDirectory && this.dropDirectory) {\n let files = []\n let dirReader = entry.createReader()\n let readEntries = () => {\n dirReader.readEntries((entries) => {\n let forEach = (i) => {\n if ((!entries[i] && i === 0) || (this.maximum > 0 && files.length >= this.maximum)) {\n return resolve(files)\n }\n if (!entries[i]) {\n return readEntries()\n }\n this.getEntry(entries[i], path + entry.name + '/').then((results) => {\n files.push(...results)\n forEach(i + 1)\n })\n }\n forEach(0)\n })\n }\n readEntries()\n } else {\n resolve([])\n }\n })\n },\n\n\n replace(id1, id2) {\n let file1 = this.get(id1)\n let file2 = this.get(id2)\n if (!file1 || !file2 || file1 === file2) {\n return false\n }\n let files = this.files.concat([])\n let index1 = files.indexOf(file1)\n let index2 = files.indexOf(file2)\n if (index1 === -1 || index2 === -1) {\n return false\n }\n files[index1] = file2\n files[index2] = file1\n this.files = files\n this.emitInput()\n return true\n },\n\n // 移除\n remove(id) {\n let file = this.get(id)\n if (file) {\n if (this.emitFilter(undefined, file)) {\n return false\n }\n let files = this.files.concat([])\n let index = files.indexOf(file)\n if (index === -1) {\n console.error('remove', file)\n return false\n }\n files.splice(index, 1)\n this.files = files\n\n // 定位\n delete this.maps[file.id]\n\n // 事件\n this.emitInput()\n this.emitFile(undefined, file)\n }\n return file\n },\n\n // 更新\n update(id, data) {\n let file = this.get(id)\n if (file) {\n let newFile = {\n ...file,\n ...data\n }\n // 停用必须加上错误\n if (file.fileObject && file.active && !newFile.active && !newFile.error && !newFile.success) {\n newFile.error = 'abort'\n }\n\n if (this.emitFilter(newFile, file)) {\n return false\n }\n\n let files = this.files.concat([])\n let index = files.indexOf(file)\n if (index === -1) {\n console.error('update', file)\n return false\n }\n files.splice(index, 1, newFile)\n this.files = files\n\n // 删除 旧定位 写入 新定位 (已便支持修改id)\n delete this.maps[file.id]\n this.maps[newFile.id] = newFile\n\n // 事件\n this.emitInput()\n this.emitFile(newFile, file)\n return newFile\n }\n return false\n },\n\n\n\n // 预处理 事件 过滤器\n emitFilter(newFile, oldFile) {\n let isPrevent = false\n this.$emit('input-filter', newFile, oldFile, function () {\n isPrevent = true\n return isPrevent\n })\n return isPrevent\n },\n\n // 处理后 事件 分发\n emitFile(newFile, oldFile) {\n this.$emit('input-file', newFile, oldFile)\n if (newFile && newFile.fileObject && newFile.active && (!oldFile || !oldFile.active)) {\n this.uploading++\n // 激活\n this.$nextTick(function () {\n setTimeout(() => {\n this.upload(newFile).then(() => {\n // eslint-disable-next-line\n newFile = this.get(newFile)\n if (newFile && newFile.fileObject) {\n this.update(newFile, {\n active: false,\n success: !newFile.error\n })\n }\n }).catch((e) => {\n this.update(newFile, {\n active: false,\n success: false,\n error: e.code || e.error || e.message || e\n })\n })\n }, parseInt(Math.random() * 50 + 50, 10))\n })\n } else if ((!newFile || !newFile.fileObject || !newFile.active) && oldFile && oldFile.fileObject && oldFile.active) {\n // 停止\n this.uploading--\n }\n\n // 自动延续激活\n if (this.active && (Boolean(newFile) !== Boolean(oldFile) || newFile.active !== oldFile.active)) {\n this.watchActive(true)\n }\n },\n\n emitInput() {\n this.$emit('input', this.files)\n },\n\n\n // 上传\n upload(id) {\n let file = this.get(id)\n\n // 被删除\n if (!file) {\n return Promise.reject('not_exists')\n }\n\n // 不是文件对象\n if (!file.fileObject) {\n return Promise.reject('file_object')\n }\n\n // 有错误直接响应\n if (file.error) {\n return Promise.reject(file.error)\n }\n\n // 已完成直接响应\n if (file.success) {\n return Promise.resolve(file)\n }\n\n // 后缀\n let extensions = this.extensions\n if (extensions && (extensions.length || typeof extensions.length === 'undefined')) {\n if (typeof extensions !== 'object' || !(extensions instanceof RegExp)) {\n if (typeof extensions === 'string') {\n extensions = extensions.split(',').map(value => value.trim()).filter(value => value)\n }\n extensions = new RegExp('\\\\.(' + extensions.join('|').replace(/\\./g, '\\\\.') + ')$', 'i')\n }\n if (file.name.search(extensions) === -1) {\n return Promise.reject('extension')\n }\n }\n\n // 大小\n if (this.size > 0 && file.size >= 0 && file.size > this.size) {\n return Promise.reject('size')\n }\n\n if (this.customAction) {\n return this.customAction(file, this)\n }\n\n if (this.features.html5) {\n if (this.shouldUseChunkUpload(file)) {\n return this.uploadChunk(file)\n }\n if (file.putAction) {\n return this.uploadPut(file)\n }\n if (file.postAction) {\n return this.uploadHtml5(file)\n }\n }\n if (file.postAction) {\n return this.uploadHtml4(file)\n }\n return Promise.reject('No action configured')\n },\n\n /**\n * Whether this file should be uploaded using chunk upload or not\n *\n * @param Object file\n */\n shouldUseChunkUpload (file) {\n return this.chunkEnabled &&\n !!this.chunkOptions.handler &&\n file.size > this.chunkOptions.minSize\n },\n\n /**\n * Upload a file using Chunk method\n *\n * @param File file\n */\n uploadChunk (file) {\n const HandlerClass = this.chunkOptions.handler\n file.chunk = new HandlerClass(file, this.chunkOptions)\n\n return file.chunk.upload()\n },\n\n uploadPut(file) {\n let querys = []\n let value\n for (let key in file.data) {\n value = file.data[key]\n if (value !== null && value !== undefined) {\n querys.push(encodeURIComponent(key) + '=' + encodeURIComponent(value))\n }\n }\n let queryString = querys.length ? (file.putAction.indexOf('?') === -1 ? '?' : '&') + querys.join('&') : ''\n let xhr = new XMLHttpRequest()\n xhr.open('PUT', file.putAction + queryString)\n return this.uploadXhr(xhr, file, file.file)\n },\n\n uploadHtml5(file) {\n let form = new window.FormData()\n let value\n for (let key in file.data) {\n value = file.data[key]\n if (value && typeof value === 'object' && typeof value.toString !== 'function') {\n if (value instanceof File) {\n form.append(key, value, value.name)\n } else {\n form.append(key, JSON.stringify(value))\n }\n } else if (value !== null && value !== undefined) {\n form.append(key, value)\n }\n }\n form.append(this.name, file.file, file.file.filename || file.name)\n let xhr = new XMLHttpRequest()\n xhr.open('POST', file.postAction)\n return this.uploadXhr(xhr, file, form)\n },\n\n uploadXhr(xhr, _file, body) {\n let file = _file\n let speedTime = 0\n let speedLoaded = 0\n\n // 进度条\n xhr.upload.onprogress = (e) => {\n // 还未开始上传 已删除 未激活\n file = this.get(file)\n if (!e.lengthComputable || !file || !file.fileObject || !file.active) {\n return\n }\n\n // 进度 速度 每秒更新一次\n let speedTime2 = Math.round(Date.now() / 1000)\n if (speedTime2 === speedTime) {\n return\n }\n speedTime = speedTime2\n\n file = this.update(file, {\n progress: (e.loaded / e.total * 100).toFixed(2),\n speed: e.loaded - speedLoaded,\n })\n speedLoaded = e.loaded\n }\n\n // 检查激活状态\n let interval = setInterval(() => {\n file = this.get(file)\n if (file && file.fileObject && !file.success && !file.error && file.active) {\n return\n }\n\n if (interval) {\n clearInterval(interval)\n interval = false\n }\n\n try {\n xhr.abort()\n xhr.timeout = 1\n } catch (e) {\n }\n }, 100)\n\n return new Promise((resolve, reject) => {\n let complete\n let fn = (e) => {\n // 已经处理过了\n if (complete) {\n return\n }\n complete = true\n if (interval) {\n clearInterval(interval)\n interval = false\n }\n\n file = this.get(file)\n\n // 不存在直接响应\n if (!file) {\n return reject('not_exists')\n }\n\n // 不是文件对象\n if (!file.fileObject) {\n return reject('file_object')\n }\n\n // 有错误自动响应\n if (file.error) {\n return reject(file.error)\n }\n\n // 未激活\n if (!file.active) {\n return reject('abort')\n }\n\n\n // 已完成 直接相应\n if (file.success) {\n return resolve(file)\n }\n\n let data = {}\n\n switch (e.type) {\n case 'timeout':\n case 'abort':\n data.error = e.type\n break\n case 'error':\n if (!xhr.status) {\n data.error = 'network'\n } else if (xhr.status >= 500) {\n data.error = 'server'\n } else if (xhr.status >= 400) {\n data.error = 'denied'\n }\n break\n default:\n if (xhr.status >= 500) {\n data.error = 'server'\n } else if (xhr.status >= 400) {\n data.error = 'denied'\n } else {\n data.progress = '100.00'\n }\n }\n\n if (xhr.responseText) {\n let contentType = xhr.getResponseHeader('Content-Type')\n if (contentType && contentType.indexOf('/json') !== -1) {\n data.response = JSON.parse(xhr.responseText)\n } else {\n data.response = xhr.responseText\n }\n }\n\n // 更新\n file = this.update(file, data)\n\n // 相应错误\n if (file.error) {\n return reject(file.error)\n }\n\n // 响应\n return resolve(file)\n }\n\n // 事件\n xhr.onload = fn\n xhr.onerror = fn\n xhr.onabort = fn\n xhr.ontimeout = fn\n\n // 超时\n if (file.timeout) {\n xhr.timeout = file.timeout\n }\n\n // headers\n for (let key in file.headers) {\n xhr.setRequestHeader(key, file.headers[key])\n }\n\n // 更新 xhr\n file = this.update(file, { xhr })\n\n // 开始上传\n xhr.send(body)\n })\n },\n\n\n\n\n uploadHtml4(_file) {\n let file = _file\n let onKeydown = function (e) {\n if (e.keyCode === 27) {\n e.preventDefault()\n }\n }\n\n let iframe = document.createElement('iframe')\n iframe.id = 'upload-iframe-' + file.id\n iframe.name = 'upload-iframe-' + file.id\n iframe.src = 'about:blank'\n iframe.setAttribute('style', 'width:1px;height:1px;top:-999em;position:absolute; margin-top:-999em;')\n\n\n let form = document.createElement('form')\n\n form.action = file.postAction\n\n form.name = 'upload-form-' + file.id\n\n\n form.setAttribute('method', 'POST')\n form.setAttribute('target', 'upload-iframe-' + file.id)\n form.setAttribute('enctype', 'multipart/form-data')\n\n let value\n let input\n for (let key in file.data) {\n value = file.data[key]\n if (value && typeof value === 'object' && typeof value.toString !== 'function') {\n value = JSON.stringify(value)\n }\n if (value !== null && value !== undefined) {\n input = document.createElement('input')\n input.type = 'hidden'\n input.name = key\n input.value = value\n form.appendChild(input)\n }\n }\n form.appendChild(file.el)\n\n document.body.appendChild(iframe).appendChild(form)\n\n\n\n\n let getResponseData = function () {\n let doc\n try {\n if (iframe.contentWindow) {\n doc = iframe.contentWindow.document\n }\n } catch (err) {\n }\n if (!doc) {\n try {\n doc = iframe.contentDocument ? iframe.contentDocument : iframe.document\n } catch (err) {\n doc = iframe.document\n }\n }\n if (doc && doc.body) {\n return doc.body.innerHTML\n }\n return null\n }\n\n\n return new Promise((resolve, reject) => {\n setTimeout(() => {\n file = this.update(file, { iframe })\n\n // 不存在\n if (!file) {\n return reject('not_exists')\n }\n\n // 定时检查\n let interval = setInterval(() => {\n file = this.get(file)\n if (file && file.fileObject && !file.success && !file.error && file.active) {\n return\n }\n\n if (interval) {\n clearInterval(interval)\n interval = false\n }\n\n iframe.onabort({ type: file ? 'abort' : 'not_exists' })\n }, 100)\n\n\n let complete\n let fn = (e) => {\n // 已经处理过了\n if (complete) {\n return\n }\n complete = true\n\n\n if (interval) {\n clearInterval(interval)\n interval = false\n }\n\n // 关闭 esc 事件\n document.body.removeEventListener('keydown', onKeydown)\n\n file = this.get(file)\n\n // 不存在直接响应\n if (!file) {\n return reject('not_exists')\n }\n\n // 不是文件对象\n if (!file.fileObject) {\n return reject('file_object')\n }\n\n // 有错误自动响应\n if (file.error) {\n return reject(file.error)\n }\n\n // 未激活\n if (!file.active) {\n return reject('abort')\n }\n\n // 已完成 直接相应\n if (file.success) {\n return resolve(file)\n }\n\n let response = getResponseData()\n let data = {}\n switch (e.type) {\n case 'abort':\n data.error = 'abort'\n break\n case 'error':\n if (file.error) {\n data.error = file.error\n } else if (response === null) {\n data.error = 'network'\n } else {\n data.error = 'denied'\n }\n break\n default:\n if (file.error) {\n data.error = file.error\n } else if (data === null) {\n data.error = 'network'\n } else {\n data.progress = '100.00'\n }\n }\n\n if (response !== null) {\n if (response && response.substr(0, 1) === '{' && response.substr(response.length - 1, 1) === '}') {\n try {\n response = JSON.parse(response)\n } catch (err) {\n }\n }\n data.response = response\n }\n\n // 更新\n file = this.update(file, data)\n\n if (file.error) {\n return reject(file.error)\n }\n\n // 响应\n return resolve(file)\n }\n\n\n // 添加事件\n iframe.onload = fn\n iframe.onerror = fn\n iframe.onabort = fn\n\n\n // 禁止 esc 键\n document.body.addEventListener('keydown', onKeydown)\n\n // 提交\n form.submit()\n }, 50)\n }).then(function (res) {\n iframe.parentNode && iframe.parentNode.removeChild(iframe)\n return res\n }).catch(function (res) {\n iframe.parentNode && iframe.parentNode.removeChild(iframe)\n return res\n })\n },\n\n\n\n watchActive(active) {\n let file\n let index = 0\n while ((file = this.files[index])) {\n index++\n if (!file.fileObject) {\n // 不是文件对象\n } else if (active && !this.destroy) {\n if (this.uploading >= this.thread || (this.uploading && !this.features.html5)) {\n break\n }\n if (!file.active && !file.error && !file.success) {\n this.update(file, { active: true })\n }\n } else {\n if (file.active) {\n this.update(file, { active: false })\n }\n }\n }\n if (this.uploading === 0) {\n this.active = false\n }\n },\n\n\n watchDrop(_el) {\n let el = _el\n if (!this.features.drop) {\n return\n }\n\n // 移除挂载\n if (this.dropElement) {\n try {\n document.removeEventListener('dragenter', this.onDragenter, false)\n document.removeEventListener('dragleave', this.onDragleave, false)\n document.removeEventListener('drop', this.onDocumentDrop, false)\n this.dropElement.removeEventListener('dragover', this.onDragover, false)\n this.dropElement.removeEventListener('drop', this.onDrop, false)\n } catch (e) {\n }\n }\n\n if (!el) {\n el = false\n } else if (typeof el === 'string') {\n el = document.querySelector(el) || this.$root.$el.querySelector(el)\n } else if (el === true) {\n el = this.$parent.$el\n }\n\n this.dropElement = el\n\n if (this.dropElement) {\n document.addEventListener('dragenter', this.onDragenter, false)\n document.addEventListener('dragleave', this.onDragleave, false)\n document.addEventListener('drop', this.onDocumentDrop, false)\n this.dropElement.addEventListener('dragover', this.onDragover, false)\n this.dropElement.addEventListener('drop', this.onDrop, false)\n }\n },\n\n\n onDragenter(e) {\n e.preventDefault()\n if (!this.dropActive) {\n this.dropActive = true\n }\n },\n\n onDragleave(e) {\n e.preventDefault()\n if (e.target.nodeName === 'HTML' || e.target === e.explicitOriginalTarget || (e.screenX === 0 && e.screenY === 0 && !e.fromElement && e.offsetX <= 0)) {\n this.dropActive = false\n }\n },\n\n onDragover(e) {\n e.preventDefault()\n },\n\n onDocumentDrop() {\n this.dropActive = false\n },\n\n onDrop(e) {\n e.preventDefault()\n this.addDataTransfer(e.dataTransfer)\n },\n }\n}\n"],"names":["createRequest","options","xhr","XMLHttpRequest","open","method","url","responseType","headers","keys","forEach","setRequestHeader","key","body","Promise","resolve","reject","onload","status","response","JSON","parse","err","onerror","send","stringify","ChunkUploadHandler","file","chunks","start","end","this","chunkSize","fileSize","push","slice","maxRetries","progress","active","stopChunks","chunksUploading","abort","startChunking","promise","Object","assign","action","startBody","fileType","then","res","_this2","sessionId","data","session_id","end_offset","createChunks","catch","i","maxActiveChunks","uploadNextChunk","hasChunksToUpload","uploadChunk","chunksToUpload","length","finish","chunk","updateFileProgress","upload","addEventListener","evt","lengthComputable","Math","round","loaded","total","FormData","name","append","uploadBody","startOffset","blob","uploaded","retries","_this3","finishBody","_this4","parseInt","maxActive","type","size","completedProgress","chunksUploaded","uploadingProgress","reduce","_this5","min","filter","e","$destroy","$parent","addInputFile","target","constructor","$el","CHUNK_DEFAULT_OPTIONS","ChunkUploadDefaultHandler","String","Boolean","Number","multiple","Function","Array","value","input","document","createElement","window","files","webkitdirectory","directory","features","html5","ondrop","drop","maps","$nextTick","$forceUpdate","watchDrop","destroy","fileObject","error","success","undefined","watchActive","oldMaps","id","newFile","oldFile","emitFile","emitInput","_files","index","addIndex","isArray","addFiles","Blob","webkitRelativePath","relativePath","Element","el","putAction","postAction","timeout","random","toString","substr","emitFilter","maximum","clear","newFiles","concat","splice","replace","add","dataTransfer","items","item","getAsEntry","getAsFile","webkitGetAsEntry","_this","getEntry","results","entry","path","isFile","isDirectory","dropDirectory","dirReader","createReader","readEntries","entries","id1","id2","file1","get","file2","index1","indexOf","index2","isPrevent","$emit","uploading","update","code","message","extensions","RegExp","split","map","trim","join","search","customAction","shouldUseChunkUpload","uploadPut","uploadHtml5","uploadHtml4","chunkEnabled","chunkOptions","handler","minSize","HandlerClass","querys","encodeURIComponent","queryString","uploadXhr","form","File","filename","_file","speedTime","speedLoaded","onprogress","speedTime2","Date","now","toFixed","interval","setInterval","complete","fn","responseText","contentType","getResponseHeader","onabort","ontimeout","onKeydown","keyCode","preventDefault","iframe","src","setAttribute","appendChild","removeEventListener","doc","contentWindow","contentDocument","innerHTML","getResponseData","submit","parentNode","removeChild","thread","_el","dropElement","onDragenter","onDragleave","onDocumentDrop","onDragover","onDrop","querySelector","$root","dropActive","nodeName","explicitOriginalTarget","screenX","screenY","fromElement","offsetX","addDataTransfer"],"mappings":"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"} \ No newline at end of file diff --git a/dist/vue-upload-component.part.css b/dist/vue-upload-component.part.css index f869170..4bec565 100644 --- a/dist/vue-upload-component.part.css +++ b/dist/vue-upload-component.part.css @@ -1,34 +1,7 @@ - - - - - - -.file-uploads { - overflow: hidden; - position: relative; - text-align: center; - display: inline-block; +.file-uploads{overflow:hidden;position:relative;text-align:center;display:inline-block } -.file-uploads.file-uploads-html4 input[type="file"] { - opacity: 0; - font-size: 20em; - z-index: 1; - top: 0; - left: 0; - right: 0; - bottom: 0; - position: absolute; - width: 100%; - height: 100%; +.file-uploads.file-uploads-html4 input[type=file]{opacity:0;font-size:20em;z-index:1;top:0;left:0;right:0;bottom:0;position:absolute;width:100%;height:100% } -.file-uploads.file-uploads-html5 input[type="file"] { - overflow: hidden; - position: fixed; - width: 1px; - height: 1px; - z-index: -1; - opacity: 0; -} - +.file-uploads.file-uploads-html5 input[type=file]{overflow:hidden;position:fixed;width:1px;height:1px;z-index:-1;opacity:0 +} \ No newline at end of file diff --git a/dist/vue-upload-component.part.js b/dist/vue-upload-component.part.js index 89a302b..e893775 100644 --- a/dist/vue-upload-component.part.js +++ b/dist/vue-upload-component.part.js @@ -1,1619 +1,1530 @@ /*! * Name: vue-upload-component - * Version: 2.8.6 + * Version: 2.8.7 * Author: LianYue */ (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.VueUploadComponent = factory()); + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global.VueUploadComponent = factory()); }(this, (function () { 'use strict'; -/** - * Creates a XHR request - * - * @param {Object} options - */ -var createRequest = function createRequest(options) { - var xhr = new XMLHttpRequest(); - xhr.open(options.method || 'GET', options.url); - xhr.responseType = 'json'; - if (options.headers) { - Object.keys(options.headers).forEach(function (key) { - xhr.setRequestHeader(key, options.headers[key]); - }); - } + /** + * Creates a XHR request + * + * @param {Object} options + */ + var createRequest = function createRequest(options) { + var xhr = new XMLHttpRequest(); + xhr.open(options.method || 'GET', options.url); + xhr.responseType = 'json'; + if (options.headers) { + Object.keys(options.headers).forEach(function (key) { + xhr.setRequestHeader(key, options.headers[key]); + }); + } - return xhr; -}; + return xhr; + }; -/** - * Sends a XHR request with certain body - * - * @param {XMLHttpRequest} xhr - * @param {Object} body - */ -var sendRequest = function sendRequest(xhr, body) { - return new Promise(function (resolve, reject) { - xhr.onload = function () { - if (xhr.status >= 200 && xhr.status < 300) { - var response; - try { - response = JSON.parse(xhr.response); - } catch (err) { - response = xhr.response; + /** + * Sends a XHR request with certain body + * + * @param {XMLHttpRequest} xhr + * @param {Object} body + */ + var sendRequest = function sendRequest(xhr, body) { + return new Promise(function (resolve, reject) { + xhr.onload = function () { + if (xhr.status >= 200 && xhr.status < 300) { + var response; + try { + response = JSON.parse(xhr.response); + } catch (err) { + response = xhr.response; + } + resolve(response); + } else { + reject(xhr.response); } - resolve(response); - } else { - reject(xhr.response); - } - }; - xhr.onerror = function () { - return reject(xhr.response); - }; - xhr.send(JSON.stringify(body)); - }); -}; + }; + xhr.onerror = function () { + return reject(xhr.response); + }; + xhr.send(JSON.stringify(body)); + }); + }; -/** - * Sends a XHR request with certain form data - * - * @param {XMLHttpRequest} xhr - * @param {Object} data - */ -var sendFormRequest = function sendFormRequest(xhr, data) { - var body = new FormData(); - for (var name in data) { - body.append(name, data[name]); - } + /** + * Sends a XHR request with certain form data + * + * @param {XMLHttpRequest} xhr + * @param {Object} data + */ + var sendFormRequest = function sendFormRequest(xhr, data) { + var body = new FormData(); + for (var name in data) { + body.append(name, data[name]); + } - return new Promise(function (resolve, reject) { - xhr.onload = function () { - if (xhr.status >= 200 && xhr.status < 300) { - var response; - try { - response = JSON.parse(xhr.response); - } catch (err) { - response = xhr.response; + return new Promise(function (resolve, reject) { + xhr.onload = function () { + if (xhr.status >= 200 && xhr.status < 300) { + var response; + try { + response = JSON.parse(xhr.response); + } catch (err) { + response = xhr.response; + } + resolve(response); + } else { + reject(xhr.response); } - resolve(response); - } else { - reject(xhr.response); - } - }; - xhr.onerror = function () { - return reject(xhr.response); - }; - xhr.send(body); - }); -}; - -/** - * Creates and sends XHR request - * - * @param {Object} options - * - * @returns Promise - */ -var request = function (options) { - var xhr = createRequest(options); - - return sendRequest(xhr, options.body); -}; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + }; + xhr.onerror = function () { + return reject(xhr.response); + }; + xhr.send(body); + }); + }; -var ChunkUploadHandler = function () { /** - * Constructor + * Creates and sends XHR request * - * @param {File} file * @param {Object} options + * + * @returns Promise */ - function ChunkUploadHandler(file, options) { - _classCallCheck(this, ChunkUploadHandler); + function request (options) { + var xhr = createRequest(options); - this.file = file; - this.options = options; + return sendRequest(xhr, options.body); } - /** - * Gets the max retries from options - */ - - - _createClass(ChunkUploadHandler, [{ - key: 'createChunks', + var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + var ChunkUploadHandler = function () { /** - * Creates all the chunks in the initial state - */ - value: function createChunks() { - this.chunks = []; - - var start = 0; - var end = this.chunkSize; - while (start < this.fileSize) { - this.chunks.push({ - blob: this.file.file.slice(start, end), - startOffset: start, - active: false, - retries: this.maxRetries - }); - start = end; - end = start + this.chunkSize; - } - } - - /** - * Updates the progress of the file with the handler's progress + * Constructor + * + * @param {File} file + * @param {Object} options */ + function ChunkUploadHandler(file, options) { + _classCallCheck(this, ChunkUploadHandler); - }, { - key: 'updateFileProgress', - value: function updateFileProgress() { - this.file.progress = this.progress; + this.file = file; + this.options = options; } /** - * Paues the upload process - * - Stops all active requests - * - Sets the file not active + * Gets the max retries from options */ - }, { - key: 'pause', - value: function pause() { - this.file.active = false; - this.stopChunks(); - } - /** - * Stops all the current chunks - */ + _createClass(ChunkUploadHandler, [{ + key: 'createChunks', - }, { - key: 'stopChunks', - value: function stopChunks() { - this.chunksUploading.forEach(function (chunk) { - chunk.xhr.abort(); - chunk.active = false; - }); - } - /** - * Resumes the file upload - * - Sets the file active - * - Starts the following chunks - */ + /** + * Creates all the chunks in the initial state + */ + value: function createChunks() { + this.chunks = []; - }, { - key: 'resume', - value: function resume() { - this.file.active = true; - this.startChunking(); - } + var start = 0; + var end = this.chunkSize; + while (start < this.fileSize) { + this.chunks.push({ + blob: this.file.file.slice(start, end), + startOffset: start, + active: false, + retries: this.maxRetries + }); + start = end; + end = start + this.chunkSize; + } + } - /** - * Starts the file upload - * - * @returns Promise - * - resolve The file was uploaded - * - reject The file upload failed - */ + /** + * Updates the progress of the file with the handler's progress + */ - }, { - key: 'upload', - value: function upload() { - var _this = this; + }, { + key: 'updateFileProgress', + value: function updateFileProgress() { + this.file.progress = this.progress; + } - this.promise = new Promise(function (resolve, reject) { - _this.resolve = resolve; - _this.reject = reject; - }); - this.start(); + /** + * Paues the upload process + * - Stops all active requests + * - Sets the file not active + */ + + }, { + key: 'pause', + value: function pause() { + this.file.active = false; + this.stopChunks(); + } - return this.promise; - } + /** + * Stops all the current chunks + */ - /** - * Start phase - * Sends a request to the backend to initialise the chunks - */ + }, { + key: 'stopChunks', + value: function stopChunks() { + this.chunksUploading.forEach(function (chunk) { + chunk.xhr.abort(); + chunk.active = false; + }); + } - }, { - key: 'start', - value: function start() { - var _this2 = this; - - request({ - method: 'POST', - headers: Object.assign({}, this.headers, { - 'Content-Type': 'application/json' - }), - url: this.action, - body: Object.assign(this.startBody, { - phase: 'start', - mime_type: this.fileType, - size: this.fileSize - }) - }).then(function (res) { - if (res.status !== 'success') { - _this2.file.response = res; - return _this2.reject('server'); - } + /** + * Resumes the file upload + * - Sets the file active + * - Starts the following chunks + */ + + }, { + key: 'resume', + value: function resume() { + this.file.active = true; + this.startChunking(); + } - _this2.sessionId = res.data.session_id; - _this2.chunkSize = res.data.end_offset; + /** + * Starts the file upload + * + * @returns Promise + * - resolve The file was uploaded + * - reject The file upload failed + */ + + }, { + key: 'upload', + value: function upload() { + var _this = this; + + this.promise = new Promise(function (resolve, reject) { + _this.resolve = resolve; + _this.reject = reject; + }); + this.start(); - _this2.createChunks(); - _this2.startChunking(); - }).catch(function (res) { - _this2.file.response = res; - _this2.reject('server'); - }); - } + return this.promise; + } - /** - * Starts to upload chunks - */ + /** + * Start phase + * Sends a request to the backend to initialise the chunks + */ + + }, { + key: 'start', + value: function start() { + var _this2 = this; + + request({ + method: 'POST', + headers: Object.assign({}, this.headers, { + 'Content-Type': 'application/json' + }), + url: this.action, + body: Object.assign(this.startBody, { + phase: 'start', + mime_type: this.fileType, + size: this.fileSize + }) + }).then(function (res) { + if (res.status !== 'success') { + _this2.file.response = res; + return _this2.reject('server'); + } + + _this2.sessionId = res.data.session_id; + _this2.chunkSize = res.data.end_offset; - }, { - key: 'startChunking', - value: function startChunking() { - for (var i = 0; i < this.maxActiveChunks; i++) { - this.uploadNextChunk(); + _this2.createChunks(); + _this2.startChunking(); + }).catch(function (res) { + _this2.file.response = res; + _this2.reject('server'); + }); } - } - /** - * Uploads the next chunk - * - Won't do anything if the process is paused - * - Will start finish phase if there are no more chunks to upload - */ + /** + * Starts to upload chunks + */ - }, { - key: 'uploadNextChunk', - value: function uploadNextChunk() { - if (this.file.active) { - if (this.hasChunksToUpload) { - return this.uploadChunk(this.chunksToUpload[0]); + }, { + key: 'startChunking', + value: function startChunking() { + for (var i = 0; i < this.maxActiveChunks; i++) { + this.uploadNextChunk(); } + } - if (this.chunksUploading.length === 0) { - return this.finish(); + /** + * Uploads the next chunk + * - Won't do anything if the process is paused + * - Will start finish phase if there are no more chunks to upload + */ + + }, { + key: 'uploadNextChunk', + value: function uploadNextChunk() { + if (this.file.active) { + if (this.hasChunksToUpload) { + return this.uploadChunk(this.chunksToUpload[0]); + } + + if (this.chunksUploading.length === 0) { + return this.finish(); + } } } - } - /** - * Uploads a chunk - * - Sends the chunk to the backend - * - Sets the chunk as uploaded if everything went well - * - Decreases the number of retries if anything went wrong - * - Fails if there are no more retries - * - * @param {Object} chunk - */ + /** + * Uploads a chunk + * - Sends the chunk to the backend + * - Sets the chunk as uploaded if everything went well + * - Decreases the number of retries if anything went wrong + * - Fails if there are no more retries + * + * @param {Object} chunk + */ + + }, { + key: 'uploadChunk', + value: function uploadChunk(chunk) { + var _this3 = this; + + chunk.progress = 0; + chunk.active = true; + this.updateFileProgress(); + chunk.xhr = createRequest({ + method: 'POST', + headers: this.headers, + url: this.action + }); - }, { - key: 'uploadChunk', - value: function uploadChunk(chunk) { - var _this3 = this; - - chunk.progress = 0; - chunk.active = true; - this.updateFileProgress(); - chunk.xhr = createRequest({ - method: 'POST', - headers: this.headers, - url: this.action - }); + chunk.xhr.upload.addEventListener('progress', function (evt) { + if (evt.lengthComputable) { + chunk.progress = Math.round(evt.loaded / evt.total * 100); + } + }, false); + + sendFormRequest(chunk.xhr, Object.assign(this.uploadBody, { + phase: 'upload', + session_id: this.sessionId, + start_offset: chunk.startOffset, + chunk: chunk.blob + })).then(function (res) { + chunk.active = false; + if (res.status === 'success') { + chunk.uploaded = true; + } else { + if (chunk.retries-- <= 0) { + _this3.stopChunks(); + return _this3.reject('upload'); + } + } - chunk.xhr.upload.addEventListener('progress', function (evt) { - if (evt.lengthComputable) { - chunk.progress = Math.round(evt.loaded / evt.total * 100); - } - }, false); - - sendFormRequest(chunk.xhr, Object.assign(this.uploadBody, { - phase: 'upload', - session_id: this.sessionId, - start_offset: chunk.startOffset, - chunk: chunk.blob - })).then(function (res) { - chunk.active = false; - if (res.status === 'success') { - chunk.uploaded = true; - } else { + _this3.uploadNextChunk(); + }).catch(function () { + chunk.active = false; if (chunk.retries-- <= 0) { _this3.stopChunks(); return _this3.reject('upload'); } - } - _this3.uploadNextChunk(); - }).catch(function () { - chunk.active = false; - if (chunk.retries-- <= 0) { - _this3.stopChunks(); - return _this3.reject('upload'); - } + _this3.uploadNextChunk(); + }); + } - _this3.uploadNextChunk(); - }); - } + /** + * Finish phase + * Sends a request to the backend to finish the process + */ + + }, { + key: 'finish', + value: function finish() { + var _this4 = this; + + this.updateFileProgress(); + + request({ + method: 'POST', + headers: Object.assign({}, this.headers, { + 'Content-Type': 'application/json' + }), + url: this.action, + body: Object.assign(this.finishBody, { + phase: 'finish', + session_id: this.sessionId + }) + }).then(function (res) { + _this4.file.response = res; + if (res.status !== 'success') { + return _this4.reject('server'); + } - /** - * Finish phase - * Sends a request to the backend to finish the process - */ + _this4.resolve(res); + }).catch(function (res) { + _this4.file.response = res; + _this4.reject('server'); + }); + } + }, { + key: 'maxRetries', + get: function get() { + return parseInt(this.options.maxRetries); + } - }, { - key: 'finish', - value: function finish() { - var _this4 = this; - - this.updateFileProgress(); - - request({ - method: 'POST', - headers: Object.assign({}, this.headers, { - 'Content-Type': 'application/json' - }), - url: this.action, - body: Object.assign(this.finishBody, { - phase: 'finish', - session_id: this.sessionId - }) - }).then(function (res) { - _this4.file.response = res; - if (res.status !== 'success') { - return _this4.reject('server'); - } + /** + * Gets the max number of active chunks being uploaded at once from options + */ - _this4.resolve(res); - }).catch(function (res) { - _this4.file.response = res; - _this4.reject('server'); - }); - } - }, { - key: 'maxRetries', - get: function get() { - return parseInt(this.options.maxRetries); - } + }, { + key: 'maxActiveChunks', + get: function get() { + return parseInt(this.options.maxActive); + } - /** - * Gets the max number of active chunks being uploaded at once from options - */ + /** + * Gets the file type + */ - }, { - key: 'maxActiveChunks', - get: function get() { - return parseInt(this.options.maxActive); - } + }, { + key: 'fileType', + get: function get() { + return this.file.type; + } - /** - * Gets the file type - */ + /** + * Gets the file size + */ - }, { - key: 'fileType', - get: function get() { - return this.file.type; - } + }, { + key: 'fileSize', + get: function get() { + return this.file.size; + } - /** - * Gets the file size - */ + /** + * Gets action (url) to upload the file + */ - }, { - key: 'fileSize', - get: function get() { - return this.file.size; - } + }, { + key: 'action', + get: function get() { + return this.options.action || null; + } - /** - * Gets action (url) to upload the file - */ + /** + * Gets the body to be merged when sending the request in start phase + */ - }, { - key: 'action', - get: function get() { - return this.options.action || null; - } + }, { + key: 'startBody', + get: function get() { + return this.options.startBody || {}; + } - /** - * Gets the body to be merged when sending the request in start phase - */ + /** + * Gets the body to be merged when sending the request in upload phase + */ - }, { - key: 'startBody', - get: function get() { - return this.options.startBody || {}; - } + }, { + key: 'uploadBody', + get: function get() { + return this.options.uploadBody || {}; + } - /** - * Gets the body to be merged when sending the request in upload phase - */ + /** + * Gets the body to be merged when sending the request in finish phase + */ - }, { - key: 'uploadBody', - get: function get() { - return this.options.uploadBody || {}; - } + }, { + key: 'finishBody', + get: function get() { + return this.options.finishBody || {}; + } - /** - * Gets the body to be merged when sending the request in finish phase - */ + /** + * Gets the headers of the requests from options + */ - }, { - key: 'finishBody', - get: function get() { - return this.options.finishBody || {}; - } + }, { + key: 'headers', + get: function get() { + return this.options.headers || {}; + } - /** - * Gets the headers of the requests from options - */ + /** + * Whether it's ready to upload files or not + */ - }, { - key: 'headers', - get: function get() { - return this.options.headers || {}; - } + }, { + key: 'readyToUpload', + get: function get() { + return !!this.chunks; + } - /** - * Whether it's ready to upload files or not - */ + /** + * Gets the progress of the chunk upload + * - Gets all the completed chunks + * - Gets the progress of all the chunks that are being uploaded + */ - }, { - key: 'readyToUpload', - get: function get() { - return !!this.chunks; - } + }, { + key: 'progress', + get: function get() { + var _this5 = this; - /** - * Gets the progress of the chunk upload - * - Gets all the completed chunks - * - Gets the progress of all the chunks that are being uploaded - */ + var completedProgress = this.chunksUploaded.length / this.chunks.length * 100; + var uploadingProgress = this.chunksUploading.reduce(function (progress, chunk) { + return progress + (chunk.progress | 0) / _this5.chunks.length; + }, 0); - }, { - key: 'progress', - get: function get() { - var _this5 = this; + return Math.min(completedProgress + uploadingProgress, 100); + } - var completedProgress = this.chunksUploaded.length / this.chunks.length * 100; - var uploadingProgress = this.chunksUploading.reduce(function (progress, chunk) { - return progress + (chunk.progress | 0) / _this5.chunks.length; - }, 0); + /** + * Gets all the chunks that are pending to be uploaded + */ - return Math.min(completedProgress + uploadingProgress, 100); - } + }, { + key: 'chunksToUpload', + get: function get() { + return this.chunks.filter(function (chunk) { + return !chunk.active && !chunk.uploaded; + }); + } - /** - * Gets all the chunks that are pending to be uploaded - */ + /** + * Whether there are chunks to upload or not + */ - }, { - key: 'chunksToUpload', - get: function get() { - return this.chunks.filter(function (chunk) { - return !chunk.active && !chunk.uploaded; - }); - } + }, { + key: 'hasChunksToUpload', + get: function get() { + return this.chunksToUpload.length > 0; + } - /** - * Whether there are chunks to upload or not - */ + /** + * Gets all the chunks that are uploading + */ - }, { - key: 'hasChunksToUpload', - get: function get() { - return this.chunksToUpload.length > 0; - } + }, { + key: 'chunksUploading', + get: function get() { + return this.chunks.filter(function (chunk) { + return !!chunk.xhr && !!chunk.active; + }); + } - /** - * Gets all the chunks that are uploading - */ + /** + * Gets all the chunks that have finished uploading + */ - }, { - key: 'chunksUploading', - get: function get() { - return this.chunks.filter(function (chunk) { - return !!chunk.xhr && !!chunk.active; - }); + }, { + key: 'chunksUploaded', + get: function get() { + return this.chunks.filter(function (chunk) { + return !!chunk.uploaded; + }); + } + }]); + + return ChunkUploadHandler; + }(); + + // + // + // + // + // + // + // + // + // + // + // + // + // + + var script = { + methods: { + change: function change(e) { + this.$destroy(); + this.$parent.addInputFile(e.target); + // eslint-disable-next-line + new this.constructor({ + parent: this.$parent, + el: this.$el + }); + } + } + }; + + var __vue_script__ = script; + + /* template */ + var __vue_render__ = function __vue_render__() { + var _vm = this;var _h = _vm.$createElement;var _c = _vm._self._c || _h;return _c('input', { attrs: { "type": "file", "name": _vm.$parent.name, "id": _vm.$parent.inputId || _vm.$parent.name, "accept": _vm.$parent.accept, "capture": _vm.$parent.capture, "webkitdirectory": _vm.$parent.directory && _vm.$parent.features.directory, "directory": _vm.$parent.directory && _vm.$parent.features.directory, "multiple": _vm.$parent.multiple && _vm.$parent.features.html5 }, on: { "change": _vm.change } }, []); + }; + var __vue_staticRenderFns__ = []; + + var __vue_template__ = typeof __vue_render__ !== 'undefined' ? { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ } : {}; + /* style */ + var __vue_inject_styles__ = undefined; + /* scoped */ + var __vue_scope_id__ = undefined; + /* module identifier */ + var __vue_module_identifier__ = "data-v-36701cce"; + /* functional template */ + var __vue_is_functional_template__ = false; + /* component normalizer */ + function __vue_normalize__(template, style, script$$1, scope, functional, moduleIdentifier, createInjector, createInjectorSSR) { + var component = script$$1 || {}; + + if (!component.render) { + component.render = template.render; + component.staticRenderFns = template.staticRenderFns; + component._compiled = true; + + if (functional) component.functional = true; } - /** - * Gets all the chunks that have finished uploading - */ + component._scopeId = scope; - }, { - key: 'chunksUploaded', - get: function get() { - return this.chunks.filter(function (chunk) { - return !!chunk.uploaded; - }); - } - }]); - - return ChunkUploadHandler; -}(); - -var InputFile = { render: function render() { - var _vm = this;var _h = _vm.$createElement;var _c = _vm._self._c || _h;return _c('input', { attrs: { "type": "file", "name": _vm.$parent.name, "id": _vm.$parent.inputId || _vm.$parent.name, "accept": _vm.$parent.accept, "capture": _vm.$parent.capture, "webkitdirectory": _vm.$parent.directory && _vm.$parent.features.directory, "directory": _vm.$parent.directory && _vm.$parent.features.directory, "multiple": _vm.$parent.multiple && _vm.$parent.features.html5 }, on: { "change": _vm.change } }); - }, staticRenderFns: [], - methods: { - change: function change(e) { - this.$destroy(); - this.$parent.addInputFile(e.target); - // eslint-disable-next-line - new this.constructor({ - parent: this.$parent, - el: this.$el - }); - } + return component; } -}; + /* style inject */ -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + /* style inject SSR */ + function __vue_create_injector_ssr__(context) { + if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') { + context = __VUE_SSR_CONTEXT__; + } -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + if (!context) return function () {}; -function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } + if (!context.hasOwnProperty('styles')) { + Object.defineProperty(context, 'styles', { + enumerable: true, + get: function get() { + return context._styles; + } + }); + context._renderStyles = renderStyles; + } -var CHUNK_DEFAULT_OPTIONS = { - headers: {}, - action: '', - minSize: 1048576, - maxActive: 3, - maxRetries: 5, + function renderStyles(styles) { + var css = ''; + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; - handler: ChunkUploadHandler -}; + try { + for (var _iterator = styles[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var _ref = _step.value; + var ids = _ref.ids, + media = _ref.media, + parts = _ref.parts; -var FileUpload = { render: function render() { - var _vm = this;var _h = _vm.$createElement;var _c = _vm._self._c || _h;return _c('label', { class: _vm.className }, [_vm._t("default"), _vm._v(" "), _c('input-file')], 2); - }, staticRenderFns: [], - components: { - InputFile: InputFile - }, - props: { - inputId: { - type: String - }, + css += ''; + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } - name: { - type: String, - default: 'file' - }, + return css; + } - accept: { - type: String - }, + return function addStyle(id, css) { + var group = css.media || 'default'; + var style = context._styles[group] || (context._styles[group] = { ids: [], parts: [] }); - capture: {}, + if (!style.ids.includes(id)) { + style.media = css.media; + style.ids.push(id); + var code = css.source; + style.parts.push(code); + } + }; + } - multiple: { - type: Boolean - }, + var InputFile = __vue_normalize__(__vue_template__, __vue_inject_styles__, typeof __vue_script__ === 'undefined' ? {} : __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, typeof __vue_create_injector__ !== 'undefined' ? __vue_create_injector__ : function () {}, typeof __vue_create_injector_ssr__ !== 'undefined' ? __vue_create_injector_ssr__ : function () {}); - maximum: { - type: Number, - default: function _default() { - return this.multiple ? 0 : 1; - } - }, + var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - addIndex: { - type: [Boolean, Number] - }, + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - directory: { - type: Boolean - }, + function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } - postAction: { - type: String - }, + var CHUNK_DEFAULT_OPTIONS = { + headers: {}, + action: '', + minSize: 1048576, + maxActive: 3, + maxRetries: 5, - putAction: { - type: String - }, + handler: ChunkUploadHandler + }; - customAction: { - type: Function + var script$1 = { + components: { + InputFile: InputFile }, + props: { + inputId: { + type: String + }, - headers: { - type: Object, - default: Object - }, + name: { + type: String, + default: 'file' + }, - data: { - type: Object, - default: Object - }, + accept: { + type: String + }, - timeout: { - type: Number, - default: 0 - }, + capture: {}, - drop: { - default: false - }, + multiple: { + type: Boolean + }, - dropDirectory: { - type: Boolean, - default: true - }, + maximum: { + type: Number, + default: function _default() { + return this.multiple ? 0 : 1; + } + }, - size: { - type: Number, - default: 0 - }, + addIndex: { + type: [Boolean, Number] + }, - extensions: { - default: Array - }, + directory: { + type: Boolean + }, - value: { - type: Array, - default: Array - }, + postAction: { + type: String + }, - thread: { - type: Number, - default: 1 - }, + putAction: { + type: String + }, - // Chunk upload enabled - chunkEnabled: { - type: Boolean, - default: false - }, + customAction: { + type: Function + }, - // Chunk upload properties - chunk: { - type: Object, - default: function _default() { - return CHUNK_DEFAULT_OPTIONS; - } - } - }, - - data: function data() { - return { - files: this.value, - features: { - html5: true, - directory: false, - drag: false + headers: { + type: Object, + default: Object }, - active: false, - dropActive: false, + data: { + type: Object, + default: Object + }, - uploading: 0, + timeout: { + type: Number, + default: 0 + }, - destroy: false - }; - }, + drop: { + default: false + }, + dropDirectory: { + type: Boolean, + default: true + }, - /** - * mounted - * @return {[type]} [description] - */ - mounted: function mounted() { - var input = document.createElement('input'); - input.type = 'file'; - input.multiple = true; - - // html5 特征 - if (window.FormData && input.files) { - // 上传目录特征 - if (typeof input.webkitdirectory === 'boolean' || typeof input.directory === 'boolean') { - this.features.directory = true; - } + size: { + type: Number, + default: 0 + }, - // 拖拽特征 - if (this.features.html5 && typeof input.ondrop !== 'undefined') { - this.features.drop = true; - } - } else { - this.features.html5 = false; - } + extensions: { + default: Array + }, - // files 定位缓存 - this.maps = {}; + value: { + type: Array, + default: Array + }, - this.$nextTick(function () { + thread: { + type: Number, + default: 1 + }, - // 更新下父级 - if (this.$parent) { - this.$parent.$forceUpdate(); - } + // Chunk upload enabled + chunkEnabled: { + type: Boolean, + default: false + }, - // 拖拽渲染 - this.watchDrop(this.drop); - }); - }, + // Chunk upload properties + chunk: { + type: Object, + default: function _default() { + return CHUNK_DEFAULT_OPTIONS; + } + } + }, + data: function data() { + return { + files: this.value, + features: { + html5: true, + directory: false, + drag: false + }, - /** - * beforeDestroy - * @return {[type]} [description] - */ - beforeDestroy: function beforeDestroy() { - // 已销毁 - this.destroy = true; + active: false, + dropActive: false, - // 设置成不激活 - this.active = false; - }, + uploading: 0, + destroy: false + }; + }, - computed: { - /** - * uploading 正在上传的线程 - * @return {[type]} [description] - */ /** - * uploaded 文件列表是否全部已上传 + * mounted * @return {[type]} [description] */ - uploaded: function uploaded() { - var file = void 0; - for (var i = 0; i < this.files.length; i++) { - file = this.files[i]; - if (file.fileObject && !file.error && !file.success) { - return false; + mounted: function mounted() { + var input = document.createElement('input'); + input.type = 'file'; + input.multiple = true; + + // html5 特征 + if (window.FormData && input.files) { + // 上传目录特征 + if (typeof input.webkitdirectory === 'boolean' || typeof input.directory === 'boolean') { + this.features.directory = true; } - } - return true; - }, - chunkOptions: function chunkOptions() { - return Object.assign(CHUNK_DEFAULT_OPTIONS, this.chunk); - }, - className: function className() { - return ['file-uploads', this.features.html5 ? 'file-uploads-html5' : 'file-uploads-html4', this.features.directory && this.directory ? 'file-uploads-directory' : undefined, this.features.drop && this.drop ? 'file-uploads-drop' : undefined]; - } - }, - watch: { - active: function active(_active) { - this.watchActive(_active); - }, - dropActive: function dropActive() { - if (this.$parent) { - this.$parent.$forceUpdate(); - } - }, - drop: function drop(value) { - this.watchDrop(value); - }, - value: function value(files) { - if (this.files === files) { - return; + // 拖拽特征 + if (this.features.html5 && typeof input.ondrop !== 'undefined') { + this.features.drop = true; + } + } else { + this.features.html5 = false; } - this.files = files; - var oldMaps = this.maps; - - // 重写 maps 缓存 + // files 定位缓存 this.maps = {}; - for (var i = 0; i < this.files.length; i++) { - var file = this.files[i]; - this.maps[file.id] = file; - } - // add, update - for (var key in this.maps) { - var newFile = this.maps[key]; - var oldFile = oldMaps[key]; - if (newFile !== oldFile) { - this.emitFile(newFile, oldFile); - } - } + this.$nextTick(function () { - // delete - for (var _key in oldMaps) { - if (!this.maps[_key]) { - this.emitFile(undefined, oldMaps[_key]); + // 更新下父级 + if (this.$parent) { + this.$parent.$forceUpdate(); } - } - } - }, - - methods: { - - // 清空 - clear: function clear() { - if (this.files.length) { - var files = this.files; - this.files = []; - // 定位 - this.maps = {}; - - // 事件 - this.emitInput(); - for (var i = 0; i < files.length; i++) { - this.emitFile(undefined, files[i]); - } - } - return true; + // 拖拽渲染 + this.watchDrop(this.drop); + }); }, - // 选择 - get: function get(id) { - if (!id) { - return false; - } - - if ((typeof id === 'undefined' ? 'undefined' : _typeof(id)) === 'object') { - return this.maps[id.id] || false; - } + /** + * beforeDestroy + * @return {[type]} [description] + */ + beforeDestroy: function beforeDestroy() { + // 已销毁 + this.destroy = true; - return this.maps[id] || false; + // 设置成不激活 + this.active = false; }, - // 添加 - add: function add(_files) { - var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.addIndex; - - var files = _files; - var isArray = files instanceof Array; - - // 不是数组整理成数组 - if (!isArray) { - files = [files]; + computed: { + /** + * uploading 正在上传的线程 + * @return {[type]} [description] + */ + + /** + * uploaded 文件列表是否全部已上传 + * @return {[type]} [description] + */ + uploaded: function uploaded() { + var file = void 0; + for (var i = 0; i < this.files.length; i++) { + file = this.files[i]; + if (file.fileObject && !file.error && !file.success) { + return false; + } + } + return true; + }, + chunkOptions: function chunkOptions() { + return Object.assign(CHUNK_DEFAULT_OPTIONS, this.chunk); + }, + className: function className() { + return ['file-uploads', this.features.html5 ? 'file-uploads-html5' : 'file-uploads-html4', this.features.directory && this.directory ? 'file-uploads-directory' : undefined, this.features.drop && this.drop ? 'file-uploads-drop' : undefined]; } + }, - // 遍历规范对象 - var addFiles = []; - for (var i = 0; i < files.length; i++) { - var file = files[i]; - if (this.features.html5 && file instanceof Blob) { - file = { - file: file, - size: file.size, - name: file.webkitRelativePath || file.relativePath || file.name || 'unknown', - type: file.type - }; + watch: { + active: function active(_active) { + this.watchActive(_active); + }, + dropActive: function dropActive() { + if (this.$parent) { + this.$parent.$forceUpdate(); } - var fileObject = false; - if (file.fileObject === false) { - // false - } else if (file.fileObject) { - fileObject = true; - } else if (typeof Element !== 'undefined' && file.el instanceof Element) { - fileObject = true; - } else if (typeof Blob !== 'undefined' && file.file instanceof Blob) { - fileObject = true; + }, + drop: function drop(value) { + this.watchDrop(value); + }, + value: function value(files) { + if (this.files === files) { + return; } - if (fileObject) { - file = _extends({ - fileObject: true, - size: -1, - name: 'Filename', - type: '', - active: false, - error: '', - success: false, - putAction: this.putAction, - postAction: this.postAction, - timeout: this.timeout - }, file, { - response: {}, - - progress: '0.00', // 只读 - speed: 0 // 只读 - // xhr: false, // 只读 - // iframe: false, // 只读 - }); + this.files = files; - file.data = _extends({}, this.data, file.data ? file.data : {}); + var oldMaps = this.maps; - file.headers = _extends({}, this.headers, file.headers ? file.headers : {}); + // 重写 maps 缓存 + this.maps = {}; + for (var i = 0; i < this.files.length; i++) { + var file = this.files[i]; + this.maps[file.id] = file; } - // 必须包含 id - if (!file.id) { - file.id = Math.random().toString(36).substr(2); + // add, update + for (var key in this.maps) { + var newFile = this.maps[key]; + var oldFile = oldMaps[key]; + if (newFile !== oldFile) { + this.emitFile(newFile, oldFile); + } } - if (this.emitFilter(file, undefined)) { - continue; + // delete + for (var _key in oldMaps) { + if (!this.maps[_key]) { + this.emitFile(undefined, oldMaps[_key]); + } } + } + }, - // 最大数量限制 - if (this.maximum > 1 && addFiles.length + this.files.length >= this.maximum) { - break; - } + methods: { - addFiles.push(file); + // 清空 + clear: function clear() { + if (this.files.length) { + var files = this.files; + this.files = []; - // 最大数量限制 - if (this.maximum === 1) { - break; - } - } + // 定位 + this.maps = {}; - // 没有文件 - if (!addFiles.length) { - return false; - } + // 事件 + this.emitInput(); + for (var i = 0; i < files.length; i++) { + this.emitFile(undefined, files[i]); + } + } + return true; + }, - // 如果是 1 清空 - if (this.maximum === 1) { - this.clear(); - } - // 添加进去 files - var newFiles = void 0; - if (index === true || index === 0) { - newFiles = addFiles.concat(this.files); - } else if (index) { - newFiles = addFiles.concat([]); - newFiles.splice(index, 0, addFiles); - } else { - newFiles = this.files.concat(addFiles); - } + // 选择 + get: function get(id) { + if (!id) { + return false; + } - this.files = newFiles; + if ((typeof id === 'undefined' ? 'undefined' : _typeof(id)) === 'object') { + return this.maps[id.id] || false; + } - // 定位 - for (var _i = 0; _i < addFiles.length; _i++) { - var _file2 = addFiles[_i]; - this.maps[_file2.id] = _file2; - } + return this.maps[id] || false; + }, - // 事件 - this.emitInput(); - for (var _i2 = 0; _i2 < addFiles.length; _i2++) { - this.emitFile(addFiles[_i2], undefined); - } - return isArray ? addFiles : addFiles[0]; - }, + // 添加 + add: function add(_files) { + var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.addIndex; + var files = _files; + var isArray = files instanceof Array; - // 添加表单文件 - addInputFile: function addInputFile(el) { - var files = []; - if (el.files) { - for (var i = 0; i < el.files.length; i++) { - var file = el.files[i]; - files.push({ - size: file.size, - name: file.webkitRelativePath || file.relativePath || file.name, - type: file.type, - file: file, - el: el - }); + // 不是数组整理成数组 + if (!isArray) { + files = [files]; } - } else { - files.push({ - name: el.value.replace(/^.*?([^\/\\\r\n]+)$/, '$1'), - el: el - }); - } - return this.add(files); - }, - - // 添加 DataTransfer - addDataTransfer: function addDataTransfer(dataTransfer) { - var _this = this; - - var files = []; - if (dataTransfer.items && dataTransfer.items.length) { - var items = []; - for (var i = 0; i < dataTransfer.items.length; i++) { - var item = dataTransfer.items[i]; - if (item.getAsEntry) { - item = item.getAsEntry() || item.getAsFile(); - } else if (item.webkitGetAsEntry) { - item = item.webkitGetAsEntry() || item.getAsFile(); - } else { - item = item.getAsFile(); + // 遍历规范对象 + var addFiles = []; + for (var i = 0; i < files.length; i++) { + var file = files[i]; + if (this.features.html5 && file instanceof Blob) { + file = { + file: file, + size: file.size, + name: file.webkitRelativePath || file.relativePath || file.name || 'unknown', + type: file.type + }; } - if (item) { - items.push(item); + var fileObject = false; + if (file.fileObject === false) ; else if (file.fileObject) { + fileObject = true; + } else if (typeof Element !== 'undefined' && file.el instanceof Element) { + fileObject = true; + } else if (typeof Blob !== 'undefined' && file.file instanceof Blob) { + fileObject = true; } - } - - return new Promise(function (resolve, reject) { - var forEach = function forEach(i) { - var item = items[i]; - // 结束 文件数量大于 最大数量 - if (!item || _this.maximum > 0 && files.length >= _this.maximum) { - return resolve(_this.add(files)); - } - _this.getEntry(item).then(function (results) { - files.push.apply(files, _toConsumableArray(results)); - forEach(i + 1); + if (fileObject) { + file = _extends({ + fileObject: true, + size: -1, + name: 'Filename', + type: '', + active: false, + error: '', + success: false, + putAction: this.putAction, + postAction: this.postAction, + timeout: this.timeout + }, file, { + response: {}, + + progress: '0.00', // 只读 + speed: 0 // 只读 + // xhr: false, // 只读 + // iframe: false, // 只读 }); - }; - forEach(0); - }); - } - if (dataTransfer.files.length) { - for (var _i3 = 0; _i3 < dataTransfer.files.length; _i3++) { - files.push(dataTransfer.files[_i3]); - if (this.maximum > 0 && files.length >= this.maximum) { - break; + file.data = _extends({}, this.data, file.data ? file.data : {}); + + file.headers = _extends({}, this.headers, file.headers ? file.headers : {}); } - } - return Promise.resolve(this.add(files)); - } - return Promise.resolve([]); - }, + // 必须包含 id + if (!file.id) { + file.id = Math.random().toString(36).substr(2); + } + if (this.emitFilter(file, undefined)) { + continue; + } - // 获得 entry - getEntry: function getEntry(entry) { - var _this2 = this; + // 最大数量限制 + if (this.maximum > 1 && addFiles.length + this.files.length >= this.maximum) { + break; + } - var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; + addFiles.push(file); - return new Promise(function (resolve, reject) { - if (entry.isFile) { - entry.file(function (file) { - resolve([{ - size: file.size, - name: path + file.name, - type: file.type, - file: file - }]); - }); - } else if (entry.isDirectory && _this2.dropDirectory) { - var files = []; - var dirReader = entry.createReader(); - var readEntries = function readEntries() { - dirReader.readEntries(function (entries) { - var forEach = function forEach(i) { - if (!entries[i] && i === 0 || _this2.maximum > 0 && files.length >= _this2.maximum) { - return resolve(files); - } - if (!entries[i]) { - return readEntries(); - } - _this2.getEntry(entries[i], path + entry.name + '/').then(function (results) { - files.push.apply(files, _toConsumableArray(results)); - forEach(i + 1); - }); - }; - forEach(0); - }); - }; - readEntries(); - } else { - resolve([]); + // 最大数量限制 + if (this.maximum === 1) { + break; + } } - }); - }, - replace: function replace(id1, id2) { - var file1 = this.get(id1); - var file2 = this.get(id2); - if (!file1 || !file2 || file1 === file2) { - return false; - } - var files = this.files.concat([]); - var index1 = files.indexOf(file1); - var index2 = files.indexOf(file2); - if (index1 === -1 || index2 === -1) { - return false; - } - files[index1] = file2; - files[index2] = file1; - this.files = files; - this.emitInput(); - return true; - }, - - // 移除 - remove: function remove(id) { - var file = this.get(id); - if (file) { - if (this.emitFilter(undefined, file)) { - return false; - } - var files = this.files.concat([]); - var index = files.indexOf(file); - if (index === -1) { - console.error('remove', file); + // 没有文件 + if (!addFiles.length) { return false; } - files.splice(index, 1); - this.files = files; - - // 定位 - delete this.maps[file.id]; - - // 事件 - this.emitInput(); - this.emitFile(undefined, file); - } - return file; - }, - - // 更新 - update: function update(id, data) { - var file = this.get(id); - if (file) { - var newFile = _extends({}, file, data); - // 停用必须加上错误 - if (file.fileObject && file.active && !newFile.active && !newFile.error && !newFile.success) { - newFile.error = 'abort'; + // 如果是 1 清空 + if (this.maximum === 1) { + this.clear(); } - if (this.emitFilter(newFile, file)) { - return false; + // 添加进去 files + var newFiles = void 0; + if (index === true || index === 0) { + newFiles = addFiles.concat(this.files); + } else if (index) { + newFiles = addFiles.concat([]); + newFiles.splice(index, 0, addFiles); + } else { + newFiles = this.files.concat(addFiles); } - var files = this.files.concat([]); - var index = files.indexOf(file); - if (index === -1) { - console.error('update', file); - return false; - } - files.splice(index, 1, newFile); - this.files = files; + this.files = newFiles; - // 删除 旧定位 写入 新定位 (已便支持修改id) - delete this.maps[file.id]; - this.maps[newFile.id] = newFile; + // 定位 + for (var _i = 0; _i < addFiles.length; _i++) { + var _file2 = addFiles[_i]; + this.maps[_file2.id] = _file2; + } // 事件 this.emitInput(); - this.emitFile(newFile, file); - return newFile; - } - return false; - }, - - - // 预处理 事件 过滤器 - emitFilter: function emitFilter(newFile, oldFile) { - var isPrevent = false; - this.$emit('input-filter', newFile, oldFile, function () { - isPrevent = true; - return isPrevent; - }); - return isPrevent; - }, - - - // 处理后 事件 分发 - emitFile: function emitFile(newFile, oldFile) { - this.$emit('input-file', newFile, oldFile); - if (newFile && newFile.fileObject && newFile.active && (!oldFile || !oldFile.active)) { - this.uploading++; - // 激活 - this.$nextTick(function () { - var _this3 = this; - - setTimeout(function () { - _this3.upload(newFile).then(function () { - // eslint-disable-next-line - newFile = _this3.get(newFile); - if (newFile && newFile.fileObject) { - _this3.update(newFile, { - active: false, - success: !newFile.error - }); - } - }).catch(function (e) { - _this3.update(newFile, { - active: false, - success: false, - error: e.code || e.error || e.message || e - }); - }); - }, parseInt(Math.random() * 50 + 50, 10)); - }); - } else if ((!newFile || !newFile.fileObject || !newFile.active) && oldFile && oldFile.fileObject && oldFile.active) { - // 停止 - this.uploading--; - } - - // 自动延续激活 - if (this.active && (Boolean(newFile) !== Boolean(oldFile) || newFile.active !== oldFile.active)) { - this.watchActive(true); - } - }, - emitInput: function emitInput() { - this.$emit('input', this.files); - }, - - - // 上传 - upload: function upload(id) { - var file = this.get(id); - - // 被删除 - if (!file) { - return Promise.reject('not_exists'); - } - - // 不是文件对象 - if (!file.fileObject) { - return Promise.reject('file_object'); - } + for (var _i2 = 0; _i2 < addFiles.length; _i2++) { + this.emitFile(addFiles[_i2], undefined); + } - // 有错误直接响应 - if (file.error) { - return Promise.reject(file.error); - } + return isArray ? addFiles : addFiles[0]; + }, - // 已完成直接响应 - if (file.success) { - return Promise.resolve(file); - } - // 后缀 - var extensions = this.extensions; - if (extensions && (extensions.length || typeof extensions.length === 'undefined')) { - if ((typeof extensions === 'undefined' ? 'undefined' : _typeof(extensions)) !== 'object' || !(extensions instanceof RegExp)) { - if (typeof extensions === 'string') { - extensions = extensions.split(',').map(function (value) { - return value.trim(); - }).filter(function (value) { - return value; + // 添加表单文件 + addInputFile: function addInputFile(el) { + var files = []; + if (el.files) { + for (var i = 0; i < el.files.length; i++) { + var file = el.files[i]; + files.push({ + size: file.size, + name: file.webkitRelativePath || file.relativePath || file.name, + type: file.type, + file: file, + el: el }); } - extensions = new RegExp('\\.(' + extensions.join('|').replace(/\./g, '\\.') + ')$', 'i'); - } - if (file.name.search(extensions) === -1) { - return Promise.reject('extension'); - } - } - - // 大小 - if (this.size > 0 && file.size >= 0 && file.size > this.size) { - return Promise.reject('size'); - } - - if (this.customAction) { - return this.customAction(file, this); - } - - if (this.features.html5) { - if (this.shouldUseChunkUpload(file)) { - return this.uploadChunk(file); - } - if (file.putAction) { - return this.uploadPut(file); - } - if (file.postAction) { - return this.uploadHtml5(file); + } else { + files.push({ + name: el.value.replace(/^.*?([^\/\\\r\n]+)$/, '$1'), + el: el + }); } - } - if (file.postAction) { - return this.uploadHtml4(file); - } - return Promise.reject('No action configured'); - }, - + return this.add(files); + }, - /** - * Whether this file should be uploaded using chunk upload or not - * - * @param Object file - */ - shouldUseChunkUpload: function shouldUseChunkUpload(file) { - return this.chunkEnabled && !!this.chunkOptions.handler && file.size > this.chunkOptions.minSize; - }, + // 添加 DataTransfer + addDataTransfer: function addDataTransfer(dataTransfer) { + var _this = this; - /** - * Upload a file using Chunk method - * - * @param File file - */ - uploadChunk: function uploadChunk(file) { - var HandlerClass = this.chunkOptions.handler; - file.chunk = new HandlerClass(file, this.chunkOptions); + var files = []; + if (dataTransfer.items && dataTransfer.items.length) { + var items = []; + for (var i = 0; i < dataTransfer.items.length; i++) { + var item = dataTransfer.items[i]; + if (item.getAsEntry) { + item = item.getAsEntry() || item.getAsFile(); + } else if (item.webkitGetAsEntry) { + item = item.webkitGetAsEntry() || item.getAsFile(); + } else { + item = item.getAsFile(); + } + if (item) { + items.push(item); + } + } - return file.chunk.upload(); - }, - uploadPut: function uploadPut(file) { - var querys = []; - var value = void 0; - for (var key in file.data) { - value = file.data[key]; - if (value !== null && value !== undefined) { - querys.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); + return new Promise(function (resolve, reject) { + var forEach = function forEach(i) { + var item = items[i]; + // 结束 文件数量大于 最大数量 + if (!item || _this.maximum > 0 && files.length >= _this.maximum) { + return resolve(_this.add(files)); + } + _this.getEntry(item).then(function (results) { + files.push.apply(files, _toConsumableArray(results)); + forEach(i + 1); + }); + }; + forEach(0); + }); } - } - var queryString = querys.length ? (file.putAction.indexOf('?') === -1 ? '?' : '&') + querys.join('&') : ''; - var xhr = new XMLHttpRequest(); - xhr.open('PUT', file.putAction + queryString); - return this.uploadXhr(xhr, file, file.file); - }, - uploadHtml5: function uploadHtml5(file) { - var form = new window.FormData(); - var value = void 0; - for (var key in file.data) { - value = file.data[key]; - if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && typeof value.toString !== 'function') { - if (value instanceof File) { - form.append(key, value, value.name); - } else { - form.append(key, JSON.stringify(value)); + + if (dataTransfer.files.length) { + for (var _i3 = 0; _i3 < dataTransfer.files.length; _i3++) { + files.push(dataTransfer.files[_i3]); + if (this.maximum > 0 && files.length >= this.maximum) { + break; + } } - } else if (value !== null && value !== undefined) { - form.append(key, value); - } - } - form.append(this.name, file.file, file.file.filename || file.name); - var xhr = new XMLHttpRequest(); - xhr.open('POST', file.postAction); - return this.uploadXhr(xhr, file, form); - }, - uploadXhr: function uploadXhr(xhr, _file, body) { - var _this4 = this; - - var file = _file; - var speedTime = 0; - var speedLoaded = 0; - - // 进度条 - xhr.upload.onprogress = function (e) { - // 还未开始上传 已删除 未激活 - file = _this4.get(file); - if (!e.lengthComputable || !file || !file.fileObject || !file.active) { - return; + return Promise.resolve(this.add(files)); } - // 进度 速度 每秒更新一次 - var speedTime2 = Math.round(Date.now() / 1000); - if (speedTime2 === speedTime) { - return; - } - speedTime = speedTime2; + return Promise.resolve([]); + }, + - file = _this4.update(file, { - progress: (e.loaded / e.total * 100).toFixed(2), - speed: e.loaded - speedLoaded - }); - speedLoaded = e.loaded; - }; + // 获得 entry + getEntry: function getEntry(entry) { + var _this2 = this; - // 检查激活状态 - var interval = setInterval(function () { - file = _this4.get(file); - if (file && file.fileObject && !file.success && !file.error && file.active) { - return; - } + var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; - if (interval) { - clearInterval(interval); - interval = false; + return new Promise(function (resolve, reject) { + if (entry.isFile) { + entry.file(function (file) { + resolve([{ + size: file.size, + name: path + file.name, + type: file.type, + file: file + }]); + }); + } else if (entry.isDirectory && _this2.dropDirectory) { + var files = []; + var dirReader = entry.createReader(); + var readEntries = function readEntries() { + dirReader.readEntries(function (entries) { + var forEach = function forEach(i) { + if (!entries[i] && i === 0 || _this2.maximum > 0 && files.length >= _this2.maximum) { + return resolve(files); + } + if (!entries[i]) { + return readEntries(); + } + _this2.getEntry(entries[i], path + entry.name + '/').then(function (results) { + files.push.apply(files, _toConsumableArray(results)); + forEach(i + 1); + }); + }; + forEach(0); + }); + }; + readEntries(); + } else { + resolve([]); + } + }); + }, + replace: function replace(id1, id2) { + var file1 = this.get(id1); + var file2 = this.get(id2); + if (!file1 || !file2 || file1 === file2) { + return false; + } + var files = this.files.concat([]); + var index1 = files.indexOf(file1); + var index2 = files.indexOf(file2); + if (index1 === -1 || index2 === -1) { + return false; } + files[index1] = file2; + files[index2] = file1; + this.files = files; + this.emitInput(); + return true; + }, - try { - xhr.abort(); - xhr.timeout = 1; - } catch (e) {} - }, 100); - - return new Promise(function (resolve, reject) { - var complete = void 0; - var fn = function fn(e) { - // 已经处理过了 - if (complete) { - return; + + // 移除 + remove: function remove(id) { + var file = this.get(id); + if (file) { + if (this.emitFilter(undefined, file)) { + return false; } - complete = true; - if (interval) { - clearInterval(interval); - interval = false; + var files = this.files.concat([]); + var index = files.indexOf(file); + if (index === -1) { + console.error('remove', file); + return false; } + files.splice(index, 1); + this.files = files; - file = _this4.get(file); + // 定位 + delete this.maps[file.id]; - // 不存在直接响应 - if (!file) { - return reject('not_exists'); - } + // 事件 + this.emitInput(); + this.emitFile(undefined, file); + } + return file; + }, - // 不是文件对象 - if (!file.fileObject) { - return reject('file_object'); - } - // 有错误自动响应 - if (file.error) { - return reject(file.error); + // 更新 + update: function update(id, data) { + var file = this.get(id); + if (file) { + var newFile = _extends({}, file, data); + // 停用必须加上错误 + if (file.fileObject && file.active && !newFile.active && !newFile.error && !newFile.success) { + newFile.error = 'abort'; } - // 未激活 - if (!file.active) { - return reject('abort'); + if (this.emitFilter(newFile, file)) { + return false; } - // 已完成 直接相应 - if (file.success) { - return resolve(file); + var files = this.files.concat([]); + var index = files.indexOf(file); + if (index === -1) { + console.error('update', file); + return false; } + files.splice(index, 1, newFile); + this.files = files; - var data = {}; + // 删除 旧定位 写入 新定位 (已便支持修改id) + delete this.maps[file.id]; + this.maps[newFile.id] = newFile; - switch (e.type) { - case 'timeout': - case 'abort': - data.error = e.type; - break; - case 'error': - if (!xhr.status) { - data.error = 'network'; - } else if (xhr.status >= 500) { - data.error = 'server'; - } else if (xhr.status >= 400) { - data.error = 'denied'; - } - break; - default: - if (xhr.status >= 500) { - data.error = 'server'; - } else if (xhr.status >= 400) { - data.error = 'denied'; - } else { - data.progress = '100.00'; - } - } - - if (xhr.responseText) { - var contentType = xhr.getResponseHeader('Content-Type'); - if (contentType && contentType.indexOf('/json') !== -1) { - data.response = JSON.parse(xhr.responseText); - } else { - data.response = xhr.responseText; - } - } + // 事件 + this.emitInput(); + this.emitFile(newFile, file); + return newFile; + } + return false; + }, - // 更新 - file = _this4.update(file, data); - // 相应错误 - if (file.error) { - return reject(file.error); - } + // 预处理 事件 过滤器 + emitFilter: function emitFilter(newFile, oldFile) { + var isPrevent = false; + this.$emit('input-filter', newFile, oldFile, function () { + isPrevent = true; + return isPrevent; + }); + return isPrevent; + }, - // 响应 - return resolve(file); - }; - // 事件 - xhr.onload = fn; - xhr.onerror = fn; - xhr.onabort = fn; - xhr.ontimeout = fn; - - // 超时 - if (file.timeout) { - xhr.timeout = file.timeout; + // 处理后 事件 分发 + emitFile: function emitFile(newFile, oldFile) { + this.$emit('input-file', newFile, oldFile); + if (newFile && newFile.fileObject && newFile.active && (!oldFile || !oldFile.active)) { + this.uploading++; + // 激活 + this.$nextTick(function () { + var _this3 = this; + + setTimeout(function () { + _this3.upload(newFile).then(function () { + // eslint-disable-next-line + newFile = _this3.get(newFile); + if (newFile && newFile.fileObject) { + _this3.update(newFile, { + active: false, + success: !newFile.error + }); + } + }).catch(function (e) { + _this3.update(newFile, { + active: false, + success: false, + error: e.code || e.error || e.message || e + }); + }); + }, parseInt(Math.random() * 50 + 50, 10)); + }); + } else if ((!newFile || !newFile.fileObject || !newFile.active) && oldFile && oldFile.fileObject && oldFile.active) { + // 停止 + this.uploading--; } - // headers - for (var key in file.headers) { - xhr.setRequestHeader(key, file.headers[key]); + // 自动延续激活 + if (this.active && (Boolean(newFile) !== Boolean(oldFile) || newFile.active !== oldFile.active)) { + this.watchActive(true); } + }, + emitInput: function emitInput() { + this.$emit('input', this.files); + }, - // 更新 xhr - file = _this4.update(file, { xhr: xhr }); - // 开始上传 - xhr.send(body); - }); - }, - uploadHtml4: function uploadHtml4(_file) { - var _this5 = this; + // 上传 + upload: function upload(id) { + var file = this.get(id); - var file = _file; - var onKeydown = function onKeydown(e) { - if (e.keyCode === 27) { - e.preventDefault(); + // 被删除 + if (!file) { + return Promise.reject('not_exists'); + } + + // 不是文件对象 + if (!file.fileObject) { + return Promise.reject('file_object'); } - }; - var iframe = document.createElement('iframe'); - iframe.id = 'upload-iframe-' + file.id; - iframe.name = 'upload-iframe-' + file.id; - iframe.src = 'about:blank'; - iframe.setAttribute('style', 'width:1px;height:1px;top:-999em;position:absolute; margin-top:-999em;'); + // 有错误直接响应 + if (file.error) { + return Promise.reject(file.error); + } - var form = document.createElement('form'); + // 已完成直接响应 + if (file.success) { + return Promise.resolve(file); + } - form.action = file.postAction; + // 后缀 + var extensions = this.extensions; + if (extensions && (extensions.length || typeof extensions.length === 'undefined')) { + if ((typeof extensions === 'undefined' ? 'undefined' : _typeof(extensions)) !== 'object' || !(extensions instanceof RegExp)) { + if (typeof extensions === 'string') { + extensions = extensions.split(',').map(function (value) { + return value.trim(); + }).filter(function (value) { + return value; + }); + } + extensions = new RegExp('\\.(' + extensions.join('|').replace(/\./g, '\\.') + ')$', 'i'); + } + if (file.name.search(extensions) === -1) { + return Promise.reject('extension'); + } + } - form.name = 'upload-form-' + file.id; + // 大小 + if (this.size > 0 && file.size >= 0 && file.size > this.size) { + return Promise.reject('size'); + } - form.setAttribute('method', 'POST'); - form.setAttribute('target', 'upload-iframe-' + file.id); - form.setAttribute('enctype', 'multipart/form-data'); + if (this.customAction) { + return this.customAction(file, this); + } - var value = void 0; - var input = void 0; - for (var key in file.data) { - value = file.data[key]; - if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && typeof value.toString !== 'function') { - value = JSON.stringify(value); + if (this.features.html5) { + if (this.shouldUseChunkUpload(file)) { + return this.uploadChunk(file); + } + if (file.putAction) { + return this.uploadPut(file); + } + if (file.postAction) { + return this.uploadHtml5(file); + } } - if (value !== null && value !== undefined) { - input = document.createElement('input'); - input.type = 'hidden'; - input.name = key; - input.value = value; - form.appendChild(input); + if (file.postAction) { + return this.uploadHtml4(file); } - } - form.appendChild(file.el); + return Promise.reject('No action configured'); + }, - document.body.appendChild(iframe).appendChild(form); - var getResponseData = function getResponseData() { - var doc = void 0; - try { - if (iframe.contentWindow) { - doc = iframe.contentWindow.document; - } - } catch (err) {} - if (!doc) { - try { - doc = iframe.contentDocument ? iframe.contentDocument : iframe.document; - } catch (err) { - doc = iframe.document; + /** + * Whether this file should be uploaded using chunk upload or not + * + * @param Object file + */ + shouldUseChunkUpload: function shouldUseChunkUpload(file) { + return this.chunkEnabled && !!this.chunkOptions.handler && file.size > this.chunkOptions.minSize; + }, + + + /** + * Upload a file using Chunk method + * + * @param File file + */ + uploadChunk: function uploadChunk(file) { + var HandlerClass = this.chunkOptions.handler; + file.chunk = new HandlerClass(file, this.chunkOptions); + + return file.chunk.upload(); + }, + uploadPut: function uploadPut(file) { + var querys = []; + var value = void 0; + for (var key in file.data) { + value = file.data[key]; + if (value !== null && value !== undefined) { + querys.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); } } - if (doc && doc.body) { - return doc.body.innerHTML; + var queryString = querys.length ? (file.putAction.indexOf('?') === -1 ? '?' : '&') + querys.join('&') : ''; + var xhr = new XMLHttpRequest(); + xhr.open('PUT', file.putAction + queryString); + return this.uploadXhr(xhr, file, file.file); + }, + uploadHtml5: function uploadHtml5(file) { + var form = new window.FormData(); + var value = void 0; + for (var key in file.data) { + value = file.data[key]; + if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && typeof value.toString !== 'function') { + if (value instanceof File) { + form.append(key, value, value.name); + } else { + form.append(key, JSON.stringify(value)); + } + } else if (value !== null && value !== undefined) { + form.append(key, value); + } } - return null; - }; + form.append(this.name, file.file, file.file.filename || file.name); + var xhr = new XMLHttpRequest(); + xhr.open('POST', file.postAction); + return this.uploadXhr(xhr, file, form); + }, + uploadXhr: function uploadXhr(xhr, _file, body) { + var _this4 = this; + + var file = _file; + var speedTime = 0; + var speedLoaded = 0; - return new Promise(function (resolve, reject) { - setTimeout(function () { - file = _this5.update(file, { iframe: iframe }); + // 进度条 + xhr.upload.onprogress = function (e) { + // 还未开始上传 已删除 未激活 + file = _this4.get(file); + if (!e.lengthComputable || !file || !file.fileObject || !file.active) { + return; + } - // 不存在 - if (!file) { - return reject('not_exists'); + // 进度 速度 每秒更新一次 + var speedTime2 = Math.round(Date.now() / 1000); + if (speedTime2 === speedTime) { + return; } + speedTime = speedTime2; - // 定时检查 - var interval = setInterval(function () { - file = _this5.get(file); - if (file && file.fileObject && !file.success && !file.error && file.active) { - return; - } + file = _this4.update(file, { + progress: (e.loaded / e.total * 100).toFixed(2), + speed: e.loaded - speedLoaded + }); + speedLoaded = e.loaded; + }; - if (interval) { - clearInterval(interval); - interval = false; - } + // 检查激活状态 + var interval = setInterval(function () { + file = _this4.get(file); + if (file && file.fileObject && !file.success && !file.error && file.active) { + return; + } + + if (interval) { + clearInterval(interval); + interval = false; + } - iframe.onabort({ type: file ? 'abort' : 'not_exists' }); - }, 100); + try { + xhr.abort(); + xhr.timeout = 1; + } catch (e) {} + }, 100); + return new Promise(function (resolve, reject) { var complete = void 0; var fn = function fn(e) { // 已经处理过了 @@ -1621,16 +1532,12 @@ var FileUpload = { render: function render() { return; } complete = true; - if (interval) { clearInterval(interval); interval = false; } - // 关闭 esc 事件 - document.body.removeEventListener('keydown', onKeydown); - - file = _this5.get(file); + file = _this4.get(file); // 不存在直接响应 if (!file) { @@ -1657,43 +1564,45 @@ var FileUpload = { render: function render() { return resolve(file); } - var response = getResponseData(); var data = {}; + switch (e.type) { + case 'timeout': case 'abort': - data.error = 'abort'; + data.error = e.type; break; case 'error': - if (file.error) { - data.error = file.error; - } else if (response === null) { + if (!xhr.status) { data.error = 'network'; - } else { + } else if (xhr.status >= 500) { + data.error = 'server'; + } else if (xhr.status >= 400) { data.error = 'denied'; } break; default: - if (file.error) { - data.error = file.error; - } else if (data === null) { - data.error = 'network'; + if (xhr.status >= 500) { + data.error = 'server'; + } else if (xhr.status >= 400) { + data.error = 'denied'; } else { data.progress = '100.00'; } } - if (response !== null) { - if (response && response.substr(0, 1) === '{' && response.substr(response.length - 1, 1) === '}') { - try { - response = JSON.parse(response); - } catch (err) {} + if (xhr.responseText) { + var contentType = xhr.getResponseHeader('Content-Type'); + if (contentType && contentType.indexOf('/json') !== -1) { + data.response = JSON.parse(xhr.responseText); + } else { + data.response = xhr.responseText; } - data.response = response; } // 更新 - file = _this5.update(file, data); + file = _this4.update(file, data); + // 相应错误 if (file.error) { return reject(file.error); } @@ -1702,118 +1611,416 @@ var FileUpload = { render: function render() { return resolve(file); }; - // 添加事件 - iframe.onload = fn; - iframe.onerror = fn; - iframe.onabort = fn; - - // 禁止 esc 键 - document.body.addEventListener('keydown', onKeydown); - - // 提交 - form.submit(); - }, 50); - }).then(function (res) { - iframe.parentNode && iframe.parentNode.removeChild(iframe); - return res; - }).catch(function (res) { - iframe.parentNode && iframe.parentNode.removeChild(iframe); - return res; - }); - }, - watchActive: function watchActive(active) { - var file = void 0; - var index = 0; - while (file = this.files[index]) { - index++; - if (!file.fileObject) { - // 不是文件对象 - } else if (active && !this.destroy) { - if (this.uploading >= this.thread || this.uploading && !this.features.html5) { - break; + // 事件 + xhr.onload = fn; + xhr.onerror = fn; + xhr.onabort = fn; + xhr.ontimeout = fn; + + // 超时 + if (file.timeout) { + xhr.timeout = file.timeout; } - if (!file.active && !file.error && !file.success) { - this.update(file, { active: true }); + + // headers + for (var key in file.headers) { + xhr.setRequestHeader(key, file.headers[key]); } - } else { - if (file.active) { - this.update(file, { active: false }); + + // 更新 xhr + file = _this4.update(file, { xhr: xhr }); + + // 开始上传 + xhr.send(body); + }); + }, + uploadHtml4: function uploadHtml4(_file) { + var _this5 = this; + + var file = _file; + var onKeydown = function onKeydown(e) { + if (e.keyCode === 27) { + e.preventDefault(); + } + }; + + var iframe = document.createElement('iframe'); + iframe.id = 'upload-iframe-' + file.id; + iframe.name = 'upload-iframe-' + file.id; + iframe.src = 'about:blank'; + iframe.setAttribute('style', 'width:1px;height:1px;top:-999em;position:absolute; margin-top:-999em;'); + + var form = document.createElement('form'); + + form.action = file.postAction; + + form.name = 'upload-form-' + file.id; + + form.setAttribute('method', 'POST'); + form.setAttribute('target', 'upload-iframe-' + file.id); + form.setAttribute('enctype', 'multipart/form-data'); + + var value = void 0; + var input = void 0; + for (var key in file.data) { + value = file.data[key]; + if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && typeof value.toString !== 'function') { + value = JSON.stringify(value); + } + if (value !== null && value !== undefined) { + input = document.createElement('input'); + input.type = 'hidden'; + input.name = key; + input.value = value; + form.appendChild(input); } } + form.appendChild(file.el); + + document.body.appendChild(iframe).appendChild(form); + + var getResponseData = function getResponseData() { + var doc = void 0; + try { + if (iframe.contentWindow) { + doc = iframe.contentWindow.document; + } + } catch (err) {} + if (!doc) { + try { + doc = iframe.contentDocument ? iframe.contentDocument : iframe.document; + } catch (err) { + doc = iframe.document; + } + } + if (doc && doc.body) { + return doc.body.innerHTML; + } + return null; + }; + + return new Promise(function (resolve, reject) { + setTimeout(function () { + file = _this5.update(file, { iframe: iframe }); + + // 不存在 + if (!file) { + return reject('not_exists'); + } + + // 定时检查 + var interval = setInterval(function () { + file = _this5.get(file); + if (file && file.fileObject && !file.success && !file.error && file.active) { + return; + } + + if (interval) { + clearInterval(interval); + interval = false; + } + + iframe.onabort({ type: file ? 'abort' : 'not_exists' }); + }, 100); + + var complete = void 0; + var fn = function fn(e) { + // 已经处理过了 + if (complete) { + return; + } + complete = true; + + if (interval) { + clearInterval(interval); + interval = false; + } + + // 关闭 esc 事件 + document.body.removeEventListener('keydown', onKeydown); + + file = _this5.get(file); + + // 不存在直接响应 + if (!file) { + return reject('not_exists'); + } + + // 不是文件对象 + if (!file.fileObject) { + return reject('file_object'); + } + + // 有错误自动响应 + if (file.error) { + return reject(file.error); + } + + // 未激活 + if (!file.active) { + return reject('abort'); + } + + // 已完成 直接相应 + if (file.success) { + return resolve(file); + } + + var response = getResponseData(); + var data = {}; + switch (e.type) { + case 'abort': + data.error = 'abort'; + break; + case 'error': + if (file.error) { + data.error = file.error; + } else if (response === null) { + data.error = 'network'; + } else { + data.error = 'denied'; + } + break; + default: + if (file.error) { + data.error = file.error; + } else if (data === null) { + data.error = 'network'; + } else { + data.progress = '100.00'; + } + } + + if (response !== null) { + if (response && response.substr(0, 1) === '{' && response.substr(response.length - 1, 1) === '}') { + try { + response = JSON.parse(response); + } catch (err) {} + } + data.response = response; + } + + // 更新 + file = _this5.update(file, data); + + if (file.error) { + return reject(file.error); + } + + // 响应 + return resolve(file); + }; + + // 添加事件 + iframe.onload = fn; + iframe.onerror = fn; + iframe.onabort = fn; + + // 禁止 esc 键 + document.body.addEventListener('keydown', onKeydown); + + // 提交 + form.submit(); + }, 50); + }).then(function (res) { + iframe.parentNode && iframe.parentNode.removeChild(iframe); + return res; + }).catch(function (res) { + iframe.parentNode && iframe.parentNode.removeChild(iframe); + return res; + }); + }, + watchActive: function watchActive(active) { + var file = void 0; + var index = 0; + while (file = this.files[index]) { + index++; + if (!file.fileObject) ; else if (active && !this.destroy) { + if (this.uploading >= this.thread || this.uploading && !this.features.html5) { + break; + } + if (!file.active && !file.error && !file.success) { + this.update(file, { active: true }); + } + } else { + if (file.active) { + this.update(file, { active: false }); + } + } + } + if (this.uploading === 0) { + this.active = false; + } + }, + watchDrop: function watchDrop(_el) { + var el = _el; + if (!this.features.drop) { + return; + } + + // 移除挂载 + if (this.dropElement) { + try { + document.removeEventListener('dragenter', this.onDragenter, false); + document.removeEventListener('dragleave', this.onDragleave, false); + document.removeEventListener('drop', this.onDocumentDrop, false); + this.dropElement.removeEventListener('dragover', this.onDragover, false); + this.dropElement.removeEventListener('drop', this.onDrop, false); + } catch (e) {} + } + + if (!el) { + el = false; + } else if (typeof el === 'string') { + el = document.querySelector(el) || this.$root.$el.querySelector(el); + } else if (el === true) { + el = this.$parent.$el; + } + + this.dropElement = el; + + if (this.dropElement) { + document.addEventListener('dragenter', this.onDragenter, false); + document.addEventListener('dragleave', this.onDragleave, false); + document.addEventListener('drop', this.onDocumentDrop, false); + this.dropElement.addEventListener('dragover', this.onDragover, false); + this.dropElement.addEventListener('drop', this.onDrop, false); + } + }, + onDragenter: function onDragenter(e) { + e.preventDefault(); + if (!this.dropActive) { + this.dropActive = true; + } + }, + onDragleave: function onDragleave(e) { + e.preventDefault(); + if (e.target.nodeName === 'HTML' || e.target === e.explicitOriginalTarget || e.screenX === 0 && e.screenY === 0 && !e.fromElement && e.offsetX <= 0) { + this.dropActive = false; + } + }, + onDragover: function onDragover(e) { + e.preventDefault(); + }, + onDocumentDrop: function onDocumentDrop() { + this.dropActive = false; + }, + onDrop: function onDrop(e) { + e.preventDefault(); + this.addDataTransfer(e.dataTransfer); } - if (this.uploading === 0) { - this.active = false; - } - }, - watchDrop: function watchDrop(_el) { - var el = _el; - if (!this.features.drop) { - return; - } + } + }; + + var __vue_script__$1 = script$1; + /* template */ + var __vue_render__$1 = function __vue_render__() { + var _vm = this;var _h = _vm.$createElement;var _c = _vm._self._c || _h;return _c('label', { class: _vm.className }, [_vm._t("default"), _vm._ssrNode(" "), _c('input-file')], 2); + }; + var __vue_staticRenderFns__$1 = []; + + var __vue_template__$1 = typeof __vue_render__$1 !== 'undefined' ? { render: __vue_render__$1, staticRenderFns: __vue_staticRenderFns__$1 } : {}; + /* style */ + var __vue_inject_styles__$1 = undefined; + /* scoped */ + var __vue_scope_id__$1 = undefined; + /* module identifier */ + var __vue_module_identifier__$1 = "data-v-62fe22ff"; + /* functional template */ + var __vue_is_functional_template__$1 = false; + /* component normalizer */ + function __vue_normalize__$1(template, style, script, scope, functional, moduleIdentifier, createInjector, createInjectorSSR) { + var component = script || {}; + + if (!component.render) { + component.render = template.render; + component.staticRenderFns = template.staticRenderFns; + component._compiled = true; + + if (functional) component.functional = true; + } + + component._scopeId = scope; + + return component; + } + /* style inject */ + + /* style inject SSR */ + function __vue_create_injector_ssr__$1(context) { + if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') { + context = __VUE_SSR_CONTEXT__; + } + + if (!context) return function () {}; - // 移除挂载 - if (this.dropElement) { + if (!context.hasOwnProperty('styles')) { + Object.defineProperty(context, 'styles', { + enumerable: true, + get: function get() { + return context._styles; + } + }); + context._renderStyles = renderStyles; + } + + function renderStyles(styles) { + var css = ''; + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = styles[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var _ref = _step.value; + var ids = _ref.ids, + media = _ref.media, + parts = _ref.parts; + + css += ''; + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { try { - document.removeEventListener('dragenter', this.onDragenter, false); - document.removeEventListener('dragleave', this.onDragleave, false); - document.removeEventListener('drop', this.onDocumentDrop, false); - this.dropElement.removeEventListener('dragover', this.onDragover, false); - this.dropElement.removeEventListener('drop', this.onDrop, false); - } catch (e) {} + if (!_iteratorNormalCompletion && _iterator.return) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } } - if (!el) { - el = false; - } else if (typeof el === 'string') { - el = document.querySelector(el) || this.$root.$el.querySelector(el); - } else if (el === true) { - el = this.$parent.$el; - } + return css; + } - this.dropElement = el; + return function addStyle(id, css) { + var group = css.media || 'default'; + var style = context._styles[group] || (context._styles[group] = { ids: [], parts: [] }); - if (this.dropElement) { - document.addEventListener('dragenter', this.onDragenter, false); - document.addEventListener('dragleave', this.onDragleave, false); - document.addEventListener('drop', this.onDocumentDrop, false); - this.dropElement.addEventListener('dragover', this.onDragover, false); - this.dropElement.addEventListener('drop', this.onDrop, false); - } - }, - onDragenter: function onDragenter(e) { - e.preventDefault(); - if (!this.dropActive) { - this.dropActive = true; - } - }, - onDragleave: function onDragleave(e) { - e.preventDefault(); - if (e.target.nodeName === 'HTML' || e.screenX === 0 && e.screenY === 0 && !e.fromElement && e.offsetX <= 0) { - this.dropActive = false; + if (!style.ids.includes(id)) { + style.media = css.media; + style.ids.push(id); + var code = css.source; + style.parts.push(code); } - }, - onDragover: function onDragover(e) { - e.preventDefault(); - }, - onDocumentDrop: function onDocumentDrop() { - this.dropActive = false; - }, - onDrop: function onDrop(e) { - e.preventDefault(); - this.addDataTransfer(e.dataTransfer); - } + }; } -}; -var FileUpload$1 = Object.freeze({ - default: FileUpload -}); + var FileUpload = __vue_normalize__$1(__vue_template__$1, __vue_inject_styles__$1, typeof __vue_script__$1 === 'undefined' ? {} : __vue_script__$1, __vue_scope_id__$1, __vue_is_functional_template__$1, __vue_module_identifier__$1, typeof __vue_create_injector__ !== 'undefined' ? __vue_create_injector__ : function () {}, typeof __vue_create_injector_ssr__$1 !== 'undefined' ? __vue_create_injector_ssr__$1 : function () {}); + + var FileUpload$1 = /*#__PURE__*/Object.freeze({ + default: FileUpload + }); -var require$$0 = ( FileUpload$1 && FileUpload ) || FileUpload$1; + var require$$0 = ( FileUpload$1 && FileUpload ) || FileUpload$1; -var src = require$$0; + var src = require$$0; -return src; + return src; }))); //# sourceMappingURL=vue-upload-component.part.js.map diff --git a/dist/vue-upload-component.part.js.map b/dist/vue-upload-component.part.js.map index a5e0ce2..42e3cc5 100644 --- a/dist/vue-upload-component.part.js.map +++ b/dist/vue-upload-component.part.js.map @@ -1 +1 @@ -{"version":3,"file":"vue-upload-component.part.js","sources":["../src/utils/request.js","../src/chunk/ChunkUploadHandler.js","../src/InputFile.vue","../src/FileUpload.vue","../src/index.js"],"sourcesContent":["/**\n * Creates a XHR request\n *\n * @param {Object} options\n */\nexport const createRequest = (options) => {\n const xhr = new XMLHttpRequest()\n xhr.open(options.method || 'GET', options.url)\n xhr.responseType = 'json'\n if (options.headers) {\n Object.keys(options.headers).forEach(key => {\n xhr.setRequestHeader(key, options.headers[key])\n })\n }\n\n return xhr\n}\n\n/**\n * Sends a XHR request with certain body\n *\n * @param {XMLHttpRequest} xhr\n * @param {Object} body\n */\nexport const sendRequest = (xhr, body) => {\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n var response\n try {\n response = JSON.parse(xhr.response)\n } catch (err) {\n response = xhr.response\n }\n resolve(response)\n } else {\n reject(xhr.response)\n }\n }\n xhr.onerror = () => reject(xhr.response)\n xhr.send(JSON.stringify(body))\n })\n}\n\n/**\n * Sends a XHR request with certain form data\n *\n * @param {XMLHttpRequest} xhr\n * @param {Object} data\n */\nexport const sendFormRequest = (xhr, data) => {\n const body = new FormData()\n for (var name in data) {\n body.append(name, data[name])\n }\n\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n var response\n try {\n response = JSON.parse(xhr.response)\n } catch (err) {\n response = xhr.response\n }\n resolve(response)\n } else {\n reject(xhr.response)\n }\n }\n xhr.onerror = () => reject(xhr.response)\n xhr.send(body)\n })\n}\n\n/**\n * Creates and sends XHR request\n *\n * @param {Object} options\n *\n * @returns Promise\n */\nexport default function (options) {\n const xhr = createRequest(options)\n\n return sendRequest(xhr, options.body)\n}\n","import {\n default as request,\n createRequest,\n sendFormRequest\n} from '../utils/request'\n\nexport default class ChunkUploadHandler {\n /**\n * Constructor\n *\n * @param {File} file\n * @param {Object} options\n */\n constructor (file, options) {\n this.file = file\n this.options = options\n }\n\n /**\n * Gets the max retries from options\n */\n get maxRetries () {\n return parseInt(this.options.maxRetries)\n }\n\n /**\n * Gets the max number of active chunks being uploaded at once from options\n */\n get maxActiveChunks () {\n return parseInt(this.options.maxActive)\n }\n\n /**\n * Gets the file type\n */\n get fileType () {\n return this.file.type\n }\n\n /**\n * Gets the file size\n */\n get fileSize () {\n return this.file.size\n }\n\n /**\n * Gets action (url) to upload the file\n */\n get action () {\n return this.options.action || null\n }\n\n /**\n * Gets the body to be merged when sending the request in start phase\n */\n get startBody () {\n return this.options.startBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in upload phase\n */\n get uploadBody () {\n return this.options.uploadBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in finish phase\n */\n get finishBody () {\n return this.options.finishBody || {}\n }\n\n /**\n * Gets the headers of the requests from options\n */\n get headers () {\n return this.options.headers || {}\n }\n\n /**\n * Whether it's ready to upload files or not\n */\n get readyToUpload () {\n return !!this.chunks\n }\n\n /**\n * Gets the progress of the chunk upload\n * - Gets all the completed chunks\n * - Gets the progress of all the chunks that are being uploaded\n */\n get progress () {\n const completedProgress = (this.chunksUploaded.length / this.chunks.length) * 100\n const uploadingProgress = this.chunksUploading.reduce((progress, chunk) => {\n return progress + ((chunk.progress | 0) / this.chunks.length)\n }, 0)\n\n return Math.min(completedProgress + uploadingProgress, 100)\n }\n\n /**\n * Gets all the chunks that are pending to be uploaded\n */\n get chunksToUpload () {\n return this.chunks.filter(chunk => {\n return !chunk.active && !chunk.uploaded\n })\n }\n\n /**\n * Whether there are chunks to upload or not\n */\n get hasChunksToUpload () {\n return this.chunksToUpload.length > 0\n }\n\n /**\n * Gets all the chunks that are uploading\n */\n get chunksUploading () {\n return this.chunks.filter(chunk => {\n return !!chunk.xhr && !!chunk.active\n })\n }\n\n /**\n * Gets all the chunks that have finished uploading\n */\n get chunksUploaded () {\n return this.chunks.filter(chunk => {\n return !!chunk.uploaded\n })\n }\n\n /**\n * Creates all the chunks in the initial state\n */\n createChunks () {\n this.chunks = []\n\n let start = 0\n let end = this.chunkSize\n while (start < this.fileSize) {\n this.chunks.push({\n blob: this.file.file.slice(start, end),\n startOffset: start,\n active: false,\n retries: this.maxRetries\n })\n start = end\n end = start + this.chunkSize\n }\n }\n\n /**\n * Updates the progress of the file with the handler's progress\n */\n updateFileProgress () {\n this.file.progress = this.progress\n }\n\n /**\n * Paues the upload process\n * - Stops all active requests\n * - Sets the file not active\n */\n pause () {\n this.file.active = false\n this.stopChunks()\n }\n\n /**\n * Stops all the current chunks\n */\n stopChunks () {\n this.chunksUploading.forEach(chunk => {\n chunk.xhr.abort()\n chunk.active = false\n })\n }\n\n /**\n * Resumes the file upload\n * - Sets the file active\n * - Starts the following chunks\n */\n resume () {\n this.file.active = true\n this.startChunking()\n }\n\n /**\n * Starts the file upload\n *\n * @returns Promise\n * - resolve The file was uploaded\n * - reject The file upload failed\n */\n upload () {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve\n this.reject = reject\n })\n this.start()\n\n return this.promise\n }\n\n /**\n * Start phase\n * Sends a request to the backend to initialise the chunks\n */\n start () {\n request({\n method: 'POST',\n headers: Object.assign({}, this.headers, {\n 'Content-Type': 'application/json'\n }),\n url: this.action,\n body: Object.assign(this.startBody, {\n phase: 'start',\n mime_type: this.fileType,\n size: this.fileSize\n })\n }).then(res => {\n if (res.status !== 'success') {\n this.file.response = res\n return this.reject('server')\n }\n\n this.sessionId = res.data.session_id\n this.chunkSize = res.data.end_offset\n\n this.createChunks()\n this.startChunking()\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n\n /**\n * Starts to upload chunks\n */\n startChunking () {\n for (let i = 0; i < this.maxActiveChunks; i++) {\n this.uploadNextChunk()\n }\n }\n\n /**\n * Uploads the next chunk\n * - Won't do anything if the process is paused\n * - Will start finish phase if there are no more chunks to upload\n */\n uploadNextChunk () {\n if (this.file.active) {\n if (this.hasChunksToUpload) {\n return this.uploadChunk(this.chunksToUpload[0])\n }\n\n if (this.chunksUploading.length === 0) {\n return this.finish()\n }\n }\n }\n\n /**\n * Uploads a chunk\n * - Sends the chunk to the backend\n * - Sets the chunk as uploaded if everything went well\n * - Decreases the number of retries if anything went wrong\n * - Fails if there are no more retries\n *\n * @param {Object} chunk\n */\n uploadChunk (chunk) {\n chunk.progress = 0\n chunk.active = true\n this.updateFileProgress()\n chunk.xhr = createRequest({\n method: 'POST',\n headers: this.headers,\n url: this.action\n })\n\n chunk.xhr.upload.addEventListener('progress', function (evt) {\n if (evt.lengthComputable) {\n chunk.progress = Math.round(evt.loaded / evt.total * 100)\n }\n }, false)\n\n sendFormRequest(chunk.xhr, Object.assign(this.uploadBody, {\n phase: 'upload',\n session_id: this.sessionId,\n start_offset: chunk.startOffset,\n chunk: chunk.blob\n })).then(res => {\n chunk.active = false\n if (res.status === 'success') {\n chunk.uploaded = true\n } else {\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n }\n\n this.uploadNextChunk()\n }).catch(() => {\n chunk.active = false\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n\n this.uploadNextChunk()\n })\n }\n\n /**\n * Finish phase\n * Sends a request to the backend to finish the process\n */\n finish () {\n this.updateFileProgress()\n\n request({\n method: 'POST',\n headers: Object.assign({}, this.headers, {\n 'Content-Type': 'application/json'\n }),\n url: this.action,\n body: Object.assign(this.finishBody, {\n phase: 'finish',\n session_id: this.sessionId\n })\n }).then(res => {\n this.file.response = res\n if (res.status !== 'success') {\n return this.reject('server')\n }\n\n this.resolve(res)\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n}\n","\n\n","\n\n\n","module.exports = require('./FileUpload.vue')\n"],"names":["createRequest","options","xhr","XMLHttpRequest","open","method","url","responseType","headers","keys","forEach","setRequestHeader","key","sendRequest","body","Promise","resolve","reject","onload","status","response","JSON","parse","err","onerror","send","stringify","sendFormRequest","data","FormData","name","append","ChunkUploadHandler","file","chunks","start","end","chunkSize","fileSize","push","slice","maxRetries","progress","active","stopChunks","chunksUploading","abort","startChunking","promise","Object","assign","action","startBody","fileType","then","res","sessionId","session_id","end_offset","createChunks","catch","i","maxActiveChunks","uploadNextChunk","hasChunksToUpload","uploadChunk","chunksToUpload","length","finish","chunk","updateFileProgress","upload","addEventListener","evt","lengthComputable","Math","round","loaded","total","uploadBody","startOffset","blob","uploaded","retries","finishBody","parseInt","maxActive","type","size","completedProgress","chunksUploaded","uploadingProgress","reduce","min","filter","render","e","$destroy","$parent","addInputFile","target","constructor","$el","CHUNK_DEFAULT_OPTIONS","ChunkUploadDefaultHandler","String","Boolean","Number","multiple","Function","Array","value","input","document","createElement","window","files","webkitdirectory","directory","features","html5","ondrop","drop","maps","$nextTick","$forceUpdate","watchDrop","destroy","fileObject","error","success","undefined","watchActive","oldMaps","id","newFile","oldFile","emitFile","emitInput","_files","index","addIndex","isArray","addFiles","Blob","webkitRelativePath","relativePath","Element","el","putAction","postAction","timeout","random","toString","substr","emitFilter","maximum","clear","newFiles","concat","splice","replace","add","dataTransfer","items","item","getAsEntry","getAsFile","webkitGetAsEntry","getEntry","results","entry","path","isFile","isDirectory","dropDirectory","dirReader","createReader","readEntries","entries","id1","id2","file1","get","file2","index1","indexOf","index2","isPrevent","$emit","uploading","update","code","message","extensions","RegExp","split","map","trim","join","search","customAction","shouldUseChunkUpload","uploadPut","uploadHtml5","uploadHtml4","chunkEnabled","chunkOptions","handler","minSize","HandlerClass","querys","encodeURIComponent","queryString","uploadXhr","form","File","filename","_file","speedTime","speedLoaded","onprogress","speedTime2","Date","now","toFixed","interval","setInterval","complete","fn","responseText","contentType","getResponseHeader","onabort","ontimeout","onKeydown","keyCode","preventDefault","iframe","src","setAttribute","appendChild","getResponseData","doc","contentWindow","contentDocument","innerHTML","removeEventListener","submit","parentNode","removeChild","thread","_el","dropElement","onDragenter","onDragleave","onDocumentDrop","onDragover","onDrop","querySelector","$root","dropActive","nodeName","screenX","screenY","fromElement","offsetX","addDataTransfer","require$$0"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"vue-upload-component.part.js","sources":["../src/utils/request.js","../src/chunk/ChunkUploadHandler.js","../src/InputFile.vue.js?rollup-plugin-vue=script.js","../src/FileUpload.vue.js?rollup-plugin-vue=script.js","../src/index.js"],"sourcesContent":["/**\n * Creates a XHR request\n *\n * @param {Object} options\n */\nexport const createRequest = (options) => {\n const xhr = new XMLHttpRequest()\n xhr.open(options.method || 'GET', options.url)\n xhr.responseType = 'json'\n if (options.headers) {\n Object.keys(options.headers).forEach(key => {\n xhr.setRequestHeader(key, options.headers[key])\n })\n }\n\n return xhr\n}\n\n/**\n * Sends a XHR request with certain body\n *\n * @param {XMLHttpRequest} xhr\n * @param {Object} body\n */\nexport const sendRequest = (xhr, body) => {\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n var response\n try {\n response = JSON.parse(xhr.response)\n } catch (err) {\n response = xhr.response\n }\n resolve(response)\n } else {\n reject(xhr.response)\n }\n }\n xhr.onerror = () => reject(xhr.response)\n xhr.send(JSON.stringify(body))\n })\n}\n\n/**\n * Sends a XHR request with certain form data\n *\n * @param {XMLHttpRequest} xhr\n * @param {Object} data\n */\nexport const sendFormRequest = (xhr, data) => {\n const body = new FormData()\n for (var name in data) {\n body.append(name, data[name])\n }\n\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n var response\n try {\n response = JSON.parse(xhr.response)\n } catch (err) {\n response = xhr.response\n }\n resolve(response)\n } else {\n reject(xhr.response)\n }\n }\n xhr.onerror = () => reject(xhr.response)\n xhr.send(body)\n })\n}\n\n/**\n * Creates and sends XHR request\n *\n * @param {Object} options\n *\n * @returns Promise\n */\nexport default function (options) {\n const xhr = createRequest(options)\n\n return sendRequest(xhr, options.body)\n}\n","import {\n default as request,\n createRequest,\n sendFormRequest\n} from '../utils/request'\n\nexport default class ChunkUploadHandler {\n /**\n * Constructor\n *\n * @param {File} file\n * @param {Object} options\n */\n constructor (file, options) {\n this.file = file\n this.options = options\n }\n\n /**\n * Gets the max retries from options\n */\n get maxRetries () {\n return parseInt(this.options.maxRetries)\n }\n\n /**\n * Gets the max number of active chunks being uploaded at once from options\n */\n get maxActiveChunks () {\n return parseInt(this.options.maxActive)\n }\n\n /**\n * Gets the file type\n */\n get fileType () {\n return this.file.type\n }\n\n /**\n * Gets the file size\n */\n get fileSize () {\n return this.file.size\n }\n\n /**\n * Gets action (url) to upload the file\n */\n get action () {\n return this.options.action || null\n }\n\n /**\n * Gets the body to be merged when sending the request in start phase\n */\n get startBody () {\n return this.options.startBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in upload phase\n */\n get uploadBody () {\n return this.options.uploadBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in finish phase\n */\n get finishBody () {\n return this.options.finishBody || {}\n }\n\n /**\n * Gets the headers of the requests from options\n */\n get headers () {\n return this.options.headers || {}\n }\n\n /**\n * Whether it's ready to upload files or not\n */\n get readyToUpload () {\n return !!this.chunks\n }\n\n /**\n * Gets the progress of the chunk upload\n * - Gets all the completed chunks\n * - Gets the progress of all the chunks that are being uploaded\n */\n get progress () {\n const completedProgress = (this.chunksUploaded.length / this.chunks.length) * 100\n const uploadingProgress = this.chunksUploading.reduce((progress, chunk) => {\n return progress + ((chunk.progress | 0) / this.chunks.length)\n }, 0)\n\n return Math.min(completedProgress + uploadingProgress, 100)\n }\n\n /**\n * Gets all the chunks that are pending to be uploaded\n */\n get chunksToUpload () {\n return this.chunks.filter(chunk => {\n return !chunk.active && !chunk.uploaded\n })\n }\n\n /**\n * Whether there are chunks to upload or not\n */\n get hasChunksToUpload () {\n return this.chunksToUpload.length > 0\n }\n\n /**\n * Gets all the chunks that are uploading\n */\n get chunksUploading () {\n return this.chunks.filter(chunk => {\n return !!chunk.xhr && !!chunk.active\n })\n }\n\n /**\n * Gets all the chunks that have finished uploading\n */\n get chunksUploaded () {\n return this.chunks.filter(chunk => {\n return !!chunk.uploaded\n })\n }\n\n /**\n * Creates all the chunks in the initial state\n */\n createChunks () {\n this.chunks = []\n\n let start = 0\n let end = this.chunkSize\n while (start < this.fileSize) {\n this.chunks.push({\n blob: this.file.file.slice(start, end),\n startOffset: start,\n active: false,\n retries: this.maxRetries\n })\n start = end\n end = start + this.chunkSize\n }\n }\n\n /**\n * Updates the progress of the file with the handler's progress\n */\n updateFileProgress () {\n this.file.progress = this.progress\n }\n\n /**\n * Paues the upload process\n * - Stops all active requests\n * - Sets the file not active\n */\n pause () {\n this.file.active = false\n this.stopChunks()\n }\n\n /**\n * Stops all the current chunks\n */\n stopChunks () {\n this.chunksUploading.forEach(chunk => {\n chunk.xhr.abort()\n chunk.active = false\n })\n }\n\n /**\n * Resumes the file upload\n * - Sets the file active\n * - Starts the following chunks\n */\n resume () {\n this.file.active = true\n this.startChunking()\n }\n\n /**\n * Starts the file upload\n *\n * @returns Promise\n * - resolve The file was uploaded\n * - reject The file upload failed\n */\n upload () {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve\n this.reject = reject\n })\n this.start()\n\n return this.promise\n }\n\n /**\n * Start phase\n * Sends a request to the backend to initialise the chunks\n */\n start () {\n request({\n method: 'POST',\n headers: Object.assign({}, this.headers, {\n 'Content-Type': 'application/json'\n }),\n url: this.action,\n body: Object.assign(this.startBody, {\n phase: 'start',\n mime_type: this.fileType,\n size: this.fileSize\n })\n }).then(res => {\n if (res.status !== 'success') {\n this.file.response = res\n return this.reject('server')\n }\n\n this.sessionId = res.data.session_id\n this.chunkSize = res.data.end_offset\n\n this.createChunks()\n this.startChunking()\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n\n /**\n * Starts to upload chunks\n */\n startChunking () {\n for (let i = 0; i < this.maxActiveChunks; i++) {\n this.uploadNextChunk()\n }\n }\n\n /**\n * Uploads the next chunk\n * - Won't do anything if the process is paused\n * - Will start finish phase if there are no more chunks to upload\n */\n uploadNextChunk () {\n if (this.file.active) {\n if (this.hasChunksToUpload) {\n return this.uploadChunk(this.chunksToUpload[0])\n }\n\n if (this.chunksUploading.length === 0) {\n return this.finish()\n }\n }\n }\n\n /**\n * Uploads a chunk\n * - Sends the chunk to the backend\n * - Sets the chunk as uploaded if everything went well\n * - Decreases the number of retries if anything went wrong\n * - Fails if there are no more retries\n *\n * @param {Object} chunk\n */\n uploadChunk (chunk) {\n chunk.progress = 0\n chunk.active = true\n this.updateFileProgress()\n chunk.xhr = createRequest({\n method: 'POST',\n headers: this.headers,\n url: this.action\n })\n\n chunk.xhr.upload.addEventListener('progress', function (evt) {\n if (evt.lengthComputable) {\n chunk.progress = Math.round(evt.loaded / evt.total * 100)\n }\n }, false)\n\n sendFormRequest(chunk.xhr, Object.assign(this.uploadBody, {\n phase: 'upload',\n session_id: this.sessionId,\n start_offset: chunk.startOffset,\n chunk: chunk.blob\n })).then(res => {\n chunk.active = false\n if (res.status === 'success') {\n chunk.uploaded = true\n } else {\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n }\n\n this.uploadNextChunk()\n }).catch(() => {\n chunk.active = false\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n\n this.uploadNextChunk()\n })\n }\n\n /**\n * Finish phase\n * Sends a request to the backend to finish the process\n */\n finish () {\n this.updateFileProgress()\n\n request({\n method: 'POST',\n headers: Object.assign({}, this.headers, {\n 'Content-Type': 'application/json'\n }),\n url: this.action,\n body: Object.assign(this.finishBody, {\n phase: 'finish',\n session_id: this.sessionId\n })\n }).then(res => {\n this.file.response = res\n if (res.status !== 'success') {\n return this.reject('server')\n }\n\n this.resolve(res)\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n}\n","//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nexport default {\n methods: {\n change(e) {\n this.$destroy()\n this.$parent.addInputFile(e.target)\n // eslint-disable-next-line\n new this.constructor({\n parent: this.$parent,\n el: this.$el,\n })\n }\n }\n}\n","//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport ChunkUploadDefaultHandler from './chunk/ChunkUploadHandler'\nimport InputFile from './InputFile.vue'\n\nconst CHUNK_DEFAULT_OPTIONS = {\n headers: {},\n action: '',\n minSize: 1048576,\n maxActive: 3,\n maxRetries: 5,\n\n handler: ChunkUploadDefaultHandler\n}\n\nexport default {\n components: {\n InputFile,\n },\n props: {\n inputId: {\n type: String,\n },\n\n name: {\n type: String,\n default: 'file',\n },\n\n accept: {\n type: String,\n },\n\n capture: {\n },\n\n multiple: {\n type: Boolean,\n },\n\n maximum: {\n type: Number,\n default() {\n return this.multiple ? 0 : 1\n }\n },\n\n addIndex: {\n type: [Boolean, Number],\n },\n\n directory: {\n type: Boolean,\n },\n\n postAction: {\n type: String,\n },\n\n putAction: {\n type: String,\n },\n\n customAction: {\n type: Function,\n },\n\n headers: {\n type: Object,\n default: Object,\n },\n\n data: {\n type: Object,\n default: Object,\n },\n\n timeout: {\n type: Number,\n default: 0,\n },\n\n\n drop: {\n default: false,\n },\n\n dropDirectory: {\n type: Boolean,\n default: true,\n },\n\n size: {\n type: Number,\n default: 0,\n },\n\n extensions: {\n default: Array,\n },\n\n\n value: {\n type: Array,\n default: Array,\n },\n\n thread: {\n type: Number,\n default: 1,\n },\n\n // Chunk upload enabled\n chunkEnabled: {\n type: Boolean,\n default: false\n },\n\n // Chunk upload properties\n chunk: {\n type: Object,\n default: () => {\n return CHUNK_DEFAULT_OPTIONS\n }\n }\n },\n\n data() {\n return {\n files: this.value,\n features: {\n html5: true,\n directory: false,\n drag: false,\n },\n\n active: false,\n dropActive: false,\n\n uploading: 0,\n\n destroy: false,\n }\n },\n\n\n /**\n * mounted\n * @return {[type]} [description]\n */\n mounted() {\n let input = document.createElement('input')\n input.type = 'file'\n input.multiple = true\n\n // html5 特征\n if (window.FormData && input.files) {\n // 上传目录特征\n if (typeof input.webkitdirectory === 'boolean' || typeof input.directory === 'boolean') {\n this.features.directory = true\n }\n\n // 拖拽特征\n if (this.features.html5 && typeof input.ondrop !== 'undefined') {\n this.features.drop = true\n }\n } else {\n this.features.html5 = false\n }\n\n // files 定位缓存\n this.maps = {}\n\n this.$nextTick(function () {\n\n // 更新下父级\n if (this.$parent) {\n this.$parent.$forceUpdate()\n }\n\n // 拖拽渲染\n this.watchDrop(this.drop)\n })\n },\n\n /**\n * beforeDestroy\n * @return {[type]} [description]\n */\n beforeDestroy() {\n // 已销毁\n this.destroy = true\n\n // 设置成不激活\n this.active = false\n },\n\n computed: {\n /**\n * uploading 正在上传的线程\n * @return {[type]} [description]\n */\n\n /**\n * uploaded 文件列表是否全部已上传\n * @return {[type]} [description]\n */\n uploaded() {\n let file\n for (let i = 0; i < this.files.length; i++) {\n file = this.files[i]\n if (file.fileObject && !file.error && !file.success) {\n return false\n }\n }\n return true\n },\n\n chunkOptions () {\n return Object.assign(CHUNK_DEFAULT_OPTIONS, this.chunk)\n },\n\n className() {\n return [\n 'file-uploads',\n this.features.html5 ? 'file-uploads-html5' : 'file-uploads-html4',\n this.features.directory && this.directory ? 'file-uploads-directory' : undefined,\n this.features.drop && this.drop ? 'file-uploads-drop' : undefined,\n ]\n }\n },\n\n\n watch: {\n active(active) {\n this.watchActive(active)\n },\n\n dropActive() {\n if (this.$parent) {\n this.$parent.$forceUpdate()\n }\n },\n\n drop(value) {\n this.watchDrop(value)\n },\n\n value(files) {\n if (this.files === files) {\n return\n }\n this.files = files\n\n let oldMaps = this.maps\n\n // 重写 maps 缓存\n this.maps = {}\n for (let i = 0; i < this.files.length; i++) {\n let file = this.files[i]\n this.maps[file.id] = file\n }\n\n // add, update\n for (let key in this.maps) {\n let newFile = this.maps[key]\n let oldFile = oldMaps[key]\n if (newFile !== oldFile) {\n this.emitFile(newFile, oldFile)\n }\n }\n\n // delete\n for (let key in oldMaps) {\n if (!this.maps[key]) {\n this.emitFile(undefined, oldMaps[key])\n }\n }\n },\n },\n\n methods: {\n\n // 清空\n clear() {\n if (this.files.length) {\n let files = this.files\n this.files = []\n\n // 定位\n this.maps = {}\n\n // 事件\n this.emitInput()\n for (let i = 0; i < files.length; i++) {\n this.emitFile(undefined, files[i])\n }\n }\n return true\n },\n\n // 选择\n get(id) {\n if (!id) {\n return false\n }\n\n if (typeof id === 'object') {\n return this.maps[id.id] || false\n }\n\n return this.maps[id] || false\n },\n\n // 添加\n add(_files, index = this.addIndex) {\n let files = _files\n let isArray = files instanceof Array\n\n // 不是数组整理成数组\n if (!isArray) {\n files = [files]\n }\n\n // 遍历规范对象\n let addFiles = []\n for (let i = 0; i < files.length; i++) {\n let file = files[i]\n if (this.features.html5 && file instanceof Blob) {\n file = {\n file,\n size: file.size,\n name: file.webkitRelativePath || file.relativePath || file.name || 'unknown',\n type: file.type,\n }\n }\n let fileObject = false\n if (file.fileObject === false) {\n // false\n } else if (file.fileObject) {\n fileObject = true\n } else if (typeof Element !== 'undefined' && file.el instanceof Element) {\n fileObject = true\n } else if (typeof Blob !== 'undefined' && file.file instanceof Blob) {\n fileObject = true\n }\n if (fileObject) {\n file = {\n fileObject: true,\n size: -1,\n name: 'Filename',\n type: '',\n active: false,\n error: '',\n success: false,\n putAction: this.putAction,\n postAction: this.postAction,\n timeout: this.timeout,\n ...file,\n response: {},\n\n progress: '0.00', // 只读\n speed: 0, // 只读\n // xhr: false, // 只读\n // iframe: false, // 只读\n }\n\n file.data = {\n ...this.data,\n ...file.data ? file.data : {},\n }\n\n file.headers = {\n ...this.headers,\n ...file.headers ? file.headers : {},\n }\n }\n\n // 必须包含 id\n if (!file.id) {\n file.id = Math.random().toString(36).substr(2)\n }\n\n if (this.emitFilter(file, undefined)) {\n continue\n }\n\n // 最大数量限制\n if (this.maximum > 1 && (addFiles.length + this.files.length) >= this.maximum) {\n break\n }\n\n addFiles.push(file)\n\n // 最大数量限制\n if (this.maximum === 1) {\n break\n }\n }\n\n // 没有文件\n if (!addFiles.length) {\n return false\n }\n\n // 如果是 1 清空\n if (this.maximum === 1) {\n this.clear()\n }\n\n\n // 添加进去 files\n let newFiles\n if (index === true || index === 0) {\n newFiles = addFiles.concat(this.files)\n } else if (index) {\n newFiles = addFiles.concat([])\n newFiles.splice(index, 0, addFiles)\n } else {\n newFiles = this.files.concat(addFiles)\n }\n\n this.files = newFiles\n\n // 定位\n for (let i = 0; i < addFiles.length; i++) {\n let file = addFiles[i]\n this.maps[file.id] = file\n }\n\n // 事件\n this.emitInput()\n for (let i = 0; i < addFiles.length; i++) {\n this.emitFile(addFiles[i], undefined)\n }\n\n return isArray ? addFiles : addFiles[0]\n },\n\n\n\n // 添加表单文件\n addInputFile(el) {\n let files = []\n if (el.files) {\n for (let i = 0; i < el.files.length; i++) {\n let file = el.files[i]\n files.push({\n size: file.size,\n name: file.webkitRelativePath || file.relativePath || file.name,\n type: file.type,\n file,\n el\n })\n }\n } else {\n files.push({\n name: el.value.replace(/^.*?([^\\/\\\\\\r\\n]+)$/, '$1'),\n el,\n })\n }\n return this.add(files)\n },\n\n\n // 添加 DataTransfer\n addDataTransfer(dataTransfer) {\n let files = []\n if (dataTransfer.items && dataTransfer.items.length) {\n let items = []\n for (let i = 0; i < dataTransfer.items.length; i++) {\n let item = dataTransfer.items[i]\n if (item.getAsEntry) {\n item = item.getAsEntry() || item.getAsFile()\n } else if (item.webkitGetAsEntry) {\n item = item.webkitGetAsEntry() || item.getAsFile()\n } else {\n item = item.getAsFile()\n }\n if (item) {\n items.push(item)\n }\n }\n\n return new Promise((resolve, reject) => {\n let forEach = (i) => {\n let item = items[i]\n // 结束 文件数量大于 最大数量\n if (!item || (this.maximum > 0 && files.length >= this.maximum)) {\n return resolve(this.add(files))\n }\n this.getEntry(item).then(function (results) {\n files.push(...results)\n forEach(i + 1)\n })\n }\n forEach(0)\n })\n }\n\n if (dataTransfer.files.length) {\n for (let i = 0; i < dataTransfer.files.length; i++) {\n files.push(dataTransfer.files[i])\n if (this.maximum > 0 && files.length >= this.maximum) {\n break\n }\n }\n return Promise.resolve(this.add(files))\n }\n\n return Promise.resolve([])\n },\n\n\n // 获得 entry\n getEntry(entry, path = '') {\n return new Promise((resolve, reject) => {\n if (entry.isFile) {\n entry.file(function (file) {\n resolve([\n {\n size: file.size,\n name: path + file.name,\n type: file.type,\n file,\n }\n ])\n })\n } else if (entry.isDirectory && this.dropDirectory) {\n let files = []\n let dirReader = entry.createReader()\n let readEntries = () => {\n dirReader.readEntries((entries) => {\n let forEach = (i) => {\n if ((!entries[i] && i === 0) || (this.maximum > 0 && files.length >= this.maximum)) {\n return resolve(files)\n }\n if (!entries[i]) {\n return readEntries()\n }\n this.getEntry(entries[i], path + entry.name + '/').then((results) => {\n files.push(...results)\n forEach(i + 1)\n })\n }\n forEach(0)\n })\n }\n readEntries()\n } else {\n resolve([])\n }\n })\n },\n\n\n replace(id1, id2) {\n let file1 = this.get(id1)\n let file2 = this.get(id2)\n if (!file1 || !file2 || file1 === file2) {\n return false\n }\n let files = this.files.concat([])\n let index1 = files.indexOf(file1)\n let index2 = files.indexOf(file2)\n if (index1 === -1 || index2 === -1) {\n return false\n }\n files[index1] = file2\n files[index2] = file1\n this.files = files\n this.emitInput()\n return true\n },\n\n // 移除\n remove(id) {\n let file = this.get(id)\n if (file) {\n if (this.emitFilter(undefined, file)) {\n return false\n }\n let files = this.files.concat([])\n let index = files.indexOf(file)\n if (index === -1) {\n console.error('remove', file)\n return false\n }\n files.splice(index, 1)\n this.files = files\n\n // 定位\n delete this.maps[file.id]\n\n // 事件\n this.emitInput()\n this.emitFile(undefined, file)\n }\n return file\n },\n\n // 更新\n update(id, data) {\n let file = this.get(id)\n if (file) {\n let newFile = {\n ...file,\n ...data\n }\n // 停用必须加上错误\n if (file.fileObject && file.active && !newFile.active && !newFile.error && !newFile.success) {\n newFile.error = 'abort'\n }\n\n if (this.emitFilter(newFile, file)) {\n return false\n }\n\n let files = this.files.concat([])\n let index = files.indexOf(file)\n if (index === -1) {\n console.error('update', file)\n return false\n }\n files.splice(index, 1, newFile)\n this.files = files\n\n // 删除 旧定位 写入 新定位 (已便支持修改id)\n delete this.maps[file.id]\n this.maps[newFile.id] = newFile\n\n // 事件\n this.emitInput()\n this.emitFile(newFile, file)\n return newFile\n }\n return false\n },\n\n\n\n // 预处理 事件 过滤器\n emitFilter(newFile, oldFile) {\n let isPrevent = false\n this.$emit('input-filter', newFile, oldFile, function () {\n isPrevent = true\n return isPrevent\n })\n return isPrevent\n },\n\n // 处理后 事件 分发\n emitFile(newFile, oldFile) {\n this.$emit('input-file', newFile, oldFile)\n if (newFile && newFile.fileObject && newFile.active && (!oldFile || !oldFile.active)) {\n this.uploading++\n // 激活\n this.$nextTick(function () {\n setTimeout(() => {\n this.upload(newFile).then(() => {\n // eslint-disable-next-line\n newFile = this.get(newFile)\n if (newFile && newFile.fileObject) {\n this.update(newFile, {\n active: false,\n success: !newFile.error\n })\n }\n }).catch((e) => {\n this.update(newFile, {\n active: false,\n success: false,\n error: e.code || e.error || e.message || e\n })\n })\n }, parseInt(Math.random() * 50 + 50, 10))\n })\n } else if ((!newFile || !newFile.fileObject || !newFile.active) && oldFile && oldFile.fileObject && oldFile.active) {\n // 停止\n this.uploading--\n }\n\n // 自动延续激活\n if (this.active && (Boolean(newFile) !== Boolean(oldFile) || newFile.active !== oldFile.active)) {\n this.watchActive(true)\n }\n },\n\n emitInput() {\n this.$emit('input', this.files)\n },\n\n\n // 上传\n upload(id) {\n let file = this.get(id)\n\n // 被删除\n if (!file) {\n return Promise.reject('not_exists')\n }\n\n // 不是文件对象\n if (!file.fileObject) {\n return Promise.reject('file_object')\n }\n\n // 有错误直接响应\n if (file.error) {\n return Promise.reject(file.error)\n }\n\n // 已完成直接响应\n if (file.success) {\n return Promise.resolve(file)\n }\n\n // 后缀\n let extensions = this.extensions\n if (extensions && (extensions.length || typeof extensions.length === 'undefined')) {\n if (typeof extensions !== 'object' || !(extensions instanceof RegExp)) {\n if (typeof extensions === 'string') {\n extensions = extensions.split(',').map(value => value.trim()).filter(value => value)\n }\n extensions = new RegExp('\\\\.(' + extensions.join('|').replace(/\\./g, '\\\\.') + ')$', 'i')\n }\n if (file.name.search(extensions) === -1) {\n return Promise.reject('extension')\n }\n }\n\n // 大小\n if (this.size > 0 && file.size >= 0 && file.size > this.size) {\n return Promise.reject('size')\n }\n\n if (this.customAction) {\n return this.customAction(file, this)\n }\n\n if (this.features.html5) {\n if (this.shouldUseChunkUpload(file)) {\n return this.uploadChunk(file)\n }\n if (file.putAction) {\n return this.uploadPut(file)\n }\n if (file.postAction) {\n return this.uploadHtml5(file)\n }\n }\n if (file.postAction) {\n return this.uploadHtml4(file)\n }\n return Promise.reject('No action configured')\n },\n\n /**\n * Whether this file should be uploaded using chunk upload or not\n *\n * @param Object file\n */\n shouldUseChunkUpload (file) {\n return this.chunkEnabled &&\n !!this.chunkOptions.handler &&\n file.size > this.chunkOptions.minSize\n },\n\n /**\n * Upload a file using Chunk method\n *\n * @param File file\n */\n uploadChunk (file) {\n const HandlerClass = this.chunkOptions.handler\n file.chunk = new HandlerClass(file, this.chunkOptions)\n\n return file.chunk.upload()\n },\n\n uploadPut(file) {\n let querys = []\n let value\n for (let key in file.data) {\n value = file.data[key]\n if (value !== null && value !== undefined) {\n querys.push(encodeURIComponent(key) + '=' + encodeURIComponent(value))\n }\n }\n let queryString = querys.length ? (file.putAction.indexOf('?') === -1 ? '?' : '&') + querys.join('&') : ''\n let xhr = new XMLHttpRequest()\n xhr.open('PUT', file.putAction + queryString)\n return this.uploadXhr(xhr, file, file.file)\n },\n\n uploadHtml5(file) {\n let form = new window.FormData()\n let value\n for (let key in file.data) {\n value = file.data[key]\n if (value && typeof value === 'object' && typeof value.toString !== 'function') {\n if (value instanceof File) {\n form.append(key, value, value.name)\n } else {\n form.append(key, JSON.stringify(value))\n }\n } else if (value !== null && value !== undefined) {\n form.append(key, value)\n }\n }\n form.append(this.name, file.file, file.file.filename || file.name)\n let xhr = new XMLHttpRequest()\n xhr.open('POST', file.postAction)\n return this.uploadXhr(xhr, file, form)\n },\n\n uploadXhr(xhr, _file, body) {\n let file = _file\n let speedTime = 0\n let speedLoaded = 0\n\n // 进度条\n xhr.upload.onprogress = (e) => {\n // 还未开始上传 已删除 未激活\n file = this.get(file)\n if (!e.lengthComputable || !file || !file.fileObject || !file.active) {\n return\n }\n\n // 进度 速度 每秒更新一次\n let speedTime2 = Math.round(Date.now() / 1000)\n if (speedTime2 === speedTime) {\n return\n }\n speedTime = speedTime2\n\n file = this.update(file, {\n progress: (e.loaded / e.total * 100).toFixed(2),\n speed: e.loaded - speedLoaded,\n })\n speedLoaded = e.loaded\n }\n\n // 检查激活状态\n let interval = setInterval(() => {\n file = this.get(file)\n if (file && file.fileObject && !file.success && !file.error && file.active) {\n return\n }\n\n if (interval) {\n clearInterval(interval)\n interval = false\n }\n\n try {\n xhr.abort()\n xhr.timeout = 1\n } catch (e) {\n }\n }, 100)\n\n return new Promise((resolve, reject) => {\n let complete\n let fn = (e) => {\n // 已经处理过了\n if (complete) {\n return\n }\n complete = true\n if (interval) {\n clearInterval(interval)\n interval = false\n }\n\n file = this.get(file)\n\n // 不存在直接响应\n if (!file) {\n return reject('not_exists')\n }\n\n // 不是文件对象\n if (!file.fileObject) {\n return reject('file_object')\n }\n\n // 有错误自动响应\n if (file.error) {\n return reject(file.error)\n }\n\n // 未激活\n if (!file.active) {\n return reject('abort')\n }\n\n\n // 已完成 直接相应\n if (file.success) {\n return resolve(file)\n }\n\n let data = {}\n\n switch (e.type) {\n case 'timeout':\n case 'abort':\n data.error = e.type\n break\n case 'error':\n if (!xhr.status) {\n data.error = 'network'\n } else if (xhr.status >= 500) {\n data.error = 'server'\n } else if (xhr.status >= 400) {\n data.error = 'denied'\n }\n break\n default:\n if (xhr.status >= 500) {\n data.error = 'server'\n } else if (xhr.status >= 400) {\n data.error = 'denied'\n } else {\n data.progress = '100.00'\n }\n }\n\n if (xhr.responseText) {\n let contentType = xhr.getResponseHeader('Content-Type')\n if (contentType && contentType.indexOf('/json') !== -1) {\n data.response = JSON.parse(xhr.responseText)\n } else {\n data.response = xhr.responseText\n }\n }\n\n // 更新\n file = this.update(file, data)\n\n // 相应错误\n if (file.error) {\n return reject(file.error)\n }\n\n // 响应\n return resolve(file)\n }\n\n // 事件\n xhr.onload = fn\n xhr.onerror = fn\n xhr.onabort = fn\n xhr.ontimeout = fn\n\n // 超时\n if (file.timeout) {\n xhr.timeout = file.timeout\n }\n\n // headers\n for (let key in file.headers) {\n xhr.setRequestHeader(key, file.headers[key])\n }\n\n // 更新 xhr\n file = this.update(file, { xhr })\n\n // 开始上传\n xhr.send(body)\n })\n },\n\n\n\n\n uploadHtml4(_file) {\n let file = _file\n let onKeydown = function (e) {\n if (e.keyCode === 27) {\n e.preventDefault()\n }\n }\n\n let iframe = document.createElement('iframe')\n iframe.id = 'upload-iframe-' + file.id\n iframe.name = 'upload-iframe-' + file.id\n iframe.src = 'about:blank'\n iframe.setAttribute('style', 'width:1px;height:1px;top:-999em;position:absolute; margin-top:-999em;')\n\n\n let form = document.createElement('form')\n\n form.action = file.postAction\n\n form.name = 'upload-form-' + file.id\n\n\n form.setAttribute('method', 'POST')\n form.setAttribute('target', 'upload-iframe-' + file.id)\n form.setAttribute('enctype', 'multipart/form-data')\n\n let value\n let input\n for (let key in file.data) {\n value = file.data[key]\n if (value && typeof value === 'object' && typeof value.toString !== 'function') {\n value = JSON.stringify(value)\n }\n if (value !== null && value !== undefined) {\n input = document.createElement('input')\n input.type = 'hidden'\n input.name = key\n input.value = value\n form.appendChild(input)\n }\n }\n form.appendChild(file.el)\n\n document.body.appendChild(iframe).appendChild(form)\n\n\n\n\n let getResponseData = function () {\n let doc\n try {\n if (iframe.contentWindow) {\n doc = iframe.contentWindow.document\n }\n } catch (err) {\n }\n if (!doc) {\n try {\n doc = iframe.contentDocument ? iframe.contentDocument : iframe.document\n } catch (err) {\n doc = iframe.document\n }\n }\n if (doc && doc.body) {\n return doc.body.innerHTML\n }\n return null\n }\n\n\n return new Promise((resolve, reject) => {\n setTimeout(() => {\n file = this.update(file, { iframe })\n\n // 不存在\n if (!file) {\n return reject('not_exists')\n }\n\n // 定时检查\n let interval = setInterval(() => {\n file = this.get(file)\n if (file && file.fileObject && !file.success && !file.error && file.active) {\n return\n }\n\n if (interval) {\n clearInterval(interval)\n interval = false\n }\n\n iframe.onabort({ type: file ? 'abort' : 'not_exists' })\n }, 100)\n\n\n let complete\n let fn = (e) => {\n // 已经处理过了\n if (complete) {\n return\n }\n complete = true\n\n\n if (interval) {\n clearInterval(interval)\n interval = false\n }\n\n // 关闭 esc 事件\n document.body.removeEventListener('keydown', onKeydown)\n\n file = this.get(file)\n\n // 不存在直接响应\n if (!file) {\n return reject('not_exists')\n }\n\n // 不是文件对象\n if (!file.fileObject) {\n return reject('file_object')\n }\n\n // 有错误自动响应\n if (file.error) {\n return reject(file.error)\n }\n\n // 未激活\n if (!file.active) {\n return reject('abort')\n }\n\n // 已完成 直接相应\n if (file.success) {\n return resolve(file)\n }\n\n let response = getResponseData()\n let data = {}\n switch (e.type) {\n case 'abort':\n data.error = 'abort'\n break\n case 'error':\n if (file.error) {\n data.error = file.error\n } else if (response === null) {\n data.error = 'network'\n } else {\n data.error = 'denied'\n }\n break\n default:\n if (file.error) {\n data.error = file.error\n } else if (data === null) {\n data.error = 'network'\n } else {\n data.progress = '100.00'\n }\n }\n\n if (response !== null) {\n if (response && response.substr(0, 1) === '{' && response.substr(response.length - 1, 1) === '}') {\n try {\n response = JSON.parse(response)\n } catch (err) {\n }\n }\n data.response = response\n }\n\n // 更新\n file = this.update(file, data)\n\n if (file.error) {\n return reject(file.error)\n }\n\n // 响应\n return resolve(file)\n }\n\n\n // 添加事件\n iframe.onload = fn\n iframe.onerror = fn\n iframe.onabort = fn\n\n\n // 禁止 esc 键\n document.body.addEventListener('keydown', onKeydown)\n\n // 提交\n form.submit()\n }, 50)\n }).then(function (res) {\n iframe.parentNode && iframe.parentNode.removeChild(iframe)\n return res\n }).catch(function (res) {\n iframe.parentNode && iframe.parentNode.removeChild(iframe)\n return res\n })\n },\n\n\n\n watchActive(active) {\n let file\n let index = 0\n while ((file = this.files[index])) {\n index++\n if (!file.fileObject) {\n // 不是文件对象\n } else if (active && !this.destroy) {\n if (this.uploading >= this.thread || (this.uploading && !this.features.html5)) {\n break\n }\n if (!file.active && !file.error && !file.success) {\n this.update(file, { active: true })\n }\n } else {\n if (file.active) {\n this.update(file, { active: false })\n }\n }\n }\n if (this.uploading === 0) {\n this.active = false\n }\n },\n\n\n watchDrop(_el) {\n let el = _el\n if (!this.features.drop) {\n return\n }\n\n // 移除挂载\n if (this.dropElement) {\n try {\n document.removeEventListener('dragenter', this.onDragenter, false)\n document.removeEventListener('dragleave', this.onDragleave, false)\n document.removeEventListener('drop', this.onDocumentDrop, false)\n this.dropElement.removeEventListener('dragover', this.onDragover, false)\n this.dropElement.removeEventListener('drop', this.onDrop, false)\n } catch (e) {\n }\n }\n\n if (!el) {\n el = false\n } else if (typeof el === 'string') {\n el = document.querySelector(el) || this.$root.$el.querySelector(el)\n } else if (el === true) {\n el = this.$parent.$el\n }\n\n this.dropElement = el\n\n if (this.dropElement) {\n document.addEventListener('dragenter', this.onDragenter, false)\n document.addEventListener('dragleave', this.onDragleave, false)\n document.addEventListener('drop', this.onDocumentDrop, false)\n this.dropElement.addEventListener('dragover', this.onDragover, false)\n this.dropElement.addEventListener('drop', this.onDrop, false)\n }\n },\n\n\n onDragenter(e) {\n e.preventDefault()\n if (!this.dropActive) {\n this.dropActive = true\n }\n },\n\n onDragleave(e) {\n e.preventDefault()\n if (e.target.nodeName === 'HTML' || e.target === e.explicitOriginalTarget || (e.screenX === 0 && e.screenY === 0 && !e.fromElement && e.offsetX <= 0)) {\n this.dropActive = false\n }\n },\n\n onDragover(e) {\n e.preventDefault()\n },\n\n onDocumentDrop() {\n this.dropActive = false\n },\n\n onDrop(e) {\n e.preventDefault()\n this.addDataTransfer(e.dataTransfer)\n },\n }\n}\n","module.exports = require('./FileUpload.vue')\n"],"names":["createRequest","options","xhr","XMLHttpRequest","open","method","url","responseType","headers","Object","keys","forEach","setRequestHeader","key","sendRequest","body","Promise","resolve","reject","onload","status","response","JSON","parse","err","onerror","send","stringify","sendFormRequest","data","FormData","name","append","ChunkUploadHandler","file","chunks","start","end","chunkSize","fileSize","push","blob","slice","startOffset","active","retries","maxRetries","progress","stopChunks","chunksUploading","chunk","abort","startChunking","promise","request","assign","action","startBody","phase","mime_type","fileType","size","then","res","sessionId","session_id","end_offset","createChunks","catch","i","maxActiveChunks","uploadNextChunk","hasChunksToUpload","uploadChunk","chunksToUpload","length","finish","updateFileProgress","upload","addEventListener","evt","lengthComputable","Math","round","loaded","total","uploadBody","start_offset","uploaded","finishBody","parseInt","maxActive","type","completedProgress","chunksUploaded","uploadingProgress","reduce","min","filter","methods","change","e","$destroy","$parent","addInputFile","target","constructor","parent","el","$el","CHUNK_DEFAULT_OPTIONS","minSize","handler","ChunkUploadDefaultHandler","components","InputFile","props","inputId","String","default","accept","capture","multiple","Boolean","maximum","Number","addIndex","directory","postAction","putAction","customAction","Function","timeout","drop","dropDirectory","extensions","Array","value","thread","chunkEnabled","files","features","html5","drag","dropActive","uploading","destroy","mounted","input","document","createElement","window","webkitdirectory","ondrop","maps","$nextTick","$forceUpdate","watchDrop","beforeDestroy","computed","fileObject","error","success","chunkOptions","className","undefined","watch","watchActive","oldMaps","id","newFile","oldFile","emitFile","clear","emitInput","get","add","_files","index","isArray","addFiles","Blob","webkitRelativePath","relativePath","Element","speed","random","toString","substr","emitFilter","newFiles","concat","splice","replace","addDataTransfer","dataTransfer","items","item","getAsEntry","getAsFile","webkitGetAsEntry","getEntry","results","entry","path","isFile","isDirectory","dirReader","createReader","readEntries","entries","id1","id2","file1","file2","index1","indexOf","index2","remove","console","update","isPrevent","$emit","setTimeout","code","message","RegExp","split","map","trim","join","search","shouldUseChunkUpload","uploadPut","uploadHtml5","uploadHtml4","HandlerClass","querys","encodeURIComponent","queryString","uploadXhr","form","File","filename","_file","speedTime","speedLoaded","onprogress","speedTime2","Date","now","toFixed","interval","setInterval","clearInterval","complete","fn","responseText","contentType","getResponseHeader","onabort","ontimeout","onKeydown","keyCode","preventDefault","iframe","src","setAttribute","appendChild","getResponseData","doc","contentWindow","contentDocument","innerHTML","removeEventListener","submit","parentNode","removeChild","_el","dropElement","onDragenter","onDragleave","onDocumentDrop","onDragover","onDrop","querySelector","$root","nodeName","explicitOriginalTarget","screenX","screenY","fromElement","offsetX","require$$0"],"mappings":"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"} \ No newline at end of file diff --git a/docs/dist/index.js b/docs/dist/index.js index 3465964..bce2bd8 100644 --- a/docs/dist/index.js +++ b/docs/dist/index.js @@ -1,5588 +1,6 @@ /*! * Name: vue-upload-component - * Version: 2.8.6 + * Version: 2.8.7 * Author: LianYue - */ -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = "/dist"; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 21); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports) { - -/* globals __VUE_SSR_CONTEXT__ */ - -// IMPORTANT: Do NOT use ES2015 features in this file. -// This module is a runtime utility for cleaner component module output and will -// be included in the final webpack user bundle. - -module.exports = function normalizeComponent ( - rawScriptExports, - compiledTemplate, - functionalTemplate, - injectStyles, - scopeId, - moduleIdentifier /* server only */ -) { - var esModule - var scriptExports = rawScriptExports = rawScriptExports || {} - - // ES6 modules interop - var type = typeof rawScriptExports.default - if (type === 'object' || type === 'function') { - esModule = rawScriptExports - scriptExports = rawScriptExports.default - } - - // Vue.extend constructor export interop - var options = typeof scriptExports === 'function' - ? scriptExports.options - : scriptExports - - // render functions - if (compiledTemplate) { - options.render = compiledTemplate.render - options.staticRenderFns = compiledTemplate.staticRenderFns - options._compiled = true - } - - // functional template - if (functionalTemplate) { - options.functional = true - } - - // scopedId - if (scopeId) { - options._scopeId = scopeId - } - - var hook - if (moduleIdentifier) { // server build - hook = function (context) { - // 2.3 injection - context = - context || // cached call - (this.$vnode && this.$vnode.ssrContext) || // stateful - (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional - // 2.2 with runInNewContext: true - if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') { - context = __VUE_SSR_CONTEXT__ - } - // inject component styles - if (injectStyles) { - injectStyles.call(this, context) - } - // register component module identifier for async chunk inferrence - if (context && context._registeredComponents) { - context._registeredComponents.add(moduleIdentifier) - } - } - // used by ssr in case component is cached and beforeCreate - // never gets called - options._ssrRegister = hook - } else if (injectStyles) { - hook = injectStyles - } - - if (hook) { - var functional = options.functional - var existing = functional - ? options.render - : options.beforeCreate - - if (!functional) { - // inject component registration as beforeCreate hook - options.beforeCreate = existing - ? [].concat(existing, hook) - : [hook] - } else { - // for template-only hot-reload because in that case the render fn doesn't - // go through the normalizer - options._injectStyles = hook - // register for functioal component in vue file - options.render = function renderWithStyleInjection (h, context) { - hook.call(context) - return existing(h, context) - } - } - } - - return { - esModule: esModule, - exports: scriptExports, - options: options - } -} - - -/***/ }), -/* 1 */ -/***/ (function(module, exports) { - -/* - MIT License http://www.opensource.org/licenses/mit-license.php - Author Tobias Koppers @sokra -*/ -// css base code, injected by the css-loader -module.exports = function (useSourceMap) { - var list = []; - - // return the list of modules as css string - list.toString = function toString() { - return this.map(function (item) { - var content = cssWithMappingToString(item, useSourceMap); - if (item[2]) { - return "@media " + item[2] + "{" + content + "}"; - } else { - return content; - } - }).join(""); - }; - - // import a list of modules into the list - list.i = function (modules, mediaQuery) { - if (typeof modules === "string") modules = [[null, modules, ""]]; - var alreadyImportedModules = {}; - for (var i = 0; i < this.length; i++) { - var id = this[i][0]; - if (typeof id === "number") alreadyImportedModules[id] = true; - } - for (i = 0; i < modules.length; i++) { - var item = modules[i]; - // skip already imported module - // this implementation is not 100% perfect for weird media query combinations - // when a module is imported multiple times with different media queries. - // I hope this will never occur (Hey this way we have smaller bundles) - if (typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) { - if (mediaQuery && !item[2]) { - item[2] = mediaQuery; - } else if (mediaQuery) { - item[2] = "(" + item[2] + ") and (" + mediaQuery + ")"; - } - list.push(item); - } - } - }; - return list; -}; - -function cssWithMappingToString(item, useSourceMap) { - var content = item[1] || ''; - var cssMapping = item[3]; - if (!cssMapping) { - return content; - } - - if (useSourceMap && typeof btoa === 'function') { - var sourceMapping = toComment(cssMapping); - var sourceURLs = cssMapping.sources.map(function (source) { - return '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'; - }); - - return [content].concat(sourceURLs).concat([sourceMapping]).join('\n'); - } - - return [content].join('\n'); -} - -// Adapted from convert-source-map (MIT) -function toComment(sourceMap) { - // eslint-disable-next-line no-undef - var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))); - var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64; - - return '/*# ' + data + ' */'; -} - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - -/* - MIT License http://www.opensource.org/licenses/mit-license.php - Author Tobias Koppers @sokra - Modified by Evan You @yyx990803 -*/ - -var hasDocument = typeof document !== 'undefined' - -if (typeof DEBUG !== 'undefined' && DEBUG) { - if (!hasDocument) { - throw new Error( - 'vue-style-loader cannot be used in a non-browser environment. ' + - "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment." - ) } -} - -var listToStyles = __webpack_require__(36) - -/* -type StyleObject = { - id: number; - parts: Array -} - -type StyleObjectPart = { - css: string; - media: string; - sourceMap: ?string -} -*/ - -var stylesInDom = {/* - [id: number]: { - id: number, - refs: number, - parts: Array<(obj?: StyleObjectPart) => void> - } -*/} - -var head = hasDocument && (document.head || document.getElementsByTagName('head')[0]) -var singletonElement = null -var singletonCounter = 0 -var isProduction = false -var noop = function () {} -var options = null -var ssrIdKey = 'data-vue-ssr-id' - -// Force single-tag solution on IE6-9, which has a hard limit on the # of \n\n```\n\n\n** OR **\n\n\n```js\nimport FileUpload from 'vue-upload-component/src'\n```\n\n\nwebpack.config.js\n\n```js\nconst nodeExternals = require('webpack-node-externals');\n{\n //.....\n externals: [\n nodeExternals({whitelist:[/^vue-upload-component\\/src/]})\n ]\n //.....\n}\n```\n\n* [https://github.com/liady/webpack-node-externals](https://github.com/liady/webpack-node-externals)\n\n* [**`vue-hackernews` demo**](https://github.com/lian-yue/vue-hackernews-2.0/)\n\n* [**View changes**](https://github.com/lian-yue/vue-hackernews-2.0/commit/bd6c58a30cc6b8ba6c0148e737b3ce9336b99cf8)\n\n\n\n\n## Options / Props\n\n\n### input-id\n\nThe `id` attribute of the input tag\n\n* **Type:** `String`\n\n* **Default:** `this.name`\n\n* **Usage:**\n ```html\n \n \n \n ```\n\n\n\n\n\n### name\n\nThe `name` attribute of the input tag\n\n* **Type:** `String`\n\n* **Default:** `file`\n\n* **Usage:**\n ```html\n \n \n \n ```\n\n\n\n\n\n### post-action\n\n`POST` Request upload URL\n\n* **Type:** `String`\n\n* **Default:** `undefined`\n\n* **Usage:**\n ```html\n \n ```\n\n\n\n\n\n### put-action\n\n`PUT` Request upload URL\n\n* **Type:** `String`\n\n* **Default:** `undefined`\n\n* **Browser:** `> IE9`\n\n* **Details:**\n\n `put-action` is not empty Please give priority to` PUT` request\n\n* **Usage:**\n ```html\n \n ```\n\n\n\n### custom-action\n\nCustom upload method\n\n* **Type:** `async Function`\n\n* **Default:** `undefined`\n\n* **Details:** \n\n `custom-action` priority than `put-action, post-action`\n\n* **Usage:**\n ```html\n \n ```\n ```js\n async function customAction(file, component) {\n // return await component.uploadPut(file)\n return await component.uploadHtml4(file)\n }\n ```\n\n\n\n\n\n### headers\n\nAttach `header` data\n\n* **Type:** `Object`\n\n* **Default:** `{}`\n\n* **Browser:** `> IE9`\n\n* **Usage:**\n ```html\n \n ```\n\n\n\n\n\n### data\n\n`POST request`: Append request `body`\n`PUT request`: Append request `query`\n\n* **Type:** `Object`\n\n* **Default:** `{}`\n\n* **Usage:**\n ```html\n \n ```\n\n\n\n\n### value, v-model\n\nFile List\n\n* **Type:** `Array`\n\n* **Default:** `[]`\n\n* **Details:**\n\n View **[`File`](#file)** details\n > In order to prevent unpredictable errors, can not directly modify the `files`, please use [`add`](#instance-methods-add), [`update`](#instance-methods-update), [`remove`](#instance-methods-remove) method to modify\n\n* **Usage:**\n ```html\n \n \n \n ```\n\n\n\n\n\n### accept\n\nThe `accept` attribute of the input tag, MIME type\n\n* **Type:** `String`\n\n* **Default:** `undefined`\n\n* **Browser:** `> IE9`\n\n* **Usage:**\n ```html\n \n \n \n ```\n\n\n\n\n\n### multiple\n\nThe `multiple` attribute of the input tag\nWhether to allow multiple files to be selected\n\n* **Type:** `Boolean`\n\n* **Default:** `false`\n\n* **Details:**\n\n If it is `false` file inside only one file will be automatically deleted\n\n* **Usage:**\n ```html\n \n ```\n\n\n\n### directory\n\nThe `directory` attribute of the input tag\nWhether it is a upload folder\n\n* **Type:** `Boolean`\n\n* **Default:** `false`\n\n* **Browser:** [http://caniuse.com/#feat=input-file-directory](http://caniuse.com/#feat=input-file-directory)\n\n* **Usage:**\n ```html\n \n ```\n\n\n\n\n\n### extensions\n\nAllow upload file extensions\n\n* **Type:** `Array | String | RegExp`\n\n* **Default:** `undefined`\n\n* **Usage:**\n ```html\n \n \n \n \n \n ```\n\n\n\n\n### size\n\nAllow the maximum byte to upload\n\n* **Type:** `Number`\n\n* **Default:** `0`\n\n* **Browser:** `> IE9`\n\n* **Details:**\n\n `0` is equal to not limit\n\n* **Usage:**\n ```html\n \n ```\n\n\n\n\n### timeout\n\nUpload timeout time in milliseconds\n\n* **Type:** `Number`\n\n* **Default:** `0`\n\n* **Browser:** `> IE9`\n\n* **Usage:**\n ```html\n \n ```\n\n### maximum\n\nList the maximum number of files\n\n* **Type:** `Number`\n\n* **Default:** `props.multiple ? 0 : 1`\n\n* **Usage:**\n ```html\n \n ```\n\n\n\n### thread\n\nAlso upload the number of files at the same time (number of threads)\n\n* **Type:** `Number`\n\n* **Default:** `1`\n\n* **Browser:** `> IE9`\n\n* **Usage:**\n ```html\n \n ```\n\n### chunk-enabled\n\nWhether chunk uploads is enabled or not\n\n* **Type:** `Boolean`\n\n* **Default:** `false`\n\n* **Usage:**\n ```html\n \n \n ```\n\n### chunk\n\nAll the options to handle chunk uploads\n\n* **Type:** `Object`\n\n* **Default:**\n```js\n{\n headers: {\n 'Content-Type': 'application/json'\n },\n action: '',\n minSize: 1048576,\n maxActive: 3,\n maxRetries: 5,\n\n // This is the default Handler implemented in this package\n // you can use your own handler if your protocol is different\n handler: ChunkUploadDefaultHandler\n}\n```\n\n### drop\n\nDrag and drop upload\n\n* **Type:** `Boolean | Element | CSS selector`\n\n* **Default:** `false`\n\n* **Browser:** [http://caniuse.com/#feat=dragndrop](http://caniuse.com/#feat=dragndrop)\n\n* **Details:**\n\n If set to `true`, read the parent component as a container\n\n* **Usage:**\n ```html\n \n ```\n\n\n\n\n\n### drop-directory\n\nWhether to open the drag directory\n\n* **Type:** `Boolean`\n\n* **Default:** `true`\n\n* **Details:**\n\n If set to `false` filter out the directory\n\n* **Usage:**\n ```html\n \n ```\n\n\n\n### add-index\n\n* **Type:** `Boolean, Number`\n\n* **Default:** `undefined`\n\n* **Version:** : `>=2.6.1`\n\n* **Details:**\n\n The default value of the `index` parameter for the [`add()`](#instance-methods-add) method\n\n* **Usage:**\n ```html\n \n ```\n\n\n\n\n## Options / Events\n\nThe files is changed to trigger the method\nDefault for `v-model` binding\n\n### @input\n* **Arguments:**\n\n * `files: Array`\n\n\n* **Usage:**\n ```html\n \n \n ```\n\n\n\n### @input-filter\n\nAdd, update, remove pre-filter\n\n* **Arguments:**\n\n * `newFile: File | Object | undefined` `Read and write`\n * `oldFile: File | Object | undefined` `Read only`\n * `prevent: Function` Call this function to prevent modification\n\n\n* **Details:**\n\n If the `newFile` value is `undefined` 'is deleted\n If the `oldFile` value is `undefined` 'is added\n If `newFile`, `oldFile` is exist, it is updated\n\n > Synchronization modify `newFile`\n > Asynchronous Please use `update`,` add`, `remove`,` clear` method\n > Asynchronous Please set an error first to prevent being uploaded\n\n > Synchronization can not use `update`,` add`, `remove`,` clear` methods\n > Asynchronous can not modify `newFile`\n\n* **Usage:**\n ```html\n \n \n ```\n\n### @input-file\n\nAdd, update, remove after\n\n* **Arguments:**\n\n * `newFile: File | Object | undefined` `Read only`\n * `oldFile: File | Object | undefined` `Read only`\n\n\n* **Details:**\n\n If the `newFile` value is `undefined` 'is deleted\n If the `oldFile` value is `undefined` 'is added\n If `newFile`, `oldFile` is exist, it is updated\n\n\n >You can use `update`,` add`, `remove`,` clear` methods in the event\n >You can not modify the `newFile` object in the event\n >You can not modify the `oldFile` object in the event\n\n* **Usage:**\n ```html\n \n \n ```\n\n\n\n## Instance / Data\n\n### features\n\nUsed to determine the browser support features\n\n* **Type:** `Object`\n\n* **Read only:** `true`\n\n* **Default:** `{ html5: true, directory: false, drag: false }`\n\n* **Usage:**\n ```html\n \n \n Support drag and drop upload\n Support folder upload\n Support for HTML5\n \n ```\n\n\n\n### active\n\nActivation or abort upload\n\n* **Type:** `Boolean`\n\n* **Read only:** `false`\n\n* **Default:** `false`\n\n* **Usage:**\n ```html\n \n \n Start upload\n Stop upload\n \n ```\n\n\n\n### dropActive\n\nIs dragging\n\n* **Type:** `Boolean`\n\n* **Read only:** `true`\n\n* **Default:** `false`\n\n* **Usage:**\n ```html\n \n \n Drag and drop here for upload\n \n ```\n\n\n\n\n\n### uploaded\n\nAll uploaded\n\n* **Type:** `Boolean`\n\n* **Read only:** `true`\n\n* **Default:** `true`\n\n* **Usage:**\n ```html\n \n \n All files have been uploaded\n \n ```\n\n\n\n\n\n## Instance / Methods\n\n\n\n### get()\n\nUse `id` to get a file object\n\n* **Arguments:**\n\n * `id: File | Object | String`\n\n\n* **Result:** `File | Object | Boolean` There is a return file, object that otherwise returns `false`\n\n\n\n### add()\n\nAdd one or more files\n\n* **Arguments:**\n\n * `files: Array | File | window.File | Object` If it is an array of responses will be an array\n * `index: Number | Boolean` = [`props.add-index`](#options-props-add-index) `true = ` Start, `false = ` End, `Number = ` Index\n\n\n* **Result:** `Object | Array | Boolean` The incoming array is returned to the array otherwise the object or `false`\n\n* **Usage:**\n ```html\n \n \n ```\n\n\n### addInputFile()\n\nAdd the file selected by `` to the upload list\n\n* **Arguments:**\n\n * `el: HTMLInputElement` File element\n\n\n* **Result:** `Array` Added list of files\n\n* **Version:** : `>=2.5.1`\n\n\n\n### addDataTransfer()\n\nAdd files that are dragged or pasted into the upload list\n\n* **Arguments:**\n\n * `dataTransfer: DataTransfer` Drag or paste data\n\n\n* **Result:** `Promise>` Added list of files\n\n\n* **Version:** : `>=2.5.1`\n\n\n\n### update()\n\nUpdate a file object\n\n* **Arguments:**\n\n * `id: File | Object | String`\n * `data: Object` Updated data object\n\n\n* **Result:** `Object | Boolean` Successfully returned `newFile` failed to return` false`\n\n\n* **Usage:**\n ```html\n \n \n ```\n\n### remove()\n\nRemove a file object\n\n* **Arguments:**\n\n * `id: File | Object | String`\n\n\n* **Result:** `Object | Boolean` Successfully returned `oldFile` failed to return` false`\n\n* **Usage:**\n ```html\n \n \n ```\n\n### replace()\n Replace the location of the two files\n\n* **Arguments:**\n\n * `id1: File | Object | String`\n * `id2: File | Object | String`\n\n\n* **Result:** `Boolean`\n\n\n### clear()\n\nEmpty the file list\n\n* **Result:** `Boolean` Always return `true`\n\n\n\n## Instance / File\n\n\n\n> **File object in the `@input-filter` event outside the use of [`update`](#instance-methods-update) method**\n\n\n\n\n### fileObject\n\n* **Type:** `Boolean`\n\n* **Read only:** `true`\n\n* **Required:** `true`\n\n* **Default:** `true`\n\n* **Version:** : `>=2.6.0`\n\n* **Details:**\n\n If the attribute does not exist, the object will not be processed internally\n If the attribute does not exist, it is not `File` but `Object`\n\n\n\n\n### id\n\nFile ID\n\n* **Type:** `String | Number`\n\n* **Read only:** `false`\n\n* **Default:** `Math.random().toString(36).substr(2)`\n\n* **Details:**\n\n >`id` can not be repeated\n >Upload can not modify `id`\n\n\n### size\n\nFile size\n\n* **Type:** `Number`\n\n* **Read only:** `false`\n\n* **Default:** `-1`\n\n* **Browser:** `> IE9`\n\n\n### name\n\nFilename\n\n* **Type:** `String`\n\n* **Read only:** `false`\n\n* **Default:** ` `\n\n* **Details:**\n\n Format: `directory/filename.gif` `filename.gif`\n\n\n\n### type\n\nMIME type\n\n* **Type:** `String`\n\n* **Read only:** `false`\n\n* **Default:** ` `\n\n* **Browser:** `> IE9`\n\n* **Details:**\n\n Format: `image/gif` `image/png` `text/html`\n\n\n\n\n### active\n\nActivation or abort upload\n\n* **Type:** `Boolean`\n\n* **Read only:** `false`\n\n* **Default:** `false`\n\n* **Details:**\n\n `true` = Upload\n `false` = Abort\n\n\n\n\n\n\n### error\n\nUpload failed error code\n\n* **Type:** `String`\n\n* **Read only:** `false`\n\n* **Default:** ` `\n\n* **Details:**\n\n Built-in\n `size`, `extension`, `timeout`, `abort`, `network`, `server`, `denied`\n\n\n\n\n### success\n\nWhether the upload was successful\n\n* **Type:** `Boolean`\n\n* **Read only:** `false`\n\n* **Default:** `false`\n\n\n### putAction\n\nCustomize the current file `PUT` URL\n\n* **Type:** `String`\n\n* **Read only:** `false`\n\n* **Default:** `this.putAction`\n\n\n\n### postAction\n\nCustomize the current file `POST` URL\n\n* **Type:** `String`\n\n* **Read only:** `false`\n\n* **Default:** `this.postAction`\n\n\n\n\n### headers\n\nCustomize the current file `HTTP` Header\n\n* **Type:** `Object`\n\n* **Read only:** `false`\n\n* **Default:** `this.headers`\n\n\n### data\n\nCustomize the current file `body` or` query` to attach content\n\n* **Type:** `Object`\n\n* **Read only:** `false`\n\n* **Default:** `this.data`\n\n\n### timeout\n\nCustomize the upload timeout for a current single file\n\n* **Type:** `Number`\n\n* **Read only:** `false`\n\n* **Default:** `this.timeout`\n\n\n### response\n\nResponse data\n\n* **Type:** `Object | String`\n\n* **Read only:** `false`\n\n* **Default:** `{}`\n\n\n\n\n### progress\n\nUpload progress\n\n* **Type:** `String`\n\n* **Read only:** `false`\n\n* **Default:** `0.00`\n\n* **Browser:** `> IE9`\n\n\n\n### speed\n\nPer second upload speed\n\n* **Type:** `Number`\n\n* **Read only:** `true`\n\n* **Default:** `0`\n\n* **Browser:** `> IE9`\n\n\n\n\n### xhr\n\n`HTML5` upload` XMLHttpRequest` object\n\n* **Type:** `XMLHttpRequest`\n\n* **Read only:** `true`\n\n* **Default:** `undefined`\n\n* **Browser:** `> IE9`\n\n\n\n\n### iframe\n\n`HTML4` upload` iframe` element\n\n* **Type:** `Element`\n\n* **Read only:** `true`\n\n* **Default:** `undefined`\n\n* **Browser:** `= IE9`\n" - -/***/ }), -/* 9 */ -/***/ (function(module, exports) { - -module.exports = "## 入门开始\n\n### NPM\n\n``` bash\nnpm install vue-upload-component --save\n```\n\n``` js\nconst VueUploadComponent = require('vue-upload-component')\nVue.component('file-upload', VueUploadComponent)\n```\n\n### Curated\n\n**No data**\n\n\n### 直接使用\n\n\nunpkg\n\n``` html\n\n\n\n```\n\njsDelivr\n\n``` html\n\n\n\n```\n\n\n### 简单的例子\n\n\n\n```html\n\n\n\n \n Vue-upload-component Test\n \n \n\n\n
\n
    \n
  • {{file.name}} - Error: {{file.error}}, Success: {{file.success}}
  • \n
\n \n 上传文件\n \n \n \n
\n\n\n\n```\n\n\n\n### SSR (服务器同构)\n\n\n```html\n\n\n\n```\n\n\n** 或者 **\n\n\n```js\nimport FileUpload from 'vue-upload-component/src'\n```\n\nwebpack.config.js\n\n```js\nconst nodeExternals = require('webpack-node-externals');\n{\n //...\n externals: [\n nodeExternals({whitelist:[/^vue-upload-component\\/src/]})\n ]\n //...\n}\n```\n\n* [https://github.com/liady/webpack-node-externals](https://github.com/liady/webpack-node-externals) \n\n* [**`vue-hackernews` 演示**](https://github.com/lian-yue/vue-hackernews-2.0/) \n\n* [**浏览修改文件**](https://github.com/lian-yue/vue-hackernews-2.0/commit/bd6c58a30cc6b8ba6c0148e737b3ce9336b99cf8)\n\n\n\n\n## 选项 / 属性\n\n\n### input-id\n\ninput 标签的 `id` 属性\n\n* **类型:** `String`\n\n* **默认值:** `this.name`\n\n* **示例:**\n ```html\n \n \n \n ```\n\n\n\n\n\n### name\n\ninput标签的 `name` 属性\n\n* **类型:** `String`\n\n* **默认值:** `file`\n\n* **示例:**\n ```html\n \n \n \n ```\n\n\n\n\n\n### post-action\n\n`POST` 请求的上传URL\n\n* **类型:** `String`\n\n* **默认值:** `undefined`\n\n* **示例:**\n ```html\n \n ```\n\n\n\n\n\n### put-action\n\n`PUT` 请求的上传URL\n\n* **类型:** `String`\n\n* **默认值:** `undefined`\n\n* **浏览器:** `> IE9`\n\n* **详细:** \n\n `put-action` 不为空请优先 `PUT` 请求 \n\n* **示例:**\n ```html\n \n ```\n\n\n\n### custom-action\n\n自定义上传方法\n\n* **类型:** `async Function`\n\n* **默认值:** `undefined`\n\n* **详细:** \n\n `custom-action` 优先级高于 `put-action, post-action`\n\n* **示例:**\n ```html\n \n ```\n ```js\n async function customAction(file, component) {\n // return await component.uploadPut(file)\n return await component.uploadHtml4(file)\n }\n ```\n\n\n\n### headers\n\n自定义上传请求 `header` 数据\n\n* **类型:** `Object`\n\n* **默认值:** `{}`\n\n* **浏览器:** `> IE9`\n\n* **示例:**\n ```html\n \n ```\n\n\n\n\n\n### data\n\n`POST 请求`: 附加请求的 body \n`PUT 请求`: 附加请求的 query \n\n* **类型:** `Object`\n\n* **默认值:** `{}`\n\n* **示例:**\n ```html\n \n ```\n\n\n\n\n### value, v-model\n\n文件列表\n\n* **类型:** `Array`\n\n* **默认值:** `[]`\n\n* **详细:** \n\n 浏览 **[`File`](#file)** 详细信息 \n > 为了防止不可预知的错误,不可直接修改 `files`,请使用 [`add`](#实例-方法-add), [`update`](#实例-方法-update), [`remove`](#实例-方法-remove) 方法修改\n\n* **示例:**\n ```html\n \n \n \n ```\n\n\n\n\n\n### accept\n\n表单的`accept`属性, MIME type \n\n* **类型:** `String`\n\n* **默认值:** `undefined`\n\n* **浏览器:** `> IE9`\n\n* **示例:**\n ```html\n \n \n \n ```\n\n\n\n\n\n### multiple\n\n文件表单的 `multiple` 属性 \n是否允许选择多个文件 \n\n* **类型:** `Boolean`\n\n* **默认值:** `false`\n\n* **详细:** \n\n 如果是 `false` `files` 里面最多只有一个文件 多的会自动删除 \n\n* **示例:**\n ```html\n \n ```\n\n\n\n### directory\n\n文件表单的 `directory` 属性 \n是否是上传文件夹 \n\n* **类型:** `Boolean`\n\n* **默认值:** `false`\n\n* **浏览器:** [http://caniuse.com/#feat=input-file-directory](http://caniuse.com/#feat=input-file-directory)\n\n* **示例:**\n ```html\n \n ```\n\n\n\n\n\n### extensions\n\n允许上传的文件后缀\n\n* **类型:** `Array | String | RegExp`\n\n* **默认值:** `undefined`\n\n* **示例:**\n ```html\n \n \n \n \n \n ```\n\n\n\n\n### size\n\n允许上传的最大字节\n\n* **类型:** `Number`\n\n* **默认值:** `0`\n\n* **浏览器:** `> IE9`\n\n* **详细:**\n\n `0` 等于不限制\n\n* **示例:**\n ```html\n \n ```\n\n\n\n\n### timeout\n\n上传超时时间毫秒\n\n* **类型:** `Number`\n\n* **默认值:** `0`\n\n* **浏览器:** `> IE9`\n\n* **示例:**\n ```html\n \n ```\n\n\n### maximum\n\n列表最大文件数\n\n* **类型:** `Number`\n\n* **默认值:** `props.multiple ? 0 : 1`\n\n* **示例:**\n ```html\n \n ```\n\n\n\n\n### thread\n\n同时并发上传的文件数量 线程数 \n\n* **类型:** `Number`\n\n* **默认值:** `1`\n\n* **浏览器:** `> IE9`\n\n* **示例:**\n ```html\n \n ```\n\n\n\n\n\n### drop\n\n拖拽上传 \n\n* **类型:** `Boolean | Element | CSS selector`\n\n* **默认值:** `false`\n\n* **浏览器:** [http://caniuse.com/#feat=dragndrop](http://caniuse.com/#feat=dragndrop)\n\n* **详细:**\n\n 如果设置成 `true` 则读取父组件作为容器 \n\n* **示例:**\n ```html\n \n ```\n\n\n\n\n\n### drop-directory\n\n是否开启拖拽目录 \n\n* **类型:** `Boolean`\n\n* **默认值:** `true`\n\n* **详细:**\n\n 如果设置成 `false` 则过滤掉目录\n\n* **示例:**\n ```html\n \n ```\n\n\n### add-index\n\n* **类型:** `Boolean, Number`\n\n* **默认值:** `undefined`\n\n* **版本:** `>= 2.6.1`\n\n* **详细:**\n\n [`add()`](#实例-方法-add) 方法 `index` 参数的默认值\n\n* **示例:**\n ```html\n \n ```\n\n\n\n## 选项 / 事件\n\n文件被改变触发的方法 \n默认用于`v-model`绑定\n\n### @input\n* **参数:**\n\n * `files: Array`\n\n\n* **示例:**\n ```html\n \n \n ```\n\n\n\n### @input-filter\n\nAdd, update, remove pre-filter \n\n* **参数:**\n\n * `newFile: File | Object | undefined` `读写`\n * `oldFile: File | Object | undefined` `只读`\n * `prevent: Function` 调用该方法 阻止修改\n\n\n* **详细:**\n\n 如果 `newFile` 值为 `undefined` 则是删除 \n 如果 `oldFile` 值为 `undefined` 则是添加 \n 如果 `newFile`, `oldFile` 都存在则是更新\n\n > 事件内同步处理请直接修改 `newFile` \n > 事件内异步处理请使用 `update`, `add`, `remove`, `clear` 方法 \n > 异步请先设置一个错误以防止被上传\n\n > 同步不能使用 `update`, `add`, `remove`, `clear` 方法 \n > 异步不能修改 `newFile`\n\n\n* **示例:** \n ```html\n \n \n ```\n\n### @input-file\n\n添加,更新,移除 后\n\n* **参数:**\n\n * `newFile: File | Object | undefined` `只读`\n * `oldFile: File | Object | undefined` `只读`\n\n\n* **详细:**\n\n 如果 `newFile` 值为 `undefined` 则是删除 \n 如果 `oldFile` 值为 `undefined` 则是添加 \n 如果 `newFile`, `oldFile` 都存在则是更新\n\n >事件内可使用 `update`, `add`, `remove`, `clear` 方法 \n >事件内不可修改 `newFile` 对象 \n >事件内不可修改 `oldFile` 对象\n\n* **示例:**\n ```html\n \n \n ```\n\n\n\n## 实例 / 数据\n\n### features\n\n用于判断浏览器支持的特性\n\n* **类型:** `Object`\n\n* **只读:** `true`\n\n* **默认值:** `{ html5: true, directory: false, drag: false }`\n\n* **示例:**\n ```html\n \n \n 支持拖拽上传\n 支持文件夹上传\n 支持HTML5\n \n ```\n\n\n\n### active\n\n激活或停止上传\n\n* **类型:** `Boolean`\n\n* **只读:** `false`\n\n* **默认值:** `false`\n\n* **示例:**\n ```html\n \n \n 开始上传\n 停止上传\n \n ```\n\n\n\n### dropActive\n\n是否正在拖拽\n\n* **类型:** `Boolean`\n\n* **只读:** `true`\n\n* **默认值:** `false`\n\n* **示例:**\n ```html\n \n \n 拖拽到这里上传\n \n ```\n\n\n\n\n\n### uploaded\n\n是否全部已上传\n\n* **类型:** `Boolean`\n\n* **只读:** `true`\n\n* **默认值:** `true`\n\n* **示例:**\n ```html\n \n \n 全部文件已上传完毕\n \n ```\n\n\n\n\n\n## 实例 / 方法\n\n\n\n### get()\n\n使用`id`获得某个对象\n\n* **参数:**\n\n * `id: File | Object | String`\n\n\n* **结果:** `File | Object | Boolean` 存在返回文件对象否则返回 `false`\n\n\n\n### add()\n\n添加一个或多个文件\n\n* **参数:**\n\n * `files: Array | File | window.File | Object` 如果它是一个数组的响应将是一个数组\n * `index: Number | Boolean` = [`props.add-index`](#选项-属性-add-index) `true = ` 开始位置, `false = ` 结束位置, `Number = ` 下标位置\n\n\n* **结果:** `Object | Array | Boolean` 传入的是数组返回数组否则对象或`false`\n\n* **示例:**\n ```html\n \n \n ```\n\n\n### addInputFile()\n\n把``选择的文件添加进上传列表 \n\n* **参数:**\n\n * `el: HTMLInputElement` 文件元素\n\n\n* **结果:** `Array` 返回已添加的文件列表\n\n* **版本:** : `>=2.5.1`\n\n\n\n### addDataTransfer()\n\n把拖拽或者粘贴的数据的文件添加进上传列表 \n\n* **参数:**\n\n * `dataTransfer: DataTransfer` 拖拽或者粘贴的数据\n\n\n* **结果:** `Promise>` 返回已添加的文件列表\n\n\n* **版本:** : `>=2.5.1`\n\n\n\n### update()\n\n更新某个对象\n\n* **参数:**\n\n * `id: File | Object | String`\n * `data: Object` 更新的数据对象\n\n\n* **结果:** `Object | Boolean` 成功返回 `newFile` 失败返回 `false`\n\n\n* **示例:**\n ```html\n \n \n ```\n\n### remove()\n\n移除某个文件对象\n\n* **参数:**\n\n * `id: File | Object | String`\n\n\n* **结果:** `Object | Boolean` 成功返回 `oldFile` 失败返回 `false`\n\n* **示例:**\n ```html\n \n \n ```\n\n\n### replace()\n 替换两个文件的位置\n\n* **参数:**\n\n * `id1: File | Object | String`\n * `id2: File | Object | String`\n\n\n* **结果:** `Boolean`\n\n\n\n### clear()\n\n清空文件列表\n\n* **结果:** `Boolean` 总是返回 `true`\n\n\n\n## 实例 / File\n\n\n> **文件对象在`input-filter`事件外修改请使用 [`update`](#实例-方法-update) 方法**\n\n\n### fileObject\n\n* **类型:** `Boolean`\n\n* **只读:** `true`\n\n* **Required:** `true`\n\n* **默认值:** `true`\n\n* **版本:** : `>=2.6.0`\n\n* **详细:**\n\n 如果属性不存在,则不会在内部处理该对象 \n 如果属性不存在,它不是 `File` 而是 `Object`\n\n\n\n### id\n\n文件id\n\n* **类型:** `String | Number`\n\n* **只读:** `false`\n\n* **默认值:** `Math.random().toString(36).substr(2)`\n\n* **详细:**\n\n >`id` can not be repeated \n >Upload can not modify `id`\n\n\n### size\n\n文件大小\n\n* **类型:** `Number`\n\n* **只读:** `false`\n\n* **默认值:** `-1`\n\n* **浏览器:** `> IE9`\n\n\n### name\n\n文件名 \n\n* **类型:** `String`\n\n* **只读:** `false`\n\n* **默认值:** ` `\n\n* **详细:**\n\n 格式: `directory/filename.gif` `filename.gif` \n\n\n\n### type\n\nMIME类型\n\n* **类型:** `String`\n\n* **只读:** `false`\n\n* **默认值:** ` `\n\n* **浏览器:** `> IE9`\n\n* **详细:**\n\n 格式: `image/gif` `image/png` `text/html`\n\n\n\n\n### active\n\n激活或终止上传\n\n* **类型:** `Boolean`\n\n* **只读:** `false`\n\n* **默认值:** `false`\n\n* **详细:**\n\n `true` = 上传 \n `false` = 停止 \n\n\n\n\n\n\n### error\n\n上传失败错误代码\n\n* **类型:** `String`\n\n* **只读:** `false`\n\n* **默认值:** ` `\n\n* **详细:**\n\n 内置\n `size`, `extension`, `timeout`, `abort`, `network`, `server`, `denied`\n\n\n\n\n### success\n\n是否上传成功\n\n* **类型:** `Boolean`\n\n* **只读:** `false`\n\n* **默认值:** `false`\n\n\n### putAction\n\n自定义当前文件 `PUT` 地址\n\n* **类型:** `String`\n\n* **只读:** `false`\n\n* **默认值:** `this.putAction`\n\n\n\n### postAction\n\n自定义当前文件 `POST` 地址\n\n* **类型:** `String`\n\n* **只读:** `false`\n\n* **默认值:** `this.postAction`\n\n\n\n\n### headers\n\n自定义当前文件 `HTTP` Header\n\n* **类型:** `Object`\n\n* **只读:** `false`\n\n* **默认值:** `this.headers`\n\n\n### data\n\n自定义当前文件 `body` 或 `query` 附加内容\n\n* **类型:** `Object`\n\n* **只读:** `false`\n\n* **默认值:** `this.data`\n\n\n### timeout\n\n自定义当前单个文件的上传超时时间\n\n* **类型:** `Number`\n\n* **只读:** `false`\n\n* **默认值:** `this.timeout`\n\n\n### response\n\n响应的数据\n\n* **类型:** `Object | String`\n\n* **只读:** `false`\n\n* **默认值:** `{}`\n\n\n\n\n### progress\n\n上传进度\n\n* **类型:** `String`\n\n* **只读:** `false`\n\n* **默认值:** `0.00`\n\n* **浏览器:** `> IE9`\n\n\n\n### speed\n\n每秒的上传速度\n\n* **类型:** `Number`\n\n* **只读:** `true`\n\n* **默认值:** `0`\n\n* **浏览器:** `> IE9`\n\n\n\n\n### xhr\n\n`HTML5` 上传 `XMLHttpRequest` 对象\n\n* **类型:** `XMLHttpRequest`\n\n* **只读:** `true`\n\n* **默认值:** `undefined`\n\n* **浏览器:** `> IE9`\n\n\n\n\n### iframe\n\n`HTML4` 上传 `iframe` 元素\n\n* **类型:** `Element`\n\n* **只读:** `true`\n\n* **默认值:** `undefined`\n\n* **浏览器:** `= IE9`\n" - -/***/ }), -/* 10 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_cropperjs__ = __webpack_require__(11); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_cropperjs___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_cropperjs__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__xkeshi_image_compressor__ = __webpack_require__(44); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__xkeshi_image_compressor___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__xkeshi_image_compressor__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_vue_upload_component__ = __webpack_require__(3); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_vue_upload_component___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_vue_upload_component__); -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// - - - - -/* harmony default export */ __webpack_exports__["a"] = ({ - components: { - FileUpload: __WEBPACK_IMPORTED_MODULE_2_vue_upload_component___default.a - }, - - data: function data() { - return { - files: [], - accept: 'image/png,image/gif,image/jpeg,image/webp', - extensions: 'gif,jpg,jpeg,png,webp', - // extensions: ['gif', 'jpg', 'jpeg','png', 'webp'], - // extensions: /\.(gif|jpe?g|png|webp)$/i, - minSize: 1024, - size: 1024 * 1024 * 10, - multiple: true, - directory: false, - drop: true, - dropDirectory: true, - addIndex: false, - thread: 3, - name: 'file', - postAction: '/upload/post', - putAction: '/upload/put', - headers: { - 'X-Csrf-Token': 'xxxx' - }, - data: { - '_csrf_token': 'xxxxxx' - }, - - autoCompress: 1024 * 1024, - uploadAuto: false, - isOption: false, - - addData: { - show: false, - name: '', - type: '', - content: '' - }, - - editFile: { - show: false, - name: '' - } - }; - }, - - - watch: { - 'editFile.show': function editFileShow(newValue, oldValue) { - // 关闭了 自动删除 error - if (!newValue && oldValue) { - this.$refs.upload.update(this.editFile.id, { error: this.editFile.error || '' }); - } - - if (newValue) { - this.$nextTick(function () { - if (!this.$refs.editImage) { - return; - } - var cropper = new __WEBPACK_IMPORTED_MODULE_0_cropperjs___default.a(this.$refs.editImage, { - autoCrop: false - }); - this.editFile = _extends({}, this.editFile, { - cropper: cropper - }); - }); - } - }, - 'addData.show': function addDataShow(show) { - if (show) { - this.addData.name = ''; - this.addData.type = ''; - this.addData.content = ''; - } - } - }, - - methods: { - inputFilter: function inputFilter(newFile, oldFile, prevent) { - var _this = this; - - if (newFile && !oldFile) { - // Before adding a file - // 添加文件前 - - // Filter system files or hide files - // 过滤系统文件 和隐藏文件 - if (/(\/|^)(Thumbs\.db|desktop\.ini|\..+)$/.test(newFile.name)) { - return prevent(); - } - - // Filter php html js file - // 过滤 php html js 文件 - if (/\.(php5?|html?|jsx?)$/i.test(newFile.name)) { - return prevent(); - } - - // Automatic compression - // 自动压缩 - if (newFile.file && newFile.type.substr(0, 6) === 'image/' && this.autoCompress > 0 && this.autoCompress < newFile.size) { - newFile.error = 'compressing'; - var imageCompressor = new __WEBPACK_IMPORTED_MODULE_1__xkeshi_image_compressor___default.a(null, { - convertSize: Infinity, - maxWidth: 512, - maxHeight: 512 - }); - imageCompressor.compress(newFile.file).then(function (file) { - _this.$refs.upload.update(newFile, { error: '', file: file, size: file.size, type: file.type }); - }).catch(function (err) { - _this.$refs.upload.update(newFile, { error: err.message || 'compress' }); - }); - } - } - - if (newFile && (!oldFile || newFile.file !== oldFile.file)) { - - // Create a blob field - // 创建 blob 字段 - newFile.blob = ''; - var URL = window.URL || window.webkitURL; - if (URL && URL.createObjectURL) { - newFile.blob = URL.createObjectURL(newFile.file); - } - - // Thumbnails - // 缩略图 - newFile.thumb = ''; - if (newFile.blob && newFile.type.substr(0, 6) === 'image/') { - newFile.thumb = newFile.blob; - } - } - }, - - - // add, update, remove File Event - inputFile: function inputFile(newFile, oldFile) { - if (newFile && oldFile) { - // update - - if (newFile.active && !oldFile.active) { - // beforeSend - - // min size - if (newFile.size >= 0 && this.minSize > 0 && newFile.size < this.minSize) { - this.$refs.upload.update(newFile, { error: 'size' }); - } - } - - if (newFile.progress !== oldFile.progress) { - // progress - } - - if (newFile.error && !oldFile.error) { - // error - } - - if (newFile.success && !oldFile.success) { - // success - } - } - - if (!newFile && oldFile) { - // remove - if (oldFile.success && oldFile.response.id) { - // $.ajax({ - // type: 'DELETE', - // url: '/upload/delete?id=' + oldFile.response.id, - // }) - } - } - - // Automatically activate upload - if (Boolean(newFile) !== Boolean(oldFile) || oldFile.error !== newFile.error) { - if (this.uploadAuto && !this.$refs.upload.active) { - this.$refs.upload.active = true; - } - } - }, - alert: function (_alert) { - function alert(_x) { - return _alert.apply(this, arguments); - } - - alert.toString = function () { - return _alert.toString(); - }; - - return alert; - }(function (message) { - alert(message); - }), - onEditFileShow: function onEditFileShow(file) { - this.editFile = _extends({}, file, { show: true }); - this.$refs.upload.update(file, { error: 'edit' }); - }, - onEditorFile: function onEditorFile() { - if (!this.$refs.upload.features.html5) { - this.alert('Your browser does not support'); - this.editFile.show = false; - return; - } - - var data = { - name: this.editFile.name - }; - if (this.editFile.cropper) { - var binStr = atob(this.editFile.cropper.getCroppedCanvas().toDataURL(this.editFile.type).split(',')[1]); - var arr = new Uint8Array(binStr.length); - for (var i = 0; i < binStr.length; i++) { - arr[i] = binStr.charCodeAt(i); - } - data.file = new File([arr], data.name, { type: this.editFile.type }); - data.size = data.file.size; - } - this.$refs.upload.update(this.editFile.id, data); - this.editFile.error = ''; - this.editFile.show = false; - }, - - - // add folader - onAddFolader: function onAddFolader() { - var _this2 = this; - - if (!this.$refs.upload.features.directory) { - this.alert('Your browser does not support'); - return; - } - - var input = this.$refs.upload.$el.querySelector('input'); - input.directory = true; - input.webkitdirectory = true; - this.directory = true; - - input.onclick = null; - input.click(); - input.onclick = function (e) { - _this2.directory = false; - input.directory = false; - input.webkitdirectory = false; - }; - }, - onAddData: function onAddData() { - this.addData.show = false; - if (!this.$refs.upload.features.html5) { - this.alert('Your browser does not support'); - return; - } - - var file = new window.File([this.addData.content], this.addData.name, { - type: this.addData.type - }); - this.$refs.upload.add(file); - } - } -}); - -/***/ }), -/* 11 */ -/***/ (function(module, exports) { - -module.exports = Cropper; - -/***/ }), -/* 12 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__chunk_ChunkUploadHandler__ = __webpack_require__(48); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__InputFile_vue__ = __webpack_require__(50); -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } - -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// - - - - -var CHUNK_DEFAULT_OPTIONS = { - headers: {}, - action: '', - minSize: 1048576, - maxActive: 3, - maxRetries: 5, - - handler: __WEBPACK_IMPORTED_MODULE_0__chunk_ChunkUploadHandler__["a" /* default */] -}; - -/* harmony default export */ __webpack_exports__["a"] = ({ - components: { - InputFile: __WEBPACK_IMPORTED_MODULE_1__InputFile_vue__["a" /* default */] - }, - props: { - inputId: { - type: String - }, - - name: { - type: String, - default: 'file' - }, - - accept: { - type: String - }, - - capture: {}, - - multiple: { - type: Boolean - }, - - maximum: { - type: Number, - default: function _default() { - return this.multiple ? 0 : 1; - } - }, - - addIndex: { - type: [Boolean, Number] - }, - - directory: { - type: Boolean - }, - - postAction: { - type: String - }, - - putAction: { - type: String - }, - - customAction: { - type: Function - }, - - headers: { - type: Object, - default: Object - }, - - data: { - type: Object, - default: Object - }, - - timeout: { - type: Number, - default: 0 - }, - - drop: { - default: false - }, - - dropDirectory: { - type: Boolean, - default: true - }, - - size: { - type: Number, - default: 0 - }, - - extensions: { - default: Array - }, - - value: { - type: Array, - default: Array - }, - - thread: { - type: Number, - default: 1 - }, - - // Chunk upload enabled - chunkEnabled: { - type: Boolean, - default: false - }, - - // Chunk upload properties - chunk: { - type: Object, - default: function _default() { - return CHUNK_DEFAULT_OPTIONS; - } - } - }, - - data: function data() { - return { - files: this.value, - features: { - html5: true, - directory: false, - drag: false - }, - - active: false, - dropActive: false, - - uploading: 0, - - destroy: false - }; - }, - - - /** - * mounted - * @return {[type]} [description] - */ - mounted: function mounted() { - var input = document.createElement('input'); - input.type = 'file'; - input.multiple = true; - - // html5 特征 - if (window.FormData && input.files) { - // 上传目录特征 - if (typeof input.webkitdirectory === 'boolean' || typeof input.directory === 'boolean') { - this.features.directory = true; - } - - // 拖拽特征 - if (this.features.html5 && typeof input.ondrop !== 'undefined') { - this.features.drop = true; - } - } else { - this.features.html5 = false; - } - - // files 定位缓存 - this.maps = {}; - - this.$nextTick(function () { - - // 更新下父级 - if (this.$parent) { - this.$parent.$forceUpdate(); - } - - // 拖拽渲染 - this.watchDrop(this.drop); - }); - }, - - - /** - * beforeDestroy - * @return {[type]} [description] - */ - beforeDestroy: function beforeDestroy() { - // 已销毁 - this.destroy = true; - - // 设置成不激活 - this.active = false; - }, - - - computed: { - /** - * uploading 正在上传的线程 - * @return {[type]} [description] - */ - - /** - * uploaded 文件列表是否全部已上传 - * @return {[type]} [description] - */ - uploaded: function uploaded() { - var file = void 0; - for (var i = 0; i < this.files.length; i++) { - file = this.files[i]; - if (file.fileObject && !file.error && !file.success) { - return false; - } - } - return true; - }, - chunkOptions: function chunkOptions() { - return Object.assign(CHUNK_DEFAULT_OPTIONS, this.chunk); - }, - className: function className() { - return ['file-uploads', this.features.html5 ? 'file-uploads-html5' : 'file-uploads-html4', this.features.directory && this.directory ? 'file-uploads-directory' : undefined, this.features.drop && this.drop ? 'file-uploads-drop' : undefined]; - } - }, - - watch: { - active: function active(_active) { - this.watchActive(_active); - }, - dropActive: function dropActive() { - if (this.$parent) { - this.$parent.$forceUpdate(); - } - }, - drop: function drop(value) { - this.watchDrop(value); - }, - value: function value(files) { - if (this.files === files) { - return; - } - this.files = files; - - var oldMaps = this.maps; - - // 重写 maps 缓存 - this.maps = {}; - for (var i = 0; i < this.files.length; i++) { - var file = this.files[i]; - this.maps[file.id] = file; - } - - // add, update - for (var key in this.maps) { - var newFile = this.maps[key]; - var oldFile = oldMaps[key]; - if (newFile !== oldFile) { - this.emitFile(newFile, oldFile); - } - } - - // delete - for (var _key in oldMaps) { - if (!this.maps[_key]) { - this.emitFile(undefined, oldMaps[_key]); - } - } - } - }, - - methods: { - - // 清空 - clear: function clear() { - if (this.files.length) { - var files = this.files; - this.files = []; - - // 定位 - this.maps = {}; - - // 事件 - this.emitInput(); - for (var i = 0; i < files.length; i++) { - this.emitFile(undefined, files[i]); - } - } - return true; - }, - - - // 选择 - get: function get(id) { - if (!id) { - return false; - } - - if ((typeof id === 'undefined' ? 'undefined' : _typeof(id)) === 'object') { - return this.maps[id.id] || false; - } - - return this.maps[id] || false; - }, - - - // 添加 - add: function add(_files) { - var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.addIndex; - - var files = _files; - var isArray = files instanceof Array; - - // 不是数组整理成数组 - if (!isArray) { - files = [files]; - } - - // 遍历规范对象 - var addFiles = []; - for (var i = 0; i < files.length; i++) { - var file = files[i]; - if (this.features.html5 && file instanceof Blob) { - file = { - file: file, - size: file.size, - name: file.webkitRelativePath || file.relativePath || file.name || 'unknown', - type: file.type - }; - } - var fileObject = false; - if (file.fileObject === false) { - // false - } else if (file.fileObject) { - fileObject = true; - } else if (typeof Element !== 'undefined' && file.el instanceof Element) { - fileObject = true; - } else if (typeof Blob !== 'undefined' && file.file instanceof Blob) { - fileObject = true; - } - if (fileObject) { - file = _extends({ - fileObject: true, - size: -1, - name: 'Filename', - type: '', - active: false, - error: '', - success: false, - putAction: this.putAction, - postAction: this.postAction, - timeout: this.timeout - }, file, { - response: {}, - - progress: '0.00', // 只读 - speed: 0 // 只读 - // xhr: false, // 只读 - // iframe: false, // 只读 - }); - - file.data = _extends({}, this.data, file.data ? file.data : {}); - - file.headers = _extends({}, this.headers, file.headers ? file.headers : {}); - } - - // 必须包含 id - if (!file.id) { - file.id = Math.random().toString(36).substr(2); - } - - if (this.emitFilter(file, undefined)) { - continue; - } - - // 最大数量限制 - if (this.maximum > 1 && addFiles.length + this.files.length >= this.maximum) { - break; - } - - addFiles.push(file); - - // 最大数量限制 - if (this.maximum === 1) { - break; - } - } - - // 没有文件 - if (!addFiles.length) { - return false; - } - - // 如果是 1 清空 - if (this.maximum === 1) { - this.clear(); - } - - // 添加进去 files - var newFiles = void 0; - if (index === true || index === 0) { - newFiles = addFiles.concat(this.files); - } else if (index) { - newFiles = addFiles.concat([]); - newFiles.splice(index, 0, addFiles); - } else { - newFiles = this.files.concat(addFiles); - } - - this.files = newFiles; - - // 定位 - for (var _i = 0; _i < addFiles.length; _i++) { - var _file2 = addFiles[_i]; - this.maps[_file2.id] = _file2; - } - - // 事件 - this.emitInput(); - for (var _i2 = 0; _i2 < addFiles.length; _i2++) { - this.emitFile(addFiles[_i2], undefined); - } - - return isArray ? addFiles : addFiles[0]; - }, - - - // 添加表单文件 - addInputFile: function addInputFile(el) { - var files = []; - if (el.files) { - for (var i = 0; i < el.files.length; i++) { - var file = el.files[i]; - files.push({ - size: file.size, - name: file.webkitRelativePath || file.relativePath || file.name, - type: file.type, - file: file, - el: el - }); - } - } else { - files.push({ - name: el.value.replace(/^.*?([^\/\\\r\n]+)$/, '$1'), - el: el - }); - } - return this.add(files); - }, - - - // 添加 DataTransfer - addDataTransfer: function addDataTransfer(dataTransfer) { - var _this = this; - - var files = []; - if (dataTransfer.items && dataTransfer.items.length) { - var items = []; - for (var i = 0; i < dataTransfer.items.length; i++) { - var item = dataTransfer.items[i]; - if (item.getAsEntry) { - item = item.getAsEntry() || item.getAsFile(); - } else if (item.webkitGetAsEntry) { - item = item.webkitGetAsEntry() || item.getAsFile(); - } else { - item = item.getAsFile(); - } - if (item) { - items.push(item); - } - } - - return new Promise(function (resolve, reject) { - var forEach = function forEach(i) { - var item = items[i]; - // 结束 文件数量大于 最大数量 - if (!item || _this.maximum > 0 && files.length >= _this.maximum) { - return resolve(_this.add(files)); - } - _this.getEntry(item).then(function (results) { - files.push.apply(files, _toConsumableArray(results)); - forEach(i + 1); - }); - }; - forEach(0); - }); - } - - if (dataTransfer.files.length) { - for (var _i3 = 0; _i3 < dataTransfer.files.length; _i3++) { - files.push(dataTransfer.files[_i3]); - if (this.maximum > 0 && files.length >= this.maximum) { - break; - } - } - return Promise.resolve(this.add(files)); - } - - return Promise.resolve([]); - }, - - - // 获得 entry - getEntry: function getEntry(entry) { - var _this2 = this; - - var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; - - return new Promise(function (resolve, reject) { - if (entry.isFile) { - entry.file(function (file) { - resolve([{ - size: file.size, - name: path + file.name, - type: file.type, - file: file - }]); - }); - } else if (entry.isDirectory && _this2.dropDirectory) { - var files = []; - var dirReader = entry.createReader(); - var readEntries = function readEntries() { - dirReader.readEntries(function (entries) { - var forEach = function forEach(i) { - if (!entries[i] && i === 0 || _this2.maximum > 0 && files.length >= _this2.maximum) { - return resolve(files); - } - if (!entries[i]) { - return readEntries(); - } - _this2.getEntry(entries[i], path + entry.name + '/').then(function (results) { - files.push.apply(files, _toConsumableArray(results)); - forEach(i + 1); - }); - }; - forEach(0); - }); - }; - readEntries(); - } else { - resolve([]); - } - }); - }, - replace: function replace(id1, id2) { - var file1 = this.get(id1); - var file2 = this.get(id2); - if (!file1 || !file2 || file1 === file2) { - return false; - } - var files = this.files.concat([]); - var index1 = files.indexOf(file1); - var index2 = files.indexOf(file2); - if (index1 === -1 || index2 === -1) { - return false; - } - files[index1] = file2; - files[index2] = file1; - this.files = files; - this.emitInput(); - return true; - }, - - - // 移除 - remove: function remove(id) { - var file = this.get(id); - if (file) { - if (this.emitFilter(undefined, file)) { - return false; - } - var files = this.files.concat([]); - var index = files.indexOf(file); - if (index === -1) { - console.error('remove', file); - return false; - } - files.splice(index, 1); - this.files = files; - - // 定位 - delete this.maps[file.id]; - - // 事件 - this.emitInput(); - this.emitFile(undefined, file); - } - return file; - }, - - - // 更新 - update: function update(id, data) { - var file = this.get(id); - if (file) { - var newFile = _extends({}, file, data); - // 停用必须加上错误 - if (file.fileObject && file.active && !newFile.active && !newFile.error && !newFile.success) { - newFile.error = 'abort'; - } - - if (this.emitFilter(newFile, file)) { - return false; - } - - var files = this.files.concat([]); - var index = files.indexOf(file); - if (index === -1) { - console.error('update', file); - return false; - } - files.splice(index, 1, newFile); - this.files = files; - - // 删除 旧定位 写入 新定位 (已便支持修改id) - delete this.maps[file.id]; - this.maps[newFile.id] = newFile; - - // 事件 - this.emitInput(); - this.emitFile(newFile, file); - return newFile; - } - return false; - }, - - - // 预处理 事件 过滤器 - emitFilter: function emitFilter(newFile, oldFile) { - var isPrevent = false; - this.$emit('input-filter', newFile, oldFile, function () { - isPrevent = true; - return isPrevent; - }); - return isPrevent; - }, - - - // 处理后 事件 分发 - emitFile: function emitFile(newFile, oldFile) { - this.$emit('input-file', newFile, oldFile); - if (newFile && newFile.fileObject && newFile.active && (!oldFile || !oldFile.active)) { - this.uploading++; - // 激活 - this.$nextTick(function () { - var _this3 = this; - - setTimeout(function () { - _this3.upload(newFile).then(function () { - // eslint-disable-next-line - newFile = _this3.get(newFile); - if (newFile && newFile.fileObject) { - _this3.update(newFile, { - active: false, - success: !newFile.error - }); - } - }).catch(function (e) { - _this3.update(newFile, { - active: false, - success: false, - error: e.code || e.error || e.message || e - }); - }); - }, parseInt(Math.random() * 50 + 50, 10)); - }); - } else if ((!newFile || !newFile.fileObject || !newFile.active) && oldFile && oldFile.fileObject && oldFile.active) { - // 停止 - this.uploading--; - } - - // 自动延续激活 - if (this.active && (Boolean(newFile) !== Boolean(oldFile) || newFile.active !== oldFile.active)) { - this.watchActive(true); - } - }, - emitInput: function emitInput() { - this.$emit('input', this.files); - }, - - - // 上传 - upload: function upload(id) { - var file = this.get(id); - - // 被删除 - if (!file) { - return Promise.reject('not_exists'); - } - - // 不是文件对象 - if (!file.fileObject) { - return Promise.reject('file_object'); - } - - // 有错误直接响应 - if (file.error) { - return Promise.reject(file.error); - } - - // 已完成直接响应 - if (file.success) { - return Promise.resolve(file); - } - - // 后缀 - var extensions = this.extensions; - if (extensions && (extensions.length || typeof extensions.length === 'undefined')) { - if ((typeof extensions === 'undefined' ? 'undefined' : _typeof(extensions)) !== 'object' || !(extensions instanceof RegExp)) { - if (typeof extensions === 'string') { - extensions = extensions.split(',').map(function (value) { - return value.trim(); - }).filter(function (value) { - return value; - }); - } - extensions = new RegExp('\\.(' + extensions.join('|').replace(/\./g, '\\.') + ')$', 'i'); - } - if (file.name.search(extensions) === -1) { - return Promise.reject('extension'); - } - } - - // 大小 - if (this.size > 0 && file.size >= 0 && file.size > this.size) { - return Promise.reject('size'); - } - - if (this.customAction) { - return this.customAction(file, this); - } - - if (this.features.html5) { - if (this.shouldUseChunkUpload(file)) { - return this.uploadChunk(file); - } - if (file.putAction) { - return this.uploadPut(file); - } - if (file.postAction) { - return this.uploadHtml5(file); - } - } - if (file.postAction) { - return this.uploadHtml4(file); - } - return Promise.reject('No action configured'); - }, - - - /** - * Whether this file should be uploaded using chunk upload or not - * - * @param Object file - */ - shouldUseChunkUpload: function shouldUseChunkUpload(file) { - return this.chunkEnabled && !!this.chunkOptions.handler && file.size > this.chunkOptions.minSize; - }, - - - /** - * Upload a file using Chunk method - * - * @param File file - */ - uploadChunk: function uploadChunk(file) { - var HandlerClass = this.chunkOptions.handler; - file.chunk = new HandlerClass(file, this.chunkOptions); - - return file.chunk.upload(); - }, - uploadPut: function uploadPut(file) { - var querys = []; - var value = void 0; - for (var key in file.data) { - value = file.data[key]; - if (value !== null && value !== undefined) { - querys.push(encodeURIComponent(key) + '=' + encodeURIComponent(value)); - } - } - var queryString = querys.length ? (file.putAction.indexOf('?') === -1 ? '?' : '&') + querys.join('&') : ''; - var xhr = new XMLHttpRequest(); - xhr.open('PUT', file.putAction + queryString); - return this.uploadXhr(xhr, file, file.file); - }, - uploadHtml5: function uploadHtml5(file) { - var form = new window.FormData(); - var value = void 0; - for (var key in file.data) { - value = file.data[key]; - if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && typeof value.toString !== 'function') { - if (value instanceof File) { - form.append(key, value, value.name); - } else { - form.append(key, JSON.stringify(value)); - } - } else if (value !== null && value !== undefined) { - form.append(key, value); - } - } - form.append(this.name, file.file, file.file.filename || file.name); - var xhr = new XMLHttpRequest(); - xhr.open('POST', file.postAction); - return this.uploadXhr(xhr, file, form); - }, - uploadXhr: function uploadXhr(xhr, _file, body) { - var _this4 = this; - - var file = _file; - var speedTime = 0; - var speedLoaded = 0; - - // 进度条 - xhr.upload.onprogress = function (e) { - // 还未开始上传 已删除 未激活 - file = _this4.get(file); - if (!e.lengthComputable || !file || !file.fileObject || !file.active) { - return; - } - - // 进度 速度 每秒更新一次 - var speedTime2 = Math.round(Date.now() / 1000); - if (speedTime2 === speedTime) { - return; - } - speedTime = speedTime2; - - file = _this4.update(file, { - progress: (e.loaded / e.total * 100).toFixed(2), - speed: e.loaded - speedLoaded - }); - speedLoaded = e.loaded; - }; - - // 检查激活状态 - var interval = setInterval(function () { - file = _this4.get(file); - if (file && file.fileObject && !file.success && !file.error && file.active) { - return; - } - - if (interval) { - clearInterval(interval); - interval = false; - } - - try { - xhr.abort(); - xhr.timeout = 1; - } catch (e) {} - }, 100); - - return new Promise(function (resolve, reject) { - var complete = void 0; - var fn = function fn(e) { - // 已经处理过了 - if (complete) { - return; - } - complete = true; - if (interval) { - clearInterval(interval); - interval = false; - } - - file = _this4.get(file); - - // 不存在直接响应 - if (!file) { - return reject('not_exists'); - } - - // 不是文件对象 - if (!file.fileObject) { - return reject('file_object'); - } - - // 有错误自动响应 - if (file.error) { - return reject(file.error); - } - - // 未激活 - if (!file.active) { - return reject('abort'); - } - - // 已完成 直接相应 - if (file.success) { - return resolve(file); - } - - var data = {}; - - switch (e.type) { - case 'timeout': - case 'abort': - data.error = e.type; - break; - case 'error': - if (!xhr.status) { - data.error = 'network'; - } else if (xhr.status >= 500) { - data.error = 'server'; - } else if (xhr.status >= 400) { - data.error = 'denied'; - } - break; - default: - if (xhr.status >= 500) { - data.error = 'server'; - } else if (xhr.status >= 400) { - data.error = 'denied'; - } else { - data.progress = '100.00'; - } - } - - if (xhr.responseText) { - var contentType = xhr.getResponseHeader('Content-Type'); - if (contentType && contentType.indexOf('/json') !== -1) { - data.response = JSON.parse(xhr.responseText); - } else { - data.response = xhr.responseText; - } - } - - // 更新 - file = _this4.update(file, data); - - // 相应错误 - if (file.error) { - return reject(file.error); - } - - // 响应 - return resolve(file); - }; - - // 事件 - xhr.onload = fn; - xhr.onerror = fn; - xhr.onabort = fn; - xhr.ontimeout = fn; - - // 超时 - if (file.timeout) { - xhr.timeout = file.timeout; - } - - // headers - for (var key in file.headers) { - xhr.setRequestHeader(key, file.headers[key]); - } - - // 更新 xhr - file = _this4.update(file, { xhr: xhr }); - - // 开始上传 - xhr.send(body); - }); - }, - uploadHtml4: function uploadHtml4(_file) { - var _this5 = this; - - var file = _file; - var onKeydown = function onKeydown(e) { - if (e.keyCode === 27) { - e.preventDefault(); - } - }; - - var iframe = document.createElement('iframe'); - iframe.id = 'upload-iframe-' + file.id; - iframe.name = 'upload-iframe-' + file.id; - iframe.src = 'about:blank'; - iframe.setAttribute('style', 'width:1px;height:1px;top:-999em;position:absolute; margin-top:-999em;'); - - var form = document.createElement('form'); - - form.action = file.postAction; - - form.name = 'upload-form-' + file.id; - - form.setAttribute('method', 'POST'); - form.setAttribute('target', 'upload-iframe-' + file.id); - form.setAttribute('enctype', 'multipart/form-data'); - - var value = void 0; - var input = void 0; - for (var key in file.data) { - value = file.data[key]; - if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && typeof value.toString !== 'function') { - value = JSON.stringify(value); - } - if (value !== null && value !== undefined) { - input = document.createElement('input'); - input.type = 'hidden'; - input.name = key; - input.value = value; - form.appendChild(input); - } - } - form.appendChild(file.el); - - document.body.appendChild(iframe).appendChild(form); - - var getResponseData = function getResponseData() { - var doc = void 0; - try { - if (iframe.contentWindow) { - doc = iframe.contentWindow.document; - } - } catch (err) {} - if (!doc) { - try { - doc = iframe.contentDocument ? iframe.contentDocument : iframe.document; - } catch (err) { - doc = iframe.document; - } - } - if (doc && doc.body) { - return doc.body.innerHTML; - } - return null; - }; - - return new Promise(function (resolve, reject) { - setTimeout(function () { - file = _this5.update(file, { iframe: iframe }); - - // 不存在 - if (!file) { - return reject('not_exists'); - } - - // 定时检查 - var interval = setInterval(function () { - file = _this5.get(file); - if (file && file.fileObject && !file.success && !file.error && file.active) { - return; - } - - if (interval) { - clearInterval(interval); - interval = false; - } - - iframe.onabort({ type: file ? 'abort' : 'not_exists' }); - }, 100); - - var complete = void 0; - var fn = function fn(e) { - // 已经处理过了 - if (complete) { - return; - } - complete = true; - - if (interval) { - clearInterval(interval); - interval = false; - } - - // 关闭 esc 事件 - document.body.removeEventListener('keydown', onKeydown); - - file = _this5.get(file); - - // 不存在直接响应 - if (!file) { - return reject('not_exists'); - } - - // 不是文件对象 - if (!file.fileObject) { - return reject('file_object'); - } - - // 有错误自动响应 - if (file.error) { - return reject(file.error); - } - - // 未激活 - if (!file.active) { - return reject('abort'); - } - - // 已完成 直接相应 - if (file.success) { - return resolve(file); - } - - var response = getResponseData(); - var data = {}; - switch (e.type) { - case 'abort': - data.error = 'abort'; - break; - case 'error': - if (file.error) { - data.error = file.error; - } else if (response === null) { - data.error = 'network'; - } else { - data.error = 'denied'; - } - break; - default: - if (file.error) { - data.error = file.error; - } else if (data === null) { - data.error = 'network'; - } else { - data.progress = '100.00'; - } - } - - if (response !== null) { - if (response && response.substr(0, 1) === '{' && response.substr(response.length - 1, 1) === '}') { - try { - response = JSON.parse(response); - } catch (err) {} - } - data.response = response; - } - - // 更新 - file = _this5.update(file, data); - - if (file.error) { - return reject(file.error); - } - - // 响应 - return resolve(file); - }; - - // 添加事件 - iframe.onload = fn; - iframe.onerror = fn; - iframe.onabort = fn; - - // 禁止 esc 键 - document.body.addEventListener('keydown', onKeydown); - - // 提交 - form.submit(); - }, 50); - }).then(function (res) { - iframe.parentNode && iframe.parentNode.removeChild(iframe); - return res; - }).catch(function (res) { - iframe.parentNode && iframe.parentNode.removeChild(iframe); - return res; - }); - }, - watchActive: function watchActive(active) { - var file = void 0; - var index = 0; - while (file = this.files[index]) { - index++; - if (!file.fileObject) { - // 不是文件对象 - } else if (active && !this.destroy) { - if (this.uploading >= this.thread || this.uploading && !this.features.html5) { - break; - } - if (!file.active && !file.error && !file.success) { - this.update(file, { active: true }); - } - } else { - if (file.active) { - this.update(file, { active: false }); - } - } - } - if (this.uploading === 0) { - this.active = false; - } - }, - watchDrop: function watchDrop(_el) { - var el = _el; - if (!this.features.drop) { - return; - } - - // 移除挂载 - if (this.dropElement) { - try { - document.removeEventListener('dragenter', this.onDragenter, false); - document.removeEventListener('dragleave', this.onDragleave, false); - document.removeEventListener('drop', this.onDocumentDrop, false); - this.dropElement.removeEventListener('dragover', this.onDragover, false); - this.dropElement.removeEventListener('drop', this.onDrop, false); - } catch (e) {} - } - - if (!el) { - el = false; - } else if (typeof el === 'string') { - el = document.querySelector(el) || this.$root.$el.querySelector(el); - } else if (el === true) { - el = this.$parent.$el; - } - - this.dropElement = el; - - if (this.dropElement) { - document.addEventListener('dragenter', this.onDragenter, false); - document.addEventListener('dragleave', this.onDragleave, false); - document.addEventListener('drop', this.onDocumentDrop, false); - this.dropElement.addEventListener('dragover', this.onDragover, false); - this.dropElement.addEventListener('drop', this.onDrop, false); - } - }, - onDragenter: function onDragenter(e) { - e.preventDefault(); - if (!this.dropActive) { - this.dropActive = true; - } - }, - onDragleave: function onDragleave(e) { - e.preventDefault(); - if (e.target.nodeName === 'HTML' || e.screenX === 0 && e.screenY === 0 && !e.fromElement && e.offsetX <= 0) { - this.dropActive = false; - } - }, - onDragover: function onDragover(e) { - e.preventDefault(); - }, - onDocumentDrop: function onDocumentDrop() { - this.dropActive = false; - }, - onDrop: function onDrop(e) { - e.preventDefault(); - this.addDataTransfer(e.dataTransfer); - } - } -}); - -/***/ }), -/* 13 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -// -// -// -// -// -// -// -// -// -// -// -// -// - -/* harmony default export */ __webpack_exports__["a"] = ({ - methods: { - change: function change(e) { - this.$destroy(); - this.$parent.addInputFile(e.target); - // eslint-disable-next-line - new this.constructor({ - parent: this.$parent, - el: this.$el - }); - } - } -}); - -/***/ }), -/* 14 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue_upload_component__ = __webpack_require__(3); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue_upload_component___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_vue_upload_component__); -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// - - -/* harmony default export */ __webpack_exports__["a"] = ({ - components: { - FileUpload: __WEBPACK_IMPORTED_MODULE_0_vue_upload_component___default.a - }, - - data: function data() { - return { - files: [] - }; - }, - - - methods: { - inputFilter: function inputFilter(newFile, oldFile, prevent) { - if (newFile && !oldFile) { - // Before adding a file - // 添加文件前 - - // Filter system files or hide files - // 过滤系统文件 和隐藏文件 - if (/(\/|^)(Thumbs\.db|desktop\.ini|\..+)$/.test(newFile.name)) { - return prevent(); - } - - // Filter php html js file - // 过滤 php html js 文件 - if (/\.(php5?|html?|jsx?)$/i.test(newFile.name)) { - return prevent(); - } - } - }, - inputFile: function inputFile(newFile, oldFile) { - if (newFile && !oldFile) { - // add - console.log('add', newFile); - } - if (newFile && oldFile) { - // update - console.log('update', newFile); - } - - if (!newFile && oldFile) { - // remove - console.log('remove', oldFile); - } - } - } -}); - -/***/ }), -/* 15 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_cropperjs__ = __webpack_require__(11); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_cropperjs___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_cropperjs__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_upload_component__ = __webpack_require__(3); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_upload_component___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_vue_upload_component__); -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// - - - -/* harmony default export */ __webpack_exports__["a"] = ({ - components: { - FileUpload: __WEBPACK_IMPORTED_MODULE_1_vue_upload_component___default.a - }, - - data: function data() { - return { - files: [], - edit: false, - cropper: false - }; - }, - - - watch: { - edit: function edit(value) { - if (value) { - this.$nextTick(function () { - if (!this.$refs.editImage) { - return; - } - var cropper = new __WEBPACK_IMPORTED_MODULE_0_cropperjs___default.a(this.$refs.editImage, { - aspectRatio: 1 / 1, - viewMode: 1 - }); - this.cropper = cropper; - }); - } else { - if (this.cropper) { - this.cropper.destroy(); - this.cropper = false; - } - } - } - }, - - methods: { - editSave: function editSave() { - this.edit = false; - - var oldFile = this.files[0]; - - var binStr = atob(this.cropper.getCroppedCanvas().toDataURL(oldFile.type).split(',')[1]); - var arr = new Uint8Array(binStr.length); - for (var i = 0; i < binStr.length; i++) { - arr[i] = binStr.charCodeAt(i); - } - - var file = new File([arr], oldFile.name, { type: oldFile.type }); - - this.$refs.upload.update(oldFile.id, { - file: file, - type: file.type, - size: file.size, - active: true - }); - }, - alert: function (_alert) { - function alert(_x) { - return _alert.apply(this, arguments); - } - - alert.toString = function () { - return _alert.toString(); - }; - - return alert; - }(function (message) { - alert(message); - }), - inputFile: function inputFile(newFile, oldFile, prevent) { - if (newFile && !oldFile) { - this.$nextTick(function () { - this.edit = true; - }); - } - if (!newFile && oldFile) { - this.edit = false; - } - }, - inputFilter: function inputFilter(newFile, oldFile, prevent) { - if (newFile && !oldFile) { - if (!/\.(gif|jpg|jpeg|png|webp)$/i.test(newFile.name)) { - this.alert('Your choice is not a picture'); - return prevent(); - } - } - - if (newFile && (!oldFile || newFile.file !== oldFile.file)) { - newFile.url = ''; - var URL = window.URL || window.webkitURL; - if (URL && URL.createObjectURL) { - newFile.url = URL.createObjectURL(newFile.file); - } - } - } - } -}); - -/***/ }), -/* 16 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue_upload_component__ = __webpack_require__(3); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue_upload_component___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_vue_upload_component__); -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// - - -/* harmony default export */ __webpack_exports__["a"] = ({ - components: { - FileUpload: __WEBPACK_IMPORTED_MODULE_0_vue_upload_component___default.a - }, - - data: function data() { - return { - files: [] - }; - } -}); - -/***/ }), -/* 17 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue_upload_component__ = __webpack_require__(3); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue_upload_component___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_vue_upload_component__); -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// - - -/* harmony default export */ __webpack_exports__["a"] = ({ - components: { - FileUpload: __WEBPACK_IMPORTED_MODULE_0_vue_upload_component___default.a - }, - - data: function data() { - return { - files1: [], - files2: [] - }; - } -}); - -/***/ }), -/* 18 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue_upload_component__ = __webpack_require__(3); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue_upload_component___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_vue_upload_component__); -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// - - -/* harmony default export */ __webpack_exports__["a"] = ({ - components: { - FileUpload: __WEBPACK_IMPORTED_MODULE_0_vue_upload_component___default.a - }, - - data: function data() { - return { - files: [], - - chunkEnabled: true, - - // 1MB by default - chunkMinSize: 1, - chunkMaxActive: 3, - chunkMaxRetries: 5 - }; - }, - - - methods: { - inputFilter: function inputFilter(newFile, oldFile, prevent) { - if (newFile && !oldFile) { - // Before adding a file - // 添加文件前 - - // Filter system files or hide files - // 过滤系统文件 和隐藏文件 - if (/(\/|^)(Thumbs\.db|desktop\.ini|\..+)$/.test(newFile.name)) { - return prevent(); - } - - // Filter php html js file - // 过滤 php html js 文件 - if (/\.(php5?|html?|jsx?)$/i.test(newFile.name)) { - return prevent(); - } - } - }, - inputFile: function inputFile(newFile, oldFile) { - if (newFile && !oldFile) { - // add - console.log('add', newFile); - this.$refs.upload.active = true; - } - if (newFile && oldFile) { - // update - console.log('update', newFile); - } - - if (!newFile && oldFile) { - // remove - console.log('remove', oldFile); - } - } - } -}); - -/***/ }), -/* 19 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vuex__ = __webpack_require__(5); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vuex___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_vuex__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_upload_component__ = __webpack_require__(3); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_upload_component___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_vue_upload_component__); -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// - - - -/* harmony default export */ __webpack_exports__["a"] = ({ - components: { - FileUpload: __WEBPACK_IMPORTED_MODULE_1_vue_upload_component___default.a - }, - - computed: _extends({}, Object(__WEBPACK_IMPORTED_MODULE_0_vuex__["mapState"])(['files'])), - - methods: { - inputUpdate: function inputUpdate(files) { - this.$store.commit('updateFiles', files); - } - } -}); - -/***/ }), -/* 20 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// - -/* harmony default export */ __webpack_exports__["a"] = ({ - data: function data() { - return { - showLocale: false, - showNav: false - }; - }, - beforeCreate: function beforeCreate() { - if (this.$route.params.locale && this.$route.params.locale !== this.$i18n.locale) { - this.$i18n.locale = this.$route.params.locale; - } - }, - beforeUpdate: function beforeUpdate() { - if (this.$route.params.locale && this.$route.params.locale !== this.$i18n.locale) { - this.$i18n.locale = this.$route.params.locale; - } - }, - - computed: { - locale: function locale() { - var i18n = this.$i18n; - return i18n.messages[i18n.locale].locale; - } - }, - methods: { - onLocale: function onLocale(show) { - var _this = this; - - if (show) { - this.showLocale = show; - } else { - setTimeout(function () { - _this.showLocale = show; - }, 128); - } - } - } -}); - -/***/ }), -/* 21 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = __webpack_require__(22); - - -/***/ }), -/* 22 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue__ = __webpack_require__(23); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_vue__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_marked__ = __webpack_require__(4); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_marked___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_marked__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_highlight_js__ = __webpack_require__(24); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_highlight_js___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_highlight_js__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__store__ = __webpack_require__(25); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__router__ = __webpack_require__(26); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__i18n__ = __webpack_require__(6); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__views_App__ = __webpack_require__(80); -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - - - - - - - - - -__WEBPACK_IMPORTED_MODULE_0_vue___default.a.config.silent = false; -__WEBPACK_IMPORTED_MODULE_0_vue___default.a.config.devtools = true; - -var Renderer = function (_marked$Renderer) { - _inherits(Renderer, _marked$Renderer); - - function Renderer() { - _classCallCheck(this, Renderer); - - return _possibleConstructorReturn(this, (Renderer.__proto__ || Object.getPrototypeOf(Renderer)).apply(this, arguments)); - } - - _createClass(Renderer, [{ - key: 'heading', - value: function heading(text, level, raw) { - var rawName = raw.toLowerCase().replace(/([\u0000-\u002F\u003A-\u0060\u007B-\u007F]+)/g, '-').replace(/^\-+|\-+$/, ''); - - if (!this.options.headers) { - this.options.headers = []; - } - while (this.options.headers.length >= level) { - this.options.headers.pop(); - } - var parent = this.options.headers.filter(function (value) { - return !!value; - }).join('-'); - if (parent) { - parent = parent + '-'; - } - while (this.options.headers.length < level - 1) { - this.options.headers.push(''); - } - this.options.headers.push(rawName); - return '' + text + '\n'; - } - }]); - - return Renderer; -}(__WEBPACK_IMPORTED_MODULE_1_marked___default.a.Renderer); - -__WEBPACK_IMPORTED_MODULE_1_marked___default.a.setOptions({ - renderer: new Renderer(), - gfm: true, - tables: true, - breaks: false, - pedantic: false, - sanitize: false, - smartLists: true, - smartypants: false, - highlight: function highlight(code, lang) { - if (lang) { - return __WEBPACK_IMPORTED_MODULE_2_highlight_js___default.a.highlight(lang, code).value; - } else { - return __WEBPACK_IMPORTED_MODULE_2_highlight_js___default.a.highlightAuto(code).value; - } - } -}); - -__WEBPACK_IMPORTED_MODULE_0_vue___default.a.directive('markdown', function (el, binding, vnode) { - if (!el.className || !/vue-markdown/.test(el.className)) { - el.className += ' vue-markdown'; - } - var text = ''; - for (var i = 0; i < vnode.children.length; i++) { - text += vnode.children[i].text || ''; - } - if (el.markdown === text) { - return; - } - - el.markdown = text; - - el.innerHTML = __WEBPACK_IMPORTED_MODULE_1_marked___default()(text); - var selectorList = el.querySelectorAll('a'); - for (var _i = 0; _i < selectorList.length; _i++) { - selectorList[_i].onclick = function (e) { - if (e.metaKey || e.ctrlKey || e.shiftKey) { - return; - } - if (e.defaultPrevented) { - return; - } - if (e.button !== undefined && e.button !== 0) { - return; - } - - if (this.host !== window.location.host) { - return; - } - - var href = this.getAttribute('href'); - if (!href) { - return; - } - - if (href.charAt(0) !== '#') { - return; - } - - e.preventDefault(); - __WEBPACK_IMPORTED_MODULE_4__router__["a" /* default */].push(href); - }; - } -}); - -__WEBPACK_IMPORTED_MODULE_0_vue___default.a.filter('formatSize', function (size) { - if (size > 1024 * 1024 * 1024 * 1024) { - return (size / 1024 / 1024 / 1024 / 1024).toFixed(2) + ' TB'; - } else if (size > 1024 * 1024 * 1024) { - return (size / 1024 / 1024 / 1024).toFixed(2) + ' GB'; - } else if (size > 1024 * 1024) { - return (size / 1024 / 1024).toFixed(2) + ' MB'; - } else if (size > 1024) { - return (size / 1024).toFixed(2) + ' KB'; - } - return size.toString() + ' B'; -}); - -__WEBPACK_IMPORTED_MODULE_0_vue___default.a.filter('toLocale', function (to) { - return '/' + __WEBPACK_IMPORTED_MODULE_5__i18n__["a" /* default */].locale + to; -}); - -new __WEBPACK_IMPORTED_MODULE_0_vue___default.a(_extends({ - store: __WEBPACK_IMPORTED_MODULE_3__store__["a" /* default */], - router: __WEBPACK_IMPORTED_MODULE_4__router__["a" /* default */], - i18n: __WEBPACK_IMPORTED_MODULE_5__i18n__["a" /* default */] -}, __WEBPACK_IMPORTED_MODULE_6__views_App__["a" /* default */])).$mount('#app'); - -/***/ }), -/* 23 */ -/***/ (function(module, exports) { - -module.exports = Vue; - -/***/ }), -/* 24 */ -/***/ (function(module, exports) { - -module.exports = hljs; - -/***/ }), -/* 25 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vuex__ = __webpack_require__(5); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vuex___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_vuex__); -// import Vue from 'vue' - -// -// Vue.use(Vuex) - - -var state = { - files: [] -}; - -var mutations = { - updateFiles: function updateFiles(state, files) { - state.files = files; - } -}; -/* harmony default export */ __webpack_exports__["a"] = (new __WEBPACK_IMPORTED_MODULE_0_vuex___default.a.Store({ - strict: true, - state: state, - mutations: mutations -})); - -/***/ }), -/* 26 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue_router__ = __webpack_require__(27); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue_router___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_vue_router__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__i18n__ = __webpack_require__(6); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__views_Router__ = __webpack_require__(31); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__views_Document__ = __webpack_require__(33); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__views_Example__ = __webpack_require__(39); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__views_examples_Full__ = __webpack_require__(41); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__views_examples_Simple__ = __webpack_require__(54); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__views_examples_Avatar__ = __webpack_require__(58); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__views_examples_Drag__ = __webpack_require__(62); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__views_examples_Multiple__ = __webpack_require__(66); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__views_examples_Chunk__ = __webpack_require__(70); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__views_examples_Vuex__ = __webpack_require__(76); -// import Vue from 'vue' - - - - - - - - - - - - - - - -// Vue.use(VueRouter) - - -var examples = [{ - path: '', - component: __WEBPACK_IMPORTED_MODULE_5__views_examples_Full__["a" /* default */] -}, { - path: 'full', - component: __WEBPACK_IMPORTED_MODULE_5__views_examples_Full__["a" /* default */] -}, { - path: 'simple', - component: __WEBPACK_IMPORTED_MODULE_6__views_examples_Simple__["a" /* default */] -}, { - path: 'avatar', - component: __WEBPACK_IMPORTED_MODULE_7__views_examples_Avatar__["a" /* default */] -}, { - path: 'drag', - component: __WEBPACK_IMPORTED_MODULE_8__views_examples_Drag__["a" /* default */] -}, { - path: 'multiple', - component: __WEBPACK_IMPORTED_MODULE_9__views_examples_Multiple__["a" /* default */] -}, { - path: 'chunk', - component: __WEBPACK_IMPORTED_MODULE_10__views_examples_Chunk__["a" /* default */] -}, { - path: 'vuex', - component: __WEBPACK_IMPORTED_MODULE_11__views_examples_Vuex__["a" /* default */] -}]; - -var router = new __WEBPACK_IMPORTED_MODULE_0_vue_router___default.a({ - mode: 'hash', - fallback: false, - scrollBehavior: function scrollBehavior(to, from, savedPosition) { - if (savedPosition) { - return savedPosition; - } else if (to.hash) { - var el = document.querySelector(to.hash); - return { x: 0, y: el ? el.offsetTop : 0 }; - } else { - return { x: 0, y: 0 }; - } - }, - - routes: [{ - path: '/:locale(' + Object.keys(__WEBPACK_IMPORTED_MODULE_1__i18n__["a" /* default */].messages).join('|') + ')?', - component: __WEBPACK_IMPORTED_MODULE_2__views_Router__["a" /* default */], - children: [{ - path: 'documents', - component: __WEBPACK_IMPORTED_MODULE_3__views_Document__["a" /* default */] - }, { - path: 'examples', - component: __WEBPACK_IMPORTED_MODULE_4__views_Example__["a" /* default */], - children: examples - }, { - path: '', - component: __WEBPACK_IMPORTED_MODULE_4__views_Example__["a" /* default */], - children: examples - }] - }] -}); -/* harmony default export */ __webpack_exports__["a"] = (router); - -/***/ }), -/* 27 */ -/***/ (function(module, exports) { - -module.exports = VueRouter; - -/***/ }), -/* 28 */ -/***/ (function(module, exports) { - -module.exports = VueI18n; - -/***/ }), -/* 29 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony default export */ __webpack_exports__["a"] = ({ - header: { - logo: 'Vuejs', - home: 'Home', - examples: 'Examples', - documents: 'Documentation', - blog: 'Blog', - locale: 'Language(语言)', - issues: 'Issues', - github: 'Github' - }, - - locale: { - en: 'English', - 'zh-cn': '中文(简体)' - }, - - document: { - title: 'Documentation' - }, - - example: { - full: 'Full Example', - simple: 'Simple', - avatar: 'Upload avatar', - drag: 'Drag and drop', - multiple: 'Multiple instances', - chunk: 'Chunk upload', - vuex: 'Vuex' - } -}); - -/***/ }), -/* 30 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony default export */ __webpack_exports__["a"] = ({ - header: { - logo: 'Vuejs', - home: '首页', - examples: '演示', - documents: '文档', - blog: 'Blog', - locale: 'Language(语言)', - issues: 'Issues', - github: 'Github' - }, - - locale: { - en: 'English', - 'zh-cn': '中文(简体)' - }, - - document: { - title: '文档' - }, - - example: { - full: '完整例子', - simple: '简单例子', - avatar: '上传头像', - drag: '拖拽上传', - multiple: '多个实例', - vuex: 'Vuex' - } -}); - -/***/ }), -/* 31 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__node_modules_vue_loader_lib_template_compiler_index_id_data_v_3075fd62_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Router_vue__ = __webpack_require__(32); -var normalizeComponent = __webpack_require__(0) -/* script */ -var __vue_script__ = null -/* template */ - -/* template functional */ -var __vue_template_functional__ = false -/* styles */ -var __vue_styles__ = null -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __vue_script__, - __WEBPACK_IMPORTED_MODULE_0__node_modules_vue_loader_lib_template_compiler_index_id_data_v_3075fd62_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Router_vue__["a" /* default */], - __vue_template_functional__, - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) - -/* harmony default export */ __webpack_exports__["a"] = (Component.exports); - - -/***/ }), -/* 32 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('router-view')} -var staticRenderFns = [] -var esExports = { render: render, staticRenderFns: staticRenderFns } -/* harmony default export */ __webpack_exports__["a"] = (esExports); - -/***/ }), -/* 33 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_presets_env_modules_false_stage_0_plugins_transform_runtime_helpers_false_polyfill_false_regenerator_true_moduleName_babel_runtime_cacheDirectory_false_node_modules_vue_loader_lib_selector_type_script_index_0_Document_vue__ = __webpack_require__(7); -/* unused harmony namespace reexport */ -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_61209807_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Document_vue__ = __webpack_require__(38); -function injectStyle (ssrContext) { - __webpack_require__(34) -} -var normalizeComponent = __webpack_require__(0) -/* script */ - - -/* template */ - -/* template functional */ -var __vue_template_functional__ = false -/* styles */ -var __vue_styles__ = injectStyle -/* scopeId */ -var __vue_scopeId__ = null -/* moduleIdentifier (server only) */ -var __vue_module_identifier__ = null -var Component = normalizeComponent( - __WEBPACK_IMPORTED_MODULE_0__babel_loader_presets_env_modules_false_stage_0_plugins_transform_runtime_helpers_false_polyfill_false_regenerator_true_moduleName_babel_runtime_cacheDirectory_false_node_modules_vue_loader_lib_selector_type_script_index_0_Document_vue__["a" /* default */], - __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_61209807_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Document_vue__["a" /* default */], - __vue_template_functional__, - __vue_styles__, - __vue_scopeId__, - __vue_module_identifier__ -) - -/* harmony default export */ __webpack_exports__["a"] = (Component.exports); - - -/***/ }), -/* 34 */ -/***/ (function(module, exports, __webpack_require__) { - -// style-loader: Adds some css to the DOM by adding a \n\n\n\n\n// WEBPACK FOOTER //\n// docs/views/Document.vue","module.exports = \"\\n> **The document uses Google Translate**\\n\\n## Getting Started\\n\\n### NPM\\n\\n``` bash\\nnpm install vue-upload-component --save\\n```\\n\\n``` js\\nconst VueUploadComponent = require('vue-upload-component')\\nVue.component('file-upload', VueUploadComponent)\\n```\\n\\n### Curated\\n\\n**No data**\\n\\n\\n### Script\\n\\n\\nunpkg\\n\\n``` html\\n\\n\\n\\n```\\n\\njsDelivr\\n\\n``` html\\n\\n\\n\\n```\\n\\n\\n### Simple example\\n\\n\\n\\n```html\\n\\n\\n\\n \\n Vue-upload-component Test\\n \\n \\n\\n\\n
\\n
    \\n
  • {{file.name}} - Error: {{file.error}}, Success: {{file.success}}
  • \\n
\\n \\n Upload file\\n \\n \\n \\n
\\n\\n\\n\\n```\\n\\n### Chunk Upload\\n\\nThis package allows chunk uploads, which means you can upload a file in different parts.\\n\\nThis process is divided in three phases: start, upload,finish

\\n\\n#### start\\n\\nThis is the first phase of the process. We'll tell the backend that we are going to upload a file, with certain `size` and `mime_type`.\\n\\nUse the option `startBody` to add more parameters to the body of this request.\\n\\nThe backend should provide a `session_id` (to identify the upload) and a `end_offset` which is the size of every chunk\\n\\n#### upload\\n\\nIn this phase we'll upload every chunk until all of them are uploaded. This step allows some failures in the backend, and will retry up to `maxRetries` times.\\n\\nWe'll send the `session_id`, `start_chunk` and `chunk` (the sliced blob - part of file we are uploading). We expect the backend to return `{ status: 'success' }`, we'll retry otherwise.\\n\\nUse the option `uploadBody` to add more parameters to the body of this request.\\n\\n#### finish\\n\\nIn this phase we tell the backend that there are no more chunks to upload, so it can wrap everything. We send the `session_id` in this phase.\\n\\nUse the option `finishBody` to add more parameters to the body of this request.\\n\\n#### Example\\n\\nIn the following example we are going to add `Chunk Upload Functionality`. This component will use `Chunk Upload` when the size of the file is > `1MB`, it will behave as the `Simple example` when the size of the file is lower.\\n\\n```html\\n \\n Upload file\\n \\n```\\n\\n#### Extending the handler\\n\\nWe are using the class `src/chunk/ChunkUploadHandler` class to implement this protocol. You can extend this class (or even create a different one from scratch) to implement your own way to communicat with the backend.\\n\\nThis class must implement a method called `upload` which **must** return a promise. This promise will be used by the `FileUpload` component to determinate whether the file was uploaded or failed.\\n\\nUse the `handler` parameter to use a different Handler\\n\\n```html\\n :chunk=\\\"{\\n action: '/upload/chunk',\\n minSize: 1048576,\\n maxActive: 3,\\n maxRetries: 5,\\n\\n handler: MyHandlerClass\\n }\\n```\\n\\n### SSR (Server isomorphism)\\n\\n\\n```html\\n\\n\\n\\n```\\n\\n\\n** OR **\\n\\n\\n```js\\nimport FileUpload from 'vue-upload-component/src'\\n```\\n\\n\\nwebpack.config.js\\n\\n```js\\nconst nodeExternals = require('webpack-node-externals');\\n{\\n //.....\\n externals: [\\n nodeExternals({whitelist:[/^vue-upload-component\\\\/src/]})\\n ]\\n //.....\\n}\\n```\\n\\n* [https://github.com/liady/webpack-node-externals](https://github.com/liady/webpack-node-externals)\\n\\n* [**`vue-hackernews` demo**](https://github.com/lian-yue/vue-hackernews-2.0/)\\n\\n* [**View changes**](https://github.com/lian-yue/vue-hackernews-2.0/commit/bd6c58a30cc6b8ba6c0148e737b3ce9336b99cf8)\\n\\n\\n\\n\\n## Options / Props\\n\\n\\n### input-id\\n\\nThe `id` attribute of the input tag\\n\\n* **Type:** `String`\\n\\n* **Default:** `this.name`\\n\\n* **Usage:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### name\\n\\nThe `name` attribute of the input tag\\n\\n* **Type:** `String`\\n\\n* **Default:** `file`\\n\\n* **Usage:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### post-action\\n\\n`POST` Request upload URL\\n\\n* **Type:** `String`\\n\\n* **Default:** `undefined`\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### put-action\\n\\n`PUT` Request upload URL\\n\\n* **Type:** `String`\\n\\n* **Default:** `undefined`\\n\\n* **Browser:** `> IE9`\\n\\n* **Details:**\\n\\n `put-action` is not empty Please give priority to` PUT` request\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n### custom-action\\n\\nCustom upload method\\n\\n* **Type:** `async Function`\\n\\n* **Default:** `undefined`\\n\\n* **Details:** \\n\\n `custom-action` priority than `put-action, post-action`\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n ```js\\n async function customAction(file, component) {\\n // return await component.uploadPut(file)\\n return await component.uploadHtml4(file)\\n }\\n ```\\n\\n\\n\\n\\n\\n### headers\\n\\nAttach `header` data\\n\\n* **Type:** `Object`\\n\\n* **Default:** `{}`\\n\\n* **Browser:** `> IE9`\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### data\\n\\n`POST request`: Append request `body`\\n`PUT request`: Append request `query`\\n\\n* **Type:** `Object`\\n\\n* **Default:** `{}`\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n### value, v-model\\n\\nFile List\\n\\n* **Type:** `Array`\\n\\n* **Default:** `[]`\\n\\n* **Details:**\\n\\n View **[`File`](#file)** details\\n > In order to prevent unpredictable errors, can not directly modify the `files`, please use [`add`](#instance-methods-add), [`update`](#instance-methods-update), [`remove`](#instance-methods-remove) method to modify\\n\\n* **Usage:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### accept\\n\\nThe `accept` attribute of the input tag, MIME type\\n\\n* **Type:** `String`\\n\\n* **Default:** `undefined`\\n\\n* **Browser:** `> IE9`\\n\\n* **Usage:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### multiple\\n\\nThe `multiple` attribute of the input tag\\nWhether to allow multiple files to be selected\\n\\n* **Type:** `Boolean`\\n\\n* **Default:** `false`\\n\\n* **Details:**\\n\\n If it is `false` file inside only one file will be automatically deleted\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n### directory\\n\\nThe `directory` attribute of the input tag\\nWhether it is a upload folder\\n\\n* **Type:** `Boolean`\\n\\n* **Default:** `false`\\n\\n* **Browser:** [http://caniuse.com/#feat=input-file-directory](http://caniuse.com/#feat=input-file-directory)\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### extensions\\n\\nAllow upload file extensions\\n\\n* **Type:** `Array | String | RegExp`\\n\\n* **Default:** `undefined`\\n\\n* **Usage:**\\n ```html\\n \\n \\n \\n \\n \\n ```\\n\\n\\n\\n\\n### size\\n\\nAllow the maximum byte to upload\\n\\n* **Type:** `Number`\\n\\n* **Default:** `0`\\n\\n* **Browser:** `> IE9`\\n\\n* **Details:**\\n\\n `0` is equal to not limit\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n### timeout\\n\\nUpload timeout time in milliseconds\\n\\n* **Type:** `Number`\\n\\n* **Default:** `0`\\n\\n* **Browser:** `> IE9`\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n### maximum\\n\\nList the maximum number of files\\n\\n* **Type:** `Number`\\n\\n* **Default:** `props.multiple ? 0 : 1`\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n### thread\\n\\nAlso upload the number of files at the same time (number of threads)\\n\\n* **Type:** `Number`\\n\\n* **Default:** `1`\\n\\n* **Browser:** `> IE9`\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n### chunk-enabled\\n\\nWhether chunk uploads is enabled or not\\n\\n* **Type:** `Boolean`\\n\\n* **Default:** `false`\\n\\n* **Usage:**\\n ```html\\n \\n \\n ```\\n\\n### chunk\\n\\nAll the options to handle chunk uploads\\n\\n* **Type:** `Object`\\n\\n* **Default:**\\n```js\\n{\\n headers: {\\n 'Content-Type': 'application/json'\\n },\\n action: '',\\n minSize: 1048576,\\n maxActive: 3,\\n maxRetries: 5,\\n\\n // This is the default Handler implemented in this package\\n // you can use your own handler if your protocol is different\\n handler: ChunkUploadDefaultHandler\\n}\\n```\\n\\n### drop\\n\\nDrag and drop upload\\n\\n* **Type:** `Boolean | Element | CSS selector`\\n\\n* **Default:** `false`\\n\\n* **Browser:** [http://caniuse.com/#feat=dragndrop](http://caniuse.com/#feat=dragndrop)\\n\\n* **Details:**\\n\\n If set to `true`, read the parent component as a container\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### drop-directory\\n\\nWhether to open the drag directory\\n\\n* **Type:** `Boolean`\\n\\n* **Default:** `true`\\n\\n* **Details:**\\n\\n If set to `false` filter out the directory\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n### add-index\\n\\n* **Type:** `Boolean, Number`\\n\\n* **Default:** `undefined`\\n\\n* **Version:** : `>=2.6.1`\\n\\n* **Details:**\\n\\n The default value of the `index` parameter for the [`add()`](#instance-methods-add) method\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n## Options / Events\\n\\nThe files is changed to trigger the method\\nDefault for `v-model` binding\\n\\n### @input\\n* **Arguments:**\\n\\n * `files: Array`\\n\\n\\n* **Usage:**\\n ```html\\n \\n \\n ```\\n\\n\\n\\n### @input-filter\\n\\nAdd, update, remove pre-filter\\n\\n* **Arguments:**\\n\\n * `newFile: File | Object | undefined` `Read and write`\\n * `oldFile: File | Object | undefined` `Read only`\\n * `prevent: Function` Call this function to prevent modification\\n\\n\\n* **Details:**\\n\\n If the `newFile` value is `undefined` 'is deleted\\n If the `oldFile` value is `undefined` 'is added\\n If `newFile`, `oldFile` is exist, it is updated\\n\\n > Synchronization modify `newFile`\\n > Asynchronous Please use `update`,` add`, `remove`,` clear` method\\n > Asynchronous Please set an error first to prevent being uploaded\\n\\n > Synchronization can not use `update`,` add`, `remove`,` clear` methods\\n > Asynchronous can not modify `newFile`\\n\\n* **Usage:**\\n ```html\\n \\n \\n ```\\n\\n### @input-file\\n\\nAdd, update, remove after\\n\\n* **Arguments:**\\n\\n * `newFile: File | Object | undefined` `Read only`\\n * `oldFile: File | Object | undefined` `Read only`\\n\\n\\n* **Details:**\\n\\n If the `newFile` value is `undefined` 'is deleted\\n If the `oldFile` value is `undefined` 'is added\\n If `newFile`, `oldFile` is exist, it is updated\\n\\n\\n >You can use `update`,` add`, `remove`,` clear` methods in the event\\n >You can not modify the `newFile` object in the event\\n >You can not modify the `oldFile` object in the event\\n\\n* **Usage:**\\n ```html\\n \\n \\n ```\\n\\n\\n\\n## Instance / Data\\n\\n### features\\n\\nUsed to determine the browser support features\\n\\n* **Type:** `Object`\\n\\n* **Read only:** `true`\\n\\n* **Default:** `{ html5: true, directory: false, drag: false }`\\n\\n* **Usage:**\\n ```html\\n \\n \\n Support drag and drop upload\\n Support folder upload\\n Support for HTML5\\n \\n ```\\n\\n\\n\\n### active\\n\\nActivation or abort upload\\n\\n* **Type:** `Boolean`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `false`\\n\\n* **Usage:**\\n ```html\\n \\n \\n Start upload\\n Stop upload\\n \\n ```\\n\\n\\n\\n### dropActive\\n\\nIs dragging\\n\\n* **Type:** `Boolean`\\n\\n* **Read only:** `true`\\n\\n* **Default:** `false`\\n\\n* **Usage:**\\n ```html\\n \\n \\n Drag and drop here for upload\\n \\n ```\\n\\n\\n\\n\\n\\n### uploaded\\n\\nAll uploaded\\n\\n* **Type:** `Boolean`\\n\\n* **Read only:** `true`\\n\\n* **Default:** `true`\\n\\n* **Usage:**\\n ```html\\n \\n \\n All files have been uploaded\\n \\n ```\\n\\n\\n\\n\\n\\n## Instance / Methods\\n\\n\\n\\n### get()\\n\\nUse `id` to get a file object\\n\\n* **Arguments:**\\n\\n * `id: File | Object | String`\\n\\n\\n* **Result:** `File | Object | Boolean` There is a return file, object that otherwise returns `false`\\n\\n\\n\\n### add()\\n\\nAdd one or more files\\n\\n* **Arguments:**\\n\\n * `files: Array | File | window.File | Object` If it is an array of responses will be an array\\n * `index: Number | Boolean` = [`props.add-index`](#options-props-add-index) `true = ` Start, `false = ` End, `Number = ` Index\\n\\n\\n* **Result:** `Object | Array | Boolean` The incoming array is returned to the array otherwise the object or `false`\\n\\n* **Usage:**\\n ```html\\n \\n \\n ```\\n\\n\\n### addInputFile()\\n\\nAdd the file selected by `` to the upload list\\n\\n* **Arguments:**\\n\\n * `el: HTMLInputElement` File element\\n\\n\\n* **Result:** `Array` Added list of files\\n\\n* **Version:** : `>=2.5.1`\\n\\n\\n\\n### addDataTransfer()\\n\\nAdd files that are dragged or pasted into the upload list\\n\\n* **Arguments:**\\n\\n * `dataTransfer: DataTransfer` Drag or paste data\\n\\n\\n* **Result:** `Promise>` Added list of files\\n\\n\\n* **Version:** : `>=2.5.1`\\n\\n\\n\\n### update()\\n\\nUpdate a file object\\n\\n* **Arguments:**\\n\\n * `id: File | Object | String`\\n * `data: Object` Updated data object\\n\\n\\n* **Result:** `Object | Boolean` Successfully returned `newFile` failed to return` false`\\n\\n\\n* **Usage:**\\n ```html\\n \\n \\n ```\\n\\n### remove()\\n\\nRemove a file object\\n\\n* **Arguments:**\\n\\n * `id: File | Object | String`\\n\\n\\n* **Result:** `Object | Boolean` Successfully returned `oldFile` failed to return` false`\\n\\n* **Usage:**\\n ```html\\n \\n \\n ```\\n\\n### replace()\\n Replace the location of the two files\\n\\n* **Arguments:**\\n\\n * `id1: File | Object | String`\\n * `id2: File | Object | String`\\n\\n\\n* **Result:** `Boolean`\\n\\n\\n### clear()\\n\\nEmpty the file list\\n\\n* **Result:** `Boolean` Always return `true`\\n\\n\\n\\n## Instance / File\\n\\n\\n\\n> **File object in the `@input-filter` event outside the use of [`update`](#instance-methods-update) method**\\n\\n\\n\\n\\n### fileObject\\n\\n* **Type:** `Boolean`\\n\\n* **Read only:** `true`\\n\\n* **Required:** `true`\\n\\n* **Default:** `true`\\n\\n* **Version:** : `>=2.6.0`\\n\\n* **Details:**\\n\\n If the attribute does not exist, the object will not be processed internally\\n If the attribute does not exist, it is not `File` but `Object`\\n\\n\\n\\n\\n### id\\n\\nFile ID\\n\\n* **Type:** `String | Number`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `Math.random().toString(36).substr(2)`\\n\\n* **Details:**\\n\\n >`id` can not be repeated\\n >Upload can not modify `id`\\n\\n\\n### size\\n\\nFile size\\n\\n* **Type:** `Number`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `-1`\\n\\n* **Browser:** `> IE9`\\n\\n\\n### name\\n\\nFilename\\n\\n* **Type:** `String`\\n\\n* **Read only:** `false`\\n\\n* **Default:** ` `\\n\\n* **Details:**\\n\\n Format: `directory/filename.gif` `filename.gif`\\n\\n\\n\\n### type\\n\\nMIME type\\n\\n* **Type:** `String`\\n\\n* **Read only:** `false`\\n\\n* **Default:** ` `\\n\\n* **Browser:** `> IE9`\\n\\n* **Details:**\\n\\n Format: `image/gif` `image/png` `text/html`\\n\\n\\n\\n\\n### active\\n\\nActivation or abort upload\\n\\n* **Type:** `Boolean`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `false`\\n\\n* **Details:**\\n\\n `true` = Upload\\n `false` = Abort\\n\\n\\n\\n\\n\\n\\n### error\\n\\nUpload failed error code\\n\\n* **Type:** `String`\\n\\n* **Read only:** `false`\\n\\n* **Default:** ` `\\n\\n* **Details:**\\n\\n Built-in\\n `size`, `extension`, `timeout`, `abort`, `network`, `server`, `denied`\\n\\n\\n\\n\\n### success\\n\\nWhether the upload was successful\\n\\n* **Type:** `Boolean`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `false`\\n\\n\\n### putAction\\n\\nCustomize the current file `PUT` URL\\n\\n* **Type:** `String`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `this.putAction`\\n\\n\\n\\n### postAction\\n\\nCustomize the current file `POST` URL\\n\\n* **Type:** `String`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `this.postAction`\\n\\n\\n\\n\\n### headers\\n\\nCustomize the current file `HTTP` Header\\n\\n* **Type:** `Object`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `this.headers`\\n\\n\\n### data\\n\\nCustomize the current file `body` or` query` to attach content\\n\\n* **Type:** `Object`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `this.data`\\n\\n\\n### timeout\\n\\nCustomize the upload timeout for a current single file\\n\\n* **Type:** `Number`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `this.timeout`\\n\\n\\n### response\\n\\nResponse data\\n\\n* **Type:** `Object | String`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `{}`\\n\\n\\n\\n\\n### progress\\n\\nUpload progress\\n\\n* **Type:** `String`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `0.00`\\n\\n* **Browser:** `> IE9`\\n\\n\\n\\n### speed\\n\\nPer second upload speed\\n\\n* **Type:** `Number`\\n\\n* **Read only:** `true`\\n\\n* **Default:** `0`\\n\\n* **Browser:** `> IE9`\\n\\n\\n\\n\\n### xhr\\n\\n`HTML5` upload` XMLHttpRequest` object\\n\\n* **Type:** `XMLHttpRequest`\\n\\n* **Read only:** `true`\\n\\n* **Default:** `undefined`\\n\\n* **Browser:** `> IE9`\\n\\n\\n\\n\\n### iframe\\n\\n`HTML4` upload` iframe` element\\n\\n* **Type:** `Element`\\n\\n* **Read only:** `true`\\n\\n* **Default:** `undefined`\\n\\n* **Browser:** `= IE9`\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./docs/docs/en.md\n// module id = 8\n// module chunks = 0","module.exports = \"## 入门开始\\n\\n### NPM\\n\\n``` bash\\nnpm install vue-upload-component --save\\n```\\n\\n``` js\\nconst VueUploadComponent = require('vue-upload-component')\\nVue.component('file-upload', VueUploadComponent)\\n```\\n\\n### Curated\\n\\n**No data**\\n\\n\\n### 直接使用\\n\\n\\nunpkg\\n\\n``` html\\n\\n\\n\\n```\\n\\njsDelivr\\n\\n``` html\\n\\n\\n\\n```\\n\\n\\n### 简单的例子\\n\\n\\n\\n```html\\n\\n\\n\\n \\n Vue-upload-component Test\\n \\n \\n\\n\\n
\\n
    \\n
  • {{file.name}} - Error: {{file.error}}, Success: {{file.success}}
  • \\n
\\n \\n 上传文件\\n \\n \\n \\n
\\n\\n\\n\\n```\\n\\n\\n\\n### SSR (服务器同构)\\n\\n\\n```html\\n\\n\\n\\n```\\n\\n\\n** 或者 **\\n\\n\\n```js\\nimport FileUpload from 'vue-upload-component/src'\\n```\\n\\nwebpack.config.js\\n\\n```js\\nconst nodeExternals = require('webpack-node-externals');\\n{\\n //...\\n externals: [\\n nodeExternals({whitelist:[/^vue-upload-component\\\\/src/]})\\n ]\\n //...\\n}\\n```\\n\\n* [https://github.com/liady/webpack-node-externals](https://github.com/liady/webpack-node-externals) \\n\\n* [**`vue-hackernews` 演示**](https://github.com/lian-yue/vue-hackernews-2.0/) \\n\\n* [**浏览修改文件**](https://github.com/lian-yue/vue-hackernews-2.0/commit/bd6c58a30cc6b8ba6c0148e737b3ce9336b99cf8)\\n\\n\\n\\n\\n## 选项 / 属性\\n\\n\\n### input-id\\n\\ninput 标签的 `id` 属性\\n\\n* **类型:** `String`\\n\\n* **默认值:** `this.name`\\n\\n* **示例:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### name\\n\\ninput标签的 `name` 属性\\n\\n* **类型:** `String`\\n\\n* **默认值:** `file`\\n\\n* **示例:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### post-action\\n\\n`POST` 请求的上传URL\\n\\n* **类型:** `String`\\n\\n* **默认值:** `undefined`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### put-action\\n\\n`PUT` 请求的上传URL\\n\\n* **类型:** `String`\\n\\n* **默认值:** `undefined`\\n\\n* **浏览器:** `> IE9`\\n\\n* **详细:** \\n\\n `put-action` 不为空请优先 `PUT` 请求 \\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n### custom-action\\n\\n自定义上传方法\\n\\n* **类型:** `async Function`\\n\\n* **默认值:** `undefined`\\n\\n* **详细:** \\n\\n `custom-action` 优先级高于 `put-action, post-action`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n ```js\\n async function customAction(file, component) {\\n // return await component.uploadPut(file)\\n return await component.uploadHtml4(file)\\n }\\n ```\\n\\n\\n\\n### headers\\n\\n自定义上传请求 `header` 数据\\n\\n* **类型:** `Object`\\n\\n* **默认值:** `{}`\\n\\n* **浏览器:** `> IE9`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### data\\n\\n`POST 请求`: 附加请求的 body \\n`PUT 请求`: 附加请求的 query \\n\\n* **类型:** `Object`\\n\\n* **默认值:** `{}`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n### value, v-model\\n\\n文件列表\\n\\n* **类型:** `Array`\\n\\n* **默认值:** `[]`\\n\\n* **详细:** \\n\\n 浏览 **[`File`](#file)** 详细信息 \\n > 为了防止不可预知的错误,不可直接修改 `files`,请使用 [`add`](#实例-方法-add), [`update`](#实例-方法-update), [`remove`](#实例-方法-remove) 方法修改\\n\\n* **示例:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### accept\\n\\n表单的`accept`属性, MIME type \\n\\n* **类型:** `String`\\n\\n* **默认值:** `undefined`\\n\\n* **浏览器:** `> IE9`\\n\\n* **示例:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### multiple\\n\\n文件表单的 `multiple` 属性 \\n是否允许选择多个文件 \\n\\n* **类型:** `Boolean`\\n\\n* **默认值:** `false`\\n\\n* **详细:** \\n\\n 如果是 `false` `files` 里面最多只有一个文件 多的会自动删除 \\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n### directory\\n\\n文件表单的 `directory` 属性 \\n是否是上传文件夹 \\n\\n* **类型:** `Boolean`\\n\\n* **默认值:** `false`\\n\\n* **浏览器:** [http://caniuse.com/#feat=input-file-directory](http://caniuse.com/#feat=input-file-directory)\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### extensions\\n\\n允许上传的文件后缀\\n\\n* **类型:** `Array | String | RegExp`\\n\\n* **默认值:** `undefined`\\n\\n* **示例:**\\n ```html\\n \\n \\n \\n \\n \\n ```\\n\\n\\n\\n\\n### size\\n\\n允许上传的最大字节\\n\\n* **类型:** `Number`\\n\\n* **默认值:** `0`\\n\\n* **浏览器:** `> IE9`\\n\\n* **详细:**\\n\\n `0` 等于不限制\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n### timeout\\n\\n上传超时时间毫秒\\n\\n* **类型:** `Number`\\n\\n* **默认值:** `0`\\n\\n* **浏览器:** `> IE9`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n### maximum\\n\\n列表最大文件数\\n\\n* **类型:** `Number`\\n\\n* **默认值:** `props.multiple ? 0 : 1`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n### thread\\n\\n同时并发上传的文件数量 线程数 \\n\\n* **类型:** `Number`\\n\\n* **默认值:** `1`\\n\\n* **浏览器:** `> IE9`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### drop\\n\\n拖拽上传 \\n\\n* **类型:** `Boolean | Element | CSS selector`\\n\\n* **默认值:** `false`\\n\\n* **浏览器:** [http://caniuse.com/#feat=dragndrop](http://caniuse.com/#feat=dragndrop)\\n\\n* **详细:**\\n\\n 如果设置成 `true` 则读取父组件作为容器 \\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### drop-directory\\n\\n是否开启拖拽目录 \\n\\n* **类型:** `Boolean`\\n\\n* **默认值:** `true`\\n\\n* **详细:**\\n\\n 如果设置成 `false` 则过滤掉目录\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n### add-index\\n\\n* **类型:** `Boolean, Number`\\n\\n* **默认值:** `undefined`\\n\\n* **版本:** `>= 2.6.1`\\n\\n* **详细:**\\n\\n [`add()`](#实例-方法-add) 方法 `index` 参数的默认值\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n## 选项 / 事件\\n\\n文件被改变触发的方法 \\n默认用于`v-model`绑定\\n\\n### @input\\n* **参数:**\\n\\n * `files: Array`\\n\\n\\n* **示例:**\\n ```html\\n \\n \\n ```\\n\\n\\n\\n### @input-filter\\n\\nAdd, update, remove pre-filter \\n\\n* **参数:**\\n\\n * `newFile: File | Object | undefined` `读写`\\n * `oldFile: File | Object | undefined` `只读`\\n * `prevent: Function` 调用该方法 阻止修改\\n\\n\\n* **详细:**\\n\\n 如果 `newFile` 值为 `undefined` 则是删除 \\n 如果 `oldFile` 值为 `undefined` 则是添加 \\n 如果 `newFile`, `oldFile` 都存在则是更新\\n\\n > 事件内同步处理请直接修改 `newFile` \\n > 事件内异步处理请使用 `update`, `add`, `remove`, `clear` 方法 \\n > 异步请先设置一个错误以防止被上传\\n\\n > 同步不能使用 `update`, `add`, `remove`, `clear` 方法 \\n > 异步不能修改 `newFile`\\n\\n\\n* **示例:** \\n ```html\\n \\n \\n ```\\n\\n### @input-file\\n\\n添加,更新,移除 后\\n\\n* **参数:**\\n\\n * `newFile: File | Object | undefined` `只读`\\n * `oldFile: File | Object | undefined` `只读`\\n\\n\\n* **详细:**\\n\\n 如果 `newFile` 值为 `undefined` 则是删除 \\n 如果 `oldFile` 值为 `undefined` 则是添加 \\n 如果 `newFile`, `oldFile` 都存在则是更新\\n\\n >事件内可使用 `update`, `add`, `remove`, `clear` 方法 \\n >事件内不可修改 `newFile` 对象 \\n >事件内不可修改 `oldFile` 对象\\n\\n* **示例:**\\n ```html\\n \\n \\n ```\\n\\n\\n\\n## 实例 / 数据\\n\\n### features\\n\\n用于判断浏览器支持的特性\\n\\n* **类型:** `Object`\\n\\n* **只读:** `true`\\n\\n* **默认值:** `{ html5: true, directory: false, drag: false }`\\n\\n* **示例:**\\n ```html\\n \\n \\n 支持拖拽上传\\n 支持文件夹上传\\n 支持HTML5\\n \\n ```\\n\\n\\n\\n### active\\n\\n激活或停止上传\\n\\n* **类型:** `Boolean`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `false`\\n\\n* **示例:**\\n ```html\\n \\n \\n 开始上传\\n 停止上传\\n \\n ```\\n\\n\\n\\n### dropActive\\n\\n是否正在拖拽\\n\\n* **类型:** `Boolean`\\n\\n* **只读:** `true`\\n\\n* **默认值:** `false`\\n\\n* **示例:**\\n ```html\\n \\n \\n 拖拽到这里上传\\n \\n ```\\n\\n\\n\\n\\n\\n### uploaded\\n\\n是否全部已上传\\n\\n* **类型:** `Boolean`\\n\\n* **只读:** `true`\\n\\n* **默认值:** `true`\\n\\n* **示例:**\\n ```html\\n \\n \\n 全部文件已上传完毕\\n \\n ```\\n\\n\\n\\n\\n\\n## 实例 / 方法\\n\\n\\n\\n### get()\\n\\n使用`id`获得某个对象\\n\\n* **参数:**\\n\\n * `id: File | Object | String`\\n\\n\\n* **结果:** `File | Object | Boolean` 存在返回文件对象否则返回 `false`\\n\\n\\n\\n### add()\\n\\n添加一个或多个文件\\n\\n* **参数:**\\n\\n * `files: Array | File | window.File | Object` 如果它是一个数组的响应将是一个数组\\n * `index: Number | Boolean` = [`props.add-index`](#选项-属性-add-index) `true = ` 开始位置, `false = ` 结束位置, `Number = ` 下标位置\\n\\n\\n* **结果:** `Object | Array | Boolean` 传入的是数组返回数组否则对象或`false`\\n\\n* **示例:**\\n ```html\\n \\n \\n ```\\n\\n\\n### addInputFile()\\n\\n把``选择的文件添加进上传列表 \\n\\n* **参数:**\\n\\n * `el: HTMLInputElement` 文件元素\\n\\n\\n* **结果:** `Array` 返回已添加的文件列表\\n\\n* **版本:** : `>=2.5.1`\\n\\n\\n\\n### addDataTransfer()\\n\\n把拖拽或者粘贴的数据的文件添加进上传列表 \\n\\n* **参数:**\\n\\n * `dataTransfer: DataTransfer` 拖拽或者粘贴的数据\\n\\n\\n* **结果:** `Promise>` 返回已添加的文件列表\\n\\n\\n* **版本:** : `>=2.5.1`\\n\\n\\n\\n### update()\\n\\n更新某个对象\\n\\n* **参数:**\\n\\n * `id: File | Object | String`\\n * `data: Object` 更新的数据对象\\n\\n\\n* **结果:** `Object | Boolean` 成功返回 `newFile` 失败返回 `false`\\n\\n\\n* **示例:**\\n ```html\\n \\n \\n ```\\n\\n### remove()\\n\\n移除某个文件对象\\n\\n* **参数:**\\n\\n * `id: File | Object | String`\\n\\n\\n* **结果:** `Object | Boolean` 成功返回 `oldFile` 失败返回 `false`\\n\\n* **示例:**\\n ```html\\n \\n \\n ```\\n\\n\\n### replace()\\n 替换两个文件的位置\\n\\n* **参数:**\\n\\n * `id1: File | Object | String`\\n * `id2: File | Object | String`\\n\\n\\n* **结果:** `Boolean`\\n\\n\\n\\n### clear()\\n\\n清空文件列表\\n\\n* **结果:** `Boolean` 总是返回 `true`\\n\\n\\n\\n## 实例 / File\\n\\n\\n> **文件对象在`input-filter`事件外修改请使用 [`update`](#实例-方法-update) 方法**\\n\\n\\n### fileObject\\n\\n* **类型:** `Boolean`\\n\\n* **只读:** `true`\\n\\n* **Required:** `true`\\n\\n* **默认值:** `true`\\n\\n* **版本:** : `>=2.6.0`\\n\\n* **详细:**\\n\\n 如果属性不存在,则不会在内部处理该对象 \\n 如果属性不存在,它不是 `File` 而是 `Object`\\n\\n\\n\\n### id\\n\\n文件id\\n\\n* **类型:** `String | Number`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `Math.random().toString(36).substr(2)`\\n\\n* **详细:**\\n\\n >`id` can not be repeated \\n >Upload can not modify `id`\\n\\n\\n### size\\n\\n文件大小\\n\\n* **类型:** `Number`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `-1`\\n\\n* **浏览器:** `> IE9`\\n\\n\\n### name\\n\\n文件名 \\n\\n* **类型:** `String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** ` `\\n\\n* **详细:**\\n\\n 格式: `directory/filename.gif` `filename.gif` \\n\\n\\n\\n### type\\n\\nMIME类型\\n\\n* **类型:** `String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** ` `\\n\\n* **浏览器:** `> IE9`\\n\\n* **详细:**\\n\\n 格式: `image/gif` `image/png` `text/html`\\n\\n\\n\\n\\n### active\\n\\n激活或终止上传\\n\\n* **类型:** `Boolean`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `false`\\n\\n* **详细:**\\n\\n `true` = 上传 \\n `false` = 停止 \\n\\n\\n\\n\\n\\n\\n### error\\n\\n上传失败错误代码\\n\\n* **类型:** `String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** ` `\\n\\n* **详细:**\\n\\n 内置\\n `size`, `extension`, `timeout`, `abort`, `network`, `server`, `denied`\\n\\n\\n\\n\\n### success\\n\\n是否上传成功\\n\\n* **类型:** `Boolean`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `false`\\n\\n\\n### putAction\\n\\n自定义当前文件 `PUT` 地址\\n\\n* **类型:** `String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `this.putAction`\\n\\n\\n\\n### postAction\\n\\n自定义当前文件 `POST` 地址\\n\\n* **类型:** `String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `this.postAction`\\n\\n\\n\\n\\n### headers\\n\\n自定义当前文件 `HTTP` Header\\n\\n* **类型:** `Object`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `this.headers`\\n\\n\\n### data\\n\\n自定义当前文件 `body` 或 `query` 附加内容\\n\\n* **类型:** `Object`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `this.data`\\n\\n\\n### timeout\\n\\n自定义当前单个文件的上传超时时间\\n\\n* **类型:** `Number`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `this.timeout`\\n\\n\\n### response\\n\\n响应的数据\\n\\n* **类型:** `Object | String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `{}`\\n\\n\\n\\n\\n### progress\\n\\n上传进度\\n\\n* **类型:** `String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `0.00`\\n\\n* **浏览器:** `> IE9`\\n\\n\\n\\n### speed\\n\\n每秒的上传速度\\n\\n* **类型:** `Number`\\n\\n* **只读:** `true`\\n\\n* **默认值:** `0`\\n\\n* **浏览器:** `> IE9`\\n\\n\\n\\n\\n### xhr\\n\\n`HTML5` 上传 `XMLHttpRequest` 对象\\n\\n* **类型:** `XMLHttpRequest`\\n\\n* **只读:** `true`\\n\\n* **默认值:** `undefined`\\n\\n* **浏览器:** `> IE9`\\n\\n\\n\\n\\n### iframe\\n\\n`HTML4` 上传 `iframe` 元素\\n\\n* **类型:** `Element`\\n\\n* **只读:** `true`\\n\\n* **默认值:** `undefined`\\n\\n* **浏览器:** `= IE9`\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./docs/docs/zh-cn.md\n// module id = 9\n// module chunks = 0","\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// docs/views/examples/Full.vue","module.exports = Cropper;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"Cropper\"\n// module id = 11\n// module chunks = 0","\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/FileUpload.vue","\n\n\n\n\n// WEBPACK FOOTER //\n// src/InputFile.vue","\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// docs/views/examples/Simple.vue","\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// docs/views/examples/Avatar.vue","\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// docs/views/examples/Drag.vue","\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// docs/views/examples/Multiple.vue","\n\n\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// docs/views/examples/Chunk.vue","\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// docs/views/examples/Vuex.vue","\n\n\n\n\n\n// WEBPACK FOOTER //\n// docs/views/App.vue","import Vue from 'vue'\nimport marked from 'marked'\nimport highlightjs from 'highlight.js'\nimport store from './store'\nimport router from './router'\nimport i18n from './i18n'\nimport App from './views/App'\n\nVue.config.silent = false\nVue.config.devtools = true\n\n\nclass Renderer extends marked.Renderer {\n heading(text, level, raw) {\n let rawName = raw.toLowerCase().replace(/([\\u0000-\\u002F\\u003A-\\u0060\\u007B-\\u007F]+)/g, '-').replace(/^\\-+|\\-+$/, '')\n\n if (!this.options.headers) {\n this.options.headers = []\n }\n while (this.options.headers.length >= level) {\n this.options.headers.pop()\n }\n let parent = this.options.headers.filter(value => !!value).join('-')\n if (parent) {\n parent = parent + '-'\n }\n while (this.options.headers.length < (level - 1)) {\n this.options.headers.push('')\n }\n this.options.headers.push(rawName)\n return ''\n + text\n + '\\n'\n }\n}\n\nmarked.setOptions({\n renderer: new Renderer(),\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n smartLists: true,\n smartypants: false,\n highlight(code, lang) {\n if (lang) {\n return highlightjs.highlight(lang, code).value\n } else {\n return highlightjs.highlightAuto(code).value\n }\n }\n})\n\nVue.directive('markdown', function (el, binding, vnode) {\n if (!el.className || !/vue-markdown/.test(el.className)) {\n el.className += ' vue-markdown'\n }\n let text = ''\n for (let i = 0; i < vnode.children.length; i++) {\n text += vnode.children[i].text || ''\n }\n if (el.markdown === text) {\n return\n }\n\n el.markdown = text\n\n el.innerHTML = marked(text)\n let selectorList = el.querySelectorAll('a')\n for (let i = 0; i < selectorList.length; i++) {\n selectorList[i].onclick = function (e) {\n if (e.metaKey || e.ctrlKey || e.shiftKey) {\n return\n }\n if (e.defaultPrevented) {\n return\n }\n if (e.button !== undefined && e.button !== 0) {\n return\n }\n\n if (this.host !== window.location.host) {\n return\n }\n\n let href = this.getAttribute('href')\n if (!href) {\n return\n }\n\n if (href.charAt(0) !== '#') {\n return\n }\n\n e.preventDefault()\n router.push(href)\n }\n }\n})\n\n\n\nVue.filter('formatSize', function (size) {\n if (size > 1024 * 1024 * 1024 * 1024) {\n return (size / 1024 / 1024 / 1024 / 1024).toFixed(2) + ' TB'\n } else if (size > 1024 * 1024 * 1024) {\n return (size / 1024 / 1024 / 1024).toFixed(2) + ' GB'\n } else if (size > 1024 * 1024) {\n return (size / 1024 / 1024).toFixed(2) + ' MB'\n } else if (size > 1024) {\n return (size / 1024).toFixed(2) + ' KB'\n }\n return size.toString() + ' B'\n})\n\nVue.filter('toLocale', function (to) {\n return '/' + i18n.locale + to\n})\n\n\n\nnew Vue({\n store,\n router,\n i18n,\n ...App\n}).$mount('#app')\n\n\n\n// WEBPACK FOOTER //\n// ./docs/index.js","module.exports = Vue;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"Vue\"\n// module id = 23\n// module chunks = 0","module.exports = hljs;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"hljs\"\n// module id = 24\n// module chunks = 0","// import Vue from 'vue'\nimport Vuex from 'vuex'\n//\n// Vue.use(Vuex)\n\n\nconst state = {\n files: [],\n}\n\nconst mutations = {\n updateFiles(state, files) {\n state.files = files\n }\n}\nexport default new Vuex.Store({\n strict: true,\n state,\n mutations\n})\n\n\n\n// WEBPACK FOOTER //\n// ./docs/store.js","// import Vue from 'vue'\nimport VueRouter from 'vue-router'\n\nimport i18n from './i18n'\nimport RouterComponent from './views/Router'\nimport DocumentComponent from './views/Document'\nimport ExampleComponent from './views/Example'\n\nimport FullExampleComponent from './views/examples/Full'\nimport SimpleExampleComponent from './views/examples/Simple'\nimport AvatarExampleComponent from './views/examples/Avatar'\nimport DragExampleComponent from './views/examples/Drag'\nimport MultipleExampleComponent from './views/examples/Multiple'\nimport ChunkExampleComponent from './views/examples/Chunk'\nimport VuexExampleComponent from './views/examples/Vuex'\n\n\n\n// Vue.use(VueRouter)\n\n\nlet examples = [\n {\n path: '',\n component: FullExampleComponent,\n },\n {\n path: 'full',\n component: FullExampleComponent,\n },\n {\n path: 'simple',\n component: SimpleExampleComponent,\n },\n {\n path: 'avatar',\n component: AvatarExampleComponent,\n },\n {\n path: 'drag',\n component: DragExampleComponent,\n },\n {\n path: 'multiple',\n component: MultipleExampleComponent,\n },\n {\n path: 'chunk',\n component: ChunkExampleComponent,\n },\n {\n path: 'vuex',\n component: VuexExampleComponent,\n },\n]\n\n\n\nconst router = new VueRouter({\n mode: 'hash',\n fallback: false,\n scrollBehavior(to, from, savedPosition) {\n if (savedPosition) {\n return savedPosition\n } else if (to.hash) {\n let el = document.querySelector(to.hash)\n return { x: 0, y: el ? el.offsetTop : 0 }\n } else {\n return { x: 0, y: 0 }\n }\n },\n routes: [\n {\n path: '/:locale(' + Object.keys(i18n.messages).join('|') + ')?',\n component: RouterComponent,\n children: [\n {\n path: 'documents',\n component: DocumentComponent,\n },\n {\n path: 'examples',\n component: ExampleComponent,\n children: examples,\n },\n {\n path: '',\n component: ExampleComponent,\n children: examples,\n },\n ]\n },\n ]\n})\nexport default router\n\n\n\n// WEBPACK FOOTER //\n// ./docs/router.js","module.exports = VueRouter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"VueRouter\"\n// module id = 27\n// module chunks = 0","module.exports = VueI18n;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"VueI18n\"\n// module id = 28\n// module chunks = 0","export default {\n header: {\n logo: 'Vuejs',\n home: 'Home',\n examples: 'Examples',\n documents: 'Documentation',\n blog: 'Blog',\n locale: 'Language(语言)',\n issues: 'Issues',\n github: 'Github',\n },\n\n locale: {\n en: 'English',\n 'zh-cn': '中文(简体)',\n },\n\n document: {\n title: 'Documentation',\n },\n\n example: {\n full: 'Full Example',\n simple: 'Simple',\n avatar: 'Upload avatar',\n drag: 'Drag and drop',\n multiple: 'Multiple instances',\n chunk: 'Chunk upload',\n vuex: 'Vuex',\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./docs/i18n/en.js","export default {\n header: {\n logo: 'Vuejs',\n home: '首页',\n examples: '演示',\n documents: '文档',\n blog: 'Blog',\n locale: 'Language(语言)',\n issues: 'Issues',\n github: 'Github',\n },\n\n locale: {\n en: 'English',\n 'zh-cn': '中文(简体)',\n },\n\n document: {\n title: '文档',\n },\n\n\n example: {\n full: '完整例子',\n simple: '简单例子',\n avatar: '上传头像',\n drag: '拖拽上传',\n multiple: '多个实例',\n vuex: 'Vuex',\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./docs/i18n/zh-cn.js","var normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nvar __vue_script__ = null\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-3075fd62\\\",\\\"hasScoped\\\":false,\\\"preserveWhitespace\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Router.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./docs/views/Router.vue\n// module id = 31\n// module chunks = 0","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('router-view')}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-3075fd62\",\"hasScoped\":false,\"preserveWhitespace\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./docs/views/Router.vue\n// module id = 32\n// module chunks = 0","function injectStyle (ssrContext) {\n require(\"!!vue-style-loader!css-loader?minimize!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-61209807\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Document.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader?{\\\"presets\\\":[[\\\"env\\\",{\\\"modules\\\":false}],\\\"stage-0\\\"],\\\"plugins\\\":[[\\\"transform-runtime\\\",{\\\"helpers\\\":false,\\\"polyfill\\\":false,\\\"regenerator\\\":true,\\\"moduleName\\\":\\\"babel-runtime\\\"}]],\\\"cacheDirectory\\\":false}!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Document.vue\"\nimport __vue_script__ from \"!!babel-loader?{\\\"presets\\\":[[\\\"env\\\",{\\\"modules\\\":false}],\\\"stage-0\\\"],\\\"plugins\\\":[[\\\"transform-runtime\\\",{\\\"helpers\\\":false,\\\"polyfill\\\":false,\\\"regenerator\\\":true,\\\"moduleName\\\":\\\"babel-runtime\\\"}]],\\\"cacheDirectory\\\":false}!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Document.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-61209807\\\",\\\"hasScoped\\\":false,\\\"preserveWhitespace\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Document.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./docs/views/Document.vue\n// module id = 33\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \\n\\n```\\n\\n\\n** 或者 **\\n\\n\\n```js\\nimport FileUpload from 'vue-upload-component/src'\\n```\\n\\nwebpack.config.js\\n\\n```js\\nconst nodeExternals = require('webpack-node-externals');\\n{\\n //...\\n externals: [\\n nodeExternals({whitelist:[/^vue-upload-component\\\\/src/]})\\n ]\\n //...\\n}\\n```\\n\\n* [https://github.com/liady/webpack-node-externals](https://github.com/liady/webpack-node-externals) \\n\\n* [**`vue-hackernews` 演示**](https://github.com/lian-yue/vue-hackernews-2.0/) \\n\\n* [**浏览修改文件**](https://github.com/lian-yue/vue-hackernews-2.0/commit/bd6c58a30cc6b8ba6c0148e737b3ce9336b99cf8)\\n\\n\\n\\n\\n## 选项 / 属性\\n\\n\\n### input-id\\n\\ninput 标签的 `id` 属性\\n\\n* **类型:** `String`\\n\\n* **默认值:** `this.name`\\n\\n* **示例:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### name\\n\\ninput标签的 `name` 属性\\n\\n* **类型:** `String`\\n\\n* **默认值:** `file`\\n\\n* **示例:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### post-action\\n\\n`POST` 请求的上传URL\\n\\n* **类型:** `String`\\n\\n* **默认值:** `undefined`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### put-action\\n\\n`PUT` 请求的上传URL\\n\\n* **类型:** `String`\\n\\n* **默认值:** `undefined`\\n\\n* **浏览器:** `> IE9`\\n\\n* **详细:** \\n\\n `put-action` 不为空请优先 `PUT` 请求 \\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n### custom-action\\n\\n自定义上传方法\\n\\n* **类型:** `async Function`\\n\\n* **默认值:** `undefined`\\n\\n* **详细:** \\n\\n `custom-action` 优先级高于 `put-action, post-action`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n ```js\\n async function customAction(file, component) {\\n // return await component.uploadPut(file)\\n return await component.uploadHtml4(file)\\n }\\n ```\\n\\n\\n\\n### headers\\n\\n自定义上传请求 `header` 数据\\n\\n* **类型:** `Object`\\n\\n* **默认值:** `{}`\\n\\n* **浏览器:** `> IE9`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### data\\n\\n`POST 请求`: 附加请求的 body \\n`PUT 请求`: 附加请求的 query \\n\\n* **类型:** `Object`\\n\\n* **默认值:** `{}`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n### value, v-model\\n\\n文件列表\\n\\n* **类型:** `Array`\\n\\n* **默认值:** `[]`\\n\\n* **详细:** \\n\\n 浏览 **[`File`](#file)** 详细信息 \\n > 为了防止不可预知的错误,不可直接修改 `files`,请使用 [`add`](#实例-方法-add), [`update`](#实例-方法-update), [`remove`](#实例-方法-remove) 方法修改\\n\\n* **示例:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### accept\\n\\n表单的`accept`属性, MIME type \\n\\n* **类型:** `String`\\n\\n* **默认值:** `undefined`\\n\\n* **浏览器:** `> IE9`\\n\\n* **示例:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### multiple\\n\\n文件表单的 `multiple` 属性 \\n是否允许选择多个文件 \\n\\n* **类型:** `Boolean`\\n\\n* **默认值:** `false`\\n\\n* **详细:** \\n\\n 如果是 `false` `files` 里面最多只有一个文件 多的会自动删除 \\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n### directory\\n\\n文件表单的 `directory` 属性 \\n是否是上传文件夹 \\n\\n* **类型:** `Boolean`\\n\\n* **默认值:** `false`\\n\\n* **浏览器:** [http://caniuse.com/#feat=input-file-directory](http://caniuse.com/#feat=input-file-directory)\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### extensions\\n\\n允许上传的文件后缀\\n\\n* **类型:** `Array | String | RegExp`\\n\\n* **默认值:** `undefined`\\n\\n* **示例:**\\n ```html\\n \\n \\n \\n \\n \\n ```\\n\\n\\n\\n\\n### size\\n\\n允许上传的最大字节\\n\\n* **类型:** `Number`\\n\\n* **默认值:** `0`\\n\\n* **浏览器:** `> IE9`\\n\\n* **详细:**\\n\\n `0` 等于不限制\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n### timeout\\n\\n上传超时时间毫秒\\n\\n* **类型:** `Number`\\n\\n* **默认值:** `0`\\n\\n* **浏览器:** `> IE9`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n### maximum\\n\\n列表最大文件数\\n\\n* **类型:** `Number`\\n\\n* **默认值:** `props.multiple ? 0 : 1`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n### thread\\n\\n同时并发上传的文件数量 线程数 \\n\\n* **类型:** `Number`\\n\\n* **默认值:** `1`\\n\\n* **浏览器:** `> IE9`\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### drop\\n\\n拖拽上传 \\n\\n* **类型:** `Boolean | Element | CSS selector`\\n\\n* **默认值:** `false`\\n\\n* **浏览器:** [http://caniuse.com/#feat=dragndrop](http://caniuse.com/#feat=dragndrop)\\n\\n* **详细:**\\n\\n 如果设置成 `true` 则读取父组件作为容器 \\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### drop-directory\\n\\n是否开启拖拽目录 \\n\\n* **类型:** `Boolean`\\n\\n* **默认值:** `true`\\n\\n* **详细:**\\n\\n 如果设置成 `false` 则过滤掉目录\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n### add-index\\n\\n* **类型:** `Boolean, Number`\\n\\n* **默认值:** `undefined`\\n\\n* **版本:** `>= 2.6.1`\\n\\n* **详细:**\\n\\n [`add()`](#实例-方法-add) 方法 `index` 参数的默认值\\n\\n* **示例:**\\n ```html\\n \\n ```\\n\\n\\n\\n## 选项 / 事件\\n\\n文件被改变触发的方法 \\n默认用于`v-model`绑定\\n\\n### @input\\n* **参数:**\\n\\n * `files: Array`\\n\\n\\n* **示例:**\\n ```html\\n \\n \\n ```\\n\\n\\n\\n### @input-filter\\n\\nAdd, update, remove pre-filter \\n\\n* **参数:**\\n\\n * `newFile: File | Object | undefined` `读写`\\n * `oldFile: File | Object | undefined` `只读`\\n * `prevent: Function` 调用该方法 阻止修改\\n\\n\\n* **详细:**\\n\\n 如果 `newFile` 值为 `undefined` 则是删除 \\n 如果 `oldFile` 值为 `undefined` 则是添加 \\n 如果 `newFile`, `oldFile` 都存在则是更新\\n\\n > 事件内同步处理请直接修改 `newFile` \\n > 事件内异步处理请使用 `update`, `add`, `remove`, `clear` 方法 \\n > 异步请先设置一个错误以防止被上传\\n\\n > 同步不能使用 `update`, `add`, `remove`, `clear` 方法 \\n > 异步不能修改 `newFile`\\n\\n\\n* **示例:** \\n ```html\\n \\n \\n ```\\n\\n### @input-file\\n\\n添加,更新,移除 后\\n\\n* **参数:**\\n\\n * `newFile: File | Object | undefined` `只读`\\n * `oldFile: File | Object | undefined` `只读`\\n\\n\\n* **详细:**\\n\\n 如果 `newFile` 值为 `undefined` 则是删除 \\n 如果 `oldFile` 值为 `undefined` 则是添加 \\n 如果 `newFile`, `oldFile` 都存在则是更新\\n\\n >事件内可使用 `update`, `add`, `remove`, `clear` 方法 \\n >事件内不可修改 `newFile` 对象 \\n >事件内不可修改 `oldFile` 对象\\n\\n* **示例:**\\n ```html\\n \\n \\n ```\\n\\n\\n\\n## 实例 / 数据\\n\\n### features\\n\\n用于判断浏览器支持的特性\\n\\n* **类型:** `Object`\\n\\n* **只读:** `true`\\n\\n* **默认值:** `{ html5: true, directory: false, drag: false }`\\n\\n* **示例:**\\n ```html\\n \\n \\n 支持拖拽上传\\n 支持文件夹上传\\n 支持HTML5\\n \\n ```\\n\\n\\n\\n### active\\n\\n激活或停止上传\\n\\n* **类型:** `Boolean`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `false`\\n\\n* **示例:**\\n ```html\\n \\n \\n 开始上传\\n 停止上传\\n \\n ```\\n\\n\\n\\n### dropActive\\n\\n是否正在拖拽\\n\\n* **类型:** `Boolean`\\n\\n* **只读:** `true`\\n\\n* **默认值:** `false`\\n\\n* **示例:**\\n ```html\\n \\n \\n 拖拽到这里上传\\n \\n ```\\n\\n\\n\\n\\n\\n### uploaded\\n\\n是否全部已上传\\n\\n* **类型:** `Boolean`\\n\\n* **只读:** `true`\\n\\n* **默认值:** `true`\\n\\n* **示例:**\\n ```html\\n \\n \\n 全部文件已上传完毕\\n \\n ```\\n\\n\\n\\n\\n\\n## 实例 / 方法\\n\\n\\n\\n### get()\\n\\n使用`id`获得某个对象\\n\\n* **参数:**\\n\\n * `id: File | Object | String`\\n\\n\\n* **结果:** `File | Object | Boolean` 存在返回文件对象否则返回 `false`\\n\\n\\n\\n### add()\\n\\n添加一个或多个文件\\n\\n* **参数:**\\n\\n * `files: Array | File | window.File | Object` 如果它是一个数组的响应将是一个数组\\n * `index: Number | Boolean` = [`props.add-index`](#选项-属性-add-index) `true = ` 开始位置, `false = ` 结束位置, `Number = ` 下标位置\\n\\n\\n* **结果:** `Object | Array | Boolean` 传入的是数组返回数组否则对象或`false`\\n\\n* **示例:**\\n ```html\\n \\n \\n ```\\n\\n\\n### addInputFile()\\n\\n把``选择的文件添加进上传列表 \\n\\n* **参数:**\\n\\n * `el: HTMLInputElement` 文件元素\\n\\n\\n* **结果:** `Array` 返回已添加的文件列表\\n\\n* **版本:** : `>=2.5.1`\\n\\n\\n\\n### addDataTransfer()\\n\\n把拖拽或者粘贴的数据的文件添加进上传列表 \\n\\n* **参数:**\\n\\n * `dataTransfer: DataTransfer` 拖拽或者粘贴的数据\\n\\n\\n* **结果:** `Promise>` 返回已添加的文件列表\\n\\n\\n* **版本:** : `>=2.5.1`\\n\\n\\n\\n### update()\\n\\n更新某个对象\\n\\n* **参数:**\\n\\n * `id: File | Object | String`\\n * `data: Object` 更新的数据对象\\n\\n\\n* **结果:** `Object | Boolean` 成功返回 `newFile` 失败返回 `false`\\n\\n\\n* **示例:**\\n ```html\\n \\n \\n ```\\n\\n### remove()\\n\\n移除某个文件对象\\n\\n* **参数:**\\n\\n * `id: File | Object | String`\\n\\n\\n* **结果:** `Object | Boolean` 成功返回 `oldFile` 失败返回 `false`\\n\\n* **示例:**\\n ```html\\n \\n \\n ```\\n\\n\\n### replace()\\n 替换两个文件的位置\\n\\n* **参数:**\\n\\n * `id1: File | Object | String`\\n * `id2: File | Object | String`\\n\\n\\n* **结果:** `Boolean`\\n\\n\\n\\n### clear()\\n\\n清空文件列表\\n\\n* **结果:** `Boolean` 总是返回 `true`\\n\\n\\n\\n## 实例 / File\\n\\n\\n> **文件对象在`input-filter`事件外修改请使用 [`update`](#实例-方法-update) 方法**\\n\\n\\n### fileObject\\n\\n* **类型:** `Boolean`\\n\\n* **只读:** `true`\\n\\n* **Required:** `true`\\n\\n* **默认值:** `true`\\n\\n* **版本:** : `>=2.6.0`\\n\\n* **详细:**\\n\\n 如果属性不存在,则不会在内部处理该对象 \\n 如果属性不存在,它不是 `File` 而是 `Object`\\n\\n\\n\\n### id\\n\\n文件id\\n\\n* **类型:** `String | Number`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `Math.random().toString(36).substr(2)`\\n\\n* **详细:**\\n\\n >`id` can not be repeated \\n >Upload can not modify `id`\\n\\n\\n### size\\n\\n文件大小\\n\\n* **类型:** `Number`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `-1`\\n\\n* **浏览器:** `> IE9`\\n\\n\\n### name\\n\\n文件名 \\n\\n* **类型:** `String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** ` `\\n\\n* **详细:**\\n\\n 格式: `directory/filename.gif` `filename.gif` \\n\\n\\n\\n### type\\n\\nMIME类型\\n\\n* **类型:** `String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** ` `\\n\\n* **浏览器:** `> IE9`\\n\\n* **详细:**\\n\\n 格式: `image/gif` `image/png` `text/html`\\n\\n\\n\\n\\n### active\\n\\n激活或终止上传\\n\\n* **类型:** `Boolean`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `false`\\n\\n* **详细:**\\n\\n `true` = 上传 \\n `false` = 停止 \\n\\n\\n\\n\\n\\n\\n### error\\n\\n上传失败错误代码\\n\\n* **类型:** `String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** ` `\\n\\n* **详细:**\\n\\n 内置\\n `size`, `extension`, `timeout`, `abort`, `network`, `server`, `denied`\\n\\n\\n\\n\\n### success\\n\\n是否上传成功\\n\\n* **类型:** `Boolean`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `false`\\n\\n\\n### putAction\\n\\n自定义当前文件 `PUT` 地址\\n\\n* **类型:** `String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `this.putAction`\\n\\n\\n\\n### postAction\\n\\n自定义当前文件 `POST` 地址\\n\\n* **类型:** `String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `this.postAction`\\n\\n\\n\\n\\n### headers\\n\\n自定义当前文件 `HTTP` Header\\n\\n* **类型:** `Object`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `this.headers`\\n\\n\\n### data\\n\\n自定义当前文件 `body` 或 `query` 附加内容\\n\\n* **类型:** `Object`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `this.data`\\n\\n\\n### timeout\\n\\n自定义当前单个文件的上传超时时间\\n\\n* **类型:** `Number`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `this.timeout`\\n\\n\\n### response\\n\\n响应的数据\\n\\n* **类型:** `Object | String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `{}`\\n\\n\\n\\n\\n### progress\\n\\n上传进度\\n\\n* **类型:** `String`\\n\\n* **只读:** `false`\\n\\n* **默认值:** `0.00`\\n\\n* **浏览器:** `> IE9`\\n\\n\\n\\n### speed\\n\\n每秒的上传速度\\n\\n* **类型:** `Number`\\n\\n* **只读:** `true`\\n\\n* **默认值:** `0`\\n\\n* **浏览器:** `> IE9`\\n\\n\\n\\n\\n### xhr\\n\\n`HTML5` 上传 `XMLHttpRequest` 对象\\n\\n* **类型:** `XMLHttpRequest`\\n\\n* **只读:** `true`\\n\\n* **默认值:** `undefined`\\n\\n* **浏览器:** `> IE9`\\n\\n\\n\\n\\n### iframe\\n\\n`HTML4` 上传 `iframe` 元素\\n\\n* **类型:** `Element`\\n\\n* **只读:** `true`\\n\\n* **默认值:** `undefined`\\n\\n* **浏览器:** `= IE9`\\n\"","module.exports = \"\\n> **The document uses Google Translate**\\n\\n## Getting Started\\n\\n### NPM\\n\\n``` bash\\nnpm install vue-upload-component --save\\n```\\n\\n``` js\\nconst VueUploadComponent = require('vue-upload-component')\\nVue.component('file-upload', VueUploadComponent)\\n```\\n\\n### Curated\\n\\n**No data**\\n\\n\\n### Script\\n\\n\\nunpkg\\n\\n``` html\\n\\n\\n\\n```\\n\\njsDelivr\\n\\n``` html\\n\\n\\n\\n```\\n\\n\\n### Simple example\\n\\n\\n\\n```html\\n\\n\\n\\n \\n Vue-upload-component Test\\n \\n \\n\\n\\n
\\n
    \\n
  • {{file.name}} - Error: {{file.error}}, Success: {{file.success}}
  • \\n
\\n \\n Upload file\\n \\n \\n \\n
\\n\\n\\n\\n```\\n\\n### Chunk Upload\\n\\nThis package allows chunk uploads, which means you can upload a file in different parts.\\n\\nThis process is divided in three phases: start, upload,finish

\\n\\n#### start\\n\\nThis is the first phase of the process. We'll tell the backend that we are going to upload a file, with certain `size` and `mime_type`.\\n\\nUse the option `startBody` to add more parameters to the body of this request.\\n\\nThe backend should provide a `session_id` (to identify the upload) and a `end_offset` which is the size of every chunk\\n\\n#### upload\\n\\nIn this phase we'll upload every chunk until all of them are uploaded. This step allows some failures in the backend, and will retry up to `maxRetries` times.\\n\\nWe'll send the `session_id`, `start_chunk` and `chunk` (the sliced blob - part of file we are uploading). We expect the backend to return `{ status: 'success' }`, we'll retry otherwise.\\n\\nUse the option `uploadBody` to add more parameters to the body of this request.\\n\\n#### finish\\n\\nIn this phase we tell the backend that there are no more chunks to upload, so it can wrap everything. We send the `session_id` in this phase.\\n\\nUse the option `finishBody` to add more parameters to the body of this request.\\n\\n#### Example\\n\\nIn the following example we are going to add `Chunk Upload Functionality`. This component will use `Chunk Upload` when the size of the file is > `1MB`, it will behave as the `Simple example` when the size of the file is lower.\\n\\n```html\\n \\n Upload file\\n \\n```\\n\\n#### Extending the handler\\n\\nWe are using the class `src/chunk/ChunkUploadHandler` class to implement this protocol. You can extend this class (or even create a different one from scratch) to implement your own way to communicat with the backend.\\n\\nThis class must implement a method called `upload` which **must** return a promise. This promise will be used by the `FileUpload` component to determinate whether the file was uploaded or failed.\\n\\nUse the `handler` parameter to use a different Handler\\n\\n```html\\n :chunk=\\\"{\\n action: '/upload/chunk',\\n minSize: 1048576,\\n maxActive: 3,\\n maxRetries: 5,\\n\\n handler: MyHandlerClass\\n }\\n```\\n\\n### SSR (Server isomorphism)\\n\\n\\n```html\\n\\n\\n\\n```\\n\\n\\n** OR **\\n\\n\\n```js\\nimport FileUpload from 'vue-upload-component/src'\\n```\\n\\n\\nwebpack.config.js\\n\\n```js\\nconst nodeExternals = require('webpack-node-externals');\\n{\\n //.....\\n externals: [\\n nodeExternals({whitelist:[/^vue-upload-component\\\\/src/]})\\n ]\\n //.....\\n}\\n```\\n\\n* [https://github.com/liady/webpack-node-externals](https://github.com/liady/webpack-node-externals)\\n\\n* [**`vue-hackernews` demo**](https://github.com/lian-yue/vue-hackernews-2.0/)\\n\\n* [**View changes**](https://github.com/lian-yue/vue-hackernews-2.0/commit/bd6c58a30cc6b8ba6c0148e737b3ce9336b99cf8)\\n\\n\\n\\n\\n## Options / Props\\n\\n\\n### input-id\\n\\nThe `id` attribute of the input tag\\n\\n* **Type:** `String`\\n\\n* **Default:** `this.name`\\n\\n* **Usage:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### name\\n\\nThe `name` attribute of the input tag\\n\\n* **Type:** `String`\\n\\n* **Default:** `file`\\n\\n* **Usage:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### post-action\\n\\n`POST` Request upload URL\\n\\n* **Type:** `String`\\n\\n* **Default:** `undefined`\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### put-action\\n\\n`PUT` Request upload URL\\n\\n* **Type:** `String`\\n\\n* **Default:** `undefined`\\n\\n* **Browser:** `> IE9`\\n\\n* **Details:**\\n\\n `put-action` is not empty Please give priority to` PUT` request\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n### custom-action\\n\\nCustom upload method\\n\\n* **Type:** `async Function`\\n\\n* **Default:** `undefined`\\n\\n* **Details:** \\n\\n `custom-action` priority than `put-action, post-action`\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n ```js\\n async function customAction(file, component) {\\n // return await component.uploadPut(file)\\n return await component.uploadHtml4(file)\\n }\\n ```\\n\\n\\n\\n\\n\\n### headers\\n\\nAttach `header` data\\n\\n* **Type:** `Object`\\n\\n* **Default:** `{}`\\n\\n* **Browser:** `> IE9`\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### data\\n\\n`POST request`: Append request `body`\\n`PUT request`: Append request `query`\\n\\n* **Type:** `Object`\\n\\n* **Default:** `{}`\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n### value, v-model\\n\\nFile List\\n\\n* **Type:** `Array`\\n\\n* **Default:** `[]`\\n\\n* **Details:**\\n\\n View **[`File`](#file)** details\\n > In order to prevent unpredictable errors, can not directly modify the `files`, please use [`add`](#instance-methods-add), [`update`](#instance-methods-update), [`remove`](#instance-methods-remove) method to modify\\n\\n* **Usage:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### accept\\n\\nThe `accept` attribute of the input tag, MIME type\\n\\n* **Type:** `String`\\n\\n* **Default:** `undefined`\\n\\n* **Browser:** `> IE9`\\n\\n* **Usage:**\\n ```html\\n \\n \\n \\n ```\\n\\n\\n\\n\\n\\n### multiple\\n\\nThe `multiple` attribute of the input tag\\nWhether to allow multiple files to be selected\\n\\n* **Type:** `Boolean`\\n\\n* **Default:** `false`\\n\\n* **Details:**\\n\\n If it is `false` file inside only one file will be automatically deleted\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n### directory\\n\\nThe `directory` attribute of the input tag\\nWhether it is a upload folder\\n\\n* **Type:** `Boolean`\\n\\n* **Default:** `false`\\n\\n* **Browser:** [http://caniuse.com/#feat=input-file-directory](http://caniuse.com/#feat=input-file-directory)\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### extensions\\n\\nAllow upload file extensions\\n\\n* **Type:** `Array | String | RegExp`\\n\\n* **Default:** `undefined`\\n\\n* **Usage:**\\n ```html\\n \\n \\n \\n \\n \\n ```\\n\\n\\n\\n\\n### size\\n\\nAllow the maximum byte to upload\\n\\n* **Type:** `Number`\\n\\n* **Default:** `0`\\n\\n* **Browser:** `> IE9`\\n\\n* **Details:**\\n\\n `0` is equal to not limit\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n### timeout\\n\\nUpload timeout time in milliseconds\\n\\n* **Type:** `Number`\\n\\n* **Default:** `0`\\n\\n* **Browser:** `> IE9`\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n### maximum\\n\\nList the maximum number of files\\n\\n* **Type:** `Number`\\n\\n* **Default:** `props.multiple ? 0 : 1`\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n### thread\\n\\nAlso upload the number of files at the same time (number of threads)\\n\\n* **Type:** `Number`\\n\\n* **Default:** `1`\\n\\n* **Browser:** `> IE9`\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n### chunk-enabled\\n\\nWhether chunk uploads is enabled or not\\n\\n* **Type:** `Boolean`\\n\\n* **Default:** `false`\\n\\n* **Usage:**\\n ```html\\n \\n \\n ```\\n\\n### chunk\\n\\nAll the options to handle chunk uploads\\n\\n* **Type:** `Object`\\n\\n* **Default:**\\n```js\\n{\\n headers: {\\n 'Content-Type': 'application/json'\\n },\\n action: '',\\n minSize: 1048576,\\n maxActive: 3,\\n maxRetries: 5,\\n\\n // This is the default Handler implemented in this package\\n // you can use your own handler if your protocol is different\\n handler: ChunkUploadDefaultHandler\\n}\\n```\\n\\n### drop\\n\\nDrag and drop upload\\n\\n* **Type:** `Boolean | Element | CSS selector`\\n\\n* **Default:** `false`\\n\\n* **Browser:** [http://caniuse.com/#feat=dragndrop](http://caniuse.com/#feat=dragndrop)\\n\\n* **Details:**\\n\\n If set to `true`, read the parent component as a container\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n\\n### drop-directory\\n\\nWhether to open the drag directory\\n\\n* **Type:** `Boolean`\\n\\n* **Default:** `true`\\n\\n* **Details:**\\n\\n If set to `false` filter out the directory\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n### add-index\\n\\n* **Type:** `Boolean, Number`\\n\\n* **Default:** `undefined`\\n\\n* **Version:** : `>=2.6.1`\\n\\n* **Details:**\\n\\n The default value of the `index` parameter for the [`add()`](#instance-methods-add) method\\n\\n* **Usage:**\\n ```html\\n \\n ```\\n\\n\\n\\n\\n## Options / Events\\n\\nThe files is changed to trigger the method\\nDefault for `v-model` binding\\n\\n### @input\\n* **Arguments:**\\n\\n * `files: Array`\\n\\n\\n* **Usage:**\\n ```html\\n \\n \\n ```\\n\\n\\n\\n### @input-filter\\n\\nAdd, update, remove pre-filter\\n\\n* **Arguments:**\\n\\n * `newFile: File | Object | undefined` `Read and write`\\n * `oldFile: File | Object | undefined` `Read only`\\n * `prevent: Function` Call this function to prevent modification\\n\\n\\n* **Details:**\\n\\n If the `newFile` value is `undefined` 'is deleted\\n If the `oldFile` value is `undefined` 'is added\\n If `newFile`, `oldFile` is exist, it is updated\\n\\n > Synchronization modify `newFile`\\n > Asynchronous Please use `update`,` add`, `remove`,` clear` method\\n > Asynchronous Please set an error first to prevent being uploaded\\n\\n > Synchronization can not use `update`,` add`, `remove`,` clear` methods\\n > Asynchronous can not modify `newFile`\\n\\n* **Usage:**\\n ```html\\n \\n \\n ```\\n\\n### @input-file\\n\\nAdd, update, remove after\\n\\n* **Arguments:**\\n\\n * `newFile: File | Object | undefined` `Read only`\\n * `oldFile: File | Object | undefined` `Read only`\\n\\n\\n* **Details:**\\n\\n If the `newFile` value is `undefined` 'is deleted\\n If the `oldFile` value is `undefined` 'is added\\n If `newFile`, `oldFile` is exist, it is updated\\n\\n\\n >You can use `update`,` add`, `remove`,` clear` methods in the event\\n >You can not modify the `newFile` object in the event\\n >You can not modify the `oldFile` object in the event\\n\\n* **Usage:**\\n ```html\\n \\n \\n ```\\n\\n\\n\\n## Instance / Data\\n\\n### features\\n\\nUsed to determine the browser support features\\n\\n* **Type:** `Object`\\n\\n* **Read only:** `true`\\n\\n* **Default:** `{ html5: true, directory: false, drag: false }`\\n\\n* **Usage:**\\n ```html\\n \\n \\n Support drag and drop upload\\n Support folder upload\\n Support for HTML5\\n \\n ```\\n\\n\\n\\n### active\\n\\nActivation or abort upload\\n\\n* **Type:** `Boolean`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `false`\\n\\n* **Usage:**\\n ```html\\n \\n \\n Start upload\\n Stop upload\\n \\n ```\\n\\n\\n\\n### dropActive\\n\\nIs dragging\\n\\n* **Type:** `Boolean`\\n\\n* **Read only:** `true`\\n\\n* **Default:** `false`\\n\\n* **Usage:**\\n ```html\\n \\n \\n Drag and drop here for upload\\n \\n ```\\n\\n\\n\\n\\n\\n### uploaded\\n\\nAll uploaded\\n\\n* **Type:** `Boolean`\\n\\n* **Read only:** `true`\\n\\n* **Default:** `true`\\n\\n* **Usage:**\\n ```html\\n \\n \\n All files have been uploaded\\n \\n ```\\n\\n\\n\\n\\n\\n## Instance / Methods\\n\\n\\n\\n### get()\\n\\nUse `id` to get a file object\\n\\n* **Arguments:**\\n\\n * `id: File | Object | String`\\n\\n\\n* **Result:** `File | Object | Boolean` There is a return file, object that otherwise returns `false`\\n\\n\\n\\n### add()\\n\\nAdd one or more files\\n\\n* **Arguments:**\\n\\n * `files: Array | File | window.File | Object` If it is an array of responses will be an array\\n * `index: Number | Boolean` = [`props.add-index`](#options-props-add-index) `true = ` Start, `false = ` End, `Number = ` Index\\n\\n\\n* **Result:** `Object | Array | Boolean` The incoming array is returned to the array otherwise the object or `false`\\n\\n* **Usage:**\\n ```html\\n \\n \\n ```\\n\\n\\n### addInputFile()\\n\\nAdd the file selected by `` to the upload list\\n\\n* **Arguments:**\\n\\n * `el: HTMLInputElement` File element\\n\\n\\n* **Result:** `Array` Added list of files\\n\\n* **Version:** : `>=2.5.1`\\n\\n\\n\\n### addDataTransfer()\\n\\nAdd files that are dragged or pasted into the upload list\\n\\n* **Arguments:**\\n\\n * `dataTransfer: DataTransfer` Drag or paste data\\n\\n\\n* **Result:** `Promise>` Added list of files\\n\\n\\n* **Version:** : `>=2.5.1`\\n\\n\\n\\n### update()\\n\\nUpdate a file object\\n\\n* **Arguments:**\\n\\n * `id: File | Object | String`\\n * `data: Object` Updated data object\\n\\n\\n* **Result:** `Object | Boolean` Successfully returned `newFile` failed to return` false`\\n\\n\\n* **Usage:**\\n ```html\\n \\n \\n ```\\n\\n### remove()\\n\\nRemove a file object\\n\\n* **Arguments:**\\n\\n * `id: File | Object | String`\\n\\n\\n* **Result:** `Object | Boolean` Successfully returned `oldFile` failed to return` false`\\n\\n* **Usage:**\\n ```html\\n \\n \\n ```\\n\\n### replace()\\n Replace the location of the two files\\n\\n* **Arguments:**\\n\\n * `id1: File | Object | String`\\n * `id2: File | Object | String`\\n\\n\\n* **Result:** `Boolean`\\n\\n\\n### clear()\\n\\nEmpty the file list\\n\\n* **Result:** `Boolean` Always return `true`\\n\\n\\n\\n## Instance / File\\n\\n\\n\\n> **File object in the `@input-filter` event outside the use of [`update`](#instance-methods-update) method**\\n\\n\\n\\n\\n### fileObject\\n\\n* **Type:** `Boolean`\\n\\n* **Read only:** `true`\\n\\n* **Required:** `true`\\n\\n* **Default:** `true`\\n\\n* **Version:** : `>=2.6.0`\\n\\n* **Details:**\\n\\n If the attribute does not exist, the object will not be processed internally\\n If the attribute does not exist, it is not `File` but `Object`\\n\\n\\n\\n\\n### id\\n\\nFile ID\\n\\n* **Type:** `String | Number`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `Math.random().toString(36).substr(2)`\\n\\n* **Details:**\\n\\n >`id` can not be repeated\\n >Upload can not modify `id`\\n\\n\\n### size\\n\\nFile size\\n\\n* **Type:** `Number`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `-1`\\n\\n* **Browser:** `> IE9`\\n\\n\\n### name\\n\\nFilename\\n\\n* **Type:** `String`\\n\\n* **Read only:** `false`\\n\\n* **Default:** ` `\\n\\n* **Details:**\\n\\n Format: `directory/filename.gif` `filename.gif`\\n\\n\\n\\n### type\\n\\nMIME type\\n\\n* **Type:** `String`\\n\\n* **Read only:** `false`\\n\\n* **Default:** ` `\\n\\n* **Browser:** `> IE9`\\n\\n* **Details:**\\n\\n Format: `image/gif` `image/png` `text/html`\\n\\n\\n\\n\\n### active\\n\\nActivation or abort upload\\n\\n* **Type:** `Boolean`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `false`\\n\\n* **Details:**\\n\\n `true` = Upload\\n `false` = Abort\\n\\n\\n\\n\\n\\n\\n### error\\n\\nUpload failed error code\\n\\n* **Type:** `String`\\n\\n* **Read only:** `false`\\n\\n* **Default:** ` `\\n\\n* **Details:**\\n\\n Built-in\\n `size`, `extension`, `timeout`, `abort`, `network`, `server`, `denied`\\n\\n\\n\\n\\n### success\\n\\nWhether the upload was successful\\n\\n* **Type:** `Boolean`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `false`\\n\\n\\n### putAction\\n\\nCustomize the current file `PUT` URL\\n\\n* **Type:** `String`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `this.putAction`\\n\\n\\n\\n### postAction\\n\\nCustomize the current file `POST` URL\\n\\n* **Type:** `String`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `this.postAction`\\n\\n\\n\\n\\n### headers\\n\\nCustomize the current file `HTTP` Header\\n\\n* **Type:** `Object`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `this.headers`\\n\\n\\n### data\\n\\nCustomize the current file `body` or` query` to attach content\\n\\n* **Type:** `Object`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `this.data`\\n\\n\\n### timeout\\n\\nCustomize the upload timeout for a current single file\\n\\n* **Type:** `Number`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `this.timeout`\\n\\n\\n### response\\n\\nResponse data\\n\\n* **Type:** `Object | String`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `{}`\\n\\n\\n\\n\\n### progress\\n\\nUpload progress\\n\\n* **Type:** `String`\\n\\n* **Read only:** `false`\\n\\n* **Default:** `0.00`\\n\\n* **Browser:** `> IE9`\\n\\n\\n\\n### speed\\n\\nPer second upload speed\\n\\n* **Type:** `Number`\\n\\n* **Read only:** `true`\\n\\n* **Default:** `0`\\n\\n* **Browser:** `> IE9`\\n\\n\\n\\n\\n### xhr\\n\\n`HTML5` upload` XMLHttpRequest` object\\n\\n* **Type:** `XMLHttpRequest`\\n\\n* **Read only:** `true`\\n\\n* **Default:** `undefined`\\n\\n* **Browser:** `> IE9`\\n\\n\\n\\n\\n### iframe\\n\\n`HTML4` upload` iframe` element\\n\\n* **Type:** `Element`\\n\\n* **Read only:** `true`\\n\\n* **Default:** `undefined`\\n\\n* **Browser:** `= IE9`\\n\"","module.exports = ImageCompressor;","module.exports = VueI18n;","module.exports = VueRouter;","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{class:_vm.className},[_vm._t(\"default\"),_vm._v(\" \"),_c('input-file')],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * Creates a XHR request\n *\n * @param {Object} options\n */\nexport const createRequest = (options) => {\n const xhr = new XMLHttpRequest()\n xhr.open(options.method || 'GET', options.url)\n xhr.responseType = 'json'\n if (options.headers) {\n Object.keys(options.headers).forEach(key => {\n xhr.setRequestHeader(key, options.headers[key])\n })\n }\n\n return xhr\n}\n\n/**\n * Sends a XHR request with certain body\n *\n * @param {XMLHttpRequest} xhr\n * @param {Object} body\n */\nexport const sendRequest = (xhr, body) => {\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n var response\n try {\n response = JSON.parse(xhr.response)\n } catch (err) {\n response = xhr.response\n }\n resolve(response)\n } else {\n reject(xhr.response)\n }\n }\n xhr.onerror = () => reject(xhr.response)\n xhr.send(JSON.stringify(body))\n })\n}\n\n/**\n * Sends a XHR request with certain form data\n *\n * @param {XMLHttpRequest} xhr\n * @param {Object} data\n */\nexport const sendFormRequest = (xhr, data) => {\n const body = new FormData()\n for (var name in data) {\n body.append(name, data[name])\n }\n\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n var response\n try {\n response = JSON.parse(xhr.response)\n } catch (err) {\n response = xhr.response\n }\n resolve(response)\n } else {\n reject(xhr.response)\n }\n }\n xhr.onerror = () => reject(xhr.response)\n xhr.send(body)\n })\n}\n\n/**\n * Creates and sends XHR request\n *\n * @param {Object} options\n *\n * @returns Promise\n */\nexport default function (options) {\n const xhr = createRequest(options)\n\n return sendRequest(xhr, options.body)\n}\n","import {\n default as request,\n createRequest,\n sendFormRequest\n} from '../utils/request'\n\nexport default class ChunkUploadHandler {\n /**\n * Constructor\n *\n * @param {File} file\n * @param {Object} options\n */\n constructor (file, options) {\n this.file = file\n this.options = options\n }\n\n /**\n * Gets the max retries from options\n */\n get maxRetries () {\n return parseInt(this.options.maxRetries)\n }\n\n /**\n * Gets the max number of active chunks being uploaded at once from options\n */\n get maxActiveChunks () {\n return parseInt(this.options.maxActive)\n }\n\n /**\n * Gets the file type\n */\n get fileType () {\n return this.file.type\n }\n\n /**\n * Gets the file size\n */\n get fileSize () {\n return this.file.size\n }\n\n /**\n * Gets action (url) to upload the file\n */\n get action () {\n return this.options.action || null\n }\n\n /**\n * Gets the body to be merged when sending the request in start phase\n */\n get startBody () {\n return this.options.startBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in upload phase\n */\n get uploadBody () {\n return this.options.uploadBody || {}\n }\n\n /**\n * Gets the body to be merged when sending the request in finish phase\n */\n get finishBody () {\n return this.options.finishBody || {}\n }\n\n /**\n * Gets the headers of the requests from options\n */\n get headers () {\n return this.options.headers || {}\n }\n\n /**\n * Whether it's ready to upload files or not\n */\n get readyToUpload () {\n return !!this.chunks\n }\n\n /**\n * Gets the progress of the chunk upload\n * - Gets all the completed chunks\n * - Gets the progress of all the chunks that are being uploaded\n */\n get progress () {\n const completedProgress = (this.chunksUploaded.length / this.chunks.length) * 100\n const uploadingProgress = this.chunksUploading.reduce((progress, chunk) => {\n return progress + ((chunk.progress | 0) / this.chunks.length)\n }, 0)\n\n return Math.min(completedProgress + uploadingProgress, 100)\n }\n\n /**\n * Gets all the chunks that are pending to be uploaded\n */\n get chunksToUpload () {\n return this.chunks.filter(chunk => {\n return !chunk.active && !chunk.uploaded\n })\n }\n\n /**\n * Whether there are chunks to upload or not\n */\n get hasChunksToUpload () {\n return this.chunksToUpload.length > 0\n }\n\n /**\n * Gets all the chunks that are uploading\n */\n get chunksUploading () {\n return this.chunks.filter(chunk => {\n return !!chunk.xhr && !!chunk.active\n })\n }\n\n /**\n * Gets all the chunks that have finished uploading\n */\n get chunksUploaded () {\n return this.chunks.filter(chunk => {\n return !!chunk.uploaded\n })\n }\n\n /**\n * Creates all the chunks in the initial state\n */\n createChunks () {\n this.chunks = []\n\n let start = 0\n let end = this.chunkSize\n while (start < this.fileSize) {\n this.chunks.push({\n blob: this.file.file.slice(start, end),\n startOffset: start,\n active: false,\n retries: this.maxRetries\n })\n start = end\n end = start + this.chunkSize\n }\n }\n\n /**\n * Updates the progress of the file with the handler's progress\n */\n updateFileProgress () {\n this.file.progress = this.progress\n }\n\n /**\n * Paues the upload process\n * - Stops all active requests\n * - Sets the file not active\n */\n pause () {\n this.file.active = false\n this.stopChunks()\n }\n\n /**\n * Stops all the current chunks\n */\n stopChunks () {\n this.chunksUploading.forEach(chunk => {\n chunk.xhr.abort()\n chunk.active = false\n })\n }\n\n /**\n * Resumes the file upload\n * - Sets the file active\n * - Starts the following chunks\n */\n resume () {\n this.file.active = true\n this.startChunking()\n }\n\n /**\n * Starts the file upload\n *\n * @returns Promise\n * - resolve The file was uploaded\n * - reject The file upload failed\n */\n upload () {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve\n this.reject = reject\n })\n this.start()\n\n return this.promise\n }\n\n /**\n * Start phase\n * Sends a request to the backend to initialise the chunks\n */\n start () {\n request({\n method: 'POST',\n headers: Object.assign({}, this.headers, {\n 'Content-Type': 'application/json'\n }),\n url: this.action,\n body: Object.assign(this.startBody, {\n phase: 'start',\n mime_type: this.fileType,\n size: this.fileSize\n })\n }).then(res => {\n if (res.status !== 'success') {\n this.file.response = res\n return this.reject('server')\n }\n\n this.sessionId = res.data.session_id\n this.chunkSize = res.data.end_offset\n\n this.createChunks()\n this.startChunking()\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n\n /**\n * Starts to upload chunks\n */\n startChunking () {\n for (let i = 0; i < this.maxActiveChunks; i++) {\n this.uploadNextChunk()\n }\n }\n\n /**\n * Uploads the next chunk\n * - Won't do anything if the process is paused\n * - Will start finish phase if there are no more chunks to upload\n */\n uploadNextChunk () {\n if (this.file.active) {\n if (this.hasChunksToUpload) {\n return this.uploadChunk(this.chunksToUpload[0])\n }\n\n if (this.chunksUploading.length === 0) {\n return this.finish()\n }\n }\n }\n\n /**\n * Uploads a chunk\n * - Sends the chunk to the backend\n * - Sets the chunk as uploaded if everything went well\n * - Decreases the number of retries if anything went wrong\n * - Fails if there are no more retries\n *\n * @param {Object} chunk\n */\n uploadChunk (chunk) {\n chunk.progress = 0\n chunk.active = true\n this.updateFileProgress()\n chunk.xhr = createRequest({\n method: 'POST',\n headers: this.headers,\n url: this.action\n })\n\n chunk.xhr.upload.addEventListener('progress', function (evt) {\n if (evt.lengthComputable) {\n chunk.progress = Math.round(evt.loaded / evt.total * 100)\n }\n }, false)\n\n sendFormRequest(chunk.xhr, Object.assign(this.uploadBody, {\n phase: 'upload',\n session_id: this.sessionId,\n start_offset: chunk.startOffset,\n chunk: chunk.blob\n })).then(res => {\n chunk.active = false\n if (res.status === 'success') {\n chunk.uploaded = true\n } else {\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n }\n\n this.uploadNextChunk()\n }).catch(() => {\n chunk.active = false\n if (chunk.retries-- <= 0) {\n this.stopChunks()\n return this.reject('upload')\n }\n\n this.uploadNextChunk()\n })\n }\n\n /**\n * Finish phase\n * Sends a request to the backend to finish the process\n */\n finish () {\n this.updateFileProgress()\n\n request({\n method: 'POST',\n headers: Object.assign({}, this.headers, {\n 'Content-Type': 'application/json'\n }),\n url: this.action,\n body: Object.assign(this.finishBody, {\n phase: 'finish',\n session_id: this.sessionId\n })\n }).then(res => {\n this.file.response = res\n if (res.status !== 'success') {\n return this.reject('server')\n }\n\n this.resolve(res)\n }).catch(res => {\n this.file.response = res\n this.reject('server')\n })\n }\n}\n","import mod from \"-!../node_modules/babel-loader/lib/index.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputFile.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../node_modules/babel-loader/lib/index.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputFile.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./InputFile.vue?vue&type=template&id=314920ae\"\nimport script from \"./InputFile.vue?vue&type=script&lang=js\"\nexport * from \"./InputFile.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('input',{attrs:{\"type\":\"file\",\"name\":_vm.$parent.name,\"id\":_vm.$parent.inputId || _vm.$parent.name,\"accept\":_vm.$parent.accept,\"capture\":_vm.$parent.capture,\"webkitdirectory\":_vm.$parent.directory && _vm.$parent.features.directory,\"directory\":_vm.$parent.directory && _vm.$parent.features.directory,\"multiple\":_vm.$parent.multiple && _vm.$parent.features.html5},on:{\"change\":_vm.change}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../node_modules/babel-loader/lib/index.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileUpload.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../node_modules/babel-loader/lib/index.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileUpload.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FileUpload.vue?vue&type=template&id=06246d28\"\nimport script from \"./FileUpload.vue?vue&type=script&lang=js\"\nexport * from \"./FileUpload.vue?vue&type=script&lang=js\"\nimport style0 from \"./FileUpload.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// import Vue from 'vue'\nimport Vuex from 'vuex'\n//\n// Vue.use(Vuex)\n\n\nconst state = {\n files: [],\n}\n\nconst mutations = {\n updateFiles(state, files) {\n state.files = files\n }\n}\nexport default new Vuex.Store({\n strict: true,\n state,\n mutations\n})\n","// import Vue from 'vue'\nimport VueI18n from 'vue-i18n'\nimport en from './en'\nimport zhCN from './zh-cn'\n\n// Vue.use(VueI18n)\n\nexport default new VueI18n({\n locale: 'en',\n messages: {\n 'zh-cn': zhCN,\n en,\n }\n})\n","export default {\n header: {\n logo: 'Vuejs',\n home: '首页',\n examples: '演示',\n documents: '文档',\n blog: 'Blog',\n locale: 'Language(语言)',\n issues: 'Issues',\n github: 'Github',\n },\n\n locale: {\n en: 'English',\n 'zh-cn': '中文(简体)',\n },\n\n document: {\n title: '文档',\n },\n\n\n example: {\n full: '完整例子',\n simple: '简单例子',\n avatar: '上传头像',\n drag: '拖拽上传',\n multiple: '多个实例',\n vuex: 'Vuex',\n }\n}\n","export default {\n header: {\n logo: 'Vuejs',\n home: 'Home',\n examples: 'Examples',\n documents: 'Documentation',\n blog: 'Blog',\n locale: 'Language(语言)',\n issues: 'Issues',\n github: 'Github',\n },\n\n locale: {\n en: 'English',\n 'zh-cn': '中文(简体)',\n },\n\n document: {\n title: 'Documentation',\n },\n\n example: {\n full: 'Full Example',\n simple: 'Simple',\n avatar: 'Upload avatar',\n drag: 'Drag and drop',\n multiple: 'Multiple instances',\n chunk: 'Chunk upload',\n vuex: 'Vuex',\n }\n}\n","import { render, staticRenderFns } from \"./Router.vue?vue&type=template&id=3075fd62\"\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('router-view')}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/babel-loader/lib/index.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Document.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Document.vue?vue&type=script&lang=js\"","\n\n\n","import { render, staticRenderFns } from \"./Document.vue?vue&type=template&id=61209807\"\nimport script from \"./Document.vue?vue&type=script&lang=js\"\nexport * from \"./Document.vue?vue&type=script&lang=js\"\nimport style0 from \"./Document.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container-fluid\"},[_c('div',{staticClass:\"row flex-xl-nowrap\"},[_c('div',{staticClass:\"col-12 col-md-3 col-xl-2\",attrs:{\"id\":\"sidebar\"}},[_c('nav',{staticClass:\"collapse show\",attrs:{\"id\":\"sidebar-nav\"}},[_c('ul',{staticClass:\"nav\"},_vm._l((_vm.navs),function(group,index){return _c('li',{class:{'nav-item': true, active: (!_vm.$route.hash && !index) || _vm.$route.hash.indexOf(group.hash) === 1}},[_c('router-link',{class:{'nav-link': true, active: _vm.$route.hash.indexOf(group.hash) === 1},attrs:{\"active-class\":\"active\",\"to\":'#' + group.hash}},[_vm._v(_vm._s(group.name))]),_vm._v(\" \"),(group.children.length)?_c('ul',{staticClass:\"nav\"},_vm._l((group.children),function(child){return _c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":'#' + group.hash + '-' + child.hash}},[_vm._v(_vm._s(child.name))])],1)})):_vm._e()],1)}))])]),_vm._v(\" \"),_c('main',{staticClass:\"col-12 col-md-9 col-xl-10 py-md-3 pr-md-5 pl-md-5\",attrs:{\"id\":\"main\",\"role\":\"main\"}},[_c('h1',{staticClass:\"document-title\",attrs:{\"id\":\"document-title\"}},[_vm._v(_vm._s(_vm.$t('document.title')))]),_vm._v(\" \"),_c('div',{directives:[{name:\"markdown\",rawName:\"v-markdown\"}],staticClass:\"document-content\"},[_vm._v(_vm._s(_vm.document))])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./Example.vue?vue&type=template&id=02498012\"\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container-fluid\"},[_c('div',{staticClass:\"row flex-xl-nowrap\"},[_c('div',{staticClass:\"col-12 col-md-3 col-xl-2\",attrs:{\"id\":\"sidebar\"}},[_c('nav',{staticClass:\"collapse show\",attrs:{\"id\":\"sidebar-nav\"}},[_c('ul',{staticClass:\"nav\"},[_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples/full')}},[_vm._v(_vm._s(_vm.$t('example.full')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples/simple')}},[_vm._v(_vm._s(_vm.$t('example.simple')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples/avatar')}},[_vm._v(_vm._s(_vm.$t('example.avatar')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples/drag')}},[_vm._v(_vm._s(_vm.$t('example.drag')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples/multiple')}},[_vm._v(_vm._s(_vm.$t('example.multiple')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples/chunk')}},[_vm._v(_vm._s(_vm.$t('example.chunk')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples/vuex')}},[_vm._v(_vm._s(_vm.$t('example.vuex')))])],1)])])]),_vm._v(\" \"),_c('main',{staticClass:\"col-12 col-md-9 col-xl-10 py-md-3 pr-md-5 pl-md-5\",attrs:{\"id\":\"main\",\"role\":\"main\"}},[_c('router-view')],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Full.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Full.vue?vue&type=script&lang=js\"","\n\n\n\n","import { render, staticRenderFns } from \"./Full.vue?vue&type=template&id=c2419f2a\"\nimport script from \"./Full.vue?vue&type=script&lang=js\"\nexport * from \"./Full.vue?vue&type=script&lang=js\"\nimport style0 from \"./Full.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"example-full\"},[_c('button',{staticClass:\"btn btn-danger float-right btn-is-option\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.isOption = !_vm.isOption}}},[_c('i',{staticClass:\"fa fa-cog\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Options\\n \")]),_vm._v(\" \"),_c('h1',{staticClass:\"example-title\",attrs:{\"id\":\"example-title\"}},[_vm._v(\"Full Example\")]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.$refs.upload && _vm.$refs.upload.dropActive),expression:\"$refs.upload && $refs.upload.dropActive\"}],staticClass:\"drop-active\"},[_c('h3',[_vm._v(\"Drop files to upload\")])]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isOption),expression:\"!isOption\"}],staticClass:\"upload\"},[_c('div',{staticClass:\"table-responsive\"},[_c('table',{staticClass:\"table table-hover\"},[_vm._m(0),_vm._v(\" \"),_c('tbody',[(!_vm.files.length)?_c('tr',[_c('td',{attrs:{\"colspan\":\"7\"}},[_c('div',{staticClass:\"text-center p-5\"},[_vm._m(1),_vm._v(\" \"),_c('label',{staticClass:\"btn btn-lg btn-primary\",attrs:{\"for\":_vm.name}},[_vm._v(\"Select Files\")])])])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.files),function(file,index){return _c('tr',{key:file.id},[_c('td',[_vm._v(_vm._s(index))]),_vm._v(\" \"),_c('td',[(file.thumb)?_c('img',{attrs:{\"src\":file.thumb,\"width\":\"40\",\"height\":\"auto\"}}):_c('span',[_vm._v(\"No Image\")])]),_vm._v(\" \"),_c('td',[_c('div',{staticClass:\"filename\"},[_vm._v(\"\\n \"+_vm._s(file.name)+\"\\n \")]),_vm._v(\" \"),(file.active || file.progress !== '0.00')?_c('div',{staticClass:\"progress\"},[_c('div',{class:{'progress-bar': true, 'progress-bar-striped': true, 'bg-danger': file.error, 'progress-bar-animated': file.active},style:({width: file.progress + '%'}),attrs:{\"role\":\"progressbar\"}},[_vm._v(_vm._s(file.progress)+\"%\")])]):_vm._e()]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm._f(\"formatSize\")(file.size)))]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm._f(\"formatSize\")(file.speed)))]),_vm._v(\" \"),(file.error)?_c('td',[_vm._v(_vm._s(file.error))]):(file.success)?_c('td',[_vm._v(\"success\")]):(file.active)?_c('td',[_vm._v(\"active\")]):_c('td'),_vm._v(\" \"),_c('td',[_c('div',{staticClass:\"btn-group\"},[_c('button',{staticClass:\"btn btn-secondary btn-sm dropdown-toggle\",attrs:{\"type\":\"button\"}},[_vm._v(\"\\n Action\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"dropdown-menu\"},[_c('a',{class:{'dropdown-item': true, disabled: file.active || file.success || file.error === 'compressing'},attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();file.active || file.success || file.error === 'compressing' ? false : _vm.onEditFileShow(file)}}},[_vm._v(\"Edit\")]),_vm._v(\" \"),_c('a',{class:{'dropdown-item': true, disabled: !file.active},attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();file.active ? _vm.$refs.upload.update(file, {error: 'cancel'}) : false}}},[_vm._v(\"Cancel\")]),_vm._v(\" \"),(file.active)?_c('a',{staticClass:\"dropdown-item\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.update(file, {active: false})}}},[_vm._v(\"Abort\")]):(file.error && file.error !== 'compressing' && _vm.$refs.upload.features.html5)?_c('a',{staticClass:\"dropdown-item\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.update(file, {active: true, error: '', progress: '0.00'})}}},[_vm._v(\"Retry upload\")]):_c('a',{class:{'dropdown-item': true, disabled: file.success || file.error === 'compressing'},attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();file.success || file.error === 'compressing' ? false : _vm.$refs.upload.update(file, {active: true})}}},[_vm._v(\"Upload\")]),_vm._v(\" \"),_c('div',{staticClass:\"dropdown-divider\"}),_vm._v(\" \"),_c('a',{staticClass:\"dropdown-item\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.remove(file)}}},[_vm._v(\"Remove\")])])])])])})],2)])]),_vm._v(\" \"),_c('div',{staticClass:\"example-foorer\"},[_c('div',{staticClass:\"footer-status float-right\"},[_vm._v(\"\\n Drop: \"+_vm._s(_vm.$refs.upload ? _vm.$refs.upload.drop : false)+\",\\n Active: \"+_vm._s(_vm.$refs.upload ? _vm.$refs.upload.active : false)+\",\\n Uploaded: \"+_vm._s(_vm.$refs.upload ? _vm.$refs.upload.uploaded : true)+\",\\n Drop active: \"+_vm._s(_vm.$refs.upload ? _vm.$refs.upload.dropActive : false)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"btn-group\"},[_c('file-upload',{ref:\"upload\",staticClass:\"btn btn-primary dropdown-toggle\",attrs:{\"post-action\":_vm.postAction,\"put-action\":_vm.putAction,\"extensions\":_vm.extensions,\"accept\":_vm.accept,\"multiple\":_vm.multiple,\"directory\":_vm.directory,\"size\":_vm.size || 0,\"thread\":_vm.thread < 1 ? 1 : (_vm.thread > 5 ? 5 : _vm.thread),\"headers\":_vm.headers,\"data\":_vm.data,\"drop\":_vm.drop,\"drop-directory\":_vm.dropDirectory,\"add-index\":_vm.addIndex},on:{\"input-filter\":_vm.inputFilter,\"input-file\":_vm.inputFile},model:{value:(_vm.files),callback:function ($$v) {_vm.files=$$v},expression:\"files\"}},[_c('i',{staticClass:\"fa fa-plus\"}),_vm._v(\"\\n Select\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"dropdown-menu\"},[_c('label',{staticClass:\"dropdown-item\",attrs:{\"for\":_vm.name}},[_vm._v(\"Add files\")]),_vm._v(\" \"),_c('a',{staticClass:\"dropdown-item\",attrs:{\"href\":\"#\"},on:{\"click\":_vm.onAddFolader}},[_vm._v(\"Add folder\")]),_vm._v(\" \"),_c('a',{staticClass:\"dropdown-item\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.addData.show = true}}},[_vm._v(\"Add data\")])])],1),_vm._v(\" \"),(!_vm.$refs.upload || !_vm.$refs.upload.active)?_c('button',{staticClass:\"btn btn-success\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = true}}},[_c('i',{staticClass:\"fa fa-arrow-up\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Start Upload\\n \")]):_c('button',{staticClass:\"btn btn-danger\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = false}}},[_c('i',{staticClass:\"fa fa-stop\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Stop Upload\\n \")])])]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isOption),expression:\"isOption\"}],staticClass:\"option\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"accept\"}},[_vm._v(\"Accept:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.accept),expression:\"accept\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"id\":\"accept\"},domProps:{\"value\":(_vm.accept)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.accept=$event.target.value}}}),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Allow upload mime type\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"extensions\"}},[_vm._v(\"Extensions:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.extensions),expression:\"extensions\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"id\":\"extensions\"},domProps:{\"value\":(_vm.extensions)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.extensions=$event.target.value}}}),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Allow upload file extension\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',[_vm._v(\"PUT Upload:\")]),_vm._v(\" \"),_c('div',{staticClass:\"form-check\"},[_c('label',{staticClass:\"form-check-label\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.putAction),expression:\"putAction\"}],staticClass:\"form-check-input\",attrs:{\"type\":\"radio\",\"name\":\"put-action\",\"id\":\"put-action\",\"value\":\"\"},domProps:{\"checked\":_vm._q(_vm.putAction,\"\")},on:{\"change\":function($event){_vm.putAction=\"\"}}}),_vm._v(\" Off\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-check\"},[_c('label',{staticClass:\"form-check-label\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.putAction),expression:\"putAction\"}],staticClass:\"form-check-input\",attrs:{\"type\":\"radio\",\"name\":\"put-action\",\"id\":\"put-action\",\"value\":\"/upload/put\"},domProps:{\"checked\":_vm._q(_vm.putAction,\"/upload/put\")},on:{\"change\":function($event){_vm.putAction=\"/upload/put\"}}}),_vm._v(\" On\\n \")])]),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"After the shutdown, use the POST method to upload\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"thread\"}},[_vm._v(\"Thread:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.thread),expression:\"thread\",modifiers:{\"number\":true}}],staticClass:\"form-control\",attrs:{\"type\":\"number\",\"max\":\"5\",\"min\":\"1\",\"id\":\"thread\"},domProps:{\"value\":(_vm.thread)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.thread=_vm._n($event.target.value)},\"blur\":function($event){_vm.$forceUpdate()}}}),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Also upload the number of files at the same time (number of threads)\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"size\"}},[_vm._v(\"Max size:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.size),expression:\"size\",modifiers:{\"number\":true}}],staticClass:\"form-control\",attrs:{\"type\":\"number\",\"min\":\"0\",\"id\":\"size\"},domProps:{\"value\":(_vm.size)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.size=_vm._n($event.target.value)},\"blur\":function($event){_vm.$forceUpdate()}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"minSize\"}},[_vm._v(\"Min size:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.minSize),expression:\"minSize\",modifiers:{\"number\":true}}],staticClass:\"form-control\",attrs:{\"type\":\"number\",\"min\":\"0\",\"id\":\"minSize\"},domProps:{\"value\":(_vm.minSize)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.minSize=_vm._n($event.target.value)},\"blur\":function($event){_vm.$forceUpdate()}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"autoCompress\"}},[_vm._v(\"Automatically compress:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.autoCompress),expression:\"autoCompress\",modifiers:{\"number\":true}}],staticClass:\"form-control\",attrs:{\"type\":\"number\",\"min\":\"0\",\"id\":\"autoCompress\"},domProps:{\"value\":(_vm.autoCompress)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.autoCompress=_vm._n($event.target.value)},\"blur\":function($event){_vm.$forceUpdate()}}}),_vm._v(\" \"),(_vm.autoCompress > 0)?_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"More than \"+_vm._s(_vm._f(\"formatSize\")(_vm.autoCompress))+\" files are automatically compressed\")]):_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Set up automatic compression\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"form-check\"},[_c('label',{staticClass:\"form-check-label\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.addIndex),expression:\"addIndex\"}],staticClass:\"form-check-input\",attrs:{\"type\":\"checkbox\",\"id\":\"add-index\"},domProps:{\"checked\":Array.isArray(_vm.addIndex)?_vm._i(_vm.addIndex,null)>-1:(_vm.addIndex)},on:{\"change\":function($event){var $$a=_vm.addIndex,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.addIndex=$$a.concat([$$v]))}else{$$i>-1&&(_vm.addIndex=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.addIndex=$$c}}}}),_vm._v(\" Start position to add\\n \")])]),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Add a file list to start the location to add\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"form-check\"},[_c('label',{staticClass:\"form-check-label\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.drop),expression:\"drop\"}],staticClass:\"form-check-input\",attrs:{\"type\":\"checkbox\",\"id\":\"drop\"},domProps:{\"checked\":Array.isArray(_vm.drop)?_vm._i(_vm.drop,null)>-1:(_vm.drop)},on:{\"change\":function($event){var $$a=_vm.drop,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.drop=$$a.concat([$$v]))}else{$$i>-1&&(_vm.drop=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.drop=$$c}}}}),_vm._v(\" Drop\\n \")])]),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Drag and drop upload\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"form-check\"},[_c('label',{staticClass:\"form-check-label\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.dropDirectory),expression:\"dropDirectory\"}],staticClass:\"form-check-input\",attrs:{\"type\":\"checkbox\",\"id\":\"drop-directory\"},domProps:{\"checked\":Array.isArray(_vm.dropDirectory)?_vm._i(_vm.dropDirectory,null)>-1:(_vm.dropDirectory)},on:{\"change\":function($event){var $$a=_vm.dropDirectory,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.dropDirectory=$$a.concat([$$v]))}else{$$i>-1&&(_vm.dropDirectory=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.dropDirectory=$$c}}}}),_vm._v(\" Drop directory\\n \")])]),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Not checked, filter the dragged folder\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"form-check\"},[_c('label',{staticClass:\"form-check-label\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.uploadAuto),expression:\"uploadAuto\"}],staticClass:\"form-check-input\",attrs:{\"type\":\"checkbox\",\"id\":\"upload-auto\"},domProps:{\"checked\":Array.isArray(_vm.uploadAuto)?_vm._i(_vm.uploadAuto,null)>-1:(_vm.uploadAuto)},on:{\"change\":function($event){var $$a=_vm.uploadAuto,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.uploadAuto=$$a.concat([$$v]))}else{$$i>-1&&(_vm.uploadAuto=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.uploadAuto=$$c}}}}),_vm._v(\" Auto start\\n \")])]),_vm._v(\" \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Automatically activate upload\")])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('button',{staticClass:\"btn btn-primary btn-lg btn-block\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.isOption = !_vm.isOption}}},[_vm._v(\"Confirm\")])])]),_vm._v(\" \"),_c('div',{class:{'modal-backdrop': true, 'fade': true, show: _vm.addData.show}}),_vm._v(\" \"),_c('div',{class:{modal: true, fade: true, show: _vm.addData.show},attrs:{\"id\":\"modal-add-data\",\"tabindex\":\"-1\",\"role\":\"dialog\"}},[_c('div',{staticClass:\"modal-dialog\",attrs:{\"role\":\"document\"}},[_c('div',{staticClass:\"modal-content\"},[_c('div',{staticClass:\"modal-header\"},[_c('h5',{staticClass:\"modal-title\"},[_vm._v(\"Add data\")]),_vm._v(\" \"),_c('button',{staticClass:\"close\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.addData.show = false}}},[_c('span',[_vm._v(\"×\")])])]),_vm._v(\" \"),_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.onAddData($event)}}},[_c('div',{staticClass:\"modal-body\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"name\"}},[_vm._v(\"Name:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.addData.name),expression:\"addData.name\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"required\":\"\",\"id\":\"name\",\"placeholder\":\"Please enter a file name\"},domProps:{\"value\":(_vm.addData.name)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.addData, \"name\", $event.target.value)}}}),_vm._v(\" \"),_vm._m(2)]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"type\"}},[_vm._v(\"Type:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.addData.type),expression:\"addData.type\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"required\":\"\",\"id\":\"type\",\"placeholder\":\"Please enter the MIME type\"},domProps:{\"value\":(_vm.addData.type)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.addData, \"type\", $event.target.value)}}}),_vm._v(\" \"),_vm._m(3)]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"content\"}},[_vm._v(\"Content:\")]),_vm._v(\" \"),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.addData.content),expression:\"addData.content\"}],staticClass:\"form-control\",attrs:{\"required\":\"\",\"id\":\"content\",\"rows\":\"3\",\"placeholder\":\"Please enter the file contents\"},domProps:{\"value\":(_vm.addData.content)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.addData, \"content\", $event.target.value)}}})])]),_vm._v(\" \"),_c('div',{staticClass:\"modal-footer\"},[_c('button',{staticClass:\"btn btn-secondary\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.addData.show = false}}},[_vm._v(\"Close\")]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"submit\"}},[_vm._v(\"Save\")])])])])])]),_vm._v(\" \"),_c('div',{class:{'modal-backdrop': true, 'fade': true, show: _vm.editFile.show}}),_vm._v(\" \"),_c('div',{class:{modal: true, fade: true, show: _vm.editFile.show},attrs:{\"id\":\"modal-edit-file\",\"tabindex\":\"-1\",\"role\":\"dialog\"}},[_c('div',{staticClass:\"modal-dialog modal-lg\",attrs:{\"role\":\"document\"}},[_c('div',{staticClass:\"modal-content\"},[_c('div',{staticClass:\"modal-header\"},[_c('h5',{staticClass:\"modal-title\"},[_vm._v(\"Edit file\")]),_vm._v(\" \"),_c('button',{staticClass:\"close\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.editFile.show = false}}},[_c('span',[_vm._v(\"×\")])])]),_vm._v(\" \"),_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.onEditorFile($event)}}},[_c('div',{staticClass:\"modal-body\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"name\"}},[_vm._v(\"Name:\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.editFile.name),expression:\"editFile.name\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"required\":\"\",\"id\":\"name\",\"placeholder\":\"Please enter a file name\"},domProps:{\"value\":(_vm.editFile.name)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.editFile, \"name\", $event.target.value)}}})]),_vm._v(\" \"),(_vm.editFile.show && _vm.editFile.blob && _vm.editFile.type && _vm.editFile.type.substr(0, 6) === 'image/')?_c('div',{staticClass:\"form-group\"},[_c('label',[_vm._v(\"Image: \")]),_vm._v(\" \"),_c('div',{staticClass:\"edit-image\"},[_c('img',{ref:\"editImage\",attrs:{\"src\":_vm.editFile.blob}})]),_vm._v(\" \"),_c('div',{staticClass:\"edit-image-tool\"},[_c('div',{staticClass:\"btn-group\",attrs:{\"role\":\"group\"}},[_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"button\",\"title\":\"cropper.rotate(-90)\"},on:{\"click\":function($event){_vm.editFile.cropper.rotate(-90)}}},[_c('i',{staticClass:\"fa fa-undo\",attrs:{\"aria-hidden\":\"true\"}})]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"button\",\"title\":\"cropper.rotate(90)\"},on:{\"click\":function($event){_vm.editFile.cropper.rotate(90)}}},[_c('i',{staticClass:\"fa fa-repeat\",attrs:{\"aria-hidden\":\"true\"}})])]),_vm._v(\" \"),_c('div',{staticClass:\"btn-group\",attrs:{\"role\":\"group\"}},[_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"button\",\"title\":\"cropper.crop()\"},on:{\"click\":function($event){_vm.editFile.cropper.crop()}}},[_c('i',{staticClass:\"fa fa-check\",attrs:{\"aria-hidden\":\"true\"}})]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"button\",\"title\":\"cropper.clear()\"},on:{\"click\":function($event){_vm.editFile.cropper.clear()}}},[_c('i',{staticClass:\"fa fa-remove\",attrs:{\"aria-hidden\":\"true\"}})])])])]):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"modal-footer\"},[_c('button',{staticClass:\"btn btn-secondary\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.editFile.show = false}}},[_vm._v(\"Close\")]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"submit\"}},[_vm._v(\"Save\")])])])])])]),_vm._v(\" \"),_vm._m(4)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('thead',[_c('tr',[_c('th',[_vm._v(\"#\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Thumb\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Name\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Size\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Speed\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Status\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Action\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h4',[_vm._v(\"Drop files anywhere to upload\"),_c('br'),_vm._v(\"or\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Such as \"),_c('code',[_vm._v(\"filename.txt\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Such as \"),_c('code',[_vm._v(\"text/plain\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pt-5\"},[_vm._v(\"\\n Source code: \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/views/examples/Full.vue\"}},[_vm._v(\"/docs/views/examples/Full.vue\")])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Simple.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Simple.vue?vue&type=script&lang=js\"","\n\n\n\n","import { render, staticRenderFns } from \"./Simple.vue?vue&type=template&id=3576474f\"\nimport script from \"./Simple.vue?vue&type=script&lang=js\"\nexport * from \"./Simple.vue?vue&type=script&lang=js\"\nimport style0 from \"./Simple.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"example-simple\"},[_c('h1',{staticClass:\"example-title\",attrs:{\"id\":\"example-title\"}},[_vm._v(\"Simple Example\")]),_vm._v(\" \"),_c('div',{staticClass:\"upload\"},[_c('ul',_vm._l((_vm.files),function(file,index){return _c('li',{key:file.id},[_c('span',[_vm._v(_vm._s(file.name))]),_vm._v(\" -\\n \"),_c('span',[_vm._v(_vm._s(_vm._f(\"formatSize\")(file.size)))]),_vm._v(\" -\\n \"),(file.error)?_c('span',[_vm._v(_vm._s(file.error))]):(file.success)?_c('span',[_vm._v(\"success\")]):(file.active)?_c('span',[_vm._v(\"active\")]):(file.active)?_c('span',[_vm._v(\"active\")]):_c('span')])})),_vm._v(\" \"),_c('div',{staticClass:\"example-btn\"},[_c('file-upload',{ref:\"upload\",staticClass:\"btn btn-primary\",attrs:{\"post-action\":\"/upload/post\",\"extensions\":\"gif,jpg,jpeg,png,webp\",\"accept\":\"image/png,image/gif,image/jpeg,image/webp\",\"multiple\":true,\"size\":1024 * 1024 * 10},on:{\"input-filter\":_vm.inputFilter,\"input-file\":_vm.inputFile},model:{value:(_vm.files),callback:function ($$v) {_vm.files=$$v},expression:\"files\"}},[_c('i',{staticClass:\"fa fa-plus\"}),_vm._v(\"\\n Select files\\n \")]),_vm._v(\" \"),(!_vm.$refs.upload || !_vm.$refs.upload.active)?_c('button',{staticClass:\"btn btn-success\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = true}}},[_c('i',{staticClass:\"fa fa-arrow-up\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Start Upload\\n \")]):_c('button',{staticClass:\"btn btn-danger\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = false}}},[_c('i',{staticClass:\"fa fa-stop\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Stop Upload\\n \")])],1)]),_vm._v(\" \"),_vm._m(0)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pt-5\"},[_vm._v(\"\\n Source code: \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/views/examples/Simple.vue\"}},[_vm._v(\"/docs/views/examples/Simple.vue\")])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Avatar.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Avatar.vue?vue&type=script&lang=js\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Avatar.vue?vue&type=template&id=7343c9e0\"\nimport script from \"./Avatar.vue?vue&type=script&lang=js\"\nexport * from \"./Avatar.vue?vue&type=script&lang=js\"\nimport style0 from \"./Avatar.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"example-avatar\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.$refs.upload && _vm.$refs.upload.dropActive),expression:\"$refs.upload && $refs.upload.dropActive\"}],staticClass:\"drop-active\"},[_c('h3',[_vm._v(\"Drop files to upload\")])]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.edit),expression:\"!edit\"}],staticClass:\"avatar-upload\"},[_c('div',{staticClass:\"text-center p-2\"},[_c('label',{attrs:{\"for\":\"avatar\"}},[_c('img',{staticClass:\"rounded-circle\",attrs:{\"src\":_vm.files.length ? _vm.files[0].url : 'https://www.gravatar.com/avatar/default?s=200&r=pg&d=mm'}}),_vm._v(\" \"),_vm._m(0)])]),_vm._v(\" \"),_c('div',{staticClass:\"text-center p-2\"},[_c('file-upload',{ref:\"upload\",staticClass:\"btn btn-primary\",attrs:{\"extensions\":\"gif,jpg,jpeg,png,webp\",\"accept\":\"image/png,image/gif,image/jpeg,image/webp\",\"name\":\"avatar\",\"post-action\":\"/upload/post\",\"drop\":!_vm.edit},on:{\"input-filter\":_vm.inputFilter,\"input-file\":_vm.inputFile},model:{value:(_vm.files),callback:function ($$v) {_vm.files=$$v},expression:\"files\"}},[_vm._v(\"\\n Upload avatar\\n \")])],1)]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.files.length && _vm.edit),expression:\"files.length && edit\"}],staticClass:\"avatar-edit\"},[(_vm.files.length)?_c('div',{staticClass:\"avatar-edit-image\"},[_c('img',{ref:\"editImage\",attrs:{\"src\":_vm.files[0].url}})]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"text-center p-4\"},[_c('button',{staticClass:\"btn btn-secondary\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();return _vm.$refs.upload.clear($event)}}},[_vm._v(\"Cancel\")]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"submit\"},on:{\"click\":function($event){$event.preventDefault();return _vm.editSave($event)}}},[_vm._v(\"Save\")])])]),_vm._v(\" \"),_vm._m(1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h4',{staticClass:\"pt-2\"},[_vm._v(\"or\"),_c('br'),_vm._v(\"Drop files anywhere to upload\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pt-5\"},[_vm._v(\"\\n Source code: \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/views/examples/Avatar.vue\"}},[_vm._v(\"/docs/views/examples/Avatar.vue\")])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Drag.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Drag.vue?vue&type=script&lang=js\"","\n\n\n\n","import { render, staticRenderFns } from \"./Drag.vue?vue&type=template&id=78f5a515\"\nimport script from \"./Drag.vue?vue&type=script&lang=js\"\nexport * from \"./Drag.vue?vue&type=script&lang=js\"\nimport style0 from \"./Drag.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"example-drag\"},[_c('div',{staticClass:\"upload\"},[(_vm.files.length)?_c('ul',_vm._l((_vm.files),function(file,index){return _c('li',{key:file.id},[_c('span',[_vm._v(_vm._s(file.name))]),_vm._v(\" -\\n \"),_c('span',[_vm._v(_vm._s(_vm._f(\"formatSize\")(file.size)))]),_vm._v(\" -\\n \"),(file.error)?_c('span',[_vm._v(_vm._s(file.error))]):(file.success)?_c('span',[_vm._v(\"success\")]):(file.active)?_c('span',[_vm._v(\"active\")]):(file.active)?_c('span',[_vm._v(\"active\")]):_c('span')])})):_c('ul',[_vm._m(0)]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.$refs.upload && _vm.$refs.upload.dropActive),expression:\"$refs.upload && $refs.upload.dropActive\"}],staticClass:\"drop-active\"},[_c('h3',[_vm._v(\"Drop files to upload\")])]),_vm._v(\" \"),_c('div',{staticClass:\"example-btn\"},[_c('file-upload',{ref:\"upload\",staticClass:\"btn btn-primary\",attrs:{\"post-action\":\"/upload/post\",\"multiple\":true,\"drop\":true,\"drop-directory\":true},model:{value:(_vm.files),callback:function ($$v) {_vm.files=$$v},expression:\"files\"}},[_c('i',{staticClass:\"fa fa-plus\"}),_vm._v(\"\\n Select files\\n \")]),_vm._v(\" \"),(!_vm.$refs.upload || !_vm.$refs.upload.active)?_c('button',{staticClass:\"btn btn-success\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = true}}},[_c('i',{staticClass:\"fa fa-arrow-up\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Start Upload\\n \")]):_c('button',{staticClass:\"btn btn-danger\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = false}}},[_c('i',{staticClass:\"fa fa-stop\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Stop Upload\\n \")])],1)]),_vm._v(\" \"),_vm._m(1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('td',{attrs:{\"colspan\":\"7\"}},[_c('div',{staticClass:\"text-center p-5\"},[_c('h4',[_vm._v(\"Drop files anywhere to upload\"),_c('br'),_vm._v(\"or\")]),_vm._v(\" \"),_c('label',{staticClass:\"btn btn-lg btn-primary\",attrs:{\"for\":\"file\"}},[_vm._v(\"Select Files\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pt-5\"},[_vm._v(\"\\n Source code: \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/views/examples/Drag.vue\"}},[_vm._v(\"/docs/views/examples/Drag.vue\")])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Multiple.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Multiple.vue?vue&type=script&lang=js\"","\n\n\n\n","import { render, staticRenderFns } from \"./Multiple.vue?vue&type=template&id=3d82a174\"\nimport script from \"./Multiple.vue?vue&type=script&lang=js\"\nexport * from \"./Multiple.vue?vue&type=script&lang=js\"\nimport style0 from \"./Multiple.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"example-multiple\"},[_c('h1',{staticClass:\"example-title\",attrs:{\"id\":\"example-title\"}},[_vm._v(\"Multiple instances\")]),_vm._v(\" \"),_c('div',{staticClass:\"upload\"},[_c('ul',_vm._l((_vm.files1),function(file,index){return _c('li',{key:file.id},[_c('span',[_vm._v(_vm._s(file.name))]),_vm._v(\" -\\n \"),_c('span',[_vm._v(_vm._s(_vm._f(\"formatSize\")(file.size)))]),_vm._v(\" -\\n \"),(file.error)?_c('span',[_vm._v(_vm._s(file.error))]):(file.success)?_c('span',[_vm._v(\"success\")]):(file.active)?_c('span',[_vm._v(\"active\")]):(file.active)?_c('span',[_vm._v(\"active\")]):_c('span')])})),_vm._v(\" \"),_c('div',{staticClass:\"example-btn\"},[_c('file-upload',{ref:\"upload1\",staticClass:\"btn btn-primary\",attrs:{\"input-id\":\"file1\",\"post-action\":\"/upload/post\"},model:{value:(_vm.files1),callback:function ($$v) {_vm.files1=$$v},expression:\"files1\"}},[_c('i',{staticClass:\"fa fa-plus\"}),_vm._v(\"\\n Select files\\n \")]),_vm._v(\" \"),_c('label',{staticClass:\"btn btn-primary\",attrs:{\"for\":\"file1\"}},[_vm._v(\"Label Select files\")]),_vm._v(\" \"),(!_vm.$refs.upload1 || !_vm.$refs.upload1.active)?_c('button',{staticClass:\"btn btn-success\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload1.active = true}}},[_c('i',{staticClass:\"fa fa-arrow-up\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Start Upload\\n \")]):_c('button',{staticClass:\"btn btn-danger\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload1.active = false}}},[_c('i',{staticClass:\"fa fa-stop\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Stop Upload\\n \")])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"upload\"},[_c('ul',_vm._l((_vm.files2),function(file,index){return _c('li',{key:file.id},[_c('span',[_vm._v(_vm._s(file.name))]),_vm._v(\" -\\n \"),_c('span',[_vm._v(_vm._s(_vm._f(\"formatSize\")(file.size)))]),_vm._v(\" -\\n \"),(file.error)?_c('span',[_vm._v(_vm._s(file.error))]):(file.success)?_c('span',[_vm._v(\"success\")]):(file.active)?_c('span',[_vm._v(\"active\")]):(file.active)?_c('span',[_vm._v(\"active\")]):_c('span')])})),_vm._v(\" \"),_c('div',{staticClass:\"example-btn\"},[_c('file-upload',{ref:\"upload2\",staticClass:\"btn btn-primary\",attrs:{\"input-id\":\"file2\",\"post-action\":\"/upload/post\"},model:{value:(_vm.files2),callback:function ($$v) {_vm.files2=$$v},expression:\"files2\"}},[_c('i',{staticClass:\"fa fa-plus\"}),_vm._v(\"\\n Select files\\n \")]),_vm._v(\" \"),_c('label',{staticClass:\"btn btn-primary\",attrs:{\"for\":\"file2\"}},[_vm._v(\"Label Select files\")]),_vm._v(\" \"),(!_vm.$refs.upload2 || !_vm.$refs.upload2.active)?_c('button',{staticClass:\"btn btn-success\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload2.active = true}}},[_c('i',{staticClass:\"fa fa-arrow-up\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Start Upload\\n \")]):_c('button',{staticClass:\"btn btn-danger\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload2.active = false}}},[_c('i',{staticClass:\"fa fa-stop\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Stop Upload\\n \")])],1)]),_vm._v(\" \"),_vm._m(0)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pt-5\"},[_vm._v(\"\\n Source code: \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/views/examples/Multiple.vue\"}},[_vm._v(\"/docs/views/examples/Multiple.vue\")])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Chunk.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Chunk.vue?vue&type=script&lang=js\"","\n\n\n\n\n\n\n","import { render, staticRenderFns } from \"./Chunk.vue?vue&type=template&id=c205936e&scoped=true\"\nimport script from \"./Chunk.vue?vue&type=script&lang=js\"\nexport * from \"./Chunk.vue?vue&type=script&lang=js\"\nimport style0 from \"./Chunk.vue?vue&type=style&index=0&lang=css\"\nimport style1 from \"./Chunk.vue?vue&type=style&index=1&id=c205936e&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c205936e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"example-simple\"},[_c('h1',{staticClass:\"example-title\",attrs:{\"id\":\"example-title\"}},[_vm._v(\"Chunk Upload Example\")]),_vm._v(\" \"),_c('p',[_vm._v(\"When using chunk uploads, the file will be uploaded in different parts (or chunks). All the files with a size higher than the set in the input will be uploaded using this method.\")]),_vm._v(\" \"),_vm._m(0),_vm._v(\" \"),_c('p',[_vm._v(\"You can also pause / resume the upload process.\")]),_vm._v(\" \"),_c('div',{staticClass:\"upload\"},[_c('div',{staticClass:\"form-horizontal\"},[_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"col-sm-offset-2 col-sm-10\"},[_c('div',{staticClass:\"checkbox\"},[_c('label',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.chunkEnabled),expression:\"chunkEnabled\"}],attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.chunkEnabled)?_vm._i(_vm.chunkEnabled,null)>-1:(_vm.chunkEnabled)},on:{\"change\":function($event){var $$a=_vm.chunkEnabled,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.chunkEnabled=$$a.concat([$$v]))}else{$$i>-1&&(_vm.chunkEnabled=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.chunkEnabled=$$c}}}}),_vm._v(\" Use chunk upload\\n \")])])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"col-sm-2 control-label\",attrs:{\"for\":\"inputMinSize\"}},[_vm._v(\"Min Size\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-10\"},[_c('div',{staticClass:\"input-group\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.chunkMinSize),expression:\"chunkMinSize\"}],staticClass:\"form-control\",attrs:{\"id\":\"inputMinSize\",\"type\":\"number\"},domProps:{\"value\":(_vm.chunkMinSize)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.chunkMinSize=$event.target.value}}}),_vm._v(\" \"),_c('span',{staticClass:\"input-group-addon\"},[_vm._v(\"MB\")])])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"col-sm-2 control-label\",attrs:{\"for\":\"inputMaxActive\"}},[_vm._v(\"Max Active Chunks\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-10\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.chunkMaxActive),expression:\"chunkMaxActive\"}],staticClass:\"form-control\",attrs:{\"id\":\"inputMaxActive\",\"type\":\"number\"},domProps:{\"value\":(_vm.chunkMaxActive)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.chunkMaxActive=$event.target.value}}})])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"col-sm-2 control-label\",attrs:{\"for\":\"inputMaxRetries\"}},[_vm._v(\"Max Chunk Retries\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-10\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.chunkMaxRetries),expression:\"chunkMaxRetries\"}],staticClass:\"form-control\",attrs:{\"id\":\"inputMaxRetries\",\"type\":\"number\"},domProps:{\"value\":(_vm.chunkMaxRetries)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.chunkMaxRetries=$event.target.value}}})])])]),_vm._v(\" \"),_c('table',{staticClass:\"table table-striped table-condensed\"},[_vm._m(1),_vm._v(\" \"),_c('tbody',[_vm._l((_vm.files),function(file){return [_c('tr',{key:file.id + '-info'},[_c('td',[_vm._v(_vm._s(file.name))]),_vm._v(\" \"),_c('td',{staticClass:\"text-right\"},[_vm._v(_vm._s(_vm._f(\"formatSize\")(file.size)))]),_vm._v(\" \"),_c('td',{staticClass:\"text-right\"},[_vm._v(_vm._s(file.progress)+\"%\")]),_vm._v(\" \"),(file.error)?_c('td',[_vm._v(_vm._s(file.error))]):(file.success)?_c('td',[_vm._v(\"Success\")]):(file.active)?_c('td',[_vm._v(\"Active\")]):_c('td',[_vm._v(\" - \")]),_vm._v(\" \"),_c('td',[(file.chunk)?[(file.active)?_c('button',{staticClass:\"btn btn-sm btn-danger\",on:{\"click\":function($event){file.chunk.pause()}}},[_c('i',{staticClass:\"fa fa-pause\"})]):_vm._e(),_vm._v(\" \"),(!file.active && file.chunk.hasChunksToUpload)?_c('button',{staticClass:\"btn btn-sm btn-primary\",on:{\"click\":function($event){file.chunk.resume()}}},[_c('i',{staticClass:\"fa fa-play\"})]):_vm._e()]:_vm._e()],2),_vm._v(\" \"),(file.chunk)?[_c('td',{staticClass:\"text-right\"},[_vm._v(_vm._s(file.chunk.chunks.length))]),_vm._v(\" \"),_c('td',{staticClass:\"text-right\"},[_vm._v(_vm._s(file.chunk.chunksUploading.length))]),_vm._v(\" \"),_c('td',{staticClass:\"text-right\"},[_vm._v(_vm._s(file.chunk.chunksUploaded.length))])]:[_c('td',{staticClass:\"text-right\"},[_vm._v(\" - \")]),_vm._v(\" \"),_c('td',{staticClass:\"text-right\"},[_vm._v(\" - \")]),_vm._v(\" \"),_c('td',{staticClass:\"text-right\"},[_vm._v(\" - \")])]],2),_vm._v(\" \"),_c('tr',{key:file.id + '-loading'},[_c('td',{attrs:{\"colspan\":\"8\"}},[(file.chunk)?_c('div',{staticClass:\"chunk-loading\"},_vm._l((file.chunk.chunks),function(chunk,index){return _c('span',{key:index,staticClass:\"chunk-loading-part\",class:{'chunk-loading-part__uploaded': chunk.uploaded}},[(chunk.retries != file.chunk.maxRetries)?[_vm._v(\"\\n \"+_vm._s(file.chunk.maxRetries - chunk.retries)+\" error(s)\\n \")]:_vm._e()],2)})):_vm._e()])])]})],2)]),_vm._v(\" \"),_c('div',{staticClass:\"example-btn\"},[_c('file-upload',{ref:\"upload\",staticClass:\"btn btn-primary\",attrs:{\"post-action\":\"/upload/post\",\"chunk-enabled\":_vm.chunkEnabled,\"chunk\":{\n action: '/upload/chunk',\n minSize: _vm.chunkMinSize * 1048576,\n maxActive: _vm.chunkMaxActive,\n maxRetries: _vm.chunkMaxRetries\n },\"extensions\":\"gif,jpg,jpeg,png,webp\",\"accept\":\"image/png,image/gif,image/jpeg,image/webp\",\"multiple\":true,\"size\":1024 * 1024 * 10},on:{\"input-filter\":_vm.inputFilter,\"input-file\":_vm.inputFile},model:{value:(_vm.files),callback:function ($$v) {_vm.files=$$v},expression:\"files\"}},[_c('i',{staticClass:\"fa fa-plus\"}),_vm._v(\"\\n Select files\\n \")])],1)]),_vm._v(\" \"),_vm._m(2)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_vm._v(\"You will be able to see the different parts being uploaded individually. Some parts might fail, and the package is prepared to \"),_c('em',[_vm._v(\"retry\")]),_vm._v(\" up to a certain amount of times.\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('thead',{staticClass:\"thead-dark\"},[_c('tr',[_c('th',[_vm._v(\"Name\")]),_vm._v(\" \"),_c('th',{staticClass:\"text-right\"},[_vm._v(\"Size\")]),_vm._v(\" \"),_c('th',{staticClass:\"text-right\"},[_vm._v(\"Progress\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Status\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Pause\")]),_vm._v(\" \"),_c('th',{staticClass:\"text-center\",attrs:{\"colspan\":\"3\"}},[_vm._v(\"Chunks\")])]),_vm._v(\" \"),_c('tr',[_c('th',{attrs:{\"colspan\":\"5\"}}),_vm._v(\" \"),_c('th',{staticClass:\"text-right\"},[_vm._v(\"Total\")]),_vm._v(\" \"),_c('th',{staticClass:\"text-right\"},[_vm._v(\"Active\")]),_vm._v(\" \"),_c('th',{staticClass:\"text-right\"},[_vm._v(\"Completed\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pt-5\"},[_vm._v(\"\\n Source code: \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/views/examples/Chunk.vue\"}},[_vm._v(\"/docs/views/examples/Chunk.vue\")])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Vuex.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Vuex.vue?vue&type=script&lang=js\"","\n\n\n\n","// import Vue from 'vue'\nimport VueRouter from 'vue-router'\n\nimport i18n from './i18n'\nimport RouterComponent from './views/Router'\nimport DocumentComponent from './views/Document'\nimport ExampleComponent from './views/Example'\n\nimport FullExampleComponent from './views/examples/Full'\nimport SimpleExampleComponent from './views/examples/Simple'\nimport AvatarExampleComponent from './views/examples/Avatar'\nimport DragExampleComponent from './views/examples/Drag'\nimport MultipleExampleComponent from './views/examples/Multiple'\nimport ChunkExampleComponent from './views/examples/Chunk'\nimport VuexExampleComponent from './views/examples/Vuex'\n\n\n\n// Vue.use(VueRouter)\n\n\nlet examples = [\n {\n path: '',\n component: FullExampleComponent,\n },\n {\n path: 'full',\n component: FullExampleComponent,\n },\n {\n path: 'simple',\n component: SimpleExampleComponent,\n },\n {\n path: 'avatar',\n component: AvatarExampleComponent,\n },\n {\n path: 'drag',\n component: DragExampleComponent,\n },\n {\n path: 'multiple',\n component: MultipleExampleComponent,\n },\n {\n path: 'chunk',\n component: ChunkExampleComponent,\n },\n {\n path: 'vuex',\n component: VuexExampleComponent,\n },\n]\n\n\n\nconst router = new VueRouter({\n mode: 'hash',\n fallback: false,\n scrollBehavior(to, from, savedPosition) {\n if (savedPosition) {\n return savedPosition\n } else if (to.hash) {\n let el = document.querySelector(to.hash)\n return { x: 0, y: el ? el.offsetTop : 0 }\n } else {\n return { x: 0, y: 0 }\n }\n },\n routes: [\n {\n path: '/:locale(' + Object.keys(i18n.messages).join('|') + ')?',\n component: RouterComponent,\n children: [\n {\n path: 'documents',\n component: DocumentComponent,\n },\n {\n path: 'examples',\n component: ExampleComponent,\n children: examples,\n },\n {\n path: '',\n component: ExampleComponent,\n children: examples,\n },\n ]\n },\n ]\n})\nexport default router\n","import { render, staticRenderFns } from \"./Vuex.vue?vue&type=template&id=765a8e49\"\nimport script from \"./Vuex.vue?vue&type=script&lang=js\"\nexport * from \"./Vuex.vue?vue&type=script&lang=js\"\nimport style0 from \"./Vuex.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"example-vuex\"},[_c('h1',{staticClass:\"example-title\",attrs:{\"id\":\"example-title\"}},[_vm._v(\"Vuex Example\")]),_vm._v(\" \"),_c('div',{staticClass:\"upload\"},[_c('ul',_vm._l((_vm.files),function(file,index){return _c('li',{key:file.id},[_c('span',[_vm._v(_vm._s(file.name))]),_vm._v(\" -\\n \"),_c('span',[_vm._v(_vm._s(_vm._f(\"formatSize\")(file.size)))]),_vm._v(\" -\\n \"),(file.error)?_c('span',[_vm._v(_vm._s(file.error))]):(file.success)?_c('span',[_vm._v(\"success\")]):(file.active)?_c('span',[_vm._v(\"active\")]):(file.active)?_c('span',[_vm._v(\"active\")]):_c('span')])})),_vm._v(\" \"),_c('div',{staticClass:\"example-btn\"},[_c('file-upload',{ref:\"upload\",staticClass:\"btn btn-primary\",attrs:{\"post-action\":\"/upload/post\",\"extensions\":\"gif,jpg,jpeg,png,webp\",\"accept\":\"image/png,image/gif,image/jpeg,image/webp\",\"multiple\":true,\"size\":1024 * 1024 * 10,\"value\":_vm.files},on:{\"input\":_vm.inputUpdate}},[_c('i',{staticClass:\"fa fa-plus\"}),_vm._v(\"\\n Select files\\n \")]),_vm._v(\" \"),(!_vm.$refs.upload || !_vm.$refs.upload.active)?_c('button',{staticClass:\"btn btn-success\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = true}}},[_c('i',{staticClass:\"fa fa-arrow-up\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Start Upload\\n \")]):_c('button',{staticClass:\"btn btn-danger\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.$refs.upload.active = false}}},[_c('i',{staticClass:\"fa fa-stop\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n Stop Upload\\n \")])],1)]),_vm._v(\" \"),_vm._m(0)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pt-5\"},[_vm._v(\"\\n Source code: \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/views/examples/Vuex.vue\"}},[_vm._v(\"/docs/views/examples/Vuex.vue\")]),_vm._v(\", \"),_c('a',{attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/blob/master/docs/store.js\"}},[_vm._v(\"/docs/store.js\")])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/babel-loader/lib/index.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"","\n\n\n","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=521aa91e\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('header',{staticClass:\"navbar navbar-expand-lg navbar-dark bg-dark\",attrs:{\"id\":\"header\"}},[_c('router-link',{staticClass:\"navbar-brand\",attrs:{\"exact\":true,\"to\":_vm._f(\"toLocale\")('/')}},[_vm._v(_vm._s(_vm.$t('header.logo')))]),_vm._v(\" \"),_c('button',{staticClass:\"navbar-toggler\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();_vm.showNav = !_vm.showNav}}},[_c('span',{staticClass:\"navbar-toggler-icon\"})]),_vm._v(\" \"),_c('nav',{class:{collapse: true, 'navbar-collapse': true, show: _vm.showNav},attrs:{\"id\":\"navbar\"}},[_c('ul',{staticClass:\"navbar-nav\"},[_c('li',{staticClass:\"nav-item\"},[_c('router-link',{class:'nav-link' + (_vm.$route.path === '/' ? ' active' : ''),attrs:{\"active-class\":\"active\",\"exact\":true,\"to\":_vm._f(\"toLocale\")('/')}},[_vm._v(_vm._s(_vm.$t('header.home')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/documents')}},[_vm._v(_vm._s(_vm.$t('header.documents')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"active-class\":\"active\",\"to\":_vm._f(\"toLocale\")('/examples')}},[_vm._v(_vm._s(_vm.$t('header.examples')))])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('a',{staticClass:\"nav-link\",attrs:{\"rel\":\"license noopener\",\"href\":\"https://www.lianyue.org\",\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.$t('header.blog')))])])]),_vm._v(\" \"),_c('ul',{staticClass:\"navbar-nav ml-md-auto\"},[_c('li',{staticClass:\"nav-item dropdown\"},[_c('a',{staticClass:\"nav-link dropdown-toggle\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.onLocale(true)},\"focus\":function($event){_vm.onLocale(true)},\"blur\":function($event){_vm.onLocale(false)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('header.locale'))+\"\\n \")]),_vm._v(\" \"),_c('div',{class:{'dropdown-menu': true, show: _vm.showLocale},on:{\"blur\":function($event){_vm.onLocale(false)}}},_vm._l((_vm.locale),function(value,name){return _c('router-link',{key:name,staticClass:\"dropdown-item\",attrs:{\"to\":'/' + name + (_vm.$route.params.locale ? _vm.$route.fullPath.substr(_vm.$route.params.locale.length + 1) : _vm.$route.fullPath)}},[_vm._v(_vm._s(value))])}))]),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('a',{staticClass:\"nav-link\",attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component/issues\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('header.issues'))+\"\\n \")])]),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('a',{staticClass:\"nav-link\",attrs:{\"href\":\"https://github.com/lian-yue/vue-upload-component\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('header.github'))+\"\\n \")])])])])],1),_vm._v(\" \"),_c('router-view')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue'\nimport marked from 'marked'\nimport highlightjs from 'highlight.js'\nimport store from './store'\nimport router from './router'\nimport i18n from './i18n'\nimport App from './views/App'\n\nVue.config.silent = false\nVue.config.devtools = true\n\n\nclass Renderer extends marked.Renderer {\n heading(text, level, raw) {\n let rawName = raw.toLowerCase().replace(/([\\u0000-\\u002F\\u003A-\\u0060\\u007B-\\u007F]+)/g, '-').replace(/^\\-+|\\-+$/, '')\n\n if (!this.options.headers) {\n this.options.headers = []\n }\n while (this.options.headers.length >= level) {\n this.options.headers.pop()\n }\n let parent = this.options.headers.filter(value => !!value).join('-')\n if (parent) {\n parent = parent + '-'\n }\n while (this.options.headers.length < (level - 1)) {\n this.options.headers.push('')\n }\n this.options.headers.push(rawName)\n return ''\n + text\n + '\\n'\n }\n}\n\nmarked.setOptions({\n renderer: new Renderer(),\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n smartLists: true,\n smartypants: false,\n highlight(code, lang) {\n if (lang) {\n return highlightjs.highlight(lang, code).value\n } else {\n return highlightjs.highlightAuto(code).value\n }\n }\n})\n\nVue.directive('markdown', function (el, binding, vnode) {\n if (!el.className || !/vue-markdown/.test(el.className)) {\n el.className += ' vue-markdown'\n }\n let text = ''\n for (let i = 0; i < vnode.children.length; i++) {\n text += vnode.children[i].text || ''\n }\n if (el.markdown === text) {\n return\n }\n\n el.markdown = text\n\n el.innerHTML = marked(text)\n let selectorList = el.querySelectorAll('a')\n for (let i = 0; i < selectorList.length; i++) {\n selectorList[i].onclick = function (e) {\n if (e.metaKey || e.ctrlKey || e.shiftKey) {\n return\n }\n if (e.defaultPrevented) {\n return\n }\n if (e.button !== undefined && e.button !== 0) {\n return\n }\n\n if (this.host !== window.location.host) {\n return\n }\n\n let href = this.getAttribute('href')\n if (!href) {\n return\n }\n\n if (href.charAt(0) !== '#') {\n return\n }\n\n e.preventDefault()\n router.push(href)\n }\n }\n})\n\n\n\nVue.filter('formatSize', function (size) {\n if (size > 1024 * 1024 * 1024 * 1024) {\n return (size / 1024 / 1024 / 1024 / 1024).toFixed(2) + ' TB'\n } else if (size > 1024 * 1024 * 1024) {\n return (size / 1024 / 1024 / 1024).toFixed(2) + ' GB'\n } else if (size > 1024 * 1024) {\n return (size / 1024 / 1024).toFixed(2) + ' MB'\n } else if (size > 1024) {\n return (size / 1024).toFixed(2) + ' KB'\n }\n return size.toString() + ' B'\n})\n\nVue.filter('toLocale', function (to) {\n return '/' + i18n.locale + to\n})\n\n\n\nnew Vue({\n store,\n router,\n i18n,\n ...App\n}).$mount('#app')\n","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"#header{position:-webkit-sticky;position:sticky;top:0;z-index:1071}#sidebar{background:#fff;border-right:1px solid #e5e5e5;border-bottom:1px solid #e5e5e5}@media (min-width:768px){#sidebar{position:-webkit-sticky;position:sticky;top:3.5rem;z-index:1000;max-height:calc(100vh - 3.5rem);border-right:1px solid #e5e5e5;border-bottom:1px solid #e5e5e5}}#sidebar-nav{padding-top:1rem;padding-bottom:1rem;margin-right:-15px;margin-left:-15px;max-height:100%;overflow-y:auto}#sidebar-nav .nav{display:block}#sidebar-nav .nav .nav-item .nav{display:none;margin-bottom:1rem}#sidebar-nav .nav .active+.nav,#sidebar-nav .nav .nav-item.active .nav{display:block}@media (min-width:768px){#sidebar-nav .nav .nav-item .nav{display:block}}#sidebar-nav .nav .active>.nav-link,#sidebar-nav .nav .nav-link.active{color:#262626;font-weight:500}#sidebar-nav .nav-item .nav-link{padding:.25rem 1rem;font-weight:500;color:#666}#sidebar-nav .nav-item .nav-item .nav-link{font-weight:400;font-size:85%;margin-left:1rem}#main{padding-top:1rem;margin-bottom:2rem}blockquote{margin-bottom:1rem;font-size:1.25rem;padding:0 1em;color:#6a737d;border-left:.25em solid #dfe2e5}pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;background-color:#f6f8fa;border-radius:3px}.modal-backdrop.fade{visibility:hidden}.modal-backdrop.fade.show{visibility:visible}.fade.show{display:block;z-index:1072}\", \"\"]);\n\n// exports\n","import mod from \"-!../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/index.js??ref--2-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/index.js??ref--2-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".example-vuex label.btn{margin-bottom:0;margin-right:1rem}\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Vuex.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Vuex.vue?vue&type=style&index=0&lang=css\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".chunk-loading[data-v-c205936e]{margin:-12px;display:flex;width:calc(100% + 24px)}.chunk-loading .chunk-loading-part[data-v-c205936e]{height:25px;line-height:25px;flex:1;background:#ccc;font-size:14px;color:#fff;text-align:center}.chunk-loading .chunk-loading-part.chunk-loading-part__uploaded[data-v-c205936e]{background:#28a745}\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Chunk.vue?vue&type=style&index=1&id=c205936e&scoped=true&lang=css\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Chunk.vue?vue&type=style&index=1&id=c205936e&scoped=true&lang=css\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".example-simple label.btn{margin-bottom:0;margin-right:1rem}\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Chunk.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Chunk.vue?vue&type=style&index=0&lang=css\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".example-multiple label.btn{margin-bottom:0;margin-right:1rem}.example-multiple .upload{margin-bottom:1rem}\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Multiple.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Multiple.vue?vue&type=style&index=0&lang=css\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".example-drag label.btn{margin-bottom:0;margin-right:1rem}.example-drag .drop-active{top:0;bottom:0;right:0;left:0;position:fixed;z-index:9999;opacity:.6;text-align:center;background:#000}.example-drag .drop-active h3{margin:-.5em 0 0;position:absolute;top:50%;left:0;right:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);font-size:40px;color:#fff;padding:0}\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Drag.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Drag.vue?vue&type=style&index=0&lang=css\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".example-avatar .avatar-upload .rounded-circle{width:200px;height:200px}.example-avatar .text-center .btn{margin:0 .5rem}.example-avatar .avatar-edit-image{max-width:100%}.example-avatar .drop-active{top:0;bottom:0;right:0;left:0;position:fixed;z-index:9999;opacity:.6;text-align:center;background:#000}.example-avatar .drop-active h3{margin:-.5em 0 0;position:absolute;top:50%;left:0;right:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);font-size:40px;color:#fff;padding:0}\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Avatar.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Avatar.vue?vue&type=style&index=0&lang=css\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".example-simple label.btn{margin-bottom:0;margin-right:1rem}\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Simple.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Simple.vue?vue&type=style&index=0&lang=css\"","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".example-full .btn-group .dropdown-menu{display:block;visibility:hidden;transition:all .2s}.example-full .btn-group:hover>.dropdown-menu{visibility:visible}.example-full label.dropdown-item{margin-bottom:0}.example-full .btn-group .dropdown-toggle{margin-right:.6rem}.example-full .filename{margin-bottom:.3rem}.example-full .btn-is-option{margin-top:.25rem}.example-full .example-foorer{padding:.5rem 0;border-top:1px solid #e9ecef;border-bottom:1px solid #e9ecef}.example-full .edit-image img{max-width:100%}.example-full .edit-image-tool{margin-top:.6rem}.example-full .edit-image-tool .btn-group{margin-right:.6rem}.example-full .footer-status{padding-top:.4rem}.example-full .drop-active{top:0;bottom:0;right:0;left:0;position:fixed;z-index:9999;opacity:.6;text-align:center;background:#000}.example-full .drop-active h3{margin:-.5em 0 0;position:absolute;top:50%;left:0;right:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);font-size:40px;color:#fff;padding:0}\", \"\"]);\n\n// exports\n","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Full.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/index.js??ref--2-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Full.vue?vue&type=style&index=0&lang=css\"","exports = module.exports = require(\"../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".file-uploads{overflow:hidden;position:relative;text-align:center;display:inline-block}.file-uploads.file-uploads-html4 input[type=file]{opacity:0;font-size:20em;z-index:1;top:0;left:0;right:0;bottom:0;position:absolute;width:100%;height:100%}.file-uploads.file-uploads-html5 input[type=file]{overflow:hidden;position:fixed;width:1px;height:1px;z-index:-1;opacity:0}\", \"\"]);\n\n// exports\n","import mod from \"-!../node_modules/vue-style-loader/index.js!../node_modules/css-loader/index.js??ref--2-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileUpload.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../node_modules/vue-style-loader/index.js!../node_modules/css-loader/index.js??ref--2-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileUpload.vue?vue&type=style&index=0&lang=css\"","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".document-title{margin-bottom:2rem;padding-bottom:1rem;border-bottom:1px solid #ddd}.document-content h2{padding-top:1rem;padding-bottom:1rem;margin-top:4rem;border-bottom:1px solid #eaecef}.document-content h2+h3,.document-content h2:first-child{margin-top:0}.document-content h3{margin-top:1.5rem;padding-top:1rem;margin-bottom:1rem}\", \"\"]);\n\n// exports\n","import mod from \"-!../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/index.js??ref--2-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Document.vue?vue&type=style&index=0&lang=css\"; export default mod; export * from \"-!../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/index.js??ref--2-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Document.vue?vue&type=style&index=0&lang=css\"","var map = {\n\t\"./en\": 22,\n\t\"./en.md\": 22,\n\t\"./zh-cn\": 21,\n\t\"./zh-cn.md\": 21\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\tvar module = __webpack_require__(id);\n\treturn module;\n}\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) { // check for number or string\n\t\tvar e = new Error('Cannot find module \"' + req + '\".');\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn id;\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 50;"],"sourceRoot":""} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 95653d2..e85e983 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,111 +1,162 @@ { "name": "vue-upload-component", - "version": "2.8.5", + "version": "2.8.7", "lockfileVersion": 1, "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.0.0-beta.36", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.36.tgz", - "integrity": "sha512-sW77BFwJ48YvQp3Gzz5xtAUiXuYOL2aMJKDwiaY3OcvdqBFurtYfOpSa4QrNyDxmOGRFSYzUpabU2m9QrlWE7w==", + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz", + "integrity": "sha512-cuAuTTIQ9RqcFRJ/Y8PvTh+paepNcaGxwQwjIDRWPXmzzyAeCO4KqS9ikMvq0MCbRk6GlYKwfzStrcP3/jSL8g==", "dev": true, "requires": { - "chalk": "2.3.0", + "@babel/highlight": "7.0.0-beta.44" + } + }, + "@babel/generator": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.44.tgz", + "integrity": "sha512-5xVb7hlhjGcdkKpMXgicAVgx8syK5VJz193k0i/0sLP6DzE6lRrU1K3B/rFefgdo9LPGMAOOOAWW4jycj07ShQ==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.44", + "jsesc": "2.5.1", + "lodash": "4.17.10", + "source-map": "0.5.7", + "trim-right": "1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz", + "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=", + "dev": true + } + } + }, + "@babel/helper-function-name": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.44.tgz", + "integrity": "sha512-MHRG2qZMKMFaBavX0LWpfZ2e+hLloT++N7rfM3DYOMUOGCD8cVjqZpwiL8a0bOX3IYcQev1ruciT0gdFFRTxzg==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "7.0.0-beta.44", + "@babel/template": "7.0.0-beta.44", + "@babel/types": "7.0.0-beta.44" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.44.tgz", + "integrity": "sha512-w0YjWVwrM2HwP6/H3sEgrSQdkCaxppqFeJtAnB23pRiJB5E/O9Yp7JAAeWBl+gGEgmBFinnTyOv2RN7rcSmMiw==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.44" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.44.tgz", + "integrity": "sha512-aQ7QowtkgKKzPGf0j6u77kBMdUFVBKNHw2p/3HX/POt5/oz8ec5cs0GwlgM8Hz7ui5EwJnzyfRmkNF1Nx1N7aA==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.44" + } + }, + "@babel/highlight": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.44.tgz", + "integrity": "sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ==", + "dev": true, + "requires": { + "chalk": "2.4.1", "esutils": "2.0.2", "js-tokens": "3.0.2" }, "dependencies": { "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "1.9.1" } }, "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { - "ansi-styles": "3.2.0", + "ansi-styles": "3.2.1", "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" + "supports-color": "5.4.0" } }, "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { - "has-flag": "2.0.0" + "has-flag": "3.0.0" } } } }, - "@babel/helper-function-name": { - "version": "7.0.0-beta.36", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.36.tgz", - "integrity": "sha512-/SGPOyifPf20iTrMN+WdlY2MbKa7/o4j7B/4IAsdOusASp2icT+Wcdjf4tjJHaXNX8Pe9bpgVxLNxhRvcf8E5w==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "7.0.0-beta.36", - "@babel/template": "7.0.0-beta.36", - "@babel/types": "7.0.0-beta.36" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.0.0-beta.36", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.36.tgz", - "integrity": "sha512-vPPcx2vsSoDbcyWr9S3nd0FM3B4hEXnt0p1oKpwa08GwK0fSRxa98MyaRGf8suk8frdQlG1P3mDrz5p/Rr3pbA==", + "@babel/runtime": { + "version": "7.0.0-beta.48", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.0.0-beta.48.tgz", + "integrity": "sha512-yzvAaV6DgvFtuhvTWCHKOxTJlrKK/G+Nkd6C84NCpXwGcUfVwRZFjqA+j/fCi1IWxkmDBFeCH+AtD33T+jE/JQ==", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.36" + "core-js": "2.5.6", + "regenerator-runtime": "0.11.1" } }, "@babel/template": { - "version": "7.0.0-beta.36", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.36.tgz", - "integrity": "sha512-mUBi90WRyZ9iVvlWLEdeo8gn/tROyJdjKNC4W5xJTSZL+9MS89rTJSqiaJKXIkxk/YRDL/g/8snrG/O0xl33uA==", + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.44.tgz", + "integrity": "sha512-w750Sloq0UNifLx1rUqwfbnC6uSUk0mfwwgGRfdLiaUzfAOiH0tHJE6ILQIUi3KYkjiCDTskoIsnfqZvWLBDng==", "dev": true, "requires": { - "@babel/code-frame": "7.0.0-beta.36", - "@babel/types": "7.0.0-beta.36", - "babylon": "7.0.0-beta.36", - "lodash": "4.17.4" + "@babel/code-frame": "7.0.0-beta.44", + "@babel/types": "7.0.0-beta.44", + "babylon": "7.0.0-beta.44", + "lodash": "4.17.10" }, "dependencies": { "babylon": { - "version": "7.0.0-beta.36", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.36.tgz", - "integrity": "sha512-rw4YdadGwajAMMRl6a5swhQ0JCOOFyaYCfJ0AsmNBD8uBD/r4J8mux7wBaqavvFKqUKQYWOzA1Speams4YDzsQ==", + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz", + "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==", "dev": true } } }, "@babel/traverse": { - "version": "7.0.0-beta.36", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.36.tgz", - "integrity": "sha512-OTUb6iSKVR/98dGThRJ1BiyfwbuX10BVnkz89IpaerjTPRhDfMBfLsqmzxz5MiywUOW4M0Clta0o7rSxkfcuzw==", + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.44.tgz", + "integrity": "sha512-UHuDz8ukQkJCDASKHf+oDt3FVUzFd+QYfuBIsiNu/4+/ix6pP/C+uQZJ6K1oEfbCMv/IKWbgDEh7fcsnIE5AtA==", "dev": true, "requires": { - "@babel/code-frame": "7.0.0-beta.36", - "@babel/helper-function-name": "7.0.0-beta.36", - "@babel/types": "7.0.0-beta.36", - "babylon": "7.0.0-beta.36", + "@babel/code-frame": "7.0.0-beta.44", + "@babel/generator": "7.0.0-beta.44", + "@babel/helper-function-name": "7.0.0-beta.44", + "@babel/helper-split-export-declaration": "7.0.0-beta.44", + "@babel/types": "7.0.0-beta.44", + "babylon": "7.0.0-beta.44", "debug": "3.1.0", - "globals": "11.2.0", - "invariant": "2.2.2", - "lodash": "4.17.4" + "globals": "11.5.0", + "invariant": "2.2.4", + "lodash": "4.17.10" }, "dependencies": { "babylon": { - "version": "7.0.0-beta.36", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.36.tgz", - "integrity": "sha512-rw4YdadGwajAMMRl6a5swhQ0JCOOFyaYCfJ0AsmNBD8uBD/r4J8mux7wBaqavvFKqUKQYWOzA1Speams4YDzsQ==", + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz", + "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==", "dev": true }, "debug": { @@ -118,21 +169,21 @@ } }, "globals": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.2.0.tgz", - "integrity": "sha512-RDC7Tj17I/56wpVvCVLSXtnn2Fo6CQZ9vaj+ARn+qlzm/ozbKQZe+j9fvHZCbSq+4JSGjTpKEt7p/AA1IKXRFA==", + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.5.0.tgz", + "integrity": "sha512-hYyf+kI8dm3nORsiiXUQigOU62hDLfJ9G01uyGMxhc6BKsircrUhC4uJPQPUSuq2GrTmiiEt7ewxlMdBewfmKQ==", "dev": true } } }, "@babel/types": { - "version": "7.0.0-beta.36", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.36.tgz", - "integrity": "sha512-PyAORDO9um9tfnrddXgmWN9e6Sq9qxraQIt5ynqBOSXKA5qvK1kUr+Q3nSzKFdzorsiK+oqcUnAFvEoKxv9D+Q==", + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.44.tgz", + "integrity": "sha512-5eTV4WRmqbaFM3v9gHAIljEQJU4Ssc6fxL61JN+Oe2ga/BwyjzjamwkCVVAQjHGuAX8i0BWo42dshL8eO5KfLQ==", "dev": true, "requires": { "esutils": "2.0.2", - "lodash": "4.17.4", + "lodash": "4.17.10", "to-fast-properties": "2.0.0" }, "dependencies": { @@ -144,71 +195,377 @@ } } }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "dev": true, + "requires": { + "call-me-maybe": "1.0.1", + "glob-to-regexp": "0.3.0" + } + }, + "@nodelib/fs.stat": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.0.tgz", + "integrity": "sha512-LAQ1d4OPfSJ/BMbI2DuizmYrrkD9JMaTdi2hQTlI53lQ4kRQPyZQRS4CYQ7O66bnBBnP/oYdRxbk++X0xuFU6A==", + "dev": true + }, + "@samverschueren/stream-to-observable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz", + "integrity": "sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg==", + "dev": true, + "requires": { + "any-observable": "0.3.0" + } + }, + "@sindresorhus/is": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", + "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", + "dev": true + }, + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, "@types/node": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-9.3.0.tgz", - "integrity": "sha512-wNBfvNjzsJl4tswIZKXCFQY0lss9nKUyJnG6T94X/eqjRgI2jHZ4evdjhQYBSan/vGtF6XVXPApOmNH2rf0KKw==", + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.1.2.tgz", + "integrity": "sha512-bjk1RIeZBCe/WukrFToIVegOf91Pebr8cXYBwLBIsfiGWVQ+ifwWsT59H3RxrWzWrzd1l/Amk1/ioY5Fq3/bpA==", "dev": true }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "@vue/component-compiler": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@vue/component-compiler/-/component-compiler-3.3.2.tgz", + "integrity": "sha512-LhFAGyjkfJrwQhitwgV035del93s88lx5F/oVHJZdYkLC6KCf0ENg17p7F7Oll40u+YMcQLR0RTFyJi5jXHmfQ==", "dev": true, - "optional": true + "requires": { + "@vue/component-compiler-utils": "1.3.0", + "clean-css": "4.1.11", + "hash-sum": "1.0.2", + "postcss-modules-sync": "1.0.0" + } }, - "accepts": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", - "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", + "@vue/component-compiler-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-1.3.0.tgz", + "integrity": "sha512-CerIPMzE6y4J4v68nUh2NFPjOO8zr2r8UDh/yi63E4bf7YB5Aqhm7Fv90zzTF+sOQgsqTb9dgryvpeDY1/7m9g==", "dev": true, "requires": { - "mime-types": "2.1.17", - "negotiator": "0.6.1" + "consolidate": "0.15.1", + "hash-sum": "1.0.2", + "lru-cache": "4.1.3", + "merge-source-map": "1.1.0", + "postcss": "6.0.22", + "postcss-selector-parser": "3.1.1", + "prettier": "1.12.1", + "source-map": "0.5.7", + "vue-template-es2015-compiler": "1.6.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.4.0" + } + }, + "postcss": { + "version": "6.0.22", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", + "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", + "dev": true, + "requires": { + "chalk": "2.4.1", + "source-map": "0.6.1", + "supports-color": "5.4.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-selector-parser": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", + "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "dev": true, + "requires": { + "dot-prop": "4.2.0", + "indexes-of": "1.0.1", + "uniq": "1.0.1" + } + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + } } }, - "acorn": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.3.0.tgz", - "integrity": "sha512-Yej+zOJ1Dm/IMZzzj78OntP/r3zHEaKcyNoU2lAaxPtrseM6rF0xwqoz5Q5ysAiED9hTjI2hgtvLXitlCN1/Ug==", + "@webassemblyjs/ast": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.4.3.tgz", + "integrity": "sha512-S6npYhPcTHDYe9nlsKa9CyWByFi8Vj8HovcAgtmMAQZUOczOZbQ8CnwMYKYC5HEZzxEE+oY0jfQk4cVlI3J59Q==", + "dev": true, + "requires": { + "@webassemblyjs/helper-wasm-bytecode": "1.4.3", + "@webassemblyjs/wast-parser": "1.4.3", + "debug": "3.1.0", + "webassemblyjs": "1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.4.3.tgz", + "integrity": "sha512-3zTkSFswwZOPNHnzkP9ONq4bjJSeKVMcuahGXubrlLmZP8fmTIJ58dW7h/zOVWiFSuG2em3/HH3BlCN7wyu9Rw==", "dev": true }, - "acorn-dynamic-import": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", - "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", + "@webassemblyjs/helper-buffer": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.4.3.tgz", + "integrity": "sha512-e8+KZHh+RV8MUvoSRtuT1sFXskFnWG9vbDy47Oa166xX+l0dD5sERJ21g5/tcH8Yo95e9IN3u7Jc3NbhnUcSkw==", "dev": true, "requires": { - "acorn": "4.0.13" + "debug": "3.1.0" }, "dependencies": { - "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", - "dev": true + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } } } }, - "acorn-globals": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", - "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", + "@webassemblyjs/helper-code-frame": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.4.3.tgz", + "integrity": "sha512-9FgHEtNsZQYaKrGCtsjswBil48Qp1agrzRcPzCbQloCoaTbOXLJ9IRmqT+uEZbenpULLRNFugz3I4uw18hJM8w==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.4.3" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.4.3.tgz", + "integrity": "sha512-JINY76U+702IRf7ePukOt037RwmtH59JHvcdWbTTyHi18ixmQ+uOuNhcdCcQHTquDAH35/QgFlp3Y9KqtyJsCQ==", + "dev": true + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.4.3.tgz", + "integrity": "sha512-I7bS+HaO0K07Io89qhJv+z1QipTpuramGwUSDkwEaficbSvCcL92CUZEtgykfNtk5wb0CoLQwWlmXTwGbNZUeQ==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.4.3.tgz", + "integrity": "sha512-p0yeeO/h2r30PyjnJX9xXSR6EDcvJd/jC6xa/Pxg4lpfcNi7JUswOpqDToZQ55HMMVhXDih/yqkaywHWGLxqyQ==", "dev": true, - "optional": true, "requires": { - "acorn": "4.0.13" + "@webassemblyjs/ast": "1.4.3", + "@webassemblyjs/helper-buffer": "1.4.3", + "@webassemblyjs/helper-wasm-bytecode": "1.4.3", + "@webassemblyjs/wasm-gen": "1.4.3", + "debug": "3.1.0" }, "dependencies": { - "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "dev": true, - "optional": true + "requires": { + "ms": "2.0.0" + } + } + } + }, + "@webassemblyjs/leb128": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.4.3.tgz", + "integrity": "sha512-4u0LJLSPzuRDWHwdqsrThYn+WqMFVqbI2ltNrHvZZkzFPO8XOZ0HFQ5eVc4jY/TNHgXcnwrHjONhPGYuuf//KQ==", + "dev": true, + "requires": { + "leb": "0.3.0" + } + }, + "@webassemblyjs/validation": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/validation/-/validation-1.4.3.tgz", + "integrity": "sha512-R+rRMKfhd9mq0rj2mhU9A9NKI2l/Rw65vIYzz4lui7eTKPcCu1l7iZNi4b9Gen8D42Sqh/KGiaQNk/x5Tn/iBQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.4.3" + } + }, + "@webassemblyjs/wasm-edit": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.4.3.tgz", + "integrity": "sha512-qzuwUn771PV6/LilqkXcS0ozJYAeY/OKbXIWU3a8gexuqb6De2p4ya/baBeH5JQ2WJdfhWhSvSbu86Vienttpw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.4.3", + "@webassemblyjs/helper-buffer": "1.4.3", + "@webassemblyjs/helper-wasm-bytecode": "1.4.3", + "@webassemblyjs/helper-wasm-section": "1.4.3", + "@webassemblyjs/wasm-gen": "1.4.3", + "@webassemblyjs/wasm-opt": "1.4.3", + "@webassemblyjs/wasm-parser": "1.4.3", + "@webassemblyjs/wast-printer": "1.4.3", + "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==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.4.3.tgz", + "integrity": "sha512-eR394T8dHZfpLJ7U/Z5pFSvxl1L63JdREebpv9gYc55zLhzzdJPAuxjBYT4XqevUdW67qU2s0nNA3kBuNJHbaQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.4.3", + "@webassemblyjs/helper-wasm-bytecode": "1.4.3", + "@webassemblyjs/leb128": "1.4.3" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.4.3.tgz", + "integrity": "sha512-7Gp+nschuKiDuAL1xmp4Xz0rgEbxioFXw4nCFYEmy+ytynhBnTeGc9W9cB1XRu1w8pqRU2lbj2VBBA4cL5Z2Kw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.4.3", + "@webassemblyjs/helper-buffer": "1.4.3", + "@webassemblyjs/wasm-gen": "1.4.3", + "@webassemblyjs/wasm-parser": "1.4.3", + "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==", + "dev": true, + "requires": { + "ms": "2.0.0" + } } } }, + "@webassemblyjs/wasm-parser": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.4.3.tgz", + "integrity": "sha512-KXBjtlwA3BVukR/yWHC9GF+SCzBcgj0a7lm92kTOaa4cbjaTaa47bCjXw6cX4SGQpkncB9PU2hHGYVyyI7wFRg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.4.3", + "@webassemblyjs/helper-wasm-bytecode": "1.4.3", + "@webassemblyjs/leb128": "1.4.3", + "@webassemblyjs/wasm-parser": "1.4.3", + "webassemblyjs": "1.4.3" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.4.3.tgz", + "integrity": "sha512-QhCsQzqV0CpsEkRYyTzQDilCNUZ+5j92f+g35bHHNqS22FppNTywNFfHPq8ZWZfYCgbectc+PoghD+xfzVFh1Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.4.3", + "@webassemblyjs/floating-point-hex-parser": "1.4.3", + "@webassemblyjs/helper-code-frame": "1.4.3", + "@webassemblyjs/helper-fsm": "1.4.3", + "long": "3.2.0", + "webassemblyjs": "1.4.3" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.4.3.tgz", + "integrity": "sha512-EgXk4anf8jKmuZJsqD8qy5bz2frEQhBvZruv+bqwNoLWUItjNSFygk8ywL3JTEz9KtxTlAmqTXNrdD1d9gNDtg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.4.3", + "@webassemblyjs/wast-parser": "1.4.3", + "long": "3.2.0" + } + }, + "accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "dev": true, + "requires": { + "mime-types": "2.1.18", + "negotiator": "0.6.1" + } + }, + "acorn": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", + "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", + "dev": true + }, + "acorn-dynamic-import": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", + "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", + "dev": true, + "requires": { + "acorn": "5.5.3" + } + }, "acorn-jsx": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", @@ -233,7 +590,7 @@ "dev": true, "requires": { "co": "4.6.0", - "fast-deep-equal": "1.0.0", + "fast-deep-equal": "1.1.0", "fast-json-stable-stringify": "2.0.0", "json-schema-traverse": "0.3.1" } @@ -244,34 +601,16 @@ "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", "dev": true }, - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dev": true, - "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" - } - }, "alphanum-sort": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", "dev": true }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true, - "optional": true - }, "ansi-escapes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", - "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", + "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", "dev": true }, "ansi-html": { @@ -292,39 +631,311 @@ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, - "anymatch": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", - "dev": true, - "requires": { - "micromatch": "2.3.11", - "normalize-path": "2.1.1" - } - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "any-observable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz", + "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==", "dev": true }, - "are-we-there-yet": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", - "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", - "dev": true, - "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.3" - } - }, - "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "dev": true, "requires": { - "sprintf-js": "1.0.3" + "micromatch": "3.1.10", + "normalize-path": "2.1.1" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.2", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.9", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + } + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "1.0.3" } }, "arr-diff": { @@ -348,6 +959,12 @@ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "dev": true + }, "array-find-index": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", @@ -367,7 +984,7 @@ "dev": true, "requires": { "define-properties": "1.1.2", - "es-abstract": "1.10.0" + "es-abstract": "1.11.0" } }, "array-union": { @@ -397,28 +1014,15 @@ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", - "dev": true, - "optional": true - }, - "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", - "dev": true - }, "asn1.js": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.2.tgz", - "integrity": "sha512-b/OsSjvWEo8Pi8H0zsDd2P6Uqo2TK2pH8gNLSJtNLM2Db0v2QaAZ0pBQJXVjAn4gBuugeVDr7s63ZogpUIwWDg==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", "dev": true, "requires": { "bn.js": "4.11.8", "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" + "minimalistic-assert": "1.0.1" } }, "assert": { @@ -430,26 +1034,23 @@ "util": "0.10.3" } }, - "assert-plus": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", - "dev": true - }, "assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, + "ast-types": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.11.3.tgz", + "integrity": "sha512-XA5o5dsNw8MhyW0Q7MWXJWc4oOzZKbdsEJq45h7c8q/d9DwWZ5F2ugUc1PuMLPGsUnphCt/cNDHu8JeBbxf1qA==", + "dev": true + }, "async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", - "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", - "dev": true, - "requires": { - "lodash": "4.17.4" - } + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true }, "async-each": { "version": "1.0.1", @@ -457,23 +1058,10 @@ "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", "dev": true }, - "async-foreach": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", - "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", - "dev": true, - "optional": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, "atob": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", - "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", + "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", "dev": true }, "autoprefixer": { @@ -483,7 +1071,7 @@ "dev": true, "requires": { "browserslist": "1.7.7", - "caniuse-db": "1.0.30000795", + "caniuse-db": "1.0.30000846", "normalize-range": "0.1.2", "num2fraction": "1.2.2", "postcss": "5.2.18", @@ -496,24 +1084,39 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000795", - "electron-to-chromium": "1.3.31" + "caniuse-db": "1.0.30000846", + "electron-to-chromium": "1.3.48" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.5", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" } } } }, - "aws-sign2": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", - "dev": true - }, - "aws4": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", - "dev": true - }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -526,13 +1129,13 @@ } }, "babel-core": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", - "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", "dev": true, "requires": { "babel-code-frame": "6.26.0", - "babel-generator": "6.26.0", + "babel-generator": "6.26.1", "babel-helpers": "6.24.1", "babel-messages": "6.23.0", "babel-register": "6.26.0", @@ -544,7 +1147,7 @@ "convert-source-map": "1.5.1", "debug": "2.6.9", "json5": "0.5.1", - "lodash": "4.17.4", + "lodash": "4.17.10", "minimatch": "3.0.4", "path-is-absolute": "1.0.1", "private": "0.1.8", @@ -553,31 +1156,31 @@ } }, "babel-eslint": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-8.2.1.tgz", - "integrity": "sha512-RzdVOyWKQRUnLXhwLk+eKb4oyW+BykZSkpYwFhM4tnfzAG5OWfvG0w/uyzMp5XKEU0jN82+JefHr39bG2+KhRQ==", + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-8.2.3.tgz", + "integrity": "sha512-0HeSTtaXg/Em7FCUWxwOT+KeFSO1O7LuRuzhk7g+1BjwdlQGlHq4OyMi3GqGxrNfEq8jEi6Hmt5ylEQUhurgiQ==", "dev": true, "requires": { - "@babel/code-frame": "7.0.0-beta.36", - "@babel/traverse": "7.0.0-beta.36", - "@babel/types": "7.0.0-beta.36", - "babylon": "7.0.0-beta.36", + "@babel/code-frame": "7.0.0-beta.44", + "@babel/traverse": "7.0.0-beta.44", + "@babel/types": "7.0.0-beta.44", + "babylon": "7.0.0-beta.44", "eslint-scope": "3.7.1", "eslint-visitor-keys": "1.0.0" }, "dependencies": { "babylon": { - "version": "7.0.0-beta.36", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.36.tgz", - "integrity": "sha512-rw4YdadGwajAMMRl6a5swhQ0JCOOFyaYCfJ0AsmNBD8uBD/r4J8mux7wBaqavvFKqUKQYWOzA1Speams4YDzsQ==", + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz", + "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==", "dev": true } } }, "babel-generator": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", - "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", "dev": true, "requires": { "babel-messages": "6.23.0", @@ -585,7 +1188,7 @@ "babel-types": "6.26.0", "detect-indent": "4.0.0", "jsesc": "1.3.0", - "lodash": "4.17.4", + "lodash": "4.17.10", "source-map": "0.5.7", "trim-right": "1.0.1" } @@ -633,7 +1236,7 @@ "babel-helper-function-name": "6.24.1", "babel-runtime": "6.26.0", "babel-types": "6.26.0", - "lodash": "4.17.4" + "lodash": "4.17.10" } }, "babel-helper-explode-assignable-expression": { @@ -710,7 +1313,7 @@ "requires": { "babel-runtime": "6.26.0", "babel-types": "6.26.0", - "lodash": "4.17.4" + "lodash": "4.17.10" } }, "babel-helper-remap-async-to-generator": { @@ -751,9 +1354,9 @@ } }, "babel-loader": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.2.tgz", - "integrity": "sha512-jRwlFbINAeyDStqK6Dd5YuY0k5YuzQUvlz2ZamuXrXmxav3pNqe9vfJ402+2G+OmlJSXxCOpB6Uz0INM7RQe2A==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.4.tgz", + "integrity": "sha512-/hbyEvPzBJuGpk9o80R0ZyTej6heEOr59GoEUtn8qFKbnx4cJm9FWES6J/iv644sYgrtVw9JJQkjaLW/bqb5gw==", "dev": true, "requires": { "find-cache-dir": "1.0.0", @@ -833,6 +1436,12 @@ "integrity": "sha1-cKFITw+QiaToStRLrDU8lbmxJyE=", "dev": true }, + "babel-plugin-syntax-flow": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", + "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=", + "dev": true + }, "babel-plugin-syntax-function-bind": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.13.0.tgz", @@ -947,7 +1556,7 @@ "babel-template": "6.26.0", "babel-traverse": "6.26.0", "babel-types": "6.26.0", - "lodash": "4.17.4" + "lodash": "4.17.10" } }, "babel-plugin-transform-es2015-classes": { @@ -1031,15 +1640,15 @@ "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", "dev": true, "requires": { - "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.2", "babel-runtime": "6.26.0", "babel-template": "6.26.0" } }, "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", - "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", "dev": true, "requires": { "babel-plugin-transform-strict-mode": "6.24.1", @@ -1174,6 +1783,16 @@ "babel-runtime": "6.26.0" } }, + "babel-plugin-transform-flow-strip-types": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", + "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", + "dev": true, + "requires": { + "babel-plugin-syntax-flow": "6.18.0", + "babel-runtime": "6.26.0" + } + }, "babel-plugin-transform-function-bind": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-function-bind/-/babel-plugin-transform-function-bind-6.22.0.tgz", @@ -1223,9 +1842,9 @@ } }, "babel-preset-env": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.6.1.tgz", - "integrity": "sha512-W6VIyA6Ch9ePMI7VptNn2wBM6dbG0eSz25HEiL40nQXCsXGTGZSTZu1Iap+cj3Q0S5a7T9+529l/5Bkvd+afNA==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz", + "integrity": "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==", "dev": true, "requires": { "babel-plugin-check-es2015-constants": "6.22.0", @@ -1242,7 +1861,7 @@ "babel-plugin-transform-es2015-function-name": "6.24.1", "babel-plugin-transform-es2015-literals": "6.22.0", "babel-plugin-transform-es2015-modules-amd": "6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.2", "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", "babel-plugin-transform-es2015-modules-umd": "6.24.1", "babel-plugin-transform-es2015-object-super": "6.24.1", @@ -1255,8 +1874,8 @@ "babel-plugin-transform-es2015-unicode-regex": "6.24.1", "babel-plugin-transform-exponentiation-operator": "6.24.1", "babel-plugin-transform-regenerator": "6.26.0", - "browserslist": "2.11.3", - "invariant": "2.2.2", + "browserslist": "3.2.8", + "invariant": "2.2.4", "semver": "5.5.0" } }, @@ -1278,7 +1897,7 @@ "babel-plugin-transform-es2015-function-name": "6.24.1", "babel-plugin-transform-es2015-literals": "6.22.0", "babel-plugin-transform-es2015-modules-amd": "6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.2", "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", "babel-plugin-transform-es2015-modules-umd": "6.24.1", "babel-plugin-transform-es2015-object-super": "6.24.1", @@ -1355,11 +1974,11 @@ "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", "dev": true, "requires": { - "babel-core": "6.26.0", + "babel-core": "6.26.3", "babel-runtime": "6.26.0", - "core-js": "2.5.3", + "core-js": "2.5.6", "home-or-tmp": "2.0.0", - "lodash": "4.17.4", + "lodash": "4.17.10", "mkdirp": "0.5.1", "source-map-support": "0.4.18" } @@ -1370,7 +1989,7 @@ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { - "core-js": "2.5.3", + "core-js": "2.5.6", "regenerator-runtime": "0.11.1" } }, @@ -1384,7 +2003,7 @@ "babel-traverse": "6.26.0", "babel-types": "6.26.0", "babylon": "6.18.0", - "lodash": "4.17.4" + "lodash": "4.17.10" } }, "babel-traverse": { @@ -1400,8 +2019,8 @@ "babylon": "6.18.0", "debug": "2.6.9", "globals": "9.18.0", - "invariant": "2.2.2", - "lodash": "4.17.4" + "invariant": "2.2.4", + "lodash": "4.17.10" } }, "babel-types": { @@ -1412,7 +2031,7 @@ "requires": { "babel-runtime": "6.26.0", "esutils": "2.0.2", - "lodash": "4.17.4", + "lodash": "4.17.10", "to-fast-properties": "1.0.3" } }, @@ -1439,22 +2058,66 @@ "component-emitter": "1.2.1", "define-property": "1.0.0", "isobject": "3.0.1", - "mixin-deep": "1.3.0", + "mixin-deep": "1.3.1", "pascalcase": "0.1.1" }, "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true } } }, "base64-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", - "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", "dev": true }, "batch": { @@ -1463,16 +2126,6 @@ "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", "dev": true }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", - "dev": true, - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, "big.js": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", @@ -1485,15 +2138,11 @@ "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", "dev": true }, - "block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", - "dev": true, - "optional": true, - "requires": { - "inherits": "2.0.3" - } + "binaryextensions": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.1.1.tgz", + "integrity": "sha512-XBaoWE9RW8pPdPQNibZsW2zh8TW6gcarXp1FZPwT8Uop8ScSNldJEWf2k9l3HeTqdrEwsOsFcq74RiJECW34yA==", + "dev": true }, "bluebird": { "version": "3.5.1", @@ -1517,12 +2166,12 @@ "content-type": "1.0.4", "debug": "2.6.9", "depd": "1.1.2", - "http-errors": "1.6.2", + "http-errors": "1.6.3", "iconv-lite": "0.4.19", "on-finished": "2.3.0", "qs": "6.5.1", "raw-body": "2.3.2", - "type-is": "1.6.15" + "type-is": "1.6.16" }, "dependencies": { "bytes": { @@ -1537,6 +2186,12 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", "dev": true }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true + }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -1562,7 +2217,33 @@ "http-errors": "1.6.2", "iconv-lite": "0.4.19", "unpipe": "1.0.0" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "dev": true + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "dev": true, + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.4.0" + } + } } + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "dev": true } } }, @@ -1576,23 +2257,14 @@ "deep-equal": "1.0.1", "dns-equal": "1.0.0", "dns-txt": "2.0.2", - "multicast-dns": "6.2.2", + "multicast-dns": "6.2.3", "multicast-dns-service-types": "1.1.0" } }, - "boom": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", - "dev": true, - "requires": { - "hoek": "2.16.3" - } - }, "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { "balanced-match": "1.0.0", @@ -1617,34 +2289,34 @@ "dev": true }, "browserify-aes": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz", - "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "dev": true, "requires": { "buffer-xor": "1.0.3", "cipher-base": "1.0.4", - "create-hash": "1.1.3", + "create-hash": "1.2.0", "evp_bytestokey": "1.0.3", "inherits": "2.0.3", - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, "browserify-cipher": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", - "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", "dev": true, "requires": { - "browserify-aes": "1.1.1", - "browserify-des": "1.0.0", + "browserify-aes": "1.2.0", + "browserify-des": "1.0.1", "evp_bytestokey": "1.0.3" } }, "browserify-des": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", - "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.1.tgz", + "integrity": "sha512-zy0Cobe3hhgpiOM32Tj7KQ3Vl91m0njwsjzZQK1L+JDf11dzP9qIvjreVinsvXrgfjhStXwUWAEpB9D7Gwmayw==", "dev": true, "requires": { "cipher-base": "1.0.4", @@ -1670,11 +2342,11 @@ "requires": { "bn.js": "4.11.8", "browserify-rsa": "4.0.1", - "create-hash": "1.1.3", - "create-hmac": "1.1.6", + "create-hash": "1.2.0", + "create-hmac": "1.1.7", "elliptic": "6.4.0", "inherits": "2.0.3", - "parse-asn1": "5.1.0" + "parse-asn1": "5.1.1" } }, "browserify-zlib": { @@ -1687,13 +2359,13 @@ } }, "browserslist": { - "version": "2.11.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz", - "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==", + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", + "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", "dev": true, "requires": { - "caniuse-lite": "1.0.30000792", - "electron-to-chromium": "1.3.31" + "caniuse-lite": "1.0.30000846", + "electron-to-chromium": "1.3.48" } }, "buffer": { @@ -1702,11 +2374,17 @@ "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "dev": true, "requires": { - "base64-js": "1.2.1", - "ieee754": "1.1.8", + "base64-js": "1.3.0", + "ieee754": "1.1.11", "isarray": "1.0.0" } }, + "buffer-from": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", + "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", + "dev": true + }, "buffer-indexof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", @@ -1737,6 +2415,27 @@ "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=", "dev": true }, + "cacache": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", + "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", + "dev": true, + "requires": { + "bluebird": "3.5.1", + "chownr": "1.0.1", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "lru-cache": "4.1.3", + "mississippi": "2.0.0", + "mkdirp": "0.5.1", + "move-concurrently": "1.0.1", + "promise-inflight": "1.0.1", + "rimraf": "2.6.2", + "ssri": "5.3.0", + "unique-filename": "1.1.0", + "y18n": "4.0.0" + } + }, "cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", @@ -1762,6 +2461,72 @@ } } }, + "cacheable-request": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", + "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", + "dev": true, + "requires": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" + }, + "dependencies": { + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "dev": true + }, + "normalize-url": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", + "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "dev": true, + "requires": { + "prepend-http": "2.0.0", + "query-string": "5.1.1", + "sort-keys": "2.0.0" + } + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true + }, + "query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "dev": true, + "requires": { + "decode-uri-component": "0.2.0", + "object-assign": "4.1.1", + "strict-uri-encode": "1.1.0" + } + }, + "sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "dev": true, + "requires": { + "is-plain-obj": "1.1.0" + } + } + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", + "dev": true + }, "caller-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", @@ -1777,20 +2542,10 @@ "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", "dev": true }, - "camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", - "dev": true, - "requires": { - "no-case": "2.3.2", - "upper-case": "1.1.3" - } - }, "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", "dev": true }, "camelcase-keys": { @@ -1801,14 +2556,6 @@ "requires": { "camelcase": "2.1.1", "map-obj": "1.0.1" - }, - "dependencies": { - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true - } } }, "caniuse-api": { @@ -1818,7 +2565,7 @@ "dev": true, "requires": { "browserslist": "1.7.7", - "caniuse-db": "1.0.30000795", + "caniuse-db": "1.0.30000846", "lodash.memoize": "4.1.2", "lodash.uniq": "4.5.0" }, @@ -1829,41 +2576,24 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000795", - "electron-to-chromium": "1.3.31" + "caniuse-db": "1.0.30000846", + "electron-to-chromium": "1.3.48" } } } }, "caniuse-db": { - "version": "1.0.30000795", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000795.tgz", - "integrity": "sha1-ZE8D+rAN2L0Wk+Xh5w2Gsxxc/s4=", + "version": "1.0.30000846", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000846.tgz", + "integrity": "sha1-2chvkUc4202gmO7e2ZdBPERWG9I=", "dev": true }, "caniuse-lite": { - "version": "1.0.30000792", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000792.tgz", - "integrity": "sha1-0M6pgfgRjzlhRxr7tDyaHlu/AzI=", + "version": "1.0.30000846", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000846.tgz", + "integrity": "sha512-qxUOHr5mTaadWH1ap0ueivHd8x42Bnemcn+JutVr7GWmm2bU4zoBhjuv5QdXgALQnnT626lOQros7cCDf8PwCg==", "dev": true }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true, - "optional": true - }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "dev": true, - "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" - } - }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", @@ -1877,16 +2607,6 @@ "supports-color": "2.0.0" } }, - "character-parser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", - "integrity": "sha1-x84o821LzZdE5f/CxfzeHHMmH8A=", - "dev": true, - "optional": true, - "requires": { - "is-regex": "1.0.4" - } - }, "chardet": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", @@ -1894,117 +2614,113 @@ "dev": true }, "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.3.tgz", + "integrity": "sha512-zW8iXYZtXMx4kux/nuZVXjkLP+CyIK5Al5FHnj1OgTKGZfp4Oy6/ymtMSKFv3GD8DviEmUPmJg9eFdJ/JzudMg==", "dev": true, "requires": { - "anymatch": "1.3.2", + "anymatch": "2.0.0", "async-each": "1.0.1", - "fsevents": "1.1.3", - "glob-parent": "2.0.0", + "braces": "2.3.2", + "fsevents": "1.2.4", + "glob-parent": "3.1.0", "inherits": "2.0.3", "is-binary-path": "1.0.1", - "is-glob": "2.0.1", + "is-glob": "4.0.0", + "normalize-path": "2.1.1", "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" - } - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" - } - }, - "circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", - "dev": true - }, - "clap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", - "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", - "dev": true, - "requires": { - "chalk": "1.1.3" - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "3.1.0", - "define-property": "0.2.5", - "isobject": "3.0.1", - "static-extend": "0.1.2" + "readdirp": "2.1.0", + "upath": "1.1.0" }, "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.2", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" } }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "kind-of": "3.2.2" + "is-extendable": "0.1.1" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" }, "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-extglob": "2.1.1" } } } }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", "dev": true, "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } + "is-extglob": "2.1.1" } }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "kind-of": "3.2.2" } }, "isobject": { @@ -2012,19 +2728,79 @@ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true + } + } + }, + "chownr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", + "dev": true + }, + "chrome-trace-event": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-0.1.3.tgz", + "integrity": "sha512-sjndyZHrrWiu4RY7AkHgjn80GfAM2ZSzUkZLV/Js59Ldmh6JDThf0SUmOHU53rFu2rVxxfCzJ30Ukcfch3Gb/A==", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.2" + } + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true + }, + "clap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", + "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", + "dev": true, + "requires": { + "chalk": "1.1.3" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, "clean-css": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.9.tgz", - "integrity": "sha1-Nc7ornaHpJuYA09w3gDE7dOCYwE=", + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.11.tgz", + "integrity": "sha1-Ls3xRaujj1R0DybO/Q/z4D4SXWo=", "dev": true, "requires": { "source-map": "0.5.7" @@ -2039,21 +2815,37 @@ "restore-cursor": "2.0.0" } }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "cli-spinners": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz", + "integrity": "sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=", "dev": true }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "cli-table": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", + "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=", "dev": true, "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" + "colors": "1.0.3" + }, + "dependencies": { + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "dev": true + } + } + }, + "cli-truncate": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", + "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", + "dev": true, + "requires": { + "slice-ansi": "0.0.4", + "string-width": "1.0.2" }, "dependencies": { "is-fullwidth-code-point": { @@ -2065,6 +2857,12 @@ "number-is-nan": "1.0.1" } }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", @@ -2078,12 +2876,78 @@ } } }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, "clone": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz", - "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", + "dev": true + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dev": true, + "requires": { + "mimic-response": "1.0.0" + } + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", "dev": true }, + "cloneable-readable": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.2.tgz", + "integrity": "sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "process-nextick-args": "2.0.0", + "readable-stream": "2.3.6" + } + }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -2105,20 +2969,6 @@ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, - "coffee-script": { - "version": "1.12.7", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.12.7.tgz", - "integrity": "sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw==", - "dev": true, - "optional": true - }, - "coffeescript-compiler": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/coffeescript-compiler/-/coffeescript-compiler-0.1.1.tgz", - "integrity": "sha1-gai9RKeL2kIffgtR8o0TyFO+uAU=", - "dev": true, - "optional": true - }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -2135,7 +2985,7 @@ "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", "dev": true, "requires": { - "clone": "1.0.3", + "clone": "1.0.4", "color-convert": "1.9.1", "color-string": "0.3.0" } @@ -2181,19 +3031,10 @@ "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", "dev": true }, - "combined-stream": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", - "dev": true, - "requires": { - "delayed-stream": "1.0.0" - } - }, "commander": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", - "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", "dev": true }, "commondir": { @@ -2209,23 +3050,23 @@ "dev": true }, "compressible": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.12.tgz", - "integrity": "sha1-xZpcmdt2dn6YdlAOJx72OzSTvWY=", + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.13.tgz", + "integrity": "sha1-DRAgq5JLL9tNYnmHXH1tq6a6p6k=", "dev": true, "requires": { - "mime-db": "1.30.0" + "mime-db": "1.33.0" } }, "compression": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.1.tgz", - "integrity": "sha1-7/JgPvwuIs+G810uuTWJ+YdTc9s=", + "version": "1.7.2", + "resolved": "http://registry.npmjs.org/compression/-/compression-1.7.2.tgz", + "integrity": "sha1-qv+81qr4VLROuygDU9WtFlH1mmk=", "dev": true, "requires": { - "accepts": "1.3.4", + "accepts": "1.3.5", "bytes": "3.0.0", - "compressible": "2.0.12", + "compressible": "2.0.13", "debug": "2.6.9", "on-headers": "1.0.1", "safe-buffer": "5.1.1", @@ -2237,6 +3078,12 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", "dev": true + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true } } }, @@ -2247,13 +3094,14 @@ "dev": true }, "concat-stream": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", - "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "dev": true, "requires": { + "buffer-from": "1.0.0", "inherits": "2.0.3", - "readable-stream": "2.3.3", + "readable-stream": "2.3.6", "typedarray": "0.0.6" } }, @@ -2272,39 +3120,15 @@ "date-now": "0.1.4" } }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true - }, "consolidate": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.14.5.tgz", - "integrity": "sha1-WiUEe8dvcwcmZ8jLUsmJiI9JTGM=", + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", + "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", "dev": true, "requires": { "bluebird": "3.5.1" } }, - "constantinople": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.1.0.tgz", - "integrity": "sha1-dWnKqKo/jVk11i4fqW+fcCzYHHk=", - "dev": true, - "requires": { - "acorn": "3.3.0", - "is-expression": "2.1.0" - }, - "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true - } - } - }, "constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", @@ -2347,6 +3171,20 @@ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", "dev": true }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "1.2.0", + "fs-write-stream-atomic": "1.0.10", + "iferr": "0.1.5", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + } + }, "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", @@ -2354,9 +3192,9 @@ "dev": true }, "core-js": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", - "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.6.tgz", + "integrity": "sha512-lQUVfQi0aLix2xpyjrrJEvfuYCqPc/HwmTKsC/VNf8q0zsjX7SQZtp4+oRONN5Tsur9GDETPjj+Ub2iDiGZfSQ==", "dev": true }, "core-util-is": { @@ -2365,33 +3203,10 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, - "cosmiconfig": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz", - "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==", - "dev": true, - "requires": { - "is-directory": "0.3.1", - "js-yaml": "3.7.0", - "minimist": "1.2.0", - "object-assign": "4.1.1", - "os-homedir": "1.0.2", - "parse-json": "2.2.0", - "require-from-string": "1.2.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, "create-ecdh": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", - "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", "dev": true, "requires": { "bn.js": "4.11.8", @@ -2399,77 +3214,70 @@ } }, "create-hash": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", - "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "dev": true, "requires": { "cipher-base": "1.0.4", "inherits": "2.0.3", - "ripemd160": "2.0.1", - "sha.js": "2.4.10" + "md5.js": "1.3.4", + "ripemd160": "2.0.2", + "sha.js": "2.4.11" } }, "create-hmac": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", - "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "dev": true, "requires": { "cipher-base": "1.0.4", - "create-hash": "1.1.3", + "create-hash": "1.2.0", "inherits": "2.0.3", - "ripemd160": "2.0.1", - "safe-buffer": "5.1.1", - "sha.js": "2.4.10" + "ripemd160": "2.0.2", + "safe-buffer": "5.1.2", + "sha.js": "2.4.11" } }, "cross-env": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-1.0.8.tgz", - "integrity": "sha1-K950jvx4D1bd8H6mn8rYdTV3dM4=", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.1.6.tgz", + "integrity": "sha512-VWTDq+G4v383SzgRS7jsAVWqEWF0aKZpDz1GVjhONvPRgHB1LnxP2sXUVFKbykHkPSnfRKS8YdiDevWFwZmQ9g==", "dev": true, "requires": { - "cross-spawn": "3.0.1", - "lodash.assign": "3.2.0" + "cross-spawn": "5.1.0", + "is-windows": "1.0.2" } }, "cross-spawn": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", - "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { - "lru-cache": "4.1.1", + "lru-cache": "4.1.3", + "shebang-command": "1.2.0", "which": "1.3.0" } }, - "cryptiles": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", - "dev": true, - "requires": { - "boom": "2.10.1" - } - }, "crypto-browserify": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "dev": true, "requires": { - "browserify-cipher": "1.0.0", + "browserify-cipher": "1.0.1", "browserify-sign": "4.0.4", - "create-ecdh": "4.0.0", - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "diffie-hellman": "5.0.2", + "create-ecdh": "4.0.3", + "create-hash": "1.2.0", + "create-hmac": "1.1.7", + "diffie-hellman": "5.0.3", "inherits": "2.0.3", - "pbkdf2": "3.0.14", - "public-encrypt": "4.0.0", + "pbkdf2": "3.0.16", + "public-encrypt": "4.0.2", "randombytes": "2.0.6", - "randomfill": "1.0.3" + "randomfill": "1.0.4" } }, "css-color-names": { @@ -2479,9 +3287,9 @@ "dev": true }, "css-loader": { - "version": "0.28.9", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.9.tgz", - "integrity": "sha512-r3dgelMm/mkPz5Y7m9SeiGE46i2VsEU/OYbez+1llfxtv8b2y5/b5StaeEvPK3S5tlNQI+tDW/xDIhKJoZgDtw==", + "version": "0.28.11", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.11.tgz", + "integrity": "sha512-wovHgjAx8ZIMGSL8pTys7edA1ClmzxHeY6n/d97gg5odgsxEgKjULPR0viqyC+FWMCL9sfqoC/QCUBo62tLvPg==", "dev": true, "requires": { "babel-code-frame": "6.26.0", @@ -2498,20 +3306,6 @@ "postcss-modules-values": "1.3.0", "postcss-value-parser": "3.3.0", "source-list-map": "2.0.0" - } - }, - "css-modules-loader-core": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz", - "integrity": "sha1-WQhmgpShvs0mGuCkziGwtVHyHRY=", - "dev": true, - "requires": { - "icss-replace-symbols": "1.1.0", - "postcss": "6.0.1", - "postcss-modules-extract-imports": "1.1.0", - "postcss-modules-local-by-default": "1.2.0", - "postcss-modules-scope": "1.1.0", - "postcss-modules-values": "1.3.0" }, "dependencies": { "has-flag": { @@ -2521,25 +3315,17 @@ "dev": true }, "postcss": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.1.tgz", - "integrity": "sha1-AA29H47vIXqjaLmiEsX8QLKo8/I=", + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { "chalk": "1.1.3", + "js-base64": "2.4.5", "source-map": "0.5.7", "supports-color": "3.2.3" } }, - "postcss-modules-extract-imports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", - "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", - "dev": true, - "requires": { - "postcss": "6.0.1" - } - }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -2551,13 +3337,6 @@ } } }, - "css-parse": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz", - "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=", - "dev": true, - "optional": true - }, "css-selector-tokenizer": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", @@ -2575,7 +3354,7 @@ "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", "dev": true, "requires": { - "regenerate": "1.3.3", + "regenerate": "1.4.0", "regjsgen": "0.2.0", "regjsparser": "0.1.5" } @@ -2608,7 +3387,7 @@ "postcss-discard-empty": "2.1.0", "postcss-discard-overridden": "0.1.1", "postcss-discard-unused": "2.2.3", - "postcss-filter-plugins": "2.0.2", + "postcss-filter-plugins": "2.0.3", "postcss-merge-idents": "2.1.7", "postcss-merge-longhand": "2.0.2", "postcss-merge-rules": "2.1.2", @@ -2626,6 +3405,35 @@ "postcss-unique-selectors": "2.0.2", "postcss-value-parser": "3.3.0", "postcss-zindex": "2.2.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.5", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } } }, "csso": { @@ -2647,31 +3455,32 @@ "array-find-index": "1.0.2" } }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "dev": true + }, "d": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", "dev": true, "requires": { - "es5-ext": "0.10.38" + "es5-ext": "0.10.42" } }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } - } + "dargs": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-5.1.0.tgz", + "integrity": "sha1-7H6lDHhWTNNsnV7Bj2Yyn63ieCk=", + "dev": true + }, + "date-fns": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.29.0.tgz", + "integrity": "sha512-lbTXWZ6M20cWH8N9S6afb0SBm6tMk+uUg6z3MqHPKE9atmsY3kJkTm8vKe93izJ2B2+q5MV990sM2CHgtAZaOw==", + "dev": true }, "date-now": { "version": "0.1.4", @@ -2679,6 +3488,12 @@ "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", "dev": true }, + "dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "dev": true + }, "de-indent": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", @@ -2706,12 +3521,27 @@ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "requires": { + "mimic-response": "1.0.0" + } + }, "deep-equal": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", "dev": true }, + "deep-extend": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", + "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", + "dev": true + }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", @@ -2729,12 +3559,56 @@ } }, "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "1.0.2", + "isobject": "3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } } }, "defined": { @@ -2751,7 +3625,7 @@ "requires": { "globby": "5.0.0", "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.0", + "is-path-in-cwd": "1.0.1", "object-assign": "4.1.1", "pify": "2.3.0", "pinkie-promise": "2.0.1", @@ -2766,18 +3640,6 @@ } } }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true - }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -2791,7 +3653,7 @@ "dev": true, "requires": { "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" + "minimalistic-assert": "1.0.1" } }, "destroy": { @@ -2800,6 +3662,12 @@ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", "dev": true }, + "detect-conflict": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/detect-conflict/-/detect-conflict-1.0.1.tgz", + "integrity": "sha1-CIZXpmqWHAUBnbfEIwiDsca0F24=", + "dev": true + }, "detect-indent": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", @@ -2815,10 +3683,16 @@ "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=", "dev": true }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, "diffie-hellman": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", - "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "dev": true, "requires": { "bn.js": "4.11.8", @@ -2826,6 +3700,27 @@ "randombytes": "2.0.6" } }, + "dir-glob": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", + "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", + "dev": true, + "requires": { + "arrify": "1.0.1", + "path-type": "3.0.0" + }, + "dependencies": { + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "3.0.0" + } + } + } + }, "dns-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", @@ -2839,7 +3734,7 @@ "dev": true, "requires": { "ip": "1.1.5", - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, "dns-txt": { @@ -2860,13 +3755,6 @@ "esutils": "2.0.2" } }, - "doctypes": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", - "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=", - "dev": true, - "optional": true - }, "dom-serializer": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", @@ -2898,44 +3786,79 @@ "dev": true }, "domhandler": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz", - "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", "dev": true, "requires": { "domelementtype": "1.3.0" } }, "domutils": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.6.2.tgz", - "integrity": "sha1-GVjMC0yUJuntNn+xyOhUiRsPo/8=", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", "dev": true, "requires": { "dom-serializer": "0.1.0", "domelementtype": "1.3.0" } }, - "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "dev": true, + "requires": { + "is-obj": "1.0.1" + } + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "duplexify": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", + "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", "dev": true, - "optional": true, "requires": { - "jsbn": "0.1.1" + "end-of-stream": "1.4.1", + "inherits": "2.0.3", + "readable-stream": "2.3.6", + "stream-shift": "1.0.0" } }, + "editions": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/editions/-/editions-1.3.4.tgz", + "integrity": "sha512-gzao+mxnYDzIysXKMQi/+M1mjy/rjestjg6OPoYTtI+3Izp23oiGZitsl9lPDPiTGXbcSIk1iJWhliSaglxnUg==", + "dev": true + }, "ee-first": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.0.tgz", "integrity": "sha1-ag18YiHkkP7v2S7D9EHJzozQl/Q=", "dev": true }, + "ejs": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.1.tgz", + "integrity": "sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==", + "dev": true + }, "electron-to-chromium": { - "version": "1.3.31", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.31.tgz", - "integrity": "sha512-XE4CLbswkZgZFn34cKFy1xaX+F5LHxeDLjY1+rsK9asDzknhbrd9g/n/01/acbU25KTsUSiLKwvlLyA+6XLUOA==", + "version": "1.3.48", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.48.tgz", + "integrity": "sha1-07DYWTgUBE4JLs4hCPw6ya6kuQA=", + "dev": true + }, + "elegant-spinner": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", + "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=", "dev": true }, "elliptic": { @@ -2949,7 +3872,7 @@ "hash.js": "1.1.3", "hmac-drbg": "1.0.1", "inherits": "2.0.3", - "minimalistic-assert": "1.0.0", + "minimalistic-assert": "1.0.1", "minimalistic-crypto-utils": "1.0.1" } }, @@ -2965,16 +3888,24 @@ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", "dev": true }, + "end-of-stream": { + "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" + } + }, "enhanced-resolve": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", - "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.0.0.tgz", + "integrity": "sha512-jox/62b2GofV1qTUQTMPEJSDIGycS43evqYzD/KVtEb9OCoki9cnacUPxCrZa7JfPzZSYOCZhu9O9luaMxAX8g==", "dev": true, "requires": { "graceful-fs": "4.1.11", "memory-fs": "0.4.1", - "object-assign": "4.1.1", - "tapable": "0.2.8" + "tapable": "1.0.0" } }, "entities": { @@ -2983,15 +3914,31 @@ "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", "dev": true }, + "envinfo": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-5.8.1.tgz", + "integrity": "sha512-6DUjb7ozlC09FNADu5WZfLr4NLsk44loPi8mDp+NjyVtCmcLDS4eYNFsU3gSYjsg1Gxp29ZXD06nsO5J0cUhFg==", + "dev": true + }, "errno": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.6.tgz", - "integrity": "sha512-IsORQDpaaSwcDP4ZZnHxgE85werpo34VYn1Ud3mq+eUsF593faR8oCZNXrROVkpFu2TsbrNhHin0aUrTsQ9vNw==", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", "dev": true, "requires": { "prr": "1.0.1" } }, + "error": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/error/-/error-7.0.2.tgz", + "integrity": "sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI=", + "dev": true, + "requires": { + "string-template": "0.2.1", + "xtend": "4.0.1" + } + }, "error-ex": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", @@ -3002,9 +3949,9 @@ } }, "es-abstract": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.10.0.tgz", - "integrity": "sha512-/uh/DhdqIOSkAWifU+8nG78vlQxdLckUdI/sPgy0VhuXi2qJ7T8czBmqIYtLQVpCIFYafChnsRsB5pyb1JdmCQ==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.11.0.tgz", + "integrity": "sha512-ZnQrE/lXTTQ39ulXZ+J1DTFazV9qBy61x2bY071B+qGco8Z8q1QddsLdt/EF8Ai9hcWH72dWS0kFqXLxOxqslA==", "dev": true, "requires": { "es-to-primitive": "1.1.1", @@ -3026,13 +3973,14 @@ } }, "es5-ext": { - "version": "0.10.38", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.38.tgz", - "integrity": "sha512-jCMyePo7AXbUESwbl8Qi01VSH2piY9s/a3rSU/5w/MlTIx8HPL1xn2InGN8ejt/xulcJgnTO7vqNtOAxzYd2Kg==", + "version": "0.10.42", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.42.tgz", + "integrity": "sha512-AJxO1rmPe1bDEfSR6TJ/FgMFYuTBhR5R57KW58iCkYACMyFbrkqVyzXSurYoScDGvgyMpk7uRF/lPUPPTmsRSA==", "dev": true, "requires": { "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1" + "es6-symbol": "3.1.1", + "next-tick": "1.0.0" } }, "es6-iterator": { @@ -3042,37 +3990,10 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.38", + "es5-ext": "0.10.42", "es6-symbol": "3.1.1" } }, - "es6-map": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", - "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.38", - "es6-iterator": "2.0.3", - "es6-set": "0.1.5", - "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" - } - }, - "es6-set": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", - "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.38", - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" - } - }, "es6-symbol": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", @@ -3080,19 +4001,7 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.38" - } - }, - "es6-weak-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", - "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.38", - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1" + "es5-ext": "0.10.42" } }, "escape-html": { @@ -3107,48 +4016,36 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, - "escope": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", - "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", - "dev": true, - "requires": { - "es6-map": "0.1.5", - "es6-weak-map": "2.0.2", - "esrecurse": "4.2.0", - "estraverse": "4.2.0" - } - }, "eslint": { - "version": "4.16.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.16.0.tgz", - "integrity": "sha512-YVXV4bDhNoHHcv0qzU4Meof7/P26B4EuaktMi5L1Tnt52Aov85KmYA8c5D+xyZr/BkhvwUqr011jDSD/QTULxg==", + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", + "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", "dev": true, "requires": { "ajv": "5.5.2", "babel-code-frame": "6.26.0", - "chalk": "2.3.0", - "concat-stream": "1.6.0", + "chalk": "2.4.1", + "concat-stream": "1.6.2", "cross-spawn": "5.1.0", "debug": "3.1.0", "doctrine": "2.1.0", "eslint-scope": "3.7.1", "eslint-visitor-keys": "1.0.0", - "espree": "3.5.2", - "esquery": "1.0.0", + "espree": "3.5.4", + "esquery": "1.0.1", "esutils": "2.0.2", "file-entry-cache": "2.0.0", "functional-red-black-tree": "1.0.1", "glob": "7.1.2", - "globals": "11.2.0", - "ignore": "3.3.7", + "globals": "11.5.0", + "ignore": "3.3.8", "imurmurhash": "0.1.4", "inquirer": "3.3.0", "is-resolvable": "1.1.0", - "js-yaml": "3.10.0", + "js-yaml": "3.11.0", "json-stable-stringify-without-jsonify": "1.0.1", "levn": "0.3.0", - "lodash": "4.17.4", + "lodash": "4.17.10", "minimatch": "3.0.4", "mkdirp": "0.5.1", "natural-compare": "1.4.0", @@ -3156,6 +4053,7 @@ "path-is-inside": "1.0.2", "pluralize": "7.0.0", "progress": "2.0.0", + "regexpp": "1.1.0", "require-uncached": "1.0.3", "semver": "5.5.0", "strip-ansi": "4.0.0", @@ -3171,34 +4069,23 @@ "dev": true }, "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "1.9.1" } }, "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { - "ansi-styles": "3.2.0", + "ansi-styles": "3.2.1", "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" - } - }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "4.1.1", - "shebang-command": "1.2.0", - "which": "1.3.0" + "supports-color": "5.4.0" } }, "debug": { @@ -3217,18 +4104,18 @@ "dev": true }, "globals": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.2.0.tgz", - "integrity": "sha512-RDC7Tj17I/56wpVvCVLSXtnn2Fo6CQZ9vaj+ARn+qlzm/ozbKQZe+j9fvHZCbSq+4JSGjTpKEt7p/AA1IKXRFA==", + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.5.0.tgz", + "integrity": "sha512-hYyf+kI8dm3nORsiiXUQigOU62hDLfJ9G01uyGMxhc6BKsircrUhC4uJPQPUSuq2GrTmiiEt7ewxlMdBewfmKQ==", "dev": true }, "js-yaml": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", - "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", + "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", "dev": true, "requires": { - "argparse": "1.0.9", + "argparse": "1.0.10", "esprima": "4.0.0" } }, @@ -3242,20 +4129,20 @@ } }, "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { - "has-flag": "2.0.0" + "has-flag": "3.0.0" } } } }, "eslint-config-standard": { - "version": "11.0.0-beta.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-11.0.0-beta.0.tgz", - "integrity": "sha512-f+vs5HAHQo7NRZ3hVe+UVdT5DbebMNaFTWFp95orJ0LUdYPoWdM8xw/bMeO/IZMvHOPmIteGKGc2QOhSXd5nRg==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-11.0.0.tgz", + "integrity": "sha512-oDdENzpViEe5fwuRCWla7AXQd++/oyIp8zP+iP9jiUPG6NBj3SHgdgtl/kTn00AjeN+1HNvavTKmYbMo+xMOlw==", "dev": true }, "eslint-import-resolver-node": { @@ -3265,26 +4152,26 @@ "dev": true, "requires": { "debug": "2.6.9", - "resolve": "1.5.0" + "resolve": "1.7.1" } }, "eslint-loader": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-1.9.0.tgz", - "integrity": "sha512-40aN976qSNPyb9ejTqjEthZITpls1SVKtwguahmH1dzGCwQU/vySE+xX33VZmD8csU0ahVNCtFlsPgKqRBiqgg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-2.0.0.tgz", + "integrity": "sha512-VxxGDI4bXzLk0+/jMt/0EkGMRKS9ox6Czx+yapMb9WJmcS/ZHhlhqcVUNgUjFBNp02j/2pZLdGOrG7EXyjoz/g==", "dev": true, "requires": { "loader-fs-cache": "1.0.1", "loader-utils": "1.1.0", "object-assign": "4.1.1", - "object-hash": "1.2.0", + "object-hash": "1.3.0", "rimraf": "2.6.2" } }, "eslint-module-utils": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz", - "integrity": "sha512-jDI/X5l/6D1rRD/3T43q8Qgbls2nq5km5KSqiwlyUbGo5+04fXhMKdCPhjwbqAa6HXWaMxj8Q4hQDIh7IadJQw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz", + "integrity": "sha1-snA2LNiLGkitMIl2zn+lTphBF0Y=", "dev": true, "requires": { "debug": "2.6.9", @@ -3322,31 +4209,30 @@ } }, "eslint-plugin-html": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-3.2.2.tgz", - "integrity": "sha512-sSuafathF6ImPrzF2vUKEJY6Llq06d/riMTMzlsruDRDhNsQMYp2viUKo+jx+JRr1QevskeUpQcuptp2gN1XVQ==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-4.0.3.tgz", + "integrity": "sha512-ArFnlfQxwYSz/CP0zvk8Cy3MUhcDpT3o6jgO8eKD/b8ezcLVBrgkYzmMv+7S/ya+Yl9pN+Cz2tsgYp/zElkQzA==", "dev": true, "requires": { - "htmlparser2": "3.9.2", - "semver": "5.5.0" + "htmlparser2": "3.9.2" } }, "eslint-plugin-import": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.8.0.tgz", - "integrity": "sha512-Rf7dfKJxZ16QuTgVv1OYNxkZcsu/hULFnC+e+w0Gzi6jMC3guQoWQgxYxc54IDRinlb6/0v5z/PxxIKmVctN+g==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.12.0.tgz", + "integrity": "sha1-2tMXgSktZmSyUxf9BJ0uKy8CIF0=", "dev": true, "requires": { - "builtin-modules": "1.1.1", "contains-path": "0.1.0", "debug": "2.6.9", "doctrine": "1.5.0", "eslint-import-resolver-node": "0.3.2", - "eslint-module-utils": "2.1.1", + "eslint-module-utils": "2.2.0", "has": "1.0.1", - "lodash.cond": "4.5.2", + "lodash": "4.17.10", "minimatch": "3.0.4", - "read-pkg-up": "2.0.0" + "read-pkg-up": "2.0.0", + "resolve": "1.7.1" }, "dependencies": { "doctrine": { @@ -3362,45 +4248,36 @@ } }, "eslint-plugin-node": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-5.2.1.tgz", - "integrity": "sha512-xhPXrh0Vl/b7870uEbaumb2Q+LxaEcOQ3kS1jtIXanBAwpMre1l5q/l2l/hESYJGEFKuI78bp6Uw50hlpr7B+g==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-6.0.1.tgz", + "integrity": "sha512-Q/Cc2sW1OAISDS+Ji6lZS2KV4b7ueA/WydVWd1BECTQwVvfQy5JAi3glhINoKzoMnfnuRgNP+ZWKrGAbp3QDxw==", "dev": true, "requires": { - "ignore": "3.3.7", + "ignore": "3.3.8", "minimatch": "3.0.4", - "resolve": "1.5.0", - "semver": "5.3.0" - }, - "dependencies": { - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "dev": true - } + "resolve": "1.7.1", + "semver": "5.5.0" } }, "eslint-plugin-promise": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.6.0.tgz", - "integrity": "sha512-YQzM6TLTlApAr7Li8vWKR+K3WghjwKcYzY0d2roWap4SLK+kzuagJX/leTetIDWsFcTFnKNJXWupDCD6aZkP2Q==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.8.0.tgz", + "integrity": "sha512-JiFL9UFR15NKpHyGii1ZcvmtIqa3UTwiDAGb8atSffe43qJ3+1czVGN6UtkklpcJ2DVnqvTMzEKRaJdBkAL2aQ==", "dev": true }, "eslint-plugin-standard": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz", - "integrity": "sha1-NNDJFbRe3G8BA5PH7vOCOwhWXPI=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.1.0.tgz", + "integrity": "sha512-fVcdyuKRr0EZ4fjWl3c+gp1BANFJD1+RaWa2UPYfMZ6jCtp5RG00kSaXnK/dE5sYzt4kaWJ9qdxqUfc0d9kX0w==", "dev": true }, "eslint-plugin-vue": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-3.14.0.tgz", - "integrity": "sha1-jSRit9z4QKNTt+takuY5RYHV1pc=", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-4.5.0.tgz", + "integrity": "sha512-2CDidjAZ875tbJgtjKihIQRkqxgk3gVUDOAW2e9dP+Kf39jhCwKy6aMXIsHRKCPjRqQhDWF0jtVRNcywBFWTZA==", "dev": true, "requires": { - "requireindex": "1.1.0", - "vue-eslint-parser": "2.0.2" + "vue-eslint-parser": "2.0.3" } }, "eslint-scope": { @@ -3409,7 +4286,7 @@ "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", "dev": true, "requires": { - "esrecurse": "4.2.0", + "esrecurse": "4.2.1", "estraverse": "4.2.0" } }, @@ -3420,12 +4297,12 @@ "dev": true }, "espree": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.2.tgz", - "integrity": "sha512-sadKeYwaR/aJ3stC2CdvgXu1T16TdYN+qwCpcWbMnGJ8s0zNWemzrvb2GbD4OhmJ/fwpJjudThAlLobGbWZbCQ==", + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", + "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", "dev": true, "requires": { - "acorn": "5.3.0", + "acorn": "5.5.3", "acorn-jsx": "3.0.1" } }, @@ -3436,22 +4313,21 @@ "dev": true }, "esquery": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", - "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", "dev": true, "requires": { "estraverse": "4.2.0" } }, "esrecurse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", - "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", "dev": true, "requires": { - "estraverse": "4.2.0", - "object-assign": "4.1.1" + "estraverse": "4.2.0" } }, "estraverse": { @@ -3478,20 +4354,10 @@ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", "dev": true }, - "event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.38" - } - }, "eventemitter3": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", - "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", + "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==", "dev": true }, "events": { @@ -3506,7 +4372,7 @@ "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", "dev": true, "requires": { - "original": "1.0.0" + "original": "1.0.1" } }, "evp_bytestokey": { @@ -3516,7 +4382,7 @@ "dev": true, "requires": { "md5.js": "1.3.4", - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, "execa": { @@ -3532,21 +4398,14 @@ "p-finally": "1.0.0", "signal-exit": "3.0.2", "strip-eof": "1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "4.1.1", - "shebang-command": "1.2.0", - "which": "1.3.0" - } - } } }, + "exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", + "dev": true + }, "expand-brackets": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", @@ -3562,16 +4421,25 @@ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { - "fill-range": "2.2.3" + "fill-range": "2.2.4" + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "1.0.1" } }, "express": { - "version": "4.16.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz", - "integrity": "sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w=", + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz", + "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", "dev": true, "requires": { - "accepts": "1.3.4", + "accepts": "1.3.5", "array-flatten": "1.1.1", "body-parser": "1.18.2", "content-disposition": "0.5.2", @@ -3583,22 +4451,22 @@ "encodeurl": "1.0.2", "escape-html": "1.0.3", "etag": "1.8.1", - "finalhandler": "1.1.0", + "finalhandler": "1.1.1", "fresh": "0.5.2", "merge-descriptors": "1.0.1", "methods": "1.1.2", "on-finished": "2.3.0", "parseurl": "1.3.2", "path-to-regexp": "0.1.7", - "proxy-addr": "2.0.2", + "proxy-addr": "2.0.3", "qs": "6.5.1", "range-parser": "1.2.0", "safe-buffer": "5.1.1", - "send": "0.16.1", - "serve-static": "1.13.1", + "send": "0.16.2", + "serve-static": "1.13.2", "setprototypeof": "1.1.0", - "statuses": "1.3.1", - "type-is": "1.6.15", + "statuses": "1.4.0", + "type-is": "1.6.16", "utils-merge": "1.0.1", "vary": "1.1.2" }, @@ -3629,32 +4497,44 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", "dev": true + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true } } }, - "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", - "dev": true - }, "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } } }, "external-editor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", - "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", "dev": true, "requires": { "chardet": "0.4.2", - "iconv-lite": "0.4.19", + "iconv-lite": "0.4.23", "tmp": "0.0.33" } }, @@ -3667,18 +4547,338 @@ "is-extglob": "1.0.0" } }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true - }, "fast-deep-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", - "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", "dev": true }, + "fast-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.2.tgz", + "integrity": "sha512-TR6zxCKftDQnUAPvkrCWdBgDq/gbqx8A3ApnBrR5rMvpp6+KMJI0Igw7fkWPgeVK0uhRXTXdvO3O+YP0CaUX2g==", + "dev": true, + "requires": { + "@mrmlnc/readdir-enhanced": "2.2.1", + "@nodelib/fs.stat": "1.1.0", + "glob-parent": "3.1.0", + "is-glob": "4.0.0", + "merge2": "1.2.2", + "micromatch": "3.1.10" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.2", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.9", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + } + } + }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", @@ -3732,22 +4932,22 @@ "dev": true }, "fill-range": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", "dev": true, "requires": { "is-number": "2.1.0", "isobject": "2.1.0", - "randomatic": "1.1.7", + "randomatic": "3.0.0", "repeat-element": "1.1.2", "repeat-string": "1.6.1" } }, "finalhandler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", - "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", "dev": true, "requires": { "debug": "2.6.9", @@ -3755,7 +4955,7 @@ "escape-html": "1.0.3", "on-finished": "2.3.0", "parseurl": "1.3.2", - "statuses": "1.3.1", + "statuses": "1.4.0", "unpipe": "1.0.0" }, "dependencies": { @@ -3783,7 +4983,7 @@ "dev": true, "requires": { "commondir": "1.0.1", - "make-dir": "1.1.0", + "make-dir": "1.3.0", "pkg-dir": "2.0.0" } }, @@ -3796,6 +4996,15 @@ "locate-path": "2.0.0" } }, + "first-chunk-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz", + "integrity": "sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=", + "dev": true, + "requires": { + "readable-stream": "2.3.6" + } + }, "flat-cache": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", @@ -3814,8 +5023,44 @@ "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=", "dev": true }, - "for-in": { - "version": "1.0.2", + "flow-parser": { + "version": "0.73.0", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.73.0.tgz", + "integrity": "sha512-9JB+2hrKJ+S1OZ+upIwNTGlaLDRga2iC9KvpqWVFEVNlCxc51pkhNJRmA0PmUcLcEtFAW6IGBmVi70r+j+Qp9A==", + "dev": true + }, + "flush-write-stream": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", + "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.6" + } + }, + "follow-redirects": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.0.tgz", + "integrity": "sha512-fdrt472/9qQ6Kgjvb935ig6vJCuofpBUD14f9Vb+SLlm7xIe4Qva5gey8EKtv8lp7ahE1wilg3xL1znpVGtZIA==", + "dev": true, + "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==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "for-in": { + "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true @@ -3835,23 +5080,6 @@ "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", "dev": true }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "form-data": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", - "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", - "dev": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" - } - }, "forwarded": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", @@ -3873,6 +5101,28 @@ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", "dev": true }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.6" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "iferr": "0.1.5", + "imurmurhash": "0.1.4", + "readable-stream": "2.3.6" + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -3880,39 +5130,29 @@ "dev": true }, "fsevents": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", - "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", + "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", "dev": true, "optional": true, "requires": { - "nan": "2.8.0", - "node-pre-gyp": "0.6.39" + "nan": "2.10.0", + "node-pre-gyp": "0.10.0" }, "dependencies": { "abbrev": { - "version": "1.1.0", + "version": "1.1.1", "bundled": true, "dev": true, "optional": true }, - "ajv": { - "version": "4.11.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - }, "ansi-regex": { "version": "2.1.1", "bundled": true, "dev": true }, "aproba": { - "version": "1.1.1", + "version": "1.2.0", "bundled": true, "dev": true, "optional": true @@ -3924,91 +5164,25 @@ "optional": true, "requires": { "delegates": "1.0.0", - "readable-stream": "2.2.9" + "readable-stream": "2.3.6" } }, - "asn1": { - "version": "0.2.3", - "bundled": true, - "dev": true, - "optional": true - }, - "assert-plus": { - "version": "0.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "asynckit": { - "version": "0.4.0", - "bundled": true, - "dev": true, - "optional": true - }, - "aws-sign2": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "aws4": { - "version": "1.6.0", - "bundled": true, - "dev": true, - "optional": true - }, "balanced-match": { - "version": "0.4.2", + "version": "1.0.0", "bundled": true, "dev": true }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "block-stream": { - "version": "0.0.9", - "bundled": true, - "dev": true, - "requires": { - "inherits": "2.0.3" - } - }, - "boom": { - "version": "2.10.1", - "bundled": true, - "dev": true, - "requires": { - "hoek": "2.16.3" - } - }, "brace-expansion": { - "version": "1.1.7", + "version": "1.1.11", "bundled": true, "dev": true, "requires": { - "balanced-match": "0.4.2", + "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, - "buffer-shims": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "caseless": { - "version": "0.12.0", - "bundled": true, - "dev": true, - "optional": true - }, - "co": { - "version": "4.6.0", + "chownr": { + "version": "1.0.1", "bundled": true, "dev": true, "optional": true @@ -4018,14 +5192,6 @@ "bundled": true, "dev": true }, - "combined-stream": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "requires": { - "delayed-stream": "1.0.0" - } - }, "concat-map": { "version": "0.0.1", "bundled": true, @@ -4039,35 +5205,11 @@ "core-util-is": { "version": "1.0.2", "bundled": true, - "dev": true - }, - "cryptiles": { - "version": "2.0.5", - "bundled": true, - "dev": true, - "requires": { - "boom": "2.10.1" - } - }, - "dashdash": { - "version": "1.14.1", - "bundled": true, "dev": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } + "optional": true }, "debug": { - "version": "2.6.8", + "version": "2.6.9", "bundled": true, "dev": true, "optional": true, @@ -4076,16 +5218,11 @@ } }, "deep-extend": { - "version": "0.4.2", + "version": "0.5.1", "bundled": true, "dev": true, "optional": true }, - "delayed-stream": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, "delegates": { "version": "1.0.0", "bundled": true, @@ -4093,74 +5230,25 @@ "optional": true }, "detect-libc": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "ecc-jsbn": { - "version": "0.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "extend": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "extsprintf": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "forever-agent": { - "version": "0.6.1", + "version": "1.0.3", "bundled": true, "dev": true, "optional": true }, - "form-data": { - "version": "2.1.4", + "fs-minipass": { + "version": "1.2.5", "bundled": true, "dev": true, "optional": true, "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.15" + "minipass": "2.2.4" } }, "fs.realpath": { "version": "1.0.0", "bundled": true, - "dev": true - }, - "fstream": { - "version": "1.0.11", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.1" - } - }, - "fstream-ignore": { - "version": "1.0.5", - "bundled": true, "dev": true, - "optional": true, - "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" - } + "optional": true }, "gauge": { "version": "2.7.4", @@ -4168,7 +5256,7 @@ "dev": true, "optional": true, "requires": { - "aproba": "1.1.1", + "aproba": "1.2.0", "console-control-strings": "1.1.0", "has-unicode": "2.0.1", "object-assign": "4.1.1", @@ -4178,27 +5266,11 @@ "wide-align": "1.1.2" } }, - "getpass": { - "version": "0.1.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, "glob": { "version": "7.1.2", "bundled": true, "dev": true, + "optional": true, "requires": { "fs.realpath": "1.0.0", "inflight": "1.0.6", @@ -4208,64 +5280,35 @@ "path-is-absolute": "1.0.1" } }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true, - "dev": true - }, - "har-schema": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "optional": true - }, - "har-validator": { - "version": "4.2.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" - } - }, "has-unicode": { "version": "2.0.1", "bundled": true, "dev": true, "optional": true }, - "hawk": { - "version": "3.1.3", + "iconv-lite": { + "version": "0.4.21", "bundled": true, "dev": true, + "optional": true, "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" + "safer-buffer": "2.1.2" } }, - "hoek": { - "version": "2.16.3", - "bundled": true, - "dev": true - }, - "http-signature": { - "version": "1.1.1", + "ignore-walk": { + "version": "3.0.1", "bundled": true, "dev": true, "optional": true, "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.0", - "sshpk": "1.13.0" + "minimatch": "3.0.4" } }, "inflight": { "version": "1.0.6", "bundled": true, "dev": true, + "optional": true, "requires": { "once": "1.4.0", "wrappy": "1.0.2" @@ -4277,7 +5320,7 @@ "dev": true }, "ini": { - "version": "1.3.4", + "version": "1.3.5", "bundled": true, "dev": true, "optional": true @@ -4290,156 +5333,114 @@ "number-is-nan": "1.0.1" } }, - "is-typedarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, "isarray": { "version": "1.0.0", "bundled": true, - "dev": true - }, - "isstream": { - "version": "0.1.2", - "bundled": true, "dev": true, "optional": true }, - "jodid25519": { - "version": "1.0.2", + "minimatch": { + "version": "3.0.4", "bundled": true, "dev": true, - "optional": true, "requires": { - "jsbn": "0.1.1" + "brace-expansion": "1.1.11" } }, - "jsbn": { - "version": "0.1.1", + "minimist": { + "version": "0.0.8", "bundled": true, - "dev": true, - "optional": true + "dev": true }, - "json-schema": { - "version": "0.2.3", + "minipass": { + "version": "2.2.4", "bundled": true, "dev": true, - "optional": true + "requires": { + "safe-buffer": "5.1.1", + "yallist": "3.0.2" + } }, - "json-stable-stringify": { - "version": "1.0.1", + "minizlib": { + "version": "1.1.0", "bundled": true, "dev": true, "optional": true, "requires": { - "jsonify": "0.0.0" + "minipass": "2.2.4" } }, - "json-stringify-safe": { - "version": "5.0.1", + "mkdirp": { + "version": "0.5.1", "bundled": true, "dev": true, - "optional": true + "requires": { + "minimist": "0.0.8" + } }, - "jsonify": { - "version": "0.0.0", + "ms": { + "version": "2.0.0", "bundled": true, "dev": true, "optional": true }, - "jsprim": { - "version": "1.4.0", + "needle": { + "version": "2.2.0", "bundled": true, "dev": true, "optional": true, "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.0.2", - "json-schema": "0.2.3", - "verror": "1.3.6" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } + "debug": "2.6.9", + "iconv-lite": "0.4.21", + "sax": "1.2.4" } }, - "mime-db": { - "version": "1.27.0", - "bundled": true, - "dev": true - }, - "mime-types": { - "version": "2.1.15", - "bundled": true, - "dev": true, - "requires": { - "mime-db": "1.27.0" - } - }, - "minimatch": { - "version": "3.0.4", + "node-pre-gyp": { + "version": "0.10.0", "bundled": true, "dev": true, + "optional": true, "requires": { - "brace-expansion": "1.1.7" + "detect-libc": "1.0.3", + "mkdirp": "0.5.1", + "needle": "2.2.0", + "nopt": "4.0.1", + "npm-packlist": "1.1.10", + "npmlog": "4.1.2", + "rc": "1.2.7", + "rimraf": "2.6.2", + "semver": "5.5.0", + "tar": "4.4.1" } }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "mkdirp": { - "version": "0.5.1", + "nopt": { + "version": "4.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { - "minimist": "0.0.8" + "abbrev": "1.1.1", + "osenv": "0.1.5" } }, - "ms": { - "version": "2.0.0", + "npm-bundled": { + "version": "1.0.3", "bundled": true, "dev": true, "optional": true }, - "node-pre-gyp": { - "version": "0.6.39", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "1.0.2", - "hawk": "3.1.3", - "mkdirp": "0.5.1", - "nopt": "4.0.1", - "npmlog": "4.1.0", - "rc": "1.2.1", - "request": "2.81.0", - "rimraf": "2.6.1", - "semver": "5.3.0", - "tar": "2.2.1", - "tar-pack": "3.4.0" - } - }, - "nopt": { - "version": "4.0.1", + "npm-packlist": { + "version": "1.1.10", "bundled": true, "dev": true, "optional": true, "requires": { - "abbrev": "1.1.0", - "osenv": "0.1.4" + "ignore-walk": "3.0.1", + "npm-bundled": "1.0.3" } }, "npmlog": { - "version": "4.1.0", + "version": "4.1.2", "bundled": true, "dev": true, "optional": true, @@ -4455,12 +5456,6 @@ "bundled": true, "dev": true }, - "oauth-sign": { - "version": "0.8.2", - "bundled": true, - "dev": true, - "optional": true - }, "object-assign": { "version": "4.1.1", "bundled": true, @@ -4488,7 +5483,7 @@ "optional": true }, "osenv": { - "version": "0.1.4", + "version": "0.1.5", "bundled": true, "dev": true, "optional": true, @@ -4500,39 +5495,23 @@ "path-is-absolute": { "version": "1.0.1", "bundled": true, - "dev": true - }, - "performance-now": { - "version": "0.2.0", - "bundled": true, "dev": true, "optional": true }, "process-nextick-args": { - "version": "1.0.7", - "bundled": true, - "dev": true - }, - "punycode": { - "version": "1.4.1", - "bundled": true, - "dev": true, - "optional": true - }, - "qs": { - "version": "6.4.0", + "version": "2.0.0", "bundled": true, "dev": true, "optional": true }, "rc": { - "version": "1.2.1", + "version": "1.2.7", "bundled": true, "dev": true, "optional": true, "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.4", + "deep-extend": "0.5.1", + "ini": "1.3.5", "minimist": "1.2.0", "strip-json-comments": "2.0.1" }, @@ -4546,112 +5525,63 @@ } }, "readable-stream": { - "version": "2.2.9", + "version": "2.3.6", "bundled": true, "dev": true, + "optional": true, "requires": { - "buffer-shims": "1.0.0", "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "1.0.1", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.1.1", "util-deprecate": "1.0.2" } }, - "request": { - "version": "2.81.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.15", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.0.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.2", - "tunnel-agent": "0.6.0", - "uuid": "3.0.1" - } - }, "rimraf": { - "version": "2.6.1", + "version": "2.6.2", "bundled": true, "dev": true, + "optional": true, "requires": { "glob": "7.1.2" } }, "safe-buffer": { - "version": "5.0.1", + "version": "5.1.1", "bundled": true, "dev": true }, - "semver": { - "version": "5.3.0", + "safer-buffer": { + "version": "2.1.2", "bundled": true, "dev": true, "optional": true }, - "set-blocking": { - "version": "2.0.0", + "sax": { + "version": "1.2.4", "bundled": true, "dev": true, "optional": true }, - "signal-exit": { - "version": "3.0.2", + "semver": { + "version": "5.5.0", "bundled": true, "dev": true, "optional": true }, - "sntp": { - "version": "1.0.9", + "set-blocking": { + "version": "2.0.0", "bundled": true, "dev": true, - "requires": { - "hoek": "2.16.3" - } + "optional": true }, - "sshpk": { - "version": "1.13.0", + "signal-exit": { + "version": "3.0.2", "bundled": true, "dev": true, - "optional": true, - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jodid25519": "1.0.2", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } + "optional": true }, "string-width": { "version": "1.0.2", @@ -4664,19 +5594,14 @@ } }, "string_decoder": { - "version": "1.0.1", + "version": "1.1.1", "bundled": true, "dev": true, + "optional": true, "requires": { - "safe-buffer": "5.0.1" + "safe-buffer": "5.1.1" } }, - "stringstream": { - "version": "0.0.5", - "bundled": true, - "dev": true, - "optional": true - }, "strip-ansi": { "version": "3.0.1", "bundled": true, @@ -4692,81 +5617,26 @@ "optional": true }, "tar": { - "version": "2.2.1", - "bundled": true, - "dev": true, - "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" - } - }, - "tar-pack": { - "version": "3.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "2.6.8", - "fstream": "1.0.11", - "fstream-ignore": "1.0.5", - "once": "1.4.0", - "readable-stream": "2.2.9", - "rimraf": "2.6.1", - "tar": "2.2.1", - "uid-number": "0.0.6" - } - }, - "tough-cookie": { - "version": "2.3.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "punycode": "1.4.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", + "version": "4.4.1", "bundled": true, "dev": true, "optional": true, "requires": { - "safe-buffer": "5.0.1" + "chownr": "1.0.1", + "fs-minipass": "1.2.5", + "minipass": "2.2.4", + "minizlib": "1.1.0", + "mkdirp": "0.5.1", + "safe-buffer": "5.1.1", + "yallist": "3.0.2" } }, - "tweetnacl": { - "version": "0.14.5", - "bundled": true, - "dev": true, - "optional": true - }, - "uid-number": { - "version": "0.0.6", - "bundled": true, - "dev": true, - "optional": true - }, "util-deprecate": { "version": "1.0.2", "bundled": true, - "dev": true - }, - "uuid": { - "version": "3.0.1", - "bundled": true, "dev": true, "optional": true }, - "verror": { - "version": "1.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "extsprintf": "1.0.2" - } - }, "wide-align": { "version": "1.1.2", "bundled": true, @@ -4780,21 +5650,14 @@ "version": "1.0.2", "bundled": true, "dev": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true, + "dev": true } } }, - "fstream": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", - "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.2" - } - }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -4807,71 +5670,6 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dev": true, - "requires": { - "aproba": "1.2.0", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - } - } - }, - "gaze": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz", - "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=", - "dev": true, - "optional": true, - "requires": { - "globule": "1.2.0" - } - }, - "generate-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", - "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", - "dev": true, - "optional": true - }, - "generate-object-property": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", - "dev": true, - "optional": true, - "requires": { - "is-property": "1.0.2" - } - }, "generic-names": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-1.0.3.tgz", @@ -4919,23 +5717,73 @@ "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", "dev": true }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "gh-got": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gh-got/-/gh-got-6.0.0.tgz", + "integrity": "sha512-F/mS+fsWQMo1zfgG9MD8KWvTWPPzzhuVwY++fhQ5Ggd+0P+CAMHtzMZhNxG+TqGfHDChJKsbh6otfMGqO2AKBw==", "dev": true, "requires": { - "assert-plus": "1.0.0" + "got": "7.1.0", + "is-plain-obj": "1.1.0" }, "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "got": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", + "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", + "dev": true, + "requires": { + "decompress-response": "3.3.0", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "is-plain-obj": "1.1.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "isurl": "1.0.0", + "lowercase-keys": "1.0.1", + "p-cancelable": "0.3.0", + "p-timeout": "1.2.1", + "safe-buffer": "5.1.2", + "timed-out": "4.0.1", + "url-parse-lax": "1.0.0", + "url-to-options": "1.0.1" + } + }, + "p-cancelable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", + "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", "dev": true + }, + "p-timeout": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", + "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", + "dev": true, + "requires": { + "p-finally": "1.0.0" + } + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dev": true, + "requires": { + "prepend-http": "1.0.4" + } } } }, + "github-username": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/github-username/-/github-username-4.1.0.tgz", + "integrity": "sha1-y+KABBiDIG2kISrp5LXxacML9Bc=", + "dev": true, + "requires": { + "gh-got": "6.0.0" + } + }, "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", @@ -4950,6 +5798,33 @@ "path-is-absolute": "1.0.1" } }, + "glob-all": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-all/-/glob-all-3.1.0.tgz", + "integrity": "sha1-iRPd+17hrHgSZWJBsD1SF8ZLAqs=", + "dev": true, + "requires": { + "glob": "7.1.2", + "yargs": "1.2.6" + }, + "dependencies": { + "minimist": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.1.0.tgz", + "integrity": "sha1-md9lelJXTCHJBXSX33QnkLK0wN4=", + "dev": true + }, + "yargs": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-1.2.6.tgz", + "integrity": "sha1-nHtKgv1dWVsr8Xq23MQxNUMv40s=", + "dev": true, + "requires": { + "minimist": "0.1.0" + } + } + } + }, "glob-base": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", @@ -4969,6 +5844,36 @@ "is-glob": "2.0.1" } }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", + "dev": true + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "1.0.2", + "is-windows": "1.0.2", + "resolve-dir": "1.0.1" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "requires": { + "expand-tilde": "2.0.2", + "homedir-polyfill": "1.0.1", + "ini": "1.3.5", + "is-windows": "1.0.2", + "which": "1.3.0" + } + }, "globals": { "version": "9.18.0", "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", @@ -4997,16 +5902,29 @@ } } }, - "globule": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz", - "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=", + "got": { + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/got/-/got-8.3.1.tgz", + "integrity": "sha512-tiLX+bnYm5A56T5N/n9Xo89vMaO1mrS9qoDqj3u/anVooqGozvY/HbXzEpDfbNeKsHCBpK40gSbz8wGYSp3i1w==", "dev": true, - "optional": true, "requires": { - "glob": "7.1.2", - "lodash": "4.17.4", - "minimatch": "3.0.4" + "@sindresorhus/is": "0.7.0", + "cacheable-request": "2.1.4", + "decompress-response": "3.3.0", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "into-stream": "3.1.0", + "is-retry-allowed": "1.1.0", + "isurl": "1.0.0", + "lowercase-keys": "1.0.1", + "mimic-response": "1.0.0", + "p-cancelable": "0.4.1", + "p-timeout": "2.0.1", + "pify": "3.0.0", + "safe-buffer": "5.1.2", + "timed-out": "4.0.1", + "url-parse-lax": "3.0.0", + "url-to-options": "1.0.1" } }, "graceful-fs": { @@ -5015,50 +5933,21 @@ "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=", + "grouped-queue": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/grouped-queue/-/grouped-queue-0.3.3.tgz", + "integrity": "sha1-wWfSpTGcWg4JZO9qJbfC34mWyFw=", "dev": true, - "optional": true - }, + "requires": { + "lodash": "4.17.10" + } + }, "handle-thing": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=", "dev": true }, - "har-schema": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", - "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", - "dev": true, - "optional": true - }, - "har-validator": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", - "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", - "dev": true, - "optional": true, - "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" - }, - "dependencies": { - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true, - "optional": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - } - } - }, "has": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", @@ -5077,18 +5966,39 @@ "ansi-regex": "2.1.1" } }, + "has-color": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", + "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", + "dev": true + }, "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "has-symbol-support-x": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", + "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", + "dev": true + }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", "dev": true }, + "has-to-string-tag-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", + "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", + "dev": true, + "requires": { + "has-symbol-support-x": "1.4.2" + } + }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -5150,12 +6060,13 @@ } }, "hash-base": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", - "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", "dev": true, "requires": { - "inherits": "2.0.3" + "inherits": "2.0.3", + "safe-buffer": "5.1.2" } }, "hash-sum": { @@ -5171,19 +6082,7 @@ "dev": true, "requires": { "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" - } - }, - "hawk": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", - "dev": true, - "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" + "minimalistic-assert": "1.0.1" } }, "he": { @@ -5199,16 +6098,10 @@ "dev": true, "requires": { "hash.js": "1.1.3", - "minimalistic-assert": "1.0.0", + "minimalistic-assert": "1.0.1", "minimalistic-crypto-utils": "1.0.1" } }, - "hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", - "dev": true - }, "home-or-tmp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", @@ -5219,10 +6112,19 @@ "os-tmpdir": "1.0.2" } }, + "homedir-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", + "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "dev": true, + "requires": { + "parse-passwd": "1.0.0" + } + }, "hosted-git-info": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", + "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", "dev": true }, "hpack.js": { @@ -5232,9 +6134,9 @@ "dev": true, "requires": { "inherits": "2.0.3", - "obuf": "1.1.1", - "readable-stream": "2.3.3", - "wbuf": "1.7.2" + "obuf": "1.1.2", + "readable-stream": "2.3.6", + "wbuf": "1.7.3" } }, "html-comment-regex": { @@ -5249,30 +6151,6 @@ "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", "dev": true }, - "html-minifier": { - "version": "3.5.8", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.8.tgz", - "integrity": "sha512-WX7D6PB9PFq05fZ1/CyxPUuyqXed6vh2fGOM80+zJT5wAO93D/cUjLs0CcbBFjQmlwmCgRvl97RurtArIpOnkw==", - "dev": true, - "requires": { - "camel-case": "3.0.0", - "clean-css": "4.1.9", - "commander": "2.12.2", - "he": "1.1.1", - "ncname": "1.0.0", - "param-case": "2.1.1", - "relateurl": "0.2.7", - "uglify-js": "3.3.8" - }, - "dependencies": { - "commander": { - "version": "2.12.2", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz", - "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==", - "dev": true - } - } - }, "htmlparser2": { "version": "3.9.2", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", @@ -5280,13 +6158,19 @@ "dev": true, "requires": { "domelementtype": "1.3.0", - "domhandler": "2.4.1", - "domutils": "1.6.2", + "domhandler": "2.4.2", + "domutils": "1.7.0", "entities": "1.1.1", "inherits": "2.0.3", - "readable-stream": "2.3.3" + "readable-stream": "2.3.6" } }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", + "dev": true + }, "http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", @@ -5294,191 +6178,432 @@ "dev": true }, "http-errors": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", - "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", "dev": true, "requires": { - "depd": "1.1.1", + "depd": "1.1.2", "inherits": "2.0.3", - "setprototypeof": "1.0.3", - "statuses": "1.3.1" - }, - "dependencies": { - "depd": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", - "dev": true - }, - "setprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", - "dev": true - } + "setprototypeof": "1.1.0", + "statuses": "1.4.0" } }, "http-parser-js": { - "version": "0.4.9", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.9.tgz", - "integrity": "sha1-6hoE+2St/wJC6ZdPKX3Uw8rSceE=", + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.13.tgz", + "integrity": "sha1-O9bW/ebjFyyTNMOzO2wZPYD+ETc=", "dev": true }, "http-proxy": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz", - "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", + "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", "dev": true, "requires": { - "eventemitter3": "1.2.0", + "eventemitter3": "3.1.0", + "follow-redirects": "1.5.0", "requires-port": "1.0.0" } }, "http-proxy-middleware": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz", - "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz", + "integrity": "sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q==", "dev": true, "requires": { - "http-proxy": "1.16.2", - "is-glob": "3.1.0", - "lodash": "4.17.4", - "micromatch": "2.3.11" + "http-proxy": "1.17.0", + "is-glob": "4.0.0", + "lodash": "4.17.10", + "micromatch": "3.1.10" }, "dependencies": { - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", "dev": true }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { - "is-extglob": "2.1.1" + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.2", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } } - } - } - }, - "http-signature": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", - "dev": true, - "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.1", - "sshpk": "1.13.1" - } - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", - "dev": true - }, - "icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", - "dev": true - }, - "icss-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", - "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", - "dev": true, - "requires": { - "postcss": "6.0.16" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { - "color-convert": "1.9.1" + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } } }, - "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { - "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "has-flag": "2.0.0" + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" } } } }, - "postcss": { - "version": "6.0.16", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.16.tgz", - "integrity": "sha512-m758RWPmSjFH/2MyyG3UOW1fgYbR9rtdzz5UNJnlm7OLtu4B2h9C6gi+bE4qFKghsBRFfZT8NzoQBs6JhLotoA==", + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { - "chalk": "2.3.0", - "source-map": "0.6.1", - "supports-color": "5.1.0" + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, - "supports-color": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.1.0.tgz", - "integrity": "sha512-Ry0AwkoKjDpVKK4sV4h6o3UJmNRbjYm2uXhwfj3J56lMVdvnUNqzQVRztOOMGQ++w1K/TjNDFvpJk0F/LoeBCQ==", + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", "dev": true, "requires": { - "has-flag": "2.0.0" + "is-extglob": "2.1.1" } - } - } - }, - "ieee754": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", - "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.9", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + } + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", "dev": true }, - "ignore": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", - "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==", + "iconv-lite": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "dev": true, + "requires": { + "safer-buffer": "2.1.2" + } + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", "dev": true }, - "image-size": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "icss-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", + "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", "dev": true, - "optional": true + "requires": { + "postcss": "6.0.22" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.4.0" + } + }, + "postcss": { + "version": "6.0.22", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", + "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", + "dev": true, + "requires": { + "chalk": "2.4.1", + "source-map": "0.6.1", + "supports-color": "5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + } + } + }, + "ieee754": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.11.tgz", + "integrity": "sha512-VhDzCKN7K8ufStx/CLj5/PDTMgph+qwN5Pkd5i0sGnVwk56zJ0lkT8Qzi1xqWLS0Wp29DgDtNeS7v8/wMoZeHg==", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.8.tgz", + "integrity": "sha512-pUh+xUQQhQzevjRHHFqqcTy0/dP/kS9I8HSrUydhihjuD09W6ldVWFtIrwhXdUJHis3i2rZNqEHpZH/cbinFbg==", + "dev": true }, "import-local": { "version": "1.0.0", @@ -5496,13 +6621,6 @@ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, - "in-publish": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", - "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", - "dev": true, - "optional": true - }, "indent-string": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", @@ -5540,19 +6658,25 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, "inquirer": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", "dev": true, "requires": { - "ansi-escapes": "3.0.0", - "chalk": "2.3.0", + "ansi-escapes": "3.1.0", + "chalk": "2.4.1", "cli-cursor": "2.1.0", "cli-width": "2.2.0", - "external-editor": "2.1.0", + "external-editor": "2.2.0", "figures": "2.0.0", - "lodash": "4.17.4", + "lodash": "4.17.10", "mute-stream": "0.0.7", "run-async": "2.3.0", "rx-lite": "4.0.8", @@ -5569,23 +6693,23 @@ "dev": true }, "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "1.9.1" } }, "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { - "ansi-styles": "3.2.0", + "ansi-styles": "3.2.1", "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" + "supports-color": "5.4.0" } }, "strip-ansi": { @@ -5598,12 +6722,12 @@ } }, "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { - "has-flag": "2.0.0" + "has-flag": "3.0.0" } } } @@ -5623,10 +6747,20 @@ "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", "dev": true }, + "into-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", + "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", + "dev": true, + "requires": { + "from2": "2.3.0", + "p-is-promise": "1.1.0" + } + }, "invariant": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "dev": true, "requires": { "loose-envify": "1.3.1" @@ -5645,9 +6779,9 @@ "dev": true }, "ipaddr.js": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.5.2.tgz", - "integrity": "sha1-1LUFvemUaYfM8PxY2QEP+WB+P6A=", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.6.0.tgz", + "integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs=", "dev": true }, "is-absolute-url": { @@ -5657,20 +6791,12 @@ "dev": true }, "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } + "kind-of": "3.2.2" } }, "is-arrayish": { @@ -5710,20 +6836,12 @@ "dev": true }, "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } + "kind-of": "3.2.2" } }, "is-date-object": { @@ -5733,30 +6851,24 @@ "dev": true }, "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" }, "dependencies": { "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "dev": true } } }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", - "dev": true - }, "is-dotfile": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", @@ -5772,24 +6884,6 @@ "is-primitive": "2.0.0" } }, - "is-expression": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-2.1.0.tgz", - "integrity": "sha1-kb6dR968/vB3l36XIr5tz7RGXvA=", - "dev": true, - "requires": { - "acorn": "3.3.0", - "object-assign": "4.1.1" - }, - "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true - } - } - }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", @@ -5832,19 +6926,6 @@ "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", "dev": true }, - "is-my-json-valid": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.1.tgz", - "integrity": "sha512-Q2khNw+oBlWuaYvEEHtKSw/pCxD2L5Rc1C+UQme9X6JdRDh7m5D7HkozA0qa3DUkQ6VzCnEm8mVIQPyIRkI5sQ==", - "dev": true, - "optional": true, - "requires": { - "generate-function": "2.0.0", - "generate-object-property": "1.2.0", - "jsonpointer": "4.0.1", - "xtend": "4.0.1" - } - }, "is-number": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", @@ -5854,23 +6935,49 @@ "kind-of": "3.2.2" } }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", + "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", + "dev": true + }, + "is-observable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", + "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", + "dev": true, + "requires": { + "symbol-observable": "1.2.0" + }, + "dependencies": { + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "dev": true + } + } + }, "is-odd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-1.0.0.tgz", - "integrity": "sha1-O4qTLrAos3dcObsJ6RdnrM22kIg=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", + "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", "dev": true, "requires": { - "is-number": "3.0.0" + "is-number": "4.0.0" }, "dependencies": { "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true } } }, @@ -5881,9 +6988,9 @@ "dev": true }, "is-path-in-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", - "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", "dev": true, "requires": { "is-path-inside": "1.0.1" @@ -5939,13 +7046,6 @@ "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", "dev": true }, - "is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", - "dev": true, - "optional": true - }, "is-regex": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", @@ -5961,6 +7061,21 @@ "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", "dev": true }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "dev": true + }, + "is-scoped": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-scoped/-/is-scoped-1.0.0.tgz", + "integrity": "sha1-RJypgpnnEwOCViieyytUDcQ3yzA=", + "dev": true, + "requires": { + "scoped-regex": "1.0.0" + } + }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -5982,18 +7097,18 @@ "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", "dev": true }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, "is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", "dev": true }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, "is-wsl": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", @@ -6006,6 +7121,12 @@ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, + "isbinaryfile": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.2.tgz", + "integrity": "sha1-Sj6XTsDLqQBNP8bN5yCeppNopiE=", + "dev": true + }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -6021,22 +7142,31 @@ "isarray": "1.0.0" } }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true + "istextorbinary": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-2.2.1.tgz", + "integrity": "sha512-TS+hoFl8Z5FAFMK38nhBkdLt44CclNRgDHWeMgsV8ko3nDlr/9UI2Sf839sW7enijf8oKsZYXRvM8g0it9Zmcw==", + "dev": true, + "requires": { + "binaryextensions": "2.1.1", + "editions": "1.3.4", + "textextensions": "2.2.0" + } }, - "js-base64": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.2.tgz", - "integrity": "sha512-lLkz3IRPTNeATsKQGeltbzRK/5+bWsXBHfpZrxJAi4N30RtCtNA+rJznp4uR2+4OgkBsoeeFwONVLr4gzIVErQ==", - "dev": true + "isurl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "dev": true, + "requires": { + "has-to-string-tag-x": "1.4.1", + "is-object": "1.0.1" + } }, - "js-stringify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", - "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=", + "js-base64": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.5.tgz", + "integrity": "sha512-aUnNwqMOXw3yvErjMPSQu6qIIzUmT1e5KcU1OZxRDU1g/am6mzBvcrmLAYwzmB59BHPrh5/tKaiF4OPhqRWESQ==", "dev": true }, "js-tokens": { @@ -6051,33 +7181,57 @@ "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", "dev": true, "requires": { - "argparse": "1.0.9", + "argparse": "1.0.10", "esprima": "2.7.3" } }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "jscodeshift": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.5.0.tgz", + "integrity": "sha512-JAcQINNMFpdzzpKJN8k5xXjF3XDuckB1/48uScSzcnNyK199iWEc9AxKL9OoX5144M2w5zEx9Qs4/E/eBZZUlw==", "dev": true, - "optional": true - }, - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true - }, - "json-loader": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", - "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==", + "requires": { + "babel-plugin-transform-flow-strip-types": "6.22.0", + "babel-preset-es2015": "6.24.1", + "babel-preset-stage-1": "6.24.1", + "babel-register": "6.26.0", + "babylon": "7.0.0-beta.47", + "colors": "1.1.2", + "flow-parser": "0.73.0", + "lodash": "4.17.10", + "micromatch": "2.3.11", + "neo-async": "2.5.1", + "node-dir": "0.1.8", + "nomnom": "1.8.1", + "recast": "0.14.7", + "temp": "0.8.3", + "write-file-atomic": "1.3.4" + }, + "dependencies": { + "babylon": { + "version": "7.0.0-beta.47", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.47.tgz", + "integrity": "sha512-+rq2cr4GDhtToEzKFD6KZZMDBXhjFAr9JjPw9pAppZACeEWqNM294j+NdBzkSHYXwzzBmVjZ3nEVJlOhbR2gOQ==", + "dev": true + } + } + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", "dev": true }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, "json-schema-traverse": { @@ -6086,28 +7240,12 @@ "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", "dev": true }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true, - "optional": true, - "requires": { - "jsonify": "0.0.0" - } - }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, "json3": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", @@ -6120,49 +7258,13 @@ "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", "dev": true }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true, - "optional": true - }, - "jsonpointer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", - "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", - "dev": true, - "optional": true - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } - } - }, - "jstransformer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", - "integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=", + "keyv": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", + "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", "dev": true, - "optional": true, "requires": { - "is-promise": "2.1.0", - "promise": "7.3.1" + "json-buffer": "3.0.0" } }, "killable": { @@ -6180,12 +7282,6 @@ "is-buffer": "1.1.6" } }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "dev": true - }, "lcid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", @@ -6195,22 +7291,11 @@ "invert-kv": "1.0.0" } }, - "less": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/less/-/less-2.7.3.tgz", - "integrity": "sha512-KPdIJKWcEAb02TuJtaLrhue0krtRLoRoo7x6BNJIBelO00t/CCdJQUnHW5V34OnHMWzIktSalJxRO+FvytQlCQ==", - "dev": true, - "optional": true, - "requires": { - "errno": "0.1.6", - "graceful-fs": "4.1.11", - "image-size": "0.5.5", - "mime": "1.6.0", - "mkdirp": "0.5.1", - "promise": "7.3.1", - "request": "2.81.0", - "source-map": "0.5.7" - } + "leb": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/leb/-/leb-0.3.0.tgz", + "integrity": "sha1-Mr7p+tFoMo1q6oUi2DP0GA7tHaM=", + "dev": true }, "levn": { "version": "0.3.0", @@ -6222,6 +7307,158 @@ "type-check": "0.3.2" } }, + "listr": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.1.tgz", + "integrity": "sha512-MSMUUVN1f8aRnPi4034RkOqdiUlpYW+FqwFE3aL0uYNPRavkt2S2SsSpDDofn8BDpqv2RNnsdOcCHWsChcq77A==", + "dev": true, + "requires": { + "@samverschueren/stream-to-observable": "0.3.0", + "cli-truncate": "0.2.1", + "figures": "1.7.0", + "indent-string": "2.1.0", + "is-observable": "1.1.0", + "is-promise": "2.1.0", + "is-stream": "1.1.0", + "listr-silent-renderer": "1.1.1", + "listr-update-renderer": "0.4.0", + "listr-verbose-renderer": "0.4.1", + "log-symbols": "1.0.2", + "log-update": "1.0.2", + "ora": "0.2.3", + "p-map": "1.2.0", + "rxjs": "6.2.0", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" + } + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, + "requires": { + "chalk": "1.1.3" + } + }, + "rxjs": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.2.0.tgz", + "integrity": "sha512-qBzf5uu6eOKiCZuAE0SgZ0/Qp+l54oeVxFfC2t+mJ2SFI6IB8gmMdJHs5DUMu5kqifqcCtsKS2XHjhZu6RKvAw==", + "dev": true, + "requires": { + "tslib": "1.9.1" + } + } + } + }, + "listr-silent-renderer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", + "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=", + "dev": true + }, + "listr-update-renderer": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.4.0.tgz", + "integrity": "sha1-NE2YDaLKLosUW6MFkI8yrj9MyKc=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "cli-truncate": "0.2.1", + "elegant-spinner": "1.0.1", + "figures": "1.7.0", + "indent-string": "3.2.0", + "log-symbols": "1.0.2", + "log-update": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" + } + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, + "requires": { + "chalk": "1.1.3" + } + } + } + }, + "listr-verbose-renderer": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", + "integrity": "sha1-ggb0z21S3cWCfl/RSYng6WWTOjU=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "cli-cursor": "1.0.2", + "date-fns": "1.29.0", + "figures": "1.7.0" + }, + "dependencies": { + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "requires": { + "restore-cursor": "1.0.1" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "requires": { + "exit-hook": "1.1.1", + "onetime": "1.1.0" + } + } + } + }, "load-json-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", @@ -6321,144 +7558,132 @@ } }, "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - }, - "lodash._baseassign": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", - "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", - "dev": true, - "requires": { - "lodash._basecopy": "3.0.1", - "lodash.keys": "3.1.2" - } - }, - "lodash._basecopy": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", - "dev": true - }, - "lodash._bindcallback": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", - "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=", - "dev": true - }, - "lodash._createassigner": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz", - "integrity": "sha1-g4pbri/aymOsIt7o4Z+k5taXCxE=", - "dev": true, - "requires": { - "lodash._bindcallback": "3.0.1", - "lodash._isiterateecall": "3.0.9", - "lodash.restparam": "3.6.1" - } - }, - "lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", "dev": true }, - "lodash._isiterateecall": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", - "dev": true - }, - "lodash.assign": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-3.2.0.tgz", - "integrity": "sha1-POnwI0tLIiPilrj6CsH+6OvKZPo=", - "dev": true, - "requires": { - "lodash._baseassign": "3.2.0", - "lodash._createassigner": "3.1.1", - "lodash.keys": "3.1.2" - } - }, "lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", "dev": true }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true, - "optional": true - }, - "lodash.cond": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz", - "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=", - "dev": true - }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", - "dev": true - }, - "lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", - "dev": true - }, - "lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "dev": true, - "requires": { - "lodash._getnative": "3.9.1", - "lodash.isarguments": "3.1.0", - "lodash.isarray": "3.0.4" - } - }, "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", "dev": true }, - "lodash.mergewith": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz", - "integrity": "sha1-FQzwoWeR9ZA7iJHqsVRgknS96lU=", - "dev": true, - "optional": true - }, - "lodash.restparam": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", - "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", - "dev": true - }, "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", "dev": true }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "2.4.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.4.0" + } + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + } + } + }, + "log-update": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-1.0.2.tgz", + "integrity": "sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE=", + "dev": true, + "requires": { + "ansi-escapes": "1.4.0", + "cli-cursor": "1.0.2" + }, + "dependencies": { + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "dev": true + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "requires": { + "restore-cursor": "1.0.1" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "requires": { + "exit-hook": "1.1.1", + "onetime": "1.1.0" + } + } + } + }, "loglevel": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", "dev": true }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "loglevelnext": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/loglevelnext/-/loglevelnext-1.0.5.tgz", + "integrity": "sha512-V/73qkPuJmx4BcBF19xPBr+0ZRVBhc4POxvZTZdMeXpJ4NItXSJ/MSwuFT0kQJlCbXvdlZoQQ/418bS1y9Jh6A==", + "dev": true, + "requires": { + "es6-symbol": "3.1.1", + "object.assign": "4.1.0" + } + }, + "long": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", + "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=", "dev": true }, "loose-envify": { @@ -6480,41 +7705,35 @@ "signal-exit": "3.0.2" } }, - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", "dev": true }, "lru-cache": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", "dev": true, "requires": { "pseudomap": "1.0.2", "yallist": "2.1.2" } }, - "macaddress": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz", - "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=", - "dev": true - }, "magic-string": { - "version": "0.22.4", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.4.tgz", - "integrity": "sha512-kxBL06p6iO2qPBHsqGK2b3cRwiRGpnmSuVWNhwHcMX7qJOUr1HvricYP1LZOCdkQBUp0jiWg2d6WJwR3vYgByw==", + "version": "0.22.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", + "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==", "dev": true, "requires": { "vlq": "0.2.3" } }, "make-dir": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.1.0.tgz", - "integrity": "sha512-0Pkui4wLJ7rxvmfUvs87skoEaxmu0hCUApF8nonzpl7q//FWp9zu8W61Scz4sd/kUiqDxvUhtoam2efDyiBzcA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", "dev": true, "requires": { "pify": "3.0.0" @@ -6547,6 +7766,12 @@ "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=", "dev": true }, + "math-random": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", + "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", + "dev": true + }, "md5.js": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", @@ -6555,18 +7780,6 @@ "requires": { "hash-base": "3.0.4", "inherits": "2.0.3" - }, - "dependencies": { - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" - } - } } }, "media-typer": { @@ -6581,7 +7794,86 @@ "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "dev": true, "requires": { - "mimic-fn": "1.1.0" + "mimic-fn": "1.2.0" + } + }, + "mem-fs": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/mem-fs/-/mem-fs-1.1.3.tgz", + "integrity": "sha1-uK6NLj/Lb10/kWXBLUVRoGXZicw=", + "dev": true, + "requires": { + "through2": "2.0.3", + "vinyl": "1.2.0", + "vinyl-file": "2.0.0" + } + }, + "mem-fs-editor": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/mem-fs-editor/-/mem-fs-editor-4.0.2.tgz", + "integrity": "sha512-QHvdXLLNmwJXxKdf7x27aNUren6IoPxwcM8Sfd+S6/ddQQMcYdEtVKsh6ilpqMrU18VQuKZEaH0aCGt3JDbA0g==", + "dev": true, + "requires": { + "commondir": "1.0.1", + "deep-extend": "0.5.1", + "ejs": "2.6.1", + "glob": "7.1.2", + "globby": "8.0.1", + "isbinaryfile": "3.0.2", + "mkdirp": "0.5.1", + "multimatch": "2.1.0", + "rimraf": "2.6.2", + "through2": "2.0.3", + "vinyl": "2.1.0" + }, + "dependencies": { + "clone": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", + "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=", + "dev": true + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", + "dev": true + }, + "globby": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.1.tgz", + "integrity": "sha512-oMrYrJERnKBLXNLVTqhm3vPEdJ/b2ZE28xN4YARiix1NOIOBPEpOUnm844K1iu/BkphCaf2WNFwMszv8Soi1pw==", + "dev": true, + "requires": { + "array-union": "1.0.2", + "dir-glob": "2.0.0", + "fast-glob": "2.2.2", + "glob": "7.1.2", + "ignore": "3.3.8", + "pify": "3.0.0", + "slash": "1.0.0" + } + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "dev": true + }, + "vinyl": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.1.0.tgz", + "integrity": "sha1-Ah+cLPlR1rk5lDyJ617lrdT9kkw=", + "dev": true, + "requires": { + "clone": "2.1.1", + "clone-buffer": "1.0.0", + "clone-stats": "1.0.0", + "cloneable-readable": "1.1.2", + "remove-trailing-separator": "1.1.0", + "replace-ext": "1.0.0" + } + } } }, "memory-fs": { @@ -6590,8 +7882,8 @@ "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", "dev": true, "requires": { - "errno": "0.1.6", - "readable-stream": "2.3.3" + "errno": "0.1.7", + "readable-stream": "2.3.6" } }, "meow": { @@ -6705,15 +7997,29 @@ "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", "dev": true }, - "merge-options": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-1.0.0.tgz", - "integrity": "sha1-W08zmpVxkrW5iZSjrFyV0splG5Q=", + "merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", "dev": true, "requires": { - "is-plain-obj": "1.1.0" + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, + "merge2": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.2.tgz", + "integrity": "sha512-bgM8twH86rWni21thii6WCMQMRMmwqqdW3sGWi9IipnVAszdLXRjwDwAnyrVXo6DuP3AjRMMttZKUB48QWIFGg==", + "dev": true + }, "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -6752,36 +8058,42 @@ } }, "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", "dev": true }, "mime-db": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", - "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", "dev": true }, "mime-types": { - "version": "2.1.17", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", - "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "dev": true, "requires": { - "mime-db": "1.30.0" + "mime-db": "1.33.0" } }, "mimic-fn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", - "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "dev": true }, - "minimalistic-assert": { + "mimic-response": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", - "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.0.tgz", + "integrity": "sha1-3z02Uqc/3ta5sLJBRub9BSNTRY4=", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", "dev": true }, "minimalistic-crypto-utils": { @@ -6796,7 +8108,7 @@ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "1.1.11" } }, "minimist": { @@ -6805,10 +8117,28 @@ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, + "mississippi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", + "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", + "dev": true, + "requires": { + "concat-stream": "1.6.2", + "duplexify": "3.6.0", + "end-of-stream": "1.4.1", + "flush-write-stream": "1.0.3", + "from2": "2.3.0", + "parallel-transform": "1.1.0", + "pump": "2.0.1", + "pumpify": "1.5.1", + "stream-each": "1.2.2", + "through2": "2.0.3" + } + }, "mixin-deep": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.0.tgz", - "integrity": "sha512-dgaCvoh6i1nosAUBKb0l0pfJ78K8+S9fluyIR2YvAeUD/QuMahnFnF3xYty5eYXMjhGSsB0DsW6A0uAZyetoAg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", "dev": true, "requires": { "for-in": "1.0.2", @@ -6835,6 +8165,20 @@ "minimist": "0.0.8" } }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "1.2.0", + "copy-concurrently": "1.0.5", + "fs-write-stream-atomic": "1.0.10", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + } + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -6842,13 +8186,13 @@ "dev": true }, "multicast-dns": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.2.tgz", - "integrity": "sha512-xTO41ApiRHMVDBYhNL9bEhx7kRf1hq3OqPOnOy8bpTi0JZSxVPDre7ZRpTHLDlxmhf6d/FL+10E8VX1QRd+0DA==", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", "dev": true, "requires": { "dns-packet": "1.3.1", - "thunky": "0.1.0" + "thunky": "1.0.2" } }, "multicast-dns-service-types": { @@ -6857,6 +8201,18 @@ "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", "dev": true }, + "multimatch": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", + "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", + "dev": true, + "requires": { + "array-differ": "1.0.0", + "array-union": "1.0.2", + "arrify": "1.0.1", + "minimatch": "3.0.4" + } + }, "mute-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", @@ -6864,29 +8220,30 @@ "dev": true }, "nan": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", - "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", + "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", "dev": true, "optional": true }, "nanomatch": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.7.tgz", - "integrity": "sha512-/5ldsnyurvEw7wNpxLFgjVvBLMta43niEYOy0CJ4ntcYSbx6bugRUTQeFb4BR/WanEL1o3aQgHuVLHQaB6tOqg==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", + "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", "dev": true, "requires": { "arr-diff": "4.0.0", "array-unique": "0.3.2", - "define-property": "1.0.0", - "extend-shallow": "2.0.1", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", "fragment-cache": "0.2.1", - "is-odd": "1.0.0", - "kind-of": "5.1.0", + "is-odd": "2.0.0", + "is-windows": "1.0.2", + "kind-of": "6.0.2", "object.pick": "1.3.0", - "regex-not": "1.0.0", - "snapdragon": "0.8.1", - "to-regex": "3.0.1" + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "arr-diff": { @@ -6902,9 +8259,9 @@ "dev": true }, "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true } } @@ -6915,66 +8272,41 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, - "ncname": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ncname/-/ncname-1.0.0.tgz", - "integrity": "sha1-W1etGLHKCShk72Kwse2BlPODtxw=", - "dev": true, - "requires": { - "xml-char-classes": "1.0.0" - } - }, "negotiator": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", "dev": true }, - "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "dev": true, - "requires": { - "lower-case": "1.1.4" - } + "neo-async": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.1.tgz", + "integrity": "sha512-3KL3fvuRkZ7s4IFOMfztb7zJp3QaVWnBeGoJlgB38XnCRPj/0tLzzLG5IB8NYOHbJ8g8UGrgZv44GLDk6CxTxA==", + "dev": true }, - "node-forge": { - "version": "0.6.33", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.6.33.tgz", - "integrity": "sha1-RjgRh59XPUUVWtap9D3ClujoXrw=", + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", "dev": true }, - "node-gyp": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz", - "integrity": "sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA=", - "dev": true, - "optional": true, - "requires": { - "fstream": "1.0.11", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "nopt": "3.0.6", - "npmlog": "4.1.2", - "osenv": "0.1.4", - "request": "2.81.0", - "rimraf": "2.6.2", - "semver": "5.3.0", - "tar": "2.2.1", - "which": "1.3.0" - }, - "dependencies": { - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "dev": true, - "optional": true - } - } + "nice-try": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.4.tgz", + "integrity": "sha512-2NpiFHqC87y/zFke0fC0spBXL3bBsoh/p5H1EFhshxjCR5+0g2d6BiXbUFz9v1sAcxsk2htp2eQnNIci2dIYcA==", + "dev": true + }, + "node-dir": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.8.tgz", + "integrity": "sha1-VfuN62mQcHB/tn+RpGDwRIKUx30=", + "dev": true + }, + "node-forge": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", + "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==", + "dev": true }, "node-libs-browser": { "version": "2.1.0", @@ -6996,137 +8328,70 @@ "process": "0.11.10", "punycode": "1.4.1", "querystring-es3": "0.2.1", - "readable-stream": "2.3.3", + "readable-stream": "2.3.6", "stream-browserify": "2.0.1", - "stream-http": "2.8.0", - "string_decoder": "1.0.3", - "timers-browserify": "2.0.6", + "stream-http": "2.8.2", + "string_decoder": "1.1.1", + "timers-browserify": "2.0.10", "tty-browserify": "0.0.0", "url": "0.11.0", "util": "0.10.3", "vm-browserify": "0.0.4" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } } }, - "node-sass": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.7.2.tgz", - "integrity": "sha512-CaV+wLqZ7//Jdom5aUFCpGNoECd7BbNhjuwdsX/LkXBrHl8eb1Wjw4HvWqcFvhr5KuNgAk8i/myf/MQ1YYeroA==", + "nomnom": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz", + "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=", "dev": true, - "optional": true, "requires": { - "async-foreach": "0.1.3", - "chalk": "1.1.3", - "cross-spawn": "3.0.1", - "gaze": "1.1.2", - "get-stdin": "4.0.1", - "glob": "7.1.2", - "in-publish": "2.0.0", - "lodash.assign": "4.2.0", - "lodash.clonedeep": "4.5.0", - "lodash.mergewith": "4.6.0", - "meow": "3.7.0", - "mkdirp": "0.5.1", - "nan": "2.8.0", - "node-gyp": "3.6.2", - "npmlog": "4.1.2", - "request": "2.79.0", - "sass-graph": "2.2.4", - "stdout-stream": "1.4.0", - "true-case-path": "1.0.2" + "chalk": "0.4.0", + "underscore": "1.6.0" }, "dependencies": { - "caseless": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", - "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", - "dev": true, - "optional": true + "ansi-styles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", + "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", + "dev": true }, - "har-validator": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", - "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", + "chalk": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", + "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", "dev": true, - "optional": true, "requires": { - "chalk": "1.1.3", - "commander": "2.13.0", - "is-my-json-valid": "2.17.1", - "pinkie-promise": "2.0.1" + "ansi-styles": "1.0.0", + "has-color": "0.1.7", + "strip-ansi": "0.1.1" } }, - "lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", - "dev": true, - "optional": true - }, - "qs": { - "version": "6.3.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", - "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=", - "dev": true, - "optional": true - }, - "request": { - "version": "2.79.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", - "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", - "dev": true, - "optional": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.11.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "2.0.6", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", - "oauth-sign": "0.8.2", - "qs": "6.3.2", - "stringstream": "0.0.5", - "tough-cookie": "2.3.3", - "tunnel-agent": "0.4.3", - "uuid": "3.2.1" - } - }, - "tunnel-agent": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", - "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", - "dev": true, - "optional": true + "strip-ansi": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", + "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", + "dev": true } } }, - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "dev": true, - "optional": true, - "requires": { - "abbrev": "1.1.1" - } - }, "normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "dev": true, "requires": { - "hosted-git-info": "2.5.0", + "hosted-git-info": "2.6.0", "is-builtin-module": "1.0.0", "semver": "5.5.0", - "validate-npm-package-license": "3.0.1" + "validate-npm-package-license": "3.0.3" } }, "normalize-path": { @@ -7165,18 +8430,6 @@ "path-key": "2.0.1" } }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dev": true, - "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" - } - }, "num2fraction": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", @@ -7189,12 +8442,6 @@ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, - "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", - "dev": true - }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -7220,50 +8467,13 @@ "requires": { "is-descriptor": "0.1.6" } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } } } }, "object-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.2.0.tgz", - "integrity": "sha512-smRWXzkvxw72VquyZ0wggySl7PFUtoDhvhpdwgESXxUrH7vVhhp9asfup1+rVLrhsl7L45Ee1Q/l5R2Ul4MwUg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.0.tgz", + "integrity": "sha512-05KzQ70lSeGSrZJQXE5wNDiTkBJDlUT/myi6RX9dVIvz7a7Qh4oH93BQdiPMn27nldYvVQCKMUaM83AfizZlsQ==", "dev": true }, "object-keys": { @@ -7289,6 +8499,18 @@ } } }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "function-bind": "1.1.1", + "has-symbols": "1.0.0", + "object-keys": "1.0.11" + } + }, "object.omit": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", @@ -7317,9 +8539,9 @@ } }, "obuf": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.1.tgz", - "integrity": "sha1-EEEktsYCxnlogaBCVB0220OlJk4=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", "dev": true }, "on-finished": { @@ -7352,13 +8574,13 @@ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "dev": true, "requires": { - "mimic-fn": "1.1.0" + "mimic-fn": "1.2.0" } }, "opn": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.2.0.tgz", - "integrity": "sha512-Jd/GpzPyHF4P2/aNOVmS3lfMSWV9J7cOhCG1s08XCEAsPkB7lp6ddiU0J7XzyQRDUh8BqJ7PchfINjR8jyofRQ==", + "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==", "dev": true, "requires": { "is-wsl": "1.1.0" @@ -7378,27 +8600,54 @@ "wordwrap": "1.0.0" } }, - "original": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/original/-/original-1.0.0.tgz", - "integrity": "sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs=", + "ora": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz", + "integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=", "dev": true, "requires": { - "url-parse": "1.0.5" + "chalk": "1.1.3", + "cli-cursor": "1.0.2", + "cli-spinners": "0.1.2", + "object-assign": "4.1.1" }, "dependencies": { - "url-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.0.5.tgz", - "integrity": "sha1-CFSGBCKv3P7+tsllxmLUgAFpkns=", + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "requires": { + "restore-cursor": "1.0.1" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", "dev": true, "requires": { - "querystringify": "0.0.4", - "requires-port": "1.0.0" + "exit-hook": "1.1.1", + "onetime": "1.1.0" } } } }, + "original": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.1.tgz", + "integrity": "sha512-IEvtB5vM5ULvwnqMxWBLxkS13JIEXbakizMSo3yoPNPCIWzg8TG3Usn/UhXoZFM/m+FuEA20KdzPSFq/0rS+UA==", + "dev": true, + "requires": { + "url-parse": "1.4.0" + } + }, "os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", @@ -7412,12 +8661,14 @@ "dev": true }, "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", "dev": true, "requires": { - "lcid": "1.0.0" + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" } }, "os-tmpdir": { @@ -7426,15 +8677,19 @@ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, - "osenv": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", - "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", + "p-cancelable": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", + "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==", + "dev": true + }, + "p-each-series": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", + "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", "dev": true, - "optional": true, "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" + "p-reduce": "1.0.0" } }, "p-finally": { @@ -7443,6 +8698,18 @@ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, + "p-is-promise": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", + "dev": true + }, + "p-lazy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-lazy/-/p-lazy-1.0.0.tgz", + "integrity": "sha1-7FPIAvLuOsKPFmzILQsrAt4nqDU=", + "dev": true + }, "p-limit": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", @@ -7467,6 +8734,21 @@ "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", "dev": true }, + "p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", + "dev": true + }, + "p-timeout": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", + "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", + "dev": true, + "requires": { + "p-finally": "1.0.0" + } + }, "p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", @@ -7479,26 +8761,28 @@ "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", "dev": true }, - "param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "parallel-transform": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", "dev": true, "requires": { - "no-case": "2.3.2" + "cyclist": "0.2.2", + "inherits": "2.0.3", + "readable-stream": "2.3.6" } }, "parse-asn1": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", - "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", + "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", "dev": true, "requires": { - "asn1.js": "4.9.2", - "browserify-aes": "1.1.1", - "create-hash": "1.1.3", + "asn1.js": "4.10.1", + "browserify-aes": "1.2.0", + "create-hash": "1.2.0", "evp_bytestokey": "1.0.3", - "pbkdf2": "3.0.14" + "pbkdf2": "3.0.16" } }, "parse-glob": { @@ -7522,14 +8806,11 @@ "error-ex": "1.3.1" } }, - "parse5": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", - "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", - "dev": true, - "requires": { - "@types/node": "9.3.0" - } + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true }, "parseurl": { "version": "1.3.2", @@ -7609,25 +8890,18 @@ } }, "pbkdf2": { - "version": "3.0.14", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", - "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.16.tgz", + "integrity": "sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA==", "dev": true, "requires": { - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "ripemd160": "2.0.1", - "safe-buffer": "5.1.1", - "sha.js": "2.4.10" + "create-hash": "1.2.0", + "create-hmac": "1.1.7", + "ripemd160": "2.0.2", + "safe-buffer": "5.1.2", + "sha.js": "2.4.11" } }, - "performance-now": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", - "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", - "dev": true, - "optional": true - }, "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", @@ -7673,14 +8947,6 @@ "async": "1.5.2", "debug": "2.6.9", "mkdirp": "0.5.1" - }, - "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - } } }, "posix-character-classes": { @@ -7690,30 +8956,49 @@ "dev": true }, "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "version": "6.0.22", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", + "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.2", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "2.4.1", + "source-map": "0.6.1", + "supports-color": "5.4.0" }, "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "3.0.0" } } } @@ -7727,6 +9012,35 @@ "postcss": "5.2.18", "postcss-message-helpers": "2.0.0", "reduce-css-calc": "1.3.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.5", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } } }, "postcss-colormin": { @@ -7738,6 +9052,35 @@ "colormin": "1.1.2", "postcss": "5.2.18", "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.5", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } } }, "postcss-convert-values": { @@ -7748,6 +9091,35 @@ "requires": { "postcss": "5.2.18", "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.5", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } } }, "postcss-discard-comments": { @@ -7757,6 +9129,35 @@ "dev": true, "requires": { "postcss": "5.2.18" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.5", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } } }, "postcss-discard-duplicates": { @@ -7766,6 +9167,35 @@ "dev": true, "requires": { "postcss": "5.2.18" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.5", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } } }, "postcss-discard-empty": { @@ -7775,6 +9205,35 @@ "dev": true, "requires": { "postcss": "5.2.18" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.5", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } } }, "postcss-discard-overridden": { @@ -7784,6 +9243,35 @@ "dev": true, "requires": { "postcss": "5.2.18" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.5", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } } }, "postcss-discard-unused": { @@ -7794,48 +9282,73 @@ "requires": { "postcss": "5.2.18", "uniqs": "2.0.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.5", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } } }, - "postcss-filter-plugins": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz", - "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=", - "dev": true, - "requires": { - "postcss": "5.2.18", - "uniqid": "4.1.1" - } - }, - "postcss-load-config": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-1.2.0.tgz", - "integrity": "sha1-U56a/J3chiASHr+djDZz4M5Q0oo=", - "dev": true, - "requires": { - "cosmiconfig": "2.2.2", - "object-assign": "4.1.1", - "postcss-load-options": "1.2.0", - "postcss-load-plugins": "2.3.0" - } - }, - "postcss-load-options": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-load-options/-/postcss-load-options-1.2.0.tgz", - "integrity": "sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=", - "dev": true, - "requires": { - "cosmiconfig": "2.2.2", - "object-assign": "4.1.1" - } - }, - "postcss-load-plugins": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz", - "integrity": "sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=", + "postcss-filter-plugins": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz", + "integrity": "sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ==", "dev": true, "requires": { - "cosmiconfig": "2.2.2", - "object-assign": "4.1.1" + "postcss": "5.2.18" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.5", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } } }, "postcss-merge-idents": { @@ -7847,6 +9360,35 @@ "has": "1.0.1", "postcss": "5.2.18", "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.5", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } } }, "postcss-merge-longhand": { @@ -7856,6 +9398,35 @@ "dev": true, "requires": { "postcss": "5.2.18" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.5", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } } }, "postcss-merge-rules": { @@ -7868,7 +9439,7 @@ "caniuse-api": "1.6.1", "postcss": "5.2.18", "postcss-selector-parser": "2.2.3", - "vendors": "1.0.1" + "vendors": "1.0.2" }, "dependencies": { "browserslist": { @@ -7877,8 +9448,35 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000795", - "electron-to-chromium": "1.3.31" + "caniuse-db": "1.0.30000846", + "electron-to-chromium": "1.3.48" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.5", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" } } } @@ -7898,6 +9496,35 @@ "object-assign": "4.1.1", "postcss": "5.2.18", "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.5", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } } }, "postcss-minify-gradients": { @@ -7908,6 +9535,35 @@ "requires": { "postcss": "5.2.18", "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.5", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } } }, "postcss-minify-params": { @@ -7920,6 +9576,35 @@ "postcss": "5.2.18", "postcss-value-parser": "3.3.0", "uniqs": "2.0.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.5", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } } }, "postcss-minify-selectors": { @@ -7932,18 +9617,35 @@ "has": "1.0.1", "postcss": "5.2.18", "postcss-selector-parser": "2.2.3" - } - }, - "postcss-modules": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-0.6.4.tgz", - "integrity": "sha1-d6WLt3uhtDkrJwwLWYUv116JqLQ=", - "dev": true, - "requires": { - "css-modules-loader-core": "1.1.0", - "generic-names": "1.0.3", - "postcss": "5.2.18", - "string-hash": "1.1.3" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.5", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } } }, "postcss-modules-extract-imports": { @@ -7952,49 +9654,38 @@ "integrity": "sha1-ZhQOzs447wa/DT41XWm/WdFB6oU=", "dev": true, "requires": { - "postcss": "6.0.16" + "postcss": "6.0.22" }, "dependencies": { "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "1.9.1" } }, "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { - "ansi-styles": "3.2.0", + "ansi-styles": "3.2.1", "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" - }, - "dependencies": { - "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", - "dev": true, - "requires": { - "has-flag": "2.0.0" - } - } + "supports-color": "5.4.0" } }, "postcss": { - "version": "6.0.16", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.16.tgz", - "integrity": "sha512-m758RWPmSjFH/2MyyG3UOW1fgYbR9rtdzz5UNJnlm7OLtu4B2h9C6gi+bE4qFKghsBRFfZT8NzoQBs6JhLotoA==", + "version": "6.0.22", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", + "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", "dev": true, "requires": { - "chalk": "2.3.0", + "chalk": "2.4.1", "source-map": "0.6.1", - "supports-color": "5.1.0" + "supports-color": "5.4.0" } }, "source-map": { @@ -8004,12 +9695,12 @@ "dev": true }, "supports-color": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.1.0.tgz", - "integrity": "sha512-Ry0AwkoKjDpVKK4sV4h6o3UJmNRbjYm2uXhwfj3J56lMVdvnUNqzQVRztOOMGQ++w1K/TjNDFvpJk0F/LoeBCQ==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { - "has-flag": "2.0.0" + "has-flag": "3.0.0" } } } @@ -8021,49 +9712,38 @@ "dev": true, "requires": { "css-selector-tokenizer": "0.7.0", - "postcss": "6.0.16" + "postcss": "6.0.22" }, "dependencies": { "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "1.9.1" } }, "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { - "ansi-styles": "3.2.0", + "ansi-styles": "3.2.1", "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" - }, - "dependencies": { - "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", - "dev": true, - "requires": { - "has-flag": "2.0.0" - } - } + "supports-color": "5.4.0" } }, "postcss": { - "version": "6.0.16", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.16.tgz", - "integrity": "sha512-m758RWPmSjFH/2MyyG3UOW1fgYbR9rtdzz5UNJnlm7OLtu4B2h9C6gi+bE4qFKghsBRFfZT8NzoQBs6JhLotoA==", + "version": "6.0.22", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", + "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", "dev": true, "requires": { - "chalk": "2.3.0", + "chalk": "2.4.1", "source-map": "0.6.1", - "supports-color": "5.1.0" + "supports-color": "5.4.0" } }, "source-map": { @@ -8073,12 +9753,12 @@ "dev": true }, "supports-color": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.1.0.tgz", - "integrity": "sha512-Ry0AwkoKjDpVKK4sV4h6o3UJmNRbjYm2uXhwfj3J56lMVdvnUNqzQVRztOOMGQ++w1K/TjNDFvpJk0F/LoeBCQ==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { - "has-flag": "2.0.0" + "has-flag": "3.0.0" } } } @@ -8090,49 +9770,38 @@ "dev": true, "requires": { "css-selector-tokenizer": "0.7.0", - "postcss": "6.0.16" + "postcss": "6.0.22" }, "dependencies": { "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "1.9.1" } }, "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { - "ansi-styles": "3.2.0", + "ansi-styles": "3.2.1", "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" - }, - "dependencies": { - "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", - "dev": true, - "requires": { - "has-flag": "2.0.0" - } - } + "supports-color": "5.4.0" } }, "postcss": { - "version": "6.0.16", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.16.tgz", - "integrity": "sha512-m758RWPmSjFH/2MyyG3UOW1fgYbR9rtdzz5UNJnlm7OLtu4B2h9C6gi+bE4qFKghsBRFfZT8NzoQBs6JhLotoA==", + "version": "6.0.22", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", + "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", "dev": true, "requires": { - "chalk": "2.3.0", + "chalk": "2.4.1", "source-map": "0.6.1", - "supports-color": "5.1.0" + "supports-color": "5.4.0" } }, "source-map": { @@ -8142,12 +9811,55 @@ "dev": true }, "supports-color": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.1.0.tgz", - "integrity": "sha512-Ry0AwkoKjDpVKK4sV4h6o3UJmNRbjYm2uXhwfj3J56lMVdvnUNqzQVRztOOMGQ++w1K/TjNDFvpJk0F/LoeBCQ==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + } + } + }, + "postcss-modules-sync": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-sync/-/postcss-modules-sync-1.0.0.tgz", + "integrity": "sha1-YZpxnPeN0WpINBNRQLMkz3czS+E=", + "dev": true, + "requires": { + "generic-names": "1.0.3", + "icss-replace-symbols": "1.1.0", + "postcss": "5.2.18", + "postcss-modules-local-by-default": "1.2.0", + "postcss-modules-scope": "1.1.0", + "string-hash": "1.1.3" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.5", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "2.0.0" + "has-flag": "1.0.0" } } } @@ -8159,49 +9871,38 @@ "dev": true, "requires": { "icss-replace-symbols": "1.1.0", - "postcss": "6.0.16" + "postcss": "6.0.22" }, "dependencies": { "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "1.9.1" } }, "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { - "ansi-styles": "3.2.0", + "ansi-styles": "3.2.1", "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" - }, - "dependencies": { - "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", - "dev": true, - "requires": { - "has-flag": "2.0.0" - } - } + "supports-color": "5.4.0" } }, "postcss": { - "version": "6.0.16", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.16.tgz", - "integrity": "sha512-m758RWPmSjFH/2MyyG3UOW1fgYbR9rtdzz5UNJnlm7OLtu4B2h9C6gi+bE4qFKghsBRFfZT8NzoQBs6JhLotoA==", + "version": "6.0.22", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", + "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", "dev": true, "requires": { - "chalk": "2.3.0", + "chalk": "2.4.1", "source-map": "0.6.1", - "supports-color": "5.1.0" + "supports-color": "5.4.0" } }, "source-map": { @@ -8211,12 +9912,12 @@ "dev": true }, "supports-color": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.1.0.tgz", - "integrity": "sha512-Ry0AwkoKjDpVKK4sV4h6o3UJmNRbjYm2uXhwfj3J56lMVdvnUNqzQVRztOOMGQ++w1K/TjNDFvpJk0F/LoeBCQ==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { - "has-flag": "2.0.0" + "has-flag": "3.0.0" } } } @@ -8228,6 +9929,35 @@ "dev": true, "requires": { "postcss": "5.2.18" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.5", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } } }, "postcss-normalize-url": { @@ -8240,6 +9970,35 @@ "normalize-url": "1.9.1", "postcss": "5.2.18", "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.5", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } } }, "postcss-ordered-values": { @@ -8250,6 +10009,35 @@ "requires": { "postcss": "5.2.18", "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.5", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } } }, "postcss-reduce-idents": { @@ -8260,6 +10048,35 @@ "requires": { "postcss": "5.2.18", "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.5", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } } }, "postcss-reduce-initial": { @@ -8269,6 +10086,35 @@ "dev": true, "requires": { "postcss": "5.2.18" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.5", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } } }, "postcss-reduce-transforms": { @@ -8280,6 +10126,35 @@ "has": "1.0.1", "postcss": "5.2.18", "postcss-value-parser": "3.3.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.5", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } } }, "postcss-selector-parser": { @@ -8303,6 +10178,35 @@ "postcss": "5.2.18", "postcss-value-parser": "3.3.0", "svgo": "0.7.2" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.5", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } } }, "postcss-unique-selectors": { @@ -8314,6 +10218,35 @@ "alphanum-sort": "1.0.2", "postcss": "5.2.18", "uniqs": "2.0.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.5", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } } }, "postcss-value-parser": { @@ -8331,44 +10264,37 @@ "has": "1.0.1", "postcss": "5.2.18", "uniqs": "2.0.0" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "1.1.3", + "js-base64": "2.4.5", + "source-map": "0.5.7", + "supports-color": "3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } } }, - "posthtml": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.10.1.tgz", - "integrity": "sha512-4OW8nA6kOMyIivdEUL+b4vvSxWDEtQFiSAbM0n0baeSBcb9EQTaD9s1DqT6Qgr46oJZ1aJe8lioZZ5Exr4Ophg==", - "dev": true, - "requires": { - "posthtml-parser": "0.3.3", - "posthtml-render": "1.1.0" - } - }, - "posthtml-attrs-parser": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posthtml-attrs-parser/-/posthtml-attrs-parser-0.1.1.tgz", - "integrity": "sha1-zDPgAVX7mbqW9n4l4zBGHwV0Ksg=", - "dev": true, - "requires": { - "object-assign": "4.1.1" - } - }, - "posthtml-parser": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.3.3.tgz", - "integrity": "sha512-H/Z/yXGwl49A7hYQLV1iQ3h87NE0aZ/PMZhFwhw3lKeCAN+Ti4idrHvVvh4/GX10I7u77aQw+QB4vV5/Lzvv5A==", - "dev": true, - "requires": { - "htmlparser2": "3.9.2", - "isobject": "2.1.0", - "object-assign": "4.1.1" - } - }, - "posthtml-render": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.1.0.tgz", - "integrity": "sha512-EeUf38sN9VOS6sIe8HhgzE1qpZ+2ARXj/b7IJoUi0CQqxH4qeF6ZxAK808YhhWI4FsT3RCNiSKJ7tDSZ4rkd7w==", - "dev": true - }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -8388,9 +10314,15 @@ "dev": true }, "prettier": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.10.2.tgz", - "integrity": "sha512-TcdNoQIWFoHblurqqU6d1ysopjq7UX0oRcT/hJ8qvBAELiYWn+Ugf0AXdnzISEJ7vuhNnQ98N8jR8Sh53x4IZg==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.12.1.tgz", + "integrity": "sha1-wa0g6APndJ+vkFpAnSNn4Gu+cyU=", + "dev": true + }, + "pretty-bytes": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", + "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=", "dev": true }, "private": { @@ -8406,9 +10338,9 @@ "dev": true }, "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", "dev": true }, "progress": { @@ -8417,24 +10349,20 @@ "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", "dev": true }, - "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "dev": true, - "optional": true, - "requires": { - "asap": "2.0.6" - } + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true }, "proxy-addr": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.2.tgz", - "integrity": "sha1-ZXFQT0e7mI7IGAJT+F3X4UlSvew=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz", + "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==", "dev": true, "requires": { "forwarded": "0.1.2", - "ipaddr.js": "1.5.2" + "ipaddr.js": "1.6.0" } }, "prr": { @@ -8450,270 +10378,43 @@ "dev": true }, "public-encrypt": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", - "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", + "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==", "dev": true, "requires": { "bn.js": "4.11.8", "browserify-rsa": "4.0.1", - "create-hash": "1.1.3", - "parse-asn1": "5.1.0", + "create-hash": "1.2.0", + "parse-asn1": "5.1.1", "randombytes": "2.0.6" } }, - "pug": { - "version": "2.0.0-rc.4", - "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.0-rc.4.tgz", - "integrity": "sha512-SL7xovj6E2Loq9N0UgV6ynjMLW4urTFY/L/Fprhvz13Xc5vjzkjZjI1QHKq31200+6PSD8PyU6MqrtCTJj6/XA==", - "dev": true, - "optional": true, - "requires": { - "pug-code-gen": "2.0.0", - "pug-filters": "2.1.5", - "pug-lexer": "3.1.0", - "pug-linker": "3.0.3", - "pug-load": "2.0.9", - "pug-parser": "4.0.0", - "pug-runtime": "2.0.3", - "pug-strip-comments": "1.0.2" - } - }, - "pug-attrs": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-2.0.2.tgz", - "integrity": "sha1-i+KyIlVo/6ddG4Zpgr/59BEa/8s=", - "dev": true, - "optional": true, - "requires": { - "constantinople": "3.1.0", - "js-stringify": "1.0.2", - "pug-runtime": "2.0.3" - } - }, - "pug-code-gen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.0.tgz", - "integrity": "sha512-E4oiJT+Jn5tyEIloj8dIJQognbiNNp0i0cAJmYtQTFS0soJ917nlIuFtqVss3IXMEyQKUew3F4gIkBpn18KbVg==", - "dev": true, - "optional": true, - "requires": { - "constantinople": "3.1.0", - "doctypes": "1.1.0", - "js-stringify": "1.0.2", - "pug-attrs": "2.0.2", - "pug-error": "1.3.2", - "pug-runtime": "2.0.3", - "void-elements": "2.0.1", - "with": "5.1.1" - } - }, - "pug-error": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-1.3.2.tgz", - "integrity": "sha1-U659nSm7A89WRJOgJhCfVMR/XyY=", - "dev": true - }, - "pug-filters": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-2.1.5.tgz", - "integrity": "sha512-xkw71KtrC4sxleKiq+cUlQzsiLn8pM5+vCgkChW2E6oNOzaqTSIBKIQ5cl4oheuDzvJYCTSYzRaVinMUrV4YLQ==", - "dev": true, - "optional": true, - "requires": { - "clean-css": "3.4.28", - "constantinople": "3.1.0", - "jstransformer": "1.0.0", - "pug-error": "1.3.2", - "pug-walk": "1.1.5", - "resolve": "1.5.0", - "uglify-js": "2.8.29" - }, - "dependencies": { - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "dev": true, - "optional": true - }, - "clean-css": { - "version": "3.4.28", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz", - "integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=", - "dev": true, - "optional": true, - "requires": { - "commander": "2.8.1", - "source-map": "0.4.4" - } - }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "dev": true, - "optional": true, - "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", - "wordwrap": "0.0.2" - } - }, - "commander": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", - "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", - "dev": true, - "optional": true, - "requires": { - "graceful-readlink": "1.0.1" - } - }, - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, - "optional": true, - "requires": { - "amdefine": "1.0.1" - } - }, - "uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "dev": true, - "optional": true, - "requires": { - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "optional": true - } - } - }, - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", - "dev": true, - "optional": true - }, - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "dev": true, - "optional": true, - "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", - "window-size": "0.1.0" - } - } - } - }, - "pug-lexer": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-3.1.0.tgz", - "integrity": "sha1-/QhzdtSmdbT1n4/vQiiDQ06VgaI=", - "dev": true, - "optional": true, - "requires": { - "character-parser": "2.2.0", - "is-expression": "3.0.0", - "pug-error": "1.3.2" - }, - "dependencies": { - "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", - "dev": true, - "optional": true - }, - "is-expression": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-3.0.0.tgz", - "integrity": "sha1-Oayqa+f9HzRx3ELHQW5hwkMXrJ8=", - "dev": true, - "optional": true, - "requires": { - "acorn": "4.0.13", - "object-assign": "4.1.1" - } - } - } - }, - "pug-linker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.3.tgz", - "integrity": "sha512-DCKczglCXOzJ1lr4xUj/lVHYvS+lGmR2+KTCjZjtIpdwaN7lNOoX2SW6KFX5X4ElvW+6ThwB+acSUg08UJFN5A==", - "dev": true, - "optional": true, - "requires": { - "pug-error": "1.3.2", - "pug-walk": "1.1.5" - } - }, - "pug-load": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-2.0.9.tgz", - "integrity": "sha512-BDdZOCru4mg+1MiZwRQZh25+NTRo/R6/qArrdWIf308rHtWA5N9kpoUskRe4H6FslaQujC+DigH9LqlBA4gf6Q==", - "dev": true, - "optional": true, - "requires": { - "object-assign": "4.1.1", - "pug-walk": "1.1.5" - } - }, - "pug-parser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-4.0.0.tgz", - "integrity": "sha512-ocEUFPdLG9awwFj0sqi1uiZLNvfoodCMULZzkRqILryIWc/UUlDlxqrKhKjAIIGPX/1SNsvxy63+ayEGocGhQg==", + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", "dev": true, - "optional": true, "requires": { - "pug-error": "1.3.2", - "token-stream": "0.0.1" + "end-of-stream": "1.4.1", + "once": "1.4.0" } }, - "pug-runtime": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-2.0.3.tgz", - "integrity": "sha1-mBYmB7D86eJU1CfzOYelrucWi9o=", - "dev": true - }, - "pug-strip-comments": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-1.0.2.tgz", - "integrity": "sha1-0xOvoBvMN0mA4TmeI+vy65vchRM=", + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", "dev": true, - "optional": true, "requires": { - "pug-error": "1.3.2" + "duplexify": "3.6.0", + "inherits": "2.0.3", + "pump": "2.0.1" } }, - "pug-walk": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-1.1.5.tgz", - "integrity": "sha512-rJlH1lXerCIAtImXBze3dtKq/ykZMA4rpO9FnPcIgsWcxZLOvd8zltaoeOVFyBSSqCkhhJWbEbTMga8UxWUUSA==", - "dev": true - }, "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, "q": { @@ -8723,11 +10424,10 @@ "dev": true }, "qs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", - "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", - "dev": true, - "optional": true + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-2.3.3.tgz", + "integrity": "sha1-6eha2+ddoLvkyOBHaghikPhjtAQ=", + "dev": true }, "query-string": { "version": "4.3.4", @@ -8752,49 +10452,33 @@ "dev": true }, "querystringify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-0.0.4.tgz", - "integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.0.0.tgz", + "integrity": "sha512-eTPo5t/4bgaMNZxyjWx6N2a6AuE0mq51KWvpc7nU/MAqixcI6v6KrGUKES0HaomdnolQBBXU/++X6/QQ9KL4tw==", "dev": true }, "randomatic": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz", + "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==", "dev": true, "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" + "is-number": "4.0.0", + "kind-of": "6.0.2", + "math-random": "1.0.1" }, "dependencies": { "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true }, "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true } } }, @@ -8804,17 +10488,17 @@ "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, "randomfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.3.tgz", - "integrity": "sha512-YL6GrhrWoic0Eq8rXVbMptH7dAxCs0J+mh5Y0euNekPPYaxEmdVGim6GdoxoRzKW2yJoU8tueifS7mYxvcFDEQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", "dev": true, "requires": { "randombytes": "2.0.6", - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, "range-parser": { @@ -8847,6 +10531,16 @@ "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=", "dev": true }, + "read-chunk": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-2.1.0.tgz", + "integrity": "sha1-agTAkoAF7Z1C4aasVgDhnLx/9lU=", + "dev": true, + "requires": { + "pify": "3.0.0", + "safe-buffer": "5.1.2" + } + }, "read-pkg": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", @@ -8869,17 +10563,17 @@ } }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", "util-deprecate": "1.0.2" } }, @@ -8891,10 +10585,45 @@ "requires": { "graceful-fs": "4.1.11", "minimatch": "3.0.4", - "readable-stream": "2.3.3", + "readable-stream": "2.3.6", "set-immediate-shim": "1.0.1" } }, + "recast": { + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.14.7.tgz", + "integrity": "sha512-/nwm9pkrcWagN40JeJhkPaRxiHXBRkXyRh/hgU088Z/v+qCy+zIHHY6bC6o7NaKAxPqtE6nD8zBH1LfU0/Wx6A==", + "dev": true, + "requires": { + "ast-types": "0.11.3", + "esprima": "4.0.0", + "private": "0.1.8", + "source-map": "0.6.1" + }, + "dependencies": { + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "1.7.1" + } + }, "redent": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", @@ -8942,9 +10671,9 @@ } }, "regenerate": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", - "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", "dev": true }, "regenerator-runtime": { @@ -8974,21 +10703,28 @@ } }, "regex-not": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.0.tgz", - "integrity": "sha1-Qvg+OXcWIt+CawKvF2Ul1qXxV/k=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", "dev": true, "requires": { - "extend-shallow": "2.0.1" + "extend-shallow": "3.0.2", + "safe-regex": "1.1.0" } }, + "regexpp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", + "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", + "dev": true + }, "regexpu-core": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", "dev": true, "requires": { - "regenerate": "1.3.3", + "regenerate": "1.4.0", "regjsgen": "0.2.0", "regjsparser": "0.1.5" } @@ -9016,12 +10752,6 @@ } } }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "dev": true - }, "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", @@ -9049,36 +10779,11 @@ "is-finite": "1.0.2" } }, - "request": { - "version": "2.81.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", - "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", - "dev": true, - "optional": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.3", - "tunnel-agent": "0.6.0", - "uuid": "3.2.1" - } + "replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", + "dev": true }, "require-directory": { "version": "2.1.1", @@ -9086,12 +10791,6 @@ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, - "require-from-string": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", - "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=", - "dev": true - }, "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", @@ -9108,12 +10807,6 @@ "resolve-from": "1.0.1" } }, - "requireindex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.1.0.tgz", - "integrity": "sha1-5UBLgVV+91225JxacgBIk/4D4WI=", - "dev": true - }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -9121,9 +10814,9 @@ "dev": true }, "resolve": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", - "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", + "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", "dev": true, "requires": { "path-parse": "1.0.5" @@ -9146,6 +10839,16 @@ } } }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "2.0.2", + "global-modules": "1.0.0" + } + }, "resolve-from": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", @@ -9158,6 +10861,15 @@ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "dev": true }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dev": true, + "requires": { + "lowercase-keys": "1.0.1" + } + }, "restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", @@ -9168,14 +10880,11 @@ "signal-exit": "3.0.2" } }, - "right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "dev": true, - "requires": { - "align-text": "0.1.4" - } + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true }, "rimraf": { "version": "2.6.2", @@ -9187,147 +10896,231 @@ } }, "ripemd160": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", - "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", "dev": true, "requires": { - "hash-base": "2.0.2", + "hash-base": "3.0.4", "inherits": "2.0.3" } }, "rollup": { - "version": "0.50.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.50.1.tgz", - "integrity": "sha512-XwrnqjSTk+yR8GbP6hiJuVe83MVmBw/gm4P3qP34A10fRXvv6ppl0ZUg1+Pj1tIZSR/aw5ZaILLEiVxwXIAdAw==", - "dev": true + "version": "0.59.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.59.3.tgz", + "integrity": "sha512-A94GFMZlwwtS3t5p6jSTp9w4Asxu5C16NcEoQPUFPfl76FOHFA4bXjOdnirzBysdZqSS/2Dibhz1bdWZ/0UqQQ==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "@types/node": "10.1.2" + } }, "rollup-plugin-babel": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-3.0.3.tgz", - "integrity": "sha512-5kzM/Rr4jQSRPLc2eN5NuD+CI/6AAy7S1O18Ogu4U3nq1Q42VJn0C9EMtqnvxtfwf1XrezOtdA9ro1VZI5B0mA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-3.0.4.tgz", + "integrity": "sha512-TGhQbliTZnRoUhd2214K3r4KJUBu9J1DPzcrAnkluVXOVrveU9OvAaYQ16KyOmujAoq+LMC1+x6YF2xBrU7t+g==", "dev": true, "requires": { "rollup-pluginutils": "1.5.2" } }, "rollup-plugin-commonjs": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-8.2.6.tgz", - "integrity": "sha512-qK0+uhktmnAgZkHkqFuajNmPw93fjrO7+CysDaxWE5jrUR9XSlSvuao5ZJP+XizxA8weakhgYYBtbVz9SGBpjA==", + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-9.1.3.tgz", + "integrity": "sha512-g91ZZKZwTW7F7vL6jMee38I8coj/Q9GBdTmXXeFL7ldgC1Ky5WJvHgbKlAiXXTh762qvohhExwUgeQGFh9suGg==", "dev": true, "requires": { - "acorn": "5.3.0", - "estree-walker": "0.5.1", - "magic-string": "0.22.4", - "resolve": "1.5.0", - "rollup-pluginutils": "2.0.1" + "estree-walker": "0.5.2", + "magic-string": "0.22.5", + "resolve": "1.7.1", + "rollup-pluginutils": "2.3.0" }, "dependencies": { "estree-walker": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.5.1.tgz", - "integrity": "sha512-7HgCgz1axW7w5aOvgOQkoR1RMBkllygJrssU3BvymKQ95lxXYv6Pon17fBRDm9qhkvXZGijOULoSF9ShOk/ZLg==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.5.2.tgz", + "integrity": "sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig==", "dev": true }, "rollup-pluginutils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.0.1.tgz", - "integrity": "sha1-fslbNXP2VDpGpkYb2afFRFJdD8A=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.3.0.tgz", + "integrity": "sha512-xB6hsRsjdJdIYWEyYUJy/3ki5g69wrf0luHPGNK3ZSocV6HLNfio59l3dZ3TL4xUwEKgROhFi9jOCt6c5gfUWw==", "dev": true, "requires": { - "estree-walker": "0.3.1", + "estree-walker": "0.5.2", "micromatch": "2.3.11" - }, - "dependencies": { - "estree-walker": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.3.1.tgz", - "integrity": "sha1-5rGlHPcpJSTnI3wxLl/mZgwc4ao=", - "dev": true - } } } } }, + "rollup-plugin-css-only": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-css-only/-/rollup-plugin-css-only-0.4.0.tgz", + "integrity": "sha512-a9hhQnwajgrVEyyp+QPvOyV5QC9AN6PILO4Teg2+MCKTZgYAQkZy4B1pYjAuMOH9qgyFiJY8hAu6CEVIDU5Zjw==", + "dev": true, + "requires": { + "mkdirp": "0.5.1", + "rollup-pluginutils": "1.5.2" + } + }, "rollup-plugin-node-resolve": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.0.2.tgz", - "integrity": "sha512-ZwmMip/yqw6cmDQJuCQJ1G7gw2z11iGUtQNFYrFZHmqadRHU+OZGC3nOXwXu+UTvcm5lzDspB1EYWrkTgPWybw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.3.0.tgz", + "integrity": "sha512-9zHGr3oUJq6G+X0oRMYlzid9fXicBdiydhwGChdyeNRGPcN/majtegApRKHLR5drboUvEWU+QeUmGTyEZQs3WA==", "dev": true, "requires": { - "builtin-modules": "1.1.1", + "builtin-modules": "2.0.0", "is-module": "1.0.0", - "resolve": "1.5.0" + "resolve": "1.7.1" + }, + "dependencies": { + "builtin-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-2.0.0.tgz", + "integrity": "sha512-3U5kUA5VPsRUA3nofm/BXX7GVHKfxz0hOBAPxXrIvHzlDRkQVqEn6yi8QJegxl4LzOHLdvb7XF5dVawa/VVYBg==", + "dev": true + } } }, "rollup-plugin-uglify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/rollup-plugin-uglify/-/rollup-plugin-uglify-2.0.1.tgz", - "integrity": "sha1-Z7N60e/a+9g69MNrQMGJ7khmyWk=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-uglify/-/rollup-plugin-uglify-4.0.0.tgz", + "integrity": "sha512-f6W31EQLzxSEYfN3x6/lyljHqXSoCjXKcTsnwz3evQvHgU1+qTzU2SE0SIG7tbAvaCewp2UaZ5x3k6nYsxOP9A==", "dev": true, "requires": { - "uglify-js": "3.3.8" + "@babel/code-frame": "7.0.0-beta.48", + "uglify-js": "3.3.27" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0-beta.48", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.48.tgz", + "integrity": "sha512-zwyam2DrinaJfhmCaajZT2yRCoN3cE8dwW7uVWaHay9z2Dwn9Pidnekkz9g7kXbg2qfVqmgDKeUTVZ4+bMlfZA==", + "dev": true, + "requires": { + "@babel/highlight": "7.0.0-beta.48" + } + }, + "@babel/highlight": { + "version": "7.0.0-beta.48", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.48.tgz", + "integrity": "sha512-nvyRS7pcfayjRjMg9KXCUdVcLq8/njx2ktvckovIx7cMJ9+aY58735xTIC0adkPZ13KJHbik6fJMfxO8PPZaLg==", + "dev": true, + "requires": { + "chalk": "2.4.1", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.4.0" + } + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + } } }, "rollup-plugin-vue": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/rollup-plugin-vue/-/rollup-plugin-vue-2.5.4.tgz", - "integrity": "sha512-iioOlxZeIrAGLHgtDRoX5kb2aIVBUiy2P774lCYOUzlHgYizC6IGv8bR0ws8k7wgfDukiRyhfTb0KhB6CIrMfg==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/rollup-plugin-vue/-/rollup-plugin-vue-4.1.4.tgz", + "integrity": "sha512-4u9FLqZGiX9C2h+FXRVTbUV5e2rUtABZ+J0onMQG8j28BAUV8fICfv6+1RX7o6XKcMS3dDMEfvW/i9azbfCV/g==", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "camelcase": "4.1.0", - "coffee-script": "1.12.7", - "coffeescript-compiler": "0.1.1", - "de-indent": "1.0.2", - "debug": "3.1.0", + "@babel/runtime": "7.0.0-beta.48", + "@vue/component-compiler": "3.3.2", + "@vue/component-compiler-utils": "1.3.0", + "debug": "2.6.9", "hash-sum": "1.0.2", - "html-minifier": "3.5.8", - "less": "2.7.3", - "magic-string": "0.22.4", - "merge-options": "1.0.0", - "node-sass": "4.7.2", - "parse5": "3.0.3", - "postcss": "5.2.18", - "postcss-load-config": "1.2.0", - "postcss-modules": "0.6.4", - "postcss-selector-parser": "2.2.3", - "posthtml": "0.10.1", - "posthtml-attrs-parser": "0.1.1", - "pug": "2.0.0-rc.4", - "rollup-pluginutils": "2.0.1", - "stylus": "0.54.5", - "typescript": "2.6.2", - "vue-template-compiler": "2.5.13", - "vue-template-es2015-compiler": "1.6.0", - "vue-template-validator": "1.1.5" + "postcss": "6.0.22", + "querystring": "0.2.0", + "rollup-pluginutils": "2.3.0" }, "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "ms": "2.0.0" + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.4.0" } }, "estree-walker": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.3.1.tgz", - "integrity": "sha1-5rGlHPcpJSTnI3wxLl/mZgwc4ao=", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.5.2.tgz", + "integrity": "sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig==", "dev": true }, + "postcss": { + "version": "6.0.22", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", + "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", + "dev": true, + "requires": { + "chalk": "2.4.1", + "source-map": "0.6.1", + "supports-color": "5.4.0" + } + }, "rollup-pluginutils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.0.1.tgz", - "integrity": "sha1-fslbNXP2VDpGpkYb2afFRFJdD8A=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.3.0.tgz", + "integrity": "sha512-xB6hsRsjdJdIYWEyYUJy/3ki5g69wrf0luHPGNK3ZSocV6HLNfio59l3dZ3TL4xUwEKgROhFi9jOCt6c5gfUWw==", "dev": true, "requires": { - "estree-walker": "0.3.1", + "estree-walker": "0.5.2", "micromatch": "2.3.11" } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } } } }, @@ -9350,6 +11143,15 @@ "is-promise": "2.1.0" } }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "1.2.0" + } + }, "rx-lite": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", @@ -9365,54 +11167,84 @@ "rx-lite": "4.0.8" } }, + "rxjs": { + "version": "5.5.11", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.11.tgz", + "integrity": "sha512-3bjO7UwWfA2CV7lmwYMBzj4fQ6Cq+ftHc2MvUe+WMS7wcdJ1LosDWmdjPQanYp2dBRj572p7PeU81JUxHKOcBA==", + "dev": true, + "requires": { + "symbol-observable": "1.0.1" + } + }, "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, - "sass-graph": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", - "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, - "optional": true, "requires": { - "glob": "7.1.2", - "lodash": "4.17.4", - "scss-tokenizer": "0.2.3", - "yargs": "7.1.0" + "ret": "0.1.15" } }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true }, - "scss-tokenizer": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", - "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "schema-utils": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz", + "integrity": "sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==", "dev": true, - "optional": true, "requires": { - "js-base64": "2.4.2", - "source-map": "0.4.4" + "ajv": "6.5.0", + "ajv-keywords": "3.2.0" }, "dependencies": { - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "ajv": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.0.tgz", + "integrity": "sha512-VDUX1oSajablmiyFyED9L1DFndg0P9h7p1F+NO8FkIzei6EPrR6Zu1n18rd5P8PqaSRd/FrWv3G1TVBqpM83gA==", "dev": true, - "optional": true, "requires": { - "amdefine": "1.0.1" + "fast-deep-equal": "2.0.1", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1", + "uri-js": "4.2.1" } + }, + "ajv-keywords": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", + "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true } } }, + "scoped-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/scoped-regex/-/scoped-regex-1.0.0.tgz", + "integrity": "sha1-o0a7Gs1CB65wvXwMfKnlZra63bg=", + "dev": true + }, "select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", @@ -9420,12 +11252,12 @@ "dev": true }, "selfsigned": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.1.tgz", - "integrity": "sha1-v4y3uDJWxFUeMTR8YxF3jbme7FI=", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.3.tgz", + "integrity": "sha512-vmZenZ+8Al3NLHkWnhBQ0x6BkML1eCP2xEi3JE+f3D9wW9fipD9NNJHYtE9XJM4TsPaHGZJIamrSI6MTg1dU2Q==", "dev": true, "requires": { - "node-forge": "0.6.33" + "node-forge": "0.7.5" } }, "semver": { @@ -9435,9 +11267,9 @@ "dev": true }, "send": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", - "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", "dev": true, "requires": { "debug": "2.6.9", @@ -9447,12 +11279,12 @@ "escape-html": "1.0.3", "etag": "1.8.1", "fresh": "0.5.2", - "http-errors": "1.6.2", + "http-errors": "1.6.3", "mime": "1.4.1", "ms": "2.0.0", "on-finished": "2.3.0", "range-parser": "1.2.0", - "statuses": "1.3.1" + "statuses": "1.4.0" }, "dependencies": { "ee-first": { @@ -9461,12 +11293,6 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", "dev": true }, - "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", - "dev": true - }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -9478,31 +11304,37 @@ } } }, + "serialize-javascript": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.5.0.tgz", + "integrity": "sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ==", + "dev": true + }, "serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", "dev": true, "requires": { - "accepts": "1.3.4", + "accepts": "1.3.5", "batch": "0.6.1", "debug": "2.6.9", "escape-html": "1.0.3", - "http-errors": "1.6.2", - "mime-types": "2.1.17", + "http-errors": "1.6.3", + "mime-types": "2.1.18", "parseurl": "1.3.2" } }, "serve-static": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz", - "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", "dev": true, "requires": { "encodeurl": "1.0.2", "escape-html": "1.0.3", "parseurl": "1.3.2", - "send": "0.16.1" + "send": "0.16.2" } }, "set-blocking": { @@ -9511,15 +11343,6 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, - "set-getter": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/set-getter/-/set-getter-0.1.0.tgz", - "integrity": "sha1-12nBgsnVpR9AkUXy+6guXoboA3Y=", - "dev": true, - "requires": { - "to-object-path": "0.3.0" - } - }, "set-immediate-shim": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", @@ -9536,6 +11359,17 @@ "is-extendable": "0.1.1", "is-plain-object": "2.0.4", "split-string": "3.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } } }, "setimmediate": { @@ -9551,13 +11385,13 @@ "dev": true }, "sha.js": { - "version": "2.4.10", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.10.tgz", - "integrity": "sha512-vnwmrFDlOExK4Nm16J2KMWHLrp14lBrjxMxBJpu++EnsuBmpiYaM/MEs46Vxxm/4FvdP5yTwuCTO9it5FSjrqA==", + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "dev": true, "requires": { "inherits": "2.0.3", - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, "shebang-command": { @@ -9575,6 +11409,17 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, + "shelljs": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.2.tgz", + "integrity": "sha512-pRXeNrCA2Wd9itwhvLp5LZQvPJ0wU6bcjaTMywHHGX5XWhVN2nzSu7WV0q+oUY7mGK3mgSkDDzP3MgjqdyIgbQ==", + "dev": true, + "requires": { + "glob": "7.1.2", + "interpret": "1.1.0", + "rechoir": "0.6.2" + } + }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", @@ -9596,10 +11441,16 @@ "is-fullwidth-code-point": "2.0.0" } }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "dev": true + }, "snapdragon": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.1.tgz", - "integrity": "sha1-4StUh/re0+PeoKyR6UAL91tAE3A=", + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", "dev": true, "requires": { "base": "0.11.2", @@ -9608,8 +11459,8 @@ "extend-shallow": "2.0.1", "map-cache": "0.2.2", "source-map": "0.5.7", - "source-map-resolve": "0.5.1", - "use": "2.0.2" + "source-map-resolve": "0.5.2", + "use": "3.1.0" }, "dependencies": { "define-property": { @@ -9621,62 +11472,14 @@ "is-descriptor": "0.1.6" } }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-extendable": "0.1.1" } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true } } }, @@ -9691,30 +11494,65 @@ "snapdragon-util": "3.0.1" }, "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "3.2.2" + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } } }, - "sntp": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "dev": true, "requires": { - "hoek": "2.16.3" + "kind-of": "3.2.2" } }, "sockjs": { @@ -9738,7 +11576,7 @@ "faye-websocket": "0.11.1", "inherits": "2.0.3", "json3": "3.3.2", - "url-parse": "1.2.0" + "url-parse": "1.4.0" }, "dependencies": { "faye-websocket": { @@ -9774,12 +11612,12 @@ "dev": true }, "source-map-resolve": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", - "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", "dev": true, "requires": { - "atob": "2.0.3", + "atob": "2.1.1", "decode-uri-component": "0.2.0", "resolve-url": "0.2.1", "source-map-url": "0.4.0", @@ -9802,24 +11640,35 @@ "dev": true }, "spdx-correct": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", "dev": true, "requires": { - "spdx-license-ids": "1.2.2" + "spdx-expression-parse": "3.0.0", + "spdx-license-ids": "3.0.0" } }, - "spdx-expression-parse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "spdx-exceptions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", "dev": true }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "2.1.0", + "spdx-license-ids": "3.0.0" + } + }, "spdx-license-ids": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", "dev": true }, "spdy": { @@ -9831,24 +11680,24 @@ "debug": "2.6.9", "handle-thing": "1.2.5", "http-deceiver": "1.2.7", - "safe-buffer": "5.1.1", + "safe-buffer": "5.1.2", "select-hose": "2.0.0", - "spdy-transport": "2.0.20" + "spdy-transport": "2.1.0" } }, "spdy-transport": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.0.20.tgz", - "integrity": "sha1-c15yBUxIayNU/onnAiVgBKOazk0=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.1.0.tgz", + "integrity": "sha512-bpUeGpZcmZ692rrTiqf9/2EUakI6/kXX1Rpe0ib/DyOzbiexVfXkw6GnvI9hVGvIwVaUhkaBojjCZwLNRGQg1g==", "dev": true, "requires": { "debug": "2.6.9", "detect-node": "2.0.3", "hpack.js": "2.1.6", - "obuf": "1.1.1", - "readable-stream": "2.3.3", - "safe-buffer": "5.1.1", - "wbuf": "1.7.2" + "obuf": "1.1.2", + "readable-stream": "2.3.6", + "safe-buffer": "5.1.2", + "wbuf": "1.7.3" } }, "split-string": { @@ -9858,27 +11707,6 @@ "dev": true, "requires": { "extend-shallow": "3.0.2" - }, - "dependencies": { - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "1.0.0", - "is-extendable": "1.0.1" - } - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "2.0.4" - } - } } }, "sprintf-js": { @@ -9887,28 +11715,13 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "sshpk": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", - "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "ssri": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", + "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", "dev": true, "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } + "safe-buffer": "5.1.2" } }, "static-extend": { @@ -9929,81 +11742,14 @@ "requires": { "is-descriptor": "0.1.6" } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true } } }, "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", - "dev": true - }, - "stdout-stream": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz", - "integrity": "sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=", - "dev": true, - "optional": true, - "requires": { - "readable-stream": "2.3.3" - } + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true }, "stream-browserify": { "version": "2.0.1", @@ -10012,22 +11758,38 @@ "dev": true, "requires": { "inherits": "2.0.3", - "readable-stream": "2.3.3" + "readable-stream": "2.3.6" + } + }, + "stream-each": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.2.tgz", + "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "stream-shift": "1.0.0" } }, "stream-http": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.0.tgz", - "integrity": "sha512-sZOFxI/5xw058XIRHl4dU3dZ+TTOIGJR78Dvo0oEAejIt4ou27k+3ne1zYmCV+v7UucbxIFQuOgnkTVHh8YPnw==", + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.2.tgz", + "integrity": "sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA==", "dev": true, "requires": { "builtin-status-codes": "3.0.0", "inherits": "2.0.3", - "readable-stream": "2.3.3", + "readable-stream": "2.3.6", "to-arraybuffer": "1.0.1", "xtend": "4.0.1" } }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, "strict-uri-encode": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", @@ -10040,6 +11802,12 @@ "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=", "dev": true }, + "string-template": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", + "integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=", + "dev": true + }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -10068,20 +11836,14 @@ } }, "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, - "stringstream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", - "dev": true - }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -10097,6 +11859,27 @@ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true }, + "strip-bom-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz", + "integrity": "sha1-+H217yYT9paKpUWr/h7HKLaoKco=", + "dev": true, + "requires": { + "first-chunk-stream": "2.0.0", + "strip-bom": "2.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + } + } + }, "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", @@ -10118,55 +11901,6 @@ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true }, - "stylus": { - "version": "0.54.5", - "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", - "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=", - "dev": true, - "optional": true, - "requires": { - "css-parse": "1.7.0", - "debug": "2.6.9", - "glob": "7.0.6", - "mkdirp": "0.5.1", - "sax": "0.5.8", - "source-map": "0.1.43" - }, - "dependencies": { - "glob": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", - "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", - "dev": true, - "optional": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "sax": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz", - "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=", - "dev": true, - "optional": true - }, - "source-map": { - "version": "0.1.43", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", - "dev": true, - "optional": true, - "requires": { - "amdefine": "1.0.1" - } - } - } - }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", @@ -10188,6 +11922,12 @@ "whet.extend": "0.9.9" } }, + "symbol-observable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", + "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", + "dev": true + }, "table": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", @@ -10196,59 +11936,65 @@ "requires": { "ajv": "5.5.2", "ajv-keywords": "2.1.1", - "chalk": "2.3.0", - "lodash": "4.17.4", + "chalk": "2.4.1", + "lodash": "4.17.10", "slice-ansi": "1.0.0", "string-width": "2.1.1" }, "dependencies": { "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "1.9.1" } }, "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { - "ansi-styles": "3.2.0", + "ansi-styles": "3.2.1", "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" + "supports-color": "5.4.0" } }, "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { - "has-flag": "2.0.0" + "has-flag": "3.0.0" } } } }, "tapable": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.8.tgz", - "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.0.0.tgz", + "integrity": "sha512-dQRhbNQkRnaqauC7WqSJ21EEksgT0fYZX2lqXzGkpo8JNig9zGZTYoMGvyI2nWmXlE2VSVXVDu7wLVGu/mQEsg==", "dev": true }, - "tar": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "temp": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", + "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=", "dev": true, - "optional": true, "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" + "os-tmpdir": "1.0.2", + "rimraf": "2.2.8" + }, + "dependencies": { + "rimraf": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", + "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", + "dev": true + } } }, "text-table": { @@ -10257,28 +12003,44 @@ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, + "textextensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-2.2.0.tgz", + "integrity": "sha512-j5EMxnryTvKxwH2Cq+Pb43tsf6sdEgw6Pdwxk83mPaq0ToeFJt6WE4J3s5BqY7vmjlLgkgXvhtXUxo80FyBhCA==", + "dev": true + }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.6", + "xtend": "4.0.1" + } + }, "thunky": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz", - "integrity": "sha1-vzAUaCTituZ7Dy16Ssi+smkIaE4=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.2.tgz", + "integrity": "sha1-qGLgGOP7HqLsP85dVWBc9X8kc3E=", "dev": true }, - "time-stamp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.0.0.tgz", - "integrity": "sha1-lcakRTDhW6jW9KPsuMOj+sRto1c=", + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", "dev": true }, "timers-browserify": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.6.tgz", - "integrity": "sha512-HQ3nbYRAowdVd0ckGFvmJPPCOH/CHleFN/Y0YQCX1DVaB7t+KFvisuyN09fuP8Jtp1CpfSh8O8bMkHbdbPe6Pw==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", + "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", "dev": true, "requires": { "setimmediate": "1.0.5" @@ -10315,121 +12077,38 @@ } }, "to-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.1.tgz", - "integrity": "sha1-FTWL7kosg712N3uh3ASdDxiDeq4=", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "dev": true, "requires": { - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "regex-not": "1.0.0" + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "regex-not": "1.0.2", + "safe-regex": "1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "3.0.0", + "repeat-string": "1.6.1" }, "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "is-descriptor": "0.1.6" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "3.0.0", - "repeat-string": "1.6.1" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" + "kind-of": "3.2.2" } } } }, - "token-stream": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-0.0.1.tgz", - "integrity": "sha1-zu78cXp2xDFvEm0LnbqlXX598Bo=", - "dev": true, - "optional": true - }, - "tough-cookie": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", - "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", - "dev": true, - "requires": { - "punycode": "1.4.1" - } - }, "trim-newlines": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", @@ -10442,31 +12121,11 @@ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, - "true-case-path": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.2.tgz", - "integrity": "sha1-fskRMJJHZsf1c74wIMNPj9/QDWI=", - "dev": true, - "optional": true, - "requires": { - "glob": "6.0.4" - }, - "dependencies": { - "glob": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", - "dev": true, - "optional": true, - "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - } - } + "tslib": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.1.tgz", + "integrity": "sha512-avfPS28HmGLLc2o4elcc2EIq2FcH++Yo5YxpBZi9Yw93BCTGFthI4HPE4Rpep6vSYQaK8e69PelM44tPj+RaQg==", + "dev": true }, "tty-browserify": { "version": "0.0.0", @@ -10474,23 +12133,6 @@ "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", "dev": true }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "5.1.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true, - "optional": true - }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", @@ -10501,13 +12143,13 @@ } }, "type-is": { - "version": "1.6.15", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", - "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", + "version": "1.6.16", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", + "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", "dev": true, "requires": { "media-typer": "0.3.0", - "mime-types": "2.1.17" + "mime-types": "2.1.18" } }, "typedarray": { @@ -10516,19 +12158,13 @@ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, - "typescript": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.6.2.tgz", - "integrity": "sha1-PFtv1/beCRQmkCfwPAlGdY92c6Q=", - "dev": true - }, "uglify-js": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.8.tgz", - "integrity": "sha512-X0jAGtpSZRtd4RhbVNuGHyjZNa/h2MrVkKrR3Ew5iL2MJw6d7FmBke+fhVCALWySv1ygHnjjROG1KI1FAPvddw==", + "version": "3.3.27", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.27.tgz", + "integrity": "sha512-O94wxMSb3td/TlofkITYvYIlvIVdldvNXDVRekzK13CQZuL37ua4nrdXX0Ro7MapfUVzglRHs0/+imPRUdOghg==", "dev": true, "requires": { - "commander": "2.13.0", + "commander": "2.15.1", "source-map": "0.6.1" }, "dependencies": { @@ -10540,72 +12176,52 @@ } } }, - "uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "dev": true, - "optional": true - }, "uglifyjs-webpack-plugin": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", - "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.5.tgz", + "integrity": "sha512-hIQJ1yxAPhEA2yW/i7Fr+SXZVMp+VEI3d42RTHBgQd2yhp/1UdBcR3QEWPV5ahBxlqQDMEMTuTEvDHSFINfwSw==", "dev": true, "requires": { - "source-map": "0.5.7", - "uglify-js": "2.8.29", - "webpack-sources": "1.1.0" + "cacache": "10.0.4", + "find-cache-dir": "1.0.0", + "schema-utils": "0.4.5", + "serialize-javascript": "1.5.0", + "source-map": "0.6.1", + "uglify-es": "3.3.9", + "webpack-sources": "1.1.0", + "worker-farm": "1.6.0" }, "dependencies": { - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", "dev": true }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "dev": true, - "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", - "wordwrap": "0.0.2" - } - }, - "uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "dev": true, - "requires": { - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" - } - }, - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "uglify-es": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", "dev": true, "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", - "window-size": "0.1.0" + "commander": "2.13.0", + "source-map": "0.6.1" } } } }, + "underscore": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", + "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", + "dev": true + }, "union-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", @@ -10618,6 +12234,15 @@ "set-value": "0.4.3" }, "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, "set-value": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", @@ -10638,21 +12263,30 @@ "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", "dev": true }, - "uniqid": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz", - "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=", - "dev": true, - "requires": { - "macaddress": "0.2.8" - } - }, "uniqs": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", "dev": true }, + "unique-filename": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz", + "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", + "dev": true, + "requires": { + "unique-slug": "2.0.0" + } + }, + "unique-slug": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz", + "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", + "dev": true, + "requires": { + "imurmurhash": "0.1.4" + } + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -10705,12 +12339,27 @@ } } }, - "upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "untildify": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-3.0.3.tgz", + "integrity": "sha512-iSk/J8efr8uPT/Z4eSUywnqyrQU7DSdMfdqK4iWEaUVVmcP5JcnpRqmVMwcwcnmI1ATFNgC5V90u09tBynNFKA==", + "dev": true + }, + "upath": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", + "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", "dev": true }, + "uri-js": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.1.tgz", + "integrity": "sha512-jpKCA3HjsBfSDOEgxRDAxQCNyHfCPSbq57PqCkd3gAyBuPb3IWxw54EHncqESznIdqSetHfw3D7ylThu2Kcc9A==", + "dev": true, + "requires": { + "punycode": "2.1.1" + } + }, "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", @@ -10735,115 +12384,59 @@ } } }, + "url-join": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz", + "integrity": "sha1-TTNA6AfTdzvamZH4MFrNzCpmXSo=", + "dev": true + }, "url-parse": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.2.0.tgz", - "integrity": "sha512-DT1XbYAfmQP65M/mE6OALxmXzZ/z1+e5zk2TcSKe/KiYbNGZxgtttzC0mR/sjopbpOXcbniq7eIKmocJnUWlEw==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.0.tgz", + "integrity": "sha512-ERuGxDiQ6Xw/agN4tuoCRbmwRuZP0cJ1lJxJubXr5Q/5cDa78+Dc4wfvtxzhzhkm5VvmW6Mf8EVj9SPGN4l8Lg==", "dev": true, "requires": { - "querystringify": "1.0.0", + "querystringify": "2.0.0", "requires-port": "1.0.0" + } + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, + "requires": { + "prepend-http": "2.0.0" }, "dependencies": { - "querystringify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz", - "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=", + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", "dev": true } } }, + "url-to-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", + "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", + "dev": true + }, "use": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/use/-/use-2.0.2.tgz", - "integrity": "sha1-riig1y+TvyJCKhii43mZMRLeyOg=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", + "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", "dev": true, "requires": { - "define-property": "0.2.5", - "isobject": "3.0.1", - "lazy-cache": "2.0.2" + "kind-of": "6.0.2" }, "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true - }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "dev": true, - "requires": { - "set-getter": "0.1.0" - } } } }, @@ -10882,14 +12475,20 @@ "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", "dev": true }, - "validate-npm-package-license": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "v8-compile-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.0.tgz", + "integrity": "sha512-qNdTUMaCjPs4eEnM3W9H94R3sU70YCuT+/ST7nUf+id1bVOrdjrpUaeZLqPBPRph3hsgn4a4BvwpxhHZx+oSDg==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", "dev": true, "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" + "spdx-correct": "3.0.0", + "spdx-expression-parse": "3.0.0" } }, "vary": { @@ -10899,27 +12498,50 @@ "dev": true }, "vendors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.1.tgz", - "integrity": "sha1-N61zyO5Bf7PVgOeFMSMH0nSEfyI=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.2.tgz", + "integrity": "sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ==", "dev": true }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "vinyl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "dev": true, + "requires": { + "clone": "1.0.4", + "clone-stats": "0.0.1", + "replace-ext": "0.0.1" + } + }, + "vinyl-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vinyl-file/-/vinyl-file-2.0.0.tgz", + "integrity": "sha1-p+v1/779obfRjRQPyweyI++2dRo=", "dev": true, "requires": { - "assert-plus": "1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "1.3.0" + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0", + "strip-bom-stream": "2.0.0", + "vinyl": "1.2.0" }, "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } } } }, @@ -10938,25 +12560,18 @@ "indexof": "0.0.1" } }, - "void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", - "dev": true, - "optional": true - }, "vue-eslint-parser": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-2.0.2.tgz", - "integrity": "sha512-MQE1Tl4kYhp51opFMtRcZuyrFru/erpRI82w96tPiSnhcwK3QjJejAEJ5RlLcLU07Ua7A1WvhXG3i2KFveeGsA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-2.0.3.tgz", + "integrity": "sha512-ZezcU71Owm84xVF6gfurBQUGg8WQ+WZGxgDEQu1IHFBZNx7BFZg3L1yHxrCBNNwbwFtE1GuvfJKMtb6Xuwc/Bw==", "dev": true, "requires": { "debug": "3.1.0", "eslint-scope": "3.7.1", "eslint-visitor-keys": "1.0.0", - "espree": "3.5.2", - "esquery": "1.0.0", - "lodash": "4.17.4" + "espree": "3.5.4", + "esquery": "1.0.1", + "lodash": "4.17.10" }, "dependencies": { "debug": { @@ -10971,95 +12586,28 @@ } }, "vue-hot-reload-api": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.2.4.tgz", - "integrity": "sha512-e+ThJMYmZg4D9UnrLcr6LQxGu6YlcxkrmZGPCyIN4malcNhdeGGKxmFuM5y6ICMJJxQywLfT8MM1rYZr4LpeLw==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.0.tgz", + "integrity": "sha512-2j/t+wIbyVMP5NvctQoSUvLkYKoWAAk2QlQiilrM2a6/ulzFgdcLUJfTvs4XQ/3eZhHiBmmEojbjmM4AzZj8JA==", "dev": true }, "vue-loader": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-13.7.0.tgz", - "integrity": "sha512-kDXRgglOOltghngrDFS/YfFew7e0d8fkvPHLYAfLgur7GW0cBt+J0fpBReWY2pixA09dL13abfE4fECyRH4HGg==", + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.2.0.tgz", + "integrity": "sha512-vJuybfEVtYU2HZUqUHMiqBU1/9K2HFplbsRJMca6B2hPNQt5Kx24mrVK9Ej+vlgM+3zf+7WIKKQPjJwvdHbkdA==", "dev": true, "requires": { - "consolidate": "0.14.5", + "@vue/component-compiler-utils": "1.3.0", "hash-sum": "1.0.2", "loader-utils": "1.1.0", - "lru-cache": "4.1.1", - "postcss": "6.0.16", - "postcss-load-config": "1.2.0", - "postcss-selector-parser": "2.2.3", - "prettier": "1.10.2", - "resolve": "1.5.0", - "source-map": "0.6.1", - "vue-hot-reload-api": "2.2.4", - "vue-style-loader": "3.1.1", - "vue-template-es2015-compiler": "1.6.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "dev": true, - "requires": { - "color-convert": "1.9.1" - } - }, - "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", - "dev": true, - "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" - }, - "dependencies": { - "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", - "dev": true, - "requires": { - "has-flag": "2.0.0" - } - } - } - }, - "postcss": { - "version": "6.0.16", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.16.tgz", - "integrity": "sha512-m758RWPmSjFH/2MyyG3UOW1fgYbR9rtdzz5UNJnlm7OLtu4B2h9C6gi+bE4qFKghsBRFfZT8NzoQBs6JhLotoA==", - "dev": true, - "requires": { - "chalk": "2.3.0", - "source-map": "0.6.1", - "supports-color": "5.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.1.0.tgz", - "integrity": "sha512-Ry0AwkoKjDpVKK4sV4h6o3UJmNRbjYm2uXhwfj3J56lMVdvnUNqzQVRztOOMGQ++w1K/TjNDFvpJk0F/LoeBCQ==", - "dev": true, - "requires": { - "has-flag": "2.0.0" - } - } + "vue-hot-reload-api": "2.3.0", + "vue-style-loader": "4.1.0" } }, "vue-style-loader": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-3.1.1.tgz", - "integrity": "sha512-AX0tRYm5sQUn2G1gYwyFhreU5/2+oFEf0ddsiF1SyRv6bycY1ntqNu7r3CF92KxTXbmRzfm9bVz3Ys/xm+kQQg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.0.tgz", + "integrity": "sha512-IsSiXDrLW2QIjyBsCqa35e45l5AceMbJ2jO8DxoEQv75xu/UmtXkSC0ybESq/LpbmmIW47MAWDQvErUw+Hrz/A==", "dev": true, "requires": { "hash-sum": "1.0.2", @@ -11067,9 +12615,9 @@ } }, "vue-template-compiler": { - "version": "2.5.13", - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.5.13.tgz", - "integrity": "sha512-15HWSgIxrGUcV0v7QRen2Y3fQsbgxXwMvjT/5XKMO0ANmaCcNh7y2OeIDTAuSGeosjb9+E1Pn2PHZ61VQWEgBQ==", + "version": "2.5.16", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.5.16.tgz", + "integrity": "sha512-ZbuhCcF/hTYmldoUOVcu2fcbeSAZnfzwDskGduOrnjBiIWHgELAd+R8nAtX80aZkceWDKGQ6N9/0/EUpt+l22A==", "dev": true, "requires": { "de-indent": "1.0.2", @@ -11082,210 +12630,86 @@ "integrity": "sha512-x3LV3wdmmERhVCYy3quqA57NJW7F3i6faas++pJQWtknWT+n7k30F4TVdHvCLn48peTJFRvCpxs3UuFPqgeELg==", "dev": true }, - "vue-template-validator": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/vue-template-validator/-/vue-template-validator-1.1.5.tgz", - "integrity": "sha1-ItHud9BkfBqxT/frAYZZQtmzxFg=", + "watchpack": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", + "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", "dev": true, "requires": { - "chalk": "1.1.3" + "chokidar": "2.0.3", + "graceful-fs": "4.1.11", + "neo-async": "2.5.1" } }, - "watchpack": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz", - "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=", + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", "dev": true, "requires": { - "async": "2.6.0", - "chokidar": "1.7.0", - "graceful-fs": "4.1.11" + "minimalistic-assert": "1.0.1" } }, - "wbuf": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.2.tgz", - "integrity": "sha1-1pe5nx9ZUS3ydRvkJ2nBWAtYAf4=", + "webassemblyjs": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webassemblyjs/-/webassemblyjs-1.4.3.tgz", + "integrity": "sha512-4lOV1Lv6olz0PJkDGQEp82HempAn147e6BXijWDzz9g7/2nSebVP9GVg62Fz5ZAs55mxq13GA0XLyvY8XkyDjg==", "dev": true, "requires": { - "minimalistic-assert": "1.0.0" + "@webassemblyjs/ast": "1.4.3", + "@webassemblyjs/validation": "1.4.3", + "@webassemblyjs/wasm-parser": "1.4.3", + "@webassemblyjs/wast-parser": "1.4.3", + "long": "3.2.0" } }, "webpack": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.10.0.tgz", - "integrity": "sha512-fxxKXoicjdXNUMY7LIdY89tkJJJ0m1Oo8PQutZ5rLgWbV5QVKI15Cn7+/IHnRTd3vfKfiwBx6SBqlorAuNA8LA==", - "dev": true, - "requires": { - "acorn": "5.3.0", - "acorn-dynamic-import": "2.0.2", - "ajv": "5.5.2", - "ajv-keywords": "2.1.1", - "async": "2.6.0", - "enhanced-resolve": "3.4.1", - "escope": "3.6.0", - "interpret": "1.1.0", - "json-loader": "0.5.7", - "json5": "0.5.1", + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.8.3.tgz", + "integrity": "sha512-/hfAjBISycdK597lxONjKEFX7dSIU1PsYwC3XlXUXoykWBlv9QV5HnO+ql3HvrrgfBJ7WXdnjO9iGPR2aAc5sw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.4.3", + "@webassemblyjs/wasm-edit": "1.4.3", + "@webassemblyjs/wasm-parser": "1.4.3", + "acorn": "5.5.3", + "acorn-dynamic-import": "3.0.0", + "ajv": "6.5.0", + "ajv-keywords": "3.2.0", + "chrome-trace-event": "0.1.3", + "enhanced-resolve": "4.0.0", + "eslint-scope": "3.7.1", "loader-runner": "2.3.0", "loader-utils": "1.1.0", "memory-fs": "0.4.1", + "micromatch": "3.1.10", "mkdirp": "0.5.1", + "neo-async": "2.5.1", "node-libs-browser": "2.1.0", - "source-map": "0.5.7", - "supports-color": "4.5.0", - "tapable": "0.2.8", - "uglifyjs-webpack-plugin": "0.4.6", - "watchpack": "1.4.0", - "webpack-sources": "1.1.0", - "yargs": "8.0.2" + "schema-utils": "0.4.5", + "tapable": "1.0.0", + "uglifyjs-webpack-plugin": "1.2.5", + "watchpack": "1.6.0", + "webpack-sources": "1.1.0" }, "dependencies": { - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "dev": true, - "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" - } - }, - "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", - "dev": true, - "requires": { - "has-flag": "2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "yargs": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", - "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", - "dev": true, - "requires": { - "camelcase": "4.1.0", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "read-pkg-up": "2.0.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "7.0.0" - } - }, - "yargs-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", - "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "ajv": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.0.tgz", + "integrity": "sha512-VDUX1oSajablmiyFyED9L1DFndg0P9h7p1F+NO8FkIzei6EPrR6Zu1n18rd5P8PqaSRd/FrWv3G1TVBqpM83gA==", "dev": true, "requires": { - "camelcase": "4.1.0" + "fast-deep-equal": "2.0.1", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1", + "uri-js": "4.2.1" } - } - } - }, - "webpack-body-parser": { - "version": "1.11.110", - "resolved": "https://registry.npmjs.org/webpack-body-parser/-/webpack-body-parser-1.11.110.tgz", - "integrity": "sha1-+klBhRiITDvAm1YQeSFC2qaR6qs=", - "dev": true, - "requires": { - "bytes": "1.0.0", - "iconv-lite": "0.4.7", - "media-typer": "0.3.0", - "on-finished": "2.2.1", - "qs": "2.3.3", - "querystring": "0.2.0", - "raw-body": "1.3.3", - "type-is": "1.6.15" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.7.tgz", - "integrity": "sha1-idMv7IIb+Fl/RGCbS8Cb7VwgmiM=", - "dev": true }, - "qs": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-2.3.3.tgz", - "integrity": "sha1-6eha2+ddoLvkyOBHaghikPhjtAQ=", + "ajv-keywords": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", "dev": true - } - } - }, - "webpack-dev-middleware": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz", - "integrity": "sha512-FCrqPy1yy/sN6U/SaEZcHKRXGlqU0DUaEBL45jkUYoB8foVb6wCnbIJ1HKIx+qUFTW+3JpVcCJCxZ8VATL4e+A==", - "dev": true, - "requires": { - "memory-fs": "0.4.1", - "mime": "1.6.0", - "path-is-absolute": "1.0.1", - "range-parser": "1.2.0", - "time-stamp": "2.0.0" - } - }, - "webpack-dev-server": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.11.1.tgz", - "integrity": "sha512-ombhu5KsO/85sVshIDTyQ5HF3xjZR3N0sf5Ao6h3vFwpNyzInEzA1GV3QPVjTMLTNckp8PjfG1PFGznzBwS5lg==", - "dev": true, - "requires": { - "ansi-html": "0.0.7", - "array-includes": "3.0.3", - "bonjour": "3.5.0", - "chokidar": "2.0.0", - "compression": "1.7.1", - "connect-history-api-fallback": "1.5.0", - "debug": "3.1.0", - "del": "3.0.0", - "express": "4.16.2", - "html-entities": "1.2.1", - "http-proxy-middleware": "0.17.4", - "import-local": "1.0.0", - "internal-ip": "1.2.0", - "ip": "1.1.5", - "killable": "1.0.0", - "loglevel": "1.6.1", - "opn": "5.2.0", - "portfinder": "1.0.13", - "selfsigned": "1.10.1", - "serve-index": "1.9.1", - "sockjs": "0.3.19", - "sockjs-client": "1.1.4", - "spdy": "3.4.7", - "strip-ansi": "3.0.1", - "supports-color": "5.1.0", - "webpack-dev-middleware": "1.12.2", - "yargs": "6.6.0" - }, - "dependencies": { - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "3.1.5", - "normalize-path": "2.1.1" - } }, "arr-diff": { "version": "4.0.0", @@ -11300,70 +12724,32 @@ "dev": true }, "braces": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.0.tgz", - "integrity": "sha512-P4O8UQRdGiMLWSizsApmXVQDBS6KCt7dSexgLKBmH5Hr1CZq7vsnscFh8oR1sP1ab1Zj0uCHCEzZeV6SfUf3rA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { "arr-flatten": "1.1.0", "array-unique": "0.3.2", - "define-property": "1.0.0", "extend-shallow": "2.0.1", "fill-range": "4.0.0", "isobject": "3.0.1", "repeat-element": "1.1.2", - "snapdragon": "0.8.1", + "snapdragon": "0.8.2", "snapdragon-node": "2.1.1", "split-string": "3.1.0", - "to-regex": "3.0.1" - } - }, - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true - }, - "chokidar": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.0.tgz", - "integrity": "sha512-OgXCNv2U6TnG04D3tth0gsvdbV4zdbxFG3sYUqcoQMoEFVd1j1pZR6TZ8iknC45o9IJ6PeQI/J6wT/+cHcniAw==", - "dev": true, - "requires": { - "anymatch": "2.0.0", - "async-each": "1.0.1", - "braces": "2.3.0", - "fsevents": "1.1.3", - "glob-parent": "3.1.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "4.0.0", - "normalize-path": "2.1.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" - } - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "del": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", - "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", - "dev": true, - "requires": { - "globby": "6.1.0", - "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.0", - "p-map": "1.2.0", - "pify": "3.0.0", - "rimraf": "2.6.2" + "to-regex": "3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } } }, "expand-brackets": { @@ -11376,20 +12762,11 @@ "define-property": "0.2.5", "extend-shallow": "2.0.1", "posix-character-classes": "0.1.1", - "regex-not": "1.0.0", - "snapdragon": "0.8.1", - "to-regex": "3.0.1" + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "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" - } - }, "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", @@ -11398,170 +12775,167 @@ "requires": { "is-descriptor": "0.1.6" } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.0", - "snapdragon": "0.8.1", - "to-regex": "3.0.1" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "3.1.0", - "path-dirname": "1.0.2" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extglob": "2.1.1" + "is-extendable": "0.1.1" } - } - } - }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "1.0.2", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "dev": true } } }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { - "kind-of": "3.2.2" + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" } } } }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { - "kind-of": "3.2.2" + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" }, "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-extendable": "0.1.1" } } } }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } + "kind-of": "6.0.2" } }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-fullwidth-code-point": { + "is-data-descriptor": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "kind-of": "6.0.2" } }, - "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-extglob": "2.1.1" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" } }, "is-number": { @@ -11596,165 +12970,422 @@ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, "micromatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.5.tgz", - "integrity": "sha512-ykttrLPQrz1PUJcXjwsTUjGoPJ64StIGNE2lGVD1c9CuguJ+L7/navsE8IcDNndOoCMvYV0qc/exfVbMHkUhvA==", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, "requires": { "arr-diff": "4.0.0", "array-unique": "0.3.2", - "braces": "2.3.0", - "define-property": "1.0.0", - "extend-shallow": "2.0.1", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", "extglob": "2.0.4", "fragment-cache": "0.2.1", "kind-of": "6.0.2", - "nanomatch": "1.2.7", + "nanomatch": "1.2.9", "object.pick": "1.3.0", - "regex-not": "1.0.0", - "snapdragon": "0.8.1", - "to-regex": "3.0.1" + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" } + } + } + }, + "webpack-addons": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/webpack-addons/-/webpack-addons-1.1.5.tgz", + "integrity": "sha512-MGO0nVniCLFAQz1qv22zM02QPjcpAoJdy7ED0i3Zy7SY1IecgXCm460ib7H/Wq7e9oL5VL6S2BxaObxwIcag0g==", + "dev": true, + "requires": { + "jscodeshift": "0.4.1" + }, + "dependencies": { + "ast-types": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.10.1.tgz", + "integrity": "sha512-UY7+9DPzlJ9VM8eY0b2TUZcZvF+1pO0hzMtAyjBYKhOmnvRlqYNYnWdtsMj0V16CGaMlpL0G1jnLbLo4AyotuQ==", + "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=", + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "jscodeshift": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.4.1.tgz", + "integrity": "sha512-iOX6If+hsw0q99V3n31t4f5VlD1TQZddH08xbT65ZqA7T4Vkx68emrDZMUOLVvCEAJ6NpAk7DECe3fjC/t52AQ==", "dev": true, "requires": { - "pinkie-promise": "2.0.1" + "async": "1.5.2", + "babel-plugin-transform-flow-strip-types": "6.22.0", + "babel-preset-es2015": "6.24.1", + "babel-preset-stage-1": "6.24.1", + "babel-register": "6.26.0", + "babylon": "6.18.0", + "colors": "1.1.2", + "flow-parser": "0.73.0", + "lodash": "4.17.10", + "micromatch": "2.3.11", + "node-dir": "0.1.8", + "nomnom": "1.8.1", + "recast": "0.12.9", + "temp": "0.8.3", + "write-file-atomic": "1.3.4" } }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "recast": { + "version": "0.12.9", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.12.9.tgz", + "integrity": "sha512-y7ANxCWmMW8xLOaiopiRDlyjQ9ajKRENBH+2wjntIbk3A6ZR1+BLQttkmSHMY7Arl+AAZFwJ10grg2T6f1WI8A==", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } + "ast-types": "0.10.1", + "core-js": "2.5.6", + "esprima": "4.0.0", + "private": "0.1.8", + "source-map": "0.6.1" } }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "webpack-body-parser": { + "version": "1.11.110", + "resolved": "https://registry.npmjs.org/webpack-body-parser/-/webpack-body-parser-1.11.110.tgz", + "integrity": "sha1-+klBhRiITDvAm1YQeSFC2qaR6qs=", + "dev": true, + "requires": { + "bytes": "1.0.0", + "iconv-lite": "0.4.7", + "media-typer": "0.3.0", + "on-finished": "2.2.1", + "qs": "2.3.3", + "querystring": "0.2.0", + "raw-body": "1.3.3", + "type-is": "1.6.16" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.7.tgz", + "integrity": "sha1-idMv7IIb+Fl/RGCbS8Cb7VwgmiM=", + "dev": true + } + } + }, + "webpack-cli": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-2.1.4.tgz", + "integrity": "sha512-dcxBcTPhKczWHYE9jh8MoHGQFuJxfqshZ3XSNFZ8o34heVvkqNvSRbMKy17NML+XUea7CXLzHWDg7a0GsBp7Pg==", + "dev": true, + "requires": { + "chalk": "2.4.1", + "cross-spawn": "6.0.5", + "diff": "3.5.0", + "enhanced-resolve": "4.0.0", + "envinfo": "5.8.1", + "glob-all": "3.1.0", + "global-modules": "1.0.0", + "got": "8.3.1", + "import-local": "1.0.0", + "inquirer": "5.2.0", + "interpret": "1.1.0", + "jscodeshift": "0.5.0", + "listr": "0.14.1", + "loader-utils": "1.1.0", + "lodash": "4.17.10", + "log-symbols": "2.2.0", + "mkdirp": "0.5.1", + "p-each-series": "1.0.0", + "p-lazy": "1.0.0", + "prettier": "1.12.1", + "supports-color": "5.4.0", + "v8-compile-cache": "2.0.0", + "webpack-addons": "1.1.5", + "yargs": "11.1.0", + "yeoman-environment": "2.1.1", + "yeoman-generator": "2.0.5" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.4.0", - "path-type": "1.1.0" + "color-convert": "1.9.1" } }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.4.0" } }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "nice-try": "1.0.4", + "path-key": "2.0.1", + "semver": "5.5.0", + "shebang-command": "1.2.0", + "which": "1.3.0" } }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "inquirer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", + "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==", "dev": true, "requires": { - "is-utf8": "0.2.1" + "ansi-escapes": "3.1.0", + "chalk": "2.4.1", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "2.2.0", + "figures": "2.0.0", + "lodash": "4.17.10", + "mute-stream": "0.0.7", + "run-async": "2.3.0", + "rxjs": "5.5.11", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" } }, "supports-color": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.1.0.tgz", - "integrity": "sha512-Ry0AwkoKjDpVKK4sV4h6o3UJmNRbjYm2uXhwfj3J56lMVdvnUNqzQVRztOOMGQ++w1K/TjNDFvpJk0F/LoeBCQ==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { - "has-flag": "2.0.0" + "has-flag": "3.0.0" } }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, "yargs": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", - "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", + "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", "dev": true, "requires": { - "camelcase": "3.0.0", - "cliui": "3.2.0", + "cliui": "4.1.0", "decamelize": "1.2.0", + "find-up": "2.1.0", "get-caller-file": "1.0.2", - "os-locale": "1.4.0", - "read-pkg-up": "1.0.1", + "os-locale": "2.1.0", "require-directory": "2.1.1", "require-main-filename": "1.0.1", "set-blocking": "2.0.0", - "string-width": "1.0.2", - "which-module": "1.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", "y18n": "3.2.1", - "yargs-parser": "4.2.1" + "yargs-parser": "9.0.2" + } + } + } + }, + "webpack-dev-middleware": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.1.3.tgz", + "integrity": "sha512-I6Mmy/QjWU/kXwCSFGaiOoL5YEQIVmbb0o45xMoCyQAg/mClqZVTcsX327sPfekDyJWpCxb+04whNyLOIxpJdQ==", + "dev": true, + "requires": { + "loud-rejection": "1.6.0", + "memory-fs": "0.4.1", + "mime": "2.3.1", + "path-is-absolute": "1.0.1", + "range-parser": "1.2.0", + "url-join": "4.0.0", + "webpack-log": "1.2.0" + }, + "dependencies": { + "mime": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", + "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==", + "dev": true + } + } + }, + "webpack-dev-server": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.4.tgz", + "integrity": "sha512-itcIUDFkHuj1/QQxzUFOEXXmxOj5bku2ScLEsOFPapnq2JRTm58gPdtnBphBJOKL2+M3p6+xygL64bI+3eyzzw==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "array-includes": "3.0.3", + "bonjour": "3.5.0", + "chokidar": "2.0.3", + "compression": "1.7.2", + "connect-history-api-fallback": "1.5.0", + "debug": "3.1.0", + "del": "3.0.0", + "express": "4.16.3", + "html-entities": "1.2.1", + "http-proxy-middleware": "0.18.0", + "import-local": "1.0.0", + "internal-ip": "1.2.0", + "ip": "1.1.5", + "killable": "1.0.0", + "loglevel": "1.6.1", + "opn": "5.3.0", + "portfinder": "1.0.13", + "selfsigned": "1.10.3", + "serve-index": "1.9.1", + "sockjs": "0.3.19", + "sockjs-client": "1.1.4", + "spdy": "3.4.7", + "strip-ansi": "3.0.1", + "supports-color": "5.4.0", + "webpack-dev-middleware": "3.1.3", + "webpack-log": "1.2.0", + "yargs": "11.0.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "del": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "dev": true, + "requires": { + "globby": "6.1.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.1", + "p-map": "1.2.0", + "pify": "3.0.0", + "rimraf": "2.6.2" + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + } + } + }, + "webpack-log": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-1.2.0.tgz", + "integrity": "sha512-U9AnICnu50HXtiqiDxuli5gLB5PGBo7VvcHx36jRZHwK4vzOYLbImqT4lwWwoMHdQWwEKw736fCHEekokTEKHA==", + "dev": true, + "requires": { + "chalk": "2.4.1", + "log-symbols": "2.2.0", + "loglevelnext": "1.0.5", + "uuid": "3.2.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "1.9.1" } }, - "yargs-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", - "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.4.0" + } + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { - "camelcase": "3.0.0" + "has-flag": "3.0.0" } } } }, "webpack-merge": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.1.tgz", - "integrity": "sha512-geQsZ86YkXOVOjvPC5yv3JSNnL6/X3Kzh935AQ/gJNEYXEfJDQFu/sdFuktS9OW2JcH/SJec8TGfRdrpHshH7A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.2.tgz", + "integrity": "sha512-/0QYwW/H1N/CdXYA2PNPVbsxO3u2Fpz34vs72xm03SRfg6bMNGfMJIQEpQjKRvkG2JvT6oRJFpDtSrwbX8Jzvw==", "dev": true, "requires": { - "lodash": "4.17.4" + "lodash": "4.17.10" } }, "webpack-sources": { @@ -11781,7 +13412,7 @@ "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", "dev": true, "requires": { - "http-parser-js": "0.4.9", + "http-parser-js": "0.4.13", "websocket-extensions": "0.1.3" } }, @@ -11791,90 +13422,42 @@ "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", "dev": true }, - "whet.extend": { - "version": "0.9.9", - "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", - "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=", - "dev": true - }, - "which": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", - "dev": true, - "requires": { - "isexe": "2.0.0" - } - }, - "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", - "dev": true - }, - "wide-align": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", - "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", - "dev": true, - "requires": { - "string-width": "1.0.2" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - } - } - }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "whet.extend": { + "version": "0.9.9", + "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", + "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=", "dev": true }, - "with": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/with/-/with-5.1.1.tgz", - "integrity": "sha1-+k2qktrzLE6pTtRTyB8EaGtXXf4=", + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "dev": true, - "optional": true, "requires": { - "acorn": "3.3.0", - "acorn-globals": "3.1.0" - }, - "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true, - "optional": true - } + "isexe": "2.0.0" } }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", "dev": true }, + "worker-farm": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", + "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", + "dev": true, + "requires": { + "errno": "0.1.7" + } + }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", @@ -11922,11 +13505,16 @@ "mkdirp": "0.5.1" } }, - "xml-char-classes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/xml-char-classes/-/xml-char-classes-1.0.0.tgz", - "integrity": "sha1-ZGV4SKIP/F31g6Qq2KJ3tFErvE0=", - "dev": true + "write-file-atomic": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } }, "xtend": { "version": "4.0.1", @@ -11935,9 +13523,9 @@ "dev": true }, "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", "dev": true }, "yallist": { @@ -11947,160 +13535,327 @@ "dev": true }, "yargs": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", - "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz", + "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", "dev": true, - "optional": true, "requires": { - "camelcase": "3.0.0", - "cliui": "3.2.0", + "cliui": "4.1.0", "decamelize": "1.2.0", + "find-up": "2.1.0", "get-caller-file": "1.0.2", - "os-locale": "1.4.0", - "read-pkg-up": "1.0.1", + "os-locale": "2.1.0", "require-directory": "2.1.1", "require-main-filename": "1.0.1", "set-blocking": "2.0.0", - "string-width": "1.0.2", - "which-module": "1.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", "y18n": "3.2.1", - "yargs-parser": "5.0.0" + "yargs-parser": "9.0.2" + }, + "dependencies": { + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + } + } + }, + "yargs-parser": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "dev": true, + "requires": { + "camelcase": "4.1.0" }, "dependencies": { "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + } + } + }, + "yeoman-environment": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/yeoman-environment/-/yeoman-environment-2.1.1.tgz", + "integrity": "sha512-IBLwCUrJrDxBYuwdYm1wuF3O/CR2LpXR0rFS684QOrU6x69DPPrsdd20dZOFaedZ/M9sON7po73WhO3I1CbgNQ==", + "dev": true, + "requires": { + "chalk": "2.4.1", + "cross-spawn": "6.0.5", + "debug": "3.1.0", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "globby": "8.0.1", + "grouped-queue": "0.3.3", + "inquirer": "5.2.0", + "is-scoped": "1.0.0", + "lodash": "4.17.10", + "log-symbols": "2.2.0", + "mem-fs": "1.1.3", + "strip-ansi": "4.0.0", + "text-table": "0.2.0", + "untildify": "3.0.3" + }, + "dependencies": { + "ansi-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true, - "optional": true - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "optional": true, - "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" - } + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "optional": true, "requires": { - "number-is-nan": "1.0.1" + "color-convert": "1.9.1" } }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, - "optional": true, "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.4.0" } }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, - "optional": true, "requires": { - "pinkie-promise": "2.0.1" + "nice-try": "1.0.4", + "path-key": "2.0.1", + "semver": "5.5.0", + "shebang-command": "1.2.0", + "which": "1.3.0" } }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "dev": true, - "optional": true, "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "ms": "2.0.0" } }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "globby": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.1.tgz", + "integrity": "sha512-oMrYrJERnKBLXNLVTqhm3vPEdJ/b2ZE28xN4YARiix1NOIOBPEpOUnm844K1iu/BkphCaf2WNFwMszv8Soi1pw==", "dev": true, - "optional": true, "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.4.0", - "path-type": "1.1.0" + "array-union": "1.0.2", + "dir-glob": "2.0.0", + "fast-glob": "2.2.2", + "glob": "7.1.2", + "ignore": "3.3.8", + "pify": "3.0.0", + "slash": "1.0.0" } }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "inquirer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", + "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==", "dev": true, - "optional": true, "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" + "ansi-escapes": "3.1.0", + "chalk": "2.4.1", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "2.2.0", + "figures": "2.0.0", + "lodash": "4.17.10", + "mute-stream": "0.0.7", + "run-async": "2.3.0", + "rxjs": "5.5.11", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" } }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, - "optional": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "ansi-regex": "3.0.0" } }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, - "optional": true, "requires": { - "is-utf8": "0.2.1" + "has-flag": "3.0.0" } } } }, - "yargs-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", - "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "yeoman-generator": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/yeoman-generator/-/yeoman-generator-2.0.5.tgz", + "integrity": "sha512-rV6tJ8oYzm4mmdF2T3wjY+Q42jKF2YiiD0VKfJ8/0ZYwmhCKC9Xs2346HVLPj/xE13i68psnFJv7iS6gWRkeAg==", "dev": true, - "optional": true, "requires": { - "camelcase": "3.0.0" + "async": "2.6.1", + "chalk": "2.4.1", + "cli-table": "0.3.1", + "cross-spawn": "6.0.5", + "dargs": "5.1.0", + "dateformat": "3.0.3", + "debug": "3.1.0", + "detect-conflict": "1.0.1", + "error": "7.0.2", + "find-up": "2.1.0", + "github-username": "4.1.0", + "istextorbinary": "2.2.1", + "lodash": "4.17.10", + "make-dir": "1.3.0", + "mem-fs-editor": "4.0.2", + "minimist": "1.2.0", + "pretty-bytes": "4.0.2", + "read-chunk": "2.1.0", + "read-pkg-up": "3.0.0", + "rimraf": "2.6.2", + "run-async": "2.3.0", + "shelljs": "0.8.2", + "text-table": "0.2.0", + "through2": "2.0.3", + "yeoman-environment": "2.1.1" }, "dependencies": { - "camelcase": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "dev": true, + "requires": { + "lodash": "4.17.10" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.4.0" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "1.0.4", + "path-key": "2.0.1", + "semver": "5.5.0", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "4.0.0", + "pify": "3.0.0", + "strip-bom": "3.0.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "1.3.1", + "json-parse-better-errors": "1.0.2" + } + }, + "path-type": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, - "optional": true + "requires": { + "pify": "3.0.0" + } + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "4.0.0", + "normalize-package-data": "2.4.0", + "path-type": "3.0.0" + } + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "3.0.0" + } + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } } } } diff --git a/package.json b/package.json index cb249c8..3c13332 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "vue-upload-component", "description": "Vue.js file upload component, Multi-file upload, Upload directory, Drag upload, Drag the directory, Upload multiple files at the same time, html4 (IE 9), `PUT` method, Customize the filter", - "version": "2.8.6", + "version": "2.8.7", "author": "LianYue", "scripts": { "dev": "cross-env NODE_ENV=development webpack-dev-server", @@ -43,39 +43,42 @@ "homepage": "https://github.com/lian-yue/vue-upload-component#readme", "dependencies": {}, "devDependencies": { - "babel-core": "^6.26.0", - "babel-eslint": "^8.0.1", - "babel-loader": "^7.1.2", + "babel-core": "^6.26.3", + "babel-eslint": "^8.2.3", + "babel-loader": "^7.1.4", "babel-plugin-transform-runtime": "^6.23.0", - "babel-preset-env": "^1.6.0", + "babel-preset-env": "^1.7.0", "babel-preset-es2015": "^6.24.1", "babel-preset-es2017": "^6.24.1", "babel-preset-stage-0": "^6.24.1", "babel-runtime": "^6.26.0", - "cross-env": "^1.0.6", - "css-loader": "^0.28.7", - "eslint": "^4.8.0", - "eslint-config-standard": "^11.0.0-beta.0", - "eslint-loader": "^1.9.0", - "eslint-plugin-html": "^3.2.2", - "eslint-plugin-import": "^2.8.0", - "eslint-plugin-node": "^5.2.1", - "eslint-plugin-promise": "^3.6.0", - "eslint-plugin-standard": "^3.0.1", - "eslint-plugin-vue": "^3.13.0", + "cross-env": "^5.1.6", + "css-loader": "^0.28.11", + "eslint": "^4.19.1", + "eslint-config-standard": "^11.0.0", + "eslint-loader": "^2.0.0", + "eslint-plugin-html": "^4.0.3", + "eslint-plugin-import": "^2.12.0", + "eslint-plugin-node": "^6.0.1", + "eslint-plugin-promise": "^3.8.0", + "eslint-plugin-standard": "^3.1.0", + "eslint-plugin-vue": "^4.5.0", + "postcss": "^6.0.22", "raw-loader": "^0.5.1", - "rollup": "^0.50.0", - "rollup-plugin-babel": "^3.0.2", - "rollup-plugin-commonjs": "^8.2.1", - "rollup-plugin-node-resolve": "^3.0.0", - "rollup-plugin-uglify": "^2.0.1", - "rollup-plugin-vue": "^2.5.2", - "vue-hot-reload-api": "^2.1.1", - "vue-loader": "^13.0.5", - "vue-template-compiler": "^2.4.4", - "webpack": "^3.6.0", + "rollup": "^0.59.3", + "rollup-plugin-babel": "^3.0.4", + "rollup-plugin-commonjs": "^9.1.3", + "rollup-plugin-css-only": "^0.4.0", + "rollup-plugin-node-resolve": "^3.3.0", + "rollup-plugin-uglify": "^4.0.0", + "rollup-plugin-vue": "^4.1.4", + "vue-hot-reload-api": "^2.3.0", + "vue-loader": "^15.2.0", + "vue-template-compiler": "^2.5.16", + "webpack": "^4.8.3", "webpack-body-parser": "^1.11.110", - "webpack-dev-server": "^2.9.1", - "webpack-merge": "^4.1.0" + "webpack-cli": "^2.1.4", + "webpack-dev-server": "^3.1.4", + "webpack-merge": "^4.1.2" } } diff --git a/rollup.config.js b/rollup.config.js index e14712e..a034a50 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -1,9 +1,10 @@ import resolve from 'rollup-plugin-node-resolve' import commonjs from 'rollup-plugin-commonjs' import babel from 'rollup-plugin-babel' -import uglify from 'rollup-plugin-uglify' +import { uglify } from 'rollup-plugin-uglify' import vue from 'rollup-plugin-vue' import packageInfo from './package.json' +const pluginCSS = require('rollup-plugin-css-only') // const isDev = process.env.NODE_ENV === 'development' @@ -13,6 +14,8 @@ function baseConfig() { return { output: { format: 'umd', + sourcemap: true, + banner: `/*!\n * Name: ${packageInfo.name}\n * Version: ${packageInfo.version}\n * Author: ${packageInfo.author}\n */`, }, plugins: [ resolve({ @@ -29,8 +32,6 @@ function baseConfig() { ], }), ], - banner: `/*!\n * Name: ${packageInfo.name}\n * Version: ${packageInfo.version}\n * Author: ${packageInfo.author}\n */`, - sourcemap: true, } } @@ -40,7 +41,6 @@ config.output.file = 'dist/vue-upload-component.js' config.output.name = 'VueUploadComponent' config.plugins.push( vue({ - autoStyles: false, css: true, }), babel() @@ -52,7 +52,14 @@ configMin.output.file = 'dist/vue-upload-component.min.js' configMin.output.name = 'VueUploadComponent' configMin.plugins.push( vue({ - autoStyles: false, + sourceMap: true, + style: { + trim: true, + }, + template: { + isProduction: true, + optimizeSSR: true, + }, css: true, }), babel(), @@ -64,15 +71,25 @@ configMin.plugins.push( ) - let configPart = baseConfig() configPart.input = 'src/index.js' configPart.output.file = 'dist/vue-upload-component.part.js' configPart.output.name = 'VueUploadComponent' configPart.plugins.push( + pluginCSS({ + include: '**/*.css?*', + output: 'dist/vue-upload-component.part.css', + }), vue({ - autoStyles: false, - css: 'dist/vue-upload-component.part.css', + sourceMap: true, + style: { + trim: true, + }, + template: { + isProduction: true, + optimizeSSR: true, + }, + css: false, }), babel() ) diff --git a/webpack.config.js b/webpack.config.js index 808e6f6..7a8e696 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -6,6 +6,7 @@ const packageInfo = require('./package') const bodyParser = require('webpack-body-parser') const chunkUpload = require('./src/utils/chunkUpload') +const { VueLoaderPlugin } = require('vue-loader') process.env.NODE_ENV = process.env.NODE_ENV || 'production' @@ -13,6 +14,7 @@ const isDev = process.env.NODE_ENV === 'development' function baseConfig() { let config = { + mode: process.env.NODE_ENV === 'development' ? 'development' : 'production', output: { path: path.join(__dirname, 'dist'), publicPath: '/dist', @@ -95,6 +97,36 @@ function baseConfig() { }, ] }, + { + test: /\.css$/, + use: [ + { + loader: 'vue-style-loader', + }, + { + loader: 'css-loader', + options: { + minimize: !isDev, + }, + }, + ] + }, + { + test: /\.vue$/, + use: [ + { + loader: 'vue-loader', + options: { + preserveWhitespace: false, + cssModules: { + localIdentName: '[hash:base64:8]', + camelCase: true, + }, + }, + }, + ], + }, + /* { test: /\.vue$/, use: [ @@ -139,11 +171,13 @@ function baseConfig() { }, ] } + */ ] }, plugins: [ new webpack.BannerPlugin(`Name: ${packageInfo.name}\nVersion: ${packageInfo.version}\nAuthor: ${packageInfo.author}`), + new VueLoaderPlugin(), ], devtool: isDev ? 'eval-source-map' : 'source-map' }