@asteby/metacore-app-providers 0.5.0 → 0.6.0
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.
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
+
export interface MetacoreInstallRequest {
|
|
3
|
+
addonKey: string;
|
|
4
|
+
version?: string;
|
|
5
|
+
bundleURL?: string;
|
|
6
|
+
}
|
|
2
7
|
export interface MetacoreAppShellProps {
|
|
3
8
|
/** Axios-compatible API client used by ApiProvider + PWAProvider. */
|
|
4
9
|
api: any;
|
|
@@ -14,9 +19,22 @@ export interface MetacoreAppShellProps {
|
|
|
14
19
|
hideOfflineIndicator?: boolean;
|
|
15
20
|
/** Disable the metadata-cache invalidation that fires on SW updates. */
|
|
16
21
|
disableMetadataInvalidate?: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Handle the `metacore:install` postMessage from an embedded Hub iframe.
|
|
24
|
+
* Receives the addon key + version + bundle URL; the host runs its own
|
|
25
|
+
* install pipeline (POST `/api/marketplace/install/<key>`, etc) and is
|
|
26
|
+
* responsible for messaging back to the iframe with `metacore:installed`
|
|
27
|
+
* once done. The MessageEventSource argument is the iframe's window —
|
|
28
|
+
* call `source.postMessage({type:'metacore:installed', addonKey})` to
|
|
29
|
+
* confirm.
|
|
30
|
+
*
|
|
31
|
+
* Default: POSTs `/marketplace/install` on the bundled API client and
|
|
32
|
+
* replies on success. Set to `null` to disable the listener entirely.
|
|
33
|
+
*/
|
|
34
|
+
onAddonInstall?: ((req: MetacoreInstallRequest, source: MessageEventSource | null) => void | Promise<void>) | null;
|
|
17
35
|
/** Toaster position; passed straight to sonner. */
|
|
18
36
|
toasterPosition?: 'top-left' | 'top-right' | 'top-center' | 'bottom-left' | 'bottom-right' | 'bottom-center';
|
|
19
37
|
children: React.ReactNode;
|
|
20
38
|
}
|
|
21
|
-
export declare function MetacoreAppShell({ api, queryClient, hideToaster, hidePWAInstall, hidePWAUpdate, hideOfflineIndicator, disableMetadataInvalidate, toasterPosition, children, }: MetacoreAppShellProps): import("react/jsx-runtime").JSX.Element;
|
|
39
|
+
export declare function MetacoreAppShell({ api, queryClient, hideToaster, hidePWAInstall, hidePWAUpdate, hideOfflineIndicator, disableMetadataInvalidate, onAddonInstall, toasterPosition, children, }: MetacoreAppShellProps): import("react/jsx-runtime").JSX.Element;
|
|
22
40
|
//# sourceMappingURL=metacore-app-shell.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metacore-app-shell.d.ts","sourceRoot":"","sources":["../src/metacore-app-shell.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAY9B,MAAM,WAAW,qBAAqB;IACpC,qEAAqE;IACrE,GAAG,EAAE,GAAG,CAAA;IACR,yEAAyE;IACzE,WAAW,CAAC,EAAE,GAAG,CAAA;IACjB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,0CAA0C;IAC1C,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,yEAAyE;IACzE,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,kCAAkC;IAClC,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,wEAAwE;IACxE,yBAAyB,CAAC,EAAE,OAAO,CAAA;IACnC,mDAAmD;IACnD,eAAe,CAAC,EACZ,UAAU,GACV,WAAW,GACX,YAAY,GACZ,aAAa,GACb,cAAc,GACd,eAAe,CAAA;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;
|
|
1
|
+
{"version":3,"file":"metacore-app-shell.d.ts","sourceRoot":"","sources":["../src/metacore-app-shell.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAY9B,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,qEAAqE;IACrE,GAAG,EAAE,GAAG,CAAA;IACR,yEAAyE;IACzE,WAAW,CAAC,EAAE,GAAG,CAAA;IACjB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,0CAA0C;IAC1C,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,yEAAyE;IACzE,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,kCAAkC;IAClC,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,wEAAwE;IACxE,yBAAyB,CAAC,EAAE,OAAO,CAAA;IACnC;;;;;;;;;;;OAWG;IACH,cAAc,CAAC,EACX,CAAC,CAAC,GAAG,EAAE,sBAAsB,EAAE,MAAM,EAAE,kBAAkB,GAAG,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAC1F,IAAI,CAAA;IACR,mDAAmD;IACnD,eAAe,CAAC,EACZ,UAAU,GACV,WAAW,GACX,YAAY,GACZ,aAAa,GACb,cAAc,GACd,eAAe,CAAA;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AAoFD,wBAAgB,gBAAgB,CAAC,EAC/B,GAAG,EACH,WAAW,EACX,WAAW,EACX,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,yBAAyB,EACzB,cAAc,EACd,eAA6B,EAC7B,QAAQ,GACT,EAAE,qBAAqB,2CAqBvB"}
|
|
@@ -29,6 +29,50 @@ import { Toaster } from '@asteby/metacore-ui/primitives';
|
|
|
29
29
|
* <DynamicTable> hits the network instead of replaying yesterday's
|
|
30
30
|
* column / filter / actions definitions.
|
|
31
31
|
*/
|
|
32
|
+
/**
|
|
33
|
+
* Listens for the `metacore:install` postMessage from an embedded Hub
|
|
34
|
+
* iframe and forwards to the supplied handler (or the default backend
|
|
35
|
+
* call). Confirms back to the iframe with `metacore:installed` so the
|
|
36
|
+
* Hub UI flips to the success state.
|
|
37
|
+
*/
|
|
38
|
+
function AddonInstallListener({ api, onAddonInstall, }) {
|
|
39
|
+
React.useEffect(() => {
|
|
40
|
+
if (onAddonInstall === null)
|
|
41
|
+
return;
|
|
42
|
+
const handler = async (e) => {
|
|
43
|
+
const data = e.data;
|
|
44
|
+
if (!data || data.type !== 'metacore:install' || !data.addonKey)
|
|
45
|
+
return;
|
|
46
|
+
const req = {
|
|
47
|
+
addonKey: data.addonKey,
|
|
48
|
+
version: data.version,
|
|
49
|
+
bundleURL: data.bundleURL,
|
|
50
|
+
};
|
|
51
|
+
try {
|
|
52
|
+
if (onAddonInstall) {
|
|
53
|
+
await onAddonInstall(req, e.source);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
// Default pipeline: POST to the host's marketplace install
|
|
57
|
+
// endpoint. Apps that don't ship that endpoint should pass an
|
|
58
|
+
// explicit `onAddonInstall` handler.
|
|
59
|
+
await api.post('/marketplace/install', req);
|
|
60
|
+
}
|
|
61
|
+
e.source?.postMessage({ type: 'metacore:installed', addonKey: req.addonKey }, { targetOrigin: '*' });
|
|
62
|
+
}
|
|
63
|
+
catch (err) {
|
|
64
|
+
e.source?.postMessage({
|
|
65
|
+
type: 'metacore:install-failed',
|
|
66
|
+
addonKey: req.addonKey,
|
|
67
|
+
error: err instanceof Error ? err.message : String(err),
|
|
68
|
+
}, { targetOrigin: '*' });
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
window.addEventListener('message', handler);
|
|
72
|
+
return () => window.removeEventListener('message', handler);
|
|
73
|
+
}, [api, onAddonInstall]);
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
32
76
|
function MetadataInvalidator({ disabled }) {
|
|
33
77
|
const { needRefresh } = usePWAContext();
|
|
34
78
|
React.useEffect(() => {
|
|
@@ -56,8 +100,8 @@ function MetadataInvalidator({ disabled }) {
|
|
|
56
100
|
}, [disabled, needRefresh]);
|
|
57
101
|
return null;
|
|
58
102
|
}
|
|
59
|
-
export function MetacoreAppShell({ api, queryClient, hideToaster, hidePWAInstall, hidePWAUpdate, hideOfflineIndicator, disableMetadataInvalidate, toasterPosition = 'top-right', children, }) {
|
|
60
|
-
const inner = (_jsxs(ApiProvider, { client: api, children: [_jsxs(PWAProvider, { api: api, children: [children, _jsx(MetadataInvalidator, { disabled: !!disableMetadataInvalidate }), !hidePWAInstall && _jsx(PWAInstallPrompt, {}), !hidePWAUpdate && _jsx(PWAUpdatePrompt, {}), !hideOfflineIndicator && _jsx(OfflineIndicator, {})] }), !hideToaster && (_jsx(Toaster, { position: toasterPosition, richColors: true, theme: 'light' }))] }));
|
|
103
|
+
export function MetacoreAppShell({ api, queryClient, hideToaster, hidePWAInstall, hidePWAUpdate, hideOfflineIndicator, disableMetadataInvalidate, onAddonInstall, toasterPosition = 'top-right', children, }) {
|
|
104
|
+
const inner = (_jsxs(ApiProvider, { client: api, children: [_jsxs(PWAProvider, { api: api, children: [children, _jsx(MetadataInvalidator, { disabled: !!disableMetadataInvalidate }), _jsx(AddonInstallListener, { api: api, onAddonInstall: onAddonInstall }), !hidePWAInstall && _jsx(PWAInstallPrompt, {}), !hidePWAUpdate && _jsx(PWAUpdatePrompt, {}), !hideOfflineIndicator && _jsx(OfflineIndicator, {})] }), !hideToaster && (_jsx(Toaster, { position: toasterPosition, richColors: true, theme: 'light' }))] }));
|
|
61
105
|
if (queryClient) {
|
|
62
106
|
return _jsx(QueryClientProvider, { client: queryClient, children: inner });
|
|
63
107
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metacore-app-shell.js","sourceRoot":"","sources":["../src/metacore-app-shell.tsx"],"names":[],"mappings":";AAAA,0EAA0E;AAC1E,yEAAyE;AACzE,wEAAwE;AACxE,uEAAuE;AACvE,EAAE;AACF,qEAAqE;AACrE,EAAE;AACF,sEAAsE;AACtE,oCAAoC;AACpC,EAAE;AACF,qCAAqC;AACrC,6DAA6D;AAC7D,2CAA2C;AAC3C,0BAA0B;AAC1B,MAAM;AACN,EAAE;AACF,uEAAuE;AACvE,6EAA6E;AAC7E,4DAA4D;AAC5D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAC9E,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,aAAa,GACd,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;
|
|
1
|
+
{"version":3,"file":"metacore-app-shell.js","sourceRoot":"","sources":["../src/metacore-app-shell.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@asteby/metacore-app-providers",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "Providers genéricos reutilizables para apps metacore (direction, font, layout, search, platform-config)",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -49,9 +49,9 @@
|
|
|
49
49
|
"react": "^19.2.4",
|
|
50
50
|
"react-dom": "^19.2.4",
|
|
51
51
|
"typescript": "^5.6.0",
|
|
52
|
-
"@asteby/metacore-pwa": "0.3.1",
|
|
53
52
|
"@asteby/metacore-runtime-react": "7.1.5",
|
|
54
|
-
"@asteby/metacore-ui": "0.7.0"
|
|
53
|
+
"@asteby/metacore-ui": "0.7.0",
|
|
54
|
+
"@asteby/metacore-pwa": "0.3.1"
|
|
55
55
|
},
|
|
56
56
|
"publishConfig": {
|
|
57
57
|
"access": "public"
|