Files
NapCatQQ/.pnpm-store/v3/files/00/8ff1094f723d434ac95977e424dbe7b4261dff1a9f4f49af7180db201f44ba89fc1ff308c9dcf171a1742c041d5ca88be0ff8e214640d7b266fe9f23aa918a
T
TanTan e311ca3275
Build NapCat Artifacts / Type Check & Test (push) Waiting to run
docs: 仓库链接指向本镜像仓库
2026-11-13 09:25:58 +08:00

19 lines
1.8 KiB
Plaintext

import type { TSchema } from '../schema/index.mjs';
import type { Evaluate } from '../helpers/index.mjs';
import { type TIntersectEvaluated } from '../intersect/index.mjs';
import { type TIndexFromPropertyKeys } from '../indexed/index.mjs';
import { type TKeyOfPropertyKeys } from '../keyof/index.mjs';
import { type TNever } from '../never/index.mjs';
import { type TObject, type TProperties, type ObjectOptions } from '../object/index.mjs';
import { TSetDistinct } from '../sets/index.mjs';
type TCompositeKeys<T extends TSchema[], Acc extends PropertyKey[] = []> = (T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? TCompositeKeys<R, [...Acc, ...TKeyOfPropertyKeys<L>]> : TSetDistinct<Acc>);
type TFilterNever<T extends TSchema[], Acc extends TSchema[] = []> = (T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? L extends TNever ? TFilterNever<R, [...Acc]> : TFilterNever<R, [...Acc, L]> : Acc);
type TCompositeProperty<T extends TSchema[], K extends PropertyKey, Acc extends TSchema[] = []> = (T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? TCompositeProperty<R, K, [...Acc, ...TIndexFromPropertyKeys<L, [K]>]> : TFilterNever<Acc>);
type TCompositeProperties<T extends TSchema[], K extends PropertyKey[], Acc = {}> = (K extends [infer L extends PropertyKey, ...infer R extends PropertyKey[]] ? TCompositeProperties<T, R, Acc & {
[_ in L]: TIntersectEvaluated<TCompositeProperty<T, L>>;
}> : Acc);
type TCompositeEvaluate<T extends TSchema[], K extends PropertyKey[] = TCompositeKeys<T>, P extends TProperties = Evaluate<TCompositeProperties<T, K>>, R extends TSchema = TObject<P>> = R;
export type TComposite<T extends TSchema[]> = TCompositeEvaluate<T>;
export declare function Composite<T extends TSchema[]>(T: [...T], options?: ObjectOptions): TComposite<T>;
export {};