From 8ea99f37cf249b8aaf6ca60de7045c34b226527e Mon Sep 17 00:00:00 2001 From: 7-Zark-7 <1085655+zx8086@users.noreply.github.com> Date: Mon, 20 Jan 2025 16:33:10 +0100 Subject: [PATCH] Multi-build manifests --- src/lib/context/tracker.ts | 12 ++++++++--- vite.config.ts | 44 ++++++++++++++++++++++---------------- 2 files changed, 34 insertions(+), 22 deletions(-) diff --git a/src/lib/context/tracker.ts b/src/lib/context/tracker.ts index a9fb20c..6e1e591 100644 --- a/src/lib/context/tracker.ts +++ b/src/lib/context/tracker.ts @@ -48,8 +48,12 @@ function getCurrentApmTransaction() { } const getIngestPoint = () => { - // Use the existing environment variables that worked before - return import.meta.env.PUBLIC_OPENREPLAY_INGEST_POINT; + const baseUrl = import.meta.env.DEV + ? 'https://api.openreplay.com' + : 'https://openreplay.prd.shared-services.eu.pvh.cloud'; + + // Ensure we don't double the ingest path + return baseUrl; }; const getResourceBaseHref = () => { @@ -90,7 +94,9 @@ export async function initTracker() { 'traceparent': true, 'tracestate': true, 'elastic-apm-traceparent': true, - 'x-openreplay-session-id': true + 'x-openreplay-session-id': true, + 'content-type': true, + 'authorization': true } }, verbose: true, diff --git a/vite.config.ts b/vite.config.ts index e78d5d4..5090cca 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -80,32 +80,38 @@ export default defineConfig(({ mode }): UserConfig => { timeout: 5000 }, proxy: { - '^/ingest/v1/web/': { + '/ingest/v1/web/': { target: import.meta.env.DEV ? 'https://api.openreplay.com' : 'https://openreplay.prd.shared-services.eu.pvh.cloud', changeOrigin: true, secure: true, - rewrite: (path) => path, + ws: true, + rewrite: (path) => path.replace(/^\/ingest/, ''), configure: (proxy, _options) => { proxy.on('proxyReq', (proxyReq, req, _res) => { - try { - // Set specific headers for OpenReplay - proxyReq.setHeader('Access-Control-Allow-Origin', '*'); - proxyReq.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS'); - proxyReq.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization, traceparent, tracestate, elastic-apm-traceparent, x-openreplay-session-id'); - proxyReq.setHeader('Access-Control-Expose-Headers', '*'); - - // Copy original headers - if (req.headers) { - Object.keys(req.headers).forEach(key => { - if (key.toLowerCase() !== 'host') { - proxyReq.setHeader(key, req.headers[key]); - } - }); - } - } catch (error) { - console.error('Error in proxy request:', error); + proxyReq.setHeader('Access-Control-Allow-Origin', '*'); + proxyReq.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS'); + proxyReq.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization, traceparent, tracestate, elastic-apm-traceparent, x-openreplay-session-id'); + proxyReq.setHeader('Access-Control-Max-Age', '3600'); + proxyReq.setHeader('Access-Control-Expose-Headers', '*'); + + if (req.headers) { + Object.keys(req.headers).forEach(key => { + if (key.toLowerCase() !== 'host') { + proxyReq.setHeader(key, req.headers[key]); + } + }); + } + }); + + proxy.on('proxyRes', (proxyRes, req, res) => { + if (req.method === 'OPTIONS') { + proxyRes.headers['Access-Control-Allow-Origin'] = '*'; + proxyRes.headers['Access-Control-Allow-Methods'] = 'GET, POST, PUT, DELETE, OPTIONS'; + proxyRes.headers['Access-Control-Allow-Headers'] = 'Content-Type, Authorization, traceparent, tracestate, elastic-apm-traceparent, x-openreplay-session-id'; + proxyRes.headers['Access-Control-Max-Age'] = '3600'; + proxyRes.headers['Access-Control-Expose-Headers'] = '*'; } }); }