aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--config/default.yaml3
-rw-r--r--config/production.yaml.example3
-rw-r--r--package.json3
-rwxr-xr-xscripts/parse-log.ts39
-rw-r--r--server.ts2
-rw-r--r--server/helpers/core-utils.ts2
-rw-r--r--server/helpers/logger.ts60
-rw-r--r--server/initializers/checker.ts2
-rw-r--r--server/initializers/constants.ts3
-rw-r--r--server/models/activitypub/actor-follow.ts2
-rw-r--r--server/tests/api/server/config.ts4
-rw-r--r--support/doc/production.md6
-rw-r--r--yarn.lock121
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
27log:
28 level: 'debug' # debug/info/warning/error
29
27cache: 30cache:
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
28log:
29 level: 'debug' # debug/info/warning/error
30
28cache: 31cache:
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'
2import { join } from 'path' 2import { join } from 'path'
3import { createInterface } from 'readline' 3import { createInterface } from 'readline'
4import * as winston from 'winston' 4import * as winston from 'winston'
5import { labelFormatter, loggerFormat, timestampFormatter } from '../server/helpers/logger'
5import { CONFIG } from '../server/initializers/constants' 6import { CONFIG } from '../server/initializers/constants'
6 7
7const label = CONFIG.WEBSERVER.HOSTNAME + ':' + CONFIG.WEBSERVER.PORT 8const logger = new winston.createLogger({
8
9const 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
25const logLevels = { 25const 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
32const path = join(CONFIG.STORAGE.LOG_DIR, 'all-logs.log') 32const path = join(CONFIG.STORAGE.LOG_DIR, 'peertube.log')
33console.log('Opening %s.', path) 33console.log('Opening %s.', path)
34 34
35const rl = createInterface({ 35const rl = createInterface({
@@ -38,11 +38,8 @@ const rl = createInterface({
38 38
39rl.on('line', line => { 39rl.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})
diff --git a/server.ts b/server.ts
index 99077a173..a138b6359 100644
--- a/server.ts
+++ b/server.ts
@@ -82,7 +82,7 @@ if (isTestInstance()) {
82 82
83// For the logger 83// For the logger
84app.use(morgan('combined', { 84app.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
88app.use(bodyParser.json({ 88app.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
52function escapeHTML (stringParam) { 52function escapeHTML (stringParam) {
53 if (!stringParam) return ''
54
53 const entityMap = { 55 const entityMap = {
54 '&': '&', 56 '&': '&',
55 '<': '&lt;', 57 '<': '&lt;',
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
10mkdirp.sync(CONFIG.STORAGE.LOG_DIR) 10mkdirp.sync(CONFIG.STORAGE.LOG_DIR)
11 11
12const logger = new winston.Logger({ 12// Use object for better performances (~ O(1))
13const excludedKeys = {
14 level: true,
15 message: true,
16 splat: true,
17 timestamp: true,
18 label: true
19}
20function keysExcluder (key, value) {
21 return excludedKeys[key] === true ? undefined : value
22}
23
24const 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
31const timestampFormatter = winston.format.timestamp({
32 format: 'YYYY-MM-dd HH:mm:ss.SSS'
33})
34const labelFormatter = winston.format.label({
35 label
36})
37
38const 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
39export { logger } 70export {
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
250Update 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
250Upgrade PeerTube: 256Upgrade PeerTube:
251 257
252``` 258```
diff --git a/yarn.lock b/yarn.lock
index 5fb157e08..7b8950435 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -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
406async@^1.5.2: 400async@^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
410async@~1.0.0:
411 version "1.0.0"
412 resolved "https://registry.yarnpkg.com/async/-/async-1.0.0.tgz#f8fc04ca3a13784ade9e1641af98578cfbd647a9"
413
414asynckit@^0.4.0: 404asynckit@^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
882color-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
892color-convert@^1.9.0, color-convert@^1.9.1: 886color-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
896color-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
902color-string@^1.5.2: 902color-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
909color@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
909color@^2.0.0: 916color@^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
916colors@1.0.x: 923colornames@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
927colors@^1.1.2:
928 version "1.1.2"
929 resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63"
930
931colorspace@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
920combined-stream@^1.0.5, combined-stream@~1.0.5: 938combined-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
1090cycle@1.0.x:
1091 version "1.0.3"
1092 resolved "https://registry.yarnpkg.com/cycle/-/cycle-1.0.3.tgz#21e80b2be8580f98b468f379430662b046c34ad2"
1093
1094d@1: 1108d@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
1218diagnostics@^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
1204dicer@0.2.5: 1226dicer@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
1305enabled@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
1283encodeurl@~1.0.1: 1311encodeurl@~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
1321env-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
1293error-ex@^1.2.0: 1325error-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
1660eyes@0.1.x:
1661 version "0.1.8"
1662 resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0"
1663
1664fast-deep-equal@^1.0.0: 1692fast-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
1704fecha@^2.3.2:
1705 version "2.3.2"
1706 resolved "https://registry.yarnpkg.com/fecha/-/fecha-2.3.2.tgz#360f035dd6edd954bc9581f95f2a4a7f2a3505c1"
1707
1676figures@^1.3.5: 1708figures@^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
2579kuler@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
2547latest-version@^3.0.0: 2585latest-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
2702logform@^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
2664lowercase-keys@^1.0.0: 2709lowercase-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
3129one-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
3084onetime@^1.0.0: 3133onetime@^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
4315text-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
4266text-table@~0.2.0: 4319text-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
4378triple-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
4325ts-node@^3.3.0: 4382ts-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
4650winston@^2.1.1: 4707winston-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
4711winston@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
4661wkx@^0.4.1: 4724wkx@^0.4.1:
4662 version "0.4.2" 4725 version "0.4.2"