@base44/vite-plugin 0.2.20 → 0.2.22
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/README.md +96 -0
- package/dist/bridge.d.ts +8 -0
- package/dist/bridge.d.ts.map +1 -0
- package/dist/bridge.js +8 -0
- package/dist/bridge.js.map +1 -0
- package/dist/html-injections-plugin.d.ts +2 -1
- package/dist/html-injections-plugin.d.ts.map +1 -1
- package/dist/html-injections-plugin.js +123 -55
- package/dist/html-injections-plugin.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.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 +1 -1
- package/dist/injections/visual-edit-agent.js.map +1 -1
- package/dist/statics/index.mjs +2 -0
- package/dist/statics/index.mjs.map +1 -0
- package/dist/visual-edit-plugin.d.ts +1 -0
- package/dist/visual-edit-plugin.d.ts.map +1 -1
- package/dist/visual-edit-plugin.js +16 -1
- package/dist/visual-edit-plugin.js.map +1 -1
- package/package.json +8 -2
- package/src/bridge.ts +8 -0
- package/src/html-injections-plugin.ts +148 -55
- package/src/index.ts +4 -1
- package/src/injections/visual-edit-agent.ts +2 -2
- package/src/visual-edit-plugin.md +358 -0
- package/src/visual-edit-plugin.ts +18 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visual-edit-plugin.js","sourceRoot":"","sources":["../src/visual-edit-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAGlC,mEAAmE;AACnE,
|
|
1
|
+
{"version":3,"file":"visual-edit-plugin.js","sourceRoot":"","sources":["../src/visual-edit-plugin.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@base44/vite-plugin",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.22",
|
|
4
4
|
"description": "The Vite plugin for base44 based applications",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"exports": {
|
|
8
8
|
".": "./dist/index.js",
|
|
9
|
+
"./bridge": "./dist/bridge.js",
|
|
9
10
|
"./compat/*": "./compat/*"
|
|
10
11
|
},
|
|
11
12
|
"files": [
|
|
@@ -15,15 +16,20 @@
|
|
|
15
16
|
],
|
|
16
17
|
"scripts": {
|
|
17
18
|
"build": "tsc",
|
|
19
|
+
"build:bridge": "tsup",
|
|
18
20
|
"validate-exports": "node scripts/validate-exports.mjs",
|
|
19
|
-
"prepublishOnly": "rm -rf ./dist && npm run build && npm run validate-exports",
|
|
21
|
+
"prepublishOnly": "rm -rf ./dist && npm run build && npm run build:bridge && npm run validate-exports",
|
|
22
|
+
"dev": "node dev-server.js",
|
|
20
23
|
"test:unit": "vitest run"
|
|
21
24
|
},
|
|
22
25
|
"devDependencies": {
|
|
23
26
|
"@types/babel__generator": "^7.27.0",
|
|
24
27
|
"@types/babel__traverse": "^7.28.0",
|
|
25
28
|
"@types/node": "^24.6.2",
|
|
29
|
+
"cors": "^2.8.5",
|
|
30
|
+
"express": "^4.21.2",
|
|
26
31
|
"jsdom": "^26.0.0",
|
|
32
|
+
"tsup": "^8.1.0",
|
|
27
33
|
"typescript": "^5.9.3",
|
|
28
34
|
"vite": "^7.1.9",
|
|
29
35
|
"vitest": "^3.0.0"
|
package/src/bridge.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sandbox bridge — bundled via tsup into dist/statics/index.mjs.
|
|
3
|
+
* Only the visual edit agent needs the bridge (for local dev iteration
|
|
4
|
+
* via ?sandbox-bridge=local). All other features load as individual
|
|
5
|
+
* sync script tags from node_modules.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export { setupVisualEditAgent } from "./injections/visual-edit-agent.js";
|
|
@@ -1,72 +1,165 @@
|
|
|
1
|
-
import type { Plugin } from "vite";
|
|
1
|
+
import type { Plugin, HtmlTagDescriptor } from "vite";
|
|
2
|
+
import { loadEnv } from "vite";
|
|
3
|
+
|
|
4
|
+
type Injection = {
|
|
5
|
+
/** Script src path for dev mode (served from node_modules) */
|
|
6
|
+
src?: string;
|
|
7
|
+
injectTo: "head" | "body";
|
|
8
|
+
mode: "dev" | "production";
|
|
9
|
+
/** Inline content for production builds (src paths don't work in built output) */
|
|
10
|
+
inlineContent?: string;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
const ANALYTICS_TRACKER_SCRIPT = `
|
|
14
|
+
let lastPath = "";
|
|
15
|
+
function getPageNameFromPath(path) {
|
|
16
|
+
const segments = path.split("/").filter(Boolean);
|
|
17
|
+
return segments[0] || null;
|
|
18
|
+
}
|
|
19
|
+
function trackPageView() {
|
|
20
|
+
const path = window.location.pathname;
|
|
21
|
+
if (path === lastPath) return;
|
|
22
|
+
lastPath = path;
|
|
23
|
+
const pageName = getPageNameFromPath(path) || "home";
|
|
24
|
+
const appId = import.meta.env.VITE_BASE44_APP_ID;
|
|
25
|
+
const serverUrl = import.meta.env.VITE_BASE44_BACKEND_URL || "";
|
|
26
|
+
if (!appId) return;
|
|
27
|
+
fetch(\`\${serverUrl}/app-logs/\${appId}/log-user-in-app/\${pageName}\`, {
|
|
28
|
+
method: "POST",
|
|
29
|
+
}).catch(() => {});
|
|
30
|
+
}
|
|
31
|
+
const originalPushState = history.pushState.bind(history);
|
|
32
|
+
history.pushState = function (...args) {
|
|
33
|
+
originalPushState(...args);
|
|
34
|
+
trackPageView();
|
|
35
|
+
};
|
|
36
|
+
const originalReplaceState = history.replaceState.bind(history);
|
|
37
|
+
history.replaceState = function (...args) {
|
|
38
|
+
originalReplaceState(...args);
|
|
39
|
+
trackPageView();
|
|
40
|
+
};
|
|
41
|
+
window.addEventListener("popstate", trackPageView);
|
|
42
|
+
trackPageView();
|
|
43
|
+
`;
|
|
44
|
+
|
|
45
|
+
const INJECTIONS: Record<string, Injection> = {
|
|
46
|
+
unhandledErrors: {
|
|
47
|
+
src: "/node_modules/@base44/vite-plugin/dist/injections/unhandled-errors-handlers.js",
|
|
48
|
+
injectTo: "head",
|
|
49
|
+
mode: "dev",
|
|
50
|
+
},
|
|
51
|
+
sandboxMount: {
|
|
52
|
+
src: "/node_modules/@base44/vite-plugin/dist/injections/sandbox-mount-observer.js",
|
|
53
|
+
injectTo: "body",
|
|
54
|
+
mode: "dev",
|
|
55
|
+
},
|
|
56
|
+
hmrNotifier: {
|
|
57
|
+
src: "/node_modules/@base44/vite-plugin/dist/injections/sandbox-hmr-notifier.js",
|
|
58
|
+
injectTo: "head",
|
|
59
|
+
mode: "dev",
|
|
60
|
+
},
|
|
61
|
+
navigationNotifier: {
|
|
62
|
+
src: "/node_modules/@base44/vite-plugin/dist/injections/navigation-notifier.js",
|
|
63
|
+
injectTo: "head",
|
|
64
|
+
mode: "dev",
|
|
65
|
+
},
|
|
66
|
+
analyticsTracker: {
|
|
67
|
+
injectTo: "head",
|
|
68
|
+
mode: "production",
|
|
69
|
+
inlineContent: ANALYTICS_TRACKER_SCRIPT,
|
|
70
|
+
},
|
|
71
|
+
};
|
|
2
72
|
|
|
3
73
|
export function htmlInjectionsPlugin({
|
|
4
74
|
hmrNotifier,
|
|
5
75
|
navigationNotifier,
|
|
6
76
|
visualEditAgent,
|
|
77
|
+
analyticsTracker,
|
|
7
78
|
}: {
|
|
8
79
|
hmrNotifier: boolean;
|
|
9
80
|
navigationNotifier: boolean;
|
|
10
81
|
visualEditAgent: boolean;
|
|
82
|
+
analyticsTracker: boolean;
|
|
11
83
|
}) {
|
|
84
|
+
const enabledInjections: Record<string, boolean> = {
|
|
85
|
+
unhandledErrors: true,
|
|
86
|
+
sandboxMount: true,
|
|
87
|
+
hmrNotifier,
|
|
88
|
+
navigationNotifier,
|
|
89
|
+
analyticsTracker,
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
let resolvedEnv: Record<string, string> = {};
|
|
93
|
+
|
|
12
94
|
return {
|
|
13
95
|
name: "html-injections",
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
},
|
|
41
|
-
injectTo: "head",
|
|
42
|
-
},
|
|
43
|
-
]
|
|
44
|
-
: []),
|
|
45
|
-
...(navigationNotifier
|
|
46
|
-
? [
|
|
47
|
-
{
|
|
48
|
-
tag: "script",
|
|
49
|
-
attrs: {
|
|
50
|
-
src: "/node_modules/@base44/vite-plugin/dist/injections/navigation-notifier.js",
|
|
51
|
-
type: "module",
|
|
52
|
-
},
|
|
53
|
-
injectTo: "head",
|
|
54
|
-
},
|
|
55
|
-
]
|
|
56
|
-
: []),
|
|
57
|
-
...(visualEditAgent
|
|
58
|
-
? [
|
|
59
|
-
{
|
|
96
|
+
configResolved(config) {
|
|
97
|
+
// Capture env vars for use in transformIndexHtml
|
|
98
|
+
// loadEnv gets all env vars including VITE_ prefixed ones
|
|
99
|
+
resolvedEnv = loadEnv(config.mode, config.root, "");
|
|
100
|
+
},
|
|
101
|
+
transformIndexHtml: {
|
|
102
|
+
handler(_html, ctx) {
|
|
103
|
+
const currentMode = ctx.server ? "dev" : "production";
|
|
104
|
+
|
|
105
|
+
const tags = Object.entries(INJECTIONS)
|
|
106
|
+
.filter(
|
|
107
|
+
([key, injection]) =>
|
|
108
|
+
enabledInjections[key] && injection.mode === currentMode
|
|
109
|
+
)
|
|
110
|
+
.map(([, injection]): HtmlTagDescriptor => {
|
|
111
|
+
// Production injections use inline content (src paths don't work in built output)
|
|
112
|
+
if (injection.inlineContent) {
|
|
113
|
+
// Replace import.meta.env references with actual values
|
|
114
|
+
// Vite doesn't replace these in inline script content
|
|
115
|
+
let content = injection.inlineContent;
|
|
116
|
+
content = content.replace(
|
|
117
|
+
/import\.meta\.env\.(\w+)/g,
|
|
118
|
+
(_, envKey) => JSON.stringify(resolvedEnv[envKey] ?? "")
|
|
119
|
+
);
|
|
120
|
+
|
|
121
|
+
return {
|
|
60
122
|
tag: "script",
|
|
61
|
-
attrs: {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
123
|
+
attrs: { type: "module" },
|
|
124
|
+
children: content,
|
|
125
|
+
injectTo: injection.injectTo,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
// Dev injections use src path (served from node_modules)
|
|
129
|
+
return {
|
|
130
|
+
tag: "script",
|
|
131
|
+
attrs: {
|
|
132
|
+
src: injection.src,
|
|
133
|
+
type: "module",
|
|
66
134
|
},
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
135
|
+
injectTo: injection.injectTo,
|
|
136
|
+
};
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
// Visual edit agent — loaded via dynamic import to support
|
|
140
|
+
// local dev iteration with ?sandbox-bridge=local
|
|
141
|
+
if (currentMode === "dev" && visualEditAgent) {
|
|
142
|
+
const dist = "/node_modules/@base44/vite-plugin/dist";
|
|
143
|
+
tags.push({
|
|
144
|
+
tag: "script",
|
|
145
|
+
attrs: { type: "module" },
|
|
146
|
+
children: [
|
|
147
|
+
`if (window.self !== window.top) {`,
|
|
148
|
+
` const mode = new URLSearchParams(location.search).get("sandbox-bridge");`,
|
|
149
|
+
` const url = mode === "local"`,
|
|
150
|
+
` ? "https://localhost:3201/index.mjs"`,
|
|
151
|
+
` : "${dist}/statics/index.mjs";`,
|
|
152
|
+
` import(url)`,
|
|
153
|
+
` .then(mod => { if (typeof mod.setupVisualEditAgent === "function") mod.setupVisualEditAgent(); })`,
|
|
154
|
+
` .catch(e => console.error("[visual-edit-agent] Failed to load:", e));`,
|
|
155
|
+
`}`,
|
|
156
|
+
].join("\n"),
|
|
157
|
+
injectTo: "body",
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
return tags;
|
|
162
|
+
},
|
|
70
163
|
},
|
|
71
164
|
} as Plugin;
|
|
72
165
|
}
|
package/src/index.ts
CHANGED
|
@@ -13,6 +13,7 @@ export default function vitePlugin(
|
|
|
13
13
|
hmrNotifier?: boolean;
|
|
14
14
|
navigationNotifier?: boolean;
|
|
15
15
|
visualEditAgent?: boolean;
|
|
16
|
+
analyticsTracker?: boolean;
|
|
16
17
|
} = {}
|
|
17
18
|
) {
|
|
18
19
|
const {
|
|
@@ -20,6 +21,7 @@ export default function vitePlugin(
|
|
|
20
21
|
hmrNotifier = false,
|
|
21
22
|
navigationNotifier = false,
|
|
22
23
|
visualEditAgent = false,
|
|
24
|
+
analyticsTracker = false,
|
|
23
25
|
} = opts;
|
|
24
26
|
|
|
25
27
|
return [
|
|
@@ -215,8 +217,9 @@ export default function vitePlugin(
|
|
|
215
217
|
} as Plugin,
|
|
216
218
|
errorOverlayPlugin(),
|
|
217
219
|
visualEditPlugin(),
|
|
218
|
-
htmlInjectionsPlugin({ hmrNotifier, navigationNotifier, visualEditAgent }),
|
|
219
220
|
]
|
|
220
221
|
: []),
|
|
222
|
+
// HTML injections - handles both dev (sandbox) and production injections
|
|
223
|
+
htmlInjectionsPlugin({ hmrNotifier, navigationNotifier, visualEditAgent, analyticsTracker }),
|
|
221
224
|
];
|
|
222
225
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { findElementsById, updateElementClasses } from "./utils.js";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
export function setupVisualEditAgent() {
|
|
4
4
|
// State variables (replacing React useState/useRef)
|
|
5
5
|
let isVisualEditMode = false;
|
|
6
6
|
let isPopoverDragging = false;
|
|
@@ -558,4 +558,4 @@ if (window.self !== window.top) {
|
|
|
558
558
|
|
|
559
559
|
// Send ready message to parent
|
|
560
560
|
window.parent.postMessage({ type: "visual-edit-agent-ready" }, "*");
|
|
561
|
-
}
|
|
561
|
+
}
|