@viasoftbr/shared-ui 0.0.4 → 0.0.6

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.
@@ -10,9 +10,17 @@ interface AuthContextType {
10
10
  logout: () => Promise<void>;
11
11
  hasRole: (roles: Role | Role[]) => boolean;
12
12
  }
13
- export declare const AuthProvider: React.FC<{
13
+ export declare const AuthContext: React.Context<AuthContextType | undefined>;
14
+ export interface AuthProviderProps {
14
15
  children: React.ReactNode;
15
16
  onNavigate?: (path: string) => void;
16
- }>;
17
+ /** Optional storage for federated/SSR environments (defaults to window.localStorage when available) */
18
+ storage?: Storage | null;
19
+ /** Optional auth service to allow injection in remotes/tests */
20
+ authService?: any;
21
+ initialUser?: User | null;
22
+ initialAccessToken?: string | null;
23
+ }
24
+ export declare const AuthProvider: React.FC<AuthProviderProps>;
17
25
  export declare function useAuth(): AuthContextType;
18
26
  export {};
@@ -4,8 +4,10 @@ interface ThemeContextType {
4
4
  theme: Theme;
5
5
  toggleTheme: () => void;
6
6
  }
7
- export declare function ThemeProvider({ children }: {
7
+ export declare const ThemeContext: React.Context<ThemeContextType | undefined>;
8
+ export declare function ThemeProvider({ children, storage }: {
8
9
  children: React.ReactNode;
10
+ storage?: Storage | null;
9
11
  }): import("react/jsx-runtime").JSX.Element;
10
12
  export declare function useTheme(): ThemeContextType;
11
13
  export {};
@@ -1,4 +1,4 @@
1
- import { ThemeProvider } from './ThemeContext';
2
- import { AuthProvider, useAuth } from './AuthContext';
1
+ import { ThemeProvider, ThemeContext } from './ThemeContext';
2
+ import { AuthProvider, useAuth, AuthContext } from './AuthContext';
3
3
  import { SharedUiProvider } from './SharedUiProvider';
4
- export { ThemeProvider, AuthProvider, useAuth, SharedUiProvider, };
4
+ export { ThemeProvider, ThemeContext, AuthProvider, AuthContext, useAuth, SharedUiProvider, };
package/dist/context.cjs CHANGED
@@ -35,8 +35,10 @@ var __publicField = (obj, key, value) => {
35
35
  // src/context/index.ts
36
36
  var context_exports = {};
37
37
  __export(context_exports, {
38
+ AuthContext: () => AuthContext,
38
39
  AuthProvider: () => AuthProvider,
39
40
  SharedUiProvider: () => SharedUiProvider,
41
+ ThemeContext: () => ThemeContext,
40
42
  ThemeProvider: () => ThemeProvider,
41
43
  useAuth: () => useAuth
42
44
  });
@@ -46,25 +48,33 @@ module.exports = __toCommonJS(context_exports);
46
48
  var import_react = require("react");
47
49
  var import_jsx_runtime = require("react/jsx-runtime");
48
50
  var ThemeContext = (0, import_react.createContext)(void 0);
49
- function ThemeProvider({ children }) {
51
+ function ThemeProvider({ children, storage }) {
52
+ const resolvedStorage = storage ?? (typeof window !== "undefined" ? window.localStorage : null);
50
53
  const [theme, setTheme] = (0, import_react.useState)(() => {
51
- const savedTheme = localStorage.getItem("theme");
52
- const systemPreference = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
53
- return savedTheme || systemPreference;
54
+ try {
55
+ if (!resolvedStorage)
56
+ return "light";
57
+ const savedTheme = resolvedStorage.getItem("theme");
58
+ const systemPreference = typeof window !== "undefined" && window.matchMedia?.("(prefers-color-scheme: dark)").matches ? "dark" : "light";
59
+ return savedTheme ?? systemPreference;
60
+ } catch {
61
+ return "light";
62
+ }
54
63
  });
55
64
  (0, import_react.useEffect)(() => {
56
- const root = document.documentElement;
57
- if (theme === "dark") {
58
- root.classList.add("dark");
59
- } else {
60
- root.classList.remove("dark");
65
+ if (typeof document !== "undefined") {
66
+ const root = document.documentElement;
67
+ root.classList.toggle("dark", theme === "dark");
61
68
  }
62
- localStorage.setItem("theme", theme);
63
- }, [theme]);
69
+ try {
70
+ resolvedStorage?.setItem("theme", theme);
71
+ } catch {
72
+ }
73
+ }, [theme, resolvedStorage]);
64
74
  const toggleTheme = () => {
65
- setTheme((prevTheme) => prevTheme === "light" ? "dark" : "light");
75
+ setTheme((prev) => prev === "light" ? "dark" : "light");
66
76
  };
67
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThemeContext.Provider, { value: { theme, toggleTheme }, children });
77
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThemeContext, { value: { theme, toggleTheme }, children });
68
78
  }
69
79
 
70
80
  // src/context/AuthContext.tsx
@@ -2854,69 +2864,6 @@ var authService = {
2854
2864
  }
2855
2865
  };
2856
2866
 
2857
- // src/services/loadRemoteModule.ts
2858
- var React2 = __toESM(require("react"), 1);
2859
- var ReactDOM = __toESM(require("react-dom"), 1);
2860
-
2861
- // src/services/metadataLoader.ts
2862
- var MetadataLoader = class {
2863
- constructor() {
2864
- __publicField(this, "metadataCache", /* @__PURE__ */ new Map());
2865
- }
2866
- async loadMetadata(metadataUrl) {
2867
- if (this.metadataCache.has(metadataUrl)) {
2868
- return this.metadataCache.get(metadataUrl) || [];
2869
- }
2870
- try {
2871
- const response = await fetch(metadataUrl);
2872
- console.log(response);
2873
- if (!response.ok) {
2874
- throw new Error(`Failed to fetch metadata: ${response.statusText}`);
2875
- }
2876
- const data = await response.json();
2877
- let metadata;
2878
- if (Array.isArray(data)) {
2879
- metadata = data;
2880
- } else if (data.pages && Array.isArray(data.pages)) {
2881
- metadata = data.pages;
2882
- } else {
2883
- throw new Error(
2884
- "Invalid metadata format: expected array or object with pages property"
2885
- );
2886
- }
2887
- metadata.forEach((page, index) => {
2888
- if (!page.id || !page.name || !page.path || !page.url) {
2889
- throw new Error(
2890
- `Invalid page metadata at index ${index}: missing required fields`
2891
- );
2892
- }
2893
- });
2894
- this.metadataCache.set(metadataUrl, metadata);
2895
- return metadata;
2896
- } catch (error) {
2897
- console.warn(`Failed to load metadata from ${metadataUrl}:`, error);
2898
- return [];
2899
- }
2900
- }
2901
- async loadFromDirectory(directoryUrl) {
2902
- try {
2903
- const manifestUrl = `${directoryUrl}/manifest.json`;
2904
- return await this.loadMetadata(manifestUrl);
2905
- } catch (error) {
2906
- throw new Error(
2907
- `Directory manifest not found at ${directoryUrl}/manifest.json: ${error}`
2908
- );
2909
- }
2910
- }
2911
- clearCache() {
2912
- this.metadataCache.clear();
2913
- }
2914
- getCachedMetadata(metadataUrl) {
2915
- return this.metadataCache.get(metadataUrl);
2916
- }
2917
- };
2918
- var metadataLoader = new MetadataLoader();
2919
-
2920
2867
  // src/services/registry.ts
2921
2868
  var PluginRegistryImpl = class {
2922
2869
  constructor() {
@@ -3001,20 +2948,27 @@ var hostConfigLoader = new HostConfigLoader();
3001
2948
  // src/context/AuthContext.tsx
3002
2949
  var import_jsx_runtime2 = require("react/jsx-runtime");
3003
2950
  var AuthContext = (0, import_react2.createContext)(void 0);
3004
- var AuthProvider = ({ children, onNavigate }) => {
3005
- const [user, setUser] = (0, import_react2.useState)(null);
3006
- const [accessToken, setToken] = (0, import_react2.useState)(null);
2951
+ var AuthProvider = ({
2952
+ children,
2953
+ onNavigate,
2954
+ storage = typeof window !== "undefined" ? window.localStorage : null,
2955
+ authService: authService2 = authService,
2956
+ initialUser = null,
2957
+ initialAccessToken = null
2958
+ }) => {
2959
+ const [user, setUser] = (0, import_react2.useState)(initialUser);
2960
+ const [accessToken, setToken] = (0, import_react2.useState)(initialAccessToken ?? null);
3007
2961
  const [loading, setLoading] = (0, import_react2.useState)(true);
3008
2962
  (0, import_react2.useEffect)(() => {
3009
2963
  try {
3010
- const storedUser = localStorage.getItem("user");
2964
+ const storedUser = storage?.getItem("user");
3011
2965
  if (storedUser)
3012
2966
  setUser(JSON.parse(storedUser));
3013
2967
  } catch {
3014
2968
  }
3015
2969
  try {
3016
- const savedAccess = localStorage.getItem("accessToken");
3017
- const savedRefresh = localStorage.getItem("refreshToken");
2970
+ const savedAccess = storage?.getItem("accessToken");
2971
+ const savedRefresh = storage?.getItem("refreshToken");
3018
2972
  if (savedAccess) {
3019
2973
  setToken(savedAccess);
3020
2974
  setAccessToken(savedAccess);
@@ -3025,15 +2979,17 @@ var AuthProvider = ({ children, onNavigate }) => {
3025
2979
  } catch {
3026
2980
  }
3027
2981
  setLoading(false);
3028
- }, []);
2982
+ }, [storage]);
3029
2983
  const login = async (username, password, options) => {
3030
- const resp = await authService.login(username, password);
2984
+ const resp = await authService2.login(username, password);
3031
2985
  setToken(resp.accessToken);
3032
2986
  setAccessToken(resp.accessToken);
3033
2987
  setRefreshToken(resp.refreshToken);
3034
2988
  setUser(resp.user);
3035
2989
  try {
3036
- localStorage.setItem("user", JSON.stringify(resp.user));
2990
+ storage?.setItem("user", JSON.stringify(resp.user));
2991
+ storage?.setItem("accessToken", resp.accessToken);
2992
+ storage?.setItem("refreshToken", resp.refreshToken);
3037
2993
  } catch {
3038
2994
  }
3039
2995
  if (options?.redirect !== false)
@@ -3041,13 +2997,15 @@ var AuthProvider = ({ children, onNavigate }) => {
3041
2997
  };
3042
2998
  const logout = async () => {
3043
2999
  try {
3044
- await authService.logout();
3000
+ await authService2.logout();
3045
3001
  } finally {
3046
3002
  setToken(null);
3047
3003
  clearTokens();
3048
3004
  setUser(null);
3049
3005
  try {
3050
- localStorage.removeItem("user");
3006
+ storage?.removeItem("user");
3007
+ storage?.removeItem("accessToken");
3008
+ storage?.removeItem("refreshToken");
3051
3009
  } catch {
3052
3010
  }
3053
3011
  onNavigate?.("/login");
@@ -3059,20 +3017,23 @@ var AuthProvider = ({ children, onNavigate }) => {
3059
3017
  const want = Array.isArray(roles) ? roles : [roles];
3060
3018
  return want.some((r) => user.role === r);
3061
3019
  };
3062
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(AuthContext.Provider, { value: { user, accessToken, loading, login, logout, hasRole }, children });
3020
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(AuthContext, { value: { user, accessToken, loading, login, logout, hasRole }, children });
3063
3021
  };
3064
3022
  function useAuth() {
3065
- const ctx = (0, import_react2.useContext)(AuthContext);
3023
+ const ctx = (0, import_react2.use)(AuthContext);
3066
3024
  if (!ctx)
3067
3025
  throw new Error("useAuth must be used within AuthProvider");
3068
3026
  return ctx;
3069
3027
  }
3070
3028
 
3071
3029
  // src/context/SharedUiProvider.tsx
3072
- var import_react3 = __toESM(require("react"), 1);
3030
+ var import_react3 = __toESM(require("react"));
3073
3031
  var import_react_query = require("@tanstack/react-query");
3074
3032
  var import_jsx_runtime3 = require("react/jsx-runtime");
3075
3033
  function SharedUiProvider({ children, client }) {
3076
- const internal = import_react3.default.useMemo(() => client ?? new import_react_query.QueryClient(), [client]);
3034
+ const ref = import_react3.default.useRef(null);
3035
+ if (!ref.current)
3036
+ ref.current = client ?? new import_react_query.QueryClient();
3037
+ const internal = ref.current;
3077
3038
  return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react_query.QueryClientProvider, { client: internal, children });
3078
3039
  }
package/dist/context.js CHANGED
@@ -10,32 +10,40 @@ var __publicField = (obj, key, value) => {
10
10
  };
11
11
 
12
12
  // src/context/ThemeContext.tsx
13
- import { createContext, useContext, useEffect, useState } from "react";
13
+ import { createContext, use, useEffect, useState } from "react";
14
14
  import { jsx } from "react/jsx-runtime";
15
15
  var ThemeContext = createContext(void 0);
16
- function ThemeProvider({ children }) {
16
+ function ThemeProvider({ children, storage }) {
17
+ const resolvedStorage = storage ?? (typeof window !== "undefined" ? window.localStorage : null);
17
18
  const [theme, setTheme] = useState(() => {
18
- const savedTheme = localStorage.getItem("theme");
19
- const systemPreference = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
20
- return savedTheme || systemPreference;
19
+ try {
20
+ if (!resolvedStorage)
21
+ return "light";
22
+ const savedTheme = resolvedStorage.getItem("theme");
23
+ const systemPreference = typeof window !== "undefined" && window.matchMedia?.("(prefers-color-scheme: dark)").matches ? "dark" : "light";
24
+ return savedTheme ?? systemPreference;
25
+ } catch {
26
+ return "light";
27
+ }
21
28
  });
22
29
  useEffect(() => {
23
- const root = document.documentElement;
24
- if (theme === "dark") {
25
- root.classList.add("dark");
26
- } else {
27
- root.classList.remove("dark");
30
+ if (typeof document !== "undefined") {
31
+ const root = document.documentElement;
32
+ root.classList.toggle("dark", theme === "dark");
28
33
  }
29
- localStorage.setItem("theme", theme);
30
- }, [theme]);
34
+ try {
35
+ resolvedStorage?.setItem("theme", theme);
36
+ } catch {
37
+ }
38
+ }, [theme, resolvedStorage]);
31
39
  const toggleTheme = () => {
32
- setTheme((prevTheme) => prevTheme === "light" ? "dark" : "light");
40
+ setTheme((prev) => prev === "light" ? "dark" : "light");
33
41
  };
34
- return /* @__PURE__ */ jsx(ThemeContext.Provider, { value: { theme, toggleTheme }, children });
42
+ return /* @__PURE__ */ jsx(ThemeContext, { value: { theme, toggleTheme }, children });
35
43
  }
36
44
 
37
45
  // src/context/AuthContext.tsx
38
- import { createContext as createContext2, useContext as useContext2, useEffect as useEffect2, useState as useState2 } from "react";
46
+ import { createContext as createContext2, use as use2, useEffect as useEffect2, useState as useState2 } from "react";
39
47
 
40
48
  // node_modules/.pnpm/axios@1.13.4/node_modules/axios/lib/helpers/bind.js
41
49
  function bind(fn, thisArg) {
@@ -2820,69 +2828,6 @@ var authService = {
2820
2828
  }
2821
2829
  };
2822
2830
 
2823
- // src/services/loadRemoteModule.ts
2824
- import * as React2 from "react";
2825
- import * as ReactDOM from "react-dom";
2826
-
2827
- // src/services/metadataLoader.ts
2828
- var MetadataLoader = class {
2829
- constructor() {
2830
- __publicField(this, "metadataCache", /* @__PURE__ */ new Map());
2831
- }
2832
- async loadMetadata(metadataUrl) {
2833
- if (this.metadataCache.has(metadataUrl)) {
2834
- return this.metadataCache.get(metadataUrl) || [];
2835
- }
2836
- try {
2837
- const response = await fetch(metadataUrl);
2838
- console.log(response);
2839
- if (!response.ok) {
2840
- throw new Error(`Failed to fetch metadata: ${response.statusText}`);
2841
- }
2842
- const data = await response.json();
2843
- let metadata;
2844
- if (Array.isArray(data)) {
2845
- metadata = data;
2846
- } else if (data.pages && Array.isArray(data.pages)) {
2847
- metadata = data.pages;
2848
- } else {
2849
- throw new Error(
2850
- "Invalid metadata format: expected array or object with pages property"
2851
- );
2852
- }
2853
- metadata.forEach((page, index) => {
2854
- if (!page.id || !page.name || !page.path || !page.url) {
2855
- throw new Error(
2856
- `Invalid page metadata at index ${index}: missing required fields`
2857
- );
2858
- }
2859
- });
2860
- this.metadataCache.set(metadataUrl, metadata);
2861
- return metadata;
2862
- } catch (error) {
2863
- console.warn(`Failed to load metadata from ${metadataUrl}:`, error);
2864
- return [];
2865
- }
2866
- }
2867
- async loadFromDirectory(directoryUrl) {
2868
- try {
2869
- const manifestUrl = `${directoryUrl}/manifest.json`;
2870
- return await this.loadMetadata(manifestUrl);
2871
- } catch (error) {
2872
- throw new Error(
2873
- `Directory manifest not found at ${directoryUrl}/manifest.json: ${error}`
2874
- );
2875
- }
2876
- }
2877
- clearCache() {
2878
- this.metadataCache.clear();
2879
- }
2880
- getCachedMetadata(metadataUrl) {
2881
- return this.metadataCache.get(metadataUrl);
2882
- }
2883
- };
2884
- var metadataLoader = new MetadataLoader();
2885
-
2886
2831
  // src/services/registry.ts
2887
2832
  var PluginRegistryImpl = class {
2888
2833
  constructor() {
@@ -2967,20 +2912,27 @@ var hostConfigLoader = new HostConfigLoader();
2967
2912
  // src/context/AuthContext.tsx
2968
2913
  import { jsx as jsx2 } from "react/jsx-runtime";
2969
2914
  var AuthContext = createContext2(void 0);
2970
- var AuthProvider = ({ children, onNavigate }) => {
2971
- const [user, setUser] = useState2(null);
2972
- const [accessToken, setToken] = useState2(null);
2915
+ var AuthProvider = ({
2916
+ children,
2917
+ onNavigate,
2918
+ storage = typeof window !== "undefined" ? window.localStorage : null,
2919
+ authService: authService2 = authService,
2920
+ initialUser = null,
2921
+ initialAccessToken = null
2922
+ }) => {
2923
+ const [user, setUser] = useState2(initialUser);
2924
+ const [accessToken, setToken] = useState2(initialAccessToken ?? null);
2973
2925
  const [loading, setLoading] = useState2(true);
2974
2926
  useEffect2(() => {
2975
2927
  try {
2976
- const storedUser = localStorage.getItem("user");
2928
+ const storedUser = storage?.getItem("user");
2977
2929
  if (storedUser)
2978
2930
  setUser(JSON.parse(storedUser));
2979
2931
  } catch {
2980
2932
  }
2981
2933
  try {
2982
- const savedAccess = localStorage.getItem("accessToken");
2983
- const savedRefresh = localStorage.getItem("refreshToken");
2934
+ const savedAccess = storage?.getItem("accessToken");
2935
+ const savedRefresh = storage?.getItem("refreshToken");
2984
2936
  if (savedAccess) {
2985
2937
  setToken(savedAccess);
2986
2938
  setAccessToken(savedAccess);
@@ -2991,15 +2943,17 @@ var AuthProvider = ({ children, onNavigate }) => {
2991
2943
  } catch {
2992
2944
  }
2993
2945
  setLoading(false);
2994
- }, []);
2946
+ }, [storage]);
2995
2947
  const login = async (username, password, options) => {
2996
- const resp = await authService.login(username, password);
2948
+ const resp = await authService2.login(username, password);
2997
2949
  setToken(resp.accessToken);
2998
2950
  setAccessToken(resp.accessToken);
2999
2951
  setRefreshToken(resp.refreshToken);
3000
2952
  setUser(resp.user);
3001
2953
  try {
3002
- localStorage.setItem("user", JSON.stringify(resp.user));
2954
+ storage?.setItem("user", JSON.stringify(resp.user));
2955
+ storage?.setItem("accessToken", resp.accessToken);
2956
+ storage?.setItem("refreshToken", resp.refreshToken);
3003
2957
  } catch {
3004
2958
  }
3005
2959
  if (options?.redirect !== false)
@@ -3007,13 +2961,15 @@ var AuthProvider = ({ children, onNavigate }) => {
3007
2961
  };
3008
2962
  const logout = async () => {
3009
2963
  try {
3010
- await authService.logout();
2964
+ await authService2.logout();
3011
2965
  } finally {
3012
2966
  setToken(null);
3013
2967
  clearTokens();
3014
2968
  setUser(null);
3015
2969
  try {
3016
- localStorage.removeItem("user");
2970
+ storage?.removeItem("user");
2971
+ storage?.removeItem("accessToken");
2972
+ storage?.removeItem("refreshToken");
3017
2973
  } catch {
3018
2974
  }
3019
2975
  onNavigate?.("/login");
@@ -3025,26 +2981,31 @@ var AuthProvider = ({ children, onNavigate }) => {
3025
2981
  const want = Array.isArray(roles) ? roles : [roles];
3026
2982
  return want.some((r) => user.role === r);
3027
2983
  };
3028
- return /* @__PURE__ */ jsx2(AuthContext.Provider, { value: { user, accessToken, loading, login, logout, hasRole }, children });
2984
+ return /* @__PURE__ */ jsx2(AuthContext, { value: { user, accessToken, loading, login, logout, hasRole }, children });
3029
2985
  };
3030
2986
  function useAuth() {
3031
- const ctx = useContext2(AuthContext);
2987
+ const ctx = use2(AuthContext);
3032
2988
  if (!ctx)
3033
2989
  throw new Error("useAuth must be used within AuthProvider");
3034
2990
  return ctx;
3035
2991
  }
3036
2992
 
3037
2993
  // src/context/SharedUiProvider.tsx
3038
- import React4 from "react";
2994
+ import React3 from "react";
3039
2995
  import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
3040
2996
  import { jsx as jsx3 } from "react/jsx-runtime";
3041
2997
  function SharedUiProvider({ children, client }) {
3042
- const internal = React4.useMemo(() => client ?? new QueryClient(), [client]);
2998
+ const ref = React3.useRef(null);
2999
+ if (!ref.current)
3000
+ ref.current = client ?? new QueryClient();
3001
+ const internal = ref.current;
3043
3002
  return /* @__PURE__ */ jsx3(QueryClientProvider, { client: internal, children });
3044
3003
  }
3045
3004
  export {
3005
+ AuthContext,
3046
3006
  AuthProvider,
3047
3007
  SharedUiProvider,
3008
+ ThemeContext,
3048
3009
  ThemeProvider,
3049
3010
  useAuth
3050
3011
  };
package/dist/hooks.cjs CHANGED
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
- var __create = Object.create;
3
2
  var __defProp = Object.defineProperty;
4
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
6
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
7
  var __export = (target, all3) => {
@@ -18,14 +16,6 @@ var __copyProps = (to, from, except, desc) => {
18
16
  }
19
17
  return to;
20
18
  };
21
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
- // If the importer is in node compatibility mode or this is not an ESM
23
- // file that has been converted to a CommonJS file using a Babel-
24
- // compatible transform (i.e. "__esModule" has not been set), then set
25
- // "default" to the CommonJS "module.exports" for node compatibility.
26
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
- mod
28
- ));
29
19
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
20
  var __publicField = (obj, key, value) => {
31
21
  __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
@@ -2871,69 +2861,6 @@ var fetchApi = {
2871
2861
  }
2872
2862
  };
2873
2863
 
2874
- // src/services/loadRemoteModule.ts
2875
- var React = __toESM(require("react"), 1);
2876
- var ReactDOM = __toESM(require("react-dom"), 1);
2877
-
2878
- // src/services/metadataLoader.ts
2879
- var MetadataLoader = class {
2880
- constructor() {
2881
- __publicField(this, "metadataCache", /* @__PURE__ */ new Map());
2882
- }
2883
- async loadMetadata(metadataUrl) {
2884
- if (this.metadataCache.has(metadataUrl)) {
2885
- return this.metadataCache.get(metadataUrl) || [];
2886
- }
2887
- try {
2888
- const response = await fetch(metadataUrl);
2889
- console.log(response);
2890
- if (!response.ok) {
2891
- throw new Error(`Failed to fetch metadata: ${response.statusText}`);
2892
- }
2893
- const data = await response.json();
2894
- let metadata;
2895
- if (Array.isArray(data)) {
2896
- metadata = data;
2897
- } else if (data.pages && Array.isArray(data.pages)) {
2898
- metadata = data.pages;
2899
- } else {
2900
- throw new Error(
2901
- "Invalid metadata format: expected array or object with pages property"
2902
- );
2903
- }
2904
- metadata.forEach((page, index) => {
2905
- if (!page.id || !page.name || !page.path || !page.url) {
2906
- throw new Error(
2907
- `Invalid page metadata at index ${index}: missing required fields`
2908
- );
2909
- }
2910
- });
2911
- this.metadataCache.set(metadataUrl, metadata);
2912
- return metadata;
2913
- } catch (error) {
2914
- console.warn(`Failed to load metadata from ${metadataUrl}:`, error);
2915
- return [];
2916
- }
2917
- }
2918
- async loadFromDirectory(directoryUrl) {
2919
- try {
2920
- const manifestUrl = `${directoryUrl}/manifest.json`;
2921
- return await this.loadMetadata(manifestUrl);
2922
- } catch (error) {
2923
- throw new Error(
2924
- `Directory manifest not found at ${directoryUrl}/manifest.json: ${error}`
2925
- );
2926
- }
2927
- }
2928
- clearCache() {
2929
- this.metadataCache.clear();
2930
- }
2931
- getCachedMetadata(metadataUrl) {
2932
- return this.metadataCache.get(metadataUrl);
2933
- }
2934
- };
2935
- var metadataLoader = new MetadataLoader();
2936
-
2937
2864
  // src/services/registry.ts
2938
2865
  var PluginRegistryImpl = class {
2939
2866
  constructor() {
package/dist/hooks.js CHANGED
@@ -2838,69 +2838,6 @@ var fetchApi = {
2838
2838
  }
2839
2839
  };
2840
2840
 
2841
- // src/services/loadRemoteModule.ts
2842
- import * as React from "react";
2843
- import * as ReactDOM from "react-dom";
2844
-
2845
- // src/services/metadataLoader.ts
2846
- var MetadataLoader = class {
2847
- constructor() {
2848
- __publicField(this, "metadataCache", /* @__PURE__ */ new Map());
2849
- }
2850
- async loadMetadata(metadataUrl) {
2851
- if (this.metadataCache.has(metadataUrl)) {
2852
- return this.metadataCache.get(metadataUrl) || [];
2853
- }
2854
- try {
2855
- const response = await fetch(metadataUrl);
2856
- console.log(response);
2857
- if (!response.ok) {
2858
- throw new Error(`Failed to fetch metadata: ${response.statusText}`);
2859
- }
2860
- const data = await response.json();
2861
- let metadata;
2862
- if (Array.isArray(data)) {
2863
- metadata = data;
2864
- } else if (data.pages && Array.isArray(data.pages)) {
2865
- metadata = data.pages;
2866
- } else {
2867
- throw new Error(
2868
- "Invalid metadata format: expected array or object with pages property"
2869
- );
2870
- }
2871
- metadata.forEach((page, index) => {
2872
- if (!page.id || !page.name || !page.path || !page.url) {
2873
- throw new Error(
2874
- `Invalid page metadata at index ${index}: missing required fields`
2875
- );
2876
- }
2877
- });
2878
- this.metadataCache.set(metadataUrl, metadata);
2879
- return metadata;
2880
- } catch (error) {
2881
- console.warn(`Failed to load metadata from ${metadataUrl}:`, error);
2882
- return [];
2883
- }
2884
- }
2885
- async loadFromDirectory(directoryUrl) {
2886
- try {
2887
- const manifestUrl = `${directoryUrl}/manifest.json`;
2888
- return await this.loadMetadata(manifestUrl);
2889
- } catch (error) {
2890
- throw new Error(
2891
- `Directory manifest not found at ${directoryUrl}/manifest.json: ${error}`
2892
- );
2893
- }
2894
- }
2895
- clearCache() {
2896
- this.metadataCache.clear();
2897
- }
2898
- getCachedMetadata(metadataUrl) {
2899
- return this.metadataCache.get(metadataUrl);
2900
- }
2901
- };
2902
- var metadataLoader = new MetadataLoader();
2903
-
2904
2841
  // src/services/registry.ts
2905
2842
  var PluginRegistryImpl = class {
2906
2843
  constructor() {