3 const { common
} = require('@squeep/api-dingus');
7 * Recursively freeze an object.
11 const freezeDeep
= (o
) => {
13 Object
.getOwnPropertyNames(o
).forEach((prop
) => {
14 if (Object
.hasOwnProperty
.call(o
, prop
)
15 && ['object', 'function'].includes(typeof o
[prop
]) // eslint-disable-line security/detect-object-injection
16 && !Object
.isFrozen(o
[prop
])) { // eslint-disable-line security/detect-object-injection
17 return freezeDeep(o
[prop
]); // eslint-disable-line security/detect-object-injection
24 * Return a new object duplicating `o`, without the properties specified.
26 * @param {String[]} props
29 const omit
= (o
, props
) => {
30 return Object
.fromEntries(Object
.entries(o
).filter(([k
]) => !props
.includes(k
)));
34 * Helper to log mystery-box statistics.
35 * @param {ConsoleLike} logger
36 * @param {String} scope
39 const mysteryBoxLogger
= (logger
, scope
) => {
41 logger
.debug(scope
, `${s.packageName}@${s.packageVersion}:${s.method}`, omit(s
, [
49 module
.exports
= Object
.assign(Object
.create(common
), {