platforms.tsx 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700
  1. import sortBy from 'lodash/sortBy';
  2. import {t} from 'sentry/locale';
  3. import type {PlatformIntegration} from 'sentry/types';
  4. const goPlatforms: PlatformIntegration[] = [
  5. {
  6. id: 'go',
  7. link: 'https://docs.sentry.io/platforms/go/',
  8. name: 'Go',
  9. type: 'language',
  10. language: 'go',
  11. },
  12. {
  13. link: 'https://docs.sentry.io/platforms/go/guides/echo/',
  14. type: 'framework',
  15. id: 'go-echo',
  16. name: t('Echo'),
  17. language: 'go',
  18. },
  19. {
  20. link: 'https://docs.sentry.io/platforms/go/guides/fasthttp/',
  21. type: 'framework',
  22. id: 'go-fasthttp',
  23. name: t('FastHTTP'),
  24. language: 'go',
  25. },
  26. {
  27. link: 'https://docs.sentry.io/platforms/go/guides/gin/',
  28. type: 'framework',
  29. id: 'go-gin',
  30. name: t('Gin'),
  31. language: 'go',
  32. },
  33. {
  34. link: 'https://docs.sentry.io/platforms/go/guides/http/',
  35. type: 'framework',
  36. id: 'go-http',
  37. name: t('Net/Http'),
  38. language: 'go',
  39. },
  40. {
  41. link: 'https://docs.sentry.io/platforms/go/guides/iris',
  42. type: 'framework',
  43. id: 'go-iris',
  44. name: t('Iris'),
  45. language: 'go',
  46. },
  47. {
  48. link: 'https://docs.sentry.io/platforms/go/guides/martini/',
  49. type: 'framework',
  50. id: 'go-martini',
  51. name: t('Martini'),
  52. language: 'go',
  53. },
  54. {
  55. link: 'https://docs.sentry.io/platforms/go/guides/negroni/',
  56. type: 'framework',
  57. id: 'go-negroni',
  58. name: t('Negroni'),
  59. language: 'go',
  60. },
  61. ];
  62. const javaScriptPlatforms: PlatformIntegration[] = [
  63. {
  64. id: 'javascript-angular',
  65. name: 'Angular',
  66. type: 'framework',
  67. language: 'javascript',
  68. link: 'https://docs.sentry.io/platforms/javascript/guides/angular/',
  69. },
  70. {
  71. id: 'javascript',
  72. name: 'Browser JavaScript',
  73. type: 'language',
  74. language: 'javascript',
  75. link: 'https://docs.sentry.io/platforms/javascript/',
  76. },
  77. {
  78. id: 'javascript-ember',
  79. name: 'Ember',
  80. type: 'framework',
  81. language: 'javascript',
  82. link: 'https://docs.sentry.io/platforms/javascript/guides/ember/',
  83. },
  84. {
  85. id: 'javascript-gatsby',
  86. name: 'Gatsby',
  87. type: 'framework',
  88. language: 'javascript',
  89. link: 'https://docs.sentry.io/platforms/javascript/guides/gatsby/',
  90. },
  91. {
  92. id: 'javascript-nextjs',
  93. name: 'Next.js',
  94. type: 'framework',
  95. language: 'javascript',
  96. link: 'https://docs.sentry.io/platforms/javascript/guides/nextjs/',
  97. },
  98. {
  99. id: 'javascript-react',
  100. name: 'React',
  101. type: 'framework',
  102. language: 'javascript',
  103. link: 'https://docs.sentry.io/platforms/javascript/guides/react/',
  104. },
  105. {
  106. id: 'javascript-remix',
  107. name: 'Remix',
  108. type: 'framework',
  109. language: 'javascript',
  110. link: 'https://docs.sentry.io/platforms/javascript/guides/remix/',
  111. },
  112. {
  113. id: 'javascript-svelte',
  114. name: 'Svelte',
  115. type: 'framework',
  116. language: 'javascript',
  117. link: 'https://docs.sentry.io/platforms/javascript/guides/svelte/',
  118. },
  119. {
  120. id: 'javascript-sveltekit',
  121. name: 'SvelteKit',
  122. type: 'framework',
  123. language: 'javascript',
  124. link: 'https://docs.sentry.io/platforms/javascript/guides/sveltekit/',
  125. },
  126. {
  127. id: 'javascript-vue',
  128. name: 'Vue',
  129. type: 'framework',
  130. language: 'javascript',
  131. link: 'https://docs.sentry.io/platforms/javascript/guides/vue/',
  132. },
  133. {
  134. id: 'bun',
  135. name: 'Bun',
  136. type: 'language',
  137. language: 'bun',
  138. link: 'https://docs.sentry.io/platforms/javascript/guides/bun/',
  139. },
  140. ];
  141. const javaPlatforms: PlatformIntegration[] = [
  142. {
  143. id: 'java',
  144. name: 'Java',
  145. type: 'language',
  146. language: 'java',
  147. link: 'https://docs.sentry.io/platforms/java/',
  148. },
  149. {
  150. id: 'java-log4j2',
  151. name: 'Log4j 2.x',
  152. type: 'framework',
  153. language: 'java',
  154. link: 'https://docs.sentry.io/platforms/java/guides/log4j2/',
  155. },
  156. {
  157. id: 'java-logback',
  158. name: 'Logback',
  159. type: 'framework',
  160. language: 'java',
  161. link: 'https://docs.sentry.io/platforms/java/guides/logback/',
  162. },
  163. {
  164. id: 'java-spring',
  165. name: 'Spring',
  166. type: 'framework',
  167. language: 'java',
  168. link: 'https://https://docs.sentry.io/platforms/java/guides/spring/',
  169. },
  170. {
  171. id: 'java-spring-boot',
  172. name: 'Spring Boot',
  173. type: 'framework',
  174. language: 'java',
  175. link: 'https://docs.sentry.io/platforms/java/guides/spring-boot/',
  176. },
  177. ];
  178. const pythonPlatforms: PlatformIntegration[] = [
  179. {
  180. id: 'python-aiohttp',
  181. name: 'AIOHTTP',
  182. type: 'framework',
  183. language: 'python',
  184. link: 'https://docs.sentry.io/platforms/python/guides/aiohttp/',
  185. },
  186. {
  187. id: 'python-asgi',
  188. name: 'ASGI',
  189. type: 'framework',
  190. language: 'python',
  191. link: 'https://docs.sentry.io/platforms/python/guides/asgi/',
  192. },
  193. {
  194. id: 'python-awslambda',
  195. name: 'AWS Lambda (Python)',
  196. type: 'framework',
  197. language: 'python',
  198. link: 'https://docs.sentry.io/platforms/python/guides/aws-lambda/',
  199. },
  200. {
  201. id: 'python-bottle',
  202. name: 'Bottle',
  203. type: 'framework',
  204. language: 'python',
  205. link: 'https://docs.sentry.io/platforms/python/guides/bottle/',
  206. },
  207. {
  208. id: 'python-celery',
  209. name: 'Celery',
  210. type: 'library',
  211. language: 'python',
  212. link: 'https://docs.sentry.io/platforms/python/guides/celery/',
  213. },
  214. {
  215. id: 'python-chalice',
  216. name: 'Chalice',
  217. type: 'framework',
  218. language: 'python',
  219. link: 'https://docs.sentry.io/platforms/python/guides/chalice/',
  220. },
  221. {
  222. id: 'python-django',
  223. name: 'Django',
  224. type: 'framework',
  225. language: 'python',
  226. link: 'https://docs.sentry.io/platforms/python/guides/django/',
  227. },
  228. {
  229. id: 'python-falcon',
  230. name: 'Falcon',
  231. type: 'framework',
  232. language: 'python',
  233. link: 'https://docs.sentry.io/platforms/python/guides/falcon/',
  234. },
  235. {
  236. id: 'python-fastapi',
  237. name: 'FastAPI',
  238. type: 'framework',
  239. language: 'python',
  240. link: 'https://docs.sentry.io/platforms/python/guides/fastapi/',
  241. },
  242. {
  243. id: 'python-flask',
  244. name: 'Flask',
  245. type: 'framework',
  246. language: 'python',
  247. link: 'https://docs.sentry.io/platforms/python/guides/flask/',
  248. },
  249. {
  250. id: 'python-gcpfunctions',
  251. name: 'Google Cloud Functions (Python)',
  252. type: 'framework',
  253. language: 'python',
  254. link: 'https://docs.sentry.io/platforms/python/guides/gcp-functions/',
  255. },
  256. {
  257. id: 'python-pymongo',
  258. name: 'PyMongo',
  259. type: 'library',
  260. language: 'python',
  261. link: 'https://docs.sentry.io/platforms/python/guides/pymongo/',
  262. },
  263. {
  264. id: 'python-pylons',
  265. name: 'Pylons',
  266. type: 'framework',
  267. language: 'python',
  268. link: 'https://docs.sentry.io/platforms/python/legacy-sdk/integrations/pylons/',
  269. },
  270. {
  271. id: 'python-pyramid',
  272. name: 'Pyramid',
  273. type: 'framework',
  274. language: 'python',
  275. link: 'https://docs.sentry.io/platforms/python/pyramid/',
  276. },
  277. {
  278. id: 'python',
  279. name: 'Python',
  280. type: 'language',
  281. language: 'python',
  282. link: 'https://docs.sentry.io/platforms/python/',
  283. },
  284. {
  285. id: 'python-quart',
  286. name: 'Quart',
  287. type: 'framework',
  288. language: 'python',
  289. link: 'https://docs.sentry.io/platforms/python/guides/quart/',
  290. },
  291. {
  292. id: 'python-rq',
  293. name: 'RQ (Redis Queue)',
  294. type: 'library',
  295. language: 'python',
  296. link: 'https://docs.sentry.io/platforms/python/guides/rq/',
  297. },
  298. {
  299. id: 'python-sanic',
  300. name: 'Sanic',
  301. type: 'framework',
  302. language: 'python',
  303. link: 'https://docs.sentry.io/platforms/python/guides/sanic/',
  304. },
  305. {
  306. id: 'python-serverless',
  307. name: 'Serverless',
  308. type: 'framework',
  309. language: 'python',
  310. link: 'https://docs.sentry.io/platforms/python/guides/serverless/',
  311. },
  312. {
  313. id: 'python-starlette',
  314. name: 'Starlette',
  315. type: 'framework',
  316. language: 'python',
  317. link: 'https://docs.sentry.io/platforms/python/guides/starlette/',
  318. },
  319. {
  320. id: 'python-tornado',
  321. name: 'Tornado',
  322. type: 'framework',
  323. language: 'python',
  324. link: 'https://docs.sentry.io/platforms/python/guides/tornado/',
  325. },
  326. {
  327. id: 'python-tryton',
  328. name: 'Tryton',
  329. type: 'framework',
  330. language: 'python',
  331. link: 'https://docs.sentry.io/platforms/python/guides/tryton/',
  332. },
  333. {
  334. id: 'python-wsgi',
  335. name: 'WSGI',
  336. type: 'framework',
  337. language: 'python',
  338. link: 'https://docs.sentry.io/platforms/python/guides/wsgi/',
  339. },
  340. ];
  341. const phpPlatforms: PlatformIntegration[] = [
  342. {
  343. id: 'php-laravel',
  344. name: 'Laravel',
  345. type: 'framework',
  346. language: 'php',
  347. link: 'https://docs.sentry.io/platforms/php/guides/laravel/',
  348. },
  349. {
  350. id: 'php',
  351. name: 'PHP',
  352. type: 'language',
  353. language: 'php',
  354. link: 'https://docs.sentry.io/platforms/php/',
  355. },
  356. {
  357. id: 'php-symfony',
  358. name: 'Symfony',
  359. type: 'framework',
  360. language: 'php',
  361. link: 'https://docs.sentry.io/platforms/php/guides/symfony/',
  362. },
  363. ];
  364. const nodePlatforms: PlatformIntegration[] = [
  365. {
  366. id: 'node-awslambda',
  367. name: 'AWS Lambda (Node)',
  368. type: 'framework',
  369. language: 'node',
  370. link: 'https://docs.sentry.io/platforms/node/guides/aws-lambda/',
  371. },
  372. {
  373. id: 'node-azurefunctions',
  374. name: 'Azure Functions (Node)',
  375. type: 'framework',
  376. language: 'node',
  377. link: 'https://docs.sentry.io/platforms/node/guides/azure-functions/',
  378. },
  379. {
  380. id: 'node-connect',
  381. name: 'Connect',
  382. type: 'framework',
  383. language: 'node',
  384. link: 'https://docs.sentry.io/platforms/node/guides/connect/',
  385. },
  386. {
  387. id: 'node-express',
  388. name: 'Express',
  389. type: 'framework',
  390. language: 'node',
  391. link: 'https://docs.sentry.io/platforms/node/guides/express/',
  392. },
  393. {
  394. id: 'node-gcpfunctions',
  395. name: 'Google Cloud Functions (Node)',
  396. type: 'framework',
  397. language: 'node',
  398. link: 'https://docs.sentry.io/platforms/node/guides/gcp-functions/',
  399. },
  400. {
  401. id: 'node-koa',
  402. name: 'Koa',
  403. type: 'framework',
  404. language: 'node',
  405. link: 'https://docs.sentry.io/platforms/node/guides/koa/',
  406. },
  407. {
  408. id: 'node',
  409. name: 'Node.js',
  410. type: 'language',
  411. language: 'node',
  412. link: 'https://docs.sentry.io/platforms/node/',
  413. },
  414. {
  415. id: 'node-serverlesscloud',
  416. name: 'Serverless (Node)',
  417. type: 'framework',
  418. language: 'node',
  419. link: 'https://docs.sentry.io/platforms/node/guides/serverless-cloud/',
  420. },
  421. ];
  422. const dotNetPlatforms: PlatformIntegration[] = [
  423. {
  424. id: 'dotnet',
  425. name: '.NET',
  426. type: 'language',
  427. language: 'dotnet',
  428. link: 'https://docs.sentry.io/platforms/dotnet/',
  429. },
  430. {
  431. id: 'dotnet-aspnet',
  432. name: 'ASP.NET',
  433. type: 'framework',
  434. language: 'dotnet',
  435. link: 'https://docs.sentry.io/platforms/dotnet/guides/aspnet/',
  436. },
  437. {
  438. id: 'dotnet-aspnetcore',
  439. name: 'ASP.NET Core',
  440. type: 'framework',
  441. language: 'dotnet',
  442. link: 'https://docs.sentry.io/platforms/dotnet/guides/aspnetcore/',
  443. },
  444. {
  445. id: 'dotnet-awslambda',
  446. name: 'AWS Lambda (.NET)',
  447. type: 'framework',
  448. language: 'dotnet',
  449. link: 'https://docs.sentry.io/platforms/dotnet/guides/aws-lambda/',
  450. },
  451. {
  452. id: 'dotnet-gcpfunctions',
  453. name: 'Google Cloud Functions (.NET)',
  454. type: 'framework',
  455. language: 'dotnet',
  456. link: 'https://docs.sentry.io/platforms/dotnet/guides/google-cloud-functions/',
  457. },
  458. {
  459. id: 'dotnet-maui',
  460. name: 'Multi-platform App UI (MAUI)',
  461. type: 'framework',
  462. language: 'dotnet',
  463. link: 'https://docs.sentry.io/platforms/dotnet/guides/maui/',
  464. },
  465. {
  466. id: 'dotnet-uwp',
  467. name: 'UWP',
  468. type: 'framework',
  469. language: 'dotnet',
  470. link: 'https://docs.sentry.io/platforms/dotnet/guides/uwp/',
  471. },
  472. {
  473. id: 'dotnet-wpf',
  474. name: 'WPF',
  475. type: 'framework',
  476. language: 'dotnet',
  477. link: 'https://docs.sentry.io/platforms/dotnet/guides/wpf/',
  478. },
  479. {
  480. id: 'dotnet-winforms',
  481. name: 'Windows Forms',
  482. type: 'framework',
  483. language: 'dotnet',
  484. link: 'https://docs.sentry.io/platforms/dotnet/guides/winforms/',
  485. },
  486. {
  487. id: 'dotnet-xamarin',
  488. name: 'Xamarin',
  489. type: 'framework',
  490. language: 'dotnet',
  491. link: 'https://docs.sentry.io/platforms/dotnet/guides/xamarin/',
  492. },
  493. ];
  494. const applePlatforms: PlatformIntegration[] = [
  495. {
  496. id: 'apple',
  497. name: 'Apple',
  498. type: 'language',
  499. language: 'apple',
  500. link: 'https://docs.sentry.io/platforms/apple/',
  501. },
  502. {
  503. id: 'apple-ios',
  504. name: 'iOS',
  505. type: 'language',
  506. language: 'apple',
  507. link: 'https://docs.sentry.io/platforms/apple/',
  508. },
  509. {
  510. id: 'apple-macos',
  511. name: 'macOS',
  512. type: 'language',
  513. language: 'apple',
  514. link: 'https://docs.sentry.io/platforms/apple/',
  515. },
  516. ];
  517. const rubyPlatforms: PlatformIntegration[] = [
  518. {
  519. id: 'ruby-rack',
  520. name: 'Rack Middleware',
  521. type: 'framework',
  522. language: 'ruby',
  523. link: 'https://docs.sentry.io/platforms/ruby/guides/rack/',
  524. },
  525. {
  526. id: 'ruby-rails',
  527. name: 'Rails',
  528. type: 'framework',
  529. language: 'ruby',
  530. link: 'https://docs.sentry.io/platforms/ruby/guides/rails/',
  531. },
  532. {
  533. id: 'ruby',
  534. name: 'Ruby',
  535. type: 'language',
  536. language: 'ruby',
  537. link: 'https://docs.sentry.io/platforms/ruby/',
  538. },
  539. ];
  540. const nativePlatforms: PlatformIntegration[] = [
  541. {
  542. id: 'native',
  543. name: 'Native',
  544. type: 'language',
  545. language: 'native',
  546. link: 'https://docs.sentry.io/platforms/native/',
  547. },
  548. {
  549. id: 'native-qt',
  550. name: 'Qt',
  551. type: 'framework',
  552. language: 'native',
  553. link: 'https://docs.sentry.io/platforms/native/guides/qt/',
  554. },
  555. ];
  556. const miscPlatforms: PlatformIntegration[] = [
  557. {
  558. id: 'android',
  559. name: 'Android',
  560. type: 'framework',
  561. language: 'android',
  562. link: 'https://docs.sentry.io/platforms/android/',
  563. },
  564. {
  565. id: 'capacitor',
  566. name: 'Capacitor',
  567. type: 'framework',
  568. language: 'capacitor',
  569. link: 'https://docs.sentry.io/platforms/javascript/guides/capacitor/',
  570. },
  571. {
  572. id: 'cordova',
  573. name: 'Cordova',
  574. type: 'language',
  575. language: 'cordova',
  576. link: 'https://docs.sentry.io/platforms/javascript/guides/cordova/',
  577. },
  578. {
  579. id: 'dart',
  580. name: 'Dart',
  581. type: 'framework',
  582. language: 'dart',
  583. link: 'https://docs.sentry.io/platforms/dart/',
  584. },
  585. {
  586. id: 'electron',
  587. name: 'Electron',
  588. type: 'language',
  589. language: 'electron',
  590. link: 'https://docs.sentry.io/platforms/javascript/guides/electron/',
  591. },
  592. {
  593. id: 'elixir',
  594. name: 'Elixir',
  595. type: 'language',
  596. language: 'elixir',
  597. link: 'https://docs.sentry.io/platforms/elixir/',
  598. },
  599. {
  600. id: 'flutter',
  601. name: 'Flutter',
  602. type: 'framework',
  603. language: 'flutter',
  604. link: 'https://docs.sentry.io/platforms/flutter/',
  605. },
  606. {
  607. id: 'ionic',
  608. name: 'Ionic',
  609. type: 'framework',
  610. language: 'ionic',
  611. link: 'https://docs.sentry.io/platforms/javascript/guides/capacitor/',
  612. },
  613. {
  614. id: 'kotlin',
  615. name: 'Kotlin',
  616. type: 'language',
  617. language: 'kotlin',
  618. link: 'https://docs.sentry.io/platforms/kotlin/',
  619. },
  620. {
  621. id: 'minidump',
  622. name: 'Minidump',
  623. type: 'framework',
  624. language: 'minidump',
  625. link: 'https://docs.sentry.io/platforms/native/minidump/',
  626. },
  627. {
  628. id: 'rust',
  629. name: 'Rust',
  630. type: 'language',
  631. language: 'rust',
  632. link: 'https://docs.sentry.io/platforms/rust/',
  633. },
  634. {
  635. id: 'unity',
  636. name: 'Unity',
  637. type: 'framework',
  638. language: 'unity',
  639. link: 'https://docs.sentry.io/platforms/unity/',
  640. },
  641. {
  642. id: 'unreal',
  643. name: 'Unreal Engine',
  644. type: 'framework',
  645. language: 'unreal',
  646. link: 'https://docs.sentry.io/platforms/unreal/',
  647. },
  648. {
  649. id: 'react-native',
  650. name: 'React Native',
  651. type: 'language',
  652. language: 'react-native',
  653. link: 'https://docs.sentry.io/platforms/react-native/',
  654. },
  655. ];
  656. export const otherPlatform: PlatformIntegration = {
  657. id: 'other',
  658. name: 'Other',
  659. type: 'language',
  660. language: 'other',
  661. link: 'https://docs.sentry.io/platforms/',
  662. };
  663. // If you update items of this list, please remember to update the "GETTING_STARTED_DOCS_PLATFORMS" list
  664. // in the 'src/sentry/models/project.py' file. This way, they'll work together correctly.
  665. // Otherwise, creating a project will cause an error in the backend, saying "Invalid platform".
  666. const allPlatforms = [
  667. ...javaScriptPlatforms,
  668. ...nodePlatforms,
  669. ...dotNetPlatforms,
  670. ...applePlatforms,
  671. ...javaPlatforms,
  672. ...pythonPlatforms,
  673. ...phpPlatforms,
  674. ...goPlatforms,
  675. ...rubyPlatforms,
  676. ...nativePlatforms,
  677. ...miscPlatforms,
  678. otherPlatform,
  679. ];
  680. /**
  681. * Array of all platforms that are displayed in the project creation flow.
  682. */
  683. const platforms = sortBy(allPlatforms, 'id');
  684. export default platforms;