diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..b47545f --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,45 @@ +module.exports = { + "env": { + "browser": true, + "es6": true + }, + "extends": [ + "eslint:recommended", + "plugin:vue/recommended" + ], + "parserOptions": { + "ecmaVersion": 2017, + "sourceType": "module" + }, + "globals": { + "$": true, + "Rails": true, + "Vue": true + }, + "rules": { + "indent": [ + "error", + 2 + ], + "linebreak-style": [ + "error", + "unix" + ], + "quotes": [ + "error", + "double" + ], + "semi": [ + "error", + "always" + ], + "no-console": [ + "off" + ], + "no-unused-vars": [ + "off", { + "argsIgnorePattern": "^_" + } + ] + } +}; diff --git a/.travis.yml b/.travis.yml index a568be0..43c85db 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,5 +21,5 @@ before_install: install: - bundle -v - gem i bundler - - sudo sh -c 'curl -L https://toolbelt.treasuredata.com/sh/install-ubuntu-trusty-td-agent2.sh | sh' + - sudo sh -c 'curl -L https://toolbelt.treasuredata.com/sh/install-ubuntu-trusty-td-agent3.sh | sh' - bin/setup diff --git a/app/javascript/packs/application.js b/app/javascript/packs/application.js index 2fbbe6c..54d0196 100644 --- a/app/javascript/packs/application.js +++ b/app/javascript/packs/application.js @@ -7,34 +7,34 @@ // To reference this file, add <%= javascript_pack_tag 'application' %> to the appropriate // layout file, like app/views/layouts/application.html.erb -console.log('Hello World from Webpacker') +console.log("Hello World from Webpacker"); -import jQuery from 'jquery/dist/jquery' +import jQuery from "jquery/dist/jquery"; -window.$ = jQuery -window.jQuery = jQuery +window.$ = jQuery; +window.jQuery = jQuery; -import Rails from 'rails-ujs/lib/assets/compiled/rails-ujs.js' +import Rails from "rails-ujs/lib/assets/compiled/rails-ujs.js"; -window.Rails = Rails -Rails.start() +window.Rails = Rails; +Rails.start(); -import 'popper.js/dist/popper' -import 'bootstrap/dist/js/bootstrap' -import 'datatables.net/js/jquery.dataTables' -import 'startbootstrap-sb-admin/js/sb-admin' -import 'startbootstrap-sb-admin/js/sb-admin-datatables' +import "popper.js/dist/popper"; +import "bootstrap/dist/js/bootstrap"; +import "datatables.net/js/jquery.dataTables"; +import "startbootstrap-sb-admin/js/sb-admin"; +import "startbootstrap-sb-admin/js/sb-admin-datatables"; -import Vue from 'vue/dist/vue.esm' +import Vue from "vue/dist/vue.esm"; -Vue.filter('to_json', function (value) { - return JSON.stringify(value); -}) +Vue.filter("to_json", function (value) { + return JSON.stringify(value); +}); -window.Vue = Vue +window.Vue = Vue; -import '../stylesheets/application.scss' +import "../stylesheets/application.scss"; $(document).ready(() => { - $("[data-toggle=tooltip]").tooltip() -}) + $("[data-toggle=tooltip]").tooltip(); +}); diff --git a/app/javascript/packs/aws_credential.js b/app/javascript/packs/aws_credential.js index e982cea..ecf6064 100644 --- a/app/javascript/packs/aws_credential.js +++ b/app/javascript/packs/aws_credential.js @@ -1,6 +1,6 @@ -'use strict' +"use strict"; -import ConfigField from './config_field' +import ConfigField from "./config_field"; const AwsCredential = { template: "#vue-aws-credential", @@ -22,12 +22,12 @@ const AwsCredential = { "instanceProfileCredentials", "sharedCredentials" ] - } + }; }, computed: { token: function() { - return Rails.csrfToken() + return Rails.csrfToken(); } }, @@ -37,7 +37,7 @@ const AwsCredential = { methods: { onChange: function() { - this.updateSection() + this.updateSection(); }, updateSection: function() { @@ -45,17 +45,17 @@ const AwsCredential = { method: "GET", url: "/api/config_definitions", headers: { - 'X-CSRF-Token': this.token + "X-CSRF-Token": this.token }, data: { type: this.pluginType, name: this.pluginName } }).then((data) => { - this.credentialOptions = data["awsCredentialOptions"][this.credentialType] - }) + this.credentialOptions = data["awsCredentialOptions"][this.credentialType]; + }); } } -} +}; -export { AwsCredential as default } +export { AwsCredential as default }; diff --git a/app/javascript/packs/codemirror.js b/app/javascript/packs/codemirror.js index 1830c3c..5ed3318 100644 --- a/app/javascript/packs/codemirror.js +++ b/app/javascript/packs/codemirror.js @@ -1,10 +1,12 @@ -import CodeMirror from 'codemirror/lib/codemirror' -import 'lodash/lodash' +/* global _ */ +"use strict"; +import CodeMirror from "codemirror/lib/codemirror"; +import "lodash/lodash"; // See: http://codemirror.net/doc/manual.html#modeapi // and sample mode files: https://github.com/codemirror/CodeMirror/tree/master/mode -CodeMirror.defineMode('fluentd', function(){ +CodeMirror.defineMode("fluentd", function(){ return { startState: function(aa){ return { "context" : null }; @@ -21,40 +23,34 @@ CodeMirror.defineMode('fluentd', function(){ } switch(stream.peek()){ - case "#": - stream.skipToEnd(); - return "comment"; - break; - case "<": - state.context = "inner-bracket"; - stream.pos += 1; + case "#": + stream.skipToEnd(); + return "comment"; + case "<": + state.context = "inner-bracket"; + stream.pos += 1; + return "keyword"; + case ">": + stream.pos += 1; + state.context = "inner-definition"; + return "keyword"; + default: + switch(state.context){ + case "inner-bracket": + stream.eat(/[^#<>]+/); return "keyword"; - break; - case ">": - stream.pos += 1; + case "inner-definition": + stream.eatWhile(/[^ \t#]/); + state.context = "inner-definition-keyword-appeared"; + return "variable"; + case "inner-definition-keyword-appeared": + stream.eatWhile(/[^#]/); state.context = "inner-definition"; - return "keyword"; - break; + return "builtin"; default: - switch(state.context){ - case "inner-bracket": - stream.eat(/[^#<>]+/); - return "keyword"; - break; - case "inner-definition": - var key = stream.eatWhile(/[^ \t#]/); - state.context = "inner-definition-keyword-appeared"; - return "variable"; - break; - case "inner-definition-keyword-appeared": - var key = stream.eatWhile(/[^#]/); - state.context = "inner-definition"; - return "builtin"; - break; - default: - stream.eat(/[^<>#]+/); - return "string"; - } + stream.eat(/[^<>#]+/); + return "string"; + } } } }; @@ -70,18 +66,18 @@ function codemirrorify(el) { } $(function(){ - $('.js-fluentd-config-editor').each(function(_, el){ + $(".js-fluentd-config-editor").each(function(_, el){ codemirrorify(el); }); }); -Vue.directive('config-editor', { +Vue.directive("config-editor", { bind: function(el, binding, vnode, oldVnode){ // NOTE: needed delay for waiting CodeMirror setup _.delay(function(textarea){ let cm = codemirrorify(textarea); // textarea.codemirror = cm; // for test, but doesn't work for now (working on Chrome, but Poltergeist not) - cm.on('change', function(code_mirror){ + cm.on("change", function(code_mirror){ // bridge Vue - CodeMirror world el.dataset.content = code_mirror.getValue(); }); diff --git a/app/javascript/packs/config_field.js b/app/javascript/packs/config_field.js index d8d9307..b747f32 100644 --- a/app/javascript/packs/config_field.js +++ b/app/javascript/packs/config_field.js @@ -1,5 +1,6 @@ -'use strict' -import 'lodash/lodash' +/* global _ */ +"use strict"; +import "lodash/lodash"; const ConfigField = { template: "#vue-config-field", @@ -16,77 +17,77 @@ const ConfigField = { expression: null, timeFormat: null, textValue: null, - } + }; }, filters: { humanize: function(value) { - return _.capitalize(value.replace(/_/g, " ")) + return _.capitalize(value.replace(/_/g, " ")); } }, mounted: function() { if (this.option.name === "expression") { - this.expression = this.initialExpression + this.expression = this.initialExpression; } else if (this.option.name === "time_format") { - this.timeFormat = this.initialTimeFormat + this.timeFormat = this.initialTimeFormat; } else { - this.textValue = this.initialTextValue || this.option.default + this.textValue = this.initialTextValue || this.option.default; } }, updated: function() { if (this.option.name === "expression") { - this.expression = this.initialExpression + this.expression = this.initialExpression; } if (this.option.name === "time_format") { - this.timeFormat = this.initialTimeFormat + this.timeFormat = this.initialTimeFormat; } this.$nextTick(() => { - console.log("config-field updated") - $("[data-toggle=tooltip]").tooltip("dispose") - $("[data-toggle=tooltip]").tooltip("enable") - }) + console.log("config-field updated"); + $("[data-toggle=tooltip]").tooltip("dispose"); + $("[data-toggle=tooltip]").tooltip("enable"); + }); }, watch: { - "expression": function(newValue, oldValue) { + "expression": function(_newValue, _oldValue) { this.$emit("change-parse-config", { "expression": this.expression, "timeFormat": this.timeFormat - }) + }); }, - "timeFormat": function(newValue, oldValue) { + "timeFormat": function(_newValue, _oldValue) { this.$emit("change-parse-config", { "expression": this.expression, "timeFormat": this.timeFormat - }) + }); } }, methods: { inputId: function(pluginType, option) { if (pluginType === "output") { - return `setting_${option.name}` + return `setting_${option.name}`; } else { - return `setting_${_.snakeCase(pluginType)}_0__${option.name}` + return `setting_${_.snakeCase(pluginType)}_0__${option.name}`; } }, inputName: function(pluginType, option) { if (pluginType === "output") { - return `setting[${option.name}]` + return `setting[${option.name}]`; } else { - return `setting[${_.snakeCase(pluginType)}[0]][${option.name}]` + return `setting[${_.snakeCase(pluginType)}[0]][${option.name}]`; } }, checked: function(checked) { if (checked === true || checked === "true") { - return "checked" + return "checked"; } else { - return "" + return ""; } } } -} +}; -export { ConfigField as default } +export { ConfigField as default }; diff --git a/app/javascript/packs/fluent_log.js b/app/javascript/packs/fluent_log.js index 4ac8aa6..d2b1ff5 100644 --- a/app/javascript/packs/fluent_log.js +++ b/app/javascript/packs/fluent_log.js @@ -1,15 +1,22 @@ -'use strict'; +"use strict"; $(document).ready(()=> { new Vue({ el: "#fluent-log", - props: ["logUrl", "initialAutoReload"], data: { + "logUrl": "", + "initialAutoReload": false, "autoFetch": false, "logs": [], "limit": 30, "processing": false }, + computed: { + isPresentedLogs: function(){ + return this.logs.length > 0; + } + }, + beforeMount: function() { this.logUrl = this.$el.attributes.logUrl.nodeValue; this.initialAutoReload = this.$el.attributes.initialAutoReload.nodeValue; @@ -36,12 +43,6 @@ $(document).ready(()=> { } }, - computed: { - isPresentedLogs: function(){ - return this.logs.length > 0; - } - }, - methods: { fetchLogs: function() { if(this.processing) return; @@ -54,7 +55,7 @@ $(document).ready(()=> { setTimeout(function(){ self.processing = false; }, 256); // delay to reduce flicking loading icon - })["catch"](function(error){ + })["catch"](function(_error){ self.processing = false; }); } diff --git a/app/javascript/packs/in_tail_parse.js b/app/javascript/packs/in_tail_parse.js index 0e69c4e..09f53a6 100644 --- a/app/javascript/packs/in_tail_parse.js +++ b/app/javascript/packs/in_tail_parse.js @@ -1,138 +1,137 @@ -'use strict' -import 'lodash/lodash' -import 'popper.js/dist/popper' -import 'bootstrap/dist/js/bootstrap' -import OwnedPluginForm from './owned_plugin_form' +/* global _ */ +"use strict"; +import "lodash/lodash"; +import "popper.js/dist/popper"; +import "bootstrap/dist/js/bootstrap"; +import OwnedPluginForm from "./owned_plugin_form"; $(document).ready(() => { new Vue({ - el: '#in-tail-parse', - props: [ - "path", - "parseType" - ], + el: "#in-tail-parse", + components: { + "owned-plugin-form": OwnedPluginForm + }, data: function() { return { - highlightedLines: null - } + "path": "", + "parseType": "", + "highlightedLines": null + }; }, computed: { token: function() { - return Rails.csrfToken() + return Rails.csrfToken(); } }, - components: { - 'owned-plugin-form': OwnedPluginForm - }, watch: { - 'parse.expression': function() { - console.log(`parse.expression: ${this.parse.expression}`) - this.preview() + "parse.expression": function() { + console.log(`parse.expression: ${this.parse.expression}`); + this.preview(); }, - 'parse.time_format': function() { - console.log(`parse.time_format: ${this.parse.time_format}`) - this.preview() + "parse.time_format": function() { + console.log(`parse.time_format: ${this.parse.time_format}`); + this.preview(); }, - 'parseType': function() { - this.preview() + "parseType": function() { + this.preview(); }, }, beforeMount: function() { this.path = this.$el.attributes.path.nodeValue; }, mounted: function() { - this.parse = {} + this.parse = {}; this.$on("hook:updated", () => { this.$nextTick(() => { - $("[data-toggle=tooltip]").tooltip("dispose") - $("[data-toggle=tooltip]").tooltip("enable") - }) - }) + $("[data-toggle=tooltip]").tooltip("dispose"); + $("[data-toggle=tooltip]").tooltip("enable"); + }); + }); }, methods: { onChangePluginName: function(name) { - console.log("#in-tail-parse onChangePluginName", name) - this.parseType = name - this.parse = {} // clear parser plugin configuration + console.log("#in-tail-parse onChangePluginName", name); + this.parseType = name; + this.parse = {}; // clear parser plugin configuration }, onChangeParseConfig: function(data) { - console.log("#in-tail-parse onChangeParseConfig", data) - _.merge(this.parse, data) - this.preview() + console.log("#in-tail-parse onChangeParseConfig", data); + _.merge(this.parse, data); + this.preview(); }, onChangeFormats: function(data) { - console.log("in_tail_parse:onChangeFormats", data) - _.merge(this.parse, data) - this.preview() + console.log("in_tail_parse:onChangeFormats", data); + _.merge(this.parse, data); + this.preview(); }, updateHighlightedLines: function(matches) { if (!matches) { - this.highlightedLines = null - return + this.highlightedLines = null; + return; } - let $container = $('
') + let $container = $("
"); _.each(matches, (match) => { - const colors = ["#ff9", "#cff", "#fcf", "#dfd"] - const whole = match.whole - let html = "" - let _matches = [] - let lastPos = 0 + const colors = ["#ff9", "#cff", "#fcf", "#dfd"]; + const whole = match.whole; + let html = ""; + let _matches = []; + let lastPos = 0; _.each(match.matches, (m) => { - let matched = m.matched + let matched = m.matched; if (!matched) { - return + return; } // Ignore empty matched with "foobar".match(/foo(.*?)bar/)[1] #=> "" if (matched.length === 0) { - return + return; } // rotate color - let currentColor = colors.shift() - colors.push(currentColor) + let currentColor = colors.shift(); + colors.push(currentColor); // create highlighted range HTML - let $highlighted = $("").text(matched) + let $highlighted = $("").text(matched); $highlighted.attr({ "class": "regexp-preview", "data-toggle": "tooltip", "data-placement": "top", "title": m.key, - 'style': 'background-color:' + currentColor - }) - let highlightedHtml = $highlighted.wrap("
").parent().html() + "style": "background-color:" + currentColor + }); + let highlightedHtml = $highlighted.wrap("
").parent().html(); let pos = { start: m.pos[0], end: m.pos[1] - } + }; if (pos.start > 0) { - html += _.escape(whole.substring(lastPos, pos.start)) + html += _.escape(whole.substring(lastPos, pos.start)); } - html += highlightedHtml - lastPos = pos.end - }) - html += whole.substring(lastPos) + html += highlightedHtml; + lastPos = pos.end; + }); + html += whole.substring(lastPos); - $container.append(html) - $container.append("
") - }) + $container.append(html); + $container.append("
"); + }); - this.highlightedLines = $container.html() - this.$emit("hook:updated") + this.highlightedLines = $container.html(); + this.$emit("hook:updated"); }, preview: function() { - console.log("preview!!!!") + console.log("preview!!!!"); if (this.previewAjax && this.previewAjax.state() === "pending") { - this.previewAjax.abort() + this.previewAjax.abort(); } this.previewAjax = $.ajax({ method: "POST", url: "/api/regexp_preview", headers: { - 'X-CSRF-Token': this.token + "X-CSRF-Token": this.token }, data: { parse_type: _.isEmpty(this.parseType) ? "regexp" : this.parseType, @@ -142,20 +141,20 @@ $(document).ready(() => { }).then( (result) => { if (result.matches) { - this.updateHighlightedLines(result.matches) + this.updateHighlightedLines(result.matches); } else { - console.error(result.error) - this.previewError = result.error + console.error(result.error); + this.previewError = result.error; } }, (error) => { - this.highlightedLines = null + this.highlightedLines = null; // console.error(error.responseText) if (error.stack) { - console.error(error.stack) + console.error(error.stack); } - }) + }); } } - }) -}) + }); +}); diff --git a/app/javascript/packs/nested_settings.js b/app/javascript/packs/nested_settings.js index 650a535..5a36b4d 100644 --- a/app/javascript/packs/nested_settings.js +++ b/app/javascript/packs/nested_settings.js @@ -1,40 +1,41 @@ -'use strict'; -import 'lodash/lodash'; +/* global _ */ +"use strict"; +import "lodash/lodash"; $(document).ready(()=> { - var $firstSetting = $('.js-nested-column.js-multiple:first'); + var $firstSetting = $(".js-nested-column.js-multiple:first"); if ($firstSetting.length === 0) { return; } var counter = 0; - $('.js-append', $firstSetting).on('click', function(ev){ + $(".js-append", $firstSetting).on("click", function(ev){ ev.preventDefault(); var $new = $firstSetting.clone(true); counter++; - var fields = $('input,select,textarea', $new); + var fields = $("input,select,textarea", $new); _.each(fields, function(elm){ elm.name = elm.name.replace("0", counter); }); - $('label', $new).each(function(_, label){ + $("label", $new).each(function(_, label){ var $label = $(label); - $label.attr('for', $label.attr('for').replace("0", counter)); + $label.attr("for", $label.attr("for").replace("0", counter)); }); - $('.js-remove', $new).show(); - $('.js-append', $new).hide(); + $(".js-remove", $new).show(); + $(".js-append", $new).hide(); $new.appendTo($firstSetting.parent()); }); - $('.js-remove').on('click', function(ev){ + $(".js-remove").on("click", function(ev){ ev.preventDefault(); - $(this).closest('.js-nested-column').remove(); + $(this).closest(".js-nested-column").remove(); }); - var $allSettings = $('.js-nested-column.js-multiple'); - $('.js-append', $allSettings).hide(); - $('.js-remove', $allSettings).show(); - $('.js-append', $firstSetting).show(); - $('.js-remove', $firstSetting).hide(); + var $allSettings = $(".js-nested-column.js-multiple"); + $(".js-append", $allSettings).hide(); + $(".js-remove", $allSettings).show(); + $(".js-append", $firstSetting).show(); + $(".js-remove", $firstSetting).hide(); }); diff --git a/app/javascript/packs/notification.js b/app/javascript/packs/notification.js index 08229a6..07955c7 100644 --- a/app/javascript/packs/notification.js +++ b/app/javascript/packs/notification.js @@ -1,13 +1,22 @@ -const POLLING_INTERVAL = 3 * 1000 -const POLLING_URL = "/polling/alerts" +const POLLING_INTERVAL = 3 * 1000; +const POLLING_URL = "/polling/alerts"; $(document).ready(()=> { - let alert = new Vue({ + new Vue({ el: "#vue-notification", data: { "alerts": [] }, + computed: { + alertsCount: { + get: function(){ return this.alerts.length; } + }, + hasAlerts: { + get: function(){ return this.alertsCount > 0; } + } + }, + created: function(){ let timer; let self = this; @@ -30,25 +39,16 @@ $(document).ready(()=> { } }); }; - window.addEventListener('focus', function(ev){ + window.addEventListener("focus", function(_event){ currentInterval = POLLING_INTERVAL; timer = setTimeout(fetch, currentInterval); }, false); - window.addEventListener('blur', function(ev){ + window.addEventListener("blur", function(_event){ clearTimeout(timer); }, false); fetch(); }, - computed: { - alertsCount: { - get: function(){ return this.alerts.length; } - }, - hasAlerts: { - get: function(){ return this.alertsCount > 0; } - } - }, - methods: { fetchAlertsData: function() { return new Promise(function(resolve, reject) { diff --git a/app/javascript/packs/out_forward_setting.js b/app/javascript/packs/out_forward_setting.js index 98b3546..fdc7ecc 100644 --- a/app/javascript/packs/out_forward_setting.js +++ b/app/javascript/packs/out_forward_setting.js @@ -1,7 +1,7 @@ -'use strict' +"use strict"; -import TransportConfig from "./transport_config" -import OwnedPluginForm from "./owned_plugin_form" +import TransportConfig from "./transport_config"; +import OwnedPluginForm from "./owned_plugin_form"; $(document).ready(() => { new Vue({ @@ -10,5 +10,5 @@ $(document).ready(() => { "transport-config": TransportConfig, "owned-plugin-form": OwnedPluginForm, } - }) -}) + }); +}); diff --git a/app/javascript/packs/out_s3_setting.js b/app/javascript/packs/out_s3_setting.js index 4c40bd1..fa71582 100644 --- a/app/javascript/packs/out_s3_setting.js +++ b/app/javascript/packs/out_s3_setting.js @@ -1,7 +1,7 @@ -'use strict' +"use strict"; -import OwnedPluginForm from "./owned_plugin_form" -import AwsCredential from "./aws_credential" +import OwnedPluginForm from "./owned_plugin_form"; +import AwsCredential from "./aws_credential"; $(document).ready(() => { new Vue({ @@ -10,5 +10,5 @@ $(document).ready(() => { "owned-plugin-form": OwnedPluginForm, "aws-credential": AwsCredential } - }) + }); }); diff --git a/app/javascript/packs/owned_plugin_form.js b/app/javascript/packs/owned_plugin_form.js index 0ec6d05..c5b04fa 100644 --- a/app/javascript/packs/owned_plugin_form.js +++ b/app/javascript/packs/owned_plugin_form.js @@ -1,7 +1,9 @@ -'use strict' +/* global _ */ +"use strict"; -import ParserMultilineForm from './parser_multiline_form' -import ConfigField from './config_field' +import "lodash/lodash"; +import ParserMultilineForm from "./parser_multiline_form"; +import ConfigField from "./config_field"; const OwnedPluginForm = { template: "#vue-owned-plugin-form", @@ -28,49 +30,49 @@ const OwnedPluginForm = { timeFormat: null, unwatchExpression: null, unwatchTimeFormat: null - } + }; }, computed: { token: function() { - return Rails.csrfToken() + return Rails.csrfToken(); } }, mounted: function() { - this.options = JSON.parse(this.optionsJson) - this.initialParams = JSON.parse(this.initialParamsJson || "{}") - this.pluginName = this.initialPluginName + this.options = JSON.parse(this.optionsJson); + this.initialParams = JSON.parse(this.initialParamsJson || "{}"); + this.pluginName = this.initialPluginName; this.$on("hook:updated", () => { - console.log("hook:updated") + console.log("hook:updated"); this.$nextTick(() => { - $("[data-toggle=tooltip]").tooltip("dispose") - $("[data-toggle=tooltip]").tooltip("enable") - }) - }) + $("[data-toggle=tooltip]").tooltip("dispose"); + $("[data-toggle=tooltip]").tooltip("enable"); + }); + }); this.$once("data-loaded", () => { - this.updateSection() - }) - this.$emit("data-loaded") + this.updateSection(); + }); + this.$emit("data-loaded"); }, methods: { onChange: function() { - this.updateSection() + this.updateSection(); if (this.pluginType === "parse") { - this.$emit("change-plugin-name", this.pluginName) + this.$emit("change-plugin-name", this.pluginName); } }, onChangeFormats: function(data) { - console.log("ownedPluginForm:onChangeFormats", data) - this.$emit("change-formats", data) + console.log("ownedPluginForm:onChangeFormats", data); + this.$emit("change-formats", data); }, onChangeParseConfig: function(data) { - console.log("ownedPluginForm:onChangeParseConfig", data) - this.expression = data.expression - this.timeFormat = data.timeFormat + console.log("ownedPluginForm:onChangeParseConfig", data); + this.expression = data.expression; + this.timeFormat = data.timeFormat; }, updateSection: function() { @@ -78,65 +80,65 @@ const OwnedPluginForm = { method: "GET", url: "/api/config_definitions", headers: { - 'X-CSRF-Token': this.token + "X-CSRF-Token": this.token }, data: { type: this.pluginType, name: this.pluginName } }).then((data) => { - this.commonOptions = data.commonOptions - let foundExpression = false - let foundTimeFormat = false + this.commonOptions = data.commonOptions; + let foundExpression = false; + let foundTimeFormat = false; _.each(this.commonOptions, (option) => { if (option.name === "expression") { - foundExpression = true - this.expression = option.default + foundExpression = true; + this.expression = option.default; this.unwatchExpression = this.$watch("expression", (newValue, oldValue) => { - console.log(newValue) + console.log(newValue); this.$emit("change-parse-config", { "expression": this.expression, "time_format": this.timeFormat - }) - }) + }); + }); } if (option.name === "time_format") { - foundTimeFormat = true - this.timeFormat = option.default - console.log(this.timeFormat) + foundTimeFormat = true; + this.timeFormat = option.default; + console.log(this.timeFormat); this.unwatchTimeFormat = this.$watch("timeFormat", (newValue, oldValue) => { - console.log({"watch time_format": newValue}) + console.log({"watch time_format": newValue}); this.$emit("change-parse-config", { "expression": this.expression, "time_format": this.timeFormat - }) - }) + }); + }); } if (!foundExpression && this.unwatchExpression) { - this.expression = null - this.unwatchExpression() - this.unwatchExpression = null + this.expression = null; + this.unwatchExpression(); + this.unwatchExpression = null; } if (!foundTimeFormat && this.unwatchTimeFormat) { - this.timeFormat = null - this.unwatchTimeFormat() - this.unwatchTimeFormat = null + this.timeFormat = null; + this.unwatchTimeFormat(); + this.unwatchTimeFormat = null; } - }) - }) + }); + }); }, selectId: function(pluginType) { - return `setting_${pluginType}_type` + return `setting_${pluginType}_type`; }, selectClass: function(pluginType) { - return `${pluginType} form-control` + return `${pluginType} form-control`; }, selectName: function(pluginType) { - return `setting[${pluginType}_type]` + return `setting[${pluginType}_type]`; } } -} +}; -export { OwnedPluginForm as default } +export { OwnedPluginForm as default }; diff --git a/app/javascript/packs/parser_multiline_form.js b/app/javascript/packs/parser_multiline_form.js index e80f0a7..549f5d8 100644 --- a/app/javascript/packs/parser_multiline_form.js +++ b/app/javascript/packs/parser_multiline_form.js @@ -1,5 +1,6 @@ -'use strict' -import 'lodash/lodash' +/* global _ */ +"use strict"; +import "lodash/lodash"; const ParserMultilineForm = { template: "#vue-parser-multiline-form", props: [ @@ -12,40 +13,40 @@ const ParserMultilineForm = { formatFirstline: "", formats: "", formatFirstlineDesc: "" - } + }; }, watch: { "formatFirstLine": function(newValue, oldValue) { - console.log(`watch formatFirstLine: ${newValue}`) + console.log(`watch formatFirstLine: ${newValue}`); this.$emit("change-formats", { "format_firstline": this.formatFirstline, "formats": this.formats - }) + }); }, "formats": function(newValue, oldValue) { - console.log(`watch formats: ${newValue}`) + console.log(`watch formats: ${newValue}`); this.$emit("change-formats", { "format_firstline": this.formatFirstline, "formats": this.formats - }) + }); }, "commonOptions": function(newValue, oldValue) { const option = _.find(newValue, (o) => { - return o.name === "format_firstline" - }) - this.formatFirstlineDesc = option.desc + return o.name === "format_firstline"; + }); + this.formatFirstlineDesc = option.desc; } }, methods: { textareaId: function(pluginType) { - return `setting_${pluginType}_0__formats` + return `setting_${pluginType}_0__formats`; }, textareaName: function(pluginType) { - return `setting[${pluginType}[0]][formats]` + return `setting[${pluginType}[0]][formats]`; } } -} +}; -export { ParserMultilineForm as default } +export { ParserMultilineForm as default }; diff --git a/app/javascript/packs/plugin_setting.js b/app/javascript/packs/plugin_setting.js index 675d4c9..266830d 100644 --- a/app/javascript/packs/plugin_setting.js +++ b/app/javascript/packs/plugin_setting.js @@ -1,19 +1,19 @@ -'use strict' -import 'lodash/lodash' -import 'popper.js/dist/popper' -import 'bootstrap/dist/js/bootstrap' -import OwnedPluginForm from './owned_plugin_form' +"use strict"; +import "lodash/lodash"; +import "popper.js/dist/popper"; +import "bootstrap/dist/js/bootstrap"; +import OwnedPluginForm from "./owned_plugin_form"; -window.addEventListener('load', () => { +window.addEventListener("load", () => { new Vue({ - el: '#plugin-setting', - data: () => { - return {} - }, + el: "#plugin-setting", components: { - 'owned-plugin-form': OwnedPluginForm + "owned-plugin-form": OwnedPluginForm + }, + data: () => { + return {}; }, methods: { } - }) -}) + }); +}); diff --git a/app/javascript/packs/settings.js b/app/javascript/packs/settings.js index e2b9400..456e7e4 100644 --- a/app/javascript/packs/settings.js +++ b/app/javascript/packs/settings.js @@ -1,10 +1,15 @@ +/* global _ */ +"use strict"; + +import "lodash/lodash"; + $(document).ready(() => { const SettingSection = { - template: '#vue-setting-section', - props: ['id', 'content', 'type', 'name', 'arg'], + template: "#vue-setting-section", + props: ["id", "content", "type", "name", "arg"], data: function() { return { - mode: 'default', + mode: "default", processing: false }; }, @@ -13,24 +18,24 @@ $(document).ready(() => { }, computed: { endpoint: function() { - return '/api/settings/' + this.id; + return "/api/settings/" + this.id; } }, methods: { - onCancel: function(event) { + onCancel: function(_event) { this.initialState(); }, - onEdit: function(ev) { + onEdit: function(_event) { this.mode = "edit"; }, - onDelete: function(ev) { + onDelete: function(_event) { if (!confirm("really?")) { return; } this.destroy(); }, - onSubmit: function(ev) { - const token = document.getElementsByName("csrf-token")[0].getAttribute('content'); + onSubmit: function(_event) { + const token = document.getElementsByName("csrf-token")[0].getAttribute("content"); this.processing = true; this.content = $(`#${this.id} textarea.form-control`)[0].dataset.content; $.ajax({ @@ -42,7 +47,7 @@ $(document).ready(() => { content: this.content }, headers: { - 'X-CSRF-Token': token + "X-CSRF-Token": token } }).then((data)=> { _.each(data, function(v,k){ @@ -55,10 +60,10 @@ $(document).ready(() => { }, initialState: function(){ this.processing = false; - this.mode = 'default'; + this.mode = "default"; }, destroy: function(){ - const token = document.getElementsByName("csrf-token")[0].getAttribute('content'); + const token = document.getElementsByName("csrf-token")[0].getAttribute("content"); $.ajax({ url: this.endpoint, method: "POST", @@ -67,7 +72,7 @@ $(document).ready(() => { id: this.id }, headers: { - 'X-CSRF-Token': token + "X-CSRF-Token": token } }).then(()=> { this.$parent.update(); @@ -78,6 +83,9 @@ $(document).ready(() => { new Vue({ el: "#vue-setting", + components: { + "setting-section": SettingSection + }, data: function(){ return { loaded: false, @@ -91,10 +99,7 @@ $(document).ready(() => { mounted: function() { this.$nextTick(() => { this.update(); - }) - }, - components: { - 'setting-section': SettingSection + }); }, methods: { update: function() { @@ -119,4 +124,4 @@ $(document).ready(() => { } } }); -}) +}); diff --git a/app/javascript/packs/transport_config.js b/app/javascript/packs/transport_config.js index 40e2967..fb11421 100644 --- a/app/javascript/packs/transport_config.js +++ b/app/javascript/packs/transport_config.js @@ -1,6 +1,8 @@ -'use strict' +/* global _ */ +"use strict"; -import ConfigField from './config_field' +import "lodash/lodash"; +import ConfigField from "./config_field"; const TransportConfig = { template: "#vue-transport-config", @@ -16,45 +18,45 @@ const TransportConfig = { transportType: "tcp", options: ["tcp", "tls"], tlsOptions: [] - } + }; }, computed: { token: function() { - return Rails.csrfToken() + return Rails.csrfToken(); } }, filters: { toUpper: function(value) { - return _.toUpper(value) + return _.toUpper(value); } }, mounted: function() { }, methods: { onChange: function() { - console.log(this.pluginType, this.pluginName, this.transportType) - this.updateSection() + console.log(this.pluginType, this.pluginName, this.transportType); + this.updateSection(); }, updateSection: function() { if (this.transportType === "tcp") { - return + return; } $.ajax({ method: "GET", url: "/api/config_definitions", headers: { - 'X-CSRF-Token': this.token + "X-CSRF-Token": this.token }, data: { type: this.pluginType, name: this.pluginName } }).then((data) => { - this.tlsOptions = data.tlsOptions - }) + this.tlsOptions = data.tlsOptions; + }); } } -} +}; -export { TransportConfig as default } +export { TransportConfig as default }; diff --git a/app/javascript/packs/transport_section.js b/app/javascript/packs/transport_section.js index a57b4c5..f888a82 100644 --- a/app/javascript/packs/transport_section.js +++ b/app/javascript/packs/transport_section.js @@ -1,19 +1,25 @@ -'use strict' -import 'lodash/lodash' +/* global _ */ +"use strict"; +import "lodash/lodash"; -import ConfigField from './config_field' +import ConfigField from "./config_field"; $(document).ready(() => { new Vue({ - el: '#transport-section', + el: "#transport-section", components: { "config-field": ConfigField }, - props: [ - "transportType", - ], - propsData: { - "transportType": "tcp" + filters: { + toUpper: function(value) { + return _.toUpper(value); + } + }, + props: { + "transportType": { + default: "tcp", + type: String + } }, data: function() { return { @@ -23,49 +29,44 @@ $(document).ready(() => { commonOptions: [], advancedOptions: [] - } + }; }, computed: { token: function() { - return Rails.csrfToken() - } - }, - filters: { - toUpper: function(value) { - return _.toUpper(value) + return Rails.csrfToken(); } }, beforeMount: function() { - this.pluginType = this.$el.attributes.pluginType.nodeValue - this.pluginName = this.$el.attributes.pluginName.nodeValue + this.pluginType = this.$el.attributes.pluginType.nodeValue; + this.pluginName = this.$el.attributes.pluginName.nodeValue; }, mounted: function() { }, methods: { onChange: function() { - console.log(this.pluginType, this.pluginName, this.transportType) - this.updateSection() + console.log(this.pluginType, this.pluginName, this.transportType); + this.updateSection(); }, updateSection: function() { if (this.transportType === "tcp") { - return + return; } $.ajax({ method: "GET", url: "/api/config_definitions", headers: { - 'X-CSRF-Token': this.token + "X-CSRF-Token": this.token }, data: { type: this.pluginType, name: this.pluginName } }).then((data) => { - this.commonOptions = data.transport.commonOptions - this.advancedOptions = data.transport.advancedOptions - }) + this.commonOptions = data.transport.commonOptions; + this.advancedOptions = data.transport.advancedOptions; + }); } } - }) -}) + }); +}); diff --git a/app/javascript/packs/treeview.js b/app/javascript/packs/treeview.js index bae4aed..a538073 100644 --- a/app/javascript/packs/treeview.js +++ b/app/javascript/packs/treeview.js @@ -1,5 +1,6 @@ -'use strict'; -import 'lodash/lodash'; +/* global _ */ +"use strict"; +import "lodash/lodash"; $(document).ready(() => { new Vue({ el: "#treeview", @@ -15,14 +16,6 @@ $(document).ready(() => { paths: [] }, - mounted: function(){ - console.log(this.initialPath); - this.path = this.initialPath; - this.fetchTree(); - this.$watch("path", this.fetchTree); - this.$watch("path", this.fetchPreview); - }, - computed: { selected: function(){ var self = this; @@ -55,6 +48,14 @@ $(document).ready(() => { } }, + mounted: function(){ + console.log(this.initialPath); + this.path = this.initialPath; + this.fetchTree(); + this.$watch("path", this.fetchTree); + this.$watch("path", this.fetchPreview); + }, + methods: { isAncestor: function(target) { return this.path.indexOf(target) === 0; diff --git a/package.json b/package.json index 2ab342f..874568d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,9 @@ { "name": "fluentd-ui", "private": true, + "scripts": { + "lint": "eslint app/javascript" + }, "dependencies": { "@rails/webpacker": "3.5", "codemirror": "^5.37.0", @@ -15,6 +18,8 @@ "vue-template-compiler": "^2.5.16" }, "devDependencies": { + "eslint": "^5.1.0", + "eslint-plugin-vue": "^4.7.0", "webpack-dev-server": "2.11.2" } } diff --git a/yarn.lock b/yarn.lock index 74ae856..f8617fc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -48,6 +48,22 @@ acorn-dynamic-import@^2.0.0: dependencies: acorn "^4.0.3" +acorn-jsx@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" + dependencies: + acorn "^3.0.4" + +acorn-jsx@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-4.1.1.tgz#e8e41e48ea2fe0c896740610ab6a4ffd8add225e" + dependencies: + acorn "^5.0.3" + +acorn@^3.0.4: + version "3.3.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" + acorn@^4.0.3: version "4.0.13" resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" @@ -56,7 +72,11 @@ acorn@^5.0.0: version "5.5.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.3.tgz#f473dd47e0277a08e28e9bec5aeeb04751f0b8c9" -ajv-keywords@^3.1.0: +acorn@^5.0.3, acorn@^5.5.0, acorn@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.1.tgz#f095829297706a7c9776958c0afc8930a9b9d9d8" + +ajv-keywords@^3.0.0, ajv-keywords@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a" @@ -69,6 +89,15 @@ ajv@^5.0.0, ajv@^5.1.0: fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.3.0" +ajv@^6.0.1, ajv@^6.5.0: + version "6.5.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.2.tgz#678495f9b82f7cca6be248dd92f59bff5e1f4360" + dependencies: + fast-deep-equal "^2.0.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.1" + ajv@^6.1.0: version "6.5.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.0.tgz#4c8affdf80887d8f132c9c52ab8a2dc4d0b7b24c" @@ -94,6 +123,10 @@ amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" +ansi-escapes@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" + ansi-html@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" @@ -195,6 +228,10 @@ array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" +arrify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + asn1.js@^4.0.0: version "4.10.1" resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" @@ -1066,6 +1103,16 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +caller-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" + dependencies: + callsites "^0.2.0" + +callsites@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" + camelcase-keys@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" @@ -1144,7 +1191,7 @@ chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.1, chalk@^2.4.1: +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" dependencies: @@ -1152,6 +1199,10 @@ chalk@^2.0.1, chalk@^2.4.1: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chardet@^0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" + chart.js@2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/chart.js/-/chart.js-2.7.1.tgz#ae90b4aa4ff1f02decd6b1a2a8dabfd73c9f9886" @@ -1201,6 +1252,10 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" +circular-json@^0.3.1: + version "0.3.3" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" + clap@^1.0.9: version "1.2.3" resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51" @@ -1216,6 +1271,16 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + dependencies: + restore-cursor "^2.0.0" + +cli-width@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + cliui@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" @@ -1516,6 +1581,16 @@ cross-spawn@^5.0.1: shebang-command "^1.2.0" which "^1.2.9" +cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + cryptiles@2.x.x: version "2.0.5" resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" @@ -1707,6 +1782,10 @@ deep-extend@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.5.1.tgz#b894a9dd90d3023fbf1c55a394fb858eb2066f1f" +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + define-properties@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" @@ -1737,6 +1816,18 @@ defined@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" +del@^2.0.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" + dependencies: + globby "^5.0.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + rimraf "^2.2.8" + del@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" @@ -1814,6 +1905,12 @@ dns-txt@^2.0.2: dependencies: buffer-indexof "^1.0.0" +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + dependencies: + esutils "^2.0.2" + domain-browser@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" @@ -1888,6 +1985,16 @@ error-ex@^1.2.0: dependencies: is-arrayish "^0.2.1" +es-abstract@^1.10.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165" + dependencies: + es-to-primitive "^1.1.1" + function-bind "^1.1.1" + has "^1.0.1" + is-callable "^1.1.3" + is-regex "^1.0.4" + es-abstract@^1.7.0: version "1.11.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.11.0.tgz#cce87d518f0496893b1a30cd8461835535480681" @@ -1980,6 +2087,92 @@ escope@^3.6.0: esrecurse "^4.1.0" estraverse "^4.1.1" +eslint-plugin-vue@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-4.7.0.tgz#dd1e9440adaee53915fd5b2c590ebb6bc265d646" + dependencies: + vue-eslint-parser "^2.0.3" + +eslint-scope@^3.7.1: + version "3.7.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.3.tgz#bb507200d3d17f60247636160b4826284b108535" + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-scope@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz#50bf3071e9338bcdc43331794a0cb533f0136172" + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-utils@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.3.1.tgz#9a851ba89ee7c460346f97cf8939c7298827e512" + +eslint-visitor-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" + +eslint@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.1.0.tgz#2ed611f1ce163c0fb99e1e0cda5af8f662dff645" + dependencies: + ajv "^6.5.0" + babel-code-frame "^6.26.0" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^3.1.0" + doctrine "^2.1.0" + eslint-scope "^4.0.0" + eslint-utils "^1.3.1" + eslint-visitor-keys "^1.0.0" + espree "^4.0.0" + 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.7.0" + ignore "^3.3.3" + imurmurhash "^0.1.4" + inquirer "^5.2.0" + is-resolvable "^1.1.0" + js-yaml "^3.11.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.5" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + 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" + string.prototype.matchall "^2.0.0" + strip-ansi "^4.0.0" + strip-json-comments "^2.0.1" + table "^4.0.3" + text-table "^0.2.0" + +espree@^3.5.2: + version "3.5.4" + resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7" + dependencies: + acorn "^5.5.0" + acorn-jsx "^3.0.0" + +espree@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-4.0.0.tgz#253998f20a0f82db5d866385799d912a83a36634" + dependencies: + acorn "^5.6.0" + acorn-jsx "^4.1.1" + esprima@^2.6.0: version "2.7.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" @@ -1988,13 +2181,19 @@ esprima@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" +esquery@^1.0.0, esquery@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" + dependencies: + estraverse "^4.0.0" + esrecurse@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" dependencies: estraverse "^4.1.0" -estraverse@^4.1.0, estraverse@^4.1.1: +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: version "4.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" @@ -2122,6 +2321,14 @@ extend@~3.0.0, extend@~3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" +external-editor@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" + dependencies: + chardet "^0.4.0" + iconv-lite "^0.4.17" + tmp "^0.0.33" + extglob@^0.3.1: version "0.3.2" resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" @@ -2170,6 +2377,10 @@ fast-json-stable-stringify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" +fast-levenshtein@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + fastparse@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8" @@ -2186,6 +2397,19 @@ faye-websocket@~0.11.0: dependencies: websocket-driver ">=0.5.1" +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" + dependencies: + flat-cache "^1.2.1" + object-assign "^4.0.1" + file-loader@^1.1.11: version "1.1.11" resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-1.1.11.tgz#6fe886449b0f2a936e43cabaac0cdbfb369506f8" @@ -2249,6 +2473,15 @@ find-up@^2.0.0, find-up@^2.1.0: dependencies: locate-path "^2.0.0" +flat-cache@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481" + dependencies: + circular-json "^0.3.1" + del "^2.0.2" + graceful-fs "^4.1.2" + write "^0.2.1" + flatten@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" @@ -2384,6 +2617,10 @@ function-bind@^1.0.2, function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" @@ -2476,10 +2713,25 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.2, glob@~7.1.1: once "^1.3.0" path-is-absolute "^1.0.0" +globals@^11.7.0: + version "11.7.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.7.0.tgz#a583faa43055b1aca771914bf68258e2fc125673" + globals@^9.18.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" +globby@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" + dependencies: + array-union "^1.0.1" + arrify "^1.0.0" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + globby@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" @@ -2544,6 +2796,10 @@ has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" +has-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" + has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" @@ -2732,7 +2988,7 @@ iconv-lite@0.4.19: version "0.4.19" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" -iconv-lite@^0.4.4: +iconv-lite@^0.4.17, iconv-lite@^0.4.4: version "0.4.23" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" dependencies: @@ -2762,6 +3018,10 @@ ignore-walk@^3.0.1: dependencies: minimatch "^3.0.4" +ignore@^3.3.3: + version "3.3.10" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" + import-local@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc" @@ -2810,6 +3070,24 @@ ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" +inquirer@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-5.2.0.tgz#db350c2b73daca77ff1243962e9f22f099685726" + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.1.0" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^5.5.2" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + internal-ip@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-1.2.0.tgz#ae9fbf93b984878785d50a8de1b356956058cf5c" @@ -3050,6 +3328,10 @@ is-primitive@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" +is-promise@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + is-property@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" @@ -3060,6 +3342,10 @@ is-regex@^1.0.4: dependencies: has "^1.0.1" +is-resolvable@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -3166,10 +3452,18 @@ json-schema-traverse@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -3241,6 +3535,13 @@ lcid@^1.0.0: dependencies: invert-kv "^1.0.0" +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -3324,7 +3625,7 @@ lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" -"lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.14.0, lodash@^4.17.10, lodash@^4.17.2, lodash@^4.17.4, lodash@~4.17.4: +"lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.14.0, lodash@^4.17.10, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0, lodash@~4.17.4: version "4.17.10" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" @@ -3600,6 +3901,10 @@ multicast-dns@^6.0.1: dns-packet "^1.3.1" thunky "^1.0.2" +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + nan@^2.10.0, nan@^2.9.2: version "2.10.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" @@ -3621,6 +3926,10 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + needle@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.1.tgz#b5e325bd3aae8c2678902fa296f729455d1d3a7d" @@ -3641,6 +3950,10 @@ next-tick@1: version "1.0.0" resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" +nice-try@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.4.tgz#d93962f6c52f2c1558c0fbda6d512819f1efe1c4" + node-forge@0.7.5: version "0.7.5" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df" @@ -3868,12 +4181,29 @@ onecolor@^3.0.4: version "3.0.5" resolved "https://registry.yarnpkg.com/onecolor/-/onecolor-3.0.5.tgz#36eff32201379efdf1180fb445e51a8e2425f9f6" +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + dependencies: + mimic-fn "^1.0.0" + opn@^5.1.0: version "5.3.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz#64871565c863875f052cfdf53d3e3cb5adb53b1c" dependencies: is-wsl "^1.1.0" +optionator@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + original@>=0.0.5: version "1.0.0" resolved "https://registry.yarnpkg.com/original/-/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b" @@ -3902,7 +4232,7 @@ os-locale@^2.0.0: lcid "^1.0.0" mem "^1.1.0" -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1: +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -4008,11 +4338,11 @@ path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" -path-is-inside@^1.0.1: +path-is-inside@^1.0.1, path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" -path-key@^2.0.0: +path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" @@ -4091,6 +4421,10 @@ pleeease-filters@^4.0.0: onecolor "^3.0.4" postcss "^6.0.1" +pluralize@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" + popper.js@^1.14.3: version "1.14.3" resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.14.3.tgz#1438f98d046acf7b4d78cd502bf418ac64d4f095" @@ -4622,6 +4956,10 @@ postcss@^6.0, postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.11, postcss@^6.0.14, source-map "^0.6.1" supports-color "^5.4.0" +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + prepend-http@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" @@ -4646,6 +4984,10 @@ process@^0.11.10: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" +progress@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" + promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" @@ -4906,6 +5248,16 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" +regexp.prototype.flags@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz#6b30724e306a27833eeb171b66ac8890ba37e41c" + dependencies: + define-properties "^1.1.2" + +regexpp@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-1.1.0.tgz#0e3516dd0b7904f413d2d4193dce4618c3a689ab" + regexpu-core@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" @@ -5014,6 +5366,13 @@ require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" +require-uncached@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" + dependencies: + caller-path "^0.1.0" + resolve-from "^1.0.0" + requires-port@1.0.x, requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" @@ -5024,6 +5383,10 @@ resolve-cwd@^2.0.0: dependencies: resolve-from "^3.0.0" +resolve-from@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" + resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" @@ -5038,6 +5401,13 @@ resolve@^1.1.7, resolve@^1.4.0: dependencies: path-parse "^1.0.5" +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" @@ -5069,12 +5439,24 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" +run-async@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" + dependencies: + is-promise "^2.1.0" + run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" dependencies: aproba "^1.1.1" +rxjs@^5.5.2: + version "5.5.11" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.11.tgz#f733027ca43e3bec6b994473be4ab98ad43ced87" + dependencies: + symbol-observable "1.0.1" + safe-buffer@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" @@ -5146,7 +5528,7 @@ selfsigned@^1.9.1: dependencies: node-forge "0.7.5" -"semver@2 || 3 || 4 || 5", semver@^5.3.0: +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" @@ -5260,7 +5642,7 @@ shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" -signal-exit@^3.0.0: +signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" @@ -5274,6 +5656,12 @@ slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" +slice-ansi@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" + dependencies: + is-fullwidth-code-point "^2.0.0" + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -5522,13 +5910,23 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -string-width@^2.0.0: +string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" dependencies: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" +string.prototype.matchall@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-2.0.0.tgz#2af8fe3d2d6dc53ca2a59bd376b089c3c152b3c8" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.10.0" + function-bind "^1.1.1" + has-symbols "^1.0.0" + regexp.prototype.flags "^1.2.0" + string_decoder@^1.0.0, string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" @@ -5571,7 +5969,7 @@ strip-indent@^1.0.1: dependencies: get-stdin "^4.0.1" -strip-json-comments@~2.0.1: +strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" @@ -5616,6 +6014,21 @@ svgo@^0.7.0: sax "~1.2.1" whet.extend "~0.9.9" +symbol-observable@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" + +table@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/table/-/table-4.0.3.tgz#00b5e2b602f1794b9acaf9ca908a76386a7813bc" + dependencies: + ajv "^6.0.1" + ajv-keywords "^3.0.0" + chalk "^2.1.0" + lodash "^4.17.4" + slice-ansi "1.0.0" + string-width "^2.1.1" + tapable@^0.2.7: version "0.2.8" resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.8.tgz#99372a5c999bf2df160afc0d74bed4f47948cd22" @@ -5640,6 +6053,10 @@ tar@^4: safe-buffer "^5.1.2" yallist "^3.0.2" +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + through2@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" @@ -5647,6 +6064,10 @@ through2@^2.0.0: readable-stream "^2.1.5" xtend "~4.0.1" +through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + thunky@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.2.tgz#a862e018e3fb1ea2ec3fce5d55605cf57f247371" @@ -5661,6 +6082,12 @@ timers-browserify@^2.0.4: dependencies: setimmediate "^1.0.4" +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + dependencies: + os-tmpdir "~1.0.2" + to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" @@ -5729,6 +6156,12 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + dependencies: + prelude-ls "~1.1.2" + type-is@~1.6.15, type-is@~1.6.16: version "1.6.16" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" @@ -5926,6 +6359,17 @@ vm-browserify@0.0.4: dependencies: indexof "0.0.1" +vue-eslint-parser@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-2.0.3.tgz#c268c96c6d94cfe3d938a5f7593959b0ca3360d1" + dependencies: + 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" + vue-hot-reload-api@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.0.tgz#97976142405d13d8efae154749e88c4e358cf926" @@ -6110,6 +6554,10 @@ wordwrap@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" +wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + worker-farm@^1.5.2: version "1.6.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.6.0.tgz#aecc405976fab5a95526180846f0dba288f3a4a0" @@ -6127,6 +6575,12 @@ wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" +write@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" + dependencies: + mkdirp "^0.5.1" + xtend@^4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"