From b95b8568d3c04f7c178352370dd0933676577b2d Mon Sep 17 00:00:00 2001 From: Jackson Morgan Date: Tue, 29 Apr 2025 16:15:37 -0400 Subject: [PATCH] Types complete for link query --- .../src/types/linkQuery/LinkQuery.ts | 37 ++++++++----------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/packages/connected/src/types/linkQuery/LinkQuery.ts b/packages/connected/src/types/linkQuery/LinkQuery.ts index 1626c63..be5f083 100644 --- a/packages/connected/src/types/linkQuery/LinkQuery.ts +++ b/packages/connected/src/types/linkQuery/LinkQuery.ts @@ -5,8 +5,7 @@ import type { LdoBase, LdSet, ShapeType } from "@ldo/ldo"; import { ProfileShapeType } from "packages/ldo/test/profileData"; -import { SolidProfileShape } from "packages/ldo/test/profileData"; -import { PostShShapeType } from "packages/solid-react/test/.ldo/post.shapeTypes"; +import type { SolidProfileShape } from "packages/ldo/test/profileData"; /** * Link Query Input @@ -15,13 +14,13 @@ export type LQInputObject = Partial<{ [key in keyof Type]: LQInput; }>; -export type LQInputSubArray = Type extends object +export type LQInputSubSet = Type extends object ? LQInputObject : true; -export type LQInput = Type extends LdSet - ? LQInputSubArray - : LQInputSubArray; +export type LQInput = Type extends LdSet + ? LQInputSubSet + : LQInputSubSet; /** * Link Query Input Default @@ -43,31 +42,26 @@ export type LQReturnObject> = { ? never : key]: Input[key] extends LQInput ? undefined extends Type[key] - ? LQReturnRecursive | undefined - : LQReturnRecursive + ? LQReturn | undefined + : LQReturn : never; }; -export type LQReturnSubArray = Input extends LQInputSubArray - ? Type extends object +export type LQReturnSubSet = Input extends LQInputSubSet + ? Input extends LQInputObject ? LQReturnObject : Type : never; -export type LQReturnRecursive< +export type LQReturn< Type, Input extends LQInput, -> = NonNullable extends LdSet - ? LdSet> - : LQReturnSubArray; - -export type LQReturn> = LQReturnRecursive< - Type, - Input ->; +> = NonNullable extends LdSet + ? LdSet> + : LQReturnSubSet; type ExpandDeep = T extends LdSet - ? LdSet> // recursively expand arrays + ? LdSet> // recursively expand sets : T extends object ? { [K in keyof T]: ExpandDeep } // recursively expand objects : T; // base case (primitive types) @@ -79,10 +73,9 @@ function sampleFunction>( throw new Error("NotImplemented"); } -type other = ExpandDeep>; - const value = sampleFunction(ProfileShapeType, { hasTelephone: { type: { "@id": true }, value: true }, + name: true, }); value;