123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- import {AvatarProject} from 'sentry/types';
- const platforms = [
- 'dotnet',
- 'android',
- 'apple',
- 'dart',
- 'elixir',
- 'flutter',
- 'go',
- 'java',
- 'javascript',
- 'native',
- 'node',
- 'perl',
- 'php',
- 'python',
- 'react-native',
- 'ruby',
- 'rust',
- 'unity',
- ] as const;
- export type DocPlatform = typeof platforms[number];
- const performancePlatforms: DocPlatform[] = [
- 'dotnet',
- 'android',
- 'apple',
- 'go',
- 'java',
- 'javascript',
- 'node',
- 'php',
- 'python',
- 'react-native',
- 'ruby',
- ];
- function validDocPlatform(platform: any): platform is DocPlatform {
- return platforms.includes(platform);
- }
- export function getDocsPlatform(
- platform: string,
- performanceOnly: boolean
- ): DocPlatform | null {
- // react-native is the only platform that has a dash, and supports performance so we can skip that check
- if (platform === 'react-native') {
- return 'react-native';
- }
- const index = platform.indexOf('-');
- const prefix = index >= 0 ? platform.substring(0, index) : platform;
- if (validDocPlatform(prefix)) {
- const validPerformancePrefix = performancePlatforms.includes(prefix);
- if ((performanceOnly && validPerformancePrefix) || !performanceOnly) {
- return prefix;
- }
- }
- // can't find a matching docs platform
- return null;
- }
- export function getConfigureTracingDocsLink(
- project: AvatarProject | undefined
- ): string | null {
- const platform = project?.platform ?? null;
- const docsPlatform = platform ? getDocsPlatform(platform, true) : null;
- return docsPlatform === null
- ? null // this platform does not support performance
- : `https://docs.sentry.io/platforms/${docsPlatform}/performance/`;
- }
|