Skip to content

Commit

Permalink
updates
Browse files Browse the repository at this point in the history
  • Loading branch information
sinclairzx81 committed Feb 20, 2025
1 parent ddf78fb commit c0a7426
Showing 1 changed file with 20 additions and 20 deletions.
40 changes: 20 additions & 20 deletions src/type/module/compute.ts
Original file line number Diff line number Diff line change
Expand Up @@ -77,11 +77,11 @@ import * as KindGuard from '../guard/kind'
//
// ------------------------------------------------------------------
// prettier-ignore
type TDereferenceParamters<ModuleProperties extends TProperties, Types extends TSchema[], Result extends TSchema[] = []> = (
type TDereferenceParameters<ModuleProperties extends TProperties, Types extends TSchema[], Result extends TSchema[] = []> = (
Types extends [infer Left extends TSchema, ...infer Right extends TSchema[]]
? Left extends TRef<infer Key extends string>
? TDereferenceParamters<ModuleProperties, Right, [...Result, TDereference<ModuleProperties, Key>]>
: TDereferenceParamters<ModuleProperties, Right, [...Result, TFromType<ModuleProperties, Left>]>
? TDereferenceParameters<ModuleProperties, Right, [...Result, TDereference<ModuleProperties, Key>]>
: TDereferenceParameters<ModuleProperties, Right, [...Result, TFromType<ModuleProperties, Left>]>
: Result
)
// prettier-ignore
Expand Down Expand Up @@ -207,7 +207,7 @@ function FromRequired<Parameters extends TSchema[]>(parameters: Parameters): TFr
// ------------------------------------------------------------------
// prettier-ignore
type TFromComputed<ModuleProperties extends TProperties, Target extends string, Parameters extends TSchema[],
Dereferenced extends TSchema[] = TDereferenceParamters<ModuleProperties, Parameters>
Dereferenced extends TSchema[] = TDereferenceParameters<ModuleProperties, Parameters>
> = (
Target extends 'Awaited' ? TFromAwaited<Dereferenced> :
Target extends 'Index' ? TFromIndex<Dereferenced> :
Expand Down Expand Up @@ -345,6 +345,21 @@ function FromRecord<ModuleProperties extends TProperties, Type extends TRecord>(
return result as never
}
// ------------------------------------------------------------------
// Transform
// ------------------------------------------------------------------
// prettier-ignore
type TFromTransform<ModuleProperties extends TProperties, Input extends TSchema, Output extends unknown,
Result extends TSchema = Input extends TRef<infer Key extends string>
? TTransform<TDereference<ModuleProperties, Key>, Output>
: TTransform<Input, Output>
> = Result
// prettier-ignore
function FromTransform<ModuleProperties extends TProperties, Transform extends TTransform>(moduleProperties: ModuleProperties, transform: Transform): TSchema {
return (KindGuard.IsRef(transform))
? { ...Dereference(moduleProperties, transform.$ref), [TransformKind]: transform[TransformKind] }
: transform
}
// ------------------------------------------------------------------
// Tuple
// ------------------------------------------------------------------
// prettier-ignore
Expand All @@ -365,7 +380,7 @@ function FromUnion<ModuleProperties extends TProperties, Types extends TSchema[]
return Union(FromTypes(moduleProperties, types as never)) as never
}
// ------------------------------------------------------------------
// Rest
// Types
// ------------------------------------------------------------------
// prettier-ignore
type TFromTypes<ModuleProperties extends TProperties, Types extends TSchema[], Result extends TSchema[] = []> = (
Expand All @@ -377,21 +392,6 @@ function FromTypes<ModuleProperties extends TProperties, Types extends TSchema[]
return types.map((type) => FromType(moduleProperties, type)) as never
}
// ------------------------------------------------------------------
// Transform
// ------------------------------------------------------------------
// prettier-ignore
type TFromTransform<ModuleProperties extends TProperties, Input extends TSchema, Output extends unknown,
Result extends TSchema = Input extends TRef<infer Key extends string>
? TTransform<TDereference<ModuleProperties, Key>, Output>
: TTransform<Input, Output>
> = Result
// prettier-ignore
function FromTransform<ModuleProperties extends TProperties, Transform extends TTransform>(moduleProperties: ModuleProperties, transform: Transform): TSchema {
return (KindGuard.IsRef(transform))
? { ...Dereference(moduleProperties, transform.$ref), [TransformKind]: transform[TransformKind] }
: transform
}
// ------------------------------------------------------------------
// Type
// ------------------------------------------------------------------
// prettier-ignore
Expand Down

0 comments on commit c0a7426

Please sign in to comment.