From 4b9c3bb2dabca9ae2716e90738e5f98599b2c1e4 Mon Sep 17 00:00:00 2001 From: Andrii Koretskyi Date: Tue, 19 Sep 2017 22:57:14 +0300 Subject: [PATCH 1/3] add logging to file (by RNFolder from disklet) at production --- package-lock.json | 647 +++++++++++++++++++++------------------------ src/app.js | 3 +- src/util/logger.js | 38 +++ 3 files changed, 346 insertions(+), 342 deletions(-) create mode 100644 src/util/logger.js diff --git a/package-lock.json b/package-lock.json index 4d73dcff076..118e3568073 100644 --- a/package-lock.json +++ b/package-lock.json @@ -88,26 +88,8 @@ "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" }, - "airbitz-core-js": { - "version": "git+ssh://git@github.com/Airbitz/airbitz-core-js.git#e1bb4229a76d8acc8f91e6161cb361eecac52074", - "requires": { - "aes-js": "3.1.0", - "airbitz-core-types": "git+ssh://git@github.com/Airbitz/airbitz-core-types.git#ca3b29123f421678566b863c336fed446bf3494c", - "base-x": "1.1.0", - "chai": "4.1.2", - "disklet": "0.2.5", - "elliptic": "6.4.0", - "hash.js": "1.1.3", - "mocha": "3.5.3", - "redux": "3.7.2", - "redux-thunk": "2.2.0", - "rfc4648": "0.9.1", - "scrypt-js": "2.0.3", - "utf8": "2.1.2" - } - }, "airbitz-core-js-ui": { - "version": "git+ssh://git@github.com/Airbitz/airbitz-core-js-ui.git#521197d4a3a74e80d4e55ce129b257472afb4125", + "version": "git+ssh://git@github.com/Airbitz/airbitz-core-js-ui.git#e90163804fe414bb68b8f758910d065ecf9ae28e", "requires": { "airbitz-core-js": "git+ssh://git@github.com/Airbitz/airbitz-core-js.git#e1bb4229a76d8acc8f91e6161cb361eecac52074", "async": "2.0.1", @@ -138,6 +120,42 @@ "whatwg-fetch": "2.0.3" }, "dependencies": { + "airbitz-core-js": { + "version": "git+ssh://git@github.com/Airbitz/airbitz-core-js.git#e1bb4229a76d8acc8f91e6161cb361eecac52074", + "requires": { + "aes-js": "3.1.0", + "airbitz-core-types": "git+ssh://git@github.com/Airbitz/airbitz-core-types.git#ca3b29123f421678566b863c336fed446bf3494c", + "base-x": "1.1.0", + "chai": "4.1.2", + "disklet": "0.2.5", + "elliptic": "6.4.0", + "hash.js": "1.1.3", + "mocha": "3.5.3", + "redux": "3.7.2", + "redux-thunk": "2.2.0", + "rfc4648": "0.9.1", + "scrypt-js": "2.0.3", + "utf8": "2.1.2" + }, + "dependencies": { + "redux": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/redux/-/redux-3.7.2.tgz", + "integrity": "sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A==", + "requires": { + "lodash": "4.17.4", + "lodash-es": "4.17.4", + "loose-envify": "1.3.1", + "symbol-observable": "1.0.4" + } + }, + "redux-thunk": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.2.0.tgz", + "integrity": "sha1-5hWhbha0ehmlFXZhM9Hj6Zt4UuU=" + } + } + }, "async": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/async/-/async-2.0.1.tgz", @@ -178,17 +196,19 @@ "lodash-es": "4.17.4", "loose-envify": "1.3.1", "symbol-observable": "0.2.4" + }, + "dependencies": { + "symbol-observable": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz", + "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=" + } } }, "redux-thunk": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.1.2.tgz", "integrity": "sha1-xpjtc006dEjdDemGWg+0ExLC13k=" - }, - "symbol-observable": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz", - "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=" } } }, @@ -202,21 +222,54 @@ "react-native-randombytes": "2.3.0", "react-native-tcp": "git+https://github.com/Airbitz/react-native-tcp.git#53fdc03b8ed2b9ceaaf91f1bcccec98f85cd0a6e", "rfc4648": "0.9.1" + }, + "dependencies": { + "airbitz-core-js": { + "version": "git+ssh://git@github.com/Airbitz/airbitz-core-js.git#e1bb4229a76d8acc8f91e6161cb361eecac52074", + "requires": { + "aes-js": "3.1.0", + "airbitz-core-types": "git+ssh://git@github.com/Airbitz/airbitz-core-types.git#ca3b29123f421678566b863c336fed446bf3494c", + "base-x": "1.1.0", + "chai": "4.1.2", + "disklet": "0.2.5", + "elliptic": "6.4.0", + "hash.js": "1.1.3", + "mocha": "3.5.3", + "redux": "3.7.2", + "redux-thunk": "2.2.0", + "rfc4648": "0.9.1", + "scrypt-js": "2.0.3", + "utf8": "2.1.2" + } + } } }, "airbitz-core-types": { "version": "git+ssh://git@github.com/Airbitz/airbitz-core-types.git#ca3b29123f421678566b863c336fed446bf3494c" }, "airbitz-currency-bitcoin": { - "version": "git+ssh://git@github.com/Airbitz/airbitz-currency-bitcoin.git#f288bb6e50a98cec8df026068442e70b6171ddda", + "version": "git+ssh://git@github.com/Airbitz/airbitz-currency-bitcoin.git#cc5a5cddd1e08e54fb31fc365666340d48518855", "requires": { - "bcoin": "git+https://github.com/Airbitz/bcoin.git#5617f60e5c5d70f0964247f7573485594333951b", - "biggystring": "1.0.6", + "bcoin": "git+https://github.com/Airbitz/bcoin.git#eef6cbef2fe26eb4b2548f7bbb20fbfaa409c638", + "biggystring": "1.0.7", "buffer": "5.0.7", "lcoin": "git+https://github.com/Airbitz/lcoin.git#de7016671e2593638dd80a820889b7e9329d7355", "uri-js": "3.0.2" }, "dependencies": { + "bcoin": { + "version": "git+https://github.com/Airbitz/bcoin.git#eef6cbef2fe26eb4b2548f7bbb20fbfaa409c638", + "requires": { + "bcoin-native": "0.0.23", + "bn.js": "4.11.8", + "elliptic": "6.4.0", + "leveldown": "1.7.2", + "n64": "0.0.18", + "secp256k1": "3.3.0", + "socket.io": "2.0.3", + "socket.io-client": "2.0.3" + } + }, "buffer": { "version": "5.0.7", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.0.7.tgz", @@ -225,6 +278,228 @@ "base64-js": "1.2.1", "ieee754": "1.1.8" } + }, + "engine.io-client": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.1.1.tgz", + "integrity": "sha1-QVqYUrrbFPoAj6PvHjFgjbZ2EyU=", + "optional": true, + "requires": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "2.6.8", + "engine.io-parser": "2.1.1", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parsejson": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "2.3.1", + "xmlhttprequest-ssl": "1.5.3", + "yeast": "0.1.2" + } + }, + "engine.io-parser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.1.tgz", + "integrity": "sha1-4Ps/DgRi9/WLt3waUun1p+JuRmg=", + "optional": true, + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "0.0.6", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.4", + "has-binary2": "1.0.2" + } + }, + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" + }, + "lcoin": { + "version": "git+https://github.com/Airbitz/lcoin.git#de7016671e2593638dd80a820889b7e9329d7355", + "requires": { + "bcoin-native": "0.0.19", + "bn.js": "4.11.6", + "elliptic": "6.4.0", + "hmac-drbg": "1.0.1", + "leveldown": "1.7.0-0", + "n64": "0.0.11", + "secp256k1": "3.2.5", + "socket.io": "2.0.1", + "socket.io-client": "2.0.1" + }, + "dependencies": { + "bcoin-native": { + "version": "0.0.19", + "resolved": "https://registry.npmjs.org/bcoin-native/-/bcoin-native-0.0.19.tgz", + "integrity": "sha1-YqpcGH++ZZzWYSja+f2I1YbEZ20=", + "optional": true, + "requires": { + "bindings": "1.3.0", + "nan": "2.7.0" + } + }, + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" + }, + "leveldown": { + "version": "1.7.0-0", + "resolved": "https://registry.npmjs.org/leveldown/-/leveldown-1.7.0-0.tgz", + "integrity": "sha1-orKVMhbsJzrmWkG6bNiNaXn98T8=", + "optional": true, + "requires": { + "abstract-leveldown": "2.6.3", + "bindings": "1.2.1", + "fast-future": "1.0.2", + "nan": "2.6.2", + "prebuild-install": "2.2.2" + }, + "dependencies": { + "bindings": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz", + "integrity": "sha1-FK1hE4EtLTfXLme0ystLtyZQXxE=", + "optional": true + }, + "nan": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", + "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=", + "optional": true + } + } + }, + "n64": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/n64/-/n64-0.0.11.tgz", + "integrity": "sha1-NFG8by8g/okyxkfodoXFi+SjSJo=" + }, + "secp256k1": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.2.5.tgz", + "integrity": "sha1-Dd5bJ+UCFmX23/ynssPgEMbBPJM=", + "optional": true, + "requires": { + "bindings": "1.3.0", + "bip66": "1.1.5", + "bn.js": "4.11.6", + "create-hash": "1.1.3", + "drbg.js": "1.0.1", + "elliptic": "6.4.0", + "nan": "2.7.0", + "prebuild-install": "2.2.2" + } + }, + "socket.io": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.0.1.tgz", + "integrity": "sha1-BkwSUXhGLkd6bfI9L9rRjdHFkU8=", + "optional": true, + "requires": { + "debug": "2.6.8", + "engine.io": "3.1.1", + "object-assign": "4.1.1", + "socket.io-adapter": "1.1.1", + "socket.io-client": "2.0.1", + "socket.io-parser": "3.1.2" + } + }, + "socket.io-client": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.0.1.tgz", + "integrity": "sha1-HVL4x0Zgxou2aVlT+hGZcRVfrZM=", + "optional": true, + "requires": { + "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "2.6.4", + "engine.io-client": "3.1.1", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseuri": "0.0.5", + "socket.io-parser": "3.1.2", + "to-array": "0.1.4" + }, + "dependencies": { + "debug": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.4.tgz", + "integrity": "sha1-dYaps8OXQcAoKuM0RcTorHRzT+A=", + "optional": true, + "requires": { + "ms": "0.7.3" + } + } + } + } + } + }, + "ms": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.3.tgz", + "integrity": "sha1-cIFVpeROM/X9D8U+gdDUCpG+H/8=", + "optional": true + }, + "safe-buffer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", + "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=", + "optional": true + }, + "socket.io-client": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.0.3.tgz", + "integrity": "sha1-bK9K/5+FsZ/ZG2zhPWmttWT4hzs=", + "optional": true, + "requires": { + "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "2.6.8", + "engine.io-client": "3.1.1", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "socket.io-parser": "3.1.2", + "to-array": "0.1.4" + } + }, + "socket.io-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.1.2.tgz", + "integrity": "sha1-28IoIVH8T6675Aru3Ady66YZ9/I=", + "requires": { + "component-emitter": "1.2.1", + "debug": "2.6.8", + "has-binary2": "1.0.2", + "isarray": "2.0.1" + } + }, + "ultron": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.0.tgz", + "integrity": "sha1-sHoualQagV/Go0zNRTO67DB8qGQ=", + "optional": true + }, + "ws": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-2.3.1.tgz", + "integrity": "sha1-a5Sz5EfLajY/eF6vlK9jWejoHIA=", + "optional": true, + "requires": { + "safe-buffer": "5.0.1", + "ultron": "1.1.0" + } } } }, @@ -232,7 +507,7 @@ "version": "git+ssh://git@github.com/Airbitz/airbitz-currency-ethereum.git#4b4756405ba97e3aaeef26091074719d4bc9f204", "requires": { "airbitz-core-types": "git+ssh://git@github.com/Airbitz/airbitz-core-types.git#ca3b29123f421678566b863c336fed446bf3494c", - "biggystring": "1.0.6", + "biggystring": "1.0.7", "bn.js": "4.11.8", "buffer": "5.0.7", "ethereumjs-abi": "0.6.4", @@ -1588,115 +1863,6 @@ "resolved": "https://registry.npmjs.org/batch/-/batch-0.5.3.tgz", "integrity": "sha1-PzQU84AyF0O/wQQvmoP/HVgk1GQ=" }, - "bcoin": { - "version": "git+https://github.com/Airbitz/bcoin.git#5617f60e5c5d70f0964247f7573485594333951b", - "requires": { - "bcoin-native": "0.0.23", - "bn.js": "4.11.8", - "elliptic": "6.4.0", - "leveldown": "1.7.2", - "n64": "0.0.18", - "secp256k1": "3.3.0", - "socket.io": "2.0.3", - "socket.io-client": "2.0.3" - }, - "dependencies": { - "engine.io-client": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.1.1.tgz", - "integrity": "sha1-QVqYUrrbFPoAj6PvHjFgjbZ2EyU=", - "optional": true, - "requires": { - "component-emitter": "1.2.1", - "component-inherit": "0.0.3", - "debug": "2.6.8", - "engine.io-parser": "2.1.1", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "parsejson": "0.0.3", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "ws": "2.3.1", - "xmlhttprequest-ssl": "1.5.3", - "yeast": "0.1.2" - } - }, - "engine.io-parser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.1.tgz", - "integrity": "sha1-4Ps/DgRi9/WLt3waUun1p+JuRmg=", - "optional": true, - "requires": { - "after": "0.8.2", - "arraybuffer.slice": "0.0.6", - "base64-arraybuffer": "0.1.5", - "blob": "0.0.4", - "has-binary2": "1.0.2" - } - }, - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", - "optional": true - }, - "safe-buffer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", - "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=", - "optional": true - }, - "socket.io-client": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.0.3.tgz", - "integrity": "sha1-bK9K/5+FsZ/ZG2zhPWmttWT4hzs=", - "optional": true, - "requires": { - "backo2": "1.0.2", - "base64-arraybuffer": "0.1.5", - "component-bind": "1.0.0", - "component-emitter": "1.2.1", - "debug": "2.6.8", - "engine.io-client": "3.1.1", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "object-component": "0.0.3", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "socket.io-parser": "3.1.2", - "to-array": "0.1.4" - } - }, - "socket.io-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.1.2.tgz", - "integrity": "sha1-28IoIVH8T6675Aru3Ady66YZ9/I=", - "optional": true, - "requires": { - "component-emitter": "1.2.1", - "debug": "2.6.8", - "has-binary2": "1.0.2", - "isarray": "2.0.1" - } - }, - "ultron": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.0.tgz", - "integrity": "sha1-sHoualQagV/Go0zNRTO67DB8qGQ=", - "optional": true - }, - "ws": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-2.3.1.tgz", - "integrity": "sha1-a5Sz5EfLajY/eF6vlK9jWejoHIA=", - "optional": true, - "requires": { - "safe-buffer": "5.0.1", - "ultron": "1.1.0" - } - } - } - }, "bcoin-native": { "version": "0.0.23", "resolved": "https://registry.npmjs.org/bcoin-native/-/bcoin-native-0.0.23.tgz", @@ -1740,9 +1906,9 @@ "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==" }, "biggystring": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/biggystring/-/biggystring-1.0.6.tgz", - "integrity": "sha512-UtpS2HmEDNlVHlAC2mV1/Q+tZuWESoT3kCEeHMU7b0DxuW7iKMgxFF6TniMLn05emonc1t2jZxIcbXNSGjlpLQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/biggystring/-/biggystring-1.0.7.tgz", + "integrity": "sha512-hq1t1Gc6p6KVLCr2Azwo+YhqXteFPVBcnqVJiAVm9WtsrZdlABbuNDlownyjJBApEZocA6rYdjMTjXWd6Bzqjw==", "requires": { "bn.js": "4.11.8" } @@ -7025,207 +7191,6 @@ "invert-kv": "1.0.0" } }, - "lcoin": { - "version": "git+https://github.com/Airbitz/lcoin.git#de7016671e2593638dd80a820889b7e9329d7355", - "requires": { - "bcoin-native": "0.0.19", - "bn.js": "4.11.6", - "elliptic": "6.4.0", - "hmac-drbg": "1.0.1", - "leveldown": "1.7.0-0", - "n64": "0.0.11", - "secp256k1": "3.2.5", - "socket.io": "2.0.1", - "socket.io-client": "2.0.1" - }, - "dependencies": { - "bcoin-native": { - "version": "0.0.19", - "resolved": "https://registry.npmjs.org/bcoin-native/-/bcoin-native-0.0.19.tgz", - "integrity": "sha1-YqpcGH++ZZzWYSja+f2I1YbEZ20=", - "optional": true, - "requires": { - "bindings": "1.3.0", - "nan": "2.7.0" - } - }, - "bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" - }, - "engine.io-client": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.1.1.tgz", - "integrity": "sha1-QVqYUrrbFPoAj6PvHjFgjbZ2EyU=", - "optional": true, - "requires": { - "component-emitter": "1.2.1", - "component-inherit": "0.0.3", - "debug": "2.6.8", - "engine.io-parser": "2.1.1", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "parsejson": "0.0.3", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "ws": "2.3.1", - "xmlhttprequest-ssl": "1.5.3", - "yeast": "0.1.2" - } - }, - "engine.io-parser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.1.tgz", - "integrity": "sha1-4Ps/DgRi9/WLt3waUun1p+JuRmg=", - "optional": true, - "requires": { - "after": "0.8.2", - "arraybuffer.slice": "0.0.6", - "base64-arraybuffer": "0.1.5", - "blob": "0.0.4", - "has-binary2": "1.0.2" - } - }, - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" - }, - "leveldown": { - "version": "1.7.0-0", - "resolved": "https://registry.npmjs.org/leveldown/-/leveldown-1.7.0-0.tgz", - "integrity": "sha1-orKVMhbsJzrmWkG6bNiNaXn98T8=", - "optional": true, - "requires": { - "abstract-leveldown": "2.6.3", - "bindings": "1.2.1", - "fast-future": "1.0.2", - "nan": "2.6.2", - "prebuild-install": "2.2.2" - }, - "dependencies": { - "bindings": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz", - "integrity": "sha1-FK1hE4EtLTfXLme0ystLtyZQXxE=", - "optional": true - }, - "nan": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", - "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=", - "optional": true - } - } - }, - "ms": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.3.tgz", - "integrity": "sha1-cIFVpeROM/X9D8U+gdDUCpG+H/8=", - "optional": true - }, - "n64": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/n64/-/n64-0.0.11.tgz", - "integrity": "sha1-NFG8by8g/okyxkfodoXFi+SjSJo=" - }, - "safe-buffer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", - "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=", - "optional": true - }, - "secp256k1": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.2.5.tgz", - "integrity": "sha1-Dd5bJ+UCFmX23/ynssPgEMbBPJM=", - "optional": true, - "requires": { - "bindings": "1.3.0", - "bip66": "1.1.5", - "bn.js": "4.11.6", - "create-hash": "1.1.3", - "drbg.js": "1.0.1", - "elliptic": "6.4.0", - "nan": "2.7.0", - "prebuild-install": "2.2.2" - } - }, - "socket.io": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.0.1.tgz", - "integrity": "sha1-BkwSUXhGLkd6bfI9L9rRjdHFkU8=", - "optional": true, - "requires": { - "debug": "2.6.8", - "engine.io": "3.1.1", - "object-assign": "4.1.1", - "socket.io-adapter": "1.1.1", - "socket.io-client": "2.0.1", - "socket.io-parser": "3.1.2" - } - }, - "socket.io-client": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.0.1.tgz", - "integrity": "sha1-HVL4x0Zgxou2aVlT+hGZcRVfrZM=", - "optional": true, - "requires": { - "backo2": "1.0.2", - "base64-arraybuffer": "0.1.5", - "component-bind": "1.0.0", - "component-emitter": "1.2.1", - "debug": "2.6.4", - "engine.io-client": "3.1.1", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "object-component": "0.0.3", - "parseuri": "0.0.5", - "socket.io-parser": "3.1.2", - "to-array": "0.1.4" - }, - "dependencies": { - "debug": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.4.tgz", - "integrity": "sha1-dYaps8OXQcAoKuM0RcTorHRzT+A=", - "optional": true, - "requires": { - "ms": "0.7.3" - } - } - } - }, - "socket.io-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.1.2.tgz", - "integrity": "sha1-28IoIVH8T6675Aru3Ady66YZ9/I=", - "requires": { - "component-emitter": "1.2.1", - "debug": "2.6.8", - "has-binary2": "1.0.2", - "isarray": "2.0.1" - } - }, - "ultron": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.0.tgz", - "integrity": "sha1-sHoualQagV/Go0zNRTO67DB8qGQ=", - "optional": true - }, - "ws": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-2.3.1.tgz", - "integrity": "sha1-a5Sz5EfLajY/eF6vlK9jWejoHIA=", - "optional": true, - "requires": { - "safe-buffer": "5.0.1", - "ultron": "1.1.0" - } - } - } - }, "left-pad": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.1.3.tgz", diff --git a/src/app.js b/src/app.js index 11bd6f2df34..cd5a9da3cd1 100644 --- a/src/app.js +++ b/src/app.js @@ -4,12 +4,13 @@ import React, {Component} from 'react' import {Provider} from 'react-redux' import configureStore from './lib/configureStore' import Main from './modules/MainConnector' +import {log} from './util/logger' const store: {} = configureStore({}) if (!__DEV__) { // $FlowFixMe: suppressing this error until we can find a workaround - console.log = () => {} + console.log = log } export default class App extends Component { diff --git a/src/util/logger.js b/src/util/logger.js new file mode 100644 index 00000000000..b4a9f5d6912 --- /dev/null +++ b/src/util/logger.js @@ -0,0 +1,38 @@ +import {makeReactNativeFolder} from 'disklet' + +const LOGS_FOLDER = 'logs' + +const root = makeReactNativeFolder() +const logsFolder = root.folder(LOGS_FOLDER) + +const getTime = () => new Date().toISOString() + +const getDate = () => getTime().slice(0, 10) + +const isObject = (item) => typeof item === 'object' && item !== null + +async function read (fileName) { + const fileNames = await logsFolder.listFiles() + if (fileNames.includes(fileName)) return logsFolder.file(fileName).getText() + + return '' +} + +async function write (logString) { + const fileName =`${getDate()}.txt` + const logs = await read(fileName) + const updatedLogs = logs ? `${logs}\n${logString}` : logString + + logsFolder.file(fileName).setText(updatedLogs) +} + + +export function log (...info) { + write(`${getTime()} | ${info.map((item) => isObject(item) ? JSON.stringify(item) : item).join(' ')}`) +} + +export async function readLogs () { + const fileNames = await logsFolder.listFiles() + const files = await Promise.all(fileNames.map((fileName) => logsFolder.file(fileName).getText())) + return files.join('\n\n') +} From b1d27ea9a4ac07c7011f5b40dabd5e0b63d9a418 Mon Sep 17 00:00:00 2001 From: Andrii Koretskyi Date: Tue, 19 Sep 2017 23:03:52 +0300 Subject: [PATCH 2/3] add flow to logger --- src/util/logger.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/util/logger.js b/src/util/logger.js index b4a9f5d6912..2b7da6f6bd2 100644 --- a/src/util/logger.js +++ b/src/util/logger.js @@ -1,3 +1,5 @@ +// @flow + import {makeReactNativeFolder} from 'disklet' const LOGS_FOLDER = 'logs' @@ -27,7 +29,7 @@ async function write (logString) { } -export function log (...info) { +export function log (...info: Array) { write(`${getTime()} | ${info.map((item) => isObject(item) ? JSON.stringify(item) : item).join(' ')}`) } From c5cb0642cf57b325220948ff9a3274049cf2695f Mon Sep 17 00:00:00 2001 From: Andrii Koretskyi Date: Wed, 20 Sep 2017 20:41:28 +0300 Subject: [PATCH 3/3] add logs buffering --- src/util/logger.js | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/util/logger.js b/src/util/logger.js index 2b7da6f6bd2..3cc45385d35 100644 --- a/src/util/logger.js +++ b/src/util/logger.js @@ -3,6 +3,10 @@ import {makeReactNativeFolder} from 'disklet' const LOGS_FOLDER = 'logs' +const SAVE_TIMEOUT = 1000 * 10 // ms + +let buffer = '' +let lastSaving = Date.now() const root = makeReactNativeFolder() const logsFolder = root.folder(LOGS_FOLDER) @@ -13,6 +17,19 @@ const getDate = () => getTime().slice(0, 10) const isObject = (item) => typeof item === 'object' && item !== null +const joinLogs = (...logs) => logs.filter((str) => str !== '').join('\n') + +function saveToBuffer (log) { + buffer = joinLogs(buffer, log) +} + +function readAndClearBuffer () { + const logs = buffer + buffer = '' + lastSaving = Date.now() + return logs +} + async function read (fileName) { const fileNames = await logsFolder.listFiles() if (fileNames.includes(fileName)) return logsFolder.file(fileName).getText() @@ -21,9 +38,12 @@ async function read (fileName) { } async function write (logString) { + if (Date.now() - lastSaving < SAVE_TIMEOUT) return saveToBuffer(logString) + + const bufferedLogs = readAndClearBuffer() const fileName =`${getDate()}.txt` const logs = await read(fileName) - const updatedLogs = logs ? `${logs}\n${logString}` : logString + const updatedLogs = joinLogs(logs, bufferedLogs, logString) logsFolder.file(fileName).setText(updatedLogs) }