/opt/canhelp/node_modules/kysely/dist/esm/parser
Edit: /opt/canhelp/node_modules/kysely/dist/esm/parser/with-parser.d.ts (3002B)
import type { UpdateQueryBuilder } from '../query-builder/update-query-builder.js';
import type { DeleteQueryBuilder } from '../query-builder/delete-query-builder.js';
import type { InsertQueryBuilder } from '../query-builder/insert-query-builder.js';
import type { QueryCreator } from '../query-creator.js';
import type { Expression } from '../expression/expression.js';
import type { ShallowRecord } from '../util/type-utils.js';
import { type CTEBuilderCallback } from '../query-builder/cte-builder.js';
import { CommonTableExpressionNode } from '../operation-node/common-table-expression-node.js';
export type CommonTableExpression
= (creator: QueryCreator) => CommonTableExpressionOutput;
export type RecursiveCommonTableExpression = (creator: QueryCreator]: ExtractRowFromCommonTableExpressionName;
}>) => CommonTableExpressionOutput;
export type QueryCreatorWithCommonTableExpression = QueryCreator]: ExtractRowFromCommonTableExpression;
}>;
type CommonTableExpressionOutput = Expression> | InsertQueryBuilder> | UpdateQueryBuilder> | DeleteQueryBuilder>;
/**
* Given a common CommonTableExpression CTE extracts the row type from it.
*
* For example a CTE `(db) => db.selectFrom('person').select(['id', 'first_name'])`
* would result in `Pick`.
*/
type ExtractRowFromCommonTableExpression = CTE extends (creator: QueryCreator) => infer Q ? Q extends Expression ? QO : Q extends InsertQueryBuilder ? QO : Q extends UpdateQueryBuilder ? QO : Q extends DeleteQueryBuilder ? QO : never : never;
/**
* Extracts 'person' from a string like 'person(id, first_name)'.
*/
type ExtractTableFromCommonTableExpressionName = CN extends `${infer TB}(${string})` ? TB : CN;
/**
* Parses a string like 'person(id, first_name)' into a type:
*
* {
* id: any,
* first_name: any
* }
*
*/
type ExtractRowFromCommonTableExpressionName = CN extends `${string}(${infer CL})` ? {
[C in ExtractColumnNamesFromColumnList]: any;
} : ShallowRecord;
/**
* Parses a string like 'id, first_name' into a type 'id' | 'first_name'
*/
type ExtractColumnNamesFromColumnList = R extends `${infer C}, ${infer RS}` ? C | ExtractColumnNamesFromColumnList : R;
export declare function parseCommonTableExpression(nameOrBuilderCallback: string | CTEBuilderCallback, expression: CommonTableExpression): CommonTableExpressionNode;
export {};