/opt/canhelp/node_modules/kysely/dist/cjs/parser
Edit: /opt/canhelp/node_modules/kysely/dist/cjs/parser/select-parser.d.ts (4230B)
import type { AliasedSelectQueryBuilder } from '../query-builder/select-query-builder.js';
import { SelectionNode } from '../operation-node/selection-node.js';
import type { AnyAliasedColumn, AnyAliasedColumnWithTable, AnyColumn, AnyColumnWithTable, DrainOuterGeneric, ExtractColumnType } from '../util/type-utils.js';
import { type DynamicReferenceBuilder } from '../dynamic/dynamic-reference-builder.js';
import { type AliasedExpressionOrFactory } from './expression-parser.js';
import type { SelectType } from '../util/column-type.js';
import type { AliasedExpression } from '../expression/expression.js';
import { type ExpressionBuilder } from '../expression/expression-builder.js';
export type SelectExpression
= AnyAliasedColumnWithTable | AnyAliasedColumn | AnyColumnWithTable | AnyColumn | DynamicReferenceBuilder | AliasedExpressionOrFactory;
export type SelectCallback = (eb: ExpressionBuilder) => ReadonlyArray>;
/**
* Turns a SelectExpression or a union of them into a selection object.
*/
export type Selection = [DB] extends [unknown] ? {
[E in FlattenSelectExpression as ExtractAliasFromSelectExpression]: SelectType>;
} : {};
/**
* Turns a SelectCallback into a selection object.
*/
export type CallbackSelection = CB extends (eb: any) => ReadonlyArray ? Selection : never;
export type SelectArg> = SE | ReadonlyArray | ((eb: ExpressionBuilder) => ReadonlyArray);
type FlattenSelectExpression = SE extends DynamicReferenceBuilder ? {
[R in RA]: DynamicReferenceBuilder;
}[RA] : SE;
type ExtractAliasFromSelectExpression = SE extends string ? ExtractAliasFromStringSelectExpression : SE extends AliasedExpression ? EA : SE extends (qb: any) => AliasedExpression ? EA : SE extends DynamicReferenceBuilder ? ExtractAliasFromStringSelectExpression : never;
type ExtractAliasFromStringSelectExpression = SE extends `${string}.${string}.${string} as ${infer A}` ? A : SE extends `${string}.${string} as ${infer A}` ? A : SE extends `${string} as ${infer A}` ? A : SE extends `${string}.${string}.${infer C}` ? C : SE extends `${string}.${infer C}` ? C : SE;
type ExtractTypeFromSelectExpression = SE extends string ? ExtractTypeFromStringSelectExpression : SE extends AliasedSelectQueryBuilder ? O[keyof O] | null : SE extends (eb: any) => AliasedSelectQueryBuilder ? O[keyof O] | null : SE extends AliasedExpression ? O : SE extends (eb: any) => AliasedExpression ? O : SE extends DynamicReferenceBuilder ? ExtractTypeFromStringSelectExpression | undefined : never;
type ExtractTypeFromStringSelectExpression = SE extends `${infer SC}.${infer T}.${infer C} as ${string}` ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : SE extends `${infer T}.${infer C} as ${string}` ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : SE extends `${infer C} as ${string}` ? C extends AnyColumn ? ExtractColumnType : never : SE extends `${infer SC}.${infer T}.${infer C}` ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : SE extends `${infer T}.${infer C}` ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : SE extends AnyColumn ? ExtractColumnType : never;
export type AllSelection = DrainOuterGeneric<{
[C in AnyColumn]: {
[T in TB]: SelectType;
}[TB];
}>;
export declare function parseSelectArg(selection: SelectArg>): SelectionNode[];
export declare function parseSelectAll(table?: string | string[]): SelectionNode[];
export {};