From 7e6f987e2afa9feaf9df6003c765557a2584c7af Mon Sep 17 00:00:00 2001 From: Barry Low Date: Thu, 11 Oct 2018 16:16:29 -0700 Subject: [PATCH] Add logger + lint --- client/package-lock.json | 129 +++++++++++++++++++++++++++++- client/package.json | 2 + client/src/auth/index.js | 39 +++++---- client/src/index.js | 4 + client/src/utils/local-storage.js | 6 +- client/src/utils/log.js | 39 +++++++++ client/src/views/footer/index.js | 3 +- 7 files changed, 197 insertions(+), 25 deletions(-) create mode 100644 client/src/utils/log.js diff --git a/client/package-lock.json b/client/package-lock.json index 1f1b2d407..d763afe41 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -97,6 +97,17 @@ "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } } }, "@babel/generator": { @@ -895,6 +906,17 @@ "debug": "^3.1.0", "globals": "^11.1.0", "lodash": "^4.17.10" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } } }, "@babel/types": { @@ -4356,6 +4378,16 @@ "object-assign": "^4.1.1" } }, + "cross-env": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.0.tgz", + "integrity": "sha512-jtdNFfFW1hB7sMhr/H6rW1Z45LFqyI431m3qU6bFXcQ3Eh7LtBuG3h74o7ohHZ3crrRkkqHlo4jYHFPcjroANg==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.5", + "is-windows": "^1.0.0" + } + }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -4693,9 +4725,10 @@ "integrity": "sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg==" }, "debug": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz", - "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", + "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", + "dev": true, "requires": { "ms": "^2.1.1" } @@ -8934,6 +8967,16 @@ "mkdirp": "^0.5.1", "rimraf": "^2.6.1", "source-map": "^0.5.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + } } }, "istanbul-reports": { @@ -14318,6 +14361,17 @@ "strip-json-comments": "~2.0.1", "table": "4.0.2", "text-table": "~0.2.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } } }, "eslint-scope": { @@ -14483,6 +14537,17 @@ "strip-json-comments": "~2.0.1", "table": "4.0.2", "text-table": "~0.2.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } } }, "eslint-scope": { @@ -15364,6 +15429,19 @@ "supports-color": "^5.3.0" } }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", @@ -16739,6 +16817,17 @@ "dev": true, "requires": { "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } } }, "scss-tokenizer": { @@ -17629,6 +17718,14 @@ "readable-stream": "^2.3.5" }, "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -18944,6 +19041,15 @@ "lodash": "^4.17.4" }, "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, "eslint-scope": { "version": "3.7.3", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz", @@ -19273,6 +19379,14 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, "del": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", @@ -19599,6 +19713,15 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, "decamelize": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", diff --git a/client/package.json b/client/package.json index d66c599bd..9bf44b561 100644 --- a/client/package.json +++ b/client/package.json @@ -5,6 +5,7 @@ "main": "src/index.js", "scripts": { "dev": "NODE_ENV=development webpack-serve --port 3100 --config ./webpack.config.js", + "build": "cross-env NODE_ENV=production webpack --mode production --config ./webpack.config.js", "lint": "prettier-standard 'src/**/*.js'" }, "repository": { @@ -31,6 +32,7 @@ "babel-plugin-dynamic-import-node": "^2.2.0", "connect-history-api-fallback": "^1.5.0", "css-loader": "^1.0.0", + "debug": "^4.1.0", "dotenv-webpack": "^1.5.7", "eslint": "^5.6.1", "eslint-config-standard": "^12.0.0", diff --git a/client/src/auth/index.js b/client/src/auth/index.js index 53f241c45..ff0bad4ff 100644 --- a/client/src/auth/index.js +++ b/client/src/auth/index.js @@ -1,8 +1,9 @@ import Auth0Lock from 'auth0-lock' import gql from 'graphql-tag' -import { getItem, setItem, removeItem } from '../utils/local-storage' +import { getItem, setItem } from '../utils/local-storage' import { validObject, deleteCookie } from '../utils/js-helpers' +import Log from '../utils/log' import { client } from '../graphql/apollo' @@ -10,7 +11,7 @@ import { AUTH_CONFIG } from './Auth0' // create by renaming Auth0.sample.js to A const AUTHENTICATE = gql` mutation authenticate($idToken: String!) { - TeamsModuleauthenticate(idToken: $idToken) { + TeamsModuleAuthenticate(idToken: $idToken) { alias authId } @@ -60,7 +61,11 @@ export const inviteOptions = { prefill: { email: '' } } -let lock = new Auth0Lock(AUTH_CONFIG.clientId, AUTH_CONFIG.domain, defaultOptions) +let lock = new Auth0Lock( + AUTH_CONFIG.clientId, + AUTH_CONFIG.domain, + defaultOptions +) class Auth { constructor (cb, apolloClient) { @@ -77,6 +82,7 @@ class Auth { login () { // Call the show method to display the widget. + Log.info('logging in') lock.show() } @@ -89,17 +95,23 @@ class Auth { variables: { token: jwt } }) - console.log('loginInvite auth: ', await data.data.verifyTeamInvite) + Log.info('auth.loginInvite') + Log.info(await data.data.verifyTeamInvite) + setItem('invite', JSON.stringify(data.data.verifyTeamInvite)) email = data.data.verifyTeamInvite.email team = data.data.verifyTeamInvite.team.slug } catch (err) { - return console.log('loginInvite err: ', err) + return Log.error(err, 'loginInvite err: ') } inviteOptions.prefill.email = email inviteOptions.auth.params.state = `${email}|${team}` - let lockInvite = new Auth0Lock(AUTH_CONFIG.clientId, AUTH_CONFIG.domain, inviteOptions) + let lockInvite = new Auth0Lock( + AUTH_CONFIG.clientId, + AUTH_CONFIG.domain, + inviteOptions + ) lockInvite.show() } @@ -151,7 +163,8 @@ class Auth { idToken: authResult.idToken, expiresAt } - console.log('setSession idTokenPayload: ', authResult.idTokenPayload) + Log.info('setSession idTokenPayload:') + Log.info(authResult.idTokenPayload) this.signinOrCreateAccount({ ...data }) this.cb(data) @@ -173,10 +186,11 @@ class Auth { mutation: AUTHENTICATE, variables: { idToken } }) - + Log.info('auth.signinOrCreateAccount data:') + Log.info(await data) const user = { - authId: data.data.authenticate.authId, - alias: data.data.authenticate.alias + authId: await data.TeamsModuleAuthenticate.authId, + alias: await data.TeamsModuleAuthenticate.alias } setItem('user', JSON.stringify(user)) if (window.location.href.includes(`callback`)) { @@ -190,11 +204,6 @@ class Auth { logout () { // Clear access token and ID token from local storage - removeItem('access_token') - removeItem('id_token') - removeItem('expires_at') - removeItem('authUser') - removeItem('auth0.ssodata') window.localStorage.clear() deleteCookie('ajs_anonymous_id') deleteCookie('ajs_user_id') diff --git a/client/src/index.js b/client/src/index.js index e6c15fbd9..1d7545c08 100644 --- a/client/src/index.js +++ b/client/src/index.js @@ -4,6 +4,10 @@ import ReactDOM from 'react-dom' import MasterApp from './App' +if (process.env.NODE_ENV !== 'production') { + localStorage.setItem('debug', 'advanced-algos:*') +} + ReactDOM.render(, document.getElementById('root')) let frontendReloadCount = 0 diff --git a/client/src/utils/local-storage.js b/client/src/utils/local-storage.js index 963ba0f36..a63f289ff 100644 --- a/client/src/utils/local-storage.js +++ b/client/src/utils/local-storage.js @@ -2,8 +2,4 @@ const getItem = async name => window.localStorage.getItem(name) const setItem = async (name, value) => window.localStorage.setItem(name, value) const removeItem = async name => window.localStorage.removeItem(name) -export { - getItem, - setItem, - removeItem -} +export { getItem, setItem, removeItem } diff --git a/client/src/utils/log.js b/client/src/utils/log.js new file mode 100644 index 000000000..d05bebc8a --- /dev/null +++ b/client/src/utils/log.js @@ -0,0 +1,39 @@ +import debug from 'debug' + +const BASE = 'advanced-algos' +const COLOURS = { + info: 'blue', + warn: 'orange', + error: 'red' +} + +class Log { + generateMessage (level, message, source) { + // Set the prefix which will cause debug to enable the message + const namespace = `${BASE}:${level}` + const createDebug = debug(namespace) + + // Set the colour of the message based on the level + createDebug.color = COLOURS[level] + + if (source) { + createDebug(source, message) + } else { + createDebug(message) + } + } + + info (message, source) { + return this.generateMessage('info', message, source) + } + + warn (message, source) { + return this.generateMessage('warn', message, source) + } + + error (message, source) { + return this.generateMessage('error', message, source) + } +} + +export default new Log() diff --git a/client/src/views/footer/index.js b/client/src/views/footer/index.js index b2ace1a19..9de1f2bb9 100644 --- a/client/src/views/footer/index.js +++ b/client/src/views/footer/index.js @@ -68,9 +68,8 @@ const Footer = ({ classes }) => { - - Support + Support