fluentd-ui 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/.eslintrc.js +2 -1
  3. data/ChangeLog.md +8 -0
  4. data/Gemfile.lock +28 -28
  5. data/app/assets/stylesheets/application.css +1 -0
  6. data/app/controllers/misc_controller.rb +8 -0
  7. data/app/controllers/plugins_controller.rb +20 -3
  8. data/app/decorators/plugin_decorator.rb +18 -0
  9. data/app/helpers/application_helper.rb +0 -10
  10. data/app/javascript/packs/application.js +7 -5
  11. data/app/javascript/packs/codemirror.js +2 -1
  12. data/app/javascript/packs/{aws_credential.js → components/aws_credential.js} +0 -0
  13. data/app/javascript/packs/components/config_field.js +110 -0
  14. data/app/javascript/packs/{grep_container.js → components/grep_container.js} +1 -1
  15. data/app/javascript/packs/{grep_pattern.js → components/grep_pattern.js} +4 -2
  16. data/app/javascript/packs/components/owned_plugin_form.js +88 -0
  17. data/app/javascript/packs/{parser_multiline_form.js → components/parser_multiline_form.js} +0 -0
  18. data/app/javascript/packs/{owned_plugin_form.js → components/parser_plugin_form.js} +12 -20
  19. data/app/javascript/packs/{transport_config.js → components/transport_config.js} +0 -0
  20. data/app/javascript/packs/filter_grep_setting.js +2 -2
  21. data/app/javascript/packs/fluent_log.js +1 -1
  22. data/app/javascript/packs/in_tail_parse.js +20 -16
  23. data/app/javascript/packs/{notification.js → navigation.js} +8 -6
  24. data/app/javascript/packs/nested_settings.js +1 -1
  25. data/app/javascript/packs/out_forward_setting.js +3 -3
  26. data/app/javascript/packs/out_s3_setting.js +3 -3
  27. data/app/javascript/packs/plugin_setting.js +4 -2
  28. data/app/javascript/packs/settings.js +2 -2
  29. data/app/javascript/packs/store/index.js +21 -0
  30. data/app/javascript/packs/store/modules/parser_params.js +83 -0
  31. data/app/javascript/packs/transport_section.js +2 -2
  32. data/app/javascript/packs/treeview.js +1 -1
  33. data/app/models/concerns/fluentd/setting/configurable.rb +1 -1
  34. data/app/models/concerns/fluentd/setting/formatter_advanced_options.rb +22 -0
  35. data/app/models/concerns/fluentd/setting/label.rb +1 -1
  36. data/app/models/concerns/fluentd/setting/parser_advanced_options.rb +27 -0
  37. data/app/models/concerns/fluentd/setting/plugin.rb +12 -1
  38. data/app/models/fluentd/setting/buffer_file.rb +4 -0
  39. data/app/models/fluentd/setting/buffer_memory.rb +4 -0
  40. data/app/models/fluentd/setting/parser_ltsv.rb +1 -1
  41. data/app/models/fluentd/setting/parser_regexp.rb +2 -2
  42. data/app/models/fluentd/setting/parser_syslog.rb +2 -8
  43. data/app/models/plugin.rb +4 -4
  44. data/app/views/fluentd/settings/in_tail/_form.html.haml +3 -3
  45. data/app/views/fluentd/settings/in_tail/after_file_choose.html.haml +1 -1
  46. data/app/views/fluentd/settings/source_and_output.html.haml +10 -10
  47. data/app/views/layouts/application.html.erb +2 -28
  48. data/app/views/misc/information.html.haml +48 -44
  49. data/app/views/plugins/installed.html.haml +49 -60
  50. data/app/views/plugins/recommended.html.haml +54 -54
  51. data/app/views/sessions/new.html.haml +10 -4
  52. data/app/views/shared/settings/_form.html.haml +16 -13
  53. data/app/views/shared/vue/_aws_credential.html.haml +2 -4
  54. data/app/views/shared/vue/_config_field.html.haml +16 -30
  55. data/app/views/shared/vue/_grep_container.html.haml +13 -14
  56. data/app/views/shared/vue/_grep_pattern.html.haml +10 -6
  57. data/app/views/shared/vue/_in_tail_parse.html.haml +13 -13
  58. data/app/views/shared/vue/_navigation.html.haml +38 -0
  59. data/app/views/shared/vue/_owned_plugin_form.html.haml +18 -13
  60. data/app/views/shared/vue/_parser_multiline_form.html.haml +5 -3
  61. data/app/views/shared/vue/_parser_plugin_form.html.haml +40 -0
  62. data/app/views/shared/vue/_setting.html.haml +20 -0
  63. data/app/views/shared/vue/_sidemenu.html.haml +40 -0
  64. data/app/views/shared/vue/_transport_section.html.haml +10 -8
  65. data/app/views/shared/vue/_treeview.html.haml +30 -0
  66. data/config/locales/translation_en.yml +1 -0
  67. data/config/locales/translation_ja.yml +1 -0
  68. data/lib/fluentd-ui/version.rb +1 -1
  69. data/lib/regexp_preview/multi_line.rb +4 -3
  70. data/lib/regexp_preview/single_line.rb +4 -3
  71. data/package.json +3 -1
  72. data/test/test_helper.rb +5 -0
  73. data/yarn.lock +111 -5
  74. metadata +62 -78
  75. data/app/javascript/packs/config_field.js +0 -93
  76. data/app/views/shared/_global_nav.html.erb +0 -80
  77. data/app/views/shared/_modal.html.erb +0 -25
  78. data/app/views/shared/vue/_notification.html.erb +0 -27
  79. data/app/views/shared/vue/_setting.html.erb +0 -25
  80. data/app/views/shared/vue/_treeview.html.erb +0 -33
@@ -1,8 +1,10 @@
1
1
  %script{type: "text/x-template", id: "vue-parser-multiline-form"}
2
2
  .form-group
3
- %label{"for" => "setting_parse_0__format_firstline",
4
- "data-toggle" => "tooltip",
5
- "data-placement" => "right",
3
+ %b-tooltip{"target" => "label_setting_parse_0__format_firstline",
4
+ "placement" => "right",
5
+ "v-bind:title" => "formatFirstlineDesc"}
6
+ %label{"id" => "label_setting_parse_0__format_firstline",
7
+ "for" => "setting_parse_0__format_firstline",
6
8
  "v-bind:title" => "formatFirstlineDesc"}
7
9
  Format first line
8
10
  %input.form-control{"type" => "text",
@@ -0,0 +1,40 @@
1
+ = render "shared/vue/parser_multiline_form"
2
+ = render "shared/vue/config_field"
3
+
4
+ %script{type: "text/x-template", id: "vue-parser-plugin-form"}
5
+ .form-group.mb-3{"v-bind:id" => "id"}
6
+ %b-card{"bg-variant" => "light"}
7
+ %label{"v-bind:for" => "selectId(pluginType)"}
8
+ {{ pluginLabel }}
9
+ %select{"v-bind:id" => "selectId(pluginType)",
10
+ "v-bind:class" => "selectClass(pluginType)",
11
+ "v-bind:name" => "selectName(pluginType)",
12
+ "v-model" => "pluginName",
13
+ "v-on:change" => "onChange"}
14
+ %option{"v-for" => "option in options",
15
+ "v-bind:value" => "option",
16
+ "v-bind:selected" => "pluginName===option"}
17
+ {{ option }}
18
+ %parser-multiline-form{"v-if" => 'pluginName==="multiline"',
19
+ "v-bind:plugin-type" => "pluginType",
20
+ "v-bind:common-options" => "commonOptions",
21
+ "v-on:change-formats" => "onChangeFormats"}
22
+ %template(v-else)
23
+ %template{"v-for" => "option in commonOptions"}
24
+ %config-field{"v-bind:key" => "option.name",
25
+ "v-bind:plugin-type" => "pluginType",
26
+ "v-bind:option" => "option",
27
+ "v-bind:initial-text-value" => "initialParams[option.name]",
28
+ "v-on:change-parse-config" => "onChangeParseConfig"}
29
+ %template{"v-if" => '!_.isEmpty(advancedOptions)'}
30
+ %b-card(no-body){"bg-variant" => "light"}
31
+ %template{"slot" => "header"}
32
+ %h4{"v-b-toggle" => '"parser-section-advanced-setting"'}
33
+ = icon('fa-caret-down')
34
+ = t('terms.advanced_setting')
35
+ %b-collapse{"id" => "parser-section-advanced-setting"}
36
+ %b-card-body
37
+ %config-field{"v-for" => "option in advancedOptions",
38
+ "v-bind:key" => "option.name",
39
+ "v-bind:plugin-type" => "pluginType",
40
+ "v-bind:option" => "option"}
@@ -0,0 +1,20 @@
1
+ - add_javascript_pack_tag('codemirror')
2
+
3
+ %script{"type" => "text/x-template", "id" => "vue-setting-section"}
4
+ %b-card.mb-3(no-body){"variant" => "primary"}
5
+ %template{"slot" => "header"}
6
+ %div{"data-toggle" => "collapse", "v-bind:href" => "`#${id}`", "v-bind:title" => "content"}
7
+ = icon("fa-caret-down")
8
+ {{ type }}
9
+ %span{"v-if" => '!_.isEmpty(arg) && (name == "match" || name == "filter")'}
10
+ ({{ arg }})
11
+ %b-card-body.collapse{"v-bind:id" => "id"}
12
+ %pre{"v-if" => 'mode !== "edit"'}
13
+ {{ content }}
14
+ %p{"v-if" => 'mode === "edit"'}
15
+ %textarea.form-control(v-config-editor){"v-model.lazy" => "content", "v-bind:disabled" => "processing"}
16
+ %p.float-right
17
+ %b-button{"v-if" => 'mode !== "edit"', "variant" => "secondary", "v-on:click" => "onEdit"}=t("terms.edit")
18
+ %b-button{"v-if" => 'mode !== "edit"', "variant" => "danger", "v-on:click" => "onDelete"}=t("terms.destroy")
19
+ %b-button{"v-if" => 'mode === "edit"', "variant" => "secondary", "v-on:click" => "onCancel"}=t("terms.cancel")
20
+ %b-button{"v-if" => 'mode === "edit"', "variant" => "primary", "v-on:click" => "onSubmit"}=t("terms.save")
@@ -0,0 +1,40 @@
1
+ %ul#side-menu.navbar-nav.navbar-sidenav
2
+ %li.nav-item
3
+ %b-tooltip{"target" => "side-menu-fluentd", "placement" => "right", "title" => "Fluentd"}
4
+ %a#side-menu-fluentd.section
5
+ = icon("fa-puzzle-piece fa-fw") + "fluentd"
6
+ %ul.sidenav-second-level
7
+ - if fluentd_exists?
8
+ %li= link_to_other(t('fluentd.show.page_title'), daemon_path)
9
+ %li= link_to_other(t('fluentd.settings.source_and_output.page_title'), source_and_output_daemon_setting_path)
10
+ %li= link_to_other(t('fluentd.settings.show.page_title'), daemon_setting_path)
11
+ %li= link_to_other(t('fluentd.common.log'), log_daemon_path)
12
+ %li= link_to_other(t('fluentd.errors.page_title'), errors_daemon_path)
13
+ - else
14
+ %li= link_to_other(t('terms.initial_setup'), daemon_path)
15
+
16
+ - if fluentd_exists?
17
+ %li.nav-item
18
+ %b-tooltip{"target" => "side-menu-plugins", "placement" => "right", "title" => "Plugins"}
19
+ %a#side-menu-plugins.section
20
+ = icon("fa-cogs fa-fw") + t("terms.plugins")
21
+ %ul.sidenav-second-level
22
+ %li= link_to_other(t("plugins.installed.page_title"), installed_plugins_path)
23
+ %li= link_to_other(t("plugins.recommended.page_title"), recommended_plugins_path)
24
+ %li= link_to_other(t("plugins.updated.page_title"), updated_plugins_path)
25
+
26
+ %li.nav-item
27
+ %b-tooltip{"target" => "side-menu-misc", "placement" => "right", "title" => "Misc"}
28
+ %a#side-menu-misc.section
29
+ = icon("fa-coffee fa-fw") + t("terms.misc")
30
+ %ul.sidenav-second-level
31
+ %li= link_to_other(t("misc.information.page_title"), misc_information_path)
32
+ %li= link_to_other t('users.show.page_title'), user_path
33
+
34
+ %li.nav-item
35
+ %b-tooltip{"target" => "side-menu-language", "placement" => "right", "title" => "Language"}
36
+ %a#side-menu-language.section
37
+ = icon("fa-font") + t("terms.languages")
38
+ %ul.sidenav-second-level
39
+ - I18n.available_locales.each do |locale|
40
+ %li= link_to((locale == current_locale ? icon("fa-check") : "") + language_name(locale), "?lang=#{locale}")
@@ -20,11 +20,13 @@
20
20
  %template{"v-for" => "option in commonOptions"}
21
21
  %config-field{"v-bind:plugin-type" => "pluginType",
22
22
  "v-bind:option" => "option"}
23
- .card.card-body.bg-light
24
- %h4{"data-toggle" => "collapse", "href" => "#transport-advanced-setting"}
25
- = icon('fa-caret-down')
26
- = t('terms.advanced_setting') + '(TLS)'
27
- #transport-advanced-setting.collapse
28
- %template{"v-for" => "option in advancedOptions"}
29
- %config-field{"v-bind:plugin-type" => "pluginType",
30
- "v-bind:option" => "option"}
23
+ %b-card(no-body){"bg-variant" => "light"}
24
+ %template{"slot" => "header"}
25
+ %h4{"v-b-toggle" => "'transport-advanced-setting'"}
26
+ = icon('fa-caret-down')
27
+ = t('terms.advanced_setting') + '(TLS)'
28
+ %b-collapse{"id" => "transport-advanced-setting"}
29
+ %b-card-body
30
+ %template{"v-for" => "option in advancedOptions"}
31
+ %config-field{"v-bind:plugin-type" => "pluginType",
32
+ "v-bind:option" => "option"}
@@ -0,0 +1,30 @@
1
+ :ruby
2
+ add_javascript_pack_tag("treeview")
3
+ name ||= ""
4
+ action ||= ""
5
+ submit_button ||= ""
6
+
7
+ = form_tag(action, method: :post) do
8
+ #treeview
9
+ %b-card{"variant" => "light"}
10
+ %pre.pb-0.mb-0
11
+ {{ path }}
12
+ %input{"type" => "hidden", "name" => name, "v-model" => "path"}
13
+ .dirs
14
+ %span{"v-for" => "(dir, index) in currentDirs"}
15
+ %span{"v-if" => "index > 0"}= icon("fa-caret-right")
16
+ %span.dir{"v-on:click" => "selectPath(dir)"}
17
+ {{ basename(dir) }}
18
+ .tree
19
+ %span{"v-on:click" => "selectPath(value.path)",
20
+ "v-bind:class" => "{ selected: isSelected(value.path) }",
21
+ "v-for" => "value in paths"}
22
+ %span{"v-if" => "value.is_dir"}= icon("fa-folder")
23
+ %span{"v-if" => "!value.is_dir"}= icon("fa-file-o")
24
+ {{ basename(value.path) }}
25
+ %br
26
+
27
+ %pre.preview{"v-if" => "preview"}
28
+ {{ preview }}
29
+ %p.mt-3
30
+ = submit_tag(submit_button, class: "btn btn-lg btn-primary float-right", "v-bind:disabled" => "selectedIsDir")
@@ -50,6 +50,7 @@ en:
50
50
  installing: "Installing: %{target}"
51
51
  uninstalling: "Uninstalling: %{target}"
52
52
  search: Search
53
+ clear: Clear
53
54
  changeme_password: '<a href="/user">Change the password</a> from default for your security'
54
55
  destroy_confirm_title: "%{target} Deletion"
55
56
  confirm_body: |
@@ -50,6 +50,7 @@ ja:
50
50
  installing: "インストール中: %{target}"
51
51
  uninstalling: "アンインストール中: %{target}"
52
52
  search: 検索
53
+ clear: クリア
53
54
  changeme_password: 'パスワードを初期設定から<a href="/user">変更</a>してください'
54
55
  destroy_confirm_title: "%{target}を削除"
55
56
  confirm_body: |
@@ -1,3 +1,3 @@
1
1
  module FluentdUI
2
- VERSION = "1.1.0"
2
+ VERSION = "1.2.0"
3
3
  end
@@ -47,12 +47,13 @@ module RegexpPreview
47
47
  next unless record
48
48
  last_pos = 0
49
49
  record.each do |key, value|
50
- start = chunk.index(value, last_pos)
51
- finish = start + value.bytesize
50
+ v = value.to_s
51
+ start = chunk.index(v, last_pos)
52
+ finish = start + v.bytesize
52
53
  last_pos = finish
53
54
  parsed[:matches] << {
54
55
  key: key,
55
- matched: value,
56
+ matched: v,
56
57
  pos: [start, finish]
57
58
  }
58
59
  end
@@ -36,12 +36,13 @@ module RegexpPreview
36
36
  next unless record
37
37
  last_pos = 0
38
38
  record.each do |key, value|
39
- start = line.index(value, last_pos)
40
- finish = start + value.bytesize
39
+ v = value.to_s
40
+ start = line.index(v, last_pos)
41
+ finish = start + v.bytesize
41
42
  last_pos = finish
42
43
  parsed[:matches] << {
43
44
  key: key,
44
- matched: value,
45
+ matched: v,
45
46
  pos: [start, finish]
46
47
  }
47
48
  end
@@ -6,6 +6,7 @@
6
6
  },
7
7
  "dependencies": {
8
8
  "@rails/webpacker": "3.5",
9
+ "bootstrap-vue": "^2.0.0-rc.11",
9
10
  "codemirror": "^5.37.0",
10
11
  "es6-promise": "^4.2.4",
11
12
  "jquery": "^3.3.1",
@@ -15,7 +16,8 @@
15
16
  "startbootstrap-sb-admin": "^4.0.0",
16
17
  "vue": "^2.5.16",
17
18
  "vue-loader": "14.2.2",
18
- "vue-template-compiler": "^2.5.16"
19
+ "vue-template-compiler": "^2.5.16",
20
+ "vuex": "^3.0.1"
19
21
  },
20
22
  "devDependencies": {
21
23
  "eslint": "^5.1.0",
@@ -1,4 +1,9 @@
1
1
  ENV['RAILS_ENV'] ||= 'test'
2
+ if ENV['RAILS_ENV'] == 'test'
3
+ require 'simplecov'
4
+ SimpleCov.start("rails")
5
+ end
6
+
2
7
  require_relative '../config/environment'
3
8
  require 'test/unit/rails/test_help'
4
9
  require 'test/unit/rr'
data/yarn.lock CHANGED
@@ -123,6 +123,10 @@ amdefine@>=0.0.4:
123
123
  version "1.0.1"
124
124
  resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
125
125
 
126
+ ansi-escapes@^1.1.0:
127
+ version "1.4.0"
128
+ resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e"
129
+
126
130
  ansi-escapes@^3.0.0:
127
131
  version "3.1.0"
128
132
  resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30"
@@ -725,6 +729,14 @@ babel-plugin-transform-strict-mode@^6.24.1:
725
729
  babel-runtime "^6.22.0"
726
730
  babel-types "^6.24.1"
727
731
 
732
+ babel-polyfill@6.23.0:
733
+ version "6.23.0"
734
+ resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.23.0.tgz#8364ca62df8eafb830499f699177466c3b03499d"
735
+ dependencies:
736
+ babel-runtime "^6.22.0"
737
+ core-js "^2.4.0"
738
+ regenerator-runtime "^0.10.0"
739
+
728
740
  babel-polyfill@^6.26.0:
729
741
  version "6.26.0"
730
742
  resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153"
@@ -928,10 +940,25 @@ boom@5.x.x:
928
940
  dependencies:
929
941
  hoek "4.x.x"
930
942
 
943
+ bootstrap-vue@^2.0.0-rc.11:
944
+ version "2.0.0-rc.11"
945
+ resolved "https://registry.yarnpkg.com/bootstrap-vue/-/bootstrap-vue-2.0.0-rc.11.tgz#47aaa6d2a8d390477de75e636d8ea652b1d03f59"
946
+ dependencies:
947
+ bootstrap "^4.1.1"
948
+ lodash.get "^4.4.2"
949
+ lodash.startcase "^4.4.0"
950
+ opencollective "^1.0.3"
951
+ popper.js "^1.12.9"
952
+ vue-functional-data-merge "^2.0.5"
953
+
931
954
  bootstrap@4.0.0:
932
955
  version "4.0.0"
933
956
  resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.0.0.tgz#ceb03842c145fcc1b9b4e15da2a05656ba68469a"
934
957
 
958
+ bootstrap@^4.1.1:
959
+ version "4.1.3"
960
+ resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.1.3.tgz#0eb371af2c8448e8c210411d0cb824a6409a12be"
961
+
935
962
  brace-expansion@^1.1.7:
936
963
  version "1.1.11"
937
964
  resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
@@ -1181,7 +1208,7 @@ center-align@^0.1.1:
1181
1208
  align-text "^0.1.3"
1182
1209
  lazy-cache "^1.0.3"
1183
1210
 
1184
- chalk@^1.1.1, chalk@^1.1.3:
1211
+ chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3:
1185
1212
  version "1.1.3"
1186
1213
  resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
1187
1214
  dependencies:
@@ -1958,6 +1985,12 @@ encodeurl@~1.0.2:
1958
1985
  version "1.0.2"
1959
1986
  resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
1960
1987
 
1988
+ encoding@^0.1.11:
1989
+ version "0.1.12"
1990
+ resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb"
1991
+ dependencies:
1992
+ iconv-lite "~0.4.13"
1993
+
1961
1994
  end-of-stream@^1.0.0, end-of-stream@^1.1.0:
1962
1995
  version "1.4.1"
1963
1996
  resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43"
@@ -2321,7 +2354,7 @@ extend@~3.0.0, extend@~3.0.1:
2321
2354
  version "3.0.1"
2322
2355
  resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
2323
2356
 
2324
- external-editor@^2.1.0:
2357
+ external-editor@^2.0.1, external-editor@^2.1.0:
2325
2358
  version "2.2.0"
2326
2359
  resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5"
2327
2360
  dependencies:
@@ -2994,6 +3027,12 @@ iconv-lite@^0.4.17, iconv-lite@^0.4.4:
2994
3027
  dependencies:
2995
3028
  safer-buffer ">= 2.1.2 < 3"
2996
3029
 
3030
+ iconv-lite@~0.4.13:
3031
+ version "0.4.24"
3032
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
3033
+ dependencies:
3034
+ safer-buffer ">= 2.1.2 < 3"
3035
+
2997
3036
  icss-replace-symbols@^1.1.0:
2998
3037
  version "1.1.0"
2999
3038
  resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded"
@@ -3070,6 +3109,24 @@ ini@~1.3.0:
3070
3109
  version "1.3.5"
3071
3110
  resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
3072
3111
 
3112
+ inquirer@3.0.6:
3113
+ version "3.0.6"
3114
+ resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.0.6.tgz#e04aaa9d05b7a3cb9b0f407d04375f0447190347"
3115
+ dependencies:
3116
+ ansi-escapes "^1.1.0"
3117
+ chalk "^1.0.0"
3118
+ cli-cursor "^2.1.0"
3119
+ cli-width "^2.0.0"
3120
+ external-editor "^2.0.1"
3121
+ figures "^2.0.0"
3122
+ lodash "^4.3.0"
3123
+ mute-stream "0.0.7"
3124
+ run-async "^2.2.0"
3125
+ rx "^4.1.0"
3126
+ string-width "^2.0.0"
3127
+ strip-ansi "^3.0.0"
3128
+ through "^2.3.6"
3129
+
3073
3130
  inquirer@^5.2.0:
3074
3131
  version "5.2.0"
3075
3132
  resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-5.2.0.tgz#db350c2b73daca77ff1243962e9f22f099685726"
@@ -3346,7 +3403,7 @@ is-resolvable@^1.1.0:
3346
3403
  version "1.1.0"
3347
3404
  resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88"
3348
3405
 
3349
- is-stream@^1.1.0:
3406
+ is-stream@^1.0.1, is-stream@^1.1.0:
3350
3407
  version "1.1.0"
3351
3408
  resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
3352
3409
 
@@ -3596,6 +3653,10 @@ lodash.clonedeep@^4.3.2:
3596
3653
  version "4.5.0"
3597
3654
  resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
3598
3655
 
3656
+ lodash.get@^4.4.2:
3657
+ version "4.4.2"
3658
+ resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
3659
+
3599
3660
  lodash.memoize@^4.1.2:
3600
3661
  version "4.1.2"
3601
3662
  resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
@@ -3604,6 +3665,10 @@ lodash.mergewith@^4.6.0:
3604
3665
  version "4.6.1"
3605
3666
  resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz#639057e726c3afbdb3e7d42741caa8d6e4335927"
3606
3667
 
3668
+ lodash.startcase@^4.4.0:
3669
+ version "4.4.0"
3670
+ resolved "https://registry.yarnpkg.com/lodash.startcase/-/lodash.startcase-4.4.0.tgz#9436e34ed26093ed7ffae1936144350915d9add8"
3671
+
3607
3672
  lodash.tail@^4.1.1:
3608
3673
  version "4.1.1"
3609
3674
  resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664"
@@ -3819,7 +3884,7 @@ minimist@0.0.8:
3819
3884
  version "0.0.8"
3820
3885
  resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
3821
3886
 
3822
- minimist@^1.1.3, minimist@^1.2.0:
3887
+ minimist@1.2.0, minimist@^1.1.3, minimist@^1.2.0:
3823
3888
  version "1.2.0"
3824
3889
  resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
3825
3890
 
@@ -3954,6 +4019,13 @@ nice-try@^1.0.4:
3954
4019
  version "1.0.4"
3955
4020
  resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.4.tgz#d93962f6c52f2c1558c0fbda6d512819f1efe1c4"
3956
4021
 
4022
+ node-fetch@1.6.3:
4023
+ version "1.6.3"
4024
+ resolved "http://registry.npmjs.org/node-fetch/-/node-fetch-1.6.3.tgz#dc234edd6489982d58e8f0db4f695029abcd8c04"
4025
+ dependencies:
4026
+ encoding "^0.1.11"
4027
+ is-stream "^1.0.1"
4028
+
3957
4029
  node-forge@0.7.5:
3958
4030
  version "0.7.5"
3959
4031
  resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df"
@@ -4187,6 +4259,24 @@ onetime@^2.0.0:
4187
4259
  dependencies:
4188
4260
  mimic-fn "^1.0.0"
4189
4261
 
4262
+ opencollective@^1.0.3:
4263
+ version "1.0.3"
4264
+ resolved "https://registry.yarnpkg.com/opencollective/-/opencollective-1.0.3.tgz#aee6372bc28144583690c3ca8daecfc120dd0ef1"
4265
+ dependencies:
4266
+ babel-polyfill "6.23.0"
4267
+ chalk "1.1.3"
4268
+ inquirer "3.0.6"
4269
+ minimist "1.2.0"
4270
+ node-fetch "1.6.3"
4271
+ opn "4.0.2"
4272
+
4273
+ opn@4.0.2:
4274
+ version "4.0.2"
4275
+ resolved "http://registry.npmjs.org/opn/-/opn-4.0.2.tgz#7abc22e644dff63b0a96d5ab7f2790c0f01abc95"
4276
+ dependencies:
4277
+ object-assign "^4.0.1"
4278
+ pinkie-promise "^2.0.0"
4279
+
4190
4280
  opn@^5.1.0:
4191
4281
  version "5.3.0"
4192
4282
  resolved "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz#64871565c863875f052cfdf53d3e3cb5adb53b1c"
@@ -4425,6 +4515,10 @@ pluralize@^7.0.0:
4425
4515
  version "7.0.0"
4426
4516
  resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777"
4427
4517
 
4518
+ popper.js@^1.12.9:
4519
+ version "1.14.4"
4520
+ resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.14.4.tgz#8eec1d8ff02a5a3a152dd43414a15c7b79fd69b6"
4521
+
4428
4522
  popper.js@^1.14.3:
4429
4523
  version "1.14.3"
4430
4524
  resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.14.3.tgz#1438f98d046acf7b4d78cd502bf418ac64d4f095"
@@ -5219,7 +5313,7 @@ regenerate@^1.2.1:
5219
5313
  version "1.4.0"
5220
5314
  resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11"
5221
5315
 
5222
- regenerator-runtime@^0.10.5:
5316
+ regenerator-runtime@^0.10.0, regenerator-runtime@^0.10.5:
5223
5317
  version "0.10.5"
5224
5318
  resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658"
5225
5319
 
@@ -5451,6 +5545,10 @@ run-queue@^1.0.0, run-queue@^1.0.3:
5451
5545
  dependencies:
5452
5546
  aproba "^1.1.1"
5453
5547
 
5548
+ rx@^4.1.0:
5549
+ version "4.1.0"
5550
+ resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782"
5551
+
5454
5552
  rxjs@^5.5.2:
5455
5553
  version "5.5.11"
5456
5554
  resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.11.tgz#f733027ca43e3bec6b994473be4ab98ad43ced87"
@@ -6370,6 +6468,10 @@ vue-eslint-parser@^2.0.3:
6370
6468
  esquery "^1.0.0"
6371
6469
  lodash "^4.17.4"
6372
6470
 
6471
+ vue-functional-data-merge@^2.0.5:
6472
+ version "2.0.7"
6473
+ resolved "https://registry.yarnpkg.com/vue-functional-data-merge/-/vue-functional-data-merge-2.0.7.tgz#bdee655181eacdcb1f96ce95a4cc14e75313d1da"
6474
+
6373
6475
  vue-hot-reload-api@^2.2.0:
6374
6476
  version "2.3.0"
6375
6477
  resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.0.tgz#97976142405d13d8efae154749e88c4e358cf926"
@@ -6414,6 +6516,10 @@ vue@^2.5.16:
6414
6516
  version "2.5.16"
6415
6517
  resolved "https://registry.yarnpkg.com/vue/-/vue-2.5.16.tgz#07edb75e8412aaeed871ebafa99f4672584a0085"
6416
6518
 
6519
+ vuex@^3.0.1:
6520
+ version "3.0.1"
6521
+ resolved "https://registry.yarnpkg.com/vuex/-/vuex-3.0.1.tgz#e761352ebe0af537d4bb755a9b9dc4be3df7efd2"
6522
+
6417
6523
  watchpack@^1.4.0:
6418
6524
  version "1.6.0"
6419
6525
  resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00"