@module-federation/runtime 1.0.0-canary.1

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.
Files changed (47) hide show
  1. package/helpers.cjs.d.ts +2 -0
  2. package/helpers.cjs.js +33 -0
  3. package/helpers.esm.js +31 -0
  4. package/index.cjs.d.ts +1 -0
  5. package/index.cjs.js +1927 -0
  6. package/index.esm.js +1917 -0
  7. package/package.json +40 -0
  8. package/share.cjs.js +782 -0
  9. package/share.esm.js +741 -0
  10. package/src/constant.d.ts +2 -0
  11. package/src/core.d.ts +113 -0
  12. package/src/global.d.ts +57 -0
  13. package/src/helpers.d.ts +32 -0
  14. package/src/index.d.ts +10 -0
  15. package/src/module/index.d.ts +25 -0
  16. package/src/plugins/generate-preload-assets.d.ts +8 -0
  17. package/src/plugins/snapshot/SnapshotHandler.d.ts +43 -0
  18. package/src/plugins/snapshot/index.d.ts +5 -0
  19. package/src/type/config.d.ts +94 -0
  20. package/src/type/index.d.ts +3 -0
  21. package/src/type/plugin.d.ts +20 -0
  22. package/src/type/preload.d.ts +25 -0
  23. package/src/types.d.ts +1 -0
  24. package/src/utils/dom.d.ts +8 -0
  25. package/src/utils/env.d.ts +4 -0
  26. package/src/utils/hooks/asyncHook.d.ts +6 -0
  27. package/src/utils/hooks/asyncWaterfallHooks.d.ts +10 -0
  28. package/src/utils/hooks/index.d.ts +6 -0
  29. package/src/utils/hooks/pluginSystem.d.ts +15 -0
  30. package/src/utils/hooks/syncHook.d.ts +12 -0
  31. package/src/utils/hooks/syncWaterfallHook.d.ts +9 -0
  32. package/src/utils/index.d.ts +6 -0
  33. package/src/utils/load.d.ts +17 -0
  34. package/src/utils/logger.d.ts +3 -0
  35. package/src/utils/manifest.d.ts +9 -0
  36. package/src/utils/plugin.d.ts +4 -0
  37. package/src/utils/preload.d.ts +6 -0
  38. package/src/utils/semver/compare.d.ts +9 -0
  39. package/src/utils/semver/constants.d.ts +10 -0
  40. package/src/utils/semver/index.d.ts +2 -0
  41. package/src/utils/semver/parser.d.ts +9 -0
  42. package/src/utils/semver/utils.d.ts +11 -0
  43. package/src/utils/share.d.ts +7 -0
  44. package/src/utils/tool.d.ts +12 -0
  45. package/type.cjs.d.ts +1 -0
  46. package/type.cjs.js +2 -0
  47. package/type.esm.js +1 -0
@@ -0,0 +1,2 @@
1
+ export declare const DEFAULT_SCOPE = "default";
2
+ export declare const DEFAULT_REMOTE_TYPE = "global";
package/src/core.d.ts ADDED
@@ -0,0 +1,113 @@
1
+ import type { ModuleInfo, GlobalModuleInfo } from '@module-federation/sdk';
2
+ import { Options, PreloadAssets, PreloadOptions, PreloadRemoteArgs, Remote, Shared, ShareInfos, UserOptions, RemoteInfo } from './type';
3
+ import { Module, ModuleOptions } from './module';
4
+ import { AsyncHook, AsyncWaterfallHook, PluginSystem, SyncHook, SyncWaterfallHook } from './utils/hooks';
5
+ import { SnapshotHandler } from './plugins/snapshot/SnapshotHandler';
6
+ interface LoadRemoteMatch {
7
+ id: string;
8
+ pkgNameOrAlias: string;
9
+ expose: string;
10
+ remote: Remote;
11
+ options: Options;
12
+ origin: FederationHost;
13
+ remoteInfo: RemoteInfo;
14
+ }
15
+ export declare class FederationHost {
16
+ options: Options;
17
+ hooks: PluginSystem<{
18
+ beforeInit: SyncWaterfallHook<{
19
+ userOptions: UserOptions;
20
+ options: Options;
21
+ origin: FederationHost;
22
+ shareInfo: ShareInfos;
23
+ }>;
24
+ init: SyncHook<[{
25
+ options: Options;
26
+ origin: FederationHost;
27
+ }], void>;
28
+ beforeLoadRemote: AsyncWaterfallHook<{
29
+ id: string;
30
+ options: Options;
31
+ origin: FederationHost;
32
+ }>;
33
+ loadRemoteMatch: AsyncWaterfallHook<LoadRemoteMatch>;
34
+ loadRemote: AsyncHook<[{
35
+ id: string;
36
+ expose: string;
37
+ pkgNameOrAlias: string;
38
+ remote: Remote;
39
+ options: ModuleOptions;
40
+ origin: FederationHost;
41
+ exposeModule: any;
42
+ exposeModuleFactory: any;
43
+ moduleInstance: Module;
44
+ }], void>;
45
+ errorLoadRemote: AsyncHook<[{
46
+ id: string;
47
+ error: unknown;
48
+ }], void>;
49
+ beforeLoadShare: AsyncWaterfallHook<{
50
+ pkgName: string;
51
+ shareInfo?: Shared | undefined;
52
+ shared: Options['shared'];
53
+ origin: FederationHost;
54
+ }>;
55
+ loadShare: AsyncHook<[FederationHost, string, ShareInfos], false | void | Promise<false | void>>;
56
+ beforePreloadRemote: AsyncHook<{
57
+ preloadOps: Array<PreloadRemoteArgs>;
58
+ options: Options;
59
+ origin: FederationHost;
60
+ }, false | void | Promise<false | void>>;
61
+ generatePreloadAssets: AsyncHook<[{
62
+ origin: FederationHost;
63
+ preloadOptions: PreloadOptions[number];
64
+ remote: Remote;
65
+ remoteInfo: RemoteInfo;
66
+ remoteSnapshot: ModuleInfo;
67
+ globalSnapshot: GlobalModuleInfo;
68
+ }], Promise<PreloadAssets>>;
69
+ afterPreloadRemote: AsyncHook<{
70
+ preloadOps: Array<PreloadRemoteArgs>;
71
+ options: Options;
72
+ origin: FederationHost;
73
+ }, false | void | Promise<false | void>>;
74
+ }>;
75
+ version: string;
76
+ name: string;
77
+ moduleCache: Map<string, Module>;
78
+ snapshotHandler: SnapshotHandler;
79
+ loaderHook: PluginSystem<{
80
+ getModuleInfo: SyncHook<[{
81
+ target: Record<string, any>;
82
+ key: any;
83
+ }], void | {
84
+ value: any | undefined;
85
+ key: string;
86
+ }>;
87
+ createScript: SyncHook<[{
88
+ url: string;
89
+ }], void | HTMLScriptElement>;
90
+ }>;
91
+ loadingShare: {
92
+ [key: string]: Promise<any>;
93
+ };
94
+ constructor(userOptions: UserOptions);
95
+ initOptions(userOptions: UserOptions): Options;
96
+ loadShare<T>(pkgName: string, customShareInfo?: Partial<Shared>): Promise<false | (() => T | undefined)>;
97
+ loadShareSync<T>(pkgName: string): () => T | never;
98
+ private _getRemoteModuleAndOptions;
99
+ loadRemote<T>(id: string, options?: {
100
+ loadFactory?: boolean;
101
+ }): Promise<T | null>;
102
+ preloadRemote(preloadOptions: Array<PreloadRemoteArgs>): Promise<void>;
103
+ /**
104
+ * The sharing init sequence function (only runs once per share scope).
105
+ * Has one argument, the name of the share scope.
106
+ * Creates a share scope if not existing
107
+ */
108
+ initializeSharing(shareScopeName?: string): boolean | Promise<boolean>;
109
+ private formatOptions;
110
+ private registerPlugins;
111
+ private setShared;
112
+ }
113
+ export {};
@@ -0,0 +1,57 @@
1
+ /// <reference types="node" />
2
+ import { FederationHost } from './core';
3
+ import { RemoteEntryExports, GlobalShareScope, Remote, Optional } from './type';
4
+ import { GlobalModuleInfo, ModuleInfo } from '@module-federation/sdk';
5
+ import { FederationRuntimePlugin } from './type/plugin';
6
+ export type Federation = {
7
+ __GLOBAL_PLUGIN__: Array<FederationRuntimePlugin>;
8
+ __DEBUG_CONSTRUCTOR_VERSION__?: string;
9
+ moduleInfo: GlobalModuleInfo;
10
+ __DEBUG_CONSTRUCTOR__?: typeof FederationHost;
11
+ __INSTANCES__: Array<FederationHost>;
12
+ __SHARE__: GlobalShareScope;
13
+ __MANIFEST_LOADING__: Record<string, Promise<ModuleInfo>>;
14
+ __SHARE_SCOPE_LOADING__: Record<string, boolean | Promise<boolean>>;
15
+ __PRELOADED_MAP__: Map<string, boolean>;
16
+ };
17
+ export declare const nativeGlobal: typeof global;
18
+ declare global {
19
+ var __FEDERATION__: Federation, __VMOK__: Federation, __GLOBAL_LOADING_REMOTE_ENTRY__: Record<string, undefined | Promise<RemoteEntryExports | void>>;
20
+ }
21
+ export declare const globalLoading: Record<string, Promise<void | RemoteEntryExports> | undefined>;
22
+ export declare const Global: {
23
+ readonly __FEDERATION__: Federation;
24
+ };
25
+ export declare function resetFederationGlobalInfo(): void;
26
+ export declare function getGlobalFederationInstance(name: string, version: string | undefined): FederationHost | undefined;
27
+ export declare function setGlobalFederationInstance(FederationInstance: FederationHost): void;
28
+ export declare function getGlobalFederationConstructor(): typeof FederationHost | undefined;
29
+ export declare function setGlobalFederationConstructor(FederationConstructor: typeof FederationHost): void;
30
+ export declare function getInfoWithoutType<T extends object>(target: T, key: keyof T, getModuleInfoHook?: (target: any, key: string | number | symbol) => {
31
+ value: any | undefined;
32
+ key: string;
33
+ } | void): {
34
+ value: T[keyof T] | undefined;
35
+ key: string;
36
+ };
37
+ export declare const getGlobalSnapshot: () => GlobalModuleInfo;
38
+ export declare const getTargetSnapshotInfoByModuleInfo: (moduleInfo: Optional<Remote, 'alias'>, snapshot: GlobalModuleInfo, getModuleInfoHook?: ((target: any, key: string | number | symbol) => void | {
39
+ value: any | undefined;
40
+ key: string;
41
+ }) | undefined) => GlobalModuleInfo[string] | undefined;
42
+ export declare const getGlobalSnapshotInfoByModuleInfo: (moduleInfo: Optional<Remote, 'alias'>, extraOptions?: {
43
+ getModuleInfoHook?: ((target: any, key: string | number | symbol) => void | {
44
+ value: any | undefined;
45
+ key: string;
46
+ }) | undefined;
47
+ } | undefined) => GlobalModuleInfo[string] | undefined;
48
+ export declare const setGlobalSnapshotInfoByModuleInfo: (remoteInfo: Remote, moduleDetailInfo: GlobalModuleInfo[string]) => GlobalModuleInfo;
49
+ export declare const addGlobalSnapshot: (moduleInfos: GlobalModuleInfo) => (() => void);
50
+ export declare const getRemoteEntryExports: (name: string, globalName: string | undefined) => {
51
+ remoteEntryKey: string;
52
+ entryExports: RemoteEntryExports | undefined;
53
+ };
54
+ export declare const registerGlobalPlugins: (plugins: Array<FederationRuntimePlugin>) => void;
55
+ export declare const getGlobalHostPlugins: () => Array<FederationRuntimePlugin>;
56
+ export declare const getPreloaded: (id: string) => boolean | undefined;
57
+ export declare const setPreloaded: (id: string) => Map<string, boolean>;
@@ -0,0 +1,32 @@
1
+ /// <reference types="node" />
2
+ import { resetFederationGlobalInfo, getGlobalFederationInstance, setGlobalFederationInstance, getGlobalFederationConstructor, setGlobalFederationConstructor, getInfoWithoutType, getGlobalSnapshot, getTargetSnapshotInfoByModuleInfo, getGlobalSnapshotInfoByModuleInfo, setGlobalSnapshotInfoByModuleInfo, addGlobalSnapshot, getRemoteEntryExports, registerGlobalPlugins, getGlobalHostPlugins, getPreloaded, setPreloaded } from './global';
3
+ import { getGlobalShare, getGlobalShareScope } from './utils/share';
4
+ interface IShareUtils {
5
+ getGlobalShare: typeof getGlobalShare;
6
+ getGlobalShareScope: typeof getGlobalShareScope;
7
+ }
8
+ interface IGlobalUtils {
9
+ nativeGlobal: typeof global;
10
+ resetFederationGlobalInfo: typeof resetFederationGlobalInfo;
11
+ getGlobalFederationInstance: typeof getGlobalFederationInstance;
12
+ setGlobalFederationInstance: typeof setGlobalFederationInstance;
13
+ getGlobalFederationConstructor: typeof getGlobalFederationConstructor;
14
+ setGlobalFederationConstructor: typeof setGlobalFederationConstructor;
15
+ getInfoWithoutType: typeof getInfoWithoutType;
16
+ getGlobalSnapshot: typeof getGlobalSnapshot;
17
+ getTargetSnapshotInfoByModuleInfo: typeof getTargetSnapshotInfoByModuleInfo;
18
+ getGlobalSnapshotInfoByModuleInfo: typeof getGlobalSnapshotInfoByModuleInfo;
19
+ setGlobalSnapshotInfoByModuleInfo: typeof setGlobalSnapshotInfoByModuleInfo;
20
+ addGlobalSnapshot: typeof addGlobalSnapshot;
21
+ getRemoteEntryExports: typeof getRemoteEntryExports;
22
+ registerGlobalPlugins: typeof registerGlobalPlugins;
23
+ getGlobalHostPlugins: typeof getGlobalHostPlugins;
24
+ getPreloaded: typeof getPreloaded;
25
+ setPreloaded: typeof setPreloaded;
26
+ }
27
+ declare const _default: {
28
+ global: IGlobalUtils;
29
+ share: IShareUtils;
30
+ };
31
+ export default _default;
32
+ export type { IGlobalUtils, IShareUtils };
package/src/index.d.ts ADDED
@@ -0,0 +1,10 @@
1
+ import { FederationHost } from './core';
2
+ import { UserOptions } from './type';
3
+ export { FederationHost } from './core';
4
+ export { registerGlobalPlugins } from './global';
5
+ export { loadScript } from './utils';
6
+ export declare function init(options: UserOptions): FederationHost;
7
+ export declare function loadRemote(...args: Parameters<FederationHost['loadRemote']>): ReturnType<FederationHost['loadRemote']>;
8
+ export declare function loadShare(...args: Parameters<FederationHost['loadShare']>): ReturnType<FederationHost['loadShare']>;
9
+ export declare function loadShareSync(...args: Parameters<FederationHost['loadShareSync']>): ReturnType<FederationHost['loadShareSync']>;
10
+ export declare function preloadRemote(...args: Parameters<FederationHost['preloadRemote']>): ReturnType<FederationHost['preloadRemote']>;
@@ -0,0 +1,25 @@
1
+ import { FederationHost } from '../core';
2
+ import { RemoteEntryExports, Options, Remote, ShareInfos, RemoteInfo } from '../type';
3
+ export type ModuleOptions = ConstructorParameters<typeof Module>[0];
4
+ type HostInfo = Remote;
5
+ declare class Module {
6
+ hostInfo: HostInfo;
7
+ remoteInfo: RemoteInfo;
8
+ inited: boolean;
9
+ shared: ShareInfos;
10
+ remoteEntryExports?: RemoteEntryExports;
11
+ lib: RemoteEntryExports | undefined;
12
+ loaderHook: FederationHost['loaderHook'];
13
+ constructor({ hostInfo, remoteInfo, shared, loaderHook, }: {
14
+ hostInfo: HostInfo;
15
+ remoteInfo: RemoteInfo;
16
+ shared: ShareInfos;
17
+ plugins: Options['plugins'];
18
+ loaderHook: FederationHost['loaderHook'];
19
+ });
20
+ getEntry(): Promise<RemoteEntryExports>;
21
+ get(expose: string, options?: {
22
+ loadFactory?: boolean;
23
+ }): Promise<any>;
24
+ }
25
+ export { Module };
@@ -0,0 +1,8 @@
1
+ import { GlobalModuleInfo, ModuleInfo } from '@module-federation/sdk';
2
+ import { FederationRuntimePlugin, PreloadAssets, PreloadOptions, RemoteInfoOptionalVersion } from '../type';
3
+ import { FederationHost } from '../core';
4
+ declare global {
5
+ var __INIT_VMOK_DEPLOY_GLOBAL_DATA__: boolean | undefined;
6
+ }
7
+ export declare function generatePreloadAssets(origin: FederationHost, preloadOptions: PreloadOptions[number], remote: RemoteInfoOptionalVersion, globalSnapshot: GlobalModuleInfo, remoteSnapshot: ModuleInfo): PreloadAssets;
8
+ export declare const generatePreloadAssetsPlugin: () => FederationRuntimePlugin;
@@ -0,0 +1,43 @@
1
+ import { GlobalModuleInfo, Manifest, ModuleInfo } from '@module-federation/sdk';
2
+ import { Options, Remote } from '../../type';
3
+ import { getGlobalSnapshot } from '../../global';
4
+ import { PluginSystem, AsyncHook, AsyncWaterfallHook } from '../../utils/hooks';
5
+ import { FederationHost } from '../../core';
6
+ export declare class SnapshotHandler {
7
+ loadingHostSnapshot: Promise<GlobalModuleInfo | void> | null;
8
+ HostInstance: FederationHost;
9
+ manifestCache: Map<string, Manifest>;
10
+ hooks: PluginSystem<{
11
+ beforeLoadRemoteSnapshot: AsyncHook<[{
12
+ options: Options;
13
+ moduleInfo: Remote;
14
+ }], void>;
15
+ loadSnapshot: AsyncWaterfallHook<{
16
+ options: Options;
17
+ moduleInfo: Remote;
18
+ hostGlobalSnapshot: GlobalModuleInfo[string] | undefined;
19
+ globalSnapshot: ReturnType<typeof getGlobalSnapshot>;
20
+ remoteSnapshot?: GlobalModuleInfo[string] | undefined;
21
+ }>;
22
+ loadRemoteSnapshot: AsyncWaterfallHook<{
23
+ options: Options;
24
+ moduleInfo: Remote;
25
+ manifestJson?: Manifest<import("@module-federation/sdk").BasicStatsMetaData, import("@module-federation/sdk").ManifestRemoteCommonInfo> | undefined;
26
+ manifestUrl?: string | undefined;
27
+ remoteSnapshot: ModuleInfo;
28
+ from: 'global' | 'manifest';
29
+ }>;
30
+ }>;
31
+ manifestLoading: Record<string, Promise<ModuleInfo>>;
32
+ constructor(HostInstance: FederationHost);
33
+ loadSnapshot(moduleInfo: Remote): Promise<{
34
+ remoteSnapshot: GlobalModuleInfo[string] | undefined;
35
+ globalSnapshot: ReturnType<typeof getGlobalSnapshot>;
36
+ }>;
37
+ loadRemoteSnapshotInfo(moduleInfo: Remote): Promise<{
38
+ remoteSnapshot: ModuleInfo;
39
+ globalSnapshot: GlobalModuleInfo;
40
+ }> | never;
41
+ private getGlobalRemoteInfo;
42
+ private getManifestJson;
43
+ }
@@ -0,0 +1,5 @@
1
+ import { FederationRuntimePlugin } from '../../type/plugin';
2
+ import { ModuleInfo } from '@module-federation/sdk';
3
+ import { RemoteInfo } from '../../type';
4
+ export declare function assignRemoteInfo(remoteInfo: RemoteInfo, remoteSnapshot: ModuleInfo): void;
5
+ export declare function snapshotPlugin(): FederationRuntimePlugin;
@@ -0,0 +1,94 @@
1
+ import type { RemoteWithEntry, RemoteWithVersion, Module, RemoteEntryType } from '@module-federation/sdk';
2
+ import { FederationRuntimePlugin } from './plugin';
3
+ export type Optional<T, K extends keyof T> = Omit<T, K> & Partial<T>;
4
+ export type PartialOptional<T, K extends keyof T> = Omit<T, K> & {
5
+ [P in K]-?: T[P];
6
+ };
7
+ interface RemoteInfoCommon {
8
+ alias?: string;
9
+ shareScope?: string;
10
+ type?: RemoteEntryType;
11
+ entryGlobalName?: string;
12
+ }
13
+ export type RemoteInfoOptionalVersion = {
14
+ name: string;
15
+ version?: string;
16
+ } & RemoteInfoCommon;
17
+ export type Remote = (RemoteWithEntry | RemoteWithVersion) & RemoteInfoCommon;
18
+ export interface RemoteInfo {
19
+ name: string;
20
+ version?: string;
21
+ buildVersion?: string;
22
+ entry: string;
23
+ type: RemoteEntryType;
24
+ entryGlobalName: string;
25
+ shareScope: string;
26
+ }
27
+ export type HostInfo = Pick<Options, 'name' | 'version' | 'remotes' | 'version'>;
28
+ export interface SharedConfig {
29
+ singleton?: boolean;
30
+ requiredVersion: false | string;
31
+ eager?: boolean;
32
+ }
33
+ type SharedBaseArgs = {
34
+ version: string;
35
+ shareConfig?: SharedConfig;
36
+ scope?: string | Array<string>;
37
+ deps?: Array<string>;
38
+ strategy?: 'version-first' | 'loaded-first';
39
+ };
40
+ export type ShareArgs = (SharedBaseArgs & {
41
+ get: () => () => Module | Promise<() => Module>;
42
+ }) | (SharedBaseArgs & {
43
+ lib: () => Module;
44
+ });
45
+ export type SharedGetter = () => () => Promise<() => Module> | Module;
46
+ export type Shared = {
47
+ version: string;
48
+ get: SharedGetter;
49
+ shareConfig: SharedConfig;
50
+ scope: Array<string>;
51
+ useIn: Array<string>;
52
+ from: string;
53
+ deps: Array<string>;
54
+ lib?: () => Module;
55
+ loaded?: boolean;
56
+ loading?: null | Promise<any>;
57
+ eager?: boolean;
58
+ strategy: 'version-first' | 'loaded-first';
59
+ };
60
+ export type GlobalShareScope = {
61
+ [scope: string]: {
62
+ [pkgName: string]: {
63
+ [sharedVersion: string]: Shared;
64
+ };
65
+ };
66
+ };
67
+ export type ShareInfos = {
68
+ [pkgName: string]: Shared;
69
+ };
70
+ export interface Options {
71
+ id?: string;
72
+ name: string;
73
+ version?: string;
74
+ remotes: Array<Remote>;
75
+ shared: ShareInfos;
76
+ plugins: Array<FederationRuntimePlugin>;
77
+ inBrowser: boolean;
78
+ }
79
+ export type UserOptions = Omit<Optional<Options, 'plugins'>, 'shared' | 'inBrowser'> & {
80
+ shared?: {
81
+ [pkgName: string]: ShareArgs;
82
+ };
83
+ };
84
+ export type LoadModuleOptions = {
85
+ version?: string;
86
+ };
87
+ export type RemoteEntryInitOptions = {
88
+ version: string;
89
+ };
90
+ export type RemoteEntryExports = {
91
+ get: (id: string) => () => Promise<Module>;
92
+ init: (shareScope: GlobalShareScope[string], initScope?: Array<Record<string, never>>, remoteEntryInitOPtions?: RemoteEntryInitOptions) => void;
93
+ };
94
+ export {};
@@ -0,0 +1,3 @@
1
+ export * from './config';
2
+ export * from './plugin';
3
+ export * from './preload';
@@ -0,0 +1,20 @@
1
+ import { FederationHost } from '../core';
2
+ import { Module } from '../module';
3
+ import { SnapshotHandler } from '../plugins/snapshot/SnapshotHandler';
4
+ type CoreLifeCycle = FederationHost['hooks']['lifecycle'];
5
+ type CoreLifeCyclePartial = Partial<{
6
+ [k in keyof CoreLifeCycle]: Parameters<CoreLifeCycle[k]['on']>[0];
7
+ }>;
8
+ type SnapshotLifeCycle = SnapshotHandler['hooks']['lifecycle'];
9
+ type SnapshotLifeCycleCyclePartial = Partial<{
10
+ [k in keyof SnapshotLifeCycle]: Parameters<SnapshotLifeCycle[k]['on']>[0];
11
+ }>;
12
+ type ModuleLifeCycle = Module['loaderHook']['lifecycle'];
13
+ type ModuleLifeCycleCyclePartial = Partial<{
14
+ [k in keyof ModuleLifeCycle]: Parameters<ModuleLifeCycle[k]['on']>[0];
15
+ }>;
16
+ export type FederationRuntimePlugin = CoreLifeCyclePartial & SnapshotLifeCycleCyclePartial & ModuleLifeCycleCyclePartial & {
17
+ name: string;
18
+ version?: string;
19
+ };
20
+ export {};
@@ -0,0 +1,25 @@
1
+ import { Remote, RemoteInfo } from './config';
2
+ export type depsPreloadArg = Omit<PreloadRemoteArgs, 'depsRemote'>;
3
+ export interface PreloadRemoteArgs {
4
+ nameOrAlias: string;
5
+ exposes?: Array<string>;
6
+ resourceCategory?: 'all' | 'sync';
7
+ share?: boolean;
8
+ depsRemote?: boolean | Array<depsPreloadArg>;
9
+ filter?: (assetUrl: string) => boolean;
10
+ }
11
+ export type PreloadConfig = PreloadRemoteArgs;
12
+ export type PreloadOptions = Array<{
13
+ remote: Remote;
14
+ preloadConfig: PreloadConfig;
15
+ }>;
16
+ export type EntryAssets = {
17
+ name: string;
18
+ url: string;
19
+ moduleInfo: RemoteInfo;
20
+ };
21
+ export interface PreloadAssets {
22
+ cssAssets: Array<string>;
23
+ jsAssetsWithoutEntry: Array<string>;
24
+ entryAssets: Array<EntryAssets>;
25
+ }
package/src/types.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './type';
@@ -0,0 +1,8 @@
1
+ export declare function createScript(url: string, cb: (value: void | PromiseLike<void>) => void, attrs?: Record<string, any>, createScriptHook?: (url: string) => HTMLScriptElement | void): {
2
+ script: HTMLScriptElement;
3
+ needAttach: boolean;
4
+ };
5
+ export declare function loadScript(url: string, info: {
6
+ attrs?: Record<string, any>;
7
+ createScriptHook?: (url: string) => HTMLScriptElement | void;
8
+ }): Promise<void>;
@@ -0,0 +1,4 @@
1
+ export declare function isDevelopmentMode(): boolean;
2
+ export declare function getBuilderId(): string;
3
+ export declare function isDebugMode(): boolean;
4
+ export declare function isBrowserEnv(): boolean;
@@ -0,0 +1,6 @@
1
+ import { ArgsType, SyncHook } from './syncHook';
2
+ type CallbackReturnType = void | false | Promise<void | false>;
3
+ export declare class AsyncHook<T, ExternalEmitReturnType = CallbackReturnType> extends SyncHook<T, ExternalEmitReturnType> {
4
+ emit(...data: ArgsType<T>): Promise<void | false | ExternalEmitReturnType>;
5
+ }
6
+ export {};
@@ -0,0 +1,10 @@
1
+ import { SyncHook } from './syncHook';
2
+ type CallbackReturnType<T> = T | Promise<T>;
3
+ export declare class AsyncWaterfallHook<T extends Record<string, any>> extends SyncHook<[
4
+ T
5
+ ], CallbackReturnType<T>> {
6
+ onerror: (errMsg: string | Error | unknown) => void;
7
+ constructor(type: string);
8
+ emit(data: T): Promise<T>;
9
+ }
10
+ export {};
@@ -0,0 +1,6 @@
1
+ export { SyncHook } from './syncHook';
2
+ export { AsyncHook } from './asyncHook';
3
+ export { SyncWaterfallHook } from './syncWaterfallHook';
4
+ export { AsyncWaterfallHook } from './asyncWaterfallHooks';
5
+ export { PluginSystem } from './pluginSystem';
6
+ export type { Plugin } from './pluginSystem';
@@ -0,0 +1,15 @@
1
+ export type Plugin<T extends Record<string, any>> = {
2
+ [k in keyof T]?: Parameters<T[k]['on']>[0];
3
+ } & {
4
+ name: string;
5
+ version?: string;
6
+ };
7
+ export declare class PluginSystem<T extends Record<string, any>> {
8
+ lifecycle: T;
9
+ lifecycleKeys: Array<keyof T>;
10
+ registerPlugins: Record<string, Plugin<T>>;
11
+ constructor(lifecycle: T);
12
+ usePlugin(plugin: Plugin<T>): void;
13
+ removePlugin(pluginName: string): void;
14
+ inherit<T extends PluginSystem<any>>({ lifecycle, registerPlugins, }: T): void;
15
+ }
@@ -0,0 +1,12 @@
1
+ export type Callback<T, K> = (...args: ArgsType<T>) => K;
2
+ export type ArgsType<T> = T extends Array<any> ? T : Array<any>;
3
+ export declare class SyncHook<T, K> {
4
+ type: string;
5
+ listeners: Set<Callback<T, K>>;
6
+ constructor(type?: string);
7
+ on(fn: Callback<T, K>): void;
8
+ once(fn: Callback<T, K>): void;
9
+ emit(...data: ArgsType<T>): void | K | Promise<any>;
10
+ remove(fn: Callback<T, K>): void;
11
+ removeAll(): void;
12
+ }
@@ -0,0 +1,9 @@
1
+ import { SyncHook } from './syncHook';
2
+ export declare function checkReturnData(originData: any, returnData: any): boolean;
3
+ export declare class SyncWaterfallHook<T extends Record<string, any>> extends SyncHook<[
4
+ T
5
+ ], T> {
6
+ onerror: (errMsg: string | Error | unknown) => void;
7
+ constructor(type: string);
8
+ emit(data: T): T;
9
+ }
@@ -0,0 +1,6 @@
1
+ export * from './env';
2
+ export * from './tool';
3
+ export * from './manifest';
4
+ export * from './logger';
5
+ export * from './dom';
6
+ export * from './plugin';
@@ -0,0 +1,17 @@
1
+ import { Remote, RemoteEntryExports, RemoteInfo } from '../type';
2
+ export declare function loadEsmEntry({ entry, remoteEntryExports, }: {
3
+ entry: string;
4
+ remoteEntryExports: RemoteEntryExports | undefined;
5
+ }): Promise<RemoteEntryExports>;
6
+ export declare function loadEntryScript({ name, globalName, entry, createScriptHook, }: {
7
+ name: string;
8
+ globalName: string;
9
+ entry: string;
10
+ createScriptHook?: (url: string) => HTMLScriptElement | void;
11
+ }): Promise<RemoteEntryExports>;
12
+ export declare function getRemoteEntry({ remoteEntryExports, remoteInfo, createScriptHook, }: {
13
+ remoteInfo: RemoteInfo;
14
+ remoteEntryExports?: RemoteEntryExports | undefined;
15
+ createScriptHook?: (url: string) => HTMLScriptElement | void;
16
+ }): Promise<RemoteEntryExports | void>;
17
+ export declare function getRemoteInfo(remote: Remote): RemoteInfo;
@@ -0,0 +1,3 @@
1
+ export declare function assert(condition: any, msg: string): asserts condition;
2
+ export declare function error(msg: string | Error | unknown): never;
3
+ export declare function warn(msg: Parameters<typeof console.warn>[0]): void;
@@ -0,0 +1,9 @@
1
+ import { ModuleInfo } from '@module-federation/sdk';
2
+ import { Remote } from '../type';
3
+ export declare function getResourceUrl(module: ModuleInfo, sourceUrl: string): string;
4
+ export declare function matchRemoteWithNameAndExpose(remotes: Array<Remote>, id: string): {
5
+ pkgNameOrAlias: string;
6
+ expose: string;
7
+ remote: Remote;
8
+ } | undefined;
9
+ export declare function matchRemote(remotes: Array<Remote>, nameOrAlias: string): Remote | undefined;
@@ -0,0 +1,4 @@
1
+ import { FederationHost } from '../core';
2
+ import { UserOptions } from '../type';
3
+ import { Module } from '../module';
4
+ export declare function registerPlugins(plugins: UserOptions['plugins'], hookInstances: Array<FederationHost['hooks'] | FederationHost['snapshotHandler']['hooks'] | Module['loaderHook']>): void;
@@ -0,0 +1,6 @@
1
+ import { PreloadAssets, PreloadConfig, PreloadOptions, PreloadRemoteArgs, Remote, RemoteInfo, depsPreloadArg } from '../type';
2
+ import { FederationHost } from '../core';
3
+ export declare function defaultPreloadArgs(preloadConfig: PreloadRemoteArgs | depsPreloadArg): PreloadConfig;
4
+ export declare function formatPreloadArgs(remotes: Array<Remote>, preloadArgs: Array<PreloadRemoteArgs>): PreloadOptions;
5
+ export declare function normalizePreloadExposes(exposes?: string[]): string[];
6
+ export declare function preloadAssets(remoteInfo: RemoteInfo, host: FederationHost, assets: PreloadAssets): void;
@@ -0,0 +1,9 @@
1
+ export interface CompareAtom {
2
+ operator: string;
3
+ version: string;
4
+ major: string;
5
+ minor: string;
6
+ patch: string;
7
+ preRelease?: string[];
8
+ }
9
+ export declare function compare(rangeAtom: CompareAtom, versionAtom: CompareAtom): boolean;
@@ -0,0 +1,10 @@
1
+ export declare const hyphenRange: string;
2
+ export declare const comparatorTrim: string;
3
+ export declare const tildeTrim: string;
4
+ export declare const caretTrim: string;
5
+ export declare const star = "(<|>)?=?\\s*\\*";
6
+ export declare const caret: string;
7
+ export declare const tilde: string;
8
+ export declare const xRange: string;
9
+ export declare const comparator: string;
10
+ export declare const gte0 = "^\\s*>=\\s*0.0.0\\s*$";
@@ -0,0 +1,2 @@
1
+ export declare function satisfy(version: string, range: string): boolean;
2
+ export declare function isLegallyVersion(version: string): boolean;
@@ -0,0 +1,9 @@
1
+ export declare function parseHyphen(range: string): string;
2
+ export declare function parseComparatorTrim(range: string): string;
3
+ export declare function parseTildeTrim(range: string): string;
4
+ export declare function parseCaretTrim(range: string): string;
5
+ export declare function parseCarets(range: string): string;
6
+ export declare function parseTildes(range: string): string;
7
+ export declare function parseXRanges(range: string): string;
8
+ export declare function parseStar(range: string): string;
9
+ export declare function parseGTE0(comparatorString: string): string;
@@ -0,0 +1,11 @@
1
+ export declare function parseRegex(source: string): RegExp;
2
+ export declare function isXVersion(version: string): boolean;
3
+ export declare function pipe<TArgs extends any[], R1, R2, R3, R4, R5, R6, R7>(f1: (...args: TArgs) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6, f7: (a: R6) => R7): (...args: TArgs) => R7;
4
+ export declare function pipe<TArgs extends any[], R1, R2, R3, R4, R5, R6>(f1: (...args: TArgs) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6): (...args: TArgs) => R6;
5
+ export declare function pipe<TArgs extends any[], R1, R2, R3, R4, R5>(f1: (...args: TArgs) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5): (...args: TArgs) => R5;
6
+ export declare function pipe<TArgs extends any[], R1, R2, R3, R4>(f1: (...args: TArgs) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4): (...args: TArgs) => R4;
7
+ export declare function pipe<TArgs extends any[], R1, R2, R3>(f1: (...args: TArgs) => R1, f2: (a: R1) => R2, f3: (a: R2) => R3): (...args: TArgs) => R3;
8
+ export declare function pipe<TArgs extends any[], R1, R2>(f1: (...args: TArgs) => R1, f2: (a: R1) => R2): (...args: TArgs) => R2;
9
+ export declare function pipe<TArgs extends any[], R1>(f1: (...args: TArgs) => R1): (...args: TArgs) => R1;
10
+ export declare function extractComparator(comparatorString: string): RegExpMatchArray | null;
11
+ export declare function combineVersion(major: string, minor: string, patch: string, preRelease: string): string;