You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
926 B
27 lines
926 B
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
import type { ConnectedContext } from "./ConnectedContext";
|
|
import type { Resource } from "./Resource";
|
|
import type { ErrorResult } from "./results/error/ErrorResult";
|
|
|
|
export interface ConnectedPlugin<
|
|
Name extends string = string,
|
|
UriType extends string = string,
|
|
ResourceType extends Resource<UriType> = Resource<UriType>,
|
|
ContextType = any,
|
|
> {
|
|
name: Name;
|
|
getResource(uri: UriType, context: ConnectedContext<any[]>): ResourceType;
|
|
createResource(
|
|
context: ConnectedContext<any[]>,
|
|
): Promise<ResourceType | ErrorResult>;
|
|
isUriValid(uri: string): uri is UriType;
|
|
normalizeUri?: (uri: UriType) => UriType;
|
|
initialContext: ContextType;
|
|
// This object exists to transfer typescript types. It does not need to be
|
|
// filled out in an actual instance.
|
|
types: {
|
|
uri: UriType;
|
|
context: ContextType;
|
|
resource: ResourceType;
|
|
};
|
|
}
|
|
|