| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 80782cb commit d8365bc
1 file changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -150,68 +150,156 @@ ObjectDefineProperty(Console, SymbolHasInstance, { | |||
| 150 | 150 | } | |
| 151 | 151 | }); | |
| 152 | 152 | ||
| 153 | - // Eager version for the Console constructor | ||
| 154 | - Console.prototype[kBindStreamsEager] = function(stdout, stderr) { | ||
| 155 | - ObjectDefineProperties(this, { | ||
| 156 | - '_stdout': { ...consolePropAttributes, value: stdout }, | ||
| 157 | - '_stderr': { ...consolePropAttributes, value: stderr } | ||
| 158 | - }); | ||
| 159 | - }; | ||
| 153 | + const kColorInspectOptions = { colors: true }; | ||
| 154 | + const kNoColorInspectOptions = {}; | ||
| 160 | 155 | ||
| 161 | - // Lazily load the stdout and stderr from an object so we don't | ||
| 162 | - // create the stdio streams when they are not even accessed | ||
| 163 | - Console.prototype[kBindStreamsLazy] = function(object) { | ||
| 164 | - let stdout; | ||
| 165 | - let stderr; | ||
| 166 | - ObjectDefineProperties(this, { | ||
| 167 | - '_stdout': { | ||
| 168 | - enumerable: false, | ||
| 169 | - configurable: true, | ||
| 170 | - get() { | ||
| 171 | - if (!stdout) stdout = object.stdout; | ||
| 172 | - return stdout; | ||
| 173 | - }, | ||
| 174 | - set(value) { stdout = value; } | ||
| 175 | - }, | ||
| 176 | - '_stderr': { | ||
| 177 | - enumerable: false, | ||
| 178 | - configurable: true, | ||
| 179 | - get() { | ||
| 180 | - if (!stderr) { stderr = object.stderr; } | ||
| 181 | - return stderr; | ||
| 182 | - }, | ||
| 183 | - set(value) { stderr = value; } | ||
| 156 | + ObjectDefineProperties(Console.prototype, { | ||
| 157 | + [kBindStreamsEager]: { | ||
| 158 | + ...consolePropAttributes, | ||
| 159 | + // Eager version for the Console constructor | ||
| 160 | + value: function(stdout, stderr) { | ||
| 161 | + ObjectDefineProperties(this, { | ||
| 162 | + '_stdout': { ...consolePropAttributes, value: stdout }, | ||
| 163 | + '_stderr': { ...consolePropAttributes, value: stderr } | ||
| 164 | + }); | ||
| 184 | 165 | } | |
| 185 | - }); | ||
| 186 | - }; | ||
| 166 | + }, | ||
| 167 | + [kBindStreamsLazy]: { | ||
| 168 | + ...consolePropAttributes, | ||
| 169 | + // Lazily load the stdout and stderr from an object so we don't | ||
| 170 | + // create the stdio streams when they are not even accessed | ||
| 171 | + value: function(object) { | ||
| 172 | + let stdout; | ||
| 173 | + let stderr; | ||
| 174 | + ObjectDefineProperties(this, { | ||
| 175 | + '_stdout': { | ||
| 176 | + enumerable: false, | ||
| 177 | + configurable: true, | ||
| 178 | + get() { | ||
| 179 | + if (!stdout) stdout = object.stdout; | ||
| 180 | + return stdout; | ||
| 181 | + }, | ||
| 182 | + set(value) { stdout = value; } | ||
| 183 | + }, | ||
| 184 | + '_stderr': { | ||
| 185 | + enumerable: false, | ||
| 186 | + configurable: true, | ||
| 187 | + get() { | ||
| 188 | + if (!stderr) { stderr = object.stderr; } | ||
| 189 | + return stderr; | ||
| 190 | + }, | ||
| 191 | + set(value) { stderr = value; } | ||
| 192 | + } | ||
| 193 | + }); | ||
| 194 | + } | ||
| 195 | + }, | ||
| 196 | + [kBindProperties]: { | ||
| 197 | + ...consolePropAttributes, | ||
| 198 | + value: function(ignoreErrors, colorMode, groupIndentation = 2) { | ||
| 199 | + ObjectDefineProperties(this, { | ||
| 200 | + '_stdoutErrorHandler': { | ||
| 201 | + ...consolePropAttributes, | ||
| 202 | + value: createWriteErrorHandler(this, kUseStdout) | ||
| 203 | + }, | ||
| 204 | + '_stderrErrorHandler': { | ||
| 205 | + ...consolePropAttributes, | ||
| 206 | + value: createWriteErrorHandler(this, kUseStderr) | ||
| 207 | + }, | ||
| 208 | + '_ignoreErrors': { | ||
| 209 | + ...consolePropAttributes, | ||
| 210 | + value: Boolean(ignoreErrors) | ||
| 211 | + }, | ||
| 212 | + '_times': { ...consolePropAttributes, value: new Map() }, | ||
| 213 | + // Corresponds to https://console.spec.whatwg.org/#count-map | ||
| 214 | + [kCounts]: { ...consolePropAttributes, value: new Map() }, | ||
| 215 | + [kColorMode]: { ...consolePropAttributes, value: colorMode }, | ||
| 216 | + [kIsConsole]: { ...consolePropAttributes, value: true }, | ||
| 217 | + [kGroupIndent]: { ...consolePropAttributes, value: '' }, | ||
| 218 | + [kGroupIndentationWidth]: { | ||
| 219 | + ...consolePropAttributes, | ||
| 220 | + value: groupIndentation | ||
| 221 | + }, | ||
| 222 | + }); | ||
| 223 | + } | ||
| 224 | + }, | ||
| 225 | + [kWriteToConsole]: { | ||
| 226 | + ...consolePropAttributes, | ||
| 227 | + value: function(streamSymbol, string) { | ||
| 228 | + const ignoreErrors = this._ignoreErrors; | ||
| 229 | + const groupIndent = this[kGroupIndent]; | ||
| 230 | + | ||
| 231 | + const useStdout = streamSymbol === kUseStdout; | ||
| 232 | + const stream = useStdout ? this._stdout : this._stderr; | ||
| 233 | + const errorHandler = useStdout ? | ||
| 234 | + this._stdoutErrorHandler : this._stderrErrorHandler; | ||
| 235 | + | ||
| 236 | + if (groupIndent.length !== 0) { | ||
| 237 | + if (string.includes('\n')) { | ||
| 238 | + string = string.replace(/\n/g, `\n${groupIndent}`); | ||
| 239 | + } | ||
| 240 | + string = groupIndent + string; | ||
| 241 | + } | ||
| 242 | + string += '\n'; | ||
| 243 | + | ||
| 244 | + if (ignoreErrors === false) return stream.write(string); | ||
| 245 | + | ||
| 246 | + // There may be an error occurring synchronously (e.g. for files or TTYs | ||
| 247 | + // on POSIX systems) or asynchronously (e.g. pipes on POSIX systems), so | ||
| 248 | + // handle both situations. | ||
| 249 | + try { | ||
| 250 | + // Add and later remove a noop error handler to catch synchronous | ||
| 251 | + // errors. | ||
| 252 | + if (stream.listenerCount('error') === 0) | ||
| 253 | + stream.once('error', noop); | ||
| 254 | + | ||
| 255 | + stream.write(string, errorHandler); | ||
| 256 | + } catch (e) { | ||
| 257 | + // Console is a debugging utility, so it swallowing errors is not | ||
| 258 | + // desirable even in edge cases such as low stack space. | ||
| 259 | + if (isStackOverflowError(e)) | ||
| 260 | + throw e; | ||
| 261 | + // Sorry, there's no proper way to pass along the error here. | ||
| 262 | + } finally { | ||
| 263 | + stream.removeListener('error', noop); | ||
| 264 | + } | ||
| 265 | + } | ||
| 266 | + }, | ||
| 267 | + [kGetInspectOptions]: { | ||
| 268 | + ...consolePropAttributes, | ||
| 269 | + value: function(stream) { | ||
| 270 | + let color = this[kColorMode]; | ||
| 271 | + if (color === 'auto') { | ||
| 272 | + color = stream.isTTY && ( | ||
| 273 | + typeof stream.getColorDepth === 'function' ? | ||
| 274 | + stream.getColorDepth() > 2 : true); | ||
| 275 | + } | ||
| 187 | 276 | ||
| 188 | - Console.prototype[kBindProperties] = function(ignoreErrors, colorMode, | ||
| 189 | - groupIndentation = 2) { | ||
| 190 | - ObjectDefineProperties(this, { | ||
| 191 | - '_stdoutErrorHandler': { | ||
| 192 | - ...consolePropAttributes, | ||
| 193 | - value: createWriteErrorHandler(this, kUseStdout) | ||
| 194 | - }, | ||
| 195 | - '_stderrErrorHandler': { | ||
| 196 | - ...consolePropAttributes, | ||
| 197 | - value: createWriteErrorHandler(this, kUseStderr) | ||
| 198 | - }, | ||
| 199 | - '_ignoreErrors': { | ||
| 200 | - ...consolePropAttributes, | ||
| 201 | - value: Boolean(ignoreErrors) | ||
| 202 | - }, | ||
| 203 | - '_times': { ...consolePropAttributes, value: new Map() }, | ||
| 204 | - // Corresponds to https://console.spec.whatwg.org/#count-map | ||
| 205 | - [kCounts]: { ...consolePropAttributes, value: new Map() }, | ||
| 206 | - [kColorMode]: { ...consolePropAttributes, value: colorMode }, | ||
| 207 | - [kIsConsole]: { ...consolePropAttributes, value: true }, | ||
| 208 | - [kGroupIndent]: { ...consolePropAttributes, value: '' }, | ||
| 209 | - [kGroupIndentationWidth]: { | ||
| 210 | - ...consolePropAttributes, | ||
| 211 | - value: groupIndentation | ||
| 212 | - }, | ||
| 213 | - }); | ||
| 214 | - }; | ||
| 277 | + const options = optionsMap.get(this); | ||
| 278 | + if (options) { | ||
| 279 | + if (options.colors === undefined) { | ||
| 280 | + options.colors = color; | ||
| 281 | + } | ||
| 282 | + return options; | ||
| 283 | + } | ||
| 284 | + | ||
| 285 | + return color ? kColorInspectOptions : kNoColorInspectOptions; | ||
| 286 | + } | ||
| 287 | + }, | ||
| 288 | + [kFormatForStdout]: { | ||
| 289 | + ...consolePropAttributes, | ||
| 290 | + value: function(args) { | ||
| 291 | + const opts = this[kGetInspectOptions](this._stdout); | ||
| 292 | + return formatWithOptions(opts, ...args); | ||
| 293 | + } | ||
| 294 | + }, | ||
| 295 | + [kFormatForStderr]: { | ||
| 296 | + ...consolePropAttributes, | ||
| 297 | + value: function(args) { | ||
| 298 | + const opts = this[kGetInspectOptions](this._stderr); | ||
| 299 | + return formatWithOptions(opts, ...args); | ||
| 300 | + } | ||
| 301 | + }, | ||
| 302 | + }); | ||
| 215 | 303 | ||
| 216 | 304 | // Make a function that can serve as the callback passed to `stream.write()`. | |
| 217 | 305 | function createWriteErrorHandler(instance, streamSymbol) { | |
@@ -234,76 +322,6 @@ function createWriteErrorHandler(instance, streamSymbol) { | |||
| 234 | 322 | }; | |
| 235 | 323 | } | |
| 236 | 324 | ||
| 237 | - Console.prototype[kWriteToConsole] = function(streamSymbol, string) { | ||
| 238 | - const ignoreErrors = this._ignoreErrors; | ||
| 239 | - const groupIndent = this[kGroupIndent]; | ||
| 240 | - | ||
| 241 | - const useStdout = streamSymbol === kUseStdout; | ||
| 242 | - const stream = useStdout ? this._stdout : this._stderr; | ||
| 243 | - const errorHandler = useStdout ? | ||
| 244 | - this._stdoutErrorHandler : this._stderrErrorHandler; | ||
| 245 | - | ||
| 246 | - if (groupIndent.length !== 0) { | ||
| 247 | - if (string.includes('\n')) { | ||
| 248 | - string = string.replace(/\n/g, `\n${groupIndent}`); | ||
| 249 | - } | ||
| 250 | - string = groupIndent + string; | ||
| 251 | - } | ||
| 252 | - string += '\n'; | ||
| 253 | - | ||
| 254 | - if (ignoreErrors === false) return stream.write(string); | ||
| 255 | - | ||
| 256 | - // There may be an error occurring synchronously (e.g. for files or TTYs | ||
| 257 | - // on POSIX systems) or asynchronously (e.g. pipes on POSIX systems), so | ||
| 258 | - // handle both situations. | ||
| 259 | - try { | ||
| 260 | - // Add and later remove a noop error handler to catch synchronous errors. | ||
| 261 | - if (stream.listenerCount('error') === 0) | ||
| 262 | - stream.once('error', noop); | ||
| 263 | - | ||
| 264 | - stream.write(string, errorHandler); | ||
| 265 | - } catch (e) { | ||
| 266 | - // Console is a debugging utility, so it swallowing errors is not desirable | ||
| 267 | - // even in edge cases such as low stack space. | ||
| 268 | - if (isStackOverflowError(e)) | ||
| 269 | - throw e; | ||
| 270 | - // Sorry, there's no proper way to pass along the error here. | ||
| 271 | - } finally { | ||
| 272 | - stream.removeListener('error', noop); | ||
| 273 | - } | ||
| 274 | - }; | ||
| 275 | - | ||
| 276 | - const kColorInspectOptions = { colors: true }; | ||
| 277 | - const kNoColorInspectOptions = {}; | ||
| 278 | - Console.prototype[kGetInspectOptions] = function(stream) { | ||
| 279 | - let color = this[kColorMode]; | ||
| 280 | - if (color === 'auto') { | ||
| 281 | - color = stream.isTTY && ( | ||
| 282 | - typeof stream.getColorDepth === 'function' ? | ||
| 283 | - stream.getColorDepth() > 2 : true); | ||
| 284 | - } | ||
| 285 | - | ||
| 286 | - const options = optionsMap.get(this); | ||
| 287 | - if (options) { | ||
| 288 | - if (options.colors === undefined) { | ||
| 289 | - options.colors = color; | ||
| 290 | - } | ||
| 291 | - return options; | ||
| 292 | - } | ||
| 293 | - | ||
| 294 | - return color ? kColorInspectOptions : kNoColorInspectOptions; | ||
| 295 | - }; | ||
| 296 | - | ||
| 297 | - Console.prototype[kFormatForStdout] = function(args) { | ||
| 298 | - const opts = this[kGetInspectOptions](this._stdout); | ||
| 299 | - return formatWithOptions(opts, ...args); | ||
| 300 | - }; | ||
| 301 | - | ||
| 302 | - Console.prototype[kFormatForStderr] = function(args) { | ||
| 303 | - const opts = this[kGetInspectOptions](this._stderr); | ||
| 304 | - return formatWithOptions(opts, ...args); | ||
| 305 | - }; | ||
| 306 | - | ||
| 307 | 325 | const consoleMethods = { | |
| 308 | 326 | log(...args) { | |
| 309 | 327 | this[kWriteToConsole](kUseStdout, this[kFormatForStdout](args)); | |
| Back | FazBrowse Home | New Git URL |
0 commit comments