@@ -20,6 +20,7 @@ coverage | |||
public/system | |||
public/assets | |||
public/packs | |||
public/packs-test | |||
.env | |||
.env.production | |||
node_modules/ | |||
@@ -5,7 +5,7 @@ cache: | |||
directories: | |||
- node_modules | |||
- public/assets | |||
- public/packs | |||
- public/packs-test | |||
dist: trusty | |||
sudo: false | |||
@@ -59,7 +59,7 @@ gem 'sprockets-rails', '~> 3.2', require: 'sprockets/railtie' | |||
gem 'statsd-instrument', '~> 2.1' | |||
gem 'twitter-text', '~> 1.14' | |||
gem 'tzinfo-data', '~> 1.2017' | |||
gem 'webpacker', '~> 1.2' | |||
gem 'webpacker', '~> 2.0' | |||
group :development, :test do | |||
gem 'fabrication', '~> 2.16' | |||
@@ -461,7 +461,7 @@ GEM | |||
addressable (>= 2.3.6) | |||
crack (>= 0.3.2) | |||
hashdiff | |||
webpacker (1.2) | |||
webpacker (2.0) | |||
activesupport (>= 4.2) | |||
multi_json (~> 1.2) | |||
railties (>= 4.2) | |||
@@ -558,7 +558,7 @@ DEPENDENCIES | |||
tzinfo-data (~> 1.2017) | |||
uglifier (~> 3.2) | |||
webmock (~> 3.0) | |||
webpacker (~> 1.2) | |||
webpacker (~> 2.0) | |||
RUBY VERSION | |||
ruby 2.4.1p111 | |||
@@ -5,29 +5,24 @@ require "shellwords" | |||
require "yaml" | |||
ENV["RAILS_ENV"] ||= "development" | |||
RAILS_ENV = ENV["RAILS_ENV"] | |||
RAILS_ENV = ENV["RAILS_ENV"] | |||
ENV["NODE_ENV"] ||= RAILS_ENV | |||
NODE_ENV = ENV["NODE_ENV"] | |||
NODE_ENV = ENV["NODE_ENV"] | |||
APP_PATH = File.expand_path("../", __dir__) | |||
CONFIG_PATH = File.join(APP_PATH, "config/webpack/paths.yml") | |||
APP_PATH = File.expand_path("../", __dir__) | |||
NODE_MODULES_PATH = File.join(APP_PATH, "node_modules") | |||
WEBPACK_CONFIG = File.join(APP_PATH, "config/webpack/#{NODE_ENV}.js") | |||
begin | |||
paths = YAML.load(File.read(CONFIG_PATH))[NODE_ENV] | |||
NODE_MODULES_PATH = File.join(APP_PATH.shellescape, paths["node_modules"]) | |||
WEBPACK_CONFIG_PATH = File.join(APP_PATH.shellescape, paths["config"]) | |||
rescue Errno::ENOENT, NoMethodError | |||
puts "Configuration not found in config/webpack/paths.yml" | |||
unless File.exist?(WEBPACK_CONFIG) | |||
puts "Webpack configuration not found." | |||
puts "Please run bundle exec rails webpacker:install to install webpacker" | |||
exit! | |||
end | |||
WEBPACK_BIN = "#{NODE_MODULES_PATH}/.bin/webpack" | |||
WEBPACK_CONFIG = "#{WEBPACK_CONFIG_PATH}/#{NODE_ENV}.js" | |||
newenv = { "NODE_PATH" => NODE_MODULES_PATH.shellescape } | |||
cmdline = ["yarn", "run", "webpack", "--", "--config", WEBPACK_CONFIG] + ARGV | |||
Dir.chdir(APP_PATH) do | |||
exec "NODE_PATH=#{NODE_MODULES_PATH} #{WEBPACK_BIN} --config #{WEBPACK_CONFIG}" \ | |||
" #{ARGV.join(" ")}" | |||
exec newenv, *cmdline | |||
end |
@@ -10,24 +10,34 @@ RAILS_ENV = ENV["RAILS_ENV"] | |||
ENV["NODE_ENV"] ||= RAILS_ENV | |||
NODE_ENV = ENV["NODE_ENV"] | |||
APP_PATH = File.expand_path("../", __dir__) | |||
CONFIG_PATH = File.join(APP_PATH, "config/webpack/paths.yml") | |||
APP_PATH = File.expand_path("../", __dir__) | |||
CONFIG_FILE = File.join(APP_PATH, "config/webpacker.yml") | |||
NODE_MODULES_PATH = File.join(APP_PATH, "node_modules") | |||
WEBPACK_CONFIG = File.join(APP_PATH, "config/webpack/development.js") | |||
def args(key) | |||
index = ARGV.index(key) | |||
index ? ARGV[index + 1] : nil | |||
end | |||
begin | |||
paths = YAML.load(File.read(CONFIG_PATH))[NODE_ENV] | |||
dev_server = YAML.load_file(CONFIG_FILE)["development"]["dev_server"] | |||
NODE_MODULES_PATH = File.join(APP_PATH.shellescape, paths["node_modules"]) | |||
WEBPACK_CONFIG_PATH = File.join(APP_PATH.shellescape, paths["config"]) | |||
DEV_SERVER_HOST = "http#{"s" if args('--https') || dev_server["https"]}://#{args('--host') || dev_server["host"]}:#{args('--port') || dev_server["port"]}" | |||
WEBPACK_BIN = "#{NODE_MODULES_PATH}/.bin/webpack-dev-server" | |||
DEV_SERVER_CONFIG = "#{WEBPACK_CONFIG_PATH}/development.server.js" | |||
rescue Errno::ENOENT, NoMethodError | |||
puts "Configuration not found in config/webpacker/paths.yml." | |||
puts "Webpack dev_server configuration not found in #{CONFIG_FILE}." | |||
puts "Please run bundle exec rails webpacker:install to install webpacker" | |||
exit! | |||
end | |||
newenv = { | |||
"NODE_PATH" => NODE_MODULES_PATH.shellescape, | |||
"ASSET_HOST" => DEV_SERVER_HOST.shellescape | |||
}.freeze | |||
cmdline = ["yarn", "run", "webpack-dev-server", "--", "--progress", "--color", "--config", WEBPACK_CONFIG] + ARGV | |||
Dir.chdir(APP_PATH) do | |||
exec "NODE_PATH=#{NODE_MODULES_PATH} #{WEBPACK_BIN} --progress --color " \ | |||
"--config #{DEV_SERVER_CONFIG} #{ARGV.join(" ")}" | |||
exec newenv, *cmdline | |||
end |
@@ -1,11 +0,0 @@ | |||
#!/usr/bin/env ruby | |||
VENDOR_PATH = File.expand_path('..', __dir__) | |||
Dir.chdir(VENDOR_PATH) do | |||
begin | |||
exec "yarnpkg #{ARGV.join(" ")}" | |||
rescue Errno::ENOENT | |||
$stderr.puts "Yarn executable was not detected in the system." | |||
$stderr.puts "Download Yarn at https://yarnpkg.com/en/docs/install" | |||
exit 1 | |||
end | |||
end |
@@ -1,26 +1,35 @@ | |||
// Common configuration for webpacker loaded from config/webpack/paths.yml | |||
// Common configuration for webpacker loaded from config/webpacker.yml | |||
const { join, resolve } = require('path'); | |||
const { env } = require('process'); | |||
const { safeLoad } = require('js-yaml'); | |||
const { readFileSync } = require('fs'); | |||
const configPath = resolve('config', 'webpack'); | |||
const configPath = resolve('config', 'webpacker.yml'); | |||
const loadersDir = join(__dirname, 'loaders'); | |||
const paths = safeLoad(readFileSync(join(configPath, 'paths.yml'), 'utf8'))[env.NODE_ENV || 'development']; | |||
const devServer = safeLoad(readFileSync(join(configPath, 'development.server.yml'), 'utf8'))[env.NODE_ENV || 'development']; | |||
const settings = safeLoad(readFileSync(configPath), 'utf8')[env.NODE_ENV]; | |||
// Compute public path based on environment and CDN_HOST in production | |||
const ifHasCDN = env.CDN_HOST !== undefined && env.NODE_ENV === 'production'; | |||
const devServerUrl = `http://${env.LOCAL_DOMAIN || devServer.host}:${devServer.port}/${paths.entry}/`; | |||
const publicUrl = ifHasCDN ? `${env.CDN_HOST}/${paths.entry}/` : `/${paths.entry}/`; | |||
const publicPath = env.NODE_ENV !== 'production' ? devServerUrl : publicUrl; | |||
function removeOuterSlashes(string) { | |||
return string.replace(/^\/*/, '').replace(/\/*$/, ''); | |||
} | |||
function formatPublicPath(host = '', path = '') { | |||
let formattedHost = removeOuterSlashes(host); | |||
if (formattedHost && !/^http/i.test(formattedHost)) { | |||
formattedHost = `//${formattedHost}`; | |||
} | |||
const formattedPath = removeOuterSlashes(path); | |||
return `${formattedHost}/${formattedPath}/`; | |||
} | |||
const output = { | |||
path: resolve('public', settings.public_output_path), | |||
publicPath: formatPublicPath(env.ASSET_HOST, settings.public_output_path), | |||
}; | |||
module.exports = { | |||
devServer, | |||
settings, | |||
env, | |||
paths, | |||
loadersDir, | |||
publicUrl, | |||
publicPath, | |||
output, | |||
}; |
@@ -2,6 +2,7 @@ | |||
const merge = require('webpack-merge'); | |||
const sharedConfig = require('./shared.js'); | |||
const { settings, output } = require('./configuration.js'); | |||
module.exports = merge(sharedConfig, { | |||
devtool: 'cheap-module-eval-source-map', | |||
@@ -13,4 +14,19 @@ module.exports = merge(sharedConfig, { | |||
output: { | |||
pathinfo: true, | |||
}, | |||
devServer: { | |||
clientLogLevel: 'none', | |||
https: settings.dev_server.https, | |||
host: settings.dev_server.host, | |||
port: settings.dev_server.port, | |||
contentBase: output.path, | |||
publicPath: output.publicPath, | |||
compress: true, | |||
headers: { 'Access-Control-Allow-Origin': '*' }, | |||
historyApiFallback: true, | |||
watchOptions: { | |||
ignored: /node_modules/, | |||
}, | |||
}, | |||
}); |
@@ -1,20 +0,0 @@ | |||
// Note: You must restart bin/webpack-dev-server for changes to take effect | |||
const { resolve } = require('path'); | |||
const { env } = require('process'); | |||
const merge = require('webpack-merge'); | |||
const devConfig = require('./development.js'); | |||
const { devServer, publicPath, paths } = require('./configuration.js'); | |||
module.exports = merge(devConfig, { | |||
devServer: { | |||
host: env.LOCAL_DOMAIN ? '0.0.0.0' : devServer.host, | |||
port: devServer.port, | |||
headers: { 'Access-Control-Allow-Origin': '*' }, | |||
compress: true, | |||
historyApiFallback: true, | |||
contentBase: resolve(paths.output, paths.entry), | |||
publicPath, | |||
disableHostCheck: true, | |||
}, | |||
}); |
@@ -1,17 +0,0 @@ | |||
# Note: You must restart bin/webpack-dev-server for changes to take effect | |||
default: &default | |||
enabled: true | |||
host: localhost | |||
port: 8080 | |||
development: | |||
<<: *default | |||
test: | |||
<<: *default | |||
enabled: false | |||
production: | |||
<<: *default | |||
enabled: false |
@@ -7,7 +7,8 @@ module.exports = { | |||
fallback: 'style-loader', | |||
use: [ | |||
{ loader: 'css-loader', options: { minimize: env.NODE_ENV === 'production' } }, | |||
'postcss-loader', | |||
{ loader: 'postcss-loader', options: { sourceMap: true } }, | |||
'resolve-url-loader', | |||
'sass-loader', | |||
], | |||
}), | |||
@@ -7,26 +7,27 @@ const sharedConfig = require('./shared.js'); | |||
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin; | |||
module.exports = merge(sharedConfig, { | |||
devtool: 'source-map', // separate sourcemap file, suitable for production | |||
output: { filename: '[name]-[chunkhash].js' }, | |||
devtool: 'source-map', // separate sourcemap file, suitable for production | |||
stats: 'normal', | |||
plugins: [ | |||
new webpack.optimize.UglifyJsPlugin({ | |||
compress: true, | |||
sourceMap: true, | |||
mangle: true, | |||
compress: { | |||
warnings: false, | |||
}, | |||
output: { | |||
comments: false, | |||
}, | |||
sourceMap: true, | |||
}), | |||
new CompressionPlugin({ | |||
asset: '[path].gz[query]', | |||
algorithm: 'gzip', | |||
test: /\.(js|css|svg|eot|ttf|woff|woff2)$/, | |||
test: /\.(js|css|html|json|ico|svg|eot|otf|ttf)$/, | |||
}), | |||
new BundleAnalyzerPlugin({ // generates report.html and stats.json | |||
analyzerMode: 'static', | |||
@@ -7,21 +7,22 @@ const { sync } = require('glob'); | |||
const ExtractTextPlugin = require('extract-text-webpack-plugin'); | |||
const ManifestPlugin = require('webpack-manifest-plugin'); | |||
const extname = require('path-complete-extname'); | |||
const { env, paths, publicPath, loadersDir } = require('./configuration.js'); | |||
const { env, settings, output, loadersDir } = require('./configuration.js'); | |||
const localePackPaths = require('./generateLocalePacks'); | |||
const extensionGlob = `**/*{${paths.extensions.join(',')}}*`; | |||
const packPaths = sync(join(paths.source, paths.entry, extensionGlob)); | |||
const entryPacks = [].concat(packPaths).concat(localePackPaths).filter(path => path !== join(paths.source, paths.entry, 'custom.js')); | |||
const extensionGlob = `**/*{${settings.extensions.join(',')}}*`; | |||
const entryPath = join(settings.source_path, settings.source_entry_path); | |||
const packPaths = sync(join(entryPath, extensionGlob)); | |||
const entryPacks = [...packPaths, ...localePackPaths].filter(path => path !== join(entryPath, 'custom.js')); | |||
const customApplicationStyle = resolve(join(paths.source, 'styles/custom.scss')); | |||
const originalApplicationStyle = resolve(join(paths.source, 'styles/application.scss')); | |||
const customApplicationStyle = resolve(join(settings.source_path, 'styles/custom.scss')); | |||
const originalApplicationStyle = resolve(join(settings.source_path, 'styles/application.scss')); | |||
module.exports = { | |||
entry: entryPacks.reduce( | |||
(map, entry) => { | |||
const localMap = map; | |||
let namespace = relative(join(paths.source, paths.entry), dirname(entry)); | |||
let namespace = relative(join(entryPath), dirname(entry)); | |||
if (namespace === join('..', '..', '..', 'tmp', 'packs')) { | |||
namespace = ''; // generated by generateLocalePacks.js | |||
} | |||
@@ -33,8 +34,8 @@ module.exports = { | |||
output: { | |||
filename: '[name].js', | |||
chunkFilename: '[name]-[chunkhash].js', | |||
path: resolve(paths.output, paths.entry), | |||
publicPath, | |||
path: output.path, | |||
publicPath: output.publicPath, | |||
}, | |||
module: { | |||
@@ -44,7 +45,10 @@ module.exports = { | |||
plugins: [ | |||
new webpack.EnvironmentPlugin(JSON.parse(JSON.stringify(env))), | |||
new ExtractTextPlugin(env.NODE_ENV === 'production' ? '[name]-[hash].css' : '[name].css'), | |||
new ManifestPlugin({ fileName: paths.manifest, publicPath, writeToFileEmit: true }), | |||
new ManifestPlugin({ | |||
publicPath: output.publicPath, | |||
writeToFileEmit: true, | |||
}), | |||
new webpack.optimize.CommonsChunkPlugin({ | |||
name: 'common', | |||
minChunks: (module, count) => { | |||
@@ -67,15 +71,15 @@ module.exports = { | |||
'mastodon-application-style': existsSync(customApplicationStyle) ? | |||
customApplicationStyle : originalApplicationStyle, | |||
}, | |||
extensions: paths.extensions, | |||
extensions: settings.extensions, | |||
modules: [ | |||
resolve(paths.source), | |||
resolve(paths.node_modules), | |||
resolve(settings.source_path), | |||
'node_modules', | |||
], | |||
}, | |||
resolveLoader: { | |||
modules: [paths.node_modules], | |||
modules: ['node_modules'], | |||
}, | |||
node: { | |||
@@ -1,12 +1,9 @@ | |||
# Note: You must restart bin/webpack-dev-server for changes to take effect | |||
default: &default | |||
config: config/webpack | |||
entry: packs | |||
output: public | |||
manifest: manifest.json | |||
node_modules: node_modules | |||
source: app/javascript | |||
source_path: app/javascript | |||
source_entry_path: packs | |||
public_output_path: packs | |||
extensions: | |||
- .js | |||
- .sass | |||
@@ -21,9 +18,15 @@ default: &default | |||
development: | |||
<<: *default | |||
dev_server: | |||
host: 0.0.0.0 | |||
port: 8080 | |||
https: false | |||
test: | |||
<<: *default | |||
manifest: manifest-test.json | |||
public_output_path: packs-test | |||
production: | |||
<<: *default |
@@ -3,8 +3,8 @@ | |||
"license": "AGPL-3.0", | |||
"scripts": { | |||
"postversion": "git push --tags", | |||
"build:development": "cross-env NODE_ENV=development yarn webpack -- --config config/webpack/development.js", | |||
"build:production": "cross-env NODE_ENV=production yarn webpack -- --config config/webpack/production.js", | |||
"build:development": "cross-env RAILS_ENV=development ASSET_HOST=http://0.0.0.0:8080 ./bin/webpack", | |||
"build:production": "cross-env RAILS_ENV=production ./bin/webpack", | |||
"manage:translations": "node ./config/webpack/translationRunner.js", | |||
"start": "rimraf ./tmp/streaming && babel ./streaming/index.js --out-dir ./tmp && node ./tmp/streaming/index.js", | |||
"storybook": "cross-env NODE_ENV=test start-storybook -s ./public -p 9001 -c storybook", | |||
@@ -97,6 +97,7 @@ | |||
"redux-thunk": "^2.2.0", | |||
"requestidlecallback": "^0.3.0", | |||
"reselect": "^3.0.1", | |||
"resolve-url-loader": "^2.0.2", | |||
"rimraf": "^2.6.1", | |||
"sass-loader": "^6.0.5", | |||
"stringz": "^0.2.1", | |||
@@ -163,6 +163,18 @@ acorn@^5.0.0, acorn@^5.0.1, acorn@^5.0.3: | |||
version "5.0.3" | |||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.0.3.tgz#c460df08491463f028ccb82eab3730bf01087b3d" | |||
adjust-sourcemap-loader@^1.1.0: | |||
version "1.1.0" | |||
resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-1.1.0.tgz#412d92404eb61e4113635012cba53a33d008e0e2" | |||
dependencies: | |||
assert "^1.3.0" | |||
camelcase "^1.2.1" | |||
loader-utils "^1.0.2" | |||
lodash.assign "^4.0.1" | |||
lodash.defaults "^3.1.2" | |||
object-path "^0.9.2" | |||
regex-parser "^2.2.1" | |||
airbnb-js-shims@^1.1.1: | |||
version "1.1.1" | |||
resolved "https://registry.yarnpkg.com/airbnb-js-shims/-/airbnb-js-shims-1.1.1.tgz#27224f0030f244e6570442ed1020772c1434aec2" | |||
@@ -342,7 +354,7 @@ assert-plus@^0.2.0: | |||
version "0.2.0" | |||
resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" | |||
assert@^1.1.1: | |||
assert@^1.1.1, assert@^1.3.0: | |||
version "1.4.1" | |||
resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" | |||
dependencies: | |||
@@ -386,6 +398,10 @@ asynckit@^0.4.0: | |||
version "0.4.0" | |||
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" | |||
atob@~1.1.0: | |||
version "1.1.3" | |||
resolved "https://registry.yarnpkg.com/atob/-/atob-1.1.3.tgz#95f13629b12c3a51a5d215abdce2aa9f32f80773" | |||
autoprefixer@^6.3.1: | |||
version "6.7.7" | |||
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014" | |||
@@ -1488,7 +1504,7 @@ camelcase-keys@^2.0.0: | |||
camelcase "^2.0.0" | |||
map-obj "^1.0.0" | |||
camelcase@^1.0.2: | |||
camelcase@^1.0.2, camelcase@^1.2.1: | |||
version "1.2.1" | |||
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" | |||
@@ -1500,7 +1516,7 @@ camelcase@^3.0.0: | |||
version "3.0.0" | |||
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" | |||
camelcase@^4.1.0: | |||
camelcase@^4.0.0, camelcase@^4.1.0: | |||
version "4.1.0" | |||
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" | |||
@@ -1823,7 +1839,11 @@ content-type@~1.0.2: | |||
version "1.0.2" | |||
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed" | |||
convert-source-map@^1.1.0: | |||
convert-source-map@^0.3.3: | |||
version "0.3.5" | |||
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" | |||
convert-source-map@^1.1.0, convert-source-map@^1.1.1: | |||
version "1.5.0" | |||
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" | |||
@@ -2007,6 +2027,15 @@ css-what@2.1: | |||
version "2.1.0" | |||
resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" | |||
css@^2.0.0: | |||
version "2.2.1" | |||
resolved "https://registry.yarnpkg.com/css/-/css-2.2.1.tgz#73a4c81de85db664d4ee674f7d47085e3b2d55dc" | |||
dependencies: | |||
inherits "^2.0.1" | |||
source-map "^0.1.38" | |||
source-map-resolve "^0.3.0" | |||
urix "^0.1.0" | |||
cssesc@^0.1.0: | |||
version "0.1.0" | |||
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" | |||
@@ -3914,7 +3943,7 @@ loader-utils@^0.2.16: | |||
json5 "^0.5.0" | |||
object-assign "^4.0.1" | |||
loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.x: | |||
loader-utils@^1.0.0, loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.x: | |||
version "1.1.0" | |||
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" | |||
dependencies: | |||
@@ -3948,6 +3977,18 @@ lodash._basecreate@^3.0.0: | |||
version "3.0.3" | |||
resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821" | |||
lodash._bindcallback@^3.0.0: | |||
version "3.0.1" | |||
resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e" | |||
lodash._createassigner@^3.0.0: | |||
version "3.1.1" | |||
resolved "https://registry.yarnpkg.com/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz#838a5bae2fdaca63ac22dee8e19fa4e6d6970b11" | |||
dependencies: | |||
lodash._bindcallback "^3.0.0" | |||
lodash._isiterateecall "^3.0.0" | |||
lodash.restparam "^3.0.0" | |||
lodash._getnative@^3.0.0: | |||
version "3.9.1" | |||
resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" | |||
@@ -3956,7 +3997,15 @@ lodash._isiterateecall@^3.0.0: | |||
version "3.0.9" | |||
resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" | |||
lodash.assign@^4.2.0: | |||
lodash.assign@^3.0.0: | |||
version "3.2.0" | |||
resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-3.2.0.tgz#3ce9f0234b4b2223e296b8fa0ac1fee8ebca64fa" | |||
dependencies: | |||
lodash._baseassign "^3.0.0" | |||
lodash._createassigner "^3.0.0" | |||
lodash.keys "^3.0.0" | |||
lodash.assign@^4.0.1, lodash.assign@^4.2.0: | |||
version "4.2.0" | |||
resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" | |||
@@ -3984,7 +4033,14 @@ lodash.create@3.1.1: | |||
lodash._basecreate "^3.0.0" | |||
lodash._isiterateecall "^3.0.0" | |||
lodash.defaults@^4.0.1: | |||
lodash.defaults@^3.1.2: | |||
version "3.1.2" | |||
resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-3.1.2.tgz#c7308b18dbf8bc9372d701a73493c61192bd2e2c" | |||
dependencies: | |||
lodash.assign "^3.0.0" | |||
lodash.restparam "^3.0.0" | |||
lodash.defaults@^4.0.0, lodash.defaults@^4.0.1: | |||
version "4.2.0" | |||
resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" | |||
@@ -4044,6 +4100,10 @@ lodash.reject@^4.4.0: | |||
version "4.6.0" | |||
resolved "https://registry.yarnpkg.com/lodash.reject/-/lodash.reject-4.6.0.tgz#80d6492dc1470864bbf583533b651f42a9f52415" | |||
lodash.restparam@^3.0.0: | |||
version "3.6.1" | |||
resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" | |||
lodash.some@^4.4.0: | |||
version "4.6.0" | |||
resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d" | |||
@@ -4516,6 +4576,10 @@ object-keys@^1.0.10, object-keys@^1.0.8: | |||
version "1.0.11" | |||
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" | |||
object-path@^0.9.2: | |||
version "0.9.2" | |||
resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.9.2.tgz#0fd9a74fc5fad1ae3968b586bda5c632bd6c05a5" | |||
object.assign@^4.0.4: | |||
version "4.0.4" | |||
resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.0.4.tgz#b1c9cc044ef1b9fe63606fc141abbb32e14730cc" | |||
@@ -5897,6 +5961,10 @@ regex-cache@^0.4.2: | |||
is-equal-shallow "^0.1.3" | |||
is-primitive "^2.0.0" | |||
regex-parser@^2.2.1: | |||
version "2.2.7" | |||
resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.7.tgz#bd090e09181849acc45457e765f7be2a63f50ef1" | |||
regexpu-core@^1.0.0: | |||
version "1.0.0" | |||
resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" | |||
@@ -6017,6 +6085,24 @@ resolve-from@^1.0.0: | |||
version "1.0.1" | |||
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" | |||
resolve-url-loader@^2.0.2: | |||
version "2.0.2" | |||
resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-2.0.2.tgz#c465e97ea0a4791f3961f766cea775ff2e3ceb8c" | |||
dependencies: | |||
adjust-sourcemap-loader "^1.1.0" | |||
camelcase "^4.0.0" | |||
convert-source-map "^1.1.1" | |||
loader-utils "^1.0.0" | |||
lodash.defaults "^4.0.0" | |||
rework "^1.0.1" | |||
rework-visit "^1.0.0" | |||
source-map "^0.5.6" | |||
urix "^0.1.0" | |||
resolve-url@~0.2.1: | |||
version "0.2.1" | |||
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" | |||
resolve@^1.1.6, resolve@^1.3.3: | |||
version "1.3.3" | |||
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5" | |||
@@ -6030,6 +6116,17 @@ restore-cursor@^1.0.1: | |||
exit-hook "^1.0.0" | |||
onetime "^1.0.0" | |||
rework-visit@^1.0.0: | |||
version "1.0.0" | |||
resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a" | |||
rework@^1.0.1: | |||
version "1.0.1" | |||
resolved "https://registry.yarnpkg.com/rework/-/rework-1.0.1.tgz#30806a841342b54510aa4110850cd48534144aa7" | |||
dependencies: | |||
convert-source-map "^0.3.3" | |||
css "^2.0.0" | |||
rgb@~0.1.0: | |||
version "0.1.0" | |||
resolved "https://registry.yarnpkg.com/rgb/-/rgb-0.1.0.tgz#be27b291e8feffeac1bd99729721bfa40fc037b5" | |||
@@ -6315,12 +6412,31 @@ source-list-map@^2.0.0: | |||
version "2.0.0" | |||
resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085" | |||
source-map-resolve@^0.3.0: | |||
version "0.3.1" | |||
resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.3.1.tgz#610f6122a445b8dd51535a2a71b783dfc1248761" | |||
dependencies: | |||
atob "~1.1.0" | |||
resolve-url "~0.2.1" | |||
source-map-url "~0.3.0" | |||
urix "~0.1.0" | |||
source-map-support@^0.4.2: | |||
version "0.4.15" | |||
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.15.tgz#03202df65c06d2bd8c7ec2362a193056fef8d3b1" | |||
dependencies: | |||
source-map "^0.5.6" | |||
source-map-url@~0.3.0: | |||
version "0.3.0" | |||
resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.3.0.tgz#7ecaf13b57bcd09da8a40c5d269db33799d4aaf9" | |||
source-map@^0.1.38: | |||
version "0.1.43" | |||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" | |||
dependencies: | |||
amdefine ">=0.0.4" | |||
source-map@^0.4.2: | |||
version "0.4.4" | |||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" | |||
@@ -6780,6 +6896,10 @@ unpipe@~1.0.0: | |||
version "1.0.0" | |||
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" | |||
urix@^0.1.0, urix@~0.1.0: | |||
version "0.1.0" | |||
resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" | |||
url-loader@^0.5.8: | |||
version "0.5.8" | |||
resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-0.5.8.tgz#b9183b1801e0f847718673673040bc9dc1c715c5" | |||