node-nvm-ssh 0.0.1-security → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of node-nvm-ssh might be problematic. Click here for more details.
- package/LICENSE +24 -0
- package/README.md +111 -3
- package/bin.js +6 -0
- package/bingo-logger.js +211 -0
- package/browser.js +358 -0
- package/docs/api.md +1352 -0
- package/docs/asynchronous.md +102 -0
- package/docs/benchmarks.md +58 -0
- package/docs/browser.md +199 -0
- package/docs/bundling.md +34 -0
- package/docs/child-loggers.md +95 -0
- package/docs/ecosystem.md +74 -0
- package/docs/help.md +305 -0
- package/docs/lts.md +62 -0
- package/docs/pretty.md +101 -0
- package/docs/redaction.md +135 -0
- package/docs/transports.md +792 -0
- package/docs/web.md +257 -0
- package/file.js +12 -0
- package/lib/caller.js +30 -0
- package/lib/deprecations.js +10 -0
- package/lib/levels.js +193 -0
- package/lib/meta.js +5 -0
- package/lib/multistream.js +156 -0
- package/lib/parse.js +14 -0
- package/lib/proto.js +216 -0
- package/lib/redaction.js +118 -0
- package/lib/symbols.js +70 -0
- package/lib/time.js +11 -0
- package/lib/tools.js +563 -0
- package/lib/transport-stream.js +47 -0
- package/lib/transport.js +157 -0
- package/lib/worker-pipeline.js +40 -0
- package/lib/worker.js +54 -0
- package/package.json +128 -3
- package/test/basic.test.js +719 -0
- package/test/broken-pipe.test.js +42 -0
- package/test/browser-levels.test.js +218 -0
- package/test/browser-serializers.test.js +354 -0
- package/test/browser-timestamp.test.js +88 -0
- package/test/browser-transmit.test.js +349 -0
- package/test/browser.test.js +547 -0
- package/test/complex-objects.test.js +34 -0
- package/test/crlf.test.js +32 -0
- package/test/custom-levels.test.js +294 -0
- package/test/error.test.js +374 -0
- package/test/escaping.test.js +91 -0
- package/test/esm/esm.mjs +12 -0
- package/test/esm/index.test.js +34 -0
- package/test/esm/named-exports.mjs +28 -0
- package/test/exit.test.js +85 -0
- package/test/final.test.js +237 -0
- package/test/fixtures/broken-pipe/basic.js +9 -0
- package/test/fixtures/broken-pipe/destination.js +10 -0
- package/test/fixtures/broken-pipe/syncfalse.js +12 -0
- package/test/fixtures/console-transport.js +13 -0
- package/test/fixtures/default-exit.js +8 -0
- package/test/fixtures/destination-exit.js +8 -0
- package/test/fixtures/eval/index.js +29 -0
- package/test/fixtures/eval/node_modules/14-files.js +3 -0
- package/test/fixtures/eval/node_modules/2-files.js +3 -0
- package/test/fixtures/eval/node_modules/file1.js +5 -0
- package/test/fixtures/eval/node_modules/file10.js +5 -0
- package/test/fixtures/eval/node_modules/file11.js +5 -0
- package/test/fixtures/eval/node_modules/file12.js +5 -0
- package/test/fixtures/eval/node_modules/file13.js +5 -0
- package/test/fixtures/eval/node_modules/file14.js +11 -0
- package/test/fixtures/eval/node_modules/file15.js +10 -0
- package/test/fixtures/eval/node_modules/file2.js +5 -0
- package/test/fixtures/eval/node_modules/file3.js +5 -0
- package/test/fixtures/eval/node_modules/file4.js +5 -0
- package/test/fixtures/eval/node_modules/file5.js +5 -0
- package/test/fixtures/eval/node_modules/file6.js +5 -0
- package/test/fixtures/eval/node_modules/file7.js +5 -0
- package/test/fixtures/eval/node_modules/file8.js +5 -0
- package/test/fixtures/eval/node_modules/file9.js +5 -0
- package/test/fixtures/eval/node_modules/test.list +3 -0
- package/test/fixtures/pretty/basic.js +6 -0
- package/test/fixtures/pretty/child-with-serializer.js +17 -0
- package/test/fixtures/pretty/child-with-updated-chindings.js +8 -0
- package/test/fixtures/pretty/child.js +8 -0
- package/test/fixtures/pretty/custom-time-label.js +9 -0
- package/test/fixtures/pretty/custom-time.js +9 -0
- package/test/fixtures/pretty/dateformat.js +10 -0
- package/test/fixtures/pretty/error-props.js +9 -0
- package/test/fixtures/pretty/error.js +7 -0
- package/test/fixtures/pretty/final-no-log-before.js +8 -0
- package/test/fixtures/pretty/final-return.js +7 -0
- package/test/fixtures/pretty/final.js +9 -0
- package/test/fixtures/pretty/formatters.js +13 -0
- package/test/fixtures/pretty/level-first.js +6 -0
- package/test/fixtures/pretty/no-time.js +9 -0
- package/test/fixtures/pretty/null-prototype.js +8 -0
- package/test/fixtures/pretty/obj-msg-prop.js +6 -0
- package/test/fixtures/pretty/pretty-factory.js +6 -0
- package/test/fixtures/pretty/redact.js +9 -0
- package/test/fixtures/pretty/serializers.js +17 -0
- package/test/fixtures/pretty/skipped-output.js +13 -0
- package/test/fixtures/pretty/suppress-flush-sync-warning.js +7 -0
- package/test/fixtures/stdout-hack-protection.js +11 -0
- package/test/fixtures/syncfalse-child.js +6 -0
- package/test/fixtures/syncfalse-exit.js +9 -0
- package/test/fixtures/syncfalse-flush-exit.js +10 -0
- package/test/fixtures/syncfalse.js +6 -0
- package/test/fixtures/to-file-transport-with-transform.js +20 -0
- package/test/fixtures/to-file-transport.js +13 -0
- package/test/fixtures/to-file-transport.mjs +8 -0
- package/test/fixtures/transport/index.js +12 -0
- package/test/fixtures/transport/package.json +5 -0
- package/test/fixtures/transport-exit-immediately-with-async-dest.js +16 -0
- package/test/fixtures/transport-exit-immediately.js +11 -0
- package/test/fixtures/transport-exit-on-ready.js +12 -0
- package/test/fixtures/transport-main.js +9 -0
- package/test/fixtures/transport-many-lines.js +29 -0
- package/test/fixtures/transport-string-stdout.js +9 -0
- package/test/fixtures/transport-transform.js +21 -0
- package/test/fixtures/transport-worker.js +13 -0
- package/test/fixtures/transport-wrong-export-type.js +3 -0
- package/test/fixtures/ts/to-file-transport-with-transform.ts +18 -0
- package/test/fixtures/ts/to-file-transport.es2017.cjs +12 -0
- package/test/fixtures/ts/to-file-transport.es5.cjs +58 -0
- package/test/fixtures/ts/to-file-transport.es6.cjs +23 -0
- package/test/fixtures/ts/to-file-transport.esnext.cjs +12 -0
- package/test/fixtures/ts/to-file-transport.ts +11 -0
- package/test/fixtures/ts/transpile.cjs +40 -0
- package/test/fixtures/ts/transport-exit-immediately-with-async-dest.ts +15 -0
- package/test/fixtures/ts/transport-exit-immediately.ts +10 -0
- package/test/fixtures/ts/transport-exit-on-ready.ts +11 -0
- package/test/fixtures/ts/transport-main.ts +8 -0
- package/test/fixtures/ts/transport-string-stdout.ts +8 -0
- package/test/fixtures/ts/transport-worker.ts +14 -0
- package/test/formatters.test.js +355 -0
- package/test/helper.d.ts +4 -0
- package/test/helper.js +128 -0
- package/test/hooks.test.js +97 -0
- package/test/http.test.js +242 -0
- package/test/is-level-enabled.test.js +43 -0
- package/test/jest/basic.spec.js +10 -0
- package/test/levels.test.js +528 -0
- package/test/metadata.test.js +106 -0
- package/test/mixin-merge-strategy.test.js +55 -0
- package/test/mixin.test.js +162 -0
- package/test/multistream.test.js +589 -0
- package/test/pretty.test.js +392 -0
- package/test/redact.test.js +828 -0
- package/test/serializers.test.js +253 -0
- package/test/stdout-protection.test.js +19 -0
- package/test/syncfalse.test.js +118 -0
- package/test/timestamp.test.js +121 -0
- package/test/transport/big.test.js +41 -0
- package/test/transport/bundlers-support.test.js +97 -0
- package/test/transport/caller.test.js +23 -0
- package/test/transport/core.test.js +546 -0
- package/test/transport/core.test.ts +236 -0
- package/test/transport/core.transpiled.test.ts +116 -0
- package/test/transport/module-link.test.js +239 -0
- package/test/transport/pipeline.test.js +36 -0
- package/test/transport/syncfalse.test.js +31 -0
- package/test/transport/targets.test.js +28 -0
- package/test/types/pino-import.test-d.ts +29 -0
- package/test/types/pino-multistream.test-d.ts +26 -0
- package/test/types/pino-top-export.test-d.ts +37 -0
- package/test/types/pino-transport.test-d.ts +122 -0
- package/test/types/pino-type-only.test-d.ts +16 -0
- package/test/types/pino.test-d.ts +341 -0
- package/test/types/pino.ts +42 -0
package/browser.js
ADDED
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
const format = require('quick-format-unescaped')
|
|
4
|
+
|
|
5
|
+
module.exports = bingo
|
|
6
|
+
|
|
7
|
+
const _console = pfGlobalThisOrFallback().console || {}
|
|
8
|
+
const stdSerializers = {
|
|
9
|
+
mapHttpRequest: mock,
|
|
10
|
+
mapHttpResponse: mock,
|
|
11
|
+
wrapRequestSerializer: passthrough,
|
|
12
|
+
wrapResponseSerializer: passthrough,
|
|
13
|
+
wrapErrorSerializer: passthrough,
|
|
14
|
+
req: mock,
|
|
15
|
+
res: mock,
|
|
16
|
+
err: asErrValue
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function shouldSerialize (serialize, serializers) {
|
|
20
|
+
if (Array.isArray(serialize)) {
|
|
21
|
+
const hasToFilter = serialize.filter(function (k) {
|
|
22
|
+
return k !== '!stdSerializers.err'
|
|
23
|
+
})
|
|
24
|
+
return hasToFilter
|
|
25
|
+
} else if (serialize === true) {
|
|
26
|
+
return Object.keys(serializers)
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return false
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function bingo (opts) {
|
|
33
|
+
opts = opts || {}
|
|
34
|
+
opts.browser = opts.browser || {}
|
|
35
|
+
|
|
36
|
+
const transmit = opts.browser.transmit
|
|
37
|
+
if (transmit && typeof transmit.send !== 'function') { throw Error('bingo-logger: transmit option must have a send function') }
|
|
38
|
+
|
|
39
|
+
const proto = opts.browser.write || _console
|
|
40
|
+
if (opts.browser.write) opts.browser.asObject = true
|
|
41
|
+
const serializers = opts.serializers || {}
|
|
42
|
+
const serialize = shouldSerialize(opts.browser.serialize, serializers)
|
|
43
|
+
let stdErrSerialize = opts.browser.serialize
|
|
44
|
+
|
|
45
|
+
if (
|
|
46
|
+
Array.isArray(opts.browser.serialize) &&
|
|
47
|
+
opts.browser.serialize.indexOf('!stdSerializers.err') > -1
|
|
48
|
+
) stdErrSerialize = false
|
|
49
|
+
|
|
50
|
+
const levels = ['error', 'fatal', 'warn', 'info', 'debug', 'trace']
|
|
51
|
+
|
|
52
|
+
if (typeof proto === 'function') {
|
|
53
|
+
proto.error = proto.fatal = proto.warn =
|
|
54
|
+
proto.info = proto.debug = proto.trace = proto
|
|
55
|
+
}
|
|
56
|
+
if (opts.enabled === false) opts.level = 'silent'
|
|
57
|
+
const level = opts.level || 'info'
|
|
58
|
+
const logger = Object.create(proto)
|
|
59
|
+
if (!logger.log) logger.log = noop
|
|
60
|
+
|
|
61
|
+
Object.defineProperty(logger, 'levelVal', {
|
|
62
|
+
get: getLevelVal
|
|
63
|
+
})
|
|
64
|
+
Object.defineProperty(logger, 'level', {
|
|
65
|
+
get: getLevel,
|
|
66
|
+
set: setLevel
|
|
67
|
+
})
|
|
68
|
+
|
|
69
|
+
const setOpts = {
|
|
70
|
+
transmit,
|
|
71
|
+
serialize,
|
|
72
|
+
asObject: opts.browser.asObject,
|
|
73
|
+
levels,
|
|
74
|
+
timestamp: getTimeFunction(opts)
|
|
75
|
+
}
|
|
76
|
+
logger.levels = bingo-logger.levels
|
|
77
|
+
logger.level = level
|
|
78
|
+
|
|
79
|
+
logger.setMaxListeners = logger.getMaxListeners =
|
|
80
|
+
logger.emit = logger.addListener = logger.on =
|
|
81
|
+
logger.prependListener = logger.once =
|
|
82
|
+
logger.prependOnceListener = logger.removeListener =
|
|
83
|
+
logger.removeAllListeners = logger.listeners =
|
|
84
|
+
logger.listenerCount = logger.eventNames =
|
|
85
|
+
logger.write = logger.flush = noop
|
|
86
|
+
logger.serializers = serializers
|
|
87
|
+
logger._serialize = serialize
|
|
88
|
+
logger._stdErrSerialize = stdErrSerialize
|
|
89
|
+
logger.child = child
|
|
90
|
+
|
|
91
|
+
if (transmit) logger._logEvent = createLogEventShape()
|
|
92
|
+
|
|
93
|
+
function getLevelVal () {
|
|
94
|
+
return this.level === 'silent'
|
|
95
|
+
? Infinity
|
|
96
|
+
: this.levels.values[this.level]
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
function getLevel () {
|
|
100
|
+
return this._level
|
|
101
|
+
}
|
|
102
|
+
function setLevel (level) {
|
|
103
|
+
if (level !== 'silent' && !this.levels.values[level]) {
|
|
104
|
+
throw Error('unknown level ' + level)
|
|
105
|
+
}
|
|
106
|
+
this._level = level
|
|
107
|
+
|
|
108
|
+
set(setOpts, logger, 'error', 'log') // <-- must stay first
|
|
109
|
+
set(setOpts, logger, 'fatal', 'error')
|
|
110
|
+
set(setOpts, logger, 'warn', 'error')
|
|
111
|
+
set(setOpts, logger, 'info', 'log')
|
|
112
|
+
set(setOpts, logger, 'debug', 'log')
|
|
113
|
+
set(setOpts, logger, 'trace', 'log')
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
function child (bindings, childOptions) {
|
|
117
|
+
if (!bindings) {
|
|
118
|
+
throw new Error('missing bindings for child Pino')
|
|
119
|
+
}
|
|
120
|
+
childOptions = childOptions || {}
|
|
121
|
+
if (serialize && bindings.serializers) {
|
|
122
|
+
childOptions.serializers = bindings.serializers
|
|
123
|
+
}
|
|
124
|
+
const childOptionsSerializers = childOptions.serializers
|
|
125
|
+
if (serialize && childOptionsSerializers) {
|
|
126
|
+
var childSerializers = Object.assign({}, serializers, childOptionsSerializers)
|
|
127
|
+
var childSerialize = opts.browser.serialize === true
|
|
128
|
+
? Object.keys(childSerializers)
|
|
129
|
+
: serialize
|
|
130
|
+
delete bindings.serializers
|
|
131
|
+
applySerializers([bindings], childSerialize, childSerializers, this._stdErrSerialize)
|
|
132
|
+
}
|
|
133
|
+
function Child (parent) {
|
|
134
|
+
this._childLevel = (parent._childLevel | 0) + 1
|
|
135
|
+
this.error = bind(parent, bindings, 'error')
|
|
136
|
+
this.fatal = bind(parent, bindings, 'fatal')
|
|
137
|
+
this.warn = bind(parent, bindings, 'warn')
|
|
138
|
+
this.info = bind(parent, bindings, 'info')
|
|
139
|
+
this.debug = bind(parent, bindings, 'debug')
|
|
140
|
+
this.trace = bind(parent, bindings, 'trace')
|
|
141
|
+
if (childSerializers) {
|
|
142
|
+
this.serializers = childSerializers
|
|
143
|
+
this._serialize = childSerialize
|
|
144
|
+
}
|
|
145
|
+
if (transmit) {
|
|
146
|
+
this._logEvent = createLogEventShape(
|
|
147
|
+
[].concat(parent._logEvent.bindings, bindings)
|
|
148
|
+
)
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
Child.prototype = this
|
|
152
|
+
return new Child(this)
|
|
153
|
+
}
|
|
154
|
+
return logger
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
bingo.levels = {
|
|
158
|
+
values: {
|
|
159
|
+
fatal: 60,
|
|
160
|
+
error: 50,
|
|
161
|
+
warn: 40,
|
|
162
|
+
info: 30,
|
|
163
|
+
debug: 20,
|
|
164
|
+
trace: 10
|
|
165
|
+
},
|
|
166
|
+
labels: {
|
|
167
|
+
10: 'trace',
|
|
168
|
+
20: 'debug',
|
|
169
|
+
30: 'info',
|
|
170
|
+
40: 'warn',
|
|
171
|
+
50: 'error',
|
|
172
|
+
60: 'fatal'
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
bingo.stdSerializers = stdSerializers
|
|
177
|
+
bingo.stdTimeFunctions = Object.assign({}, { nullTime, epochTime, unixTime, isoTime })
|
|
178
|
+
|
|
179
|
+
function set (opts, logger, level, fallback) {
|
|
180
|
+
const proto = Object.getPrototypeOf(logger)
|
|
181
|
+
logger[level] = logger.levelVal > logger.levels.values[level]
|
|
182
|
+
? noop
|
|
183
|
+
: (proto[level] ? proto[level] : (_console[level] || _console[fallback] || noop))
|
|
184
|
+
|
|
185
|
+
wrap(opts, logger, level)
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
function wrap (opts, logger, level) {
|
|
189
|
+
if (!opts.transmit && logger[level] === noop) return
|
|
190
|
+
|
|
191
|
+
logger[level] = (function (write) {
|
|
192
|
+
return function LOG () {
|
|
193
|
+
const ts = opts.timestamp()
|
|
194
|
+
const args = new Array(arguments.length)
|
|
195
|
+
const proto = (Object.getPrototypeOf && Object.getPrototypeOf(this) === _console) ? _console : this
|
|
196
|
+
for (var i = 0; i < args.length; i++) args[i] = arguments[i]
|
|
197
|
+
|
|
198
|
+
if (opts.serialize && !opts.asObject) {
|
|
199
|
+
applySerializers(args, this._serialize, this.serializers, this._stdErrSerialize)
|
|
200
|
+
}
|
|
201
|
+
if (opts.asObject) write.call(proto, asObject(this, level, args, ts))
|
|
202
|
+
else write.apply(proto, args)
|
|
203
|
+
|
|
204
|
+
if (opts.transmit) {
|
|
205
|
+
const transmitLevel = opts.transmit.level || logger.level
|
|
206
|
+
const transmitValue = bingo-logger.levels.values[transmitLevel]
|
|
207
|
+
const methodValue = bingo-logger.levels.values[level]
|
|
208
|
+
if (methodValue < transmitValue) return
|
|
209
|
+
transmit(this, {
|
|
210
|
+
ts,
|
|
211
|
+
methodLevel: level,
|
|
212
|
+
methodValue,
|
|
213
|
+
transmitLevel,
|
|
214
|
+
transmitValue: bingo-logger.levels.values[opts.transmit.level || logger.level],
|
|
215
|
+
send: opts.transmit.send,
|
|
216
|
+
val: logger.levelVal
|
|
217
|
+
}, args)
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
})(logger[level])
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
function asObject (logger, level, args, ts) {
|
|
224
|
+
if (logger._serialize) applySerializers(args, logger._serialize, logger.serializers, logger._stdErrSerialize)
|
|
225
|
+
const argsCloned = args.slice()
|
|
226
|
+
let msg = argsCloned[0]
|
|
227
|
+
const o = {}
|
|
228
|
+
if (ts) {
|
|
229
|
+
o.time = ts
|
|
230
|
+
}
|
|
231
|
+
o.level = bingo-logger.levels.values[level]
|
|
232
|
+
let lvl = (logger._childLevel | 0) + 1
|
|
233
|
+
if (lvl < 1) lvl = 1
|
|
234
|
+
// deliberate, catching objects, arrays
|
|
235
|
+
if (msg !== null && typeof msg === 'object') {
|
|
236
|
+
while (lvl-- && typeof argsCloned[0] === 'object') {
|
|
237
|
+
Object.assign(o, argsCloned.shift())
|
|
238
|
+
}
|
|
239
|
+
msg = argsCloned.length ? format(argsCloned.shift(), argsCloned) : undefined
|
|
240
|
+
} else if (typeof msg === 'string') msg = format(argsCloned.shift(), argsCloned)
|
|
241
|
+
if (msg !== undefined) o.msg = msg
|
|
242
|
+
return o
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
function applySerializers (args, serialize, serializers, stdErrSerialize) {
|
|
246
|
+
for (const i in args) {
|
|
247
|
+
if (stdErrSerialize && args[i] instanceof Error) {
|
|
248
|
+
args[i] = bingo-logger.stdSerializers.err(args[i])
|
|
249
|
+
} else if (typeof args[i] === 'object' && !Array.isArray(args[i])) {
|
|
250
|
+
for (const k in args[i]) {
|
|
251
|
+
if (serialize && serialize.indexOf(k) > -1 && k in serializers) {
|
|
252
|
+
args[i][k] = serializers[k](args[i][k])
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
function bind (parent, bindings, level) {
|
|
260
|
+
return function () {
|
|
261
|
+
const args = new Array(1 + arguments.length)
|
|
262
|
+
args[0] = bindings
|
|
263
|
+
for (var i = 1; i < args.length; i++) {
|
|
264
|
+
args[i] = arguments[i - 1]
|
|
265
|
+
}
|
|
266
|
+
return parent[level].apply(this, args)
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
function transmit (logger, opts, args) {
|
|
271
|
+
const send = opts.send
|
|
272
|
+
const ts = opts.ts
|
|
273
|
+
const methodLevel = opts.methodLevel
|
|
274
|
+
const methodValue = opts.methodValue
|
|
275
|
+
const val = opts.val
|
|
276
|
+
const bindings = logger._logEvent.bindings
|
|
277
|
+
|
|
278
|
+
applySerializers(
|
|
279
|
+
args,
|
|
280
|
+
logger._serialize || Object.keys(logger.serializers),
|
|
281
|
+
logger.serializers,
|
|
282
|
+
logger._stdErrSerialize === undefined ? true : logger._stdErrSerialize
|
|
283
|
+
)
|
|
284
|
+
logger._logEvent.ts = ts
|
|
285
|
+
logger._logEvent.messages = args.filter(function (arg) {
|
|
286
|
+
// bindings can only be objects, so reference equality check via indexOf is fine
|
|
287
|
+
return bindings.indexOf(arg) === -1
|
|
288
|
+
})
|
|
289
|
+
|
|
290
|
+
logger._logEvent.level.label = methodLevel
|
|
291
|
+
logger._logEvent.level.value = methodValue
|
|
292
|
+
|
|
293
|
+
send(methodLevel, logger._logEvent, val)
|
|
294
|
+
|
|
295
|
+
logger._logEvent = createLogEventShape(bindings)
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
function createLogEventShape (bindings) {
|
|
299
|
+
return {
|
|
300
|
+
ts: 0,
|
|
301
|
+
messages: [],
|
|
302
|
+
bindings: bindings || [],
|
|
303
|
+
level: { label: '', value: 0 }
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
function asErrValue (err) {
|
|
308
|
+
const obj = {
|
|
309
|
+
type: err.constructor.name,
|
|
310
|
+
msg: err.message,
|
|
311
|
+
stack: err.stack
|
|
312
|
+
}
|
|
313
|
+
for (const key in err) {
|
|
314
|
+
if (obj[key] === undefined) {
|
|
315
|
+
obj[key] = err[key]
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
return obj
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
function getTimeFunction (opts) {
|
|
322
|
+
if (typeof opts.timestamp === 'function') {
|
|
323
|
+
return opts.timestamp
|
|
324
|
+
}
|
|
325
|
+
if (opts.timestamp === false) {
|
|
326
|
+
return nullTime
|
|
327
|
+
}
|
|
328
|
+
return epochTime
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
function mock () { return {} }
|
|
332
|
+
function passthrough (a) { return a }
|
|
333
|
+
function noop () {}
|
|
334
|
+
|
|
335
|
+
function nullTime () { return false }
|
|
336
|
+
function epochTime () { return Date.now() }
|
|
337
|
+
function unixTime () { return Math.round(Date.now() / 1000.0) }
|
|
338
|
+
function isoTime () { return new Date(Date.now()).toISOString() } // using Date.now() for testability
|
|
339
|
+
|
|
340
|
+
/* eslint-disable */
|
|
341
|
+
/* istanbul ignore next */
|
|
342
|
+
function pfGlobalThisOrFallback () {
|
|
343
|
+
function defd (o) { return typeof o !== 'undefined' && o }
|
|
344
|
+
try {
|
|
345
|
+
if (typeof globalThis !== 'undefined') return globalThis
|
|
346
|
+
Object.defineProperty(Object.prototype, 'globalThis', {
|
|
347
|
+
get: function () {
|
|
348
|
+
delete Object.prototype.globalThis
|
|
349
|
+
return (this.globalThis = this)
|
|
350
|
+
},
|
|
351
|
+
configurable: true
|
|
352
|
+
})
|
|
353
|
+
return globalThis
|
|
354
|
+
} catch (e) {
|
|
355
|
+
return defd(self) || defd(window) || defd(this) || {}
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
/* eslint-enable */
|