settings.ts 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  1. import {t} from 'sentry/locale';
  2. import {
  3. DATA_TYPE as RESOURCE_DATA_TYPE,
  4. DATA_TYPE_PLURAL as RESOURCE_DATA_TYPE_PLURAL,
  5. MODULE_DOC_LINK as RESOURCES_MODULE_DOC_LINK,
  6. MODULE_FEATURES as RESOURCE_MODULE_FEATURES,
  7. MODULE_TITLE as RESOURCES_MODULE_TITLE,
  8. } from 'sentry/views/insights/browser/resources/settings';
  9. import {
  10. DATA_TYPE as WEB_VITALS_DATA_TYPE,
  11. DATA_TYPE_PLURAL as WEB_VITALS_DATA_TYPE_PLURAL,
  12. MODULE_DOC_LINK as VITALS_MODULE_DOC_LINK,
  13. MODULE_FEATURES as VITALS_MODULE_FEATURES,
  14. MODULE_TITLE as VITALS_MODULE_TITLE,
  15. } from 'sentry/views/insights/browser/webVitals/settings';
  16. import {
  17. DATA_TYPE as CACHE_DATA_TYPE,
  18. DATA_TYPE_PLURAL as CACHE_DATA_TYPE_PLURAL,
  19. MODULE_DOC_LINK as CACHE_MODULE_DOC_LINK,
  20. MODULE_FEATURES as CACHE_MODULE_FEATURES,
  21. MODULE_TITLE as CACHE_MODULE_TITLE,
  22. } from 'sentry/views/insights/cache/settings';
  23. import {
  24. DATA_TYPE as CRONS_DATA_TYPE,
  25. DATA_TYPE_PLURAL as CRONS_DATA_TYPE_PLURAL,
  26. MODULE_DOC_LINK as CRONS_MODULE_DOC_LINK,
  27. MODULE_FEATURES as CRONS_MODULE_FEATURES,
  28. MODULE_TITLE as CRONS_MODULE_TITLE,
  29. MODULE_VISIBLE_FEATURES as CRONS_MODULE_VISIBLE_FEATURES,
  30. } from 'sentry/views/insights/crons/settings';
  31. import {
  32. DATA_TYPE as DB_DATA_TYPE,
  33. DATA_TYPE_PLURAL as DB_DATA_TYPE_PLURAL,
  34. MODULE_DOC_LINK as DB_MODULE_DOC_LINK,
  35. MODULE_FEATURES as DB_MODULE_FEATURES,
  36. MODULE_TITLE as DB_MODULE_TITLE,
  37. } from 'sentry/views/insights/database/settings';
  38. import {
  39. DATA_TYPE as HTTP_DATA_TYPE,
  40. DATA_TYPE_PLURAL as HTTP_DATA_TYPE_PLURAL,
  41. MODULE_DOC_LINK as HTTP_MODULE_DOC_LINK,
  42. MODULE_FEATURES as HTTP_MODULE_FEATURES,
  43. MODULE_TITLE as HTTP_MODULE_TITLE,
  44. } from 'sentry/views/insights/http/settings';
  45. import {
  46. DATA_TYPE as AI_DATA_TYPE,
  47. DATA_TYPE_PLURAL as AI_DATA_TYPE_PLURAL,
  48. MODULE_DOC_LINK as AI_MODULE_DOC_LINK,
  49. MODULE_FEATURES as AI_MODULE_FEATURES,
  50. MODULE_TITLE as AI_MODULE_TITLE,
  51. } from 'sentry/views/insights/llmMonitoring/settings';
  52. import {
  53. DATA_TYPE as APP_STARTS_DATA_TYPE,
  54. DATA_TYPE_PLURAL as APP_STARTS_DATA_TYPE_PLURAL,
  55. MODULE_DOC_LINK as APP_STARTS_MODULE_DOC_LINK,
  56. MODULE_FEATURES as APP_STARTS_MODULE_FEATURES,
  57. MODULE_TITLE as APP_STARTS_MODULE_TITLE,
  58. } from 'sentry/views/insights/mobile/appStarts/settings';
  59. import {
  60. DATA_TYPE as SCREEN_LOAD_DATA_TYPE,
  61. DATA_TYPE_PLURAL as SCREEN_LOAD_DATA_TYPE_PLURAL,
  62. MODULE_DOC_LINK as SCREEN_LOADS_MODULE_DOC_LINK,
  63. MODULE_FEATURES as SCREEN_LOADS_MODULE_FEATURES,
  64. MODULE_TITLE as SCREEN_LOADS_MODULE_TITLE,
  65. } from 'sentry/views/insights/mobile/screenload/settings';
  66. import {
  67. DATA_TYPE as SCREEN_RENDERING_DATA_TYPE,
  68. DATA_TYPE_PLURAL as SCREEN_RENDERING_DATA_TYPE_PLURAL,
  69. MODULE_DOC_LINK as SCREEN_RENDERING_MODULE_DOC_LINK,
  70. MODULE_FEATURES as SCREEN_RENDERING_MODULE_FEATURES,
  71. MODULE_TITLE as SCREEN_RENDERING_MODULE_TITLE,
  72. } from 'sentry/views/insights/mobile/screenRendering/settings';
  73. import {
  74. DATA_TYPE as MOBILE_SCREENS_DATA_TYPE,
  75. DATA_TYPE_PLURAL as MOBILE_SCREENS_DATA_TYPE_PLURAL,
  76. MODULE_DOC_LINK as MODULE_SCREENS_DOC_LINK,
  77. MODULE_FEATURE as MOBILE_SCREENS_MODULE_FEATURE,
  78. MODULE_TITLE as MOBILE_SCREENS_MODULE_TITLE,
  79. } from 'sentry/views/insights/mobile/screens/settings';
  80. import {
  81. MODULE_DOC_LINK as MODULE_UI_DOC_LINK,
  82. MODULE_FEATURES as MOBILE_UI_MODULE_FEATURES,
  83. MODULE_TITLE as MOBILE_UI_MODULE_TITLE,
  84. } from 'sentry/views/insights/mobile/ui/settings';
  85. import {
  86. DATA_TYPE as QUEUE_DATA_TYPE,
  87. DATA_TYPE_PLURAL as QUEUE_DATA_TYPE_PLURAL,
  88. MODULE_DOC_LINK as QUEUE_MODULE_DOC_LINK,
  89. MODULE_FEATURES as QUEUE_MODULE_FEATURES,
  90. MODULE_TITLE as QUEUE_MODULE_TITLE,
  91. } from 'sentry/views/insights/queues/settings';
  92. import {
  93. DATA_TYPE as SESSIONS_DATA_TYPE,
  94. DATA_TYPE_PLURAL as SESSIONS_DATA_TYPE_PLURAL,
  95. MODULE_DOC_LINK as SESSIONS_MODULE_DOC_LINK,
  96. MODULE_TITLE as SESSIONS_MODULE_TITLE,
  97. MODULE_VISIBLE_FEATURES as SESSIONS_MODULE_VISIBLE_FEATURES,
  98. } from 'sentry/views/insights/sessions/settings';
  99. import {
  100. DATA_TYPE as UPTIME_DATA_TYPE,
  101. DATA_TYPE_PLURAL as UPTIME_DATA_TYPE_PLURAL,
  102. MODULE_DOC_LINK as UPTIME_MODULE_DOC_LINK,
  103. MODULE_FEATURES as UPTIME_MODULE_FEATURES,
  104. MODULE_TITLE as UPTIME_MODULE_TITLE,
  105. MODULE_VISIBLE_FEATURES as UPTIME_MODULE_VISIBLE_FEATURES,
  106. } from 'sentry/views/insights/uptime/settings';
  107. import {ModuleName} from './types';
  108. export const INSIGHTS_TITLE = t('Insights');
  109. export const INSIGHTS_BASE_URL = 'insights';
  110. export const DEFAULT_INTERVAL = '10m';
  111. export const QUERY_DATE_RANGE_LIMIT = 7; // Maximum number of days that can be queried for, enabled by the `insights-query-date-range-limit` feature flag
  112. export const MODULE_TITLES: Record<ModuleName, string> = {
  113. [ModuleName.DB]: DB_MODULE_TITLE,
  114. [ModuleName.HTTP]: HTTP_MODULE_TITLE,
  115. [ModuleName.CACHE]: CACHE_MODULE_TITLE,
  116. [ModuleName.QUEUE]: QUEUE_MODULE_TITLE,
  117. [ModuleName.SCREEN_LOAD]: SCREEN_LOADS_MODULE_TITLE,
  118. [ModuleName.APP_START]: APP_STARTS_MODULE_TITLE,
  119. [ModuleName.VITAL]: VITALS_MODULE_TITLE,
  120. [ModuleName.RESOURCE]: RESOURCES_MODULE_TITLE,
  121. [ModuleName.AI]: AI_MODULE_TITLE,
  122. [ModuleName.MOBILE_UI]: MOBILE_UI_MODULE_TITLE,
  123. [ModuleName.MOBILE_VITALS]: MOBILE_SCREENS_MODULE_TITLE,
  124. [ModuleName.SCREEN_RENDERING]: SCREEN_RENDERING_MODULE_TITLE,
  125. [ModuleName.UPTIME]: UPTIME_MODULE_TITLE,
  126. [ModuleName.CRONS]: CRONS_MODULE_TITLE,
  127. [ModuleName.SESSIONS]: SESSIONS_MODULE_TITLE,
  128. [ModuleName.OTHER]: '',
  129. };
  130. export const MODULE_DATA_TYPES: Record<ModuleName, string> = {
  131. [ModuleName.DB]: DB_DATA_TYPE,
  132. [ModuleName.HTTP]: HTTP_DATA_TYPE,
  133. [ModuleName.CACHE]: CACHE_DATA_TYPE,
  134. [ModuleName.QUEUE]: QUEUE_DATA_TYPE,
  135. [ModuleName.SCREEN_LOAD]: SCREEN_LOAD_DATA_TYPE,
  136. [ModuleName.APP_START]: APP_STARTS_DATA_TYPE,
  137. [ModuleName.VITAL]: WEB_VITALS_DATA_TYPE,
  138. [ModuleName.RESOURCE]: RESOURCE_DATA_TYPE,
  139. [ModuleName.AI]: AI_DATA_TYPE,
  140. [ModuleName.MOBILE_UI]: t('Mobile UI'),
  141. [ModuleName.MOBILE_VITALS]: MOBILE_SCREENS_DATA_TYPE,
  142. [ModuleName.SCREEN_RENDERING]: SCREEN_RENDERING_DATA_TYPE,
  143. [ModuleName.UPTIME]: UPTIME_DATA_TYPE,
  144. [ModuleName.CRONS]: CRONS_DATA_TYPE,
  145. [ModuleName.SESSIONS]: SESSIONS_DATA_TYPE,
  146. [ModuleName.OTHER]: '',
  147. };
  148. export const MODULE_DATA_TYPES_PLURAL: Record<ModuleName, string> = {
  149. [ModuleName.DB]: DB_DATA_TYPE_PLURAL,
  150. [ModuleName.HTTP]: HTTP_DATA_TYPE_PLURAL,
  151. [ModuleName.CACHE]: CACHE_DATA_TYPE_PLURAL,
  152. [ModuleName.QUEUE]: QUEUE_DATA_TYPE_PLURAL,
  153. [ModuleName.SCREEN_LOAD]: SCREEN_LOAD_DATA_TYPE_PLURAL,
  154. [ModuleName.APP_START]: APP_STARTS_DATA_TYPE_PLURAL,
  155. [ModuleName.VITAL]: WEB_VITALS_DATA_TYPE_PLURAL,
  156. [ModuleName.RESOURCE]: RESOURCE_DATA_TYPE_PLURAL,
  157. [ModuleName.AI]: AI_DATA_TYPE_PLURAL,
  158. [ModuleName.MOBILE_UI]: t('Mobile UI'),
  159. [ModuleName.MOBILE_VITALS]: MOBILE_SCREENS_DATA_TYPE_PLURAL,
  160. [ModuleName.SCREEN_RENDERING]: SCREEN_RENDERING_DATA_TYPE_PLURAL,
  161. [ModuleName.UPTIME]: UPTIME_DATA_TYPE_PLURAL,
  162. [ModuleName.CRONS]: CRONS_DATA_TYPE_PLURAL,
  163. [ModuleName.SESSIONS]: SESSIONS_DATA_TYPE_PLURAL,
  164. [ModuleName.OTHER]: '',
  165. };
  166. export const MODULE_PRODUCT_DOC_LINKS: Record<ModuleName, string> = {
  167. [ModuleName.DB]: DB_MODULE_DOC_LINK,
  168. [ModuleName.HTTP]: HTTP_MODULE_DOC_LINK,
  169. [ModuleName.CACHE]: CACHE_MODULE_DOC_LINK,
  170. [ModuleName.QUEUE]: QUEUE_MODULE_DOC_LINK,
  171. [ModuleName.SCREEN_LOAD]: SCREEN_LOADS_MODULE_DOC_LINK,
  172. [ModuleName.APP_START]: APP_STARTS_MODULE_DOC_LINK,
  173. [ModuleName.VITAL]: VITALS_MODULE_DOC_LINK,
  174. [ModuleName.RESOURCE]: RESOURCES_MODULE_DOC_LINK,
  175. [ModuleName.AI]: AI_MODULE_DOC_LINK,
  176. [ModuleName.MOBILE_UI]: MODULE_UI_DOC_LINK,
  177. [ModuleName.MOBILE_VITALS]: MODULE_SCREENS_DOC_LINK,
  178. [ModuleName.SCREEN_RENDERING]: SCREEN_RENDERING_MODULE_DOC_LINK,
  179. [ModuleName.UPTIME]: UPTIME_MODULE_DOC_LINK,
  180. [ModuleName.CRONS]: CRONS_MODULE_DOC_LINK,
  181. [ModuleName.SESSIONS]: SESSIONS_MODULE_DOC_LINK,
  182. [ModuleName.OTHER]: '',
  183. };
  184. /**
  185. * Features that control gating of modules, falling back to upsell style hooks.
  186. */
  187. export const MODULE_FEATURE_MAP: Record<ModuleName, string[]> = {
  188. [ModuleName.DB]: DB_MODULE_FEATURES,
  189. [ModuleName.APP_START]: APP_STARTS_MODULE_FEATURES,
  190. [ModuleName.HTTP]: HTTP_MODULE_FEATURES,
  191. [ModuleName.RESOURCE]: RESOURCE_MODULE_FEATURES,
  192. [ModuleName.VITAL]: VITALS_MODULE_FEATURES,
  193. [ModuleName.CACHE]: CACHE_MODULE_FEATURES,
  194. [ModuleName.QUEUE]: QUEUE_MODULE_FEATURES,
  195. [ModuleName.AI]: AI_MODULE_FEATURES,
  196. [ModuleName.SCREEN_LOAD]: SCREEN_LOADS_MODULE_FEATURES,
  197. [ModuleName.MOBILE_UI]: MOBILE_UI_MODULE_FEATURES,
  198. [ModuleName.MOBILE_VITALS]: [MOBILE_SCREENS_MODULE_FEATURE],
  199. [ModuleName.SCREEN_RENDERING]: SCREEN_RENDERING_MODULE_FEATURES,
  200. [ModuleName.UPTIME]: UPTIME_MODULE_FEATURES,
  201. [ModuleName.CRONS]: CRONS_MODULE_FEATURES,
  202. [ModuleName.SESSIONS]: [],
  203. [ModuleName.OTHER]: [],
  204. };
  205. /**
  206. * Features that control the visibility of modules.
  207. */
  208. export const MODULE_FEATURE_VISIBLE_MAP: Record<ModuleName, string[]> = {
  209. [ModuleName.DB]: ['insights-entry-points'],
  210. [ModuleName.APP_START]: ['insights-entry-points'],
  211. [ModuleName.HTTP]: ['insights-entry-points'],
  212. [ModuleName.RESOURCE]: ['insights-entry-points'],
  213. [ModuleName.VITAL]: ['insights-entry-points'],
  214. [ModuleName.CACHE]: ['insights-entry-points'],
  215. [ModuleName.QUEUE]: ['insights-entry-points'],
  216. [ModuleName.AI]: ['insights-entry-points'],
  217. [ModuleName.SCREEN_LOAD]: ['insights-entry-points'],
  218. [ModuleName.MOBILE_UI]: ['insights-entry-points'],
  219. [ModuleName.MOBILE_VITALS]: ['insights-entry-points'],
  220. [ModuleName.SCREEN_RENDERING]: ['insights-entry-points'],
  221. // XXX(epurkhiser): Uptime and Crons are NOT gated by the entry-points flag
  222. [ModuleName.UPTIME]: [...UPTIME_MODULE_VISIBLE_FEATURES],
  223. [ModuleName.CRONS]: [...CRONS_MODULE_VISIBLE_FEATURES],
  224. [ModuleName.SESSIONS]: ['insights-entry-points', ...SESSIONS_MODULE_VISIBLE_FEATURES],
  225. [ModuleName.OTHER]: ['insights-entry-points'],
  226. };
  227. /**
  228. * Modules that are considered "new", e.g. used to show a badge on the tab.
  229. */
  230. export const MODULES_CONSIDERED_NEW: Set<ModuleName> = new Set([
  231. ModuleName.MOBILE_VITALS,
  232. ]);
  233. export const INGESTION_DELAY = 90;