frontend-plugin-api: make output type parameter optional

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
This commit is contained in:
Patrik Oldsberg
2024-08-26 01:03:08 +02:00
parent ee454fdf53
commit 4f59435848
6 changed files with 19 additions and 16 deletions
+7 -5
View File
@@ -919,7 +919,7 @@ export interface ExtensionBlueprint<
config?: T['config'];
inputs?: ResolveInputValueOverrides<NonNullable<T['inputs']>>;
},
) => ExtensionDataContainer<T['output']>,
) => ExtensionDataContainer<NonNullable<T['output']>>,
context: {
node: AppNode;
apis: ApiHolder;
@@ -932,7 +932,9 @@ export interface ExtensionBlueprint<
},
): Iterable<UFactoryOutput> &
VerifyExtensionFactoryOutput<
AnyExtensionDataRef extends UNewOutput ? T['output'] : UNewOutput,
AnyExtensionDataRef extends UNewOutput
? NonNullable<T['output']>
: UNewOutput,
UFactoryOutput
>;
}): ExtensionDefinition<{
@@ -969,14 +971,14 @@ export type ExtensionBlueprintParameters = {
kind: string;
namespace?: string;
name?: string;
params: object;
params?: object;
configInput?: {
[K in string]: any;
};
config?: {
[K in string]: any;
};
output: AnyExtensionDataRef;
output?: AnyExtensionDataRef;
inputs?: {
[KName in string]: ExtensionInput<
AnyExtensionDataRef,
@@ -1157,7 +1159,7 @@ export type ExtensionDefinitionParameters = {
config?: {
[K in string]: any;
};
output: AnyExtensionDataRef;
output?: AnyExtensionDataRef;
inputs?: {
[KName in string]: ExtensionInput<
AnyExtensionDataRef,
@@ -148,7 +148,7 @@ export type ExtensionDefinitionParameters = {
name?: string;
configInput?: { [K in string]: any };
config?: { [K in string]: any };
output: AnyExtensionDataRef;
output?: AnyExtensionDataRef;
inputs?: {
[KName in string]: ExtensionInput<
AnyExtensionDataRef,
@@ -86,10 +86,10 @@ export type ExtensionBlueprintParameters = {
kind: string;
namespace?: string;
name?: string;
params: object;
params?: object;
configInput?: { [K in string]: any };
config?: { [K in string]: any };
output: AnyExtensionDataRef;
output?: AnyExtensionDataRef;
inputs?: {
[KName in string]: ExtensionInput<
AnyExtensionDataRef,
@@ -171,7 +171,7 @@ export interface ExtensionBlueprint<
config?: T['config'];
inputs?: ResolveInputValueOverrides<NonNullable<T['inputs']>>;
},
) => ExtensionDataContainer<T['output']>,
) => ExtensionDataContainer<NonNullable<T['output']>>,
context: {
node: AppNode;
apis: ApiHolder;
@@ -184,7 +184,9 @@ export interface ExtensionBlueprint<
},
): Iterable<UFactoryOutput> &
VerifyExtensionFactoryOutput<
AnyExtensionDataRef extends UNewOutput ? T['output'] : UNewOutput,
AnyExtensionDataRef extends UNewOutput
? NonNullable<T['output']>
: UNewOutput,
UFactoryOutput
>;
}): ExtensionDefinition<{
@@ -116,7 +116,6 @@ export type ResolveExtensionId<
kind: infer IKind extends string | undefined;
namespace: infer INamespace extends string | undefined;
name: infer IName extends string | undefined;
output: any;
}>
? [string | undefined] extends [IKind | INamespace | IName]
? never
+2 -2
View File
@@ -37,7 +37,7 @@ export function createExtensionTester<T extends ExtensionDefinitionParameters>(
options?: {
config?: T['configInput'];
},
): ExtensionTester<T['output']>;
): ExtensionTester<NonNullable<T['output']>>;
export { ErrorWithContext };
@@ -78,7 +78,7 @@ export class ExtensionTester<UOutput extends AnyExtensionDataRef> {
// (undocumented)
query<T extends ExtensionDefinitionParameters>(
extension: ExtensionDefinition<T>,
): ExtensionQuery<T['output']>;
): ExtensionQuery<NonNullable<T['output']>>;
// (undocumented)
reactElement(): JSX.Element;
}
@@ -79,7 +79,7 @@ export class ExtensionTester<UOutput extends AnyExtensionDataRef> {
static forSubject<T extends ExtensionDefinitionParameters>(
subject: ExtensionDefinition<T>,
options?: { config?: T['configInput'] },
): ExtensionTester<T['output']> {
): ExtensionTester<NonNullable<T['output']>> {
const tester = new ExtensionTester();
tester.add(subject, options as T['configInput'] & {});
return tester;
@@ -137,7 +137,7 @@ export class ExtensionTester<UOutput extends AnyExtensionDataRef> {
query<T extends ExtensionDefinitionParameters>(
extension: ExtensionDefinition<T>,
): ExtensionQuery<T['output']> {
): ExtensionQuery<NonNullable<T['output']>> {
const tree = this.#resolveTree();
const actualId = this.#extensions.find(e => e.definition === extension)?.id;
@@ -240,6 +240,6 @@ export class ExtensionTester<UOutput extends AnyExtensionDataRef> {
export function createExtensionTester<T extends ExtensionDefinitionParameters>(
subject: ExtensionDefinition<T>,
options?: { config?: T['configInput'] },
): ExtensionTester<T['output']> {
): ExtensionTester<NonNullable<T['output']>> {
return ExtensionTester.forSubject(subject, options);
}