blob: aefeb58fe317d253b25dba566b1e9a41ae9568d8 [file]
/*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
export type ReactProps = Record<string, unknown>;
export interface ReactHostCallbacks {
onError?: (error: unknown) => void;
}
export interface ReactMountHandle {
update: (props: ReactProps & ReactHostCallbacks) => void;
unmount: () => void;
}
export type ReactMountFn = (element: HTMLElement, props: ReactProps & ReactHostCallbacks) => ReactMountHandle;
/**
* Shape of a Module Federation exposed module: a factory returning an
* object whose `mount` is the entry point.
*/
export interface ReactExposedModule {
mount: ReactMountFn;
}
/**
* Legacy shape (used by ./PublishedParagraph until its follow-up
* refactor): mount returns a bare unmount function.
*/
export type LegacyMountFn = (element: HTMLElement, props: ReactProps) => () => void;
export interface LegacyExposedModule {
mount: LegacyMountFn;
}
export type AnyExposedModule = ReactExposedModule | LegacyExposedModule;