Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/sui-decorators/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
"sinon": "10.0.0"
},
"browser": {
"perf_hooks": false,
"hot-shots": false,
"redis": false,
"redis-lru": false,
Expand All @@ -27,6 +26,7 @@
"redis-lru": "0.6.0",
"tiny-lru": "6.0.1",
"hot-shots": "7.7.1",
"performance-now": "2.1.0",
"redis-mock": "0.49.0"
}
}
13 changes: 5 additions & 8 deletions packages/sui-decorators/src/decorators/tracer/index.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
import {performance} from 'perf_hooks'
import perfNow from 'performance-now'
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This package uses native browser implementation for client-side code and a polyfilled version for Node-based code.


import isNode from '../../helpers/isNode.js'
import isPromise from '../../helpers/isPromise.js'
import {ConsoleReporter} from './reporters/ConsoleReporter.js'
import {statusCodes} from './statusCodes.js'
export {DataDogReporter} from './reporters/DataDogReporter.js'

const getPerformanceMeter = () => (isNode ? performance : window.performance)

const getReporter = () => {
const customReporter = isNode ? global.__SUI_DECORATOR_TRACER_REPORTER__ : window.__SUI_DECORATOR_TRACER_REPORTER__

Expand Down Expand Up @@ -44,20 +42,19 @@ export default ({metric = null} = {}) => {
}

const reporter = getReporter()
const perf = getPerformanceMeter()
const classMethodName = `${target.constructor.name}::${fnName}`
const metricName = metric || classMethodName

const _fnTimed = (...args) => {
// performance metric start
const startTime = perf.now()
const startTime = perfNow()

// original function
const returnValue = fn.apply(this, args)
if (isPromise(returnValue)) {
return returnValue
.then(res => {
const endTime = perf.now()
const endTime = perfNow()

if (res.__INLINE_ERROR__) {
const [error] = res
Expand All @@ -81,7 +78,7 @@ export default ({metric = null} = {}) => {
return Promise.resolve(res)
})
.catch(error => {
const endTime = perf.now()
const endTime = perfNow()

reporter.send({
metricName,
Expand All @@ -94,7 +91,7 @@ export default ({metric = null} = {}) => {
})
} else {
// performance metric ends
const endTime = perf.now()
const endTime = perfNow()

reporter.send({
metricName,
Expand Down
Loading