Add Sentry

This commit is contained in:
An Phan 2016-12-09 16:23:40 +08:00
parent b419299fbe
commit 09b15b9e66
No known key found for this signature in database
GPG key ID: 05536BB4BCDC02A2
11 changed files with 263 additions and 70 deletions

View file

@ -19,7 +19,7 @@ class Application extends IlluminateApplication
*
* @link https://github.com/phanan/koel/releases
*/
const VERSION = 'v3.4.1';
const KOEL_VERSION = 'v3.4.1';
/**
* We have merged public path and base path.
@ -99,7 +99,7 @@ class Application extends IlluminateApplication
} catch (Exception $e) {
Log::error($e);
return self::VERSION;
return self::KOEL_VERSION;
}
}
}

View file

@ -34,7 +34,10 @@ class Handler extends ExceptionHandler
*/
public function report(Exception $e)
{
return parent::report($e);
if ($this->shouldReport($e)) {
app('sentry')->captureException($e);
}
parent::report($e);
}
/**

View file

@ -38,8 +38,8 @@ class DataController extends Controller
'useYouTube' => YouTube::enabled(),
'allowDownload' => config('koel.download.allow'),
'cdnUrl' => app()->staticUrl(),
'currentVersion' => Application::VERSION,
'latestVersion' => auth()->user()->is_admin ? app()->getLatestVersion() : Application::VERSION,
'currentVersion' => Application::KOEL_VERSION,
'latestVersion' => auth()->user()->is_admin ? app()->getLatestVersion() : Application::KOEL_VERSION,
]);
}
}

View file

@ -12,7 +12,8 @@
"guzzlehttp/guzzle": "^6.1",
"tymon/jwt-auth": "^0.5.6",
"aws/aws-sdk-php-laravel": "^3.1",
"facebook/webdriver": "^1.2"
"facebook/webdriver": "^1.2",
"sentry/sentry-laravel": "^0.5.0"
},
"require-dev": {
"fzaninotto/faker": "~1.4",

119
composer.lock generated
View file

@ -4,8 +4,8 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"hash": "9216fb1e8ef42422a945b1ebc83e902a",
"content-hash": "9d176a92a6e8bf22d69a770843e8e013",
"hash": "f79521ac890ccb2cd8adb3e05124f2ca",
"content-hash": "2df0199a58da73ea5f5bdd18b128bd78",
"packages": [
{
"name": "aws/aws-sdk-php",
@ -1742,6 +1742,121 @@
],
"time": "2016-08-02 18:39:32"
},
{
"name": "sentry/sentry",
"version": "1.6.0",
"source": {
"type": "git",
"url": "https://github.com/getsentry/sentry-php.git",
"reference": "8bb36c8b918e63a08a2b13f31568808f1a7e6c20"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/getsentry/sentry-php/zipball/8bb36c8b918e63a08a2b13f31568808f1a7e6c20",
"reference": "8bb36c8b918e63a08a2b13f31568808f1a7e6c20",
"shasum": ""
},
"require": {
"ext-curl": "*",
"php": ">=5.2.4"
},
"conflict": {
"raven/raven": "*"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^1.8.0",
"monolog/monolog": "*",
"phpunit/phpunit": "^4.8 || ^5.0"
},
"suggest": {
"monolog/monolog": "Automatically capture Monolog events as breadcrumbs"
},
"bin": [
"bin/sentry"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.6.x-dev"
}
},
"autoload": {
"psr-0": {
"Raven_": "lib/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "David Cramer",
"email": "dcramer@gmail.com"
}
],
"description": "A PHP client for Sentry (http://getsentry.com)",
"homepage": "http://getsentry.com",
"keywords": [
"log",
"logging"
],
"time": "2016-12-09 03:40:24"
},
{
"name": "sentry/sentry-laravel",
"version": "0.5.0",
"source": {
"type": "git",
"url": "https://github.com/getsentry/sentry-laravel.git",
"reference": "9f5214529abf542bd6390799ec1e955a415853aa"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/getsentry/sentry-laravel/zipball/9f5214529abf542bd6390799ec1e955a415853aa",
"reference": "9f5214529abf542bd6390799ec1e955a415853aa",
"shasum": ""
},
"require": {
"illuminate/support": "4.*|5.*",
"php": ">=5.2.4",
"sentry/sentry": ">=1.6.0"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^1.8.0",
"phpunit/phpunit": "^4.6.6"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "0.5.x-dev"
}
},
"autoload": {
"psr-0": {
"Sentry\\SentryLaravel\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"Apache-2.0"
],
"authors": [
{
"name": "David Cramer",
"email": "dcramer@gmail.com"
}
],
"description": "Laravel integration for Sentry (https://sentry.io)",
"homepage": "https://sentry.io",
"keywords": [
"errors",
"laravel",
"logging",
"sentry"
],
"time": "2016-12-09 03:42:22"
},
{
"name": "swiftmailer/swiftmailer",
"version": "v5.4.3",

View file

@ -142,6 +142,7 @@ return [
Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class,
Tymon\JWTAuth\Providers\JWTAuthServiceProvider::class,
Aws\Laravel\AwsServiceProvider::class,
Sentry\SentryLaravel\SentryLaravelServiceProvider::class,
/*
* Application Service Providers...
@ -157,7 +158,6 @@ return [
App\Providers\DownloadServiceProvider::class,
App\Providers\BroadcastServiceProvider::class,
],
/*
@ -213,6 +213,7 @@ return [
'JWTAuth' => Tymon\JWTAuth\Facades\JWTAuth::class,
'JWTFactory' => Tymon\JWTAuth\Facades\JWTFactory::class,
'AWS' => Aws\Laravel\AwsFacade::class,
'Sentry' => Sentry\SentryLaravel\SentryFacade::class,
],

4
config/sentry.php Normal file
View file

@ -0,0 +1,4 @@
<?php
return [
'dsn' => 'https://766d8f0fc072470ba5ea0ef253fafc89:7afe15b230964479ade0580babafcd64@sentry.io/120890',
];

View file

@ -24,6 +24,7 @@
"nprogress": "^0.2.0",
"plyr": "1.5.x",
"rangeslider.js": "^2.2.1",
"raven-js": "^3.9.1",
"select": "^1.0.6",
"slugify": "^1.0.2",
"vue": "^2.0.1",
@ -51,6 +52,7 @@
"mocha": "^2.3.4",
"node-sass": "^3.4.2",
"postcss-cssnext": "^2.6.0",
"raven-js": "^3.9.1",
"sinon": "^1.17.2",
"vue-hot-reload-api": "^1.3.2",
"vueify": "^9.1.0",

View file

@ -1,7 +1,15 @@
import Vue from 'vue'
import Raven from 'raven-js'
import RavenVue from 'raven-js/plugins/vue'
import { event } from './utils'
import { http } from './services'
Raven
.config('https://766d8f0fc072470ba5ea0ef253fafc89@sentry.io/120890')
.addPlugin(RavenVue, Vue)
.install()
/**
* For Ancelot, the ancient cross of war
* for the holy town of Gods

46
webpack.config.js Normal file
View file

@ -0,0 +1,46 @@
var path = require('path')
module.exports = {
context: path.join(__dirname, 'resources/assets/js'),
entry: [
'./main.js'
],
module: {
rules: [
{
test: /\.vue$/,
loader: 'vue-loader',
options: {
// vue-loader options go here
}
},
{
test: /\.js$/,
loader: 'babel-loader',
exclude: /node_modules/
},
{
test: /\.(png|jpg|gif|svg)$/,
loader: 'file-loader',
options: {
name: '[name].[ext]?[hash]'
}
}
]
},
resolve: {
alias: {
'vue$': 'vue/dist/vue.common.js'
}
},
devServer: {
proxy: {
contentBase: '/',
'**': {
target: 'http://localhost:8000',
secure: false,
changeOrigin: true
}
}
}
}

135
yarn.lock
View file

@ -80,8 +80,8 @@ ajv-keywords@^1.0.0:
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.2.0.tgz#676c4f087bfe1e8b12dca6fda2f3c74f417b099c"
ajv@^4.7.0:
version "4.9.1"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.9.1.tgz#08e1b0a5fddc8b844d28ca7b03510e78812ee3a0"
version "4.9.2"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.9.2.tgz#3f7dcda95b0c34bceb2d69945117d146219f1a2c"
dependencies:
co "^4.6.0"
json-stable-stringify "^1.0.1"
@ -346,27 +346,27 @@ aws4@^1.2.1:
version "1.5.0"
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.5.0.tgz#0a29ffb79c31c9e712eeb087e8e7a64b4a56d755"
babel-code-frame@^6.16.0:
version "6.16.0"
resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.16.0.tgz#f90e60da0862909d3ce098733b5d3987c97cb8de"
babel-code-frame@^6.16.0, babel-code-frame@^6.20.0:
version "6.20.0"
resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.20.0.tgz#b968f839090f9a8bc6d41938fb96cb84f7387b26"
dependencies:
chalk "^1.1.0"
esutils "^2.0.2"
js-tokens "^2.0.0"
babel-core@^6.0.14, babel-core@^6.0.2, babel-core@^6.18.0:
version "6.18.2"
resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.18.2.tgz#d8bb14dd6986fa4f3566a26ceda3964fa0e04e5b"
version "6.20.0"
resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.20.0.tgz#ab0d7176d9dea434e66badadaf92237865eab1ec"
dependencies:
babel-code-frame "^6.16.0"
babel-generator "^6.18.0"
babel-code-frame "^6.20.0"
babel-generator "^6.20.0"
babel-helpers "^6.16.0"
babel-messages "^6.8.0"
babel-register "^6.18.0"
babel-runtime "^6.9.1"
babel-runtime "^6.20.0"
babel-template "^6.16.0"
babel-traverse "^6.18.0"
babel-types "^6.18.0"
babel-traverse "^6.20.0"
babel-types "^6.20.0"
babylon "^6.11.0"
convert-source-map "^1.1.0"
debug "^2.1.1"
@ -378,13 +378,13 @@ babel-core@^6.0.14, babel-core@^6.0.2, babel-core@^6.18.0:
slash "^1.0.0"
source-map "^0.5.0"
babel-generator@^6.18.0:
version "6.19.0"
resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.19.0.tgz#9b2f244204777a3d6810ec127c673c87b349fac5"
babel-generator@^6.20.0:
version "6.20.0"
resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.20.0.tgz#fee63614e0449390103b3097f3f6a118016c6766"
dependencies:
babel-messages "^6.8.0"
babel-runtime "^6.9.0"
babel-types "^6.19.0"
babel-runtime "^6.20.0"
babel-types "^6.20.0"
detect-indent "^4.0.0"
jsesc "^1.3.0"
lodash "^4.2.0"
@ -513,13 +513,13 @@ babel-plugin-transform-es2015-block-scoped-functions@^6.3.13:
babel-runtime "^6.0.0"
babel-plugin-transform-es2015-block-scoping@^6.18.0:
version "6.18.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.18.0.tgz#3bfdcfec318d46df22525cdea88f1978813653af"
version "6.20.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.20.0.tgz#5d8f3e83b1a1ae1064e64a9e5bb83108d8e73be3"
dependencies:
babel-runtime "^6.9.0"
babel-runtime "^6.20.0"
babel-template "^6.15.0"
babel-traverse "^6.18.0"
babel-types "^6.18.0"
babel-traverse "^6.20.0"
babel-types "^6.20.0"
lodash "^4.2.0"
babel-plugin-transform-es2015-classes@^6.18.0:
@ -705,12 +705,10 @@ babel-plugin-transform-react-jsx@^6.3.13:
babel-runtime "^6.0.0"
babel-plugin-transform-regenerator@^6.16.0:
version "6.16.1"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.16.1.tgz#a75de6b048a14154aae14b0122756c5bed392f59"
version "6.20.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.20.0.tgz#a546cd2aa1c9889929d5c427a31303847847ab75"
dependencies:
babel-runtime "^6.9.0"
babel-types "^6.16.0"
private "~0.1.5"
regenerator-transform "0.9.8"
babel-plugin-transform-runtime@^6.3.13:
version "6.15.0"
@ -726,12 +724,12 @@ babel-plugin-transform-strict-mode@^6.18.0:
babel-types "^6.18.0"
babel-polyfill@^6.9.1:
version "6.16.0"
resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.16.0.tgz#2d45021df87e26a374b6d4d1a9c65964d17f2422"
version "6.20.0"
resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.20.0.tgz#de4a371006139e20990aac0be367d398331204e7"
dependencies:
babel-runtime "^6.9.1"
babel-runtime "^6.20.0"
core-js "^2.4.0"
regenerator-runtime "^0.9.5"
regenerator-runtime "^0.10.0"
babel-preset-es2015@^6.1.0, babel-preset-es2015@^6.3.13:
version "6.18.0"
@ -786,12 +784,12 @@ babel-register@^6.18.0, babel-register@^6.3.13:
mkdirp "^0.5.1"
source-map-support "^0.4.2"
babel-runtime@^6.0.0, babel-runtime@^6.11.6, babel-runtime@^6.9.0, babel-runtime@^6.9.1:
version "6.18.0"
resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.18.0.tgz#0f4177ffd98492ef13b9f823e9994a02584c9078"
babel-runtime@^6.0.0, babel-runtime@^6.11.6, babel-runtime@^6.18.0, babel-runtime@^6.20.0, babel-runtime@^6.9.0:
version "6.20.0"
resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.20.0.tgz#87300bdcf4cd770f09bf0048c64204e17806d16f"
dependencies:
core-js "^2.4.0"
regenerator-runtime "^0.9.5"
regenerator-runtime "^0.10.0"
babel-template@^6.14.0, babel-template@^6.15.0, babel-template@^6.16.0, babel-template@^6.8.0:
version "6.16.0"
@ -803,25 +801,25 @@ babel-template@^6.14.0, babel-template@^6.15.0, babel-template@^6.16.0, babel-te
babylon "^6.11.0"
lodash "^4.2.0"
babel-traverse@^6.16.0, babel-traverse@^6.18.0:
version "6.19.0"
resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.19.0.tgz#68363fb821e26247d52a519a84b2ceab8df4f55a"
babel-traverse@^6.16.0, babel-traverse@^6.18.0, babel-traverse@^6.20.0:
version "6.20.0"
resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.20.0.tgz#5378d1a743e3d856e6a52289994100bbdfd9872a"
dependencies:
babel-code-frame "^6.16.0"
babel-code-frame "^6.20.0"
babel-messages "^6.8.0"
babel-runtime "^6.9.0"
babel-types "^6.19.0"
babel-runtime "^6.20.0"
babel-types "^6.20.0"
babylon "^6.11.0"
debug "^2.2.0"
globals "^9.0.0"
invariant "^2.2.0"
lodash "^4.2.0"
babel-types@^6.16.0, babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.8.0, babel-types@^6.9.0:
version "6.19.0"
resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.19.0.tgz#8db2972dbed01f1192a8b602ba1e1e4c516240b9"
babel-types@^6.16.0, babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.20.0, babel-types@^6.8.0, babel-types@^6.9.0:
version "6.20.0"
resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.20.0.tgz#3869ecb98459533b37df809886b3f7f3b08d2baa"
dependencies:
babel-runtime "^6.9.1"
babel-runtime "^6.20.0"
esutils "^2.0.2"
lodash "^4.2.0"
to-fast-properties "^1.0.1"
@ -1312,8 +1310,8 @@ caniuse-api@^1.3.2:
shelljs "^0.7.0"
caniuse-db@^1.0.30000153, caniuse-db@^1.0.30000214, caniuse-db@^1.0.30000346, caniuse-db@^1.0.30000539, caniuse-db@^1.0.30000578:
version "1.0.30000592"
resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000592.tgz#7b916023941df4063d9d946a1f9ad0d5edaf2bcd"
version "1.0.30000595"
resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000595.tgz#952e756cda62cd4f563c871cc6401d131bde4186"
capture-stack-trace@^1.0.0:
version "1.0.0"
@ -1497,8 +1495,8 @@ code-point-at@^1.0.0:
resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
coffee-script@^1.10.0:
version "1.12.0"
resolved "https://registry.yarnpkg.com/coffee-script/-/coffee-script-1.12.0.tgz#8ae1181fb37ee9312c09cf2bf0b754dfa1525fba"
version "1.12.1"
resolved "https://registry.yarnpkg.com/coffee-script/-/coffee-script-1.12.1.tgz#67b8dfec64f0620f82f39583f04fbdd9f01e9cfd"
color-convert@^0.5.3:
version "0.5.3"
@ -3847,8 +3845,8 @@ is-typedarray@~1.0.0:
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
is-unc-path@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-0.1.1.tgz#ab2533d77ad733561124c3dc0f5cd8b90054c86b"
version "0.1.2"
resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-0.1.2.tgz#6ab053a72573c10250ff416a3814c35178af39b9"
dependencies:
unc-path-regex "^0.1.0"
@ -3986,7 +3984,7 @@ json-stable-stringify@~0.0.0:
dependencies:
jsonify "~0.0.0"
json-stringify-safe@~5.0.1:
json-stringify-safe@^5.0.1, 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"
@ -3998,7 +3996,7 @@ json3@3.3.2:
version "3.3.2"
resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1"
json5@^0.5.0:
json5@^0.5.0, json5@^0.5.1:
version "0.5.1"
resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
@ -4036,8 +4034,8 @@ jsx-ast-utils@^1.3.4:
object-assign "^4.1.0"
kind-of@^3.0.2:
version "3.0.4"
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.0.4.tgz#7b8ecf18a4e17f8269d73b501c9f232c96887a74"
version "3.1.0"
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47"
dependencies:
is-buffer "^1.0.2"
@ -5736,7 +5734,7 @@ pretty-hrtime@^1.0.0:
version "1.0.3"
resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1"
private@^0.1.6, private@~0.1.5:
private@^0.1.6:
version "0.1.6"
resolved "https://registry.yarnpkg.com/private/-/private-0.1.6.tgz#55c6a976d0f9bafb9924851350fe47b9b5fbb7c1"
@ -5851,6 +5849,12 @@ rangeslider.js@^2.2.1:
dependencies:
jquery ">=1.9.0"
raven-js@^3.9.1:
version "3.9.1"
resolved "https://registry.yarnpkg.com/raven-js/-/raven-js-3.9.1.tgz#d0482100849ea0ab91058308dfa1ec97bc073bac"
dependencies:
json-stringify-safe "^5.0.1"
rc@^1.0.1, rc@^1.1.6, rc@~1.1.6:
version "1.1.6"
resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.6.tgz#43651b76b6ae53b5c802f1151fa3fc3b059969c9"
@ -6008,9 +6012,17 @@ regenerate@^1.2.1:
version "1.3.2"
resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260"
regenerator-runtime@^0.9.5:
version "0.9.6"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz#d33eb95d0d2001a4be39659707c51b0cb71ce029"
regenerator-runtime@^0.10.0:
version "0.10.1"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.1.tgz#257f41961ce44558b18f7814af48c17559f9faeb"
regenerator-transform@0.9.8:
version "0.9.8"
resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.9.8.tgz#0f88bb2bc03932ddb7b6b7312e68078f01026d6c"
dependencies:
babel-runtime "^6.18.0"
babel-types "^6.19.0"
private "^0.1.6"
regex-cache@^0.4.2:
version "0.4.3"
@ -7486,13 +7498,14 @@ vueify-insert-css@^1.0.0:
resolved "https://registry.yarnpkg.com/vueify-insert-css/-/vueify-insert-css-1.0.0.tgz#57e5d791907e8c9d87ae6de099a2174bd0a7f990"
vueify@^9.1.0:
version "9.3.0"
resolved "https://registry.yarnpkg.com/vueify/-/vueify-9.3.0.tgz#e23f98797c8308b0bcea65830618b9fd4829159a"
version "9.4.0"
resolved "https://registry.yarnpkg.com/vueify/-/vueify-9.4.0.tgz#bb9d4a73023cab3941e58e231bf7914284b375a2"
dependencies:
chalk "^1.1.1"
convert-source-map "^1.2.0"
cssnano "^3.3.2"
hash-sum "^1.0.2"
json5 "^0.5.1"
lru-cache "^4.0.0"
object-assign "^4.0.1"
postcss "^5.0.10"