From 289c2a770e8d2929496190f682719ed98e5cc31f Mon Sep 17 00:00:00 2001 From: Ryan Smith <0ryansmith1994@gmail.com> Date: Tue, 31 Oct 2017 15:29:14 +0000 Subject: [PATCH 1/2] feat(tracker): Starts adding newrelic tracking. --- package-lock.json | 109 +++++++++++++++++++++++++++++++++++++++------- package.json | 2 +- src/config.ts | 10 +++++ src/tracker.ts | 15 +++++++ 4 files changed, 120 insertions(+), 16 deletions(-) create mode 100644 src/tracker.ts diff --git a/package-lock.json b/package-lock.json index 7b3df82fb..63d2b2782 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,6 +4,15 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@newrelic/native-metrics": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@newrelic/native-metrics/-/native-metrics-2.1.2.tgz", + "integrity": "sha1-mlldxgJlS3FxiKKUUHCHpR55+6M=", + "optional": true, + "requires": { + "nan": "2.7.0" + } + }, "@semantic-release/commit-analyzer": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-3.0.7.tgz", @@ -851,7 +860,6 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", - "dev": true, "requires": { "inherits": "2.0.3", "readable-stream": "2.3.3", @@ -862,7 +870,6 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", @@ -877,7 +884,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, "requires": { "safe-buffer": "5.1.1" } @@ -2409,9 +2415,9 @@ "optional": true }, "jscommons": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/jscommons/-/jscommons-1.0.5.tgz", - "integrity": "sha512-4EwglzL5T9g/dzx1Sye8S96S/f5wJ+8xNcsw2UNC6Y/LhtYTZvPiGweji6tVSLfHNaNjaHeHAWvR3KJhd6GZAg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jscommons/-/jscommons-1.3.0.tgz", + "integrity": "sha512-tGG7gL0uPhIoVkyAYMClZHW2S+KEsn17cendsiIt/SUE2pkM20VC5vfrA9cOU4Wvr6ZTtWqomKZA8B9rjMT14A==", "requires": { "aws-sdk": "2.141.0", "body-parser": "1.18.2", @@ -2426,10 +2432,18 @@ "moment": "2.19.1", "mongodb": "2.2.33", "morgan": "1.9.0", - "rulr": "3.0.0", + "newrelic": "2.3.1", + "rulr": "4.0.1", "uuid": "3.1.0", "winston": "2.4.0", "winston-aws-cloudwatch": "1.6.0" + }, + "dependencies": { + "rulr": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/rulr/-/rulr-4.0.1.tgz", + "integrity": "sha512-vUs3AqW/3l/8z/iCuLAVk4xmQkgzA8ihm98G8XBWYDV/tI6uhX1XOkqxIpCiSiMhibHrUrD5+taIUyS6DksX0g==" + } } }, "jscpd": { @@ -2468,8 +2482,7 @@ "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, "jsonfile": { "version": "4.0.0", @@ -3017,6 +3030,12 @@ "integrity": "sha1-SJYrGeFp/R38JAs/HnMXYnu8R9s=", "dev": true }, + "nan": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.7.0.tgz", + "integrity": "sha1-2Vv3IeyHfgjbJ27T/G63j5CDrUY=", + "optional": true + }, "negotiator": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", @@ -3034,6 +3053,67 @@ "integrity": "sha1-a+lPysqNd63gqWcNxGCRTJRHJEQ=", "dev": true }, + "newrelic": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/newrelic/-/newrelic-2.3.1.tgz", + "integrity": "sha1-S3L5CNjgvjc0cOnBgJfDXD+Wc7w=", + "requires": { + "@newrelic/native-metrics": "2.1.2", + "async": "2.5.0", + "concat-stream": "1.6.0", + "https-proxy-agent": "0.3.6", + "json-stringify-safe": "5.0.1", + "readable-stream": "2.3.3", + "semver": "5.4.1" + }, + "dependencies": { + "agent-base": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-1.0.2.tgz", + "integrity": "sha1-aJDT+yFwBLYrcPiSjg+uX4lSpwY=" + }, + "async": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", + "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", + "requires": { + "lodash": "4.17.4" + } + }, + "https-proxy-agent": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-0.3.6.tgz", + "integrity": "sha1-cT+jjl01P1DrFKNC/r4pAz7RYZs=", + "requires": { + "agent-base": "1.0.2", + "debug": "2.6.9", + "extend": "3.0.1" + } + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/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" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, "nocache": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/nocache/-/nocache-2.0.0.tgz", @@ -4467,8 +4547,7 @@ "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, "typescript": { "version": "2.5.3", @@ -4709,7 +4788,7 @@ "dotenv": "4.0.0", "express": "4.16.2", "fs-extra": "4.0.2", - "jscommons": "1.0.5", + "jscommons": "1.3.0", "lodash": "4.17.4", "mime-types": "2.1.17", "mongodb": "2.2.33", @@ -4751,7 +4830,7 @@ "dotenv": "4.0.0", "express": "4.16.2", "fs-extra": "4.0.2", - "jscommons": "1.0.5", + "jscommons": "1.3.0", "lodash": "4.17.4", "mime-types": "2.1.17", "mongodb": "2.2.33", @@ -4793,7 +4872,7 @@ "dotenv": "4.0.0", "express": "4.16.2", "fs-extra": "4.0.2", - "jscommons": "1.0.5", + "jscommons": "1.3.0", "lodash": "4.17.4", "mime-types": "2.1.17", "mongodb": "2.2.33", @@ -4840,7 +4919,7 @@ "file-stream-rotator": "0.2.0", "fs-extra": "4.0.2", "helmet": "3.9.0", - "jscommons": "1.0.5", + "jscommons": "1.3.0", "jsonwebtoken": "8.1.0", "lodash": "4.17.4", "mime-types": "2.1.17", diff --git a/package.json b/package.json index 081d5b211..fb8e913dd 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "dotenv": "^4.0.0", "express": "^4.14.1", "install": "^0.10.1", - "jscommons": "^1.0.1", + "jscommons": "^1.3.0", "lodash": "^4.17.4", "mongodb": "^2.2.26", "redis": "^2.8.0", diff --git a/src/config.ts b/src/config.ts index 92ab8f534..5fe38c738 100644 --- a/src/config.ts +++ b/src/config.ts @@ -15,6 +15,8 @@ const storageDir = `${process.cwd()}/storage`; const expressPort = getNumberOption(process.env.EXPRESS_PORT, DEFAULT_EXPRESS_PORT); const demoAuth = `http://localhost:${expressPort}/auth`; const accessLogsDir = `${storageDir}/accessLogs`; +const newRelicLogsDir = `${storageDir}/newrelic-agent.log`; +const newRelicLicenseKey = getStringOption(process.env.NEW_RELIC_LICENSE_KEY); export default { defaultTimeout: getNumberOption(process.env.DEFAULT_TIMEOUT_MS, DEFAULT_TIMEOUT_MS), @@ -76,6 +78,14 @@ export default { state: getStringOption(process.env.SUB_FOLDER_STATE, '/state'), statements: getStringOption(process.env.SUB_FOLDER_STATEMENTS, '/statements'), }, + tracker: { + newRelic: { + enabled: newRelicLicenseKey !== undefined, + log: getStringOption(process.env.NEW_RELIC_LOG, newRelicLogsDir), + logLevel: getStringOption(process.env.NEW_RELIC_LOG_LEVEL, 'info'), + noConfigFile: getStringOption(process.env.NEW_RELIC_NO_CONFIG_FILE, 'true'), + }, + }, winston: { cloudWatch: { awsConfig: { diff --git a/src/tracker.ts b/src/tracker.ts new file mode 100644 index 000000000..2ad86fd6d --- /dev/null +++ b/src/tracker.ts @@ -0,0 +1,15 @@ +import fakeTracker from 'jscommons/dist/tracker/fake'; +import newRelicTracker from 'jscommons/dist/tracker/newrelic'; +import Tracker from 'jscommons/dist/tracker/Tracker'; +import config from './config'; + +/* istanbul ignore next */ +export default async (): Promise => { + if (config.tracker.newRelic.enabled) { + process.env.NEW_RELIC_NO_CONFIG_FILE = config.tracker.newRelic.noConfigFile; + process.env.NEW_RELIC_LOG = config.tracker.newRelic.log; + process.env.NEW_RELIC_LOG_LEVEL = config.tracker.newRelic.logLevel; + return newRelicTracker(); + } + return fakeTracker; +}; From cd022f12715c0e81d744d50e3edc560a6baf9450 Mon Sep 17 00:00:00 2001 From: Ryan Smith <0ryansmith1994@gmail.com> Date: Thu, 2 Nov 2017 11:14:17 +0000 Subject: [PATCH 2/2] feat(tracker): Finishes adding newrelic tracking. --- package-lock.json | 36 ++++------ package.json | 2 +- src/config.ts | 4 +- src/conformanceServer.ts | 7 +- src/routers/statements.ts | 2 + src/server.ts | 3 +- src/tracker.ts | 4 +- test.sh | 4 +- yarn.lock | 148 +++++++++++++++++++++++--------------- 9 files changed, 117 insertions(+), 93 deletions(-) diff --git a/package-lock.json b/package-lock.json index 63d2b2782..97919f82c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3270,11 +3270,6 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, - "object-hash": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.1.8.tgz", - "integrity": "sha1-KKZZz5h9lqTavnhgKJ87UybEoDw=" - }, "object.omit": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", @@ -4902,9 +4897,9 @@ } }, "xapi-statements": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/xapi-statements/-/xapi-statements-1.0.11.tgz", - "integrity": "sha512-n42405C5bPxpmgyRD9lcOkXnUxG38uASFAmWu4x+t7/p1qpX3ZPd/b3xsdfCsOlFs2Vi0RCooSJimeIREP4Mrg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xapi-statements/-/xapi-statements-1.1.0.tgz", + "integrity": "sha512-pPLXI8wtgzmtikk6T+XYL/2yGlhk2BnFMPMBcBqelSMUfu0RPIxJ1WSBhpzFH2+m/TfRh6mcAJHYhHtDEWCfTA==", "requires": { "accept-language-parser": "1.4.1", "atob": "2.0.3", @@ -4927,11 +4922,11 @@ "mongodb": "2.2.33", "morgan": "1.9.0", "node-fetch": "1.7.3", - "object-hash": "1.1.8", + "object-hash": "1.2.0", "promise-retry": "1.1.1", "redis": "2.8.0", - "rulr": "3.0.0", - "source-map-support": "0.4.18", + "rulr": "4.0.1", + "source-map-support": "0.5.0", "stream-to-string": "1.1.0", "string-to-stream": "1.1.0", "uuid": "3.1.0", @@ -4940,18 +4935,15 @@ "xapi-validation": "2.1.2" }, "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + "object-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.2.0.tgz", + "integrity": "sha512-smRWXzkvxw72VquyZ0wggySl7PFUtoDhvhpdwgESXxUrH7vVhhp9asfup1+rVLrhsl7L45Ee1Q/l5R2Ul4MwUg==" }, - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "requires": { - "source-map": "0.5.7" - } + "rulr": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/rulr/-/rulr-4.0.1.tgz", + "integrity": "sha512-vUs3AqW/3l/8z/iCuLAVk4xmQkgzA8ihm98G8XBWYDV/tI6uhX1XOkqxIpCiSiMhibHrUrD5+taIUyS6DksX0g==" } } }, diff --git a/package.json b/package.json index fb8e913dd..a2865ed9f 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "xapi-activities": "^1.1.3", "xapi-agents": "^1.1.4", "xapi-state": "^1.1.4", - "xapi-statements": "^1.0.7" + "xapi-statements": "^1.1.0" }, "devDependencies": { "@types/dotenv": "4.0.2", diff --git a/src/config.ts b/src/config.ts index 5fe38c738..6703b147f 100644 --- a/src/config.ts +++ b/src/config.ts @@ -16,7 +16,7 @@ const expressPort = getNumberOption(process.env.EXPRESS_PORT, DEFAULT_EXPRESS_PO const demoAuth = `http://localhost:${expressPort}/auth`; const accessLogsDir = `${storageDir}/accessLogs`; const newRelicLogsDir = `${storageDir}/newrelic-agent.log`; -const newRelicLicenseKey = getStringOption(process.env.NEW_RELIC_LICENSE_KEY); +const newRelicLicenseKey = getStringOption(process.env.NEW_RELIC_LICENSE_KEY, ''); export default { defaultTimeout: getNumberOption(process.env.DEFAULT_TIMEOUT_MS, DEFAULT_TIMEOUT_MS), @@ -80,7 +80,7 @@ export default { }, tracker: { newRelic: { - enabled: newRelicLicenseKey !== undefined, + enabled: newRelicLicenseKey !== '', log: getStringOption(process.env.NEW_RELIC_LOG, newRelicLogsDir), logLevel: getStringOption(process.env.NEW_RELIC_LOG_LEVEL, 'info'), noConfigFile: getStringOption(process.env.NEW_RELIC_NO_CONFIG_FILE, 'true'), diff --git a/src/conformanceServer.ts b/src/conformanceServer.ts index e8cce459e..7a5d25352 100644 --- a/src/conformanceServer.ts +++ b/src/conformanceServer.ts @@ -1,10 +1,7 @@ // tslint:disable:no-console -import * as sourceMapSupport from 'source-map-support'; -sourceMapSupport.install(); - -import { MongoClient, ObjectID } from 'mongodb'; -import config from './config'; import './server'; // tslint:disable-line:no-import-side-effect +import { MongoClient, ObjectID } from 'mongodb'; // tslint:disable-line:ordered-imports +import config from './config'; const testClient = { api: { diff --git a/src/routers/statements.ts b/src/routers/statements.ts index d6ca9f222..617e6580e 100644 --- a/src/routers/statements.ts +++ b/src/routers/statements.ts @@ -15,6 +15,7 @@ import testAuthRepo from 'xapi-statements/dist/testAuthRepo'; import enTranslator from 'xapi-statements/dist/translatorFactory/en'; import config from '../config'; import logger from '../logger'; +import tracker from '../tracker'; const getEventsRepo = () => { switch (config.repoFactory.authRepoName) { @@ -132,6 +133,7 @@ const serviceFacade = service({ enableVoiding: config.statementsService.enableVoiding, enableVoidingChecks: config.statementsService.enableVoidingChecks, repo: repoFacade, + tracker, }); const expressFacade = expressPresenter({ bodyParserLimit: config.express.bodyParserLimit, diff --git a/src/server.ts b/src/server.ts index 43e92bb7d..ab0a81b06 100644 --- a/src/server.ts +++ b/src/server.ts @@ -1,4 +1,5 @@ -import * as sourceMapSupport from 'source-map-support'; +import './tracker'; // tslint:disable-line:no-import-side-effect +import * as sourceMapSupport from 'source-map-support'; // tslint:disable-line:ordered-imports sourceMapSupport.install(); import * as express from 'express'; diff --git a/src/tracker.ts b/src/tracker.ts index 2ad86fd6d..37264449d 100644 --- a/src/tracker.ts +++ b/src/tracker.ts @@ -4,7 +4,7 @@ import Tracker from 'jscommons/dist/tracker/Tracker'; import config from './config'; /* istanbul ignore next */ -export default async (): Promise => { +const trackerFactory = async (): Promise => { if (config.tracker.newRelic.enabled) { process.env.NEW_RELIC_NO_CONFIG_FILE = config.tracker.newRelic.noConfigFile; process.env.NEW_RELIC_LOG = config.tracker.newRelic.log; @@ -13,3 +13,5 @@ export default async (): Promise => { } return fakeTracker; }; + +export default trackerFactory(); diff --git a/test.sh b/test.sh index f8cdfa7d0..803df44e4 100644 --- a/test.sh +++ b/test.sh @@ -16,11 +16,11 @@ log "Installing dependencies for the ADL conformance test suite." npm install log "Running the ADL conformance test suite." -node bin/console_runner.js -e "http://localhost:$EXPRESS_PORT/data/xAPI" -a -u "AAA" -p "BBB" +node bin/console_runner.js -e "http://localhost:$EXPRESS_PORT/data/xAPI" -a -u "AAA" -p "BBB" -b exitCode=$? log "Stopping the server." -ps aux | grep [n]ode\ dist\/server | awk '{print $2}' | xargs kill +ps aux | grep [n]ode\ dist\/conformanceServer | awk '{print $2}' | xargs kill log "Completed conformance tests." exit $exitCode diff --git a/yarn.lock b/yarn.lock index 2f8b6d1ce..af515d31e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,12 @@ # yarn lockfile v1 +"@newrelic/native-metrics@^2.1.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@newrelic/native-metrics/-/native-metrics-2.1.2.tgz#9a595dc602654b717188a294507087a51e79fba3" + dependencies: + nan "^2.4.0" + "@semantic-release/commit-analyzer@^3.0.1": version "3.0.7" resolved "https://registry.yarnpkg.com/@semantic-release/commit-analyzer/-/commit-analyzer-3.0.7.tgz#dc955444a6d3d2ae9b8e21f90c2c80c4e9142b2f" @@ -24,8 +30,8 @@ travis-deploy-once "^3.0.0" "@semantic-release/error@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@semantic-release/error/-/error-2.0.0.tgz#f156ecd509f5288c48bc7425a8abe22f975d1f8b" + version "2.1.0" + resolved "https://registry.yarnpkg.com/@semantic-release/error/-/error-2.1.0.tgz#44771f676f5b148da309111285a97901aa95a6e0" "@semantic-release/last-release-npm@^2.0.0": version "2.0.2" @@ -67,8 +73,8 @@ "@types/node" "*" "@types/express-serve-static-core@*": - version "4.0.55" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.0.55.tgz#f53868838a955f98b380819ec9134f5df7d9482f" + version "4.0.56" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.0.56.tgz#4ed556dcff9012cce6b016e214fdc5ef6e99db7d" dependencies: "@types/node" "*" @@ -152,6 +158,10 @@ agent-base@^4.1.0: dependencies: es6-promisify "^5.0.0" +agent-base@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-1.0.2.tgz#6890d3fb217004b62b70f8928e0fae5f8952a706" + ajv@^5.1.0: version "5.3.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.3.0.tgz#4414ff74a50879c208ee5fdc826e32c303549eda" @@ -250,7 +260,7 @@ async@^1.4.0: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" -async@^2.0.1: +async@^2.0.1, async@^2.1.4: version "2.5.0" resolved "https://registry.yarnpkg.com/async/-/async-2.5.0.tgz#843190fd6b7357a0b9e1c956edddd5ec8462b54d" dependencies: @@ -269,8 +279,8 @@ atob@^2.0.3: resolved "https://registry.yarnpkg.com/atob/-/atob-2.0.3.tgz#19c7a760473774468f20b2d2d03372ad7d4cbf5d" aws-sdk@^2.58.0, aws-sdk@^2.74.0, aws-sdk@^2.80.0, aws-sdk@^2.97.0: - version "2.141.0" - resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.141.0.tgz#3d96a5970fd9f540ceabcc1d4baeb33b71583aa7" + version "2.142.0" + resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.142.0.tgz#efdf69d2be3132aa51d4e7abb2c28fe42771e3ec" dependencies: buffer "4.9.1" crypto-browserify "1.0.9" @@ -615,7 +625,7 @@ concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" -concat-stream@^1.4.7, concat-stream@^1.5.2: +concat-stream@^1.4.7, concat-stream@^1.5.0, concat-stream@^1.5.2: version "1.6.0" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" dependencies: @@ -836,18 +846,18 @@ dateformat@^1.0.11, dateformat@^1.0.12: get-stdin "^4.0.1" meow "^3.3.0" +debug@2, debug@2.6.9, debug@^2.1.3, debug@^2.4.1, debug@^2.6.8, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + dependencies: + ms "2.0.0" + debug@2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" dependencies: ms "0.7.1" -debug@2.6.9, debug@^2.1.3, debug@^2.4.1, debug@^2.6.8, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - dependencies: - ms "2.0.0" - decamelize@^1.0.0, decamelize@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -1068,7 +1078,7 @@ express@^4.14.1, express@^4.15.3: utils-merge "1.0.1" vary "~1.1.2" -extend@^3.0.0, extend@~3.0.0, extend@~3.0.1: +extend@3, extend@^3.0.0, extend@~3.0.0, extend@~3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" @@ -1564,6 +1574,14 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" +https-proxy-agent@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-0.3.6.tgz#713fa38e5d353f50eb14a342febe29033ed1619b" + dependencies: + agent-base "~1.0.1" + debug "2" + extend "3" + https-proxy-agent@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.1.0.tgz#1391bee7fd66aeabc0df2a1fa90f58954f43e443" @@ -1803,9 +1821,9 @@ jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" -jscommons@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/jscommons/-/jscommons-1.0.5.tgz#e774cbf590053ac17e7082447436f8d5d9083f5c" +jscommons@^1.0.1, jscommons@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jscommons/-/jscommons-1.3.0.tgz#2ed1065fc7b970ecc728d0bd65ff0bfed564ce54" dependencies: aws-sdk "^2.80.0" body-parser "^1.17.2" @@ -1820,7 +1838,8 @@ jscommons@^1.0.1: moment "^2.18.1" mongodb "^2.2.29" morgan "^1.8.2" - rulr "^3.0.0" + newrelic "^2.3.1" + rulr "^4.0.1" uuid "^3.1.0" winston "^2.3.1" winston-aws-cloudwatch "^1.5.0" @@ -1849,7 +1868,7 @@ json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" -json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: +json-stringify-safe@^5.0.0, json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -2273,6 +2292,10 @@ mute-stream@0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.6.tgz#48962b19e169fd1dfc240b3f1e7317627bbc47db" +nan@^2.4.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.7.0.tgz#d95bf721ec877e08db276ed3fc6eb78f9083ad46" + negotiator@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" @@ -2285,6 +2308,19 @@ netrc@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/netrc/-/netrc-0.1.4.tgz#6be94fcaca8d77ade0a9670dc460914c94472444" +newrelic@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/newrelic/-/newrelic-2.3.1.tgz#4b72f908d8e0be373470e9c18097c35c3f9673bc" + dependencies: + async "^2.1.4" + concat-stream "^1.5.0" + https-proxy-agent "^0.3.5" + json-stringify-safe "^5.0.0" + readable-stream "^2.1.4" + semver "^5.3.0" + optionalDependencies: + "@newrelic/native-metrics" "^2.1.0" + nocache@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/nocache/-/nocache-2.0.0.tgz#202b48021a0c4cbde2df80de15a17443c8b43980" @@ -2395,9 +2431,9 @@ object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" -object-hash@1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.1.8.tgz#28a659cf987d96a4dabe7860289f3b5326c4a03c" +object-hash@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.2.0.tgz#e96af0e96981996a1d47f88ead8f74f1ebc4422b" object.omit@^2.0.0: version "2.0.1" @@ -2696,7 +2732,7 @@ readable-stream@^1.1.12: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^2.0.6, readable-stream@^2.1.0, readable-stream@^2.1.5, readable-stream@^2.2.2: +readable-stream@^2.0.6, readable-stream@^2.1.0, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2: version "2.3.3" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" dependencies: @@ -2886,9 +2922,9 @@ right-pad@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/right-pad/-/right-pad-1.0.1.tgz#8ca08c2cbb5b55e74dafa96bf7fd1a27d568c8d0" -rulr@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/rulr/-/rulr-3.0.0.tgz#7e671e3fd85190f5976863a0a1cdf2013c7ba2d6" +rulr@^4.0.0, rulr@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/rulr/-/rulr-4.0.1.tgz#650a701175d10ac869faeb4102c638dbc1b56f57" run-async@^2.2.0: version "2.3.0" @@ -3046,12 +3082,6 @@ sntp@2.x.x: dependencies: hoek "4.x.x" -source-map-support@^0.4.11: - version "0.4.18" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" - dependencies: - source-map "^0.5.6" - source-map-support@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.0.tgz#2018a7ad2bdf8faf2691e5fddab26bed5a2bacab" @@ -3064,14 +3094,14 @@ source-map@^0.4.4: dependencies: amdefine ">=0.0.4" -source-map@^0.5.6, source-map@~0.5.1: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - source-map@^0.6.0: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" +source-map@~0.5.1: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + spawn-sync@^1.0.15: version "1.0.15" resolved "https://registry.yarnpkg.com/spawn-sync/-/spawn-sync-1.0.15.tgz#b00799557eb7fb0c8376c29d44e8a1ea67e57476" @@ -3491,8 +3521,8 @@ x-xss-protection@1.0.0: resolved "https://registry.yarnpkg.com/x-xss-protection/-/x-xss-protection-1.0.0.tgz#898afb93869b24661cf9c52f9ee8db8ed0764dd9" xapi-activities@^1.1.3: - version "1.1.6" - resolved "https://registry.yarnpkg.com/xapi-activities/-/xapi-activities-1.1.6.tgz#13cd575b59d4daef67951cdc8d59272c931de1dd" + version "1.1.8" + resolved "https://registry.yarnpkg.com/xapi-activities/-/xapi-activities-1.1.8.tgz#ed13a5c2ba1934a336ca61b6501f6c251305c0b3" dependencies: atob "^2.0.3" aws-sdk "^2.74.0" @@ -3507,17 +3537,17 @@ xapi-activities@^1.1.3: mime-types "^2.1.17" mongodb "^2.2.26" node-fetch "^1.6.3" - rulr "^3.0.0" + rulr "^4.0.1" sha1 "^1.1.1" - source-map-support "^0.4.11" + source-map-support "^0.5.0" stream-to-string "^1.1.0" string-to-stream "^1.1.0" uuid "^3.0.1" xapi-validation "^2.1.0" xapi-agents@^1.1.4: - version "1.1.7" - resolved "https://registry.yarnpkg.com/xapi-agents/-/xapi-agents-1.1.7.tgz#2bcca9e0dad7ac0c85fb57b2017ed4c76a209e7b" + version "1.1.9" + resolved "https://registry.yarnpkg.com/xapi-agents/-/xapi-agents-1.1.9.tgz#226c4de388089b780e57071d6ffe8ccae8143065" dependencies: atob "^2.0.3" aws-sdk "^2.74.0" @@ -3532,17 +3562,17 @@ xapi-agents@^1.1.4: mime-types "^2.1.17" mongodb "^2.2.26" node-fetch "^1.6.3" - rulr "^3.0.0" + rulr "^4.0.1" sha1 "^1.1.1" - source-map-support "^0.4.11" + source-map-support "^0.5.0" stream-to-string "^1.1.0" string-to-stream "^1.1.0" uuid "^3.0.1" xapi-validation "^2.1.0" xapi-state@^1.1.4: - version "1.1.8" - resolved "https://registry.yarnpkg.com/xapi-state/-/xapi-state-1.1.8.tgz#7268059dd355a4d77b0401f11d0fbc8d0689688f" + version "1.1.11" + resolved "https://registry.yarnpkg.com/xapi-state/-/xapi-state-1.1.11.tgz#ae6511b13354d65c490f8d8220e70be7be99f25b" dependencies: atob "^2.0.3" aws-sdk "^2.74.0" @@ -3557,17 +3587,17 @@ xapi-state@^1.1.4: mime-types "^2.1.17" mongodb "^2.2.26" node-fetch "^1.6.3" - rulr "^3.0.0" + rulr "^4.0.1" sha1 "^1.1.1" - source-map-support "^0.4.11" + source-map-support "^0.5.0" stream-to-string "^1.1.0" string-to-stream "^1.1.0" uuid "^3.0.1" xapi-validation "^2.1.0" -xapi-statements@^1.0.7: - version "1.0.11" - resolved "https://registry.yarnpkg.com/xapi-statements/-/xapi-statements-1.0.11.tgz#0ddb7eb578c28db120a2e20ae3ac4c33a8f04cce" +xapi-statements@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/xapi-statements/-/xapi-statements-1.1.0.tgz#08aef148a73d95faa1c2067d3e90c7b7f61d7c9c" dependencies: accept-language-parser "^1.4.1" atob "^2.0.3" @@ -3582,7 +3612,7 @@ xapi-statements@^1.0.7: file-stream-rotator "^0.2.0" fs-extra "^4.0.2" helmet "^3.5.0" - jscommons "^1.0.1" + jscommons "^1.3.0" jsonwebtoken "^8.0.1" lodash "^4.17.4" mime-types "^2.1.17" @@ -3590,11 +3620,11 @@ xapi-statements@^1.0.7: mongodb "^2.2.26" morgan "^1.8.1" node-fetch "^1.6.3" - object-hash "1.1.8" + object-hash "1.2.0" promise-retry "^1.1.1" redis "^2.8.0" - rulr "^3.0.0" - source-map-support "^0.4.11" + rulr "^4.0.0" + source-map-support "^0.5.0" stream-to-string "^1.1.0" string-to-stream "^1.1.0" uuid "^3.0.1" @@ -3603,10 +3633,10 @@ xapi-statements@^1.0.7: xapi-validation "^2.1.0" xapi-validation@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/xapi-validation/-/xapi-validation-2.1.2.tgz#6a47339d0fccfc995d237b91175fd2377809635b" + version "2.1.3" + resolved "https://registry.yarnpkg.com/xapi-validation/-/xapi-validation-2.1.3.tgz#af8ee24776652c6bb6a9cbbd8e34065cf07765f2" dependencies: - rulr "^3.0.0" + rulr "^4.0.1" xml2js@0.4.17: version "0.4.17"