| 39 | * @returns The final options. |
| 40 | */ |
| 41 | export function getFinalOptions(userOptions: CloudflareOptions = {}, env: unknown): CloudflareOptions { |
| 42 | if (typeof env !== 'object' || env === null) { |
| 43 | return userOptions; |
| 44 | } |
| 45 | |
| 46 | // Priority: userOptions.release > SENTRY_RELEASE > CF_VERSION_METADATA.id |
| 47 | const release = |
| 48 | 'SENTRY_RELEASE' in env && typeof env.SENTRY_RELEASE === 'string' |
| 49 | ? env.SENTRY_RELEASE |
| 50 | : 'CF_VERSION_METADATA' in env && isVersionMetadata(env.CF_VERSION_METADATA) |
| 51 | ? env.CF_VERSION_METADATA.id |
| 52 | : undefined; |
| 53 | |
| 54 | const tracesSampleRate = |
| 55 | userOptions.tracesSampleRate ?? parseFloat(getEnvVar(env, 'SENTRY_TRACES_SAMPLE_RATE') ?? ''); |
| 56 | |
| 57 | return { |
| 58 | release, |
| 59 | ...userOptions, |
| 60 | dsn: userOptions.dsn ?? getEnvVar(env, 'SENTRY_DSN'), |
| 61 | environment: userOptions.environment ?? getEnvVar(env, 'SENTRY_ENVIRONMENT'), |
| 62 | tracesSampleRate: isFinite(tracesSampleRate) ? tracesSampleRate : undefined, |
| 63 | debug: userOptions.debug ?? envToBool(getEnvVar(env, 'SENTRY_DEBUG')), |
| 64 | tunnel: userOptions.tunnel ?? getEnvVar(env, 'SENTRY_TUNNEL'), |
| 65 | }; |
| 66 | } |