diff options
author | Chocobozzz <me@florianbigard.com> | 2018-01-19 13:58:13 +0100 |
---|---|---|
committer | Chocobozzz <me@florianbigard.com> | 2018-01-19 13:58:13 +0100 |
commit | 23e27dd53599be65b2dc2968448ce155a00a96c9 (patch) | |
tree | cd7e5c88a345584a25c7ea03a81332b804d082d6 | |
parent | c7a9f34f7229529ea726de13867f87c0a8dd3007 (diff) | |
download | PeerTube-23e27dd53599be65b2dc2968448ce155a00a96c9.tar.gz PeerTube-23e27dd53599be65b2dc2968448ce155a00a96c9.tar.zst PeerTube-23e27dd53599be65b2dc2968448ce155a00a96c9.zip |
Add ability to configure log level
-rw-r--r-- | config/default.yaml | 3 | ||||
-rw-r--r-- | config/production.yaml.example | 3 | ||||
-rw-r--r-- | package.json | 3 | ||||
-rwxr-xr-x | scripts/parse-log.ts | 39 | ||||
-rw-r--r-- | server.ts | 2 | ||||
-rw-r--r-- | server/helpers/core-utils.ts | 2 | ||||
-rw-r--r-- | server/helpers/logger.ts | 60 | ||||
-rw-r--r-- | server/initializers/checker.ts | 2 | ||||
-rw-r--r-- | server/initializers/constants.ts | 3 | ||||
-rw-r--r-- | server/models/activitypub/actor-follow.ts | 2 | ||||
-rw-r--r-- | server/tests/api/server/config.ts | 4 | ||||
-rw-r--r-- | support/doc/production.md | 6 | ||||
-rw-r--r-- | yarn.lock | 121 |
13 files changed, 183 insertions, 67 deletions
diff --git a/config/default.yaml b/config/default.yaml index 07bb26d5f..3d0732069 100644 --- a/config/default.yaml +++ b/config/default.yaml | |||
@@ -24,6 +24,9 @@ storage: | |||
24 | torrents: 'storage/torrents/' | 24 | torrents: 'storage/torrents/' |
25 | cache: 'storage/cache/' | 25 | cache: 'storage/cache/' |
26 | 26 | ||
27 | log: | ||
28 | level: 'debug' # debug/info/warning/error | ||
29 | |||
27 | cache: | 30 | cache: |
28 | previews: | 31 | previews: |
29 | size: 1 # Max number of previews you want to cache | 32 | size: 1 # Max number of previews you want to cache |
diff --git a/config/production.yaml.example b/config/production.yaml.example index 985b25a52..69052fb26 100644 --- a/config/production.yaml.example +++ b/config/production.yaml.example | |||
@@ -25,6 +25,9 @@ storage: | |||
25 | torrents: '/home/peertube/storage/torrents/' | 25 | torrents: '/home/peertube/storage/torrents/' |
26 | cache: '/home/peertube/storage/cache/' | 26 | cache: '/home/peertube/storage/cache/' |
27 | 27 | ||
28 | log: | ||
29 | level: 'debug' # debug/info/warning/error | ||
30 | |||
28 | cache: | 31 | cache: |
29 | previews: | 32 | previews: |
30 | size: 100 # Max number of previews you want to cache | 33 | size: 100 # Max number of previews you want to cache |
diff --git a/package.json b/package.json index 23ea8928a..fcac1c7c2 100644 --- a/package.json +++ b/package.json | |||
@@ -89,7 +89,7 @@ | |||
89 | "uuid": "^3.1.0", | 89 | "uuid": "^3.1.0", |
90 | "validator": "^9.0.0", | 90 | "validator": "^9.0.0", |
91 | "webfinger.js": "^2.6.6", | 91 | "webfinger.js": "^2.6.6", |
92 | "winston": "^2.1.1", | 92 | "winston": "3.0.0-rc1", |
93 | "ws": "^3.3.2" | 93 | "ws": "^3.3.2" |
94 | }, | 94 | }, |
95 | "devDependencies": { | 95 | "devDependencies": { |
@@ -114,7 +114,6 @@ | |||
114 | "@types/supertest": "^2.0.3", | 114 | "@types/supertest": "^2.0.3", |
115 | "@types/validator": "^6.2.0", | 115 | "@types/validator": "^6.2.0", |
116 | "@types/webtorrent": "^0.98.4", | 116 | "@types/webtorrent": "^0.98.4", |
117 | "@types/winston": "^2.3.2", | ||
118 | "@types/ws": "^3.0.2", | 117 | "@types/ws": "^3.0.2", |
119 | "chai": "^4.1.1", | 118 | "chai": "^4.1.1", |
120 | "commander": "^2.9.0", | 119 | "commander": "^2.9.0", |
diff --git a/scripts/parse-log.ts b/scripts/parse-log.ts index e2c42bf4c..7e804b3f9 100755 --- a/scripts/parse-log.ts +++ b/scripts/parse-log.ts | |||
@@ -2,34 +2,34 @@ import { createReadStream } from 'fs' | |||
2 | import { join } from 'path' | 2 | import { join } from 'path' |
3 | import { createInterface } from 'readline' | 3 | import { createInterface } from 'readline' |
4 | import * as winston from 'winston' | 4 | import * as winston from 'winston' |
5 | import { labelFormatter, loggerFormat, timestampFormatter } from '../server/helpers/logger' | ||
5 | import { CONFIG } from '../server/initializers/constants' | 6 | import { CONFIG } from '../server/initializers/constants' |
6 | 7 | ||
7 | const label = CONFIG.WEBSERVER.HOSTNAME + ':' + CONFIG.WEBSERVER.PORT | 8 | const logger = new winston.createLogger({ |
8 | |||
9 | const logger = new winston.Logger({ | ||
10 | transports: [ | 9 | transports: [ |
11 | new winston.transports.Console({ | 10 | new winston.transports.Console({ |
12 | level: 'debug', | 11 | level: 'debug', |
13 | label: label, | 12 | stderrLevels: [], |
14 | handleExceptions: true, | 13 | format: winston.format.combine( |
15 | humanReadableUnhandledException: true, | 14 | timestampFormatter, |
16 | json: false, | 15 | winston.format.splat(), |
17 | colorize: true, | 16 | labelFormatter, |
18 | prettyPrint: true, | 17 | winston.format.colorize(), |
19 | stderrLevels: [] | 18 | loggerFormat |
19 | ) | ||
20 | }) | 20 | }) |
21 | ], | 21 | ], |
22 | exitOnError: true | 22 | exitOnError: true |
23 | }) | 23 | }) |
24 | 24 | ||
25 | const logLevels = { | 25 | const logLevels = { |
26 | error: logger.error, | 26 | error: logger.error.bind(logger), |
27 | warn: logger.warn, | 27 | warn: logger.warn.bind(logger), |
28 | info: logger.info, | 28 | info: logger.info.bind(logger), |
29 | debug: logger.debug | 29 | debug: logger.debug.bind(logger) |
30 | } | 30 | } |
31 | 31 | ||
32 | const path = join(CONFIG.STORAGE.LOG_DIR, 'all-logs.log') | 32 | const path = join(CONFIG.STORAGE.LOG_DIR, 'peertube.log') |
33 | console.log('Opening %s.', path) | 33 | console.log('Opening %s.', path) |
34 | 34 | ||
35 | const rl = createInterface({ | 35 | const rl = createInterface({ |
@@ -38,11 +38,8 @@ const rl = createInterface({ | |||
38 | 38 | ||
39 | rl.on('line', line => { | 39 | rl.on('line', line => { |
40 | const log = JSON.parse(line) | 40 | const log = JSON.parse(line) |
41 | const additionalInfo: any = {} | 41 | // Don't know why but loggerFormat does not remove splat key |
42 | 42 | Object.assign(log, { splat: undefined }) | |
43 | Object.keys(log).forEach(logKey => { | ||
44 | if (logKey !== 'message' && logKey !== 'level') additionalInfo[logKey] = log[logKey] | ||
45 | }) | ||
46 | 43 | ||
47 | logLevels[log.level](log.message, additionalInfo) | 44 | logLevels[log.level](log) |
48 | }) | 45 | }) |
@@ -82,7 +82,7 @@ if (isTestInstance()) { | |||
82 | 82 | ||
83 | // For the logger | 83 | // For the logger |
84 | app.use(morgan('combined', { | 84 | app.use(morgan('combined', { |
85 | stream: { write: logger.info } | 85 | stream: { write: logger.info.bind(logger) } |
86 | })) | 86 | })) |
87 | // For body requests | 87 | // For body requests |
88 | app.use(bodyParser.json({ | 88 | app.use(bodyParser.json({ |
diff --git a/server/helpers/core-utils.ts b/server/helpers/core-utils.ts index 77547c528..65f18d644 100644 --- a/server/helpers/core-utils.ts +++ b/server/helpers/core-utils.ts | |||
@@ -50,6 +50,8 @@ function root () { | |||
50 | 50 | ||
51 | // Thanks: https://stackoverflow.com/a/12034334 | 51 | // Thanks: https://stackoverflow.com/a/12034334 |
52 | function escapeHTML (stringParam) { | 52 | function escapeHTML (stringParam) { |
53 | if (!stringParam) return '' | ||
54 | |||
53 | const entityMap = { | 55 | const entityMap = { |
54 | '&': '&', | 56 | '&': '&', |
55 | '<': '<', | 57 | '<': '<', |
diff --git a/server/helpers/logger.ts b/server/helpers/logger.ts index 2676133db..6a02f680a 100644 --- a/server/helpers/logger.ts +++ b/server/helpers/logger.ts | |||
@@ -9,26 +9,57 @@ const label = CONFIG.WEBSERVER.HOSTNAME + ':' + CONFIG.WEBSERVER.PORT | |||
9 | // Create the directory if it does not exist | 9 | // Create the directory if it does not exist |
10 | mkdirp.sync(CONFIG.STORAGE.LOG_DIR) | 10 | mkdirp.sync(CONFIG.STORAGE.LOG_DIR) |
11 | 11 | ||
12 | const logger = new winston.Logger({ | 12 | // Use object for better performances (~ O(1)) |
13 | const excludedKeys = { | ||
14 | level: true, | ||
15 | message: true, | ||
16 | splat: true, | ||
17 | timestamp: true, | ||
18 | label: true | ||
19 | } | ||
20 | function keysExcluder (key, value) { | ||
21 | return excludedKeys[key] === true ? undefined : value | ||
22 | } | ||
23 | |||
24 | const loggerFormat = winston.format.printf((info) => { | ||
25 | let additionalInfos = JSON.stringify(info, keysExcluder, 2) | ||
26 | if (additionalInfos === '{}') additionalInfos = '' | ||
27 | |||
28 | return `[${info.label}] ${info.timestamp} ${info.level}: ${info.message} ${additionalInfos}` | ||
29 | }) | ||
30 | |||
31 | const timestampFormatter = winston.format.timestamp({ | ||
32 | format: 'YYYY-MM-dd HH:mm:ss.SSS' | ||
33 | }) | ||
34 | const labelFormatter = winston.format.label({ | ||
35 | label | ||
36 | }) | ||
37 | |||
38 | const logger = new winston.createLogger({ | ||
39 | level: CONFIG.LOG.LEVEL, | ||
13 | transports: [ | 40 | transports: [ |
14 | new winston.transports.File({ | 41 | new winston.transports.File({ |
15 | level: 'debug', | 42 | filename: path.join(CONFIG.STORAGE.LOG_DIR, 'peertube.log'), |
16 | filename: path.join(CONFIG.STORAGE.LOG_DIR, 'all-logs.log'), | ||
17 | handleExceptions: true, | 43 | handleExceptions: true, |
18 | json: true, | ||
19 | maxsize: 5242880, | 44 | maxsize: 5242880, |
20 | maxFiles: 5, | 45 | maxFiles: 5, |
21 | colorize: false, | 46 | format: winston.format.combine( |
22 | prettyPrint: true | 47 | timestampFormatter, |
48 | labelFormatter, | ||
49 | winston.format.splat(), | ||
50 | winston.format.json() | ||
51 | ) | ||
23 | }), | 52 | }), |
24 | new winston.transports.Console({ | 53 | new winston.transports.Console({ |
25 | level: 'debug', | ||
26 | label: label, | ||
27 | handleExceptions: true, | 54 | handleExceptions: true, |
28 | humanReadableUnhandledException: true, | 55 | humanReadableUnhandledException: true, |
29 | json: false, | 56 | format: winston.format.combine( |
30 | colorize: true, | 57 | timestampFormatter, |
31 | prettyPrint: true | 58 | winston.format.splat(), |
59 | labelFormatter, | ||
60 | winston.format.colorize(), | ||
61 | loggerFormat | ||
62 | ) | ||
32 | }) | 63 | }) |
33 | ], | 64 | ], |
34 | exitOnError: true | 65 | exitOnError: true |
@@ -36,4 +67,9 @@ const logger = new winston.Logger({ | |||
36 | 67 | ||
37 | // --------------------------------------------------------------------------- | 68 | // --------------------------------------------------------------------------- |
38 | 69 | ||
39 | export { logger } | 70 | export { |
71 | timestampFormatter, | ||
72 | labelFormatter, | ||
73 | loggerFormat, | ||
74 | logger | ||
75 | } | ||
diff --git a/server/initializers/checker.ts b/server/initializers/checker.ts index 7cfbc123d..35fab244c 100644 --- a/server/initializers/checker.ts +++ b/server/initializers/checker.ts | |||
@@ -21,7 +21,7 @@ function checkMissedConfig () { | |||
21 | const required = [ 'listen.port', | 21 | const required = [ 'listen.port', |
22 | 'webserver.https', 'webserver.hostname', 'webserver.port', | 22 | 'webserver.https', 'webserver.hostname', 'webserver.port', |
23 | 'database.hostname', 'database.port', 'database.suffix', 'database.username', 'database.password', | 23 | 'database.hostname', 'database.port', 'database.suffix', 'database.username', 'database.password', |
24 | 'storage.videos', 'storage.logs', 'storage.thumbnails', 'storage.previews', 'storage.torrents', 'storage.cache', | 24 | 'storage.videos', 'storage.logs', 'storage.thumbnails', 'storage.previews', 'storage.torrents', 'storage.cache', 'log.level', |
25 | 'cache.previews.size', 'admin.email', 'signup.enabled', 'signup.limit', 'transcoding.enabled', 'transcoding.threads', 'user.video_quota' | 25 | 'cache.previews.size', 'admin.email', 'signup.enabled', 'signup.limit', 'transcoding.enabled', 'transcoding.threads', 'user.video_quota' |
26 | ] | 26 | ] |
27 | const miss: string[] = [] | 27 | const miss: string[] = [] |
diff --git a/server/initializers/constants.ts b/server/initializers/constants.ts index c10213890..cb043251a 100644 --- a/server/initializers/constants.ts +++ b/server/initializers/constants.ts | |||
@@ -113,6 +113,9 @@ const CONFIG = { | |||
113 | URL: '', | 113 | URL: '', |
114 | HOST: '' | 114 | HOST: '' |
115 | }, | 115 | }, |
116 | LOG: { | ||
117 | LEVEL: config.get<string>('log.level') | ||
118 | }, | ||
116 | ADMIN: { | 119 | ADMIN: { |
117 | get EMAIL () { return config.get<string>('admin.email') } | 120 | get EMAIL () { return config.get<string>('admin.email') } |
118 | }, | 121 | }, |
diff --git a/server/models/activitypub/actor-follow.ts b/server/models/activitypub/actor-follow.ts index 416496607..a32f5f498 100644 --- a/server/models/activitypub/actor-follow.ts +++ b/server/models/activitypub/actor-follow.ts | |||
@@ -376,7 +376,7 @@ export class ActorFollowModel extends Model<ActorFollowModel> { | |||
376 | [Sequelize.Op.lte]: 0 | 376 | [Sequelize.Op.lte]: 0 |
377 | } | 377 | } |
378 | }, | 378 | }, |
379 | logger: false | 379 | logging: false |
380 | } | 380 | } |
381 | 381 | ||
382 | return ActorFollowModel.findAll(query) | 382 | return ActorFollowModel.findAll(query) |
diff --git a/server/tests/api/server/config.ts b/server/tests/api/server/config.ts index 0aa0e2ec1..a1f8212bb 100644 --- a/server/tests/api/server/config.ts +++ b/server/tests/api/server/config.ts | |||
@@ -112,6 +112,8 @@ describe('Test config', function () { | |||
112 | }) | 112 | }) |
113 | 113 | ||
114 | it('Should have the configuration updated after a restart', async function () { | 114 | it('Should have the configuration updated after a restart', async function () { |
115 | this.timeout(10000) | ||
116 | |||
115 | killallServers([ server ]) | 117 | killallServers([ server ]) |
116 | 118 | ||
117 | await reRunServer(server) | 119 | await reRunServer(server) |
@@ -134,6 +136,8 @@ describe('Test config', function () { | |||
134 | }) | 136 | }) |
135 | 137 | ||
136 | it('Should remove the custom configuration', async function () { | 138 | it('Should remove the custom configuration', async function () { |
139 | this.timeout(10000) | ||
140 | |||
137 | await deleteCustomConfig(server.url, server.accessToken) | 141 | await deleteCustomConfig(server.url, server.accessToken) |
138 | 142 | ||
139 | const res = await getCustomConfig(server.url, server.accessToken) | 143 | const res = await getCustomConfig(server.url, server.accessToken) |
diff --git a/support/doc/production.md b/support/doc/production.md index 0bdc36da1..d1ebbd291 100644 --- a/support/doc/production.md +++ b/support/doc/production.md | |||
@@ -247,6 +247,12 @@ $ SQL_BACKUP_PATH="backup/sql-peertube_prod-$(date -Im).bak" && \ | |||
247 | sudo pg_dump -U peertube -W -h localhost -F c peertube_prod -f "$SQL_BACKUP_PATH" | 247 | sudo pg_dump -U peertube -W -h localhost -F c peertube_prod -f "$SQL_BACKUP_PATH" |
248 | ``` | 248 | ``` |
249 | 249 | ||
250 | Update your configuration file. **If some keys are missing, your upgraded PeerTube won't start!** | ||
251 | |||
252 | ``` | ||
253 | $ diff <(curl -s https://raw.githubusercontent.com/Chocobozzz/PeerTube/develop/config/production.yaml.example) /home/peertube/config/production.yaml | ||
254 | ``` | ||
255 | |||
250 | Upgrade PeerTube: | 256 | Upgrade PeerTube: |
251 | 257 | ||
252 | ``` | 258 | ``` |
@@ -203,12 +203,6 @@ | |||
203 | "@types/parse-torrent" "*" | 203 | "@types/parse-torrent" "*" |
204 | "@types/simple-peer" "*" | 204 | "@types/simple-peer" "*" |
205 | 205 | ||
206 | "@types/winston@^2.3.2": | ||
207 | version "2.3.7" | ||
208 | resolved "https://registry.yarnpkg.com/@types/winston/-/winston-2.3.7.tgz#2ea18b2dc772d459b6af0f587447704df31afec2" | ||
209 | dependencies: | ||
210 | "@types/node" "*" | ||
211 | |||
212 | "@types/ws@^3.0.2": | 206 | "@types/ws@^3.0.2": |
213 | version "3.2.1" | 207 | version "3.2.1" |
214 | resolved "https://registry.yarnpkg.com/@types/ws/-/ws-3.2.1.tgz#b0c1579e58e686f83ce0a97bb9463d29705827fb" | 208 | resolved "https://registry.yarnpkg.com/@types/ws/-/ws-3.2.1.tgz#b0c1579e58e686f83ce0a97bb9463d29705827fb" |
@@ -403,14 +397,10 @@ async@>=0.2.9, async@^2.0.0: | |||
403 | dependencies: | 397 | dependencies: |
404 | lodash "^4.14.0" | 398 | lodash "^4.14.0" |
405 | 399 | ||
406 | async@^1.5.2: | 400 | async@^1.0.0, async@^1.5.2: |
407 | version "1.5.2" | 401 | version "1.5.2" |
408 | resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" | 402 | resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" |
409 | 403 | ||
410 | async@~1.0.0: | ||
411 | version "1.0.0" | ||
412 | resolved "https://registry.yarnpkg.com/async/-/async-1.0.0.tgz#f8fc04ca3a13784ade9e1641af98578cfbd647a9" | ||
413 | |||
414 | asynckit@^0.4.0: | 404 | asynckit@^0.4.0: |
415 | version "0.4.0" | 405 | version "0.4.0" |
416 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" | 406 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" |
@@ -889,6 +879,10 @@ code-point-at@^1.0.0: | |||
889 | version "1.1.0" | 879 | version "1.1.0" |
890 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" | 880 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" |
891 | 881 | ||
882 | color-convert@^0.5.0: | ||
883 | version "0.5.3" | ||
884 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-0.5.3.tgz#bdb6c69ce660fadffe0b0007cc447e1b9f7282bd" | ||
885 | |||
892 | color-convert@^1.9.0, color-convert@^1.9.1: | 886 | color-convert@^1.9.0, color-convert@^1.9.1: |
893 | version "1.9.1" | 887 | version "1.9.1" |
894 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" | 888 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" |
@@ -899,6 +893,12 @@ color-name@^1.0.0, color-name@^1.1.1: | |||
899 | version "1.1.3" | 893 | version "1.1.3" |
900 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" | 894 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" |
901 | 895 | ||
896 | color-string@^0.3.0: | ||
897 | version "0.3.0" | ||
898 | resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991" | ||
899 | dependencies: | ||
900 | color-name "^1.0.0" | ||
901 | |||
902 | color-string@^1.5.2: | 902 | color-string@^1.5.2: |
903 | version "1.5.2" | 903 | version "1.5.2" |
904 | resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.2.tgz#26e45814bc3c9a7cbd6751648a41434514a773a9" | 904 | resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.2.tgz#26e45814bc3c9a7cbd6751648a41434514a773a9" |
@@ -906,6 +906,13 @@ color-string@^1.5.2: | |||
906 | color-name "^1.0.0" | 906 | color-name "^1.0.0" |
907 | simple-swizzle "^0.2.2" | 907 | simple-swizzle "^0.2.2" |
908 | 908 | ||
909 | color@0.8.x: | ||
910 | version "0.8.0" | ||
911 | resolved "https://registry.yarnpkg.com/color/-/color-0.8.0.tgz#890c07c3fd4e649537638911cf691e5458b6fca5" | ||
912 | dependencies: | ||
913 | color-convert "^0.5.0" | ||
914 | color-string "^0.3.0" | ||
915 | |||
909 | color@^2.0.0: | 916 | color@^2.0.0: |
910 | version "2.0.1" | 917 | version "2.0.1" |
911 | resolved "https://registry.yarnpkg.com/color/-/color-2.0.1.tgz#e4ed78a3c4603d0891eba5430b04b86314f4c839" | 918 | resolved "https://registry.yarnpkg.com/color/-/color-2.0.1.tgz#e4ed78a3c4603d0891eba5430b04b86314f4c839" |
@@ -913,9 +920,20 @@ color@^2.0.0: | |||
913 | color-convert "^1.9.1" | 920 | color-convert "^1.9.1" |
914 | color-string "^1.5.2" | 921 | color-string "^1.5.2" |
915 | 922 | ||
916 | colors@1.0.x: | 923 | colornames@0.0.2: |
917 | version "1.0.3" | 924 | version "0.0.2" |
918 | resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" | 925 | resolved "https://registry.yarnpkg.com/colornames/-/colornames-0.0.2.tgz#d811fd6c84f59029499a8ac4436202935b92be31" |
926 | |||
927 | colors@^1.1.2: | ||
928 | version "1.1.2" | ||
929 | resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" | ||
930 | |||
931 | colorspace@1.0.x: | ||
932 | version "1.0.1" | ||
933 | resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.0.1.tgz#c99c796ed31128b9876a52e1ee5ee03a4a719749" | ||
934 | dependencies: | ||
935 | color "0.8.x" | ||
936 | text-hex "0.0.x" | ||
919 | 937 | ||
920 | combined-stream@^1.0.5, combined-stream@~1.0.5: | 938 | combined-stream@^1.0.5, combined-stream@~1.0.5: |
921 | version "1.0.5" | 939 | version "1.0.5" |
@@ -1087,10 +1105,6 @@ crypto-random-string@^1.0.0: | |||
1087 | version "1.0.0" | 1105 | version "1.0.0" |
1088 | resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" | 1106 | resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" |
1089 | 1107 | ||
1090 | cycle@1.0.x: | ||
1091 | version "1.0.3" | ||
1092 | resolved "https://registry.yarnpkg.com/cycle/-/cycle-1.0.3.tgz#21e80b2be8580f98b468f379430662b046c34ad2" | ||
1093 | |||
1094 | d@1: | 1108 | d@1: |
1095 | version "1.0.0" | 1109 | version "1.0.0" |
1096 | resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" | 1110 | resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" |
@@ -1201,6 +1215,14 @@ detect-libc@^1.0.2: | |||
1201 | version "1.0.3" | 1215 | version "1.0.3" |
1202 | resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" | 1216 | resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" |
1203 | 1217 | ||
1218 | diagnostics@^1.0.1: | ||
1219 | version "1.1.0" | ||
1220 | resolved "https://registry.yarnpkg.com/diagnostics/-/diagnostics-1.1.0.tgz#e1090900b49523e8527be20f081275205f2ae36a" | ||
1221 | dependencies: | ||
1222 | colorspace "1.0.x" | ||
1223 | enabled "1.0.x" | ||
1224 | kuler "0.0.x" | ||
1225 | |||
1204 | dicer@0.2.5: | 1226 | dicer@0.2.5: |
1205 | version "0.2.5" | 1227 | version "0.2.5" |
1206 | resolved "https://registry.yarnpkg.com/dicer/-/dicer-0.2.5.tgz#5996c086bb33218c812c090bddc09cd12facb70f" | 1228 | resolved "https://registry.yarnpkg.com/dicer/-/dicer-0.2.5.tgz#5996c086bb33218c812c090bddc09cd12facb70f" |
@@ -1280,6 +1302,12 @@ elliptic@=3.0.3: | |||
1280 | hash.js "^1.0.0" | 1302 | hash.js "^1.0.0" |
1281 | inherits "^2.0.1" | 1303 | inherits "^2.0.1" |
1282 | 1304 | ||
1305 | enabled@1.0.x: | ||
1306 | version "1.0.2" | ||
1307 | resolved "https://registry.yarnpkg.com/enabled/-/enabled-1.0.2.tgz#965f6513d2c2d1c5f4652b64a2e3396467fc2f93" | ||
1308 | dependencies: | ||
1309 | env-variable "0.0.x" | ||
1310 | |||
1283 | encodeurl@~1.0.1: | 1311 | encodeurl@~1.0.1: |
1284 | version "1.0.1" | 1312 | version "1.0.1" |
1285 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" | 1313 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" |
@@ -1290,6 +1318,10 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0: | |||
1290 | dependencies: | 1318 | dependencies: |
1291 | once "^1.4.0" | 1319 | once "^1.4.0" |
1292 | 1320 | ||
1321 | env-variable@0.0.x: | ||
1322 | version "0.0.3" | ||
1323 | resolved "https://registry.yarnpkg.com/env-variable/-/env-variable-0.0.3.tgz#b86c1641be5610267d506f18071ea76d707097cb" | ||
1324 | |||
1293 | error-ex@^1.2.0: | 1325 | error-ex@^1.2.0: |
1294 | version "1.3.1" | 1326 | version "1.3.1" |
1295 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" | 1327 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" |
@@ -1657,10 +1689,6 @@ extsprintf@^1.2.0: | |||
1657 | version "1.4.0" | 1689 | version "1.4.0" |
1658 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" | 1690 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" |
1659 | 1691 | ||
1660 | eyes@0.1.x: | ||
1661 | version "0.1.8" | ||
1662 | resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" | ||
1663 | |||
1664 | fast-deep-equal@^1.0.0: | 1692 | fast-deep-equal@^1.0.0: |
1665 | version "1.0.0" | 1693 | version "1.0.0" |
1666 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff" | 1694 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff" |
@@ -1673,6 +1701,10 @@ fast-levenshtein@~2.0.4: | |||
1673 | version "2.0.6" | 1701 | version "2.0.6" |
1674 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" | 1702 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" |
1675 | 1703 | ||
1704 | fecha@^2.3.2: | ||
1705 | version "2.3.2" | ||
1706 | resolved "https://registry.yarnpkg.com/fecha/-/fecha-2.3.2.tgz#360f035dd6edd954bc9581f95f2a4a7f2a3505c1" | ||
1707 | |||
1676 | figures@^1.3.5: | 1708 | figures@^1.3.5: |
1677 | version "1.7.0" | 1709 | version "1.7.0" |
1678 | resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" | 1710 | resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" |
@@ -2544,6 +2576,12 @@ kind-of@^4.0.0: | |||
2544 | dependencies: | 2576 | dependencies: |
2545 | is-buffer "^1.1.5" | 2577 | is-buffer "^1.1.5" |
2546 | 2578 | ||
2579 | kuler@0.0.x: | ||
2580 | version "0.0.0" | ||
2581 | resolved "https://registry.yarnpkg.com/kuler/-/kuler-0.0.0.tgz#b66bb46b934e550f59d818848e0abba4f7f5553c" | ||
2582 | dependencies: | ||
2583 | colornames "0.0.2" | ||
2584 | |||
2547 | latest-version@^3.0.0: | 2585 | latest-version@^3.0.0: |
2548 | version "3.1.0" | 2586 | version "3.1.0" |
2549 | resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" | 2587 | resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" |
@@ -2661,6 +2699,13 @@ lodash@=3.10.1: | |||
2661 | version "3.10.1" | 2699 | version "3.10.1" |
2662 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" | 2700 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" |
2663 | 2701 | ||
2702 | logform@^1.2.1: | ||
2703 | version "1.2.2" | ||
2704 | resolved "https://registry.yarnpkg.com/logform/-/logform-1.2.2.tgz#7be8847684de07185029ed09c65b11d06191ef93" | ||
2705 | dependencies: | ||
2706 | colors "^1.1.2" | ||
2707 | fecha "^2.3.2" | ||
2708 | |||
2664 | lowercase-keys@^1.0.0: | 2709 | lowercase-keys@^1.0.0: |
2665 | version "1.0.0" | 2710 | version "1.0.0" |
2666 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" | 2711 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" |
@@ -3081,6 +3126,10 @@ once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0: | |||
3081 | dependencies: | 3126 | dependencies: |
3082 | wrappy "1" | 3127 | wrappy "1" |
3083 | 3128 | ||
3129 | one-time@0.0.4: | ||
3130 | version "0.0.4" | ||
3131 | resolved "https://registry.yarnpkg.com/one-time/-/one-time-0.0.4.tgz#f8cdf77884826fe4dff93e3a9cc37b1e4480742e" | ||
3132 | |||
3084 | onetime@^1.0.0: | 3133 | onetime@^1.0.0: |
3085 | version "1.1.0" | 3134 | version "1.1.0" |
3086 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" | 3135 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" |
@@ -4263,6 +4312,10 @@ terraformer@~1.0.5: | |||
4263 | dependencies: | 4312 | dependencies: |
4264 | "@types/geojson" "^1.0.0" | 4313 | "@types/geojson" "^1.0.0" |
4265 | 4314 | ||
4315 | text-hex@0.0.x: | ||
4316 | version "0.0.0" | ||
4317 | resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-0.0.0.tgz#578fbc85a6a92636e42dd17b41d0218cce9eb2b3" | ||
4318 | |||
4266 | text-table@~0.2.0: | 4319 | text-table@~0.2.0: |
4267 | version "0.2.0" | 4320 | version "0.2.0" |
4268 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" | 4321 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" |
@@ -4322,6 +4375,10 @@ tree-kill@^1.1.0: | |||
4322 | version "1.2.0" | 4375 | version "1.2.0" |
4323 | resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.0.tgz#5846786237b4239014f05db156b643212d4c6f36" | 4376 | resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.0.tgz#5846786237b4239014f05db156b643212d4c6f36" |
4324 | 4377 | ||
4378 | triple-beam@^1.0.1: | ||
4379 | version "1.1.0" | ||
4380 | resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.1.0.tgz#2ac387c8c4bd04bd26c61df891a6079f8592fe10" | ||
4381 | |||
4325 | ts-node@^3.3.0: | 4382 | ts-node@^3.3.0: |
4326 | version "3.3.0" | 4383 | version "3.3.0" |
4327 | resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-3.3.0.tgz#c13c6a3024e30be1180dd53038fc209289d4bf69" | 4384 | resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-3.3.0.tgz#c13c6a3024e30be1180dd53038fc209289d4bf69" |
@@ -4647,16 +4704,22 @@ widest-line@^2.0.0: | |||
4647 | dependencies: | 4704 | dependencies: |
4648 | string-width "^2.1.1" | 4705 | string-width "^2.1.1" |
4649 | 4706 | ||
4650 | winston@^2.1.1: | 4707 | winston-transport@^3.0.1: |
4651 | version "2.4.0" | 4708 | version "3.0.1" |
4652 | resolved "https://registry.yarnpkg.com/winston/-/winston-2.4.0.tgz#808050b93d52661ed9fb6c26b3f0c826708b0aee" | 4709 | resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-3.0.1.tgz#8008b15eef5660c4fb3fa094d58ccbd08528c58d" |
4710 | |||
4711 | winston@3.0.0-rc1: | ||
4712 | version "3.0.0-rc1" | ||
4713 | resolved "https://registry.yarnpkg.com/winston/-/winston-3.0.0-rc1.tgz#982bc0ad4ef5c53000ca68036d78a3deaa28cac5" | ||
4653 | dependencies: | 4714 | dependencies: |
4654 | async "~1.0.0" | 4715 | async "^1.0.0" |
4655 | colors "1.0.x" | 4716 | diagnostics "^1.0.1" |
4656 | cycle "1.0.x" | ||
4657 | eyes "0.1.x" | ||
4658 | isstream "0.1.x" | 4717 | isstream "0.1.x" |
4718 | logform "^1.2.1" | ||
4719 | one-time "0.0.4" | ||
4659 | stack-trace "0.0.x" | 4720 | stack-trace "0.0.x" |
4721 | triple-beam "^1.0.1" | ||
4722 | winston-transport "^3.0.1" | ||
4660 | 4723 | ||
4661 | wkx@^0.4.1: | 4724 | wkx@^0.4.1: |
4662 | version "0.4.2" | 4725 | version "0.4.2" |