solid-type-index refactor for connected

main
Jackson Morgan 5 months ago
parent 502acb153c
commit a14b494f1d
  1. 22
      packages/connected-solid/src/SolidConnectedPlugin.ts
  2. 4
      packages/connected/src/ConnectedLdoDataset.ts
  3. 10
      packages/connected/src/ConnectedPlugin.ts

@ -24,12 +24,15 @@ export interface SolidConnectedPlugin
createResource(context: ConnectedContext<this[]>): Promise<SolidLeaf>;
}
export const solidConnectedPlugin: SolidConnectedPlugin = {
name: "solid",
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore This functions when its user-facing
getResource: function (
function getResource(
uri: SolidLeafUri,
context: ConnectedContext<SolidConnectedPlugin[]>,
): SolidLeaf;
function getResource(
uri: SolidContainerUri,
context: ConnectedContext<SolidConnectedPlugin[]>,
): SolidContainer;
function getResource(
uri: SolidLeafUri | SolidContainerUri,
context: ConnectedContext<SolidConnectedPlugin[]>,
): SolidLeaf | SolidContainer {
@ -38,7 +41,12 @@ export const solidConnectedPlugin: SolidConnectedPlugin = {
} else {
return new SolidLeaf(uri, context);
}
},
}
export const solidConnectedPlugin: SolidConnectedPlugin = {
name: "solid",
getResource,
createResource: function (): Promise<SolidLeaf> {
throw new Error("Function not implemented.");

@ -95,8 +95,6 @@ export class ConnectedLdoDataset<
let resource = this.resourceMap.get(normalizedUri);
if (!resource) {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore I don't know why this doesn't work
resource = plugin.getResource(uri, this.context);
this.resourceMap.set(normalizedUri, resource);
}
@ -110,7 +108,7 @@ export class ConnectedLdoDataset<
>(name: Name): Promise<ReturnType<Plugin["createResource"]>> {
const validPlugin = this.plugins.find((plugin) => name === plugin.name)!;
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore I don't know why this doesn't work
// @ts-ignore I have no idea why this doesn't work
const newResourceResult = await validPlugin.createResource(this.context);
// HACK: cast to any
if (newResourceResult.isError) return newResourceResult as any;

@ -4,15 +4,15 @@ 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>,
Name extends string = any,
UriType extends string = any,
ResourceType extends Resource<UriType> = any,
ContextType = any,
> {
name: Name;
getResource(uri: UriType, context: ConnectedContext<any[]>): ResourceType;
getResource(uri: UriType, context: ConnectedContext<this[]>): ResourceType;
createResource(
context: ConnectedContext<any[]>,
context: ConnectedContext<this[]>,
): Promise<ResourceType | ErrorResult>;
isUriValid(uri: string): uri is UriType;
normalizeUri?: (uri: UriType) => UriType;

Loading…
Cancel
Save