@base44-preview/vite-plugin 0.2.17-pr.25.fb197cb → 0.2.17-pr.27.59c6b33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ErrorOverlay.js +1 -1
- package/dist/ErrorOverlay.js.map +1 -1
- package/dist/bridge.d.ts +11 -0
- package/dist/bridge.d.ts.map +1 -0
- package/dist/bridge.js +26 -0
- package/dist/bridge.js.map +1 -0
- package/dist/html-injections-plugin.d.ts +4 -2
- package/dist/html-injections-plugin.d.ts.map +1 -1
- package/dist/html-injections-plugin.js +24 -48
- package/dist/html-injections-plugin.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -12
- package/dist/index.js.map +1 -1
- package/dist/injections/managed-flag.d.ts +2 -0
- package/dist/injections/managed-flag.d.ts.map +1 -0
- package/dist/injections/managed-flag.js +6 -0
- package/dist/injections/managed-flag.js.map +1 -0
- package/dist/injections/navigation-notifier.d.ts +1 -1
- package/dist/injections/navigation-notifier.d.ts.map +1 -1
- package/dist/injections/navigation-notifier.js +5 -2
- package/dist/injections/navigation-notifier.js.map +1 -1
- package/dist/injections/sandbox-hmr-notifier.d.ts +3 -1
- package/dist/injections/sandbox-hmr-notifier.d.ts.map +1 -1
- package/dist/injections/sandbox-hmr-notifier.js +8 -4
- package/dist/injections/sandbox-hmr-notifier.js.map +1 -1
- package/dist/injections/sandbox-mount-observer.d.ts +1 -1
- package/dist/injections/sandbox-mount-observer.d.ts.map +1 -1
- package/dist/injections/sandbox-mount-observer.js +5 -2
- package/dist/injections/sandbox-mount-observer.js.map +1 -1
- package/dist/injections/unhandled-errors-handlers.d.ts +3 -1
- package/dist/injections/unhandled-errors-handlers.d.ts.map +1 -1
- package/dist/injections/unhandled-errors-handlers.js +70 -64
- package/dist/injections/unhandled-errors-handlers.js.map +1 -1
- package/dist/injections/visual-edit-agent.d.ts +1 -1
- package/dist/injections/visual-edit-agent.d.ts.map +1 -1
- package/dist/injections/visual-edit-agent.js +5 -2
- package/dist/injections/visual-edit-agent.js.map +1 -1
- package/package.json +8 -10
- package/src/ErrorOverlay.ts +1 -1
- package/src/bridge.ts +30 -0
- package/src/html-injections-plugin.ts +33 -54
- package/src/index.ts +13 -16
- package/src/injections/managed-flag.ts +4 -0
- package/src/injections/navigation-notifier.ts +6 -1
- package/src/injections/sandbox-hmr-notifier.ts +10 -3
- package/src/injections/sandbox-mount-observer.ts +6 -2
- package/src/injections/unhandled-errors-handlers.ts +85 -77
- package/src/injections/visual-edit-agent.ts +6 -1
- package/dist/analytics-tracker-plugin.d.ts +0 -10
- package/dist/analytics-tracker-plugin.d.ts.map +0 -1
- package/dist/analytics-tracker-plugin.js +0 -80
- package/dist/analytics-tracker-plugin.js.map +0 -1
- package/src/analytics-tracker-plugin.ts +0 -85
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import { loadEnv } from "vite";
|
|
2
|
-
/**
|
|
3
|
-
* Plugin that injects analytics tracking code for production builds.
|
|
4
|
-
* This plugin only runs when NOT in sandbox mode (MODAL_SANDBOX_ID not set).
|
|
5
|
-
* It uses the @base44/sdk to track page views via appLogs.logUserInApp().
|
|
6
|
-
*
|
|
7
|
-
* Requires @base44/sdk to be installed in the consuming app.
|
|
8
|
-
*/
|
|
9
|
-
export function analyticsTrackerPlugin() {
|
|
10
|
-
let appId = "";
|
|
11
|
-
let serverUrl = "";
|
|
12
|
-
return {
|
|
13
|
-
name: "analytics-tracker",
|
|
14
|
-
// Only apply in production builds
|
|
15
|
-
apply: "build",
|
|
16
|
-
configResolved(config) {
|
|
17
|
-
const env = loadEnv(config.mode, config.root, "");
|
|
18
|
-
appId = env.VITE_BASE44_APP_ID || "";
|
|
19
|
-
serverUrl = env.VITE_BASE44_BACKEND_URL || "";
|
|
20
|
-
},
|
|
21
|
-
transformIndexHtml(html) {
|
|
22
|
-
if (!appId) {
|
|
23
|
-
console.warn("[analytics-tracker] VITE_BASE44_APP_ID not set, skipping analytics injection");
|
|
24
|
-
return html;
|
|
25
|
-
}
|
|
26
|
-
// Use JSON.stringify to prevent XSS injection via env vars
|
|
27
|
-
const safeAppId = JSON.stringify(appId);
|
|
28
|
-
const safeServerUrl = JSON.stringify(serverUrl);
|
|
29
|
-
// Inline script that imports SDK and tracks page views
|
|
30
|
-
const analyticsScript = `
|
|
31
|
-
<script type="module">
|
|
32
|
-
import { createClient } from "@base44/sdk";
|
|
33
|
-
|
|
34
|
-
const client = createClient({
|
|
35
|
-
appId: ${safeAppId},
|
|
36
|
-
serverUrl: ${safeServerUrl},
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
let lastPath = "";
|
|
40
|
-
|
|
41
|
-
function getPageNameFromPath(path) {
|
|
42
|
-
const segments = path.split("/").filter(Boolean);
|
|
43
|
-
return segments[0] || null;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
function trackPageView() {
|
|
47
|
-
const path = window.location.pathname;
|
|
48
|
-
if (path === lastPath) return;
|
|
49
|
-
lastPath = path;
|
|
50
|
-
|
|
51
|
-
const pageName = getPageNameFromPath(path) || "home";
|
|
52
|
-
client.appLogs.logUserInApp(pageName).catch(() => {});
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
// Intercept history.pushState
|
|
56
|
-
const originalPushState = history.pushState.bind(history);
|
|
57
|
-
history.pushState = function (...args) {
|
|
58
|
-
originalPushState(...args);
|
|
59
|
-
trackPageView();
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
// Intercept history.replaceState
|
|
63
|
-
const originalReplaceState = history.replaceState.bind(history);
|
|
64
|
-
history.replaceState = function (...args) {
|
|
65
|
-
originalReplaceState(...args);
|
|
66
|
-
trackPageView();
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
// Handle browser back/forward navigation
|
|
70
|
-
window.addEventListener("popstate", trackPageView);
|
|
71
|
-
|
|
72
|
-
// Track initial page view
|
|
73
|
-
trackPageView();
|
|
74
|
-
</script>`;
|
|
75
|
-
// Inject before closing </head> tag
|
|
76
|
-
return html.replace("</head>", `${analyticsScript}\n</head>`);
|
|
77
|
-
},
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
//# sourceMappingURL=analytics-tracker-plugin.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"analytics-tracker-plugin.js","sourceRoot":"","sources":["../src/analytics-tracker-plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB;IACpC,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,SAAS,GAAG,EAAE,CAAC;IAEnB,OAAO;QACL,IAAI,EAAE,mBAAmB;QACzB,kCAAkC;QAClC,KAAK,EAAE,OAAO;QACd,cAAc,CAAC,MAAsB;YACnC,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAClD,KAAK,GAAG,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAAC;YACrC,SAAS,GAAG,GAAG,CAAC,uBAAuB,IAAI,EAAE,CAAC;QAChD,CAAC;QACD,kBAAkB,CAAC,IAAI;YACrB,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC;gBAC7F,OAAO,IAAI,CAAC;YACd,CAAC;YAED,2DAA2D;YAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACxC,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAEhD,uDAAuD;YACvD,MAAM,eAAe,GAAG;;;;;WAKnB,SAAS;eACL,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAsClB,CAAC;YAEL,oCAAoC;YACpC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,eAAe,WAAW,CAAC,CAAC;QAChE,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import type { Plugin, ResolvedConfig } from "vite";
|
|
2
|
-
import { loadEnv } from "vite";
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Plugin that injects analytics tracking code for production builds.
|
|
6
|
-
* This plugin only runs when NOT in sandbox mode (MODAL_SANDBOX_ID not set).
|
|
7
|
-
* It uses the @base44/sdk to track page views via appLogs.logUserInApp().
|
|
8
|
-
*
|
|
9
|
-
* Requires @base44/sdk to be installed in the consuming app.
|
|
10
|
-
*/
|
|
11
|
-
export function analyticsTrackerPlugin(): Plugin {
|
|
12
|
-
let appId = "";
|
|
13
|
-
let serverUrl = "";
|
|
14
|
-
|
|
15
|
-
return {
|
|
16
|
-
name: "analytics-tracker",
|
|
17
|
-
// Only apply in production builds
|
|
18
|
-
apply: "build",
|
|
19
|
-
configResolved(config: ResolvedConfig) {
|
|
20
|
-
const env = loadEnv(config.mode, config.root, "");
|
|
21
|
-
appId = env.VITE_BASE44_APP_ID || "";
|
|
22
|
-
serverUrl = env.VITE_BASE44_BACKEND_URL || "";
|
|
23
|
-
},
|
|
24
|
-
transformIndexHtml(html) {
|
|
25
|
-
if (!appId) {
|
|
26
|
-
console.warn("[analytics-tracker] VITE_BASE44_APP_ID not set, skipping analytics injection");
|
|
27
|
-
return html;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
// Use JSON.stringify to prevent XSS injection via env vars
|
|
31
|
-
const safeAppId = JSON.stringify(appId);
|
|
32
|
-
const safeServerUrl = JSON.stringify(serverUrl);
|
|
33
|
-
|
|
34
|
-
// Inline script that imports SDK and tracks page views
|
|
35
|
-
const analyticsScript = `
|
|
36
|
-
<script type="module">
|
|
37
|
-
import { createClient } from "@base44/sdk";
|
|
38
|
-
|
|
39
|
-
const client = createClient({
|
|
40
|
-
appId: ${safeAppId},
|
|
41
|
-
serverUrl: ${safeServerUrl},
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
let lastPath = "";
|
|
45
|
-
|
|
46
|
-
function getPageNameFromPath(path) {
|
|
47
|
-
const segments = path.split("/").filter(Boolean);
|
|
48
|
-
return segments[0] || null;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
function trackPageView() {
|
|
52
|
-
const path = window.location.pathname;
|
|
53
|
-
if (path === lastPath) return;
|
|
54
|
-
lastPath = path;
|
|
55
|
-
|
|
56
|
-
const pageName = getPageNameFromPath(path) || "home";
|
|
57
|
-
client.appLogs.logUserInApp(pageName).catch(() => {});
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
// Intercept history.pushState
|
|
61
|
-
const originalPushState = history.pushState.bind(history);
|
|
62
|
-
history.pushState = function (...args) {
|
|
63
|
-
originalPushState(...args);
|
|
64
|
-
trackPageView();
|
|
65
|
-
};
|
|
66
|
-
|
|
67
|
-
// Intercept history.replaceState
|
|
68
|
-
const originalReplaceState = history.replaceState.bind(history);
|
|
69
|
-
history.replaceState = function (...args) {
|
|
70
|
-
originalReplaceState(...args);
|
|
71
|
-
trackPageView();
|
|
72
|
-
};
|
|
73
|
-
|
|
74
|
-
// Handle browser back/forward navigation
|
|
75
|
-
window.addEventListener("popstate", trackPageView);
|
|
76
|
-
|
|
77
|
-
// Track initial page view
|
|
78
|
-
trackPageView();
|
|
79
|
-
</script>`;
|
|
80
|
-
|
|
81
|
-
// Inject before closing </head> tag
|
|
82
|
-
return html.replace("</head>", `${analyticsScript}\n</head>`);
|
|
83
|
-
},
|
|
84
|
-
};
|
|
85
|
-
}
|