perf_hooks: add toJSON to performance class
Added toJSON method to the InternalPerformance class as per the convention followed in other performance classes and per the spec: https://www.w3.org/TR/hr-time/#tojson-method Fixes: https://github.com/nodejs/node/issues/37623 PR-URL: https://github.com/nodejs/node/pull/37771 Fixes: https://github.com/nodejs/node/issues/37623 Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
parent
5bfb6f0564
commit
93f0b4d35b
@ -261,6 +261,14 @@ If the wrapped function returns a promise, a finally handler will be attached
|
|||||||
to the promise and the duration will be reported once the finally handler is
|
to the promise and the duration will be reported once the finally handler is
|
||||||
invoked.
|
invoked.
|
||||||
|
|
||||||
|
### `performance.toJSON()`
|
||||||
|
<!-- YAML
|
||||||
|
added: REPLACEME
|
||||||
|
-->
|
||||||
|
|
||||||
|
An object which is JSON representation of the `performance` object. It
|
||||||
|
is similar to [`window.performance.toJSON`][] in browsers.
|
||||||
|
|
||||||
## Class: `PerformanceEntry`
|
## Class: `PerformanceEntry`
|
||||||
<!-- YAML
|
<!-- YAML
|
||||||
added: v8.5.0
|
added: v8.5.0
|
||||||
@ -1025,4 +1033,5 @@ require('some-module');
|
|||||||
[`child_process.spawnSync()`]: child_process.md#child_process_child_process_spawnsync_command_args_options
|
[`child_process.spawnSync()`]: child_process.md#child_process_child_process_spawnsync_command_args_options
|
||||||
[`process.hrtime()`]: process.md#process_process_hrtime_time
|
[`process.hrtime()`]: process.md#process_process_hrtime_time
|
||||||
[`timeOrigin`]: https://w3c.github.io/hr-time/#dom-performance-timeorigin
|
[`timeOrigin`]: https://w3c.github.io/hr-time/#dom-performance-timeorigin
|
||||||
|
[`window.performance.toJSON`]: https://developer.mozilla.org/en-US/docs/Web/API/Performance/toJSON
|
||||||
[`window.performance`]: https://developer.mozilla.org/en-US/docs/Web/API/Window/performance
|
[`window.performance`]: https://developer.mozilla.org/en-US/docs/Web/API/Window/performance
|
||||||
|
@ -59,6 +59,15 @@ class Performance extends EventTarget {
|
|||||||
timeOrigin: this.timeOrigin,
|
timeOrigin: this.timeOrigin,
|
||||||
}, opts)}`;
|
}, opts)}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function toJSON() {
|
||||||
|
return {
|
||||||
|
nodeTiming: this.nodeTiming,
|
||||||
|
timeOrigin: this.timeOrigin,
|
||||||
|
eventLoopUtilization: this.eventLoopUtilization()
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
class InternalPerformance extends EventTarget {}
|
class InternalPerformance extends EventTarget {}
|
||||||
@ -105,6 +114,11 @@ ObjectDefineProperties(Performance.prototype, {
|
|||||||
configurable: true,
|
configurable: true,
|
||||||
enumerable: true,
|
enumerable: true,
|
||||||
value: timeOriginTimestamp,
|
value: timeOriginTimestamp,
|
||||||
|
},
|
||||||
|
toJSON: {
|
||||||
|
configurable: true,
|
||||||
|
enumerable: true,
|
||||||
|
value: toJSON,
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
14
test/parallel/test-tojson-perf_hooks.js
Normal file
14
test/parallel/test-tojson-perf_hooks.js
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
require('../common');
|
||||||
|
const assert = require('assert');
|
||||||
|
const { performance } = require('perf_hooks');
|
||||||
|
|
||||||
|
// Test toJSON for performance object
|
||||||
|
{
|
||||||
|
assert.strictEqual(typeof performance.toJSON, 'function');
|
||||||
|
const jsonObject = performance.toJSON();
|
||||||
|
assert.strictEqual(typeof jsonObject, 'object');
|
||||||
|
assert.strictEqual(jsonObject.timeOrigin, performance.timeOrigin);
|
||||||
|
assert.strictEqual(typeof jsonObject.nodeTiming, 'object');
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user