mvpkit 1.1.2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (137) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -24
  3. data/README.md +43 -48
  4. data/VERSION +1 -1
  5. data/bin/mvp +2 -2
  6. data/config/routes.rb +0 -4
  7. data/mvpkit.gemspec +57 -129
  8. data/package.json +3 -22
  9. data/project/.babelrc +23 -1
  10. data/project/.gitignore +2 -0
  11. data/project/.postcssrc.yml +4 -0
  12. data/project/Gemfile +21 -13
  13. data/project/Gemfile.lock +181 -153
  14. data/project/Procfile +1 -1
  15. data/project/README.md +2 -116
  16. data/project/app/assets/javascripts/application.js +0 -8
  17. data/project/app/assets/stylesheets/application.scss +9 -3
  18. data/project/app/assets/stylesheets/elements/alerts.scss +10 -0
  19. data/project/app/assets/stylesheets/elements/badges.scss +16 -0
  20. data/project/app/assets/stylesheets/elements/buttons.scss +107 -0
  21. data/project/app/assets/stylesheets/elements/cards.scss +68 -0
  22. data/project/app/assets/stylesheets/elements/drawer.scss +66 -0
  23. data/project/app/assets/stylesheets/elements/forms.scss +64 -0
  24. data/project/app/assets/stylesheets/elements/interstitial.scss +24 -0
  25. data/project/app/assets/stylesheets/elements/navs.scss +15 -0
  26. data/project/app/assets/stylesheets/elements/sidebar.scss +30 -0
  27. data/project/app/assets/stylesheets/elements/tables.scss +61 -0
  28. data/project/app/assets/stylesheets/elements/timeline.scss +38 -0
  29. data/project/app/assets/stylesheets/elements/typography.scss +80 -0
  30. data/project/app/assets/stylesheets/init/bootstrap.scss +53 -0
  31. data/project/app/assets/stylesheets/init/reset.scss +20 -0
  32. data/project/app/assets/stylesheets/init/variables.scss +40 -0
  33. data/project/app/assets/stylesheets/treatments/backgrounds.scss +23 -0
  34. data/project/app/assets/stylesheets/treatments/borders.scss +7 -0
  35. data/project/app/{webpack/stylesheets/skin → assets/stylesheets/treatments}/spacing.scss +4 -10
  36. data/{app/controllers/mvp → project/app/controllers}/analytics_controller.rb +0 -0
  37. data/{app/controllers/concerns/mvp → project/app/controllers/concerns}/analytics_concern.rb +0 -0
  38. data/{app/controllers/concerns/mvp → project/app/controllers/concerns}/seo_concern.rb +0 -0
  39. data/{app/controllers/concerns/mvp → project/app/controllers/concerns}/session_concern.rb +0 -0
  40. data/project/app/controllers/conversions_controller.rb +1 -2
  41. data/{app/controllers/mvp → project/app/controllers}/seo_controller.rb +0 -0
  42. data/project/app/engines/admin/app/views/layouts/admin/_header.html.erb +18 -18
  43. data/project/app/helpers/application_helper.rb +0 -14
  44. data/{app/assets/stylesheets/mvp/application.scss → project/app/javascript/components/.gitkeep} +0 -0
  45. data/project/app/javascript/components/conversion.jsx +73 -0
  46. data/project/app/javascript/packs/application.js +28 -0
  47. data/project/app/javascript/packs/server_rendering.js +5 -0
  48. data/project/app/models/conversion.rb +1 -1
  49. data/project/app/views/conversions/show.json.jbuilder +1 -0
  50. data/project/app/views/home/index.html.erb +22 -22
  51. data/project/app/views/layouts/_header.html.erb +35 -34
  52. data/{app/views/layouts/mvp → project/app/views/layouts}/_instrumentation.html.erb +0 -0
  53. data/{app/views/layouts/mvp → project/app/views/layouts}/_meta.html.erb +0 -0
  54. data/project/app/views/layouts/application.html.erb +31 -21
  55. data/project/bin/setup +1 -1
  56. data/project/bin/webpack +28 -0
  57. data/project/bin/webpack-dev-server +43 -0
  58. data/project/config/initializers/assets.rb +2 -0
  59. data/{config → project/config}/initializers/canonical_host.rb +0 -0
  60. data/{config → project/config}/initializers/cloudinary.rb +0 -0
  61. data/{config → project/config}/initializers/rollbar.rb +0 -0
  62. data/{config → project/config}/initializers/routing.rb +0 -0
  63. data/{config → project/config}/initializers/spoof_ip.rb +0 -0
  64. data/{config → project/config}/initializers/ssl.rb +0 -0
  65. data/project/config/routes.rb +5 -7
  66. data/project/config/webpack/configuration.js +35 -0
  67. data/project/config/webpack/development.js +32 -0
  68. data/project/config/webpack/loaders/assets.js +12 -0
  69. data/project/config/webpack/loaders/babel.js +5 -0
  70. data/project/config/webpack/loaders/coffee.js +4 -0
  71. data/project/config/webpack/loaders/erb.js +9 -0
  72. data/project/config/webpack/loaders/react.js +5 -0
  73. data/project/config/webpack/loaders/sass.js +15 -0
  74. data/project/config/webpack/production.js +35 -0
  75. data/project/config/webpack/shared.js +58 -0
  76. data/project/config/webpack/test.js +6 -0
  77. data/project/config/webpacker.yml +38 -0
  78. data/project/package-lock.json +250 -0
  79. data/project/package.json +37 -17
  80. data/project/yarn.lock +4538 -0
  81. metadata +56 -326
  82. data/app/assets/javascripts/mvp/application.js +0 -1
  83. data/app/controllers/mvp/styleguide_controller.rb +0 -23
  84. data/app/helpers/minimum_viable_product/body_helper.rb +0 -14
  85. data/app/helpers/minimum_viable_product/bootstrap_helper.rb +0 -38
  86. data/app/helpers/minimum_viable_product/styleguide_helper.rb +0 -4
  87. data/app/models/concerns/mvp/slugification.rb +0 -24
  88. data/app/views/layouts/mvp/application.html.erb +0 -19
  89. data/app/views/mvp/styleguide/_example.html.erb +0 -6
  90. data/app/views/mvp/styleguide/bootstrap.html.erb +0 -43
  91. data/app/views/mvp/styleguide/bootstrap/_buttons.html.erb +0 -191
  92. data/app/views/mvp/styleguide/bootstrap/_forms.html.erb +0 -192
  93. data/app/views/mvp/styleguide/bootstrap/_header.html.erb +0 -48
  94. data/app/views/mvp/styleguide/bootstrap/_panels.html.erb +0 -16
  95. data/app/views/mvp/styleguide/bootstrap/_tables.html.erb +0 -34
  96. data/app/views/mvp/styleguide/bootstrap/_typography.html.erb +0 -51
  97. data/app/views/mvp/styleguide/elements/_grouping.html.erb +0 -1
  98. data/app/views/mvp/styleguide/elements/partials/_row_groups_of.html.erb +0 -7
  99. data/app/views/mvp/styleguide/index.html.erb +0 -17
  100. data/app/views/mvp/styleguide/layouts/basic.html.erb +0 -4
  101. data/app/views/mvp/styleguide/layouts/carousel.html.erb +0 -120
  102. data/app/views/mvp/styleguide/layouts/cover.html.erb +0 -34
  103. data/config/initializers/assets.rb +0 -2
  104. data/config/initializers/geocoder.rb +0 -9
  105. data/project/app/assets/javascripts/pack-compiled.js +0 -37394
  106. data/project/app/assets/javascripts/pack-compiled.js.map +0 -1
  107. data/project/app/assets/javascripts/templates.js.erb +0 -14
  108. data/project/app/assets/stylesheets/pack-compiled.css +0 -33946
  109. data/project/app/assets/stylesheets/pack-compiled.css.map +0 -1
  110. data/project/app/controllers/examples_controller.rb +0 -2
  111. data/project/app/views/examples/index.html.erb +0 -1
  112. data/project/app/views/examples/mustache.html.erb +0 -40
  113. data/project/app/views/examples/mustache/template.mustache +0 -1
  114. data/project/app/views/home/conversion.html.erb +0 -12
  115. data/project/app/webpack/javascripts/behaviors/example.js +0 -21
  116. data/project/app/webpack/javascripts/controllers/home.js +0 -15
  117. data/project/app/webpack/javascripts/lib/analytics.js +0 -22
  118. data/project/app/webpack/javascripts/lib/clientsidevalidations.js +0 -3
  119. data/project/app/webpack/javascripts/lib/controllers.js +0 -28
  120. data/project/app/webpack/javascripts/lib/forms.js +0 -28
  121. data/project/app/webpack/javascripts/lib/selectize.js +0 -1
  122. data/project/app/webpack/javascripts/pack.js +0 -50
  123. data/project/app/webpack/stylesheets/config/variables.scss +0 -41
  124. data/project/app/webpack/stylesheets/init/reset.scss +0 -48
  125. data/project/app/webpack/stylesheets/layout/main.scss +0 -7
  126. data/project/app/webpack/stylesheets/pack.scss +0 -20
  127. data/project/app/webpack/stylesheets/skin/alerts.scss +0 -3
  128. data/project/app/webpack/stylesheets/skin/buttons.scss +0 -38
  129. data/project/app/webpack/stylesheets/skin/hero.scss +0 -45
  130. data/project/app/webpack/stylesheets/skin/images.scss +0 -13
  131. data/project/app/webpack/stylesheets/skin/progress.scss +0 -3
  132. data/project/app/webpack/stylesheets/skin/selectize.scss +0 -30
  133. data/project/app/webpack/stylesheets/skin/tables.scss +0 -24
  134. data/project/app/webpack/stylesheets/skin/treatments.scss +0 -3
  135. data/project/app/webpack/stylesheets/skin/turbolinks.scss +0 -4
  136. data/project/app/webpack/stylesheets/skin/typography.scss +0 -116
  137. data/project/webpack.config.js +0 -76
@@ -1,3 +1,5 @@
1
+ Rails.application.config.assets.paths << Rails.root.join('node_modules')
2
+
1
3
  # Be sure to restart your server when you modify this file.
2
4
  # ExecJS.runtime = ExecJS::Runtimes::Node
3
5
 
File without changes
File without changes
File without changes
File without changes
@@ -3,15 +3,13 @@ require 'sidekiq/web'
3
3
  Rails.application.routes.draw do
4
4
  devise_for :users
5
5
  mount Sidekiq::Web => '/sidekiq'
6
- mount MVP::Engine => "/"
7
- mount Admin::Engine => '/houston' # avoid /admin, lots of script kiddies target this
8
-
9
- scope path: '/examples' do
10
- get 'mustache', to: 'examples#mustache', as: :mustache_example
11
- get '', to: 'examples#index', as: :examples
12
- end
6
+ mount Admin::Engine => '/a' # avoid /admin, lots of script kiddies target this
13
7
 
14
8
  get 'conversion', to: 'home#conversion', as: :conversion
15
9
  resource :conversion, only: [:create]
16
10
  root 'home#index'
11
+
12
+ get 'analytics/optout', to: 'analytics#optout'
13
+ get 'robots.txt', to: 'seo#robots', as: :robots
14
+ get 'sitemap.xml.gz', to: redirect("https://#{ENV['AWS_S3_BUCKET']}.s3.amazonaws.com/#{Rails.application.class.parent_name.underscore}/sitemaps/sitemap.xml.gz"), as: :sitemap
17
15
  end
@@ -0,0 +1,35 @@
1
+ // Common configuration for webpacker loaded from config/webpacker.yml
2
+
3
+ const { join, resolve } = require('path')
4
+ const { env } = require('process')
5
+ const { safeLoad } = require('js-yaml')
6
+ const { readFileSync } = require('fs')
7
+
8
+ const configPath = resolve('config', 'webpacker.yml')
9
+ const loadersDir = join(__dirname, 'loaders')
10
+ const settings = safeLoad(readFileSync(configPath), 'utf8')[env.NODE_ENV]
11
+
12
+ function removeOuterSlashes(string) {
13
+ return string.replace(/^\/*/, '').replace(/\/*$/, '')
14
+ }
15
+
16
+ function formatPublicPath(host = '', path = '') {
17
+ let formattedHost = removeOuterSlashes(host)
18
+ if (formattedHost && !/^http/i.test(formattedHost)) {
19
+ formattedHost = `//${formattedHost}`
20
+ }
21
+ const formattedPath = removeOuterSlashes(path)
22
+ return `${formattedHost}/${formattedPath}/`
23
+ }
24
+
25
+ const output = {
26
+ path: resolve('public', settings.public_output_path),
27
+ publicPath: formatPublicPath(env.ASSET_HOST, settings.public_output_path)
28
+ }
29
+
30
+ module.exports = {
31
+ settings,
32
+ env,
33
+ loadersDir,
34
+ output
35
+ }
@@ -0,0 +1,32 @@
1
+ // Note: You must restart bin/webpack-dev-server for changes to take effect
2
+
3
+ const merge = require('webpack-merge')
4
+ const sharedConfig = require('./shared.js')
5
+ const { settings, output } = require('./configuration.js')
6
+
7
+ module.exports = merge(sharedConfig, {
8
+ devtool: 'cheap-eval-source-map',
9
+
10
+ stats: {
11
+ errorDetails: true
12
+ },
13
+
14
+ output: {
15
+ pathinfo: true
16
+ },
17
+
18
+ devServer: {
19
+ clientLogLevel: 'none',
20
+ https: settings.dev_server.https,
21
+ host: settings.dev_server.host,
22
+ port: settings.dev_server.port,
23
+ contentBase: output.path,
24
+ publicPath: output.publicPath,
25
+ compress: true,
26
+ headers: { 'Access-Control-Allow-Origin': '*' },
27
+ historyApiFallback: true,
28
+ watchOptions: {
29
+ ignored: /node_modules/
30
+ }
31
+ }
32
+ })
@@ -0,0 +1,12 @@
1
+ const { env, publicPath } = require('../configuration.js')
2
+
3
+ module.exports = {
4
+ test: /\.(jpg|jpeg|png|gif|svg|eot|ttf|woff|woff2)$/i,
5
+ use: [{
6
+ loader: 'file-loader',
7
+ options: {
8
+ publicPath,
9
+ name: env.NODE_ENV === 'production' ? '[name]-[hash].[ext]' : '[name].[ext]'
10
+ }
11
+ }]
12
+ }
@@ -0,0 +1,5 @@
1
+ module.exports = {
2
+ test: /\.js(\.erb)?$/,
3
+ exclude: /node_modules/,
4
+ loader: 'babel-loader'
5
+ }
@@ -0,0 +1,4 @@
1
+ module.exports = {
2
+ test: /\.coffee(\.erb)?$/,
3
+ loader: 'coffee-loader'
4
+ }
@@ -0,0 +1,9 @@
1
+ module.exports = {
2
+ test: /\.erb$/,
3
+ enforce: 'pre',
4
+ exclude: /node_modules/,
5
+ loader: 'rails-erb-loader',
6
+ options: {
7
+ runner: 'bin/rails runner'
8
+ }
9
+ }
@@ -0,0 +1,5 @@
1
+ module.exports = {
2
+ test: /\.(js|jsx)?(\.erb)?$/,
3
+ exclude: /node_modules/,
4
+ loader: 'babel-loader'
5
+ }
@@ -0,0 +1,15 @@
1
+ const ExtractTextPlugin = require('extract-text-webpack-plugin')
2
+ const { env } = require('../configuration.js')
3
+
4
+ module.exports = {
5
+ test: /\.(scss|sass|css)$/i,
6
+ use: ExtractTextPlugin.extract({
7
+ fallback: 'style-loader',
8
+ use: [
9
+ { loader: 'css-loader', options: { minimize: env.NODE_ENV === 'production' } },
10
+ { loader: 'postcss-loader', options: { sourceMap: true } },
11
+ 'resolve-url-loader',
12
+ { loader: 'sass-loader', options: { sourceMap: true } }
13
+ ]
14
+ })
15
+ }
@@ -0,0 +1,35 @@
1
+ // Note: You must restart bin/webpack-dev-server for changes to take effect
2
+
3
+ /* eslint global-require: 0 */
4
+
5
+ const webpack = require('webpack')
6
+ const merge = require('webpack-merge')
7
+ const CompressionPlugin = require('compression-webpack-plugin')
8
+ const sharedConfig = require('./shared.js')
9
+
10
+ module.exports = merge(sharedConfig, {
11
+ output: { filename: '[name]-[chunkhash].js' },
12
+ devtool: 'source-map',
13
+ stats: 'normal',
14
+
15
+ plugins: [
16
+ new webpack.optimize.UglifyJsPlugin({
17
+ minimize: true,
18
+ sourceMap: true,
19
+
20
+ compress: {
21
+ warnings: false
22
+ },
23
+
24
+ output: {
25
+ comments: false
26
+ }
27
+ }),
28
+
29
+ new CompressionPlugin({
30
+ asset: '[path].gz[query]',
31
+ algorithm: 'gzip',
32
+ test: /\.(js|css|html|json|ico|svg|eot|otf|ttf)$/
33
+ })
34
+ ]
35
+ })
@@ -0,0 +1,58 @@
1
+ // Note: You must restart bin/webpack-dev-server for changes to take effect
2
+
3
+ /* eslint global-require: 0 */
4
+ /* eslint import/no-dynamic-require: 0 */
5
+
6
+ const webpack = require('webpack')
7
+ const { basename, dirname, join, relative, resolve } = require('path')
8
+ const { sync } = require('glob')
9
+ const ExtractTextPlugin = require('extract-text-webpack-plugin')
10
+ const ManifestPlugin = require('webpack-manifest-plugin')
11
+ const extname = require('path-complete-extname')
12
+ const { env, settings, output, loadersDir } = require('./configuration.js')
13
+
14
+ const extensionGlob = `**/*{${settings.extensions.join(',')}}*`
15
+ const entryPath = join(settings.source_path, settings.source_entry_path)
16
+ const packPaths = sync(join(entryPath, extensionGlob))
17
+
18
+ module.exports = {
19
+ entry: packPaths.reduce(
20
+ (map, entry) => {
21
+ const localMap = map
22
+ const namespace = relative(join(entryPath), dirname(entry))
23
+ localMap[join(namespace, basename(entry, extname(entry)))] = resolve(entry)
24
+ return localMap
25
+ }, {}
26
+ ),
27
+
28
+ output: {
29
+ filename: '[name].js',
30
+ path: output.path,
31
+ publicPath: output.publicPath
32
+ },
33
+
34
+ module: {
35
+ rules: sync(join(loadersDir, '*.js')).map(loader => require(loader))
36
+ },
37
+
38
+ plugins: [
39
+ new webpack.EnvironmentPlugin(JSON.parse(JSON.stringify(env))),
40
+ new ExtractTextPlugin(env.NODE_ENV === 'production' ? '[name]-[hash].css' : '[name].css'),
41
+ new ManifestPlugin({
42
+ publicPath: output.publicPath,
43
+ writeToFileEmit: true
44
+ })
45
+ ],
46
+
47
+ resolve: {
48
+ extensions: settings.extensions,
49
+ modules: [
50
+ resolve(settings.source_path),
51
+ 'node_modules'
52
+ ]
53
+ },
54
+
55
+ resolveLoader: {
56
+ modules: ['node_modules']
57
+ }
58
+ }
@@ -0,0 +1,6 @@
1
+ // Note: You must restart bin/webpack-dev-server for changes to take effect
2
+
3
+ const merge = require('webpack-merge')
4
+ const sharedConfig = require('./shared.js')
5
+
6
+ module.exports = merge(sharedConfig, {})
@@ -0,0 +1,38 @@
1
+ # Note: You must restart bin/webpack-dev-server for changes to take effect
2
+
3
+ default: &default
4
+ source_path: app/javascript
5
+ source_entry_path: packs
6
+ public_output_path: packs
7
+
8
+ extensions:
9
+ - .coffee
10
+ - .erb
11
+ - .js
12
+ - .jsx
13
+ - .ts
14
+ - .vue
15
+ - .sass
16
+ - .scss
17
+ - .css
18
+ - .png
19
+ - .svg
20
+ - .gif
21
+ - .jpeg
22
+ - .jpg
23
+
24
+ development:
25
+ <<: *default
26
+
27
+ dev_server:
28
+ host: 0.0.0.0
29
+ port: 8080
30
+ https: false
31
+
32
+ test:
33
+ <<: *default
34
+
35
+ public_output_path: packs-test
36
+
37
+ production:
38
+ <<: *default
@@ -0,0 +1,250 @@
1
+ {
2
+ "name": "__PROJECT_NAME__",
3
+ "version": "1.0.0",
4
+ "lockfileVersion": 1,
5
+ "requires": true,
6
+ "dependencies": {
7
+ "ajv": {
8
+ "version": "5.2.2",
9
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.2.tgz",
10
+ "integrity": "sha1-R8aNaehvXZUxA7AHSpQw3GPaXjk=",
11
+ "requires": {
12
+ "co": "4.6.0",
13
+ "fast-deep-equal": "1.0.0",
14
+ "json-schema-traverse": "0.3.1",
15
+ "json-stable-stringify": "1.0.1"
16
+ }
17
+ },
18
+ "async": {
19
+ "version": "2.5.0",
20
+ "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz",
21
+ "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==",
22
+ "requires": {
23
+ "lodash": "4.17.4"
24
+ }
25
+ },
26
+ "balanced-match": {
27
+ "version": "1.0.0",
28
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
29
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
30
+ },
31
+ "big.js": {
32
+ "version": "3.1.3",
33
+ "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz",
34
+ "integrity": "sha1-TK2iGTZS6zyp7I5VyQFWacmAaXg="
35
+ },
36
+ "brace-expansion": {
37
+ "version": "1.1.8",
38
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
39
+ "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
40
+ "requires": {
41
+ "balanced-match": "1.0.0",
42
+ "concat-map": "0.0.1"
43
+ }
44
+ },
45
+ "co": {
46
+ "version": "4.6.0",
47
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
48
+ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
49
+ },
50
+ "concat-map": {
51
+ "version": "0.0.1",
52
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
53
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
54
+ },
55
+ "emojis-list": {
56
+ "version": "2.1.0",
57
+ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
58
+ "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k="
59
+ },
60
+ "extract-text-webpack-plugin": {
61
+ "version": "3.0.0",
62
+ "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.0.tgz",
63
+ "integrity": "sha1-kMqnkHvESfM1AF46x1MrQbAN5hI=",
64
+ "requires": {
65
+ "async": "2.5.0",
66
+ "loader-utils": "1.1.0",
67
+ "schema-utils": "0.3.0",
68
+ "webpack-sources": "1.0.1"
69
+ }
70
+ },
71
+ "fast-deep-equal": {
72
+ "version": "1.0.0",
73
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz",
74
+ "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8="
75
+ },
76
+ "fs-extra": {
77
+ "version": "0.30.0",
78
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz",
79
+ "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=",
80
+ "requires": {
81
+ "graceful-fs": "4.1.11",
82
+ "jsonfile": "2.4.0",
83
+ "klaw": "1.3.1",
84
+ "path-is-absolute": "1.0.1",
85
+ "rimraf": "2.6.1"
86
+ }
87
+ },
88
+ "fs.realpath": {
89
+ "version": "1.0.0",
90
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
91
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
92
+ },
93
+ "glob": {
94
+ "version": "7.1.2",
95
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
96
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
97
+ "requires": {
98
+ "fs.realpath": "1.0.0",
99
+ "inflight": "1.0.6",
100
+ "inherits": "2.0.3",
101
+ "minimatch": "3.0.4",
102
+ "once": "1.4.0",
103
+ "path-is-absolute": "1.0.1"
104
+ }
105
+ },
106
+ "graceful-fs": {
107
+ "version": "4.1.11",
108
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
109
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
110
+ },
111
+ "inflight": {
112
+ "version": "1.0.6",
113
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
114
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
115
+ "requires": {
116
+ "once": "1.4.0",
117
+ "wrappy": "1.0.2"
118
+ }
119
+ },
120
+ "inherits": {
121
+ "version": "2.0.3",
122
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
123
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
124
+ },
125
+ "json-schema-traverse": {
126
+ "version": "0.3.1",
127
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
128
+ "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A="
129
+ },
130
+ "json-stable-stringify": {
131
+ "version": "1.0.1",
132
+ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
133
+ "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
134
+ "requires": {
135
+ "jsonify": "0.0.0"
136
+ }
137
+ },
138
+ "json5": {
139
+ "version": "0.5.1",
140
+ "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
141
+ "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE="
142
+ },
143
+ "jsonfile": {
144
+ "version": "2.4.0",
145
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
146
+ "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
147
+ "requires": {
148
+ "graceful-fs": "4.1.11"
149
+ }
150
+ },
151
+ "jsonify": {
152
+ "version": "0.0.0",
153
+ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
154
+ "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM="
155
+ },
156
+ "klaw": {
157
+ "version": "1.3.1",
158
+ "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
159
+ "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=",
160
+ "requires": {
161
+ "graceful-fs": "4.1.11"
162
+ }
163
+ },
164
+ "loader-utils": {
165
+ "version": "1.1.0",
166
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz",
167
+ "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=",
168
+ "requires": {
169
+ "big.js": "3.1.3",
170
+ "emojis-list": "2.1.0",
171
+ "json5": "0.5.1"
172
+ }
173
+ },
174
+ "lodash": {
175
+ "version": "4.17.4",
176
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
177
+ "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4="
178
+ },
179
+ "minimatch": {
180
+ "version": "3.0.4",
181
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
182
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
183
+ "requires": {
184
+ "brace-expansion": "1.1.8"
185
+ }
186
+ },
187
+ "once": {
188
+ "version": "1.4.0",
189
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
190
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
191
+ "requires": {
192
+ "wrappy": "1.0.2"
193
+ }
194
+ },
195
+ "path-is-absolute": {
196
+ "version": "1.0.1",
197
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
198
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
199
+ },
200
+ "rimraf": {
201
+ "version": "2.6.1",
202
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz",
203
+ "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=",
204
+ "requires": {
205
+ "glob": "7.1.2"
206
+ }
207
+ },
208
+ "schema-utils": {
209
+ "version": "0.3.0",
210
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz",
211
+ "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=",
212
+ "requires": {
213
+ "ajv": "5.2.2"
214
+ }
215
+ },
216
+ "source-list-map": {
217
+ "version": "2.0.0",
218
+ "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz",
219
+ "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A=="
220
+ },
221
+ "source-map": {
222
+ "version": "0.5.7",
223
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
224
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
225
+ },
226
+ "webpack-manifest-plugin": {
227
+ "version": "1.3.1",
228
+ "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-1.3.1.tgz",
229
+ "integrity": "sha512-OW7in/4VksQVnQcDJClv7YnOs/ruOqzPriT46z+qe6i1qINfZkmCNoxNG3r5J19VBSmO0KF1vn3Ute0yTKaeHQ==",
230
+ "requires": {
231
+ "fs-extra": "0.30.0",
232
+ "lodash": "4.17.4"
233
+ }
234
+ },
235
+ "webpack-sources": {
236
+ "version": "1.0.1",
237
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.0.1.tgz",
238
+ "integrity": "sha512-05tMxipUCwHqYaVS8xc7sYPTly8PzXayRCB4dTxLhWTqlKUiwH6ezmEe0OSreL1c30LAuA3Zqmc+uEBUGFJDjw==",
239
+ "requires": {
240
+ "source-list-map": "2.0.0",
241
+ "source-map": "0.5.7"
242
+ }
243
+ },
244
+ "wrappy": {
245
+ "version": "1.0.2",
246
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
247
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
248
+ }
249
+ }
250
+ }