From f327fd57ae69dd39c6206f3c1df178d02b7c33bb Mon Sep 17 00:00:00 2001 From: David Kebler Date: Thu, 5 Apr 2018 15:46:45 -0700 Subject: [PATCH] json runtime logger based on pino --- .eslintrc.js | 33 +++++ .gitignore | 2 + .npmignore | 4 + .travis.yml | 12 ++ package-lock.json | 332 ++++++++++++++++++++++++++++++++++++++++++ package.json | 41 ++++++ readme.md | 10 ++ src/logger.mjs | 21 +++ test/amodule.test.js | 49 +++++++ test/apromise.test.js | 19 +++ 10 files changed, 523 insertions(+) create mode 100644 .eslintrc.js create mode 100644 .gitignore create mode 100644 .npmignore create mode 100644 .travis.yml create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 readme.md create mode 100644 src/logger.mjs create mode 100644 test/amodule.test.js create mode 100644 test/apromise.test.js diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..2bed546 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,33 @@ +module.exports = { + "ecmaFeatures": { + "modules": true, + "spread" : true, + "restParams" : true + }, + "env": { + "es6": true, + "node": true, + "mocha": true + }, + "parserOptions": { + "ecmaVersion": 2017, + "sourceType": "module" + }, + "extends": "eslint:recommended", + "rules": { + "indent": [ + "error", + 2 + ], + "no-console": 0, + "semi": ["error", "never"], + "linebreak-style": [ + "error", + "unix" + ], + "quotes": [ + "error", + "single" + ] + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e61051f --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/node_modules/ +/coverage/ diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000..f16fc41 --- /dev/null +++ b/.npmignore @@ -0,0 +1,4 @@ +tests/ +test/ +*.test.js +testing/ diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..5b0b93e --- /dev/null +++ b/.travis.yml @@ -0,0 +1,12 @@ +language: node_js + +node_js: + - '7.10' + - 'node' + +sudo: false + +script: npm test + +after_success: + - bash <(curl -s https://codecov.io/bash) || echo "Codecov did not collect coverage reports" diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..af7aafc --- /dev/null +++ b/package-lock.json @@ -0,0 +1,332 @@ +{ + "name": "@uci/logger", + "version": "0.0.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "http://trantor:8082/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "http://trantor:8082/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "http://trantor:8082/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "color-convert": { + "version": "1.9.1", + "resolved": "http://trantor:8082/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "http://trantor:8082/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "http://trantor:8082/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "http://trantor:8082/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "requires": { + "once": "1.4.0" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "http://trantor:8082/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "fast-json-parse": { + "version": "1.0.3", + "resolved": "http://trantor:8082/fast-json-parse/-/fast-json-parse-1.0.3.tgz", + "integrity": "sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==" + }, + "fast-safe-stringify": { + "version": "1.2.3", + "resolved": "http://trantor:8082/fast-safe-stringify/-/fast-safe-stringify-1.2.3.tgz", + "integrity": "sha512-QJYT/i0QYoiZBQ71ivxdyTqkwKkQ0oxACXHYxH2zYHJEgzi2LsbjgvtzTbLi1SZcF190Db2YP7I7eTsU2egOlw==" + }, + "flatstr": { + "version": "1.0.5", + "resolved": "http://trantor:8082/flatstr/-/flatstr-1.0.5.tgz", + "integrity": "sha1-W0UbCMvUji6sVKK74L9GFlqhS+M=" + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "http://trantor:8082/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "http://trantor:8082/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + }, + "inherits": { + "version": "2.0.3", + "resolved": "http://trantor:8082/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "is-finite": { + "version": "1.0.2", + "resolved": "http://trantor:8082/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "requires": { + "number-is-nan": "1.0.1" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "http://trantor:8082/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "moment": { + "version": "2.20.1", + "resolved": "http://trantor:8082/moment/-/moment-2.20.1.tgz", + "integrity": "sha512-Yh9y73JRljxW5QxN08Fner68eFLxM5ynNOAw2LbIB1YAGeQzZT8QFSUvkAz609Zf+IHhhaUxqZK8dG3W/+HEvg==" + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "http://trantor:8082/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "once": { + "version": "1.4.0", + "resolved": "http://trantor:8082/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1.0.2" + } + }, + "pad-left": { + "version": "2.1.0", + "resolved": "http://trantor:8082/pad-left/-/pad-left-2.1.0.tgz", + "integrity": "sha1-FuajstRKjhOMsIOMx8tAOk/J6ZQ=", + "requires": { + "repeat-string": "1.6.1" + } + }, + "pad-right": { + "version": "0.2.2", + "resolved": "http://trantor:8082/pad-right/-/pad-right-0.2.2.tgz", + "integrity": "sha1-b7ySQEXSRPKiokRQMGDTv8YAl3Q=", + "requires": { + "repeat-string": "1.6.1" + } + }, + "parse-ms": { + "version": "1.0.1", + "resolved": "http://trantor:8082/parse-ms/-/parse-ms-1.0.1.tgz", + "integrity": "sha1-VjRtR0nXjyNDDKDHE4UK75GqNh0=" + }, + "pino": { + "version": "4.10.3", + "resolved": "http://trantor:8082/pino/-/pino-4.10.3.tgz", + "integrity": "sha512-IKXK0dcFQYITgOJBEvy1RCI5gUz+VVERXMhIvk5Ie+k9zzrbwXDs38M3H6JhoCHR58exyNpNcEKBrW4JC2P0pg==", + "requires": { + "chalk": "2.3.0", + "fast-json-parse": "1.0.3", + "fast-safe-stringify": "1.2.3", + "flatstr": "1.0.5", + "pump": "2.0.1", + "quick-format-unescaped": "1.1.2", + "split2": "2.2.0" + } + }, + "pino-colada": { + "version": "1.4.2", + "resolved": "http://trantor:8082/pino-colada/-/pino-colada-1.4.2.tgz", + "integrity": "sha1-pLTX4a/pVCXrxmXagYxSZgAtEyQ=", + "requires": { + "chalk": "2.3.0", + "fast-json-parse": "1.0.3", + "pad-left": "2.1.0", + "pad-right": "0.2.2", + "prettier-bytes": "1.0.4", + "pretty-ms": "2.1.0", + "split2": "2.2.0" + } + }, + "pino-pretty-minimist": { + "version": "0.3.0", + "resolved": "http://trantor:8082/pino-pretty-minimist/-/pino-pretty-minimist-0.3.0.tgz", + "integrity": "sha1-GqKCaUOx+/GuCcKpVDDB0VABrWs=", + "requires": { + "chalk": "1.1.3", + "fast-json-parse": "1.0.3", + "moment": "2.20.1", + "split2": "2.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "http://trantor:8082/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://trantor:8082/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "http://trantor:8082/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "plur": { + "version": "1.0.0", + "resolved": "http://trantor:8082/plur/-/plur-1.0.0.tgz", + "integrity": "sha1-24XGgU9eXlo7Se/CjWBP7GKXUVY=" + }, + "prettier-bytes": { + "version": "1.0.4", + "resolved": "http://trantor:8082/prettier-bytes/-/prettier-bytes-1.0.4.tgz", + "integrity": "sha1-mUsCqkb2mcULYle1+qp/4lV+YtY=" + }, + "pretty-ms": { + "version": "2.1.0", + "resolved": "http://trantor:8082/pretty-ms/-/pretty-ms-2.1.0.tgz", + "integrity": "sha1-QlfCVt8/sLRR1q/6qwIYhBJpgdw=", + "requires": { + "is-finite": "1.0.2", + "parse-ms": "1.0.1", + "plur": "1.0.0" + } + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "http://trantor:8082/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + }, + "pump": { + "version": "2.0.1", + "resolved": "http://trantor:8082/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + }, + "quick-format-unescaped": { + "version": "1.1.2", + "resolved": "http://trantor:8082/quick-format-unescaped/-/quick-format-unescaped-1.1.2.tgz", + "integrity": "sha1-DKWB3jF0vs7yWsPC6JVjQjgdtpg=", + "requires": { + "fast-safe-stringify": "1.2.3" + } + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "http://trantor:8082/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "http://trantor:8082/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "http://trantor:8082/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + }, + "split2": { + "version": "2.2.0", + "resolved": "http://trantor:8082/split2/-/split2-2.2.0.tgz", + "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", + "requires": { + "through2": "2.0.3" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "http://trantor:8082/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://trantor:8082/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "http://trantor:8082/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "requires": { + "has-flag": "2.0.0" + } + }, + "through2": { + "version": "2.0.3", + "resolved": "http://trantor:8082/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "requires": { + "readable-stream": "2.3.3", + "xtend": "4.0.1" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "http://trantor:8082/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "http://trantor:8082/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "xtend": { + "version": "4.0.1", + "resolved": "http://trantor:8082/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..1c14b0b --- /dev/null +++ b/package.json @@ -0,0 +1,41 @@ +{ + "name": "@uci/logger", + "version": "0.0.1", + "description": "Parent Logger for all UCI modules", + "main": "src/logger", + "scripts": { + "testw": "mocha -r @std/esm test/*.test.mjs --watch --recurse --watch-extensions mjs", + "test": "mocha -r @std/esm test/*.test.mjs", + "testci": "istanbul cover ./node_modules/.bin/_mocha --report lcovonly -- -R spec --recursive && codecov || true", + "example": "node -r @std/esm example/example", + "dev": "./node_modules/.bin/nodemon -r @std/esm -e mjs example/example" + }, + "author": "David Kebler", + "license": "MIT", + "repository": { + "type": "git", + "url": "git+https://github.com/uCOMmandIt/uci-changeme.git" + }, + "keywords": [ + "node.js", + "I2C", + "raspberryPi" + ], + "bugs": { + "url": "https://github.com/uCOMmandIt/uci-changeme/issues" + }, + "homepage": "https://github.com/uCOMmandIt/uci-changeme#readme", + "dependencies": { + "pino": "^4.10.3" + }, + "@std/esm": "cjs", + "devDependencies": { + "@std/esm": "^0.18.0", + "nodemon": "^1.14.3", + "chai": "^4.1.2", + "chai-as-promised": "^7.1.1", + "codecov": "^3.0.0", + "istanbul": "^0.4.5", + "mocha": "^4.0.1" + } +} diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..08155c4 --- /dev/null +++ b/readme.md @@ -0,0 +1,10 @@ +# uCOMmandIt Template Package Repository + + +[![Build Status](https://img.shields.io/travis/uCOMmandIt/uci-pkg-template.svg?branch=master)](https://travis-ci.org/uCOMmandIt/uci-pkg-template) +[![Inline docs](http://inch-ci.org/github/uCOMmandIt/uci-pkg-template.svg?branch=master)](http://inch-ci.org/github/uCOMmandIt/uci-pkg-template) +[![Dependencies](https://img.shields.io/david/uCOMmandIt/uci-pkg-template.svg)](https://david-dm.org/uCOMmandIt/uci-pkg-template) +[![devDependencies](https://img.shields.io/david/dev/uCOMmandIt/uci-pkg-template.svg)](https://david-dm.org/uCOMmandIt/uci-pkg-template?type=dev) +[![codecov](https://img.shields.io/codecov/c/github/uCOMmandIt/uci-pkg-template/master.svg)](https://codecov.io/gh/uCOMmandIt/uci-pkg-template) + +runtime module logger based on pino diff --git a/src/logger.mjs b/src/logger.mjs new file mode 100644 index 0000000..ccf596f --- /dev/null +++ b/src/logger.mjs @@ -0,0 +1,21 @@ +import pino from 'pino' + +let pretty = null +if(process.env.UCI_DEV || process.env.DEBUG) { + pretty = pino.pretty() + pretty.pipe(process.stdout) +} + +let LOG = process.env.UCI_LOG || process.env.UCI_DEV || process.env.DEBUG + +const logger = pino({ + name: 'UCI', + enabled: !!LOG, + safe: true, + serializers: { + req: pino.stdSerializers.req, + res: pino.stdSerializers.res + } +},pretty) + +export default logger diff --git a/test/amodule.test.js b/test/amodule.test.js new file mode 100644 index 0000000..fe35e74 --- /dev/null +++ b/test/amodule.test.js @@ -0,0 +1,49 @@ +import aClass from '../src' +import chai from 'chai' +import chaiAsPromised from 'chai-as-promised' + +chai.use(chaiAsPromised) +const expect = chai.expect + +describe( + 'Testing ', + function () { + hooks() + sometests() + someothertests() + }) + +//****************** TESTS ********************** +function sometests() { + it('==> test something', async function () { + + let result = await someasyncfunction() + expect(result, 'test failed').to.equal('expectedresult') + + }) +} + +function someothertests() { + it('==> test something', async function () { + + let result = await someasyncfunction() + expect(result, 'test failed').to.equal('expectedresult') + + }) +} + +function hooks() { + + before(async() => { + await someasyncfunctiontodobefore() + }) + + beforeEach(async() => { + await someasyncfunctiontodobeforeeachtest() + }) + + after(async() => { + await someasyncfunctiontodoaftereeachtest() + }) + +} diff --git a/test/apromise.test.js b/test/apromise.test.js new file mode 100644 index 0000000..29fd4e7 --- /dev/null +++ b/test/apromise.test.js @@ -0,0 +1,19 @@ +import changeme from '../src/changeme' +import path from 'path' +import chai from 'chai' +import chaiAsPromised from 'chai-as-promised' + +const { assert } = chai; +chai.use(chaiAsPromised); + +const expect = chai.expect + +describe('Promise Stuff - ', function () { + + it('Can test a promise', function () { + + return expect(changeme.apromise).to.eventually.equal('some promise hey') + return Promise.resolve().then(() => expect(changeme.apromise).to.eventually.equal('some promise hey')) + + }) +})