From a14b494f1d03b8f11fc04c02c58a638156000cbe Mon Sep 17 00:00:00 2001 From: Jackson Morgan Date: Fri, 28 Mar 2025 20:00:54 -0400 Subject: [PATCH] solid-type-index refactor for connected --- .../src/SolidConnectedPlugin.ts | 32 ++++++++++++------- packages/connected/src/ConnectedLdoDataset.ts | 4 +-- packages/connected/src/ConnectedPlugin.ts | 10 +++--- 3 files changed, 26 insertions(+), 20 deletions(-) diff --git a/packages/connected-solid/src/SolidConnectedPlugin.ts b/packages/connected-solid/src/SolidConnectedPlugin.ts index b6b2c5d..9087beb 100644 --- a/packages/connected-solid/src/SolidConnectedPlugin.ts +++ b/packages/connected-solid/src/SolidConnectedPlugin.ts @@ -24,21 +24,29 @@ export interface SolidConnectedPlugin createResource(context: ConnectedContext): Promise; } +function getResource( + uri: SolidLeafUri, + context: ConnectedContext, +): SolidLeaf; +function getResource( + uri: SolidContainerUri, + context: ConnectedContext, +): SolidContainer; +function getResource( + uri: SolidLeafUri | SolidContainerUri, + context: ConnectedContext, +): SolidLeaf | SolidContainer { + if (isSolidContainerUri(uri)) { + return new SolidContainer(uri, context); + } else { + return new SolidLeaf(uri, context); + } +} + 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 ( - uri: SolidLeafUri | SolidContainerUri, - context: ConnectedContext, - ): SolidLeaf | SolidContainer { - if (isSolidContainerUri(uri)) { - return new SolidContainer(uri, context); - } else { - return new SolidLeaf(uri, context); - } - }, + getResource, createResource: function (): Promise { throw new Error("Function not implemented."); diff --git a/packages/connected/src/ConnectedLdoDataset.ts b/packages/connected/src/ConnectedLdoDataset.ts index e743bb8..a3489df 100644 --- a/packages/connected/src/ConnectedLdoDataset.ts +++ b/packages/connected/src/ConnectedLdoDataset.ts @@ -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> { 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; diff --git a/packages/connected/src/ConnectedPlugin.ts b/packages/connected/src/ConnectedPlugin.ts index cfe7889..a75cc90 100644 --- a/packages/connected/src/ConnectedPlugin.ts +++ b/packages/connected/src/ConnectedPlugin.ts @@ -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 = Resource, + Name extends string = any, + UriType extends string = any, + ResourceType extends Resource = any, ContextType = any, > { name: Name; - getResource(uri: UriType, context: ConnectedContext): ResourceType; + getResource(uri: UriType, context: ConnectedContext): ResourceType; createResource( - context: ConnectedContext, + context: ConnectedContext, ): Promise; isUriValid(uri: string): uri is UriType; normalizeUri?: (uri: UriType) => UriType;