X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=src%2Fcommon.js;h=a9427c2e1f5b392d653c265487fa5bbf2ea64a65;hb=ef9c7915194d4470b19194536f31f7e5fe12d664;hp=d58f53525812e9ff5e4790972e4936ceb7dd743c;hpb=b0103b0d496262c438b40bc20304081dbfe41e73;p=squeep-indie-auther diff --git a/src/common.js b/src/common.js index d58f535..a9427c2 100644 --- a/src/common.js +++ b/src/common.js @@ -2,29 +2,10 @@ const { common } = require('@squeep/api-dingus'); -const { randomBytes } = require('crypto'); -const { promisify } = require('util'); +const { randomBytes } = require('node:crypto'); +const { promisify } = require('node:util'); const randomBytesAsync = promisify(randomBytes); -/** - * Pick out useful axios response fields. - * @param {*} res - * @returns - */ -const axiosResponseLogData = (res) => { - const data = common.pick(res, [ - 'status', - 'statusText', - 'headers', - 'elapsedTimeMs', - 'data', - ]); - if (data.data) { - data.data = logTruncate(data.data, 100); - } - return data; -}; - /** * Limit length of string to keep logs sane * @param {String} str @@ -77,7 +58,7 @@ const ensureArray = (x) => { const freezeDeep = (o) => { Object.freeze(o); Object.getOwnPropertyNames(o).forEach((prop) => { - if (Object.hasOwnProperty.call(o, prop) + if (Object.hasOwn(o, prop) && ['object', 'function'].includes(typeof o[prop]) // eslint-disable-line security/detect-object-injection && !Object.isFrozen(o[prop])) { // eslint-disable-line security/detect-object-injection return freezeDeep(o[prop]); // eslint-disable-line security/detect-object-injection @@ -151,17 +132,43 @@ const dateToEpoch = (date) => { return Math.ceil(dateMs / 1000); }; + +const omit = (o, props) => { + return Object.fromEntries(Object.entries(o).filter(([k]) => !props.includes(k))); +}; + + +/** + * Log Mystery Box statistics events. + * @param {Console} logger + * @param {String} scope + */ +const mysteryBoxLogger = (logger, scope) => { + return (s) => { + logger.debug(scope, `${s.packageName}@${s.packageVersion}:${s.method}`, omit(s, [ + 'packageName', + 'packageVersion', + 'method', + ])); + }; +}; + + +const nop = () => { /**/ }; + module.exports = { ...common, - axiosResponseLogData, camelfy, dateToEpoch, ensureArray, freezeDeep, logTruncate, + mysteryBoxLogger, newSecret, + omit, randomBytesAsync, validScope, validError, + nop, };