@asteby/metacore-app-providers 0.3.0 → 0.5.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.
package/dist/index.d.ts CHANGED
@@ -4,4 +4,5 @@ export { LayoutProvider, useLayout, type Collapsible, type Variant, } from './la
4
4
  export { SearchProvider, useSearch, type SearchProviderProps } from './search-provider';
5
5
  export { getCookie, setCookie, removeCookie } from './cookies';
6
6
  export { PlatformConfigProvider, usePlatformConfig, applyBranding, applyCachedBranding, FALLBACK_BRANDING, type PlatformBranding, type BrandingFetcher, type PlatformConfigProviderProps, } from './platform-config-provider';
7
+ export { MetacoreAppShell, type MetacoreAppShellProps, } from './metacore-app-shell';
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAA;AACtF,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAC/E,OAAO,EACL,cAAc,EACd,SAAS,EACT,KAAK,WAAW,EAChB,KAAK,OAAO,GACb,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC9D,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,2BAA2B,GACjC,MAAM,4BAA4B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAA;AACtF,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAC/E,OAAO,EACL,cAAc,EACd,SAAS,EACT,KAAK,WAAW,EAChB,KAAK,OAAO,GACb,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC9D,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,2BAA2B,GACjC,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,gBAAgB,EAChB,KAAK,qBAAqB,GAC3B,MAAM,sBAAsB,CAAA"}
package/dist/index.js CHANGED
@@ -4,4 +4,5 @@ export { LayoutProvider, useLayout, } from './layout-provider';
4
4
  export { SearchProvider, useSearch } from './search-provider';
5
5
  export { getCookie, setCookie, removeCookie } from './cookies';
6
6
  export { PlatformConfigProvider, usePlatformConfig, applyBranding, applyCachedBranding, FALLBACK_BRANDING, } from './platform-config-provider';
7
+ export { MetacoreAppShell, } from './metacore-app-shell';
7
8
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAkB,MAAM,sBAAsB,CAAA;AACtF,OAAO,EAAE,YAAY,EAAE,OAAO,EAA0B,MAAM,iBAAiB,CAAA;AAC/E,OAAO,EACL,cAAc,EACd,SAAS,GAGV,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,cAAc,EAAE,SAAS,EAA4B,MAAM,mBAAmB,CAAA;AACvF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC9D,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,iBAAiB,GAIlB,MAAM,4BAA4B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAkB,MAAM,sBAAsB,CAAA;AACtF,OAAO,EAAE,YAAY,EAAE,OAAO,EAA0B,MAAM,iBAAiB,CAAA;AAC/E,OAAO,EACL,cAAc,EACd,SAAS,GAGV,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,cAAc,EAAE,SAAS,EAA4B,MAAM,mBAAmB,CAAA;AACvF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC9D,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,iBAAiB,GAIlB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,gBAAgB,GAEjB,MAAM,sBAAsB,CAAA"}
@@ -0,0 +1,22 @@
1
+ import * as React from 'react';
2
+ export interface MetacoreAppShellProps {
3
+ /** Axios-compatible API client used by ApiProvider + PWAProvider. */
4
+ api: any;
5
+ /** TanStack QueryClient instance. Optional — skipped if not supplied. */
6
+ queryClient?: any;
7
+ /** Hide the bundled <Toaster /> (e.g. when the app already mounts one). */
8
+ hideToaster?: boolean;
9
+ /** Hide the PWA install prompt button. */
10
+ hidePWAInstall?: boolean;
11
+ /** Hide the PWA update prompt button (banner that opens on a new SW). */
12
+ hidePWAUpdate?: boolean;
13
+ /** Hide the offline indicator. */
14
+ hideOfflineIndicator?: boolean;
15
+ /** Disable the metadata-cache invalidation that fires on SW updates. */
16
+ disableMetadataInvalidate?: boolean;
17
+ /** Toaster position; passed straight to sonner. */
18
+ toasterPosition?: 'top-left' | 'top-right' | 'top-center' | 'bottom-left' | 'bottom-right' | 'bottom-center';
19
+ children: React.ReactNode;
20
+ }
21
+ export declare function MetacoreAppShell({ api, queryClient, hideToaster, hidePWAInstall, hidePWAUpdate, hideOfflineIndicator, disableMetadataInvalidate, toasterPosition, children, }: MetacoreAppShellProps): import("react/jsx-runtime").JSX.Element;
22
+ //# sourceMappingURL=metacore-app-shell.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,66 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // MetacoreAppShell — single-line wiring of every provider an app needs to
3
+ // run on the metacore platform: API context, query client, PWA install +
4
+ // update prompts, offline indicator, toasts, and stale-while-revalidate
5
+ // metadata cache invalidation when a service-worker update is applied.
6
+ //
7
+ // Apps mount it once and forget about the wedding-cake of providers:
8
+ //
9
+ // import { MetacoreAppShell } from '@asteby/metacore-app-providers'
10
+ // import { api } from './lib/api'
11
+ //
12
+ // ReactDOM.createRoot(...).render(
13
+ // <MetacoreAppShell api={api} queryClient={queryClient}>
14
+ // <RouterProvider router={router} />
15
+ // </MetacoreAppShell>
16
+ // )
17
+ //
18
+ // Peer deps (`@asteby/metacore-pwa`, `@asteby/metacore-runtime-react`,
19
+ // `@asteby/metacore-ui`) are required — the shell is the full kit. Apps that
20
+ // want a subset wire providers directly and skip the shell.
21
+ import * as React from 'react';
22
+ import { QueryClientProvider } from '@tanstack/react-query';
23
+ import { ApiProvider, useMetadataCache } from '@asteby/metacore-runtime-react';
24
+ import { PWAProvider, PWAInstallPrompt, PWAUpdatePrompt, OfflineIndicator, usePWAContext, } from '@asteby/metacore-pwa';
25
+ import { Toaster } from '@asteby/metacore-ui/primitives';
26
+ /**
27
+ * Drops every cached table/modal metadata entry the moment the PWA layer
28
+ * tells us a new service worker has finished installing. The next mount of
29
+ * <DynamicTable> hits the network instead of replaying yesterday's
30
+ * column / filter / actions definitions.
31
+ */
32
+ function MetadataInvalidator({ disabled }) {
33
+ const { needRefresh } = usePWAContext();
34
+ React.useEffect(() => {
35
+ if (disabled)
36
+ return;
37
+ if (!needRefresh)
38
+ return;
39
+ try {
40
+ const state = useMetadataCache.getState();
41
+ if (state?.cache) {
42
+ for (const key of Object.keys(state.cache))
43
+ delete state.cache[key];
44
+ }
45
+ if (state?.modalCache) {
46
+ for (const key of Object.keys(state.modalCache))
47
+ delete state.modalCache[key];
48
+ }
49
+ if (typeof state?.set === 'function') {
50
+ state.set({ prefetched: false });
51
+ }
52
+ }
53
+ catch {
54
+ /* best-effort */
55
+ }
56
+ }, [disabled, needRefresh]);
57
+ return null;
58
+ }
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' }))] }));
61
+ if (queryClient) {
62
+ return _jsx(QueryClientProvider, { client: queryClient, children: inner });
63
+ }
64
+ return inner;
65
+ }
66
+ //# sourceMappingURL=metacore-app-shell.js.map
@@ -0,0 +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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@asteby/metacore-app-providers",
3
- "version": "0.3.0",
3
+ "version": "0.5.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": {
@@ -25,7 +25,21 @@
25
25
  "@radix-ui/react-direction": "^1.1.0",
26
26
  "@tanstack/react-query": ">=5",
27
27
  "react": ">=18",
28
- "react-dom": ">=18"
28
+ "react-dom": ">=18",
29
+ "@asteby/metacore-pwa": ">=0.3.1",
30
+ "@asteby/metacore-runtime-react": ">=7.1.5",
31
+ "@asteby/metacore-ui": ">=0.7"
32
+ },
33
+ "peerDependenciesMeta": {
34
+ "@asteby/metacore-pwa": {
35
+ "optional": true
36
+ },
37
+ "@asteby/metacore-runtime-react": {
38
+ "optional": true
39
+ },
40
+ "@asteby/metacore-ui": {
41
+ "optional": true
42
+ }
29
43
  },
30
44
  "devDependencies": {
31
45
  "@radix-ui/react-direction": "^1.1.1",
@@ -34,7 +48,10 @@
34
48
  "@types/react-dom": "^19.0.0",
35
49
  "react": "^19.2.4",
36
50
  "react-dom": "^19.2.4",
37
- "typescript": "^5.6.0"
51
+ "typescript": "^5.6.0",
52
+ "@asteby/metacore-pwa": "0.3.1",
53
+ "@asteby/metacore-runtime-react": "7.1.5",
54
+ "@asteby/metacore-ui": "0.7.0"
38
55
  },
39
56
  "publishConfig": {
40
57
  "access": "public"