remote-reload-utils 0.0.14 → 0.0.16

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,95 +0,0 @@
1
- import React from 'react';
2
- import type { ErrorBoundaryProps } from './ErrorBoundary';
3
- export interface RemoteModuleCardProps {
4
- /** 包名称 */
5
- pkg: string;
6
- /** 版本号,支持 semver 范围 */
7
- version: string;
8
- /** 远程模块名称(导出名) */
9
- moduleName: string;
10
- /** 作用域名称 */
11
- scopeName: string;
12
- /** 加载中的占位内容 */
13
- loadingFallback?: React.ReactNode;
14
- /** 错误状态的占位内容 */
15
- errorFallback?: React.ReactNode | ((error: Error, resetError: () => void) => React.ReactNode);
16
- /** 传递给远程组件的 props */
17
- componentProps?: Record<string, any>;
18
- /** 容器类名 */
19
- className?: string;
20
- /** 容器样式 */
21
- style?: React.CSSProperties;
22
- /** 加载成功回调 */
23
- onLoad?: (component: React.ComponentType<any>) => void;
24
- /** 加载失败回调 */
25
- onError?: (error: Error) => void;
26
- /** 是否禁用错误边界 */
27
- disableErrorBoundary?: boolean;
28
- /** 错误边界配置 */
29
- errorBoundaryOptions?: Omit<ErrorBoundaryProps, 'children' | 'fallback'>;
30
- }
31
- interface ModuleState {
32
- loading: boolean;
33
- error: Error | null;
34
- component: React.ComponentType<any> | null;
35
- }
36
- /**
37
- * Hook 选项:加载远程模块
38
- */
39
- export interface UseRemoteModuleOptions {
40
- pkg: string;
41
- version: string;
42
- moduleName: string;
43
- scopeName: string;
44
- onError?: (error: Error) => void;
45
- onLoad?: (component: React.ComponentType<any>) => void;
46
- retryKey?: number;
47
- }
48
- /**
49
- * Hook:加载远程模块
50
- */
51
- export declare function useRemoteModule({ pkg, version, moduleName, scopeName, onError, onLoad, retryKey, }: UseRemoteModuleOptions): ModuleState;
52
- /**
53
- * 远程模块渲染器:纯内容渲染(不含 Suspense/ErrorBoundary)
54
- */
55
- export declare function RemoteModuleRenderer({ pkg, version, moduleName, scopeName, loadingFallback, errorFallback, componentProps, className, style, onError, onLoad, }: RemoteModuleCardProps): import("react/jsx-runtime").JSX.Element | null;
56
- /**
57
- * 远程模块提供者:带 Suspense 和 ErrorBoundary 的完整组件
58
- *
59
- * @features
60
- * - 自动加载远程模块
61
- * - 内置加载状态和错误处理
62
- * - 支持 Suspense 惰性加载
63
- * - 可配置的错误边界
64
- * - 支持重试机制
65
- *
66
- * @example
67
- * ```tsx
68
- * <RemoteModuleProvider
69
- * pkg="@myorg/remote-app"
70
- * version="^1.0.0"
71
- * moduleName="Dashboard"
72
- * scopeName="myorg"
73
- * loadingFallback={<Spinner />}
74
- * errorFallback={(error, reset) => <Button onClick={reset}>Retry</Button>}
75
- * componentProps={{ userId: 123 }}
76
- * />
77
- * ```
78
- *
79
- * @example
80
- * ```tsx
81
- * // 使用 lazy + Suspense 模式
82
- * const LazyRemote = lazyRemote({
83
- * pkg: "@myorg/remote-app",
84
- * version: "^1.0.0",
85
- * moduleName: "Dashboard",
86
- * scopeName: "myorg"
87
- * });
88
- *
89
- * <Suspense fallback={<Spinner />}>
90
- * <LazyRemote userId={123} />
91
- * </Suspense>
92
- * ```
93
- */
94
- export declare function RemoteModuleProvider(props: RemoteModuleCardProps): import("react/jsx-runtime").JSX.Element;
95
- export {};
@@ -1,131 +0,0 @@
1
- import React, { type ComponentType, type ReactNode } from 'react';
2
- export interface LazyRemoteOptions {
3
- /** 包名称 */
4
- pkg: string;
5
- /** 版本号 */
6
- version?: string;
7
- /** 模块名称 */
8
- moduleName: string;
9
- /** 作用域名称 */
10
- scopeName: string;
11
- /** 加载失败时的最大重试次数 */
12
- maxRetries?: number;
13
- /** 重试延迟(毫秒) */
14
- retryDelay?: number;
15
- }
16
- export interface SuspenseRemoteProps {
17
- /** 加载中的占位内容 */
18
- fallback?: ReactNode;
19
- children: ReactNode;
20
- }
21
- export interface SuspenseRemoteWithPropsProps extends LazyRemoteOptions {
22
- /** 加载中的占位内容 */
23
- fallback?: ReactNode;
24
- /** 错误状态的占位内容 */
25
- errorFallback?: ReactNode | ((error: Error) => ReactNode);
26
- /** 传递给远程组件的 props */
27
- componentProps?: Record<string, any>;
28
- }
29
- /**
30
- * 创建一个惰性加载的远程组件
31
- * 返回一个可用于 React.lazy() 的 Promise
32
- *
33
- * @example
34
- * ```tsx
35
- * const LazyDashboard = lazyRemote({
36
- * pkg: "@myorg/remote-app",
37
- * version: "^1.0.0",
38
- * moduleName: "Dashboard",
39
- * scopeName: "myorg"
40
- * });
41
- *
42
- * function App() {
43
- * return (
44
- * <Suspense fallback={<Spinner />}>
45
- * <LazyDashboard userId={123} />
46
- * </Suspense>
47
- * );
48
- * }
49
- * ```
50
- */
51
- export declare function lazyRemote(options: LazyRemoteOptions): React.LazyExoticComponent<React.ComponentType<any>>;
52
- /**
53
- * 带 Suspense 和错误处理的远程组件包装器
54
- * 注意:错误处理需要与 ErrorBoundary 配合使用
55
- *
56
- * @example
57
- * ```tsx
58
- * // 与 ErrorBoundary 配合使用
59
- * <ErrorBoundary fallback={(error) => <div>Error: {error.message}</div>}>
60
- * <SuspenseRemote fallback={<Spinner />}>
61
- * <RemoteModuleProvider pkg="@myorg/remote-app" version="^1.0.0" moduleName="Dashboard" scopeName="myorg" />
62
- * </SuspenseRemote>
63
- * </ErrorBoundary>
64
- * ```
65
- */
66
- export declare function SuspenseRemote({ fallback, children, }: {
67
- fallback?: ReactNode;
68
- children: ReactNode;
69
- }): import("react/jsx-runtime").JSX.Element;
70
- /**
71
- * 一体化的远程组件加载器(包含 Suspense 和 ErrorBoundary)
72
- *
73
- * @example
74
- * ```tsx
75
- * <SuspenseRemoteLoader
76
- * pkg="@myorg/remote-app"
77
- * version="^1.0.0"
78
- * moduleName="Dashboard"
79
- * scopeName="myorg"
80
- * fallback={<Spinner />}
81
- * errorFallback={(error) => <div>Error: {error.message}</div>}
82
- * componentProps={{ userId: 123 }}
83
- * />
84
- * ```
85
- */
86
- export declare function SuspenseRemoteLoader({ pkg, version, moduleName, scopeName, fallback, errorFallback, componentProps, }: SuspenseRemoteWithPropsProps): import("react/jsx-runtime").JSX.Element;
87
- /**
88
- * HOC:为组件添加远程加载能力
89
- *
90
- * @example
91
- * ```tsx
92
- * const EnhancedComponent = withRemote(
93
- * (props) => <div>{props.message}</div>,
94
- * {
95
- * pkg: "@myorg/remote-app",
96
- * version: "^1.0.0",
97
- * moduleName: "RemoteComponent",
98
- * scopeName: "myorg"
99
- * }
100
- * );
101
- *
102
- * <EnhancedComponent message="Hello" />
103
- * ```
104
- */
105
- export declare function withRemote<P extends object>(WrappedComponent: ComponentType<P>, options: LazyRemoteOptions): (props: P) => import("react/jsx-runtime").JSX.Element;
106
- /**
107
- * Hook:在函数组件中加载远程模块
108
- *
109
- * @example
110
- * ```tsx
111
- * function MyComponent() {
112
- * const { component: RemoteComp, loading, error } = useRemoteModule({
113
- * pkg: "@myorg/remote-app",
114
- * version: "^1.0.0",
115
- * moduleName: "Dashboard",
116
- * scopeName: "myorg"
117
- * });
118
- *
119
- * if (loading) return <Spinner />;
120
- * if (error) return <div>Error: {error.message}</div>;
121
- * if (!RemoteComp) return null;
122
- *
123
- * return <RemoteComp userId={123} />;
124
- * }
125
- * ```
126
- */
127
- export declare function useRemoteModuleHook(options: LazyRemoteOptions): {
128
- component: ComponentType<any> | null;
129
- loading: boolean;
130
- error: Error | null;
131
- };
@@ -1,6 +0,0 @@
1
- export { ErrorBoundary } from './ErrorBoundary';
2
- export type { ErrorBoundaryProps } from './ErrorBoundary';
3
- export { RemoteModuleProvider, RemoteModuleRenderer, useRemoteModule, } from './RemoteModuleProvider';
4
- export type { RemoteModuleCardProps, UseRemoteModuleOptions, } from './RemoteModuleProvider';
5
- export { lazyRemote, SuspenseRemote, SuspenseRemoteLoader, withRemote, useRemoteModuleHook, } from './SuspenseLoader';
6
- export type { LazyRemoteOptions, SuspenseRemoteProps, SuspenseRemoteWithPropsProps, } from './SuspenseLoader';