@kuindji/sql-type-parser
Advanced tools
| /** | ||
| * Conditional SQL Module | ||
| * | ||
| * Provides type-safe conditional SQL processing with: | ||
| * - Conditional blocks: `/*if:condition* /.../*endif* /` | ||
| * - Named parameters: `:paramName` | ||
| * - Full result type inference with optionality | ||
| * | ||
| * @example | ||
| * ```typescript | ||
| * import { createConditionalQuery } from '@kuindji/sql-type-parser/conditional' | ||
| * | ||
| * const query = createConditionalQuery<MySchema>() | ||
| * | ||
| * const result = query( | ||
| * `SELECT id, name | ||
| * /*if:includeEmail* /, email/*endif* / | ||
| * FROM users | ||
| * /*if:withOrders* / | ||
| * LEFT JOIN orders o ON o.user_id = users.id | ||
| * /*endif* / | ||
| * WHERE id = :userId | ||
| * /*if:activeOnly* /AND active = true/*endif* /`, | ||
| * { includeEmail: true, withOrders: false, activeOnly: true }, | ||
| * { userId: 123 } | ||
| * ) | ||
| * | ||
| * // result.sql: "SELECT id, name, email FROM users WHERE id = $1 AND active = true" | ||
| * // result.params: [123] | ||
| * // Type: { id: number; name: string; email: string | undefined } | ||
| * ``` | ||
| */ | ||
| import type { DatabaseSchema } from "../common/schema.js"; | ||
| import type { QueryParamValue } from "./runtime.js"; | ||
| import type { ConditionalQueryResult, ValidateConditionalSQL } from "./matcher.js"; | ||
| import { type ConditionalSQLOutput } from "./runtime.js"; | ||
| export type { ConditionalQueryResult, ProcessedSQL, ValidateConditionalSQL, } from "./matcher.js"; | ||
| export type { AllConditionsFalse, AllConditionsTrue, ConditionalColumn, ConditionalLeftJoinColumn, EvalCondition, ExtractParamNames, GetPath, IsTruthy, ProcessConditionalSQL, ValidateParams, } from "./types.js"; | ||
| export { conditionalSQL, normalizeWhitespace, processConditionalSQL, processParams, type ConditionalSQLOptions, type ConditionalSQLOutput, type QueryParamValue, } from "./runtime.js"; | ||
| /** | ||
| * Branded output type that carries result type information. | ||
| */ | ||
| export interface TypedConditionalSQLOutput<Result> extends ConditionalSQLOutput { | ||
| /** Type brand for result inference (not used at runtime) */ | ||
| readonly __resultType?: Result; | ||
| } | ||
| /** | ||
| * Create a type-safe conditional query function for a schema. | ||
| * | ||
| * The returned function processes SQL templates with conditional blocks | ||
| * and parameters, returning both the processed SQL and a typed result. | ||
| * | ||
| * @example | ||
| * ```typescript | ||
| * const query = createConditionalQuery<MySchema>() | ||
| * | ||
| * const { sql, params } = query( | ||
| * `SELECT id, name /*if:extra* /, extra/*endif* / FROM users WHERE id = :id`, | ||
| * { extra: true }, | ||
| * { id: 1 } | ||
| * ) | ||
| * ``` | ||
| */ | ||
| export declare function createConditionalQuery<Schema extends DatabaseSchema>(): <Template extends string, Conditions extends Record<string, unknown>, Params extends Record<string, QueryParamValue> = {}>(template: Template, conditions: Conditions, params?: Params) => TypedConditionalSQLOutput<ConditionalQueryResult<Template, Conditions, Schema>>; | ||
| /** | ||
| * Extract the result type from a TypedConditionalSQLOutput. | ||
| */ | ||
| export type ExtractResultType<T> = T extends TypedConditionalSQLOutput<infer R> ? R : never; | ||
| /** | ||
| * Validate a conditional SQL query at compile time. | ||
| * Returns the template if valid, or an error message type if invalid. | ||
| */ | ||
| export type ValidConditionalQuery<Template extends string, Conditions extends Record<string, unknown>, Schema extends DatabaseSchema> = ValidateConditionalSQL<Template, Conditions, Schema> extends true ? Template : `[SQL Error] ${ValidateConditionalSQL<Template, Conditions, Schema> & string}`; | ||
| /** | ||
| * Helper to specify condition types statically for better type inference. | ||
| * | ||
| * Use this when you want to pre-define condition shapes that can be | ||
| * reused across multiple queries. | ||
| * | ||
| * @example | ||
| * ```typescript | ||
| * type MyConditions = { | ||
| * includeDeleted: boolean | ||
| * withOrders: boolean | ||
| * } | ||
| * | ||
| * const query = createConditionalQuery<MySchema>() | ||
| * const typedQuery = withConditions<MyConditions>(query) | ||
| * | ||
| * // Now conditions are typed as MyConditions | ||
| * const result = typedQuery(template, { includeDeleted: true, withOrders: false }, params) | ||
| * ``` | ||
| */ | ||
| export declare function withConditions<StaticConditions extends Record<string, unknown>>(queryFn: ReturnType<typeof createConditionalQuery>): <Template extends string, Params extends Record<string, QueryParamValue> = {}>(template: Template, conditions: StaticConditions, params?: Params) => TypedConditionalSQLOutput<ConditionalQueryResult<Template, StaticConditions, DatabaseSchema>>; | ||
| //# sourceMappingURL=index.d.ts.map |
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/conditional/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EACR,sBAAsB,EAEtB,sBAAsB,EACzB,MAAM,cAAc,CAAC;AACtB,OAAO,EAEH,KAAK,oBAAoB,EAC5B,MAAM,cAAc,CAAC;AAMtB,YAAY,EACR,sBAAsB,EACtB,YAAY,EACZ,sBAAsB,GACzB,MAAM,cAAc,CAAC;AAEtB,YAAY,EACR,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,yBAAyB,EACzB,aAAa,EACb,iBAAiB,EACjB,OAAO,EACP,QAAQ,EACR,qBAAqB,EACrB,cAAc,GACjB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACH,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACb,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,eAAe,GACvB,MAAM,cAAc,CAAC;AAMtB;;GAEG;AACH,MAAM,WAAW,yBAAyB,CAAC,MAAM,CAAE,SAAQ,oBAAoB;IAC3E,4DAA4D;IAC5D,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAClC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,SAAS,cAAc,MAU5D,QAAQ,SAAS,MAAM,EACvB,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1C,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,iBAEpC,QAAQ,cACN,UAAU,WACb,MAAM,KAChB,yBAAyB,CACxB,sBAAsB,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,CACvD,CAQJ;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,CAAC,SAAS,yBAAyB,CAClE,MAAM,CAAC,CACV,GAAG,CAAC,GACC,KAAK,CAAC;AAMZ;;;GAGG;AACH,MAAM,MAAM,qBAAqB,CAC7B,QAAQ,SAAS,MAAM,EACvB,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1C,MAAM,SAAS,cAAc,IAC7B,sBAAsB,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,SAAS,IAAI,GAC/D,QAAQ,GACR,eAAe,sBAAsB,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC;AAMrF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,cAAc,CAAC,gBAAgB,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3E,OAAO,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,IAG9C,QAAQ,SAAS,MAAM,EACvB,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,EAAE,EAEnD,UAAU,QAAQ,EAClB,YAAY,gBAAgB,EAC5B,SAAS,MAAM,mGAItB"} |
| /** | ||
| * Conditional SQL Module | ||
| * | ||
| * Provides type-safe conditional SQL processing with: | ||
| * - Conditional blocks: `/*if:condition* /.../*endif* /` | ||
| * - Named parameters: `:paramName` | ||
| * - Full result type inference with optionality | ||
| * | ||
| * @example | ||
| * ```typescript | ||
| * import { createConditionalQuery } from '@kuindji/sql-type-parser/conditional' | ||
| * | ||
| * const query = createConditionalQuery<MySchema>() | ||
| * | ||
| * const result = query( | ||
| * `SELECT id, name | ||
| * /*if:includeEmail* /, email/*endif* / | ||
| * FROM users | ||
| * /*if:withOrders* / | ||
| * LEFT JOIN orders o ON o.user_id = users.id | ||
| * /*endif* / | ||
| * WHERE id = :userId | ||
| * /*if:activeOnly* /AND active = true/*endif* /`, | ||
| * { includeEmail: true, withOrders: false, activeOnly: true }, | ||
| * { userId: 123 } | ||
| * ) | ||
| * | ||
| * // result.sql: "SELECT id, name, email FROM users WHERE id = $1 AND active = true" | ||
| * // result.params: [123] | ||
| * // Type: { id: number; name: string; email: string | undefined } | ||
| * ``` | ||
| */ | ||
| import { conditionalSQL, } from "./runtime.js"; | ||
| export { conditionalSQL, normalizeWhitespace, processConditionalSQL, processParams, } from "./runtime.js"; | ||
| /** | ||
| * Create a type-safe conditional query function for a schema. | ||
| * | ||
| * The returned function processes SQL templates with conditional blocks | ||
| * and parameters, returning both the processed SQL and a typed result. | ||
| * | ||
| * @example | ||
| * ```typescript | ||
| * const query = createConditionalQuery<MySchema>() | ||
| * | ||
| * const { sql, params } = query( | ||
| * `SELECT id, name /*if:extra* /, extra/*endif* / FROM users WHERE id = :id`, | ||
| * { extra: true }, | ||
| * { id: 1 } | ||
| * ) | ||
| * ``` | ||
| */ | ||
| export function createConditionalQuery() { | ||
| /** | ||
| * Process a conditional SQL template. | ||
| * | ||
| * @param template - SQL template with conditional blocks and :params | ||
| * @param conditions - Object with condition values (must use `as const` for type inference) | ||
| * @param params - Object with parameter values | ||
| * @returns Processed SQL and params with inferred result type | ||
| */ | ||
| function query(template, conditions, params) { | ||
| const result = conditionalSQL(template, conditions, params ?? {}); | ||
| return result; | ||
| } | ||
| return query; | ||
| } | ||
| // ============================================================================ | ||
| // Static Type Helpers | ||
| // ============================================================================ | ||
| /** | ||
| * Helper to specify condition types statically for better type inference. | ||
| * | ||
| * Use this when you want to pre-define condition shapes that can be | ||
| * reused across multiple queries. | ||
| * | ||
| * @example | ||
| * ```typescript | ||
| * type MyConditions = { | ||
| * includeDeleted: boolean | ||
| * withOrders: boolean | ||
| * } | ||
| * | ||
| * const query = createConditionalQuery<MySchema>() | ||
| * const typedQuery = withConditions<MyConditions>(query) | ||
| * | ||
| * // Now conditions are typed as MyConditions | ||
| * const result = typedQuery(template, { includeDeleted: true, withOrders: false }, params) | ||
| * ``` | ||
| */ | ||
| export function withConditions(queryFn) { | ||
| return (template, conditions, params) => { | ||
| return queryFn(template, conditions, params); | ||
| }; | ||
| } | ||
| //# sourceMappingURL=index.js.map |
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/conditional/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AASH,OAAO,EACH,cAAc,GAEjB,MAAM,cAAc,CAAC;AAyBtB,OAAO,EACH,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,GAIhB,MAAM,cAAc,CAAC;AActB;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,sBAAsB;IAClC;;;;;;;OAOG;IACH,SAAS,KAAK,CAKV,QAAkB,EAClB,UAAsB,EACtB,MAAe;QAIf,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;QAClE,OAAO,MAEN,CAAC;IACN,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AA0BD,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,cAAc,CAC1B,OAAkD;IAElD,OAAO,CAIH,QAAkB,EAClB,UAA4B,EAC5B,MAAe,EACjB,EAAE;QACA,OAAO,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC,CAAC;AACN,CAAC"} |
| /** | ||
| * Conditional SQL Matcher | ||
| * | ||
| * Integrates conditional SQL processing with the existing schema matcher. | ||
| * Handles optionality for columns in conditional blocks. | ||
| */ | ||
| import type { DatabaseSchema } from "../common/schema.js"; | ||
| import type { Flatten, MatchError } from "../common/utils.js"; | ||
| import type { QueryResult } from "../select/matcher/index.js"; | ||
| import type { AllConditionsFalse, AllConditionsTrue, ProcessConditionalSQL } from "./types.js"; | ||
| /** | ||
| * Compute the result type for a conditional SQL query. | ||
| * | ||
| * Strategy: | ||
| * 1. Process SQL with all conditions TRUE → get "full" column set | ||
| * 2. Process SQL with all conditions FALSE → get "base" column set | ||
| * 3. Columns in full but not in base → mark as `| undefined` | ||
| * 4. LEFT/FULL JOIN columns get `| null` (from base QueryResult) | ||
| * | ||
| * For conditional LEFT JOINs, columns get both: `T | null | undefined` | ||
| */ | ||
| export type ConditionalQueryResult<Template extends string, Conditions extends Record<string, unknown>, Schema extends DatabaseSchema> = ProcessConditionalSQL<Template, AllConditionsTrue<Conditions>> extends infer FullSQL extends string ? ProcessConditionalSQL<Template, AllConditionsFalse<Conditions>> extends infer BaseSQL extends string ? QueryResult<FullSQL, Schema> extends infer FullResult ? FullResult extends MatchError<string> ? FullResult : QueryResult<BaseSQL, Schema> extends infer BaseResult ? BaseResult extends MatchError<string> ? FullResult : MergeConditionalResults<FullResult, BaseResult> : FullResult : MatchError<"Failed to match full SQL"> : MatchError<"Failed to process base SQL"> : MatchError<"Failed to process full SQL">; | ||
| /** | ||
| * Merge full and base results, marking conditional columns as optional. | ||
| * | ||
| * - Columns in both full and base: keep as-is | ||
| * - Columns only in full: add `| undefined` | ||
| */ | ||
| export type MergeConditionalResults<Full, Base> = Flatten<{ | ||
| [K in keyof Full as K extends keyof Base ? K : never]: Full[K]; | ||
| } & { | ||
| [K in keyof Full as K extends keyof Base ? never : K]: Full[K] | undefined; | ||
| }>; | ||
| /** | ||
| * The processed SQL string type based on actual conditions. | ||
| */ | ||
| export type ProcessedSQL<Template extends string, Conditions extends Record<string, unknown>> = ProcessConditionalSQL<Template, Conditions>; | ||
| /** | ||
| * Validate a conditional SQL query. | ||
| * | ||
| * Validates the "full" version (all conditions true) to ensure | ||
| * all possible columns and tables are valid. | ||
| */ | ||
| export type ValidateConditionalSQL<Template extends string, Conditions extends Record<string, unknown>, Schema extends DatabaseSchema> = ProcessConditionalSQL<Template, AllConditionsTrue<Conditions>> extends infer FullSQL extends string ? QueryResult<FullSQL, Schema> extends MatchError<infer Msg> ? Msg : true : "Failed to process SQL"; | ||
| //# sourceMappingURL=matcher.d.ts.map |
| {"version":3,"file":"matcher.d.ts","sourceRoot":"","sources":["../../src/conditional/matcher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EACR,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACxB,MAAM,YAAY,CAAC;AAMpB;;;;;;;;;;GAUG;AACH,MAAM,MAAM,sBAAsB,CAC9B,QAAQ,SAAS,MAAM,EACvB,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1C,MAAM,SAAS,cAAc,IAG7B,qBAAqB,CACjB,QAAQ,EACR,iBAAiB,CAAC,UAAU,CAAC,CAChC,SAAS,MAAM,OAAO,SAAS,MAAM,GAEhC,qBAAqB,CACnB,QAAQ,EACR,kBAAkB,CAAC,UAAU,CAAC,CACjC,SAAS,MAAM,OAAO,SAAS,MAAM,GAEhC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,SAAS,MAAM,UAAU,GACjD,UAAU,SAAS,UAAU,CAAC,MAAM,CAAC,GAAG,UAAU,GAClD,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,SAAS,MAAM,UAAU,GACjD,UAAU,SAAS,UAAU,CAAC,MAAM,CAAC,GAEjC,UAAU,GACd,uBAAuB,CAAC,UAAU,EAAE,UAAU,CAAC,GACnD,UAAU,GACd,UAAU,CAAC,0BAA0B,CAAC,GAC1C,UAAU,CAAC,4BAA4B,CAAC,GACxC,UAAU,CAAC,4BAA4B,CAAC,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,MAAM,uBAAuB,CAAC,IAAI,EAAE,IAAI,IAAI,OAAO,CAEnD;KACG,CAAC,IAAI,MAAM,IAAI,IAAI,CAAC,SAAS,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;CACjE,GAEC;KACG,CAAC,IAAI,MAAM,IAAI,IAAI,CAAC,SAAS,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC,GAC9C,IAAI,CAAC,CAAC,CAAC,GACP,SAAS;CAClB,CACJ,CAAC;AAMF;;GAEG;AACH,MAAM,MAAM,YAAY,CACpB,QAAQ,SAAS,MAAM,EACvB,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAC1C,qBAAqB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAMhD;;;;;GAKG;AACH,MAAM,MAAM,sBAAsB,CAC9B,QAAQ,SAAS,MAAM,EACvB,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1C,MAAM,SAAS,cAAc,IAC7B,qBAAqB,CACrB,QAAQ,EACR,iBAAiB,CAAC,UAAU,CAAC,CAChC,SAAS,MAAM,OAAO,SAAS,MAAM,GAChC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,SAAS,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,GAChE,IAAI,GACJ,uBAAuB,CAAC"} |
| /** | ||
| * Conditional SQL Matcher | ||
| * | ||
| * Integrates conditional SQL processing with the existing schema matcher. | ||
| * Handles optionality for columns in conditional blocks. | ||
| */ | ||
| export {}; | ||
| //# sourceMappingURL=matcher.js.map |
| {"version":3,"file":"matcher.js","sourceRoot":"","sources":["../../src/conditional/matcher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"} |
| /** | ||
| * Conditional SQL Runtime Implementation | ||
| * | ||
| * Runtime processing of SQL templates with conditional blocks | ||
| * and parameter substitution. | ||
| */ | ||
| export type QueryParamValue = string | number | boolean | null; | ||
| export interface ConditionalSQLOptions { | ||
| /** | ||
| * If true, preserves conditional comment markers in output. | ||
| * Useful for debugging. | ||
| * @default false | ||
| */ | ||
| preserveMarkers?: boolean; | ||
| } | ||
| export interface ConditionalSQLOutput { | ||
| /** The processed SQL string with conditions applied */ | ||
| sql: string; | ||
| /** The parameter values in order of appearance */ | ||
| params: QueryParamValue[]; | ||
| } | ||
| /** | ||
| * Process conditional blocks in a SQL template. | ||
| * | ||
| * @param template - SQL template with `/*if:condition* /.../*endif* /` blocks | ||
| * @param conditions - Object with condition values | ||
| * @returns Processed SQL string | ||
| */ | ||
| export declare function processConditionalSQL(template: string, conditions: Record<string, unknown>): string; | ||
| /** | ||
| * Extract named parameters from SQL and convert to positional placeholders. | ||
| * | ||
| * @param sql - SQL string with :paramName placeholders | ||
| * @param params - Object with parameter values | ||
| * @returns Object with processed SQL and ordered params array | ||
| */ | ||
| export declare function processParams(sql: string, params: Record<string, QueryParamValue>): ConditionalSQLOutput; | ||
| /** | ||
| * Process a conditional SQL template with both conditions and parameters. | ||
| * | ||
| * @param template - SQL template with conditional blocks and :params | ||
| * @param conditions - Object with condition values | ||
| * @param params - Object with parameter values | ||
| * @returns Processed SQL and params array | ||
| */ | ||
| export declare function conditionalSQL(template: string, conditions: Record<string, unknown>, params?: Record<string, QueryParamValue>): ConditionalSQLOutput; | ||
| /** | ||
| * Normalize whitespace in SQL (collapse multiple spaces/newlines). | ||
| * Useful for comparing or logging processed SQL. | ||
| */ | ||
| export declare function normalizeWhitespace(sql: string): string; | ||
| //# sourceMappingURL=runtime.d.ts.map |
| {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/conditional/runtime.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAE/D,MAAM,WAAW,qBAAqB;IAClC;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACjC,uDAAuD;IACvD,GAAG,EAAE,MAAM,CAAC;IACZ,kDAAkD;IAClD,MAAM,EAAE,eAAe,EAAE,CAAC;CAC7B;AA0BD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACjC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACpC,MAAM,CA6BR;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CACzB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GACxC,oBAAoB,CA4BtB;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC1B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAM,GAC7C,oBAAoB,CAMtB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAOvD"} |
| /** | ||
| * Conditional SQL Runtime Implementation | ||
| * | ||
| * Runtime processing of SQL templates with conditional blocks | ||
| * and parameter substitution. | ||
| */ | ||
| // ============================================================================ | ||
| // Core Runtime Implementation | ||
| // ============================================================================ | ||
| /** | ||
| * Get a nested value from an object using dot notation. | ||
| */ | ||
| function getNestedValue(obj, path) { | ||
| const keys = path.split("."); | ||
| let current = obj; | ||
| for (const key of keys) { | ||
| if (current === null || current === undefined) { | ||
| return undefined; | ||
| } | ||
| if (typeof current !== "object") { | ||
| return undefined; | ||
| } | ||
| current = current[key]; | ||
| } | ||
| return current; | ||
| } | ||
| /** | ||
| * Process conditional blocks in a SQL template. | ||
| * | ||
| * @param template - SQL template with `/*if:condition* /.../*endif* /` blocks | ||
| * @param conditions - Object with condition values | ||
| * @returns Processed SQL string | ||
| */ | ||
| export function processConditionalSQL(template, conditions) { | ||
| // Pattern matches /*if:condition*/ ... /*endif*/ | ||
| // Uses negative lookahead to match innermost conditions first | ||
| const pattern = /\/\*if:(!?[\w.]+)\*\/((?:(?!\/\*if:)[\s\S])*?)\/\*endif\*\//g; | ||
| let result = template; | ||
| let hasMatches = true; | ||
| // Process iteratively to handle nested conditions | ||
| while (hasMatches) { | ||
| hasMatches = false; | ||
| result = result.replace(pattern, (_, condition, content) => { | ||
| hasMatches = true; | ||
| const isNegated = condition.startsWith("!"); | ||
| const key = isNegated ? condition.slice(1) : condition; | ||
| const value = getNestedValue(conditions, key); | ||
| const isTruthy = Boolean(value); | ||
| return (isNegated ? !isTruthy : isTruthy) ? content : ""; | ||
| }); | ||
| } | ||
| return result; | ||
| } | ||
| /** | ||
| * Extract named parameters from SQL and convert to positional placeholders. | ||
| * | ||
| * @param sql - SQL string with :paramName placeholders | ||
| * @param params - Object with parameter values | ||
| * @returns Object with processed SQL and ordered params array | ||
| */ | ||
| export function processParams(sql, params) { | ||
| // Find all param references in order of first appearance | ||
| const paramRegex = /:([a-zA-Z_][a-zA-Z0-9_]*)(?![a-zA-Z0-9_])/g; | ||
| const usedParams = []; | ||
| let match; | ||
| while ((match = paramRegex.exec(sql)) !== null) { | ||
| const name = match[1]; | ||
| if (name in params && !usedParams.includes(name)) { | ||
| usedParams.push(name); | ||
| } | ||
| } | ||
| // Replace each param with positional placeholder | ||
| let processedSql = sql; | ||
| for (let i = 0; i < usedParams.length; i++) { | ||
| const name = usedParams[i]; | ||
| const regex = new RegExp(`:${name}(?![a-zA-Z0-9_])`, "g"); | ||
| processedSql = processedSql.replace(regex, `$${i + 1}`); | ||
| } | ||
| // Extract param values in order | ||
| const paramValues = usedParams.map(name => params[name]); | ||
| return { | ||
| sql: processedSql, | ||
| params: paramValues, | ||
| }; | ||
| } | ||
| /** | ||
| * Process a conditional SQL template with both conditions and parameters. | ||
| * | ||
| * @param template - SQL template with conditional blocks and :params | ||
| * @param conditions - Object with condition values | ||
| * @param params - Object with parameter values | ||
| * @returns Processed SQL and params array | ||
| */ | ||
| export function conditionalSQL(template, conditions, params = {}) { | ||
| // Step 1: Process conditional blocks | ||
| const conditionalProcessed = processConditionalSQL(template, conditions); | ||
| // Step 2: Process parameters | ||
| return processParams(conditionalProcessed, params); | ||
| } | ||
| /** | ||
| * Normalize whitespace in SQL (collapse multiple spaces/newlines). | ||
| * Useful for comparing or logging processed SQL. | ||
| */ | ||
| export function normalizeWhitespace(sql) { | ||
| return sql | ||
| .replace(/\s+/g, " ") | ||
| .replace(/\s*,\s*/g, ", ") | ||
| .replace(/\s*\(\s*/g, "(") | ||
| .replace(/\s*\)\s*/g, ")") | ||
| .trim(); | ||
| } | ||
| //# sourceMappingURL=runtime.js.map |
| {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/conditional/runtime.ts"],"names":[],"mappings":"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"} |
| /** | ||
| * Conditional SQL Types | ||
| * | ||
| * Type-level processing of SQL templates with conditional blocks. | ||
| * Uses `/* if:condition * /.../* endif * /` syntax (without spaces in actual usage). | ||
| * | ||
| * Conditional blocks affect: | ||
| * - The resulting SQL string (excluded when condition is false) | ||
| * - Result type optionality (columns in conditional blocks get `| undefined`) | ||
| * - LEFT JOIN nullability: columns from LEFT/FULL JOINed tables get `| null` | ||
| * | ||
| * For conditional LEFT JOINs, columns get both: `T | null | undefined` | ||
| */ | ||
| /** | ||
| * Get a nested value type from an object type using dot notation path. | ||
| * @example GetPath<{ user: { isAdmin: true } }, "user.isAdmin"> // true | ||
| */ | ||
| export type GetPath<T, Path extends string> = Path extends `${infer Key}.${infer Rest}` ? Key extends keyof T ? GetPath<T[Key], Rest> : undefined : Path extends keyof T ? T[Path] : undefined; | ||
| /** | ||
| * Check if a type is considered "truthy" at the type level. | ||
| */ | ||
| export type IsTruthy<T> = [ | ||
| T | ||
| ] extends [false | 0 | "" | null | undefined] ? false : [T] extends [never] ? false : [T] extends [boolean] ? ([boolean] extends [T] ? boolean : true) : [T] extends [string] ? ([string] extends [T] ? boolean : true) : [T] extends [number] ? ([number] extends [T] ? boolean : true) : true; | ||
| /** | ||
| * Evaluate a condition string against a data type. | ||
| * Supports negation with `!` prefix. | ||
| */ | ||
| export type EvalCondition<Cond extends string, Data> = Cond extends `!${infer Key}` ? IsTruthy<GetPath<Data, Key>> extends true ? false : IsTruthy<GetPath<Data, Key>> extends false ? true : boolean : IsTruthy<GetPath<Data, Cond>>; | ||
| /** | ||
| * Check if a string contains a specific pattern. | ||
| */ | ||
| type Contains<S extends string, Pattern extends string> = S extends `${string}${Pattern}${string}` ? true : false; | ||
| /** | ||
| * Check if any condition in the data object has an indeterminate type. | ||
| */ | ||
| type HasIndeterminateCondition<Template extends string, Data extends Record<string, unknown>> = Template extends `${string}/*if:${infer Cond}*/${infer Rest}` ? EvalCondition<Cond, Data> extends boolean ? boolean extends EvalCondition<Cond, Data> ? true : HasIndeterminateCondition<Rest, Data> : HasIndeterminateCondition<Rest, Data> : false; | ||
| /** | ||
| * Process the innermost conditional block. | ||
| * This handles nested conditions by processing from inside out. | ||
| */ | ||
| type ProcessInnermost<Template extends string, Data extends Record<string, unknown>> = Template extends `${infer Before}/*if:${infer Cond}*/${infer Content}/*endif*/${infer After}` ? Contains<Content, "/*if:"> extends true ? `${Before}/*if:${Cond}*/${ProcessInnermost<`${Content}/*endif*/${After}`, Data>}` : EvalCondition<Cond, Data> extends true ? `${Before}${Content}${After}` : EvalCondition<Cond, Data> extends false ? `${Before}${After}` : string : Template; | ||
| /** | ||
| * Recursively process all conditional blocks until none remain. | ||
| */ | ||
| export type ProcessConditionalSQL<Template extends string, Data extends Record<string, unknown>, Depth extends number[] = []> = HasIndeterminateCondition<Template, Data> extends true ? string : Depth["length"] extends 20 ? Template : Contains<Template, "/*if:"> extends true ? ProcessConditionalSQL<ProcessInnermost<Template, Data>, Data, [ | ||
| ...Depth, | ||
| 0 | ||
| ]> : Template; | ||
| /** | ||
| * Create a version of Data where all boolean-like values are true. | ||
| * Used to compute the "maximum" result type (all conditional columns included). | ||
| */ | ||
| export type AllConditionsTrue<Data extends Record<string, unknown>> = { | ||
| [K in keyof Data]: Data[K] extends Record<string, unknown> ? AllConditionsTrue<Data[K]> : true; | ||
| }; | ||
| /** | ||
| * Create a version of Data where all boolean-like values are false. | ||
| * Used to compute the "minimum" result type (no conditional columns). | ||
| */ | ||
| export type AllConditionsFalse<Data extends Record<string, unknown>> = { | ||
| [K in keyof Data]: Data[K] extends Record<string, unknown> ? AllConditionsFalse<Data[K]> : false; | ||
| }; | ||
| /** | ||
| * Marker for columns that come from conditional SELECT clauses. | ||
| * These should be typed as `T | undefined` in the result. | ||
| */ | ||
| export type ConditionalColumn<T> = T | undefined; | ||
| /** | ||
| * Marker for columns from conditional LEFT JOINs. | ||
| * These should be typed as `T | null | undefined` in the result. | ||
| */ | ||
| export type ConditionalLeftJoinColumn<T> = T | null | undefined; | ||
| /** | ||
| * Extract conditional block markers from SQL for optionality tracking. | ||
| * Returns a structure describing which parts are conditional. | ||
| */ | ||
| export type ExtractConditionalInfo<Template extends string> = Template extends `${infer _Before}/*if:${infer Cond}*/${infer Content}/*endif*/${infer After}` ? { | ||
| condition: Cond; | ||
| content: Content; | ||
| hasSelect: Contains<Content, "SELECT"> extends true ? true : Contains<Content, "select"> extends true ? true : Contains<Content, ",">; | ||
| hasJoin: Contains<Content, "JOIN">; | ||
| isLeftJoin: Contains<Content, "LEFT JOIN"> extends true ? true : Contains<Content, "left join">; | ||
| rest: ExtractConditionalInfo<After>; | ||
| } : null; | ||
| /** | ||
| * The result type after processing conditional SQL. | ||
| * Contains both the processed SQL string and metadata for type inference. | ||
| */ | ||
| export interface ConditionalSQLResult<ProcessedSQL extends string, FullSQL extends string, ConditionalColumns extends string[] = []> { | ||
| /** The processed SQL string after applying conditions */ | ||
| readonly sql: ProcessedSQL; | ||
| /** The full SQL (all conditions true) for type inference */ | ||
| readonly fullSql: FullSQL; | ||
| /** Column names that are conditional (for | undefined) */ | ||
| readonly conditionalColumns: ConditionalColumns; | ||
| } | ||
| /** | ||
| * Extract parameter names from a SQL string. | ||
| * Parameters are in the format :paramName | ||
| */ | ||
| export type ExtractParamNames<SQL extends string, Acc extends string[] = []> = SQL extends `${string}:${infer Name}${infer Rest}` ? Name extends `${infer ParamName}${" " | "," | ")" | "\n" | "\t"}` ? ExtractParamNames<Rest, [...Acc, ParamName]> : ExtractParamNames<Rest, [...Acc, Name]> : Acc; | ||
| /** | ||
| * Validate that all required params are provided. | ||
| */ | ||
| export type ValidateParams<SQL extends string, Params extends Record<string, unknown>> = ExtractParamNames<SQL> extends infer Names extends string[] ? Names[number] extends keyof Params ? true : `Missing parameter: ${Exclude<Names[number], keyof Params>}` : true; | ||
| export {}; | ||
| //# sourceMappingURL=types.d.ts.map |
| {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/conditional/types.ts"],"names":[],"mappings":"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"} |
| /** | ||
| * Conditional SQL Types | ||
| * | ||
| * Type-level processing of SQL templates with conditional blocks. | ||
| * Uses `/* if:condition * /.../* endif * /` syntax (without spaces in actual usage). | ||
| * | ||
| * Conditional blocks affect: | ||
| * - The resulting SQL string (excluded when condition is false) | ||
| * - Result type optionality (columns in conditional blocks get `| undefined`) | ||
| * - LEFT JOIN nullability: columns from LEFT/FULL JOINed tables get `| null` | ||
| * | ||
| * For conditional LEFT JOINs, columns get both: `T | null | undefined` | ||
| */ | ||
| export {}; | ||
| //# sourceMappingURL=types.js.map |
| {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/conditional/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG"} |
+2
-0
@@ -40,2 +40,4 @@ /** | ||
| export type { IsValidSelect, MergeOverrides, SelectBuilderResult, SelectBuilderResultArray, SelectResult, SelectResultArray, ValidQuery, ValidQueryBuilder, } from "./db.js"; | ||
| export { conditionalSQL, createConditionalQuery, normalizeWhitespace, processConditionalSQL, processParams, withConditions, } from "./conditional/index.js"; | ||
| export type { AllConditionsFalse, AllConditionsTrue, ConditionalColumn, ConditionalLeftJoinColumn, ConditionalQueryResult, ConditionalSQLOptions, ConditionalSQLOutput, EvalCondition, ExtractParamNames, ExtractResultType, GetPath, IsTruthy, ProcessConditionalSQL, ProcessedSQL, TypedConditionalSQLOutput, ValidateConditionalSQL, ValidateParams, ValidConditionalQuery, } from "./conditional/index.js"; | ||
| //# sourceMappingURL=index.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} |
+4
-0
@@ -43,2 +43,6 @@ /** | ||
| export { createSelectFn } from "./db.js"; | ||
| // ============================================================================ | ||
| // Conditional SQL | ||
| // ============================================================================ | ||
| export { conditionalSQL, createConditionalQuery, normalizeWhitespace, processConditionalSQL, processParams, withConditions, } from "./conditional/index.js"; | ||
| //# sourceMappingURL=index.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AA6GH,6CAA6C;AAC7C,OAAO;AACH,uBAAuB;AACvB,oBAAoB;AACpB,wBAAwB;AACxB,mBAAmB;AACnB,eAAe;EAClB,MAAM,mBAAmB,CAAC;AAgD3B,2CAA2C;AAC3C,OAAO,EACH,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,GAC3B,MAAM,mBAAmB,CAAC;AAkG3B,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AA6GH,6CAA6C;AAC7C,OAAO;AACH,uBAAuB;AACvB,oBAAoB;AACpB,wBAAwB;AACxB,mBAAmB;AACnB,eAAe;EAClB,MAAM,mBAAmB,CAAC;AAgD3B,2CAA2C;AAC3C,OAAO,EACH,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,GAC3B,MAAM,mBAAmB,CAAC;AAkG3B,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAYzC,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E,OAAO,EACH,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACb,cAAc,GACjB,MAAM,wBAAwB,CAAC"} |
@@ -61,3 +61,17 @@ /** | ||
| export type ExpressionType<Schema extends DatabaseSchema, State extends AnyBuilderStateTag, Expr extends string> = ExtractFinalCast<Expr> extends infer Cast extends string ? CastReturnType<NormalizeCastTarget<Cast>> : Expr extends `CAST(${string} AS ${infer Cast})${string}` ? CastReturnType<NormalizeCastTarget<Cast>> : Expr extends `COUNT${string}` ? number : Expr extends `(SELECT COUNT${string})` ? number : ColumnTypeForExpr<Schema, State, Expr> extends never ? unknown : ColumnTypeForExpr<Schema, State, Expr>; | ||
| export type ColumnRow<Schema extends DatabaseSchema, State extends AnyBuilderStateTag, Col extends string> = SplitAlias<Col> extends [ | ||
| /** | ||
| * Expand all columns from a table given its resolved name. | ||
| * Returns all columns from the table in the default schema. | ||
| */ | ||
| export type ExpandTableColumns<Schema extends DatabaseSchema, TableName extends string> = TableName extends keyof SchemaTables<Schema> ? SchemaTables<Schema>[TableName] : {}; | ||
| /** | ||
| * Expand alias.* wildcard to all columns from the aliased table. | ||
| * Resolves the alias using contextSQL, then expands all columns. | ||
| */ | ||
| export type ExpandAliasWildcard<Schema extends DatabaseSchema, State extends AnyBuilderStateTag, Alias extends string> = ResolveAliasToTable<State["contextSQL"], StripIdentifierQuotes<Alias>> extends infer ResolvedTable extends string ? ExpandTableColumns<Schema, ResolvedTable> : StripIdentifierQuotes<Alias> extends keyof SchemaTables<Schema> ? SchemaTables<Schema>[StripIdentifierQuotes<Alias>] : {}; | ||
| /** | ||
| * Expand * wildcard to all columns from the primary FROM table. | ||
| */ | ||
| export type ExpandAllWildcard<Schema extends DatabaseSchema, State extends AnyBuilderStateTag> = PrimaryTable<Schema, State> extends infer FromTable extends string ? ExpandTableColumns<Schema, FromTable> : {}; | ||
| export type ColumnRow<Schema extends DatabaseSchema, State extends AnyBuilderStateTag, Col extends string> = TrimStr<Col> extends "*" ? ExpandAllWildcard<Schema, State> : TrimStr<Col> extends `${infer Alias}.*` ? ExpandAliasWildcard<Schema, State, Alias> : SplitAlias<Col> extends [ | ||
| infer Expr extends string, | ||
@@ -64,0 +78,0 @@ infer Alias extends string | undefined |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"schema-utils.d.ts","sourceRoot":"","sources":["../../../../src/select/builder-types/helpers/schema-utils.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"schema-utils.d.ts","sourceRoot":"","sources":["../../../../src/select/builder-types/helpers/schema-utils.ts"],"names":[],"mappings":"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"} |
@@ -76,7 +76,30 @@ /** | ||
| /** | ||
| * Nullify all columns in a table context for outer joins. | ||
| * For { alias: { col1: T1, col2: T2 } } → { alias: { col1: T1 | null, col2: T2 | null } } | ||
| */ | ||
| type NullifyTableColumns<T> = { | ||
| [Alias in keyof T]: { | ||
| [Col in keyof T[Alias]]: T[Alias][Col] | null; | ||
| }; | ||
| }; | ||
| /** | ||
| * Join types that produce nullable columns on the joined table. | ||
| * - LEFT JOIN: joined (right) table columns may be null when no match | ||
| * - FULL JOIN: both sides may be null, we can only apply to joined table here | ||
| * | ||
| * Note: RIGHT JOIN should make the FROM table nullable, not the joined table. | ||
| * This requires a different approach (tracking nullable aliases separately). | ||
| * For now, RIGHT JOIN is treated like INNER JOIN for nullability purposes. | ||
| */ | ||
| type NullableJoinType = "LEFT" | "LEFT OUTER" | "FULL" | "FULL OUTER"; | ||
| /** | ||
| * Merge JOIN tables into the context | ||
| * Note: We don't flatten during recursion to reduce type depth. | ||
| * The intersection is only flattened once at the end. | ||
| * | ||
| * For LEFT and FULL joins, columns from the joined table are marked as nullable | ||
| * because they may be NULL when there's no matching row. | ||
| */ | ||
| export type MergeJoinContexts<Context, Joins extends JoinClause[], Schema extends DatabaseSchema, CTEContext = {}> = Joins extends [infer First, ...infer Rest] ? First extends JoinClause<infer _Type, infer JoinTable, infer _On> ? ResolveTableSource<JoinTable, Schema, CTEContext> extends infer JoinContext ? JoinContext extends MatchError<string> ? JoinContext : Rest extends JoinClause[] ? MergeJoinContexts<Context & JoinContext, Rest, Schema, CTEContext> : Context & JoinContext : never : Context : Context; | ||
| export type MergeJoinContexts<Context, Joins extends JoinClause[], Schema extends DatabaseSchema, CTEContext = {}> = Joins extends [infer First, ...infer Rest] ? First extends JoinClause<infer Type, infer JoinTable, infer _On> ? ResolveTableSource<JoinTable, Schema, CTEContext> extends infer JoinContext ? JoinContext extends MatchError<string> ? JoinContext : Type extends NullableJoinType ? Rest extends JoinClause[] ? MergeJoinContexts<Context & NullifyTableColumns<JoinContext>, Rest, Schema, CTEContext> : Context & NullifyTableColumns<JoinContext> : Rest extends JoinClause[] ? MergeJoinContexts<Context & JoinContext, Rest, Schema, CTEContext> : Context & JoinContext : never : Context : Context; | ||
| export {}; | ||
| //# sourceMappingURL=context.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/select/matcher/context.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/select/matcher/context.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACR,aAAa,EACb,eAAe,EACf,UAAU,EACV,oBAAoB,EACpB,QAAQ,EACR,WAAW,EACd,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAM3D;;;GAGG;AACH,MAAM,MAAM,yBAAyB,CACjC,IAAI,SAAS,WAAW,EACxB,KAAK,EACL,IAAI,EACJ,MAAM,SAAS,cAAc,IAC7B,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,MAAM,UAAU,GACpD,UAAU,SAAS,UAAU,CAAC,MAAM,CAAC,GAAG,UAAU,GAClD,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,GAClD,KAAK,CAAC;AAEZ;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,CACzB,IAAI,SAAS,WAAW,EACxB,KAAK,EACL,MAAM,SAAS,cAAc,EAC7B,UAAU,GAAG,EAAE,IACf,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,SAAS,MAAM,WAAW,GACpE,WAAW,SAAS,UAAU,CAAC,MAAM,CAAC,GAAG,WAAW,GACpD,KAAK,SAAS,UAAU,EAAE,GAAG,cAAc,CACrC,iBAAiB,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,CAC5D,GACH,WAAW,GACX,KAAK,CAAC;AAEZ;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAM9E;;;GAGG;AACH,MAAM,MAAM,eAAe,CACvB,IAAI,EACJ,MAAM,SAAS,cAAc,EAC7B,GAAG,GAAG,EAAE,IACR,IAAI,SAAS,CAAE,MAAM,KAAK,EAAE,GAAG,MAAM,IAAI,CAAE,GACzC,KAAK,SAAS,aAAa,CAAC,MAAM,IAAI,EAAE,MAAM,KAAK,CAAC,GAChD,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,SAAS,MAAM,UAAU,GACxD,UAAU,SAAS,UAAU,CAAC,MAAM,CAAC,GAAG,UAAU,GAClD,IAAI,SAAS,aAAa,EAAE,GAAG,eAAe,CACxC,IAAI,EACJ,MAAM,EACN,GAAG,GAAG;KAAG,CAAC,IAAI,IAAI,GAAG,UAAU;CAAG,CACrC,GACH,GAAG,GAAG;KAAG,CAAC,IAAI,IAAI,GAAG,UAAU;CAAG,GACtC,KAAK,GACT,GAAG,GACH,GAAG,CAAC;AAEV;;GAEG;AACH,MAAM,MAAM,eAAe,CACvB,KAAK,SAAS,oBAAoB,EAClC,MAAM,SAAS,cAAc,EAC7B,UAAU,IACV,KAAK,SAAS;IACd,OAAO,EAAE,MAAM,OAAO,CAAC;IACvB,IAAI,EAAE,MAAM,IAAI,SAAS,WAAW,CAAC;IACrC,KAAK,EAAE,MAAM,KAAK,CAAC;CACtB,GACK,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,SAChD,MAAM,YAAY,GAChB,YAAY,SAAS,UAAU,CAAC,MAAM,CAAC,GAAG,YAAY,GACtD,sBAAsB,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,GACzD,KAAK,GACL,KAAK,CAAC;AAMZ;;GAEG;AACH,MAAM,MAAM,kBAAkB,CAC1B,MAAM,SAAS,WAAW,EAC1B,MAAM,SAAS,cAAc,EAC7B,UAAU,GAAG,EAAE,IACf,MAAM,SAAS,eAAe,CAAC,MAAM,KAAK,EAAE,MAAM,KAAK,CAAC,GACtD,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,GACrD,MAAM,SAAS,QAAQ,CAAC,MAAM,KAAK,EAAE,MAAM,KAAK,EAAE,MAAM,WAAW,CAAC,GAChE,oBAAoB,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,GACvE,UAAU,CAAC,sBAAsB,CAAC,CAAC;AAEzC;;;GAGG;AACH,MAAM,MAAM,oBAAoB,CAC5B,KAAK,SAAS,MAAM,EACpB,KAAK,SAAS,MAAM,EACpB,WAAW,SAAS,MAAM,GAAG,SAAS,EACtC,MAAM,SAAS,cAAc,EAC7B,UAAU,IACV,KAAK,SAAS,MAAM,UAAU,GAAG;KAAG,CAAC,IAAI,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;CAAG,GACnE,oBAAoB,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,CAC5B,KAAK,SAAS,MAAM,EACpB,KAAK,SAAS,MAAM,EACpB,WAAW,SAAS,MAAM,GAAG,SAAS,EACtC,MAAM,SAAS,cAAc,IAC7B,WAAW,SAAS,SAAS,GAE3B,gBAAgB,CAAC,MAAM,CAAC,SAAS,MAAM,aAAa,SAAS,MAAM,GAC/D,aAAa,SAAS,MAAM,MAAM,CAAC,SAAS,CAAC,GACzC,KAAK,SAAS,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,GAChD;KAAG,CAAC,IAAI,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC;CAAG,GAC9D,UAAU,CACR,UAAU,KAAK,kCAAkC,aAAa,GAAG,CACpE,GACH,UAAU,CAAC,0BAA0B,CAAC,GAC1C,UAAU,CAAC,iCAAiC,CAAC,GAE7C,WAAW,SAAS,MAAM,GACtB,WAAW,SAAS,MAAM,MAAM,CAAC,SAAS,CAAC,GACvC,KAAK,SAAS,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,GAC9C;KAAG,CAAC,IAAI,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC;CAAG,GAC5D,UAAU,CACR,UAAU,KAAK,0BAA0B,WAAW,GAAG,CAC1D,GACH,UAAU,CAAC,WAAW,WAAW,aAAa,CAAC,GACnD,UAAU,CAAC,qBAAqB,CAAC,CAAC;AAMxC;;GAEG;AACH,MAAM,MAAM,mBAAmB,CAC3B,KAAK,SAAS,oBAAoB,EAClC,KAAK,SAAS,MAAM,EACpB,MAAM,SAAS,cAAc,EAC7B,UAAU,IACV,KAAK,SAAS;IACd,OAAO,EAAE,MAAM,OAAO,CAAC;IACvB,IAAI,EAAE,MAAM,IAAI,SAAS,WAAW,CAAC;IACrC,KAAK,EAAE,MAAM,KAAK,CAAC;CACtB,GACK,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,SAChD,MAAM,YAAY,GAChB,YAAY,SAAS,UAAU,CAAC,MAAM,CAAC,GAAG,YAAY,GACtD,sBAAsB,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,SACnD,MAAM,cAAc,GAAG;KAAG,CAAC,IAAI,KAAK,GAAG,cAAc;CAAG,GAC1D,KAAK,GACT,KAAK,GACL,UAAU,CAAC,6BAA6B,CAAC,CAAC;AAMhD;;;GAGG;AACH,KAAK,mBAAmB,CAAC,CAAC,IAAI;KACzB,KAAK,IAAI,MAAM,CAAC,GAAG;SACf,GAAG,IAAI,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;KAChD;CACJ,CAAC;AAEF;;;;;;;;GAQG;AACH,KAAK,gBAAgB,GAAG,MAAM,GAAG,YAAY,GAAG,MAAM,GAAG,YAAY,CAAC;AAEtE;;;;;;;GAOG;AACH,MAAM,MAAM,iBAAiB,CACzB,OAAO,EACP,KAAK,SAAS,UAAU,EAAE,EAC1B,MAAM,SAAS,cAAc,EAC7B,UAAU,GAAG,EAAE,IACf,KAAK,SAAS,CAAE,MAAM,KAAK,EAAE,GAAG,MAAM,IAAI,CAAE,GAC1C,KAAK,SAAS,UAAU,CAAC,MAAM,IAAI,EAAE,MAAM,SAAS,EAAE,MAAM,GAAG,CAAC,GAC5D,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,SAC/C,MAAM,WAAW,GACf,WAAW,SAAS,UAAU,CAAC,MAAM,CAAC,GAAG,WAAW,GAEpD,IAAI,SAAS,gBAAgB,GACzB,IAAI,SAAS,UAAU,EAAE,GAAG,iBAAiB,CACvC,OAAO,GAAG,mBAAmB,CAAC,WAAW,CAAC,EAC1C,IAAI,EACJ,MAAM,EACN,UAAU,CACb,GACH,OAAO,GAAG,mBAAmB,CAAC,WAAW,CAAC,GAE9C,IAAI,SAAS,UAAU,EAAE,GAAG,iBAAiB,CACvC,OAAO,GAAG,WAAW,EACrB,IAAI,EACJ,MAAM,EACN,UAAU,CACb,GACH,OAAO,GAAG,WAAW,GACzB,KAAK,GACT,OAAO,GACP,OAAO,CAAC"} |
+1
-1
| { | ||
| "name": "@kuindji/sql-type-parser", | ||
| "version": "0.4.20", | ||
| "version": "0.4.21", | ||
| "description": "Type-level SQL parser for TypeScript", | ||
@@ -5,0 +5,0 @@ "author": "Ivan Kuindzhi", |
1100175
3.91%383
4.36%11180
5.44%