UNPKG

dd-trace

Version:

Datadog APM tracing client for JavaScript

95 lines (84 loc) 2.34 kB
'use strict' const path = require('path') function isTrue (str) { str = String(str).toLowerCase() return str === 'true' || str === '1' } function isFalse (str) { str = String(str).toLowerCase() return str === 'false' || str === '0' } function isError (value) { return Boolean(value?.message || value instanceof Error) } // Matches a glob pattern to a given subject string function globMatch (pattern, subject) { if (typeof pattern === 'string') pattern = pattern.toLowerCase() if (typeof subject === 'string') subject = subject.toLowerCase() if (typeof subject === 'number' && Number.isInteger(subject)) subject = String(subject) let px = 0 // [p]attern inde[x] let sx = 0 // [s]ubject inde[x] let nextPx = 0 let nextSx = 0 while (px < pattern.length || sx < subject.length) { if (px < pattern.length) { const c = pattern[px] switch (c) { case '?': if (sx < subject.length) { px++ sx++ continue } break case '*': nextPx = px nextSx = sx + 1 px++ continue default: // ordinary character if (sx < subject.length && subject[sx] === c) { px++ sx++ continue } break } } if (nextSx > 0 && nextSx <= subject.length) { px = nextPx sx = nextSx continue } return false } return true } function calculateDDBasePath (dirname) { const dirSteps = dirname.split(path.sep) const packagesIndex = dirSteps.lastIndexOf('packages') return dirSteps.slice(0, packagesIndex).join(path.sep) + path.sep } function normalizeProfilingEnabledValue (configValue) { return isTrue(configValue) ? 'true' : isFalse(configValue) ? 'false' : configValue === 'auto' ? 'auto' : undefined } function normalizePluginEnvName (envPluginName, makeLowercase = false) { if (envPluginName.startsWith('@')) { envPluginName = envPluginName.slice(1) } envPluginName = envPluginName.replaceAll(/[^a-z0-9_]/ig, '_') return makeLowercase ? envPluginName.toLowerCase() : envPluginName } module.exports = { isTrue, isFalse, isError, globMatch, ddBasePath: calculateDDBasePath(__dirname), normalizeProfilingEnabledValue, normalizePluginEnvName }