@embrace-io/web-sdk
Version:
1 lines • 1.77 kB
Source Map (JSON)
{"version":3,"file":"clampNumber.cjs","names":[],"sources":["../../src/utils/clampNumber.ts"],"sourcesContent":["import type { DiagLogger } from '@opentelemetry/api';\n\n/**\n * Validates `value` against `[min, max]`, returning `defaultValue` (and\n * warning via `diag`) when the value is non-finite or out of range.\n * Returns `defaultValue` silently when `value` is undefined.\n *\n * Despite the name, out-of-range inputs are replaced with `defaultValue`\n * rather than pinned to `min`/`max`. Use this to validate user-supplied\n * config where falling back to a known-good default is safer than\n * silently mutating the value.\n */\nexport const clampNumber = ({\n diag,\n value,\n defaultValue,\n min,\n max,\n}: {\n diag?: DiagLogger;\n value: number | undefined;\n defaultValue: number;\n min: number;\n max: number;\n}): number => {\n if (value === undefined) {\n return defaultValue;\n }\n if (!Number.isFinite(value)) {\n diag?.warn(\n `value is not a finite number; falling back to default (${defaultValue.toString()}).`,\n );\n return defaultValue;\n }\n if (value < min || value > max) {\n diag?.warn(\n `value (${value.toString()}) is outside the allowed range ` +\n `[${min.toString()}, ${max.toString()}]; ` +\n `falling back to default (${defaultValue.toString()}).`,\n );\n return defaultValue;\n }\n return value;\n};\n"],"mappings":";;;;;;;;;;;;AAYA,MAAa,eAAe,EAC1B,MACA,OACA,cACA,KACA,UAOY;CACZ,IAAI,UAAU,KAAA,GACZ,OAAO;CAET,IAAI,CAAC,OAAO,SAAS,KAAK,GAAG;EAC3B,MAAM,KACJ,0DAA0D,aAAa,SAAS,EAAE,GACpF;EACA,OAAO;CACT;CACA,IAAI,QAAQ,OAAO,QAAQ,KAAK;EAC9B,MAAM,KACJ,UAAU,MAAM,SAAS,EAAE,kCACrB,IAAI,SAAS,EAAE,IAAI,IAAI,SAAS,EAAE,8BACV,aAAa,SAAS,EAAE,GACxD;EACA,OAAO;CACT;CACA,OAAO;AACT"}