UNPKG

@zendesk/retrace

Version:

define and capture Product Operation Traces along with computed metrics with an optional friendly React beacon API

59 lines 2.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.applyDefaultTags = applyDefaultTags; exports.ensureMatcherFn = ensureMatcherFn; exports.convertMatchersToFns = convertMatchersToFns; exports.convertLabelMatchersToFns = convertLabelMatchersToFns; exports.ensureMatcherFnOrSpecialToken = ensureMatcherFnOrSpecialToken; const matchSpan_1 = require("./matchSpan"); function applyDefaultTags(matcherFn, defaultTags) { if (!defaultTags) { return matcherFn; } for (const key of Object.keys(defaultTags)) { const k = key; // only add default tags to matcher if they are not already defined if (!(k in matcherFn)) { // @ts-expect-error hard to type // eslint-disable-next-line no-param-reassign matcherFn[k] = defaultTags[k]; } } return matcherFn; } function ensureMatcherFn(matcherFnOrDefinition, defaultTags) { return applyDefaultTags(typeof matcherFnOrDefinition === 'function' ? matcherFnOrDefinition : (0, matchSpan_1.fromDefinition)(matcherFnOrDefinition), defaultTags); } function arrayHasAtLeastOneElement(arr) { return arr.length > 0; } function convertMatchersToFns(matchers) { const mapped = matchers?.map((m) => ensureMatcherFn(m)); if (mapped && arrayHasAtLeastOneElement(mapped)) { return mapped; } return undefined; } function convertLabelMatchersToFns(definitionLabelMatchers) { const matchers = {}; for (const key in definitionLabelMatchers) { // eslint-disable-next-line no-continue if (!definitionLabelMatchers?.[key]) continue; matchers[key] = ensureMatcherFn(definitionLabelMatchers[key]); } return matchers; } /** * Helper function to ensure that the matcher is a function or a special token */ function ensureMatcherFnOrSpecialToken(spanMatcher) { // Handle string types (special matchers) if (typeof spanMatcher === 'string') { return spanMatcher; } return ensureMatcherFn(spanMatcher); } //# sourceMappingURL=ensureMatcherFn.js.map