Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/npm/cli.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/utils/log-shim.js')
-rw-r--r--lib/utils/log-shim.js59
1 files changed, 59 insertions, 0 deletions
diff --git a/lib/utils/log-shim.js b/lib/utils/log-shim.js
new file mode 100644
index 000000000..9d5a36d96
--- /dev/null
+++ b/lib/utils/log-shim.js
@@ -0,0 +1,59 @@
+const NPMLOG = require('npmlog')
+const PROCLOG = require('proc-log')
+
+// Sets getter and optionally a setter
+// otherwise setting should throw
+const accessors = (obj, set) => (k) => ({
+ get: () => obj[k],
+ set: set ? (v) => (obj[k] = v) : () => {
+ throw new Error(`Cant set ${k}`)
+ },
+})
+
+// Set the value to a bound function on the object
+const value = (obj) => (k) => ({
+ value: (...args) => obj[k].apply(obj, args),
+})
+
+const properties = {
+ // npmlog getters/setters
+ level: accessors(NPMLOG, true),
+ heading: accessors(NPMLOG, true),
+ levels: accessors(NPMLOG),
+ gauge: accessors(NPMLOG),
+ stream: accessors(NPMLOG),
+ tracker: accessors(NPMLOG),
+ progressEnabled: accessors(NPMLOG),
+ // npmlog methods
+ useColor: value(NPMLOG),
+ enableColor: value(NPMLOG),
+ disableColor: value(NPMLOG),
+ enableUnicode: value(NPMLOG),
+ disableUnicode: value(NPMLOG),
+ enableProgress: value(NPMLOG),
+ disableProgress: value(NPMLOG),
+ clearProgress: value(NPMLOG),
+ showProgress: value(NPMLOG),
+ newItem: value(NPMLOG),
+ newGroup: value(NPMLOG),
+ // proclog methods
+ notice: value(PROCLOG),
+ error: value(PROCLOG),
+ warn: value(PROCLOG),
+ info: value(PROCLOG),
+ verbose: value(PROCLOG),
+ http: value(PROCLOG),
+ silly: value(PROCLOG),
+ pause: value(PROCLOG),
+ resume: value(PROCLOG),
+}
+
+const descriptors = Object.entries(properties).reduce((acc, [k, v]) => {
+ acc[k] = { enumerable: true, ...v(k) }
+ return acc
+}, {})
+
+// Create an object with the allowed properties rom npm log and all
+// the logging methods from proc log
+// XXX: this should go away and requires of this should be replaced with proc-log + new display
+module.exports = Object.freeze(Object.defineProperties({}, descriptors))