@zendesk/retrace
Version:
define and capture Product Operation Traces along with computed metrics with an optional friendly React beacon API
27 lines (22 loc) • 822 B
text/typescript
/**
* Copyright Zendesk, Inc.
*
* Use of this source code is governed under the Apache License, Version 2.0
* found at http://www.apache.org/licenses/LICENSE-2.0.
*/
import type { DependencyList } from 'react'
import type { UseTimingHookConfiguration } from './types'
import { useActionLog } from './useActionLog'
import { useTimingMeasurement } from './useTimingMeasurement'
export const useTiming = <
CustomMetadata extends Record<string, unknown> = never,
>(
options: UseTimingHookConfiguration<CustomMetadata>,
restartWhenChanged: DependencyList = [],
): void => {
const actionLog = useActionLog<CustomMetadata>(options)
if (options.metadata) {
actionLog.customMetadataBySource.set(options.placement, options.metadata)
}
useTimingMeasurement({ ...options, actionLog }, restartWhenChanged)
}