Skip to content

Commit fd0ffd9

Browse files
core: frontend: Add sentry
Signed-off-by: Patrick José Pereira <[email protected]>
1 parent 9156840 commit fd0ffd9

File tree

4 files changed

+178
-149
lines changed

4 files changed

+178
-149
lines changed

core/frontend/bun.lockb

3.87 KB
Binary file not shown.

core/frontend/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
"dependencies": {
1717
"@google/model-viewer": "^3.0.0",
1818
"@mdi/font": "^7.1.96",
19+
"@sentry/vue": "^8.25.0",
1920
"@types/file-saver": "^2.0.5",
2021
"@types/lodash": "^4.14.175",
2122
"@types/marked": "^4.0.7",

core/frontend/src/main.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/// <reference types="vite/client" />
12
import './cosmos'
23
import '@/style/css/vuetify-global.css'
34
import '@/style/css/animations.css'
@@ -9,6 +10,7 @@ import JsonViewer from 'vue-json-viewer'
910
import VueTooltipDirective from 'vue-tooltip-directive'
1011
import VueDraggable from 'vuedraggable'
1112
import Vuetify from 'vuetify/lib'
13+
import * as Sentry from "@sentry/vue";
1214

1315
import App from './App.vue'
1416
import DefaultTooltip from './components/common/DefaultTooltip.vue'
@@ -33,6 +35,28 @@ Vue.component('VTour', VTour)
3335
Vue.component('VStep', VStep)
3436
Vue.prototype.$tours = {}
3537

38+
const project = 'BlueOS'
39+
// Avoid logging local development
40+
const version = import.meta.env.VITE_APP_GIT_DESCRIBE
41+
const release = `${project}@${version}`
42+
console.info(`Running: ${release}`)
43+
if (version) {
44+
Sentry.init({
45+
Vue,
46+
release: release,
47+
dsn: "https://d87285a04a74f71aac13445f60506708@o4507696465707008.ingest.us.sentry.io/4507765318615040",
48+
integrations: [
49+
Sentry.browserTracingIntegration({ router }),
50+
Sentry.replayIntegration(),
51+
],
52+
tracesSampleRate: 1.0,
53+
tracePropagationTargets: [],
54+
replaysSessionSampleRate: 0.1,
55+
replaysOnErrorSampleRate: 1.0,
56+
transport: Sentry.makeBrowserOfflineTransport(Sentry.makeFetchTransport),
57+
})
58+
}
59+
3660
new Vue({
3761
router,
3862
store,

core/frontend/vite.config.js

Lines changed: 153 additions & 149 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import vue from '@vitejs/plugin-vue2'
22
import { VuetifyResolver } from 'unplugin-vue-components/resolvers'
33
import Components from 'unplugin-vue-components/vite'
4-
import { defineConfig } from 'vite'
4+
import { defineConfig, loadEnv } from 'vite'
55
import { VitePWA } from 'vite-plugin-pwa'
66
const { name } = require('./package.json')
77

@@ -16,160 +16,164 @@ const assert = require('assert');
1616
// TODO: check if it works with https once we have something that does
1717
assert.ok(SERVER_ADDRESS.startsWith('http://'), 'SERVER_ADDRESS must start with http://');
1818

19-
export default defineConfig({
20-
plugins: [
21-
vue(),
22-
VitePWA({
23-
registerType: 'autoUpdate',
24-
devOptions: {
25-
enabled: true,
19+
export default defineConfig(({ command, mode }) => {
20+
const env = loadEnv(mode, process.cwd(), '')
21+
return {
22+
plugins: [
23+
vue(),
24+
VitePWA({
25+
registerType: 'autoUpdate',
26+
devOptions: {
27+
enabled: true,
28+
},
29+
includeAssets: ['favicon.ico', 'apple-touch-icon.png', 'masked-icon.svg'],
30+
}),
31+
Components({
32+
// generate `components.d.ts` global declarations
33+
// https://github.com/antfu/unplugin-vue-components#typescript
34+
dts: true,
35+
// auto import for directives
36+
directives: false,
37+
// resolvers for custom components
38+
resolvers: [
39+
// Vuetify
40+
VuetifyResolver(),
41+
],
42+
// https://github.com/antfu/unplugin-vue-components#types-for-global-registered-components
43+
types: [
44+
{
45+
from: 'vue-router',
46+
names: ['RouterLink', 'RouterView'],
47+
},
48+
],
49+
// Vue version of project.
50+
version: 2.7,
51+
}),
52+
],
53+
assetsInclude: ['**/*.gif', '**/*.glb', '**/*.png', '**/*.svg', '**/assets/ArduPilot-Parameter-Repository**.json'],
54+
resolve: {
55+
extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue'],
56+
alias: {
57+
'@': path.resolve(__dirname, './src'),
2658
},
27-
includeAssets: ['favicon.ico', 'apple-touch-icon.png', 'masked-icon.svg'],
28-
}),
29-
Components({
30-
// generate `components.d.ts` global declarations
31-
// https://github.com/antfu/unplugin-vue-components#typescript
32-
dts: true,
33-
// auto import for directives
34-
directives: false,
35-
// resolvers for custom components
36-
resolvers: [
37-
// Vuetify
38-
VuetifyResolver(),
39-
],
40-
// https://github.com/antfu/unplugin-vue-components#types-for-global-registered-components
41-
types: [
42-
{
43-
from: 'vue-router',
44-
names: ['RouterLink', 'RouterView'],
45-
},
46-
],
47-
// Vue version of project.
48-
version: 2.7,
49-
}),
50-
],
51-
assetsInclude: ['**/*.gif', '**/*.glb', '**/*.png', '**/*.svg', '**/assets/ArduPilot-Parameter-Repository**.json'],
52-
resolve: {
53-
extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue'],
54-
alias: {
55-
'@': path.resolve(__dirname, './src'),
5659
},
57-
},
58-
build: {
59-
rollupOptions: {
60-
input: {
61-
main: path.resolve(__dirname, 'index.html'),
60+
build: {
61+
rollupOptions: {
62+
input: {
63+
main: path.resolve(__dirname, 'index.html'),
64+
},
6265
},
6366
},
64-
},
65-
define: {
66-
'process.env': {},
67-
},
68-
server: {
69-
port: 8080,
70-
proxy: {
71-
'^/status': {
72-
target: SERVER_ADDRESS,
73-
},
74-
'^/ardupilot-manager': {
75-
target: SERVER_ADDRESS,
76-
},
77-
'^/bag': {
78-
target: SERVER_ADDRESS,
79-
},
80-
'^/beacon': {
81-
target: SERVER_ADDRESS,
82-
},
83-
'^/bridget': {
84-
target: SERVER_ADDRESS,
85-
},
86-
'^/cable-guy': {
87-
target: SERVER_ADDRESS,
88-
},
89-
'^/commander': {
90-
target: SERVER_ADDRESS,
91-
},
92-
'^/docker': {
93-
target: SERVER_ADDRESS,
94-
},
95-
'^/file-browser': {
96-
target: SERVER_ADDRESS,
97-
},
98-
'^/helper': {
99-
target: SERVER_ADDRESS,
100-
},
101-
'^/upload': {
102-
target: SERVER_ADDRESS,
103-
},
104-
'^/kraken': {
105-
target: SERVER_ADDRESS,
106-
onProxyRes: (proxyRes, request, response) => {
107-
proxyRes.on('data', (data) => {
108-
response.write(data)
109-
})
110-
proxyRes.on('end', () => {
111-
response.end()
112-
})
67+
define: {
68+
'process.env': {},
69+
__APP_ENV__: env.APP_ENV,
70+
},
71+
server: {
72+
port: 8080,
73+
proxy: {
74+
'^/status': {
75+
target: SERVER_ADDRESS,
11376
},
114-
},
115-
'^/nmea-injector': {
116-
target: SERVER_ADDRESS,
117-
},
118-
'^/logviewer': {
119-
target: SERVER_ADDRESS,
120-
},
121-
'^/mavlink': {
122-
target: SERVER_ADDRESS,
123-
changeOrigin: true,
124-
ws: true,
125-
},
126-
'^/mavlink2rest': {
127-
target: SERVER_ADDRESS,
128-
changeOrigin: true,
129-
ws: true,
130-
},
131-
'^/mavlink-camera-manager': {
132-
target: SERVER_ADDRESS,
133-
},
134-
'^/network-test': {
135-
target: SERVER_ADDRESS,
136-
changeOrigin: true,
137-
ws: true,
138-
},
139-
'^/ping': {
140-
target: SERVER_ADDRESS,
141-
},
142-
'^/system-information': {
143-
target: SERVER_ADDRESS,
144-
changeOrigin: true,
145-
ws: true,
146-
},
147-
'^/terminal': {
148-
target: SERVER_ADDRESS,
149-
changeOrigin: true,
150-
ws: true,
151-
},
152-
'^/userdata': {
153-
target: SERVER_ADDRESS,
154-
changeOrigin: true,
155-
},
156-
'^/vehicles': {
157-
target: SERVER_ADDRESS,
158-
},
159-
'^/version-chooser': {
160-
target: SERVER_ADDRESS,
161-
onProxyRes: (proxyRes, request, response) => {
162-
proxyRes.on('data', (data) => {
163-
response.write(data)
164-
})
165-
proxyRes.on('end', () => {
166-
response.end()
167-
})
77+
'^/ardupilot-manager': {
78+
target: SERVER_ADDRESS,
79+
},
80+
'^/bag': {
81+
target: SERVER_ADDRESS,
82+
},
83+
'^/beacon': {
84+
target: SERVER_ADDRESS,
85+
},
86+
'^/bridget': {
87+
target: SERVER_ADDRESS,
88+
},
89+
'^/cable-guy': {
90+
target: SERVER_ADDRESS,
91+
},
92+
'^/commander': {
93+
target: SERVER_ADDRESS,
94+
},
95+
'^/docker': {
96+
target: SERVER_ADDRESS,
97+
},
98+
'^/file-browser': {
99+
target: SERVER_ADDRESS,
100+
},
101+
'^/helper': {
102+
target: SERVER_ADDRESS,
103+
},
104+
'^/upload': {
105+
target: SERVER_ADDRESS,
106+
},
107+
'^/kraken': {
108+
target: SERVER_ADDRESS,
109+
onProxyRes: (proxyRes, request, response) => {
110+
proxyRes.on('data', (data) => {
111+
response.write(data)
112+
})
113+
proxyRes.on('end', () => {
114+
response.end()
115+
})
116+
},
117+
},
118+
'^/nmea-injector': {
119+
target: SERVER_ADDRESS,
120+
},
121+
'^/logviewer': {
122+
target: SERVER_ADDRESS,
123+
},
124+
'^/mavlink': {
125+
target: SERVER_ADDRESS,
126+
changeOrigin: true,
127+
ws: true,
128+
},
129+
'^/mavlink2rest': {
130+
target: SERVER_ADDRESS,
131+
changeOrigin: true,
132+
ws: true,
133+
},
134+
'^/mavlink-camera-manager': {
135+
target: SERVER_ADDRESS,
136+
},
137+
'^/network-test': {
138+
target: SERVER_ADDRESS,
139+
changeOrigin: true,
140+
ws: true,
141+
},
142+
'^/ping': {
143+
target: SERVER_ADDRESS,
144+
},
145+
'^/system-information': {
146+
target: SERVER_ADDRESS,
147+
changeOrigin: true,
148+
ws: true,
149+
},
150+
'^/terminal': {
151+
target: SERVER_ADDRESS,
152+
changeOrigin: true,
153+
ws: true,
154+
},
155+
'^/userdata': {
156+
target: SERVER_ADDRESS,
157+
changeOrigin: true,
158+
},
159+
'^/vehicles': {
160+
target: SERVER_ADDRESS,
161+
},
162+
'^/version-chooser': {
163+
target: SERVER_ADDRESS,
164+
onProxyRes: (proxyRes, request, response) => {
165+
proxyRes.on('data', (data) => {
166+
response.write(data)
167+
})
168+
proxyRes.on('end', () => {
169+
response.end()
170+
})
171+
},
172+
},
173+
'^/wifi-manager': {
174+
target: SERVER_ADDRESS,
168175
},
169-
},
170-
'^/wifi-manager': {
171-
target: SERVER_ADDRESS,
172176
},
173177
},
174-
},
178+
}
175179
})

0 commit comments

Comments
 (0)