@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;AA+BD,wBAAgB,gBAAgB,CAAC,EAC/B,GAAG,EACH,WAAW,EACX,WAAW,EACX,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,yBAAyB,EACzB,eAA6B,EAC7B,QAAQ,GACT,EAAE,qBAAqB,2CAoBvB"}
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;AA4BxD;;;;;GAKG;AACH,SAAS,mBAAmB,CAAC,EAAE,QAAQ,EAAyB;IAC9D,MAAM,EAAE,WAAW,EAAE,GAAG,aAAa,EAAE,CAAA;IACvC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,QAAQ;YAAE,OAAM;QACpB,IAAI,CAAC,WAAW;YAAE,OAAM;QACxB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,gBAAgB,CAAC,QAAQ,EAAS,CAAA;YAChD,IAAI,KAAK,EAAE,KAAK,EAAE,CAAC;gBACjB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;oBAAE,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACrE,CAAC;YACD,IAAI,KAAK,EAAE,UAAU,EAAE,CAAC;gBACtB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;oBAAE,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;YAC/E,CAAC;YACD,IAAI,OAAO,KAAK,EAAE,GAAG,KAAK,UAAU,EAAE,CAAC;gBACrC,KAAK,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAA;YAClC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,iBAAiB;QACnB,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAA;IAC3B,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAC/B,GAAG,EACH,WAAW,EACX,WAAW,EACX,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,yBAAyB,EACzB,eAAe,GAAG,WAAW,EAC7B,QAAQ,GACc;IACtB,MAAM,KAAK,GAAG,CACZ,MAAC,WAAW,IAAC,MAAM,EAAE,GAAG,aACtB,MAAC,WAAW,IAAC,GAAG,EAAE,GAAG,aAClB,QAAQ,EACT,KAAC,mBAAmB,IAAC,QAAQ,EAAE,CAAC,CAAC,yBAAyB,GAAI,EAC7D,CAAC,cAAc,IAAI,KAAC,gBAAgB,KAAG,EACvC,CAAC,aAAa,IAAI,KAAC,eAAe,KAAG,EACrC,CAAC,oBAAoB,IAAI,KAAC,gBAAgB,KAAG,IAClC,EACb,CAAC,WAAW,IAAI,CACf,KAAC,OAAO,IAAC,QAAQ,EAAE,eAAe,EAAE,UAAU,QAAC,KAAK,EAAC,OAAO,GAAG,CAChE,IACW,CACf,CAAA;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,KAAC,mBAAmB,IAAC,MAAM,EAAE,WAAW,YAAG,KAAK,GAAuB,CAAA;IAChF,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC"}
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;AAiDxD;;;;;GAKG;AACH;;;;;GAKG;AACH,SAAS,oBAAoB,CAAC,EAC5B,GAAG,EACH,cAAc,GAIf;IACC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,cAAc,KAAK,IAAI;YAAE,OAAM;QACnC,MAAM,OAAO,GAAG,KAAK,EAAE,CAAe,EAAE,EAAE;YACxC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAyF,CAAA;YACxG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,kBAAkB,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE,OAAM;YACvE,MAAM,GAAG,GAAG;gBACV,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAA;YACD,IAAI,CAAC;gBACH,IAAI,cAAc,EAAE,CAAC;oBACnB,MAAM,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAA;gBACrC,CAAC;qBAAM,CAAC;oBACN,2DAA2D;oBAC3D,8DAA8D;oBAC9D,qCAAqC;oBACrC,MAAM,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAA;gBAC7C,CAAC;gBACD,CAAC,CAAC,MAAM,EAAE,WAAW,CACnB,EAAE,IAAI,EAAE,oBAAoB,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,EACtD,EAAE,YAAY,EAAE,GAAG,EAA8B,CAClD,CAAA;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,CAAC,CAAC,MAAM,EAAE,WAAW,CACnB;oBACE,IAAI,EAAE,yBAAyB;oBAC/B,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;iBACxD,EACD,EAAE,YAAY,EAAE,GAAG,EAA8B,CAClD,CAAA;YACH,CAAC;QACH,CAAC,CAAA;QACD,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;QAC3C,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;IAC7D,CAAC,EAAE,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAA;IACzB,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,mBAAmB,CAAC,EAAE,QAAQ,EAAyB;IAC9D,MAAM,EAAE,WAAW,EAAE,GAAG,aAAa,EAAE,CAAA;IACvC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,QAAQ;YAAE,OAAM;QACpB,IAAI,CAAC,WAAW;YAAE,OAAM;QACxB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,gBAAgB,CAAC,QAAQ,EAAS,CAAA;YAChD,IAAI,KAAK,EAAE,KAAK,EAAE,CAAC;gBACjB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;oBAAE,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACrE,CAAC;YACD,IAAI,KAAK,EAAE,UAAU,EAAE,CAAC;gBACtB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;oBAAE,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;YAC/E,CAAC;YACD,IAAI,OAAO,KAAK,EAAE,GAAG,KAAK,UAAU,EAAE,CAAC;gBACrC,KAAK,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAA;YAClC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,iBAAiB;QACnB,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAA;IAC3B,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAC/B,GAAG,EACH,WAAW,EACX,WAAW,EACX,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,yBAAyB,EACzB,cAAc,EACd,eAAe,GAAG,WAAW,EAC7B,QAAQ,GACc;IACtB,MAAM,KAAK,GAAG,CACZ,MAAC,WAAW,IAAC,MAAM,EAAE,GAAG,aACtB,MAAC,WAAW,IAAC,GAAG,EAAE,GAAG,aAClB,QAAQ,EACT,KAAC,mBAAmB,IAAC,QAAQ,EAAE,CAAC,CAAC,yBAAyB,GAAI,EAC9D,KAAC,oBAAoB,IAAC,GAAG,EAAE,GAAG,EAAE,cAAc,EAAE,cAAc,GAAI,EACjE,CAAC,cAAc,IAAI,KAAC,gBAAgB,KAAG,EACvC,CAAC,aAAa,IAAI,KAAC,eAAe,KAAG,EACrC,CAAC,oBAAoB,IAAI,KAAC,gBAAgB,KAAG,IAClC,EACb,CAAC,WAAW,IAAI,CACf,KAAC,OAAO,IAAC,QAAQ,EAAE,eAAe,EAAE,UAAU,QAAC,KAAK,EAAC,OAAO,GAAG,CAChE,IACW,CACf,CAAA;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,KAAC,mBAAmB,IAAC,MAAM,EAAE,WAAW,YAAG,KAAK,GAAuB,CAAA;IAChF,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@asteby/metacore-app-providers",
3
- "version": "0.5.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"