frontend-plugin-api: update API report + fix
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
This commit is contained in:
@@ -17,7 +17,9 @@ import { ZodSchema } from 'zod';
|
||||
import { ZodTypeDef } from 'zod';
|
||||
|
||||
// @public (undocumented)
|
||||
export type AnyExtensionDataMap = Record<string, ExtensionDataRef<any>>;
|
||||
export type AnyExtensionDataMap = {
|
||||
[name in string]: ExtensionDataRef<any, any>;
|
||||
};
|
||||
|
||||
// @public (undocumented)
|
||||
export interface BackstagePlugin {
|
||||
@@ -29,12 +31,48 @@ export interface BackstagePlugin {
|
||||
id: string;
|
||||
}
|
||||
|
||||
// @public (undocumented)
|
||||
export interface ConfigurableExtensionDataRef<
|
||||
TData,
|
||||
TConfig extends {
|
||||
optional: boolean;
|
||||
},
|
||||
> extends ExtensionDataRef<TData, TConfig> {
|
||||
// (undocumented)
|
||||
optional(): ConfigurableExtensionDataRef<
|
||||
TData,
|
||||
TData & {
|
||||
optional: true;
|
||||
}
|
||||
>;
|
||||
}
|
||||
|
||||
// @public (undocumented)
|
||||
export const coreExtensionData: {
|
||||
reactComponent: ExtensionDataRef<ComponentType<{}>>;
|
||||
routePath: ExtensionDataRef<string>;
|
||||
apiFactory: ExtensionDataRef<AnyApiFactory>;
|
||||
routeRef: ExtensionDataRef<RouteRef<any>>;
|
||||
reactComponent: ConfigurableExtensionDataRef<
|
||||
ComponentType<{}>,
|
||||
{
|
||||
optional: false;
|
||||
}
|
||||
>;
|
||||
routePath: ConfigurableExtensionDataRef<
|
||||
string,
|
||||
{
|
||||
optional: false;
|
||||
}
|
||||
>;
|
||||
apiFactory: ConfigurableExtensionDataRef<
|
||||
AnyApiFactory,
|
||||
{
|
||||
optional: false;
|
||||
}
|
||||
>;
|
||||
routeRef: ConfigurableExtensionDataRef<
|
||||
RouteRef<any>,
|
||||
{
|
||||
optional: false;
|
||||
}
|
||||
>;
|
||||
};
|
||||
|
||||
// @public (undocumented)
|
||||
@@ -52,11 +90,7 @@ export function createApiExtension<
|
||||
api: AnyApiRef;
|
||||
factory: (options: {
|
||||
config: TConfig;
|
||||
inputs: {
|
||||
[pointName in keyof TInputs]: ExtensionDataValue<
|
||||
TInputs[pointName]['extensionData']
|
||||
>[];
|
||||
};
|
||||
inputs: ExtensionDataInputValues<TInputs>;
|
||||
}) => AnyApiFactory;
|
||||
}
|
||||
| {
|
||||
@@ -70,23 +104,32 @@ export function createApiExtension<
|
||||
|
||||
// @public (undocumented)
|
||||
export function createExtension<
|
||||
TData extends AnyExtensionDataMap,
|
||||
TPoint extends Record<
|
||||
TOutput extends AnyExtensionDataMap,
|
||||
TInputs extends Record<
|
||||
string,
|
||||
{
|
||||
extensionData: AnyExtensionDataMap;
|
||||
}
|
||||
>,
|
||||
TConfig = never,
|
||||
>(options: CreateExtensionOptions<TData, TPoint, TConfig>): Extension<TConfig>;
|
||||
>(
|
||||
options: CreateExtensionOptions<TOutput, TInputs, TConfig>,
|
||||
): Extension<TConfig>;
|
||||
|
||||
// @public (undocumented)
|
||||
export function createExtensionDataRef<T>(id: string): ExtensionDataRef<T>;
|
||||
export function createExtensionDataRef<TData>(
|
||||
id: string,
|
||||
): ConfigurableExtensionDataRef<
|
||||
TData,
|
||||
{
|
||||
optional: false;
|
||||
}
|
||||
>;
|
||||
|
||||
// @public (undocumented)
|
||||
export interface CreateExtensionOptions<
|
||||
TData extends AnyExtensionDataMap,
|
||||
TPoint extends Record<
|
||||
TOutput extends AnyExtensionDataMap,
|
||||
TInputs extends Record<
|
||||
string,
|
||||
{
|
||||
extensionData: AnyExtensionDataMap;
|
||||
@@ -103,20 +146,16 @@ export interface CreateExtensionOptions<
|
||||
// (undocumented)
|
||||
factory(options: {
|
||||
source?: BackstagePlugin;
|
||||
bind: ExtensionDataBind<TData>;
|
||||
bind: ExtensionDataBind<TOutput>;
|
||||
config: TConfig;
|
||||
inputs: {
|
||||
[pointName in keyof TPoint]: ExtensionDataValue<
|
||||
TPoint[pointName]['extensionData']
|
||||
>[];
|
||||
};
|
||||
inputs: ExtensionDataInputValues<TInputs>;
|
||||
}): void;
|
||||
// (undocumented)
|
||||
id: string;
|
||||
// (undocumented)
|
||||
inputs?: TPoint;
|
||||
inputs?: TInputs;
|
||||
// (undocumented)
|
||||
output: TData;
|
||||
output: TOutput;
|
||||
}
|
||||
|
||||
// @public
|
||||
@@ -146,11 +185,7 @@ export function createPageExtension<
|
||||
routeRef?: RouteRef;
|
||||
component: (props: {
|
||||
config: TConfig;
|
||||
inputs: {
|
||||
[pointName in keyof TInputs]: ExtensionDataValue<
|
||||
TInputs[pointName]['extensionData']
|
||||
>[];
|
||||
};
|
||||
inputs: ExtensionDataInputValues<TInputs>;
|
||||
}) => Promise<JSX.Element>;
|
||||
},
|
||||
): Extension<TConfig>;
|
||||
@@ -207,22 +242,62 @@ export interface ExtensionBoundaryProps {
|
||||
}
|
||||
|
||||
// @public (undocumented)
|
||||
export type ExtensionDataBind<TData extends AnyExtensionDataMap> = {
|
||||
[K in keyof TData]: (value: TData[K]['T']) => void;
|
||||
export type ExtensionDataBind<TMap extends AnyExtensionDataMap> = (
|
||||
values: {
|
||||
[DataName in keyof TMap as TMap[DataName]['config'] extends {
|
||||
optional: false;
|
||||
}
|
||||
? DataName
|
||||
: never]: TMap[DataName]['T'];
|
||||
} & {
|
||||
[DataName in keyof TMap as TMap[DataName]['config'] extends {
|
||||
optional: true;
|
||||
}
|
||||
? DataName
|
||||
: never]?: TMap[DataName]['T'];
|
||||
},
|
||||
) => void;
|
||||
|
||||
// @public (undocumented)
|
||||
export type ExtensionDataInputValues<
|
||||
TInputs extends {
|
||||
[name in string]: {
|
||||
extensionData: AnyExtensionDataMap;
|
||||
};
|
||||
},
|
||||
> = {
|
||||
[InputName in keyof TInputs]: Array<
|
||||
{
|
||||
[DataName in keyof TInputs[InputName]['extensionData'] as TInputs[InputName]['extensionData'][DataName]['config'] extends {
|
||||
optional: true;
|
||||
}
|
||||
? DataName
|
||||
: never]?: TInputs[InputName]['extensionData'][DataName]['T'];
|
||||
} & {
|
||||
[DataName in keyof TInputs[InputName]['extensionData'] as TInputs[InputName]['extensionData'][DataName]['config'] extends {
|
||||
optional: false;
|
||||
}
|
||||
? DataName
|
||||
: never]: TInputs[InputName]['extensionData'][DataName]['T'];
|
||||
}
|
||||
>;
|
||||
};
|
||||
|
||||
// @public (undocumented)
|
||||
export type ExtensionDataRef<T> = {
|
||||
export type ExtensionDataRef<
|
||||
TData,
|
||||
TConfig extends {
|
||||
optional: boolean;
|
||||
} = {
|
||||
optional: false;
|
||||
},
|
||||
> = {
|
||||
id: string;
|
||||
T: T;
|
||||
T: TData;
|
||||
config: TConfig;
|
||||
$$type: 'extension-data';
|
||||
};
|
||||
|
||||
// @public (undocumented)
|
||||
export type ExtensionDataValue<TData extends AnyExtensionDataMap> = {
|
||||
[K in keyof TData]: TData[K]['T'];
|
||||
};
|
||||
|
||||
// @public (undocumented)
|
||||
export interface PluginOptions {
|
||||
// (undocumented)
|
||||
|
||||
@@ -33,8 +33,8 @@ export interface ConfigurableExtensionDataRef<
|
||||
optional(): ConfigurableExtensionDataRef<TData, TData & { optional: true }>;
|
||||
}
|
||||
|
||||
/** @public */
|
||||
// TODO: change to options object with ID.
|
||||
/** @public */
|
||||
export function createExtensionDataRef<TData>(
|
||||
id: string,
|
||||
): ConfigurableExtensionDataRef<TData, { optional: false }> {
|
||||
|
||||
@@ -24,6 +24,7 @@ export {
|
||||
export {
|
||||
createExtensionDataRef,
|
||||
type ExtensionDataRef,
|
||||
type ConfigurableExtensionDataRef,
|
||||
} from './createExtensionDataRef';
|
||||
export {
|
||||
createPlugin,
|
||||
|
||||
Reference in New Issue
Block a user