MCPcopy Create free account
hub / github.com/code-pushup/cli / measureCtx

Function measureCtx

packages/utils/src/lib/user-timing-extensibility-api-utils.ts:474–515  ·  view source on GitHub ↗
(cfg: MeasureCtxOptions)

Source from the content-addressed store, hash-verified

472 */
473
474export function measureCtx(cfg: MeasureCtxOptions) {
475 const { prefix, error: globalErr, ...defaults } = cfg;
476
477 return <T = unknown>(event: string, opt?: MeasureOptions<T>) => {
478 const { success, error, ...measurePayload } = opt ?? {};
479 const merged = mergeDevtoolsPayload(defaults, measurePayload);
480 const {
481 startName: s,
482 endName: e,
483 measureName: m,
484 } = getNames(event, prefix);
485
486 return {
487 start: () => performance.mark(s, toMarkMeasureOpts(merged)),
488
489 success: (r: T) => {
490 const successPayload = mergeDevtoolsPayload(merged, success?.(r) ?? {});
491 performance.mark(e, toMarkMeasureOpts(successPayload));
492 performance.measure(m, {
493 start: s,
494 end: e,
495 ...asOptions(successPayload),
496 });
497 },
498
499 error: (err: unknown) => {
500 const errorPayload = mergeDevtoolsPayload(
501 { ...merged, color: 'error' },
502 errorToEntryMeta(err),
503 globalErr?.(err) ?? {},
504 error?.(err) ?? {},
505 );
506 performance.mark(e, toMarkMeasureOpts(errorPayload));
507 performance.measure(m, {
508 start: s,
509 end: e,
510 ...asOptions(errorPayload),
511 });
512 },
513 };
514 };
515}

Calls 6

mergeDevtoolsPayloadFunction · 0.85
getNamesFunction · 0.85
toMarkMeasureOptsFunction · 0.85
asOptionsFunction · 0.85
errorToEntryMetaFunction · 0.85
measureMethod · 0.80

Tested by

no test coverage detected