dynim-react 1.0.25 → 1.0.27
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/builder/BuilderProvider.d.ts.map +1 -1
- package/dist/builder/BuilderProvider.js +19 -3
- package/dist/inference/InferenceProvider.d.ts.map +1 -1
- package/dist/inference/InferenceProvider.js +41 -75
- package/dist/inference/types.d.ts +9 -0
- package/dist/inference/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BuilderProvider.d.ts","sourceRoot":"","sources":["../../src/builder/BuilderProvider.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAc,EAQZ,KAAK,SAAS,EAEf,MAAM,OAAO,CAAC;AAQf,OAAO,KAAK,EAEV,eAAe,EAEf,QAAQ,EACR,SAAS,EACT,WAAW,EACZ,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,KAAK,IAAI,CAAC;IACzC,oEAAoE;IACpE,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IACrD,0CAA0C;IAC1C,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACtC,kDAAkD;IAClD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IAE3C,qDAAqD;IACrD,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/D,wCAAwC;IACxC,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,0CAA0C;IAC1C,oBAAoB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,uFAAuF;IACvF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,MAAM,eAAe,GAAG,IAAI,CAAC;IAEzC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,4CAA4C;IAC5C,WAAW,EAAE,WAAW,CAAC;IACzB,+BAA+B;IAC/B,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,gDAAgD;IAChD,SAAS,EAAE,QAAQ,EAAE,CAAC;IAGtB,2BAA2B;IAC3B,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,gEAAgE;IAChE,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,kDAAkD;IAClD,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,wDAAwD;IACxD,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,4CAA4C;IAC5C,cAAc,EAAE,OAAO,CAAC;IACxB,iCAAiC;IACjC,eAAe,EAAE,OAAO,CAAC;IACzB,kDAAkD;IAClD,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAID,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;CACzD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,MAAW,EACX,cAAc,GACf,EAAE,oBAAoB,GAAG,GAAG,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"BuilderProvider.d.ts","sourceRoot":"","sources":["../../src/builder/BuilderProvider.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAc,EAQZ,KAAK,SAAS,EAEf,MAAM,OAAO,CAAC;AAQf,OAAO,KAAK,EAEV,eAAe,EAEf,QAAQ,EACR,SAAS,EACT,WAAW,EACZ,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,KAAK,IAAI,CAAC;IACzC,oEAAoE;IACpE,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IACrD,0CAA0C;IAC1C,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACtC,kDAAkD;IAClD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IAE3C,qDAAqD;IACrD,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/D,wCAAwC;IACxC,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,0CAA0C;IAC1C,oBAAoB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,uFAAuF;IACvF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,MAAM,eAAe,GAAG,IAAI,CAAC;IAEzC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,4CAA4C;IAC5C,WAAW,EAAE,WAAW,CAAC;IACzB,+BAA+B;IAC/B,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,gDAAgD;IAChD,SAAS,EAAE,QAAQ,EAAE,CAAC;IAGtB,2BAA2B;IAC3B,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,gEAAgE;IAChE,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,kDAAkD;IAClD,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,wDAAwD;IACxD,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,4CAA4C;IAC5C,cAAc,EAAE,OAAO,CAAC;IACxB,iCAAiC;IACjC,eAAe,EAAE,OAAO,CAAC;IACzB,kDAAkD;IAClD,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAID,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;CACzD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,MAAW,EACX,cAAc,GACf,EAAE,oBAAoB,GAAG,GAAG,CAAC,OAAO,CAknBpC;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,mBAAmB,CAMhD"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
/**
|
|
3
3
|
* BuilderProvider - React integration for the visual builder
|
|
4
4
|
*
|
|
@@ -39,6 +39,8 @@ export function BuilderProvider({ children, config = {}, onBuilderReady, }) {
|
|
|
39
39
|
apiBaseRef.current = config.apiBase || 'http://localhost:8080';
|
|
40
40
|
const [isBundleLoaded, setIsBundleLoaded] = useState(false);
|
|
41
41
|
const [isBundleLoading, setIsBundleLoading] = useState(false);
|
|
42
|
+
// Track if initial bundle load has completed (to avoid flash of children)
|
|
43
|
+
const [isInitialLoadComplete, setIsInitialLoadComplete] = useState(false);
|
|
42
44
|
const [codeMessage, setCodeMessage] = useState({
|
|
43
45
|
thinking: '',
|
|
44
46
|
text: '',
|
|
@@ -320,6 +322,7 @@ export function BuilderProvider({ children, config = {}, onBuilderReady, }) {
|
|
|
320
322
|
// Need auth to load bundle - if no auth configured, just render children
|
|
321
323
|
if (!sessionToken && !getSession) {
|
|
322
324
|
console.log('[BuilderProvider] No auth configured, skipping initial bundle load');
|
|
325
|
+
setIsInitialLoadComplete(true); // Mark complete so children render
|
|
323
326
|
return;
|
|
324
327
|
}
|
|
325
328
|
hasAttemptedInitialLoadRef.current = true;
|
|
@@ -335,6 +338,12 @@ export function BuilderProvider({ children, config = {}, onBuilderReady, }) {
|
|
|
335
338
|
// 404 means no saved bundle - that's fine, children will render
|
|
336
339
|
console.log('[BuilderProvider] Initial bundle load completed (may be 404 if no saved bundle)');
|
|
337
340
|
}
|
|
341
|
+
finally {
|
|
342
|
+
setIsInitialLoadComplete(true); // Mark complete regardless of outcome
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
else {
|
|
346
|
+
setIsInitialLoadComplete(true); // No loader available, show children
|
|
338
347
|
}
|
|
339
348
|
};
|
|
340
349
|
doInitialLoad();
|
|
@@ -500,9 +509,16 @@ export function BuilderProvider({ children, config = {}, onBuilderReady, }) {
|
|
|
500
509
|
}, [contextValue, onBuilderReady]);
|
|
501
510
|
// Render the appropriate content based on state
|
|
502
511
|
const renderContent = () => {
|
|
503
|
-
//
|
|
512
|
+
// Initial load in progress - show nothing to prevent flash of children
|
|
513
|
+
// This only applies to the first load; subsequent loads show current content
|
|
514
|
+
if (!isInitialLoadComplete) {
|
|
515
|
+
return null;
|
|
516
|
+
}
|
|
517
|
+
// Loading state (after initial load) - keep showing current content
|
|
504
518
|
if (isBundleLoading) {
|
|
505
|
-
|
|
519
|
+
// If we have TenantApp, keep showing it during reload
|
|
520
|
+
// Otherwise show children (this is a subsequent load, not initial)
|
|
521
|
+
return TenantApp ? _jsx(TenantApp, {}) : children;
|
|
506
522
|
}
|
|
507
523
|
// Error state - show error banner with children
|
|
508
524
|
if (bundleError) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InferenceProvider.d.ts","sourceRoot":"","sources":["../../src/inference/InferenceProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,
|
|
1
|
+
{"version":3,"file":"InferenceProvider.d.ts","sourceRoot":"","sources":["../../src/inference/InferenceProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAgC,MAAM,SAAS,CAAC;AAkFpF;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,SAAS,EACT,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,WAAmB,EACnB,OAAO,EACP,MAAM,EACN,QAAQ,GACT,EAAE,sBAAsB,GAAG,GAAG,CAAC,OAAO,CA0LtC;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
import { useState, useEffect, useCallback
|
|
2
|
+
import { useState, useEffect, useCallback } from 'react';
|
|
3
3
|
/**
|
|
4
4
|
* Default loading component shown while bundle is loading
|
|
5
5
|
*/
|
|
@@ -25,39 +25,17 @@ function DefaultErrorBanner({ error }) {
|
|
|
25
25
|
}, children: [_jsx("strong", { children: "Customization Error:" }), " ", error.message] }));
|
|
26
26
|
}
|
|
27
27
|
/**
|
|
28
|
-
*
|
|
28
|
+
* Loads a bundle module via fetch and dynamic import
|
|
29
|
+
* Uses blob URL to allow importing fetched JavaScript as an ES module
|
|
29
30
|
*/
|
|
30
|
-
function
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
// Check if script already exists
|
|
39
|
-
const existingScript = document.querySelector(`script[src="${url}"]`);
|
|
40
|
-
if (existingScript) {
|
|
41
|
-
resolve();
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
const script = document.createElement('script');
|
|
45
|
-
script.src = url;
|
|
46
|
-
script.async = true;
|
|
47
|
-
script.onload = () => resolve();
|
|
48
|
-
script.onerror = () => reject(new Error(`Failed to load bundle from ${url}`));
|
|
49
|
-
document.head.appendChild(script);
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Loads a script from a URL with authentication and returns a promise
|
|
54
|
-
*/
|
|
55
|
-
async function loadScriptWithAuth(url, token) {
|
|
56
|
-
const response = await fetch(url, {
|
|
57
|
-
headers: {
|
|
58
|
-
Authorization: `Bearer ${token}`,
|
|
59
|
-
},
|
|
60
|
-
});
|
|
31
|
+
async function loadBundleModule(url, token) {
|
|
32
|
+
const headers = {
|
|
33
|
+
Accept: 'application/javascript',
|
|
34
|
+
};
|
|
35
|
+
if (token) {
|
|
36
|
+
headers['Authorization'] = `Bearer ${token}`;
|
|
37
|
+
}
|
|
38
|
+
const response = await fetch(url, { headers });
|
|
61
39
|
if (!response.ok) {
|
|
62
40
|
if (response.status === 401) {
|
|
63
41
|
throw new Error('Bundle token is invalid or expired');
|
|
@@ -67,27 +45,20 @@ async function loadScriptWithAuth(url, token) {
|
|
|
67
45
|
}
|
|
68
46
|
throw new Error(`Failed to load bundle: ${response.status} ${response.statusText}`);
|
|
69
47
|
}
|
|
70
|
-
const
|
|
71
|
-
//
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
function removeScript(url) {
|
|
81
|
-
// Try src attribute first (script tag injection)
|
|
82
|
-
let script = document.querySelector(`script[src="${url}"]`);
|
|
83
|
-
if (script) {
|
|
84
|
-
script.remove();
|
|
85
|
-
return;
|
|
48
|
+
const code = await response.text();
|
|
49
|
+
// Create blob URL for dynamic import
|
|
50
|
+
const blob = new Blob([code], { type: 'application/javascript' });
|
|
51
|
+
const blobUrl = URL.createObjectURL(blob);
|
|
52
|
+
try {
|
|
53
|
+
const module = await import(/* @vite-ignore */ blobUrl);
|
|
54
|
+
return {
|
|
55
|
+
App: module.App || module.default,
|
|
56
|
+
cleanup: () => URL.revokeObjectURL(blobUrl),
|
|
57
|
+
};
|
|
86
58
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
script.remove();
|
|
59
|
+
catch (err) {
|
|
60
|
+
URL.revokeObjectURL(blobUrl);
|
|
61
|
+
throw err;
|
|
91
62
|
}
|
|
92
63
|
}
|
|
93
64
|
/**
|
|
@@ -115,7 +86,7 @@ export function InferenceProvider({ tenantId, bundleUrl, bundleToken, checkCusto
|
|
|
115
86
|
error: null,
|
|
116
87
|
currentTenantId: null,
|
|
117
88
|
});
|
|
118
|
-
const
|
|
89
|
+
const [bundleModule, setBundleModule] = useState(null);
|
|
119
90
|
/**
|
|
120
91
|
* Resolves the bundle URL for a given tenant ID
|
|
121
92
|
*/
|
|
@@ -127,19 +98,14 @@ export function InferenceProvider({ tenantId, bundleUrl, bundleToken, checkCusto
|
|
|
127
98
|
return bundleUrl.replace('{tenantId}', id);
|
|
128
99
|
}, [bundleUrl]);
|
|
129
100
|
/**
|
|
130
|
-
* Cleans up previously loaded bundle
|
|
101
|
+
* Cleans up previously loaded bundle module
|
|
131
102
|
*/
|
|
132
103
|
const cleanup = useCallback(() => {
|
|
133
|
-
if (
|
|
134
|
-
|
|
135
|
-
loadedUrlRef.current = null;
|
|
104
|
+
if (bundleModule?.cleanup) {
|
|
105
|
+
bundleModule.cleanup();
|
|
136
106
|
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
if (root) {
|
|
140
|
-
root.innerHTML = '';
|
|
141
|
-
}
|
|
142
|
-
}, []);
|
|
107
|
+
setBundleModule(null);
|
|
108
|
+
}, [bundleModule]);
|
|
143
109
|
/**
|
|
144
110
|
* Main effect to handle tenant bundle loading
|
|
145
111
|
*/
|
|
@@ -182,18 +148,13 @@ export function InferenceProvider({ tenantId, bundleUrl, bundleToken, checkCusto
|
|
|
182
148
|
// Clean up previous bundle
|
|
183
149
|
cleanup();
|
|
184
150
|
const url = resolveBundleUrl(tenantId);
|
|
185
|
-
//
|
|
186
|
-
|
|
187
|
-
await loadScriptWithAuth(url, bundleToken);
|
|
188
|
-
}
|
|
189
|
-
else {
|
|
190
|
-
await loadScript(url);
|
|
191
|
-
}
|
|
151
|
+
// Load bundle via fetch + dynamic import
|
|
152
|
+
const module = await loadBundleModule(url, bundleToken);
|
|
192
153
|
if (cancelled) {
|
|
193
|
-
|
|
154
|
+
module.cleanup();
|
|
194
155
|
return;
|
|
195
156
|
}
|
|
196
|
-
|
|
157
|
+
setBundleModule(module);
|
|
197
158
|
setState({
|
|
198
159
|
status: 'loaded',
|
|
199
160
|
error: null,
|
|
@@ -253,8 +214,13 @@ export function InferenceProvider({ tenantId, bundleUrl, bundleToken, checkCusto
|
|
|
253
214
|
case 'loading':
|
|
254
215
|
return loadingComponent ?? _jsx(DefaultLoadingComponent, {});
|
|
255
216
|
case 'loaded':
|
|
256
|
-
//
|
|
257
|
-
|
|
217
|
+
// Render the loaded App component directly
|
|
218
|
+
if (bundleModule?.App) {
|
|
219
|
+
const TenantApp = bundleModule.App;
|
|
220
|
+
return _jsx(TenantApp, {});
|
|
221
|
+
}
|
|
222
|
+
// Fallback if no App component found
|
|
223
|
+
return children;
|
|
258
224
|
case 'error':
|
|
259
225
|
// Show children as fallback with optional error banner
|
|
260
226
|
return (_jsxs(_Fragment, { children: [renderErrorBanner(), children] }));
|
|
@@ -51,6 +51,15 @@ export interface InferenceState {
|
|
|
51
51
|
error: Error | null;
|
|
52
52
|
currentTenantId: string | null;
|
|
53
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Module loaded from a tenant bundle via dynamic import
|
|
56
|
+
*/
|
|
57
|
+
export interface BundleModule {
|
|
58
|
+
/** The App component exported by the bundle */
|
|
59
|
+
App: React.ComponentType<unknown>;
|
|
60
|
+
/** Cleanup function to revoke the blob URL */
|
|
61
|
+
cleanup: () => void;
|
|
62
|
+
}
|
|
54
63
|
/**
|
|
55
64
|
* The global SDK object exposed to tenant bundles
|
|
56
65
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/inference/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,gDAAgD;IAChD,KAAK,EAAE,cAAc,OAAO,CAAC,CAAC;IAC9B,mDAAmD;IACnD,QAAQ,EAAE,cAAc,WAAW,CAAC,CAAC;IACrC,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,6DAA6D;IAC7D,SAAS,EAAE,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;IACnD;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mFAAmF;IACnF,mBAAmB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D,+DAA+D;IAC/D,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B,4EAA4E;IAC5E,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAClC,yCAAyC;IACzC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,8CAA8C;IAC9C,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,mEAAmE;IACnE,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,kBAAkB,CAAC;IAClF,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,cAAc,OAAO,CAAC,CAAC;IAC9B,QAAQ,EAAE,cAAc,WAAW,CAAC,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,SAAS,CAAC,EAAE,WAAW,CAAC;KACzB;CACF"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/inference/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,gDAAgD;IAChD,KAAK,EAAE,cAAc,OAAO,CAAC,CAAC;IAC9B,mDAAmD;IACnD,QAAQ,EAAE,cAAc,WAAW,CAAC,CAAC;IACrC,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,6DAA6D;IAC7D,SAAS,EAAE,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;IACnD;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mFAAmF;IACnF,mBAAmB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D,+DAA+D;IAC/D,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B,4EAA4E;IAC5E,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAClC,yCAAyC;IACzC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,8CAA8C;IAC9C,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,mEAAmE;IACnE,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,kBAAkB,CAAC;IAClF,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,+CAA+C;IAC/C,GAAG,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAClC,8CAA8C;IAC9C,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,cAAc,OAAO,CAAC,CAAC;IAC9B,QAAQ,EAAE,cAAc,WAAW,CAAC,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,SAAS,CAAC,EAAE,WAAW,CAAC;KACzB;CACF"}
|