@kuindji/typed-sql 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/README.md +11 -3
  2. package/dist/columns.d.ts +11 -3
  3. package/dist/columns.d.ts.map +1 -1
  4. package/dist/expressions.d.ts +84 -13
  5. package/dist/expressions.d.ts.map +1 -1
  6. package/dist/parsing/extract.d.ts +13 -9
  7. package/dist/parsing/extract.d.ts.map +1 -1
  8. package/dist/parsing/normalize.d.ts +9 -3
  9. package/dist/parsing/normalize.d.ts.map +1 -1
  10. package/dist/parsing/pg-literals.d.ts +10 -2
  11. package/dist/parsing/pg-literals.d.ts.map +1 -1
  12. package/dist/parsing/split.d.ts +27 -3
  13. package/dist/parsing/split.d.ts.map +1 -1
  14. package/dist/parsing/string-utils.d.ts +2 -4
  15. package/dist/parsing/string-utils.d.ts.map +1 -1
  16. package/dist/parsing/tokenize.d.ts +27 -17
  17. package/dist/parsing/tokenize.d.ts.map +1 -1
  18. package/dist/partial.d.ts +6 -6
  19. package/dist/partial.d.ts.map +1 -1
  20. package/dist/tables.d.ts +58 -13
  21. package/dist/tables.d.ts.map +1 -1
  22. package/dist/validation/dispatch.d.ts +7 -5
  23. package/dist/validation/dispatch.d.ts.map +1 -1
  24. package/dist/validation/joins.d.ts +3 -3
  25. package/dist/validation/joins.d.ts.map +1 -1
  26. package/dist/validation/return-derived.d.ts +8 -4
  27. package/dist/validation/return-derived.d.ts.map +1 -1
  28. package/dist/validation/return-derived.js.map +1 -1
  29. package/dist/validation/return-types.d.ts +1 -1
  30. package/dist/validation/return-types.d.ts.map +1 -1
  31. package/dist/validation/validate-columns.d.ts +27 -16
  32. package/dist/validation/validate-columns.d.ts.map +1 -1
  33. package/package.json +1 -1
  34. package/src/columns.ts +168 -32
  35. package/src/expressions.ts +589 -63
  36. package/src/parsing/extract.ts +72 -32
  37. package/src/parsing/normalize.ts +114 -10
  38. package/src/parsing/pg-literals.ts +32 -10
  39. package/src/parsing/split.ts +236 -72
  40. package/src/parsing/string-utils.ts +15 -15
  41. package/src/parsing/tokenize.ts +224 -146
  42. package/src/partial.ts +9 -15
  43. package/src/tables.ts +546 -183
  44. package/src/validation/dispatch.ts +58 -52
  45. package/src/validation/joins.ts +15 -19
  46. package/src/validation/return-derived.ts +60 -4
  47. package/src/validation/return-types.ts +9 -3
  48. package/src/validation/validate-columns.ts +161 -67
@@ -1,11 +1,11 @@
1
1
  import type { AliasesInQuery, InsertTargetTable, TableKeyValid, TablesInQuery, UpdateTargetTable } from "../tables.js";
2
2
  import type { AllTrue, And, StartsWith } from "../utils.js";
3
- import type { CleanIdent, DQuoteSpaceSentinel, ExceedsLengthBudget, ExtractAliasResult, ExtractBefore, ExtractConflictColumns, ExtractConflictUpdateExcludedCols, ExtractConflictUpdateSetColumns, ExtractInsertColumns, ExtractLastWhere, ExtractReturningList, ExtractSelectList, ExtractUpdateSetColumns, ReplaceAll, SplitSelectList, StripSubqueries, TokenizeLoose, Trim } from "../parsing.js";
4
- import type { ColumnRefValidLooseWith, IsSimpleRefPart, QualifiedColumnRefs, ResolveAlias, TableKeysByName, UnqualifiedColumnRefs, UnqualifiedColumnValid } from "../columns.js";
3
+ import type { CleanIdent, DQuoteSpaceSentinel, ExceedsLengthBudget, ExtractAliasResult, ExtractBefore, ExtractConflictColumns, ExtractConflictUpdateExcludedCols, ExtractConflictUpdateSetColumns, ExtractInsertColumns, ExtractLastWhere, ExtractReturningList, ExtractSelectList, ExtractUpdateSetColumns, ReplaceAll, SplitSelectList, StripSubqueries, Trim } from "../parsing.js";
4
+ import type { ColumnRefValidLooseWith, IsSimpleRefPart, QualifiedRefScan, ResolveAlias, TableKeysByName, UnqualifiedRefScan, UnqualifiedColumnValid } from "../columns.js";
5
5
  import type { ColumnsExistInTable, RefScanBeforeOrderBy, RefScanOrderBy, RefScanSegment, SelectAliasesInQuery, SelectAliasSet } from "./return-types.js";
6
- import type { CteRow, SingleCteMatch } from "./cte.js";
6
+ import type { CteNames, CteRow, SingleCteMatch } from "./cte.js";
7
7
  import type { DatabaseSchema } from "../schema.js";
8
- import type { DerivedRenamedRow, DerivedTableMatch } from "./return-derived.js";
8
+ import type { AliasHasNoSpace, DerivedRenamedRow, DerivedTableMatch } from "./return-derived.js";
9
9
  import type { ExprsValidList } from "../expressions.js";
10
10
  import type { HasReturning, QueryKind, ValidateSQLNormalized } from "./dispatch.js";
11
11
  export type ValidateCteShape<N extends string, S extends DatabaseSchema> = SingleCteMatch<N> extends {
@@ -25,39 +25,50 @@ export type OuterProjInRow<E extends string, Name extends string, Row, S extends
25
25
  } ? ProjRefInRow<Trim<Raw>, Name, Row, S> : ProjRefInRow<Trim<E>, Name, Row, S>;
26
26
  export type ProjRefInRow<Raw extends string, Name extends string, Row, S extends DatabaseSchema> = Raw extends "*" ? true : Raw extends `${Name}.*` ? true : Raw extends `${number}` ? true : Raw extends `'${string}` ? true : Raw extends `"${string}` ? true : Raw extends `${string}(${infer Inner})${string}` ? SegRefsInRow<Inner, Name, Row, S> : Raw extends `${infer Q}.${infer Col}` ? IsSimpleRefPart<Q> extends true ? IsSimpleRefPart<Col> extends true ? CleanIdent<Q> extends Name ? KeyInRow<CleanIdent<Col>, Row> : false : true : true : IsSimpleRefPart<Raw> extends true ? KeyInRow<CleanIdent<Raw>, Row> : true;
27
27
  export type KeyInRow<K extends string, Row> = [K] extends [keyof Row] ? true : false;
28
- export type SegRefsInRow<Seg extends string, Name extends string, Row, S extends DatabaseSchema> = Trim<Seg> extends "" ? true : TokenizeLoose<Seg> extends infer Toks extends string[] ? And<AllTrue<QualifiedColumnRefs<Toks, S, never, never> extends infer R ? R extends string ? ProjRefInRow<R, Name, Row, S> : true : true>, AllTrue<UnqualifiedColumnRefs<Toks, S, never, never> extends infer R ? R extends string ? ProjRefInRow<R, Name, Row, S> : true : true>, true, true> : true;
28
+ export type SegRefsInRow<Seg extends string, Name extends string, Row, S extends DatabaseSchema> = Trim<Seg> extends "" ? true : And<AllTrue<QualifiedRefScan<Seg> extends infer R ? R extends string ? ProjRefInRow<R, Name, Row, S> : true : true>, AllTrue<UnqualifiedRefScan<Seg, S, never, never> extends infer R ? R extends string ? ProjRefInRow<R, Name, Row, S> : true : true>, true, true>;
29
29
  export type OuterWhereRefsInRow<OuterText extends string, Name extends string, Row, S extends DatabaseSchema> = StripSubqueries<OuterText> extends infer Stripped extends string ? Stripped extends `${string} where ${string}` ? SegRefsInRow<ExtractLastWhere<Stripped>, Name, Row, S> : true : true;
30
30
  export type OuterTailClauseRefsInRow<OuterText extends string, Name extends string, Row, S extends DatabaseSchema> = StripSubqueries<OuterText> extends infer Stripped extends string ? SelectAliasesInQuery<Stripped> extends infer SelAliases extends string ? And<SegRefsInRowWithAliases<ExtractGroupByExpr<Stripped>, Name, Row, S, SelAliases>, SegRefsInRowWithAliases<ExtractHavingExpr<Stripped>, Name, Row, S, SelAliases>, SegRefsInRowWithAliases<ExtractOrderByExpr<Stripped>, Name, Row, S, SelAliases>, true, true> : true : true;
31
31
  type StopAtLimitTail<S extends string> = ExtractBefore<ExtractBefore<ExtractBefore<S, " limit ">, " offset ">, " union ">;
32
32
  type ExtractGroupByExpr<S extends string> = S extends `${string} group by ${infer R}` ? StopAtLimitTail<ExtractBefore<ExtractBefore<R, " having ">, " order by ">> : "";
33
33
  type ExtractHavingExpr<S extends string> = S extends `${string} having ${infer R}` ? StopAtLimitTail<ExtractBefore<R, " order by ">> : "";
34
34
  type ExtractOrderByExpr<S extends string> = S extends `${string} order by ${infer R}` ? StopAtLimitTail<R> : "";
35
- export type SegRefsInRowWithAliases<Seg extends string, Name extends string, Row, S extends DatabaseSchema, SelAliases extends string> = Trim<Seg> extends "" ? true : TokenizeLoose<Seg> extends infer Toks extends string[] ? And<AllTrue<QualifiedColumnRefs<Toks, S, never, never> extends infer R ? R extends string ? RefInRowOrAlias<R, Name, Row, S, SelAliases> : true : true>, AllTrue<UnqualifiedColumnRefs<Toks, S, never, never> extends infer R ? R extends string ? RefInRowOrAlias<R, Name, Row, S, SelAliases> : true : true>, true, true> : true;
35
+ export type SegRefsInRowWithAliases<Seg extends string, Name extends string, Row, S extends DatabaseSchema, SelAliases extends string> = Trim<Seg> extends "" ? true : And<AllTrue<QualifiedRefScan<Seg> extends infer R ? R extends string ? RefInRowOrAlias<R, Name, Row, S, SelAliases> : true : true>, AllTrue<UnqualifiedRefScan<Seg, S, never, never> extends infer R ? R extends string ? RefInRowOrAlias<R, Name, Row, S, SelAliases> : true : true>, true, true>;
36
36
  export type RefInRowOrAlias<R extends string, Name extends string, Row, S extends DatabaseSchema, SelAliases extends string> = [
37
37
  SelAliases
38
38
  ] extends [never] ? ProjRefInRow<R, Name, Row, S> : CleanIdent<R> extends SelAliases ? true : ProjRefInRow<R, Name, Row, S>;
39
39
  export type AllTablesValid<N extends string, S extends DatabaseSchema> = TablesInQuery<N, S> extends infer Tables extends string ? AllTablesValidFor<Tables, S> : true;
40
40
  export type AllTablesValidFor<Tables extends string, S extends DatabaseSchema> = AllTrue<Tables extends string ? TableKeyValid<Tables, S> : true>;
41
- export type AllColumnsValid<N extends string, S extends DatabaseSchema> = TablesInQuery<N, S> extends infer Tables extends string ? AliasesInQuery<N, S> extends infer Aliases extends string ? TokenizeLoose<RefScanSegment<N>> extends infer LooseTokens extends string[] ? AllColumnsValidFor<N, S, Tables, Aliases, LooseTokens> : false : false : false;
42
- export type AllColumnsValidFor<N extends string, S extends DatabaseSchema, Tables extends string, Aliases extends string, LooseTokens extends string[]> = SelectAliasSet<N> extends infer SelectAliases extends string ? QueryKind<N> extends "update" ? And<ColumnsValidInUpdate<N, S>, ColumnsValidInInsert<N, S>, ColumnsValidInSelectOrReturningFor<N, S, Tables, Aliases>, QualifiedColumnRefsValidFor<N, S, Tables, Aliases, LooseTokens>, UnqualifiedColumnRefsValidFor<N, S, Tables, Aliases, LooseTokens, never>> : And<ColumnsValidInSelectOrReturningFor<N, S, Tables, Aliases>, ColumnsValidInInsert<N, S>, ColumnsValidInUpdate<N, S>, QualifiedColumnRefsValidFor<N, S, Tables, Aliases, LooseTokens>, SelectUnqualifiedRefsScoped<N, S, Tables, Aliases, SelectAliases>> : false;
41
+ export type AllColumnsValid<N extends string, S extends DatabaseSchema> = TablesInQuery<N, S> extends infer Tables extends string ? AliasesInQuery<N, S> extends infer Aliases extends string ? AllColumnsValidFor<N, S, Tables, Aliases, RefScanSegment<N>> : false : false;
42
+ export type AllColumnsValidFor<N extends string, S extends DatabaseSchema, Tables extends string, Aliases extends string, RefSeg extends string> = SelectAliasSet<N> extends infer SelectAliases extends string ? QueryKind<N> extends "update" ? And<ColumnsValidInUpdate<N, S>, ColumnsValidInInsert<N, S>, ColumnsValidInSelectOrReturningFor<N, S, Tables, Aliases>, QualifiedColumnRefsValidFor<N, S, Tables, Aliases, RefSeg>, UnqualifiedColumnRefsValidFor<N, S, Tables, Aliases, RefSeg, never>> : And<ColumnsValidInSelectOrReturningFor<N, S, Tables, Aliases>, ColumnsValidInInsert<N, S>, ColumnsValidInUpdate<N, S>, QualifiedColumnRefsValidFor<N, S, Tables, Aliases, RefSeg>, SelectUnqualifiedRefsScoped<N, S, Tables, Aliases, SelectAliases>> : false;
43
43
  export type SelectUnqualifiedRefsScoped<N extends string, S extends DatabaseSchema, Tables extends string, Aliases extends string, SelectAliases extends string> = [
44
44
  SelectAliases
45
- ] extends [never] ? UnqualifiedColumnRefsValidFor<N, S, Tables, Aliases, TokenizeLoose<RefScanSegment<N>>, never> : And<UnqualifiedColumnRefsValidFor<N, S, Tables, Aliases, TokenizeLoose<RefScanBeforeOrderBy<N>>, never>, UnqualifiedColumnRefsValidFor<N, S, Tables, Aliases, TokenizeLoose<RefScanOrderBy<N>>, SelectAliases>, true, true, true>;
45
+ ] extends [never] ? UnqualifiedColumnRefsValidFor<N, S, Tables, Aliases, RefScanSegment<N>, never> : And<UnqualifiedColumnRefsValidFor<N, S, Tables, Aliases, RefScanBeforeOrderBy<N>, never>, UnqualifiedColumnRefsValidFor<N, S, Tables, Aliases, RefScanOrderBy<N>, SelectAliases>, true, true, true>;
46
46
  export type ColumnsValidInSelectOrReturning<N extends string, S extends DatabaseSchema> = TablesInQuery<N, S> extends infer Tables extends string ? AliasesInQuery<N, S> extends infer Aliases extends string ? ColumnsValidInSelectOrReturningFor<N, S, Tables, Aliases> : true : true;
47
- export type ColumnsValidInSelectOrReturningFor<N extends string, S extends DatabaseSchema, Tables extends string, Aliases extends string> = HasReturning<N> extends true ? [Tables] extends [never] ? true : ExprsValidList<SplitSelectList<ReplaceAll<ExtractReturningList<N>, DQuoteSpaceSentinel, " ">>, Tables, Aliases, S> : QueryKind<N> extends "select" ? [Tables] extends [never] ? true : ExprsValidList<SplitSelectList<ReplaceAll<ExtractSelectList<N>, DQuoteSpaceSentinel, " ">>, Tables, Aliases, S> : true;
47
+ export type ColumnsValidInSelectOrReturningFor<N extends string, S extends DatabaseSchema, Tables extends string, Aliases extends string> = HasReturning<N> extends true ? [Tables] extends [never] ? true : ExprsValidList<SplitSelectList<ReplaceAll<ExtractReturningList<N>, DQuoteSpaceSentinel, " ">>, Tables, Aliases, S, [], SelectLocalRels<N>> : QueryKind<N> extends "select" ? [Tables] extends [never] ? true : ExprsValidList<SplitSelectList<ReplaceAll<ExtractSelectList<N>, DQuoteSpaceSentinel, " ">>, Tables, Aliases, S, [], SelectLocalRels<N>> : true;
48
+ type SelectLocalRels<N extends string> = N extends `with ${string}` ? CteNames<N> : never;
48
49
  export type ColumnsValidInInsert<N extends string, S extends DatabaseSchema> = QueryKind<N> extends "insert" ? InsertTargetTable<N, S> extends infer TableKey extends string ? TableKey extends never ? true : And<ColumnsExistInTable<ExtractInsertColumns<N>, TableKey, S>, ColumnsExistInTable<ExtractConflictColumns<N>, TableKey, S>, ColumnsExistInTable<ExtractConflictUpdateSetColumns<N>, TableKey, S>, ColumnsExistInTable<ExtractConflictUpdateExcludedCols<N>, TableKey, S>, true> : true : true;
49
50
  export type ColumnsValidInUpdate<N extends string, S extends DatabaseSchema> = QueryKind<N> extends "update" ? UpdateTargetTable<N, S> extends infer TableKey extends string ? TableKey extends never ? true : ColumnsExistInTable<ExtractUpdateSetColumns<N>, TableKey, S> : true : true;
50
- export type QualifiedColumnRefsValid<N extends string, S extends DatabaseSchema> = TablesInQuery<N, S> extends infer Tables extends string ? AliasesInQuery<N, S> extends infer Aliases extends string ? TokenizeLoose<RefScanSegment<N>> extends infer LooseTokens extends string[] ? QualifiedColumnRefsValidFor<N, S, Tables, Aliases, LooseTokens> : true : true : true;
51
- export type QualifiedColumnRefsValidFor<N extends string, S extends DatabaseSchema, Tables extends string, Aliases extends string, LooseTokens extends string[]> = QualifiedColumnRefs<LooseTokens, S, Tables, Aliases> extends infer Cols ? AllTrue<Cols extends string ? ColumnRefValidLooseWith<Cols, Tables, Aliases, S> : true> : true;
51
+ export type QualifiedColumnRefsValid<N extends string, S extends DatabaseSchema> = TablesInQuery<N, S> extends infer Tables extends string ? AliasesInQuery<N, S> extends infer Aliases extends string ? QualifiedColumnRefsValidFor<N, S, Tables, Aliases, RefScanSegment<N>> : true : true;
52
+ export type QualifiedColumnRefsValidFor<N extends string, S extends DatabaseSchema, Tables extends string, Aliases extends string, RefSeg extends string> = HasLocalRelations<N> extends true ? QualifiedRefsValidWithLocal<N, S, Tables, Aliases, RefSeg, CteNames<N>> : QualifiedRefScan<RefSeg> extends infer Cols ? AllTrue<Cols extends string ? ColumnRefValidLooseWith<Cols, Tables, Aliases, S> : true> : true;
53
+ type HasLocalRelations<N extends string> = N extends `with ${string}` ? true : N extends `${string} from (${string}` ? true : N extends `${string} join (${string}` ? true : false;
54
+ type QualifiedRefsValidWithLocal<N extends string, S extends DatabaseSchema, Tables extends string, Aliases extends string, RefSeg extends string, Ctes extends string> = QualifiedRefScan<RefSeg> extends infer Cols ? AllTrue<Cols extends string ? IsLocalRelation<RefQualifierOf<Cols>, Ctes, N> extends true ? true : ColumnRefValidLooseWith<Cols, Tables, Aliases, S> : true> : true;
55
+ type RefQualifierOf<Col extends string> = Col extends `${infer Q}.${string}` ? CleanIdent<Q> : never;
56
+ type IsLocalRelation<Q extends string, Ctes extends string, N extends string> = [
57
+ Q
58
+ ] extends [never] ? false : Q extends Ctes ? true : IsDerivedSourceAlias<Q, N>;
59
+ type IsDerivedSourceAlias<Q extends string, N extends string> = N extends `${string}) as ${Q} ${string}` ? true : N extends `${string}) as ${Q}(${string}` ? true : N extends `${string}) as ${Q}` ? true : N extends `${string}) ${Q} ${string}` ? true : N extends `${string}) ${Q}(${string}` ? true : N extends `${string}) ${Q}` ? true : false;
52
60
  export type AliasedTableKeys<Aliases extends string> = Aliases extends `${string}=>${infer T}` ? T : never;
53
61
  export type QualifierShadowedByAlias<Q extends string, Tables extends string, Aliases extends string, S extends DatabaseSchema> = [
54
62
  ResolveAlias<CleanIdent<Q>, Aliases>
55
63
  ] extends [never] ? [Extract<TableKeysByName<CleanIdent<Q>, Tables>, AliasedTableKeys<Aliases>>] extends [never] ? false : true : false;
56
64
  export type NoAliasShadowedQualifiers<N extends string, S extends DatabaseSchema, Tables extends string, Aliases extends string> = [
57
65
  AliasedTableKeys<Aliases>
58
- ] extends [never] ? true : N extends `${string}.${string}` ? AllTrue<QualifiedColumnRefs<TokenizeLoose<N>, S, Tables, Aliases> extends infer R ? R extends `${infer Q}.${string}` ? QualifierShadowedByAlias<Q, Tables, Aliases, S> extends true ? false : true : true : true> : true;
59
- export type OuterScopeUnqualifiedValid<N extends string, S extends DatabaseSchema> = StartsWith<N, "select "> extends true ? Lowercase<N> extends `${string}(${string}select${string}` ? ExceedsLengthBudget<N> extends true ? true : StripSubqueries<N> extends infer Stripped extends string ? TablesInQuery<Stripped, S> extends infer OT extends string ? [OT] extends [never] ? true : AllTablesValidFor<OT, S> extends true ? AliasesInQuery<Stripped, S> extends infer OA extends string ? UnqualifiedColumnRefsValidFor<Stripped, S, OT, OA, TokenizeLoose<RefScanSegment<Stripped>>, SelectAliasesInQuery<Stripped>> : true : true : true : true : true : true;
60
- export type UnqualifiedColumnRefsValid<N extends string, S extends DatabaseSchema> = TablesInQuery<N, S> extends infer Tables extends string ? AliasesInQuery<N, S> extends infer Aliases extends string ? TokenizeLoose<RefScanSegment<N>> extends infer LooseTokens extends string[] ? SelectAliasesInQuery<N> extends infer SelectAliases extends string ? UnqualifiedColumnRefsValidFor<N, S, Tables, Aliases, LooseTokens, SelectAliases> : true : true : true : true;
61
- export type UnqualifiedColumnRefsValidFor<N extends string, S extends DatabaseSchema, Tables extends string, Aliases extends string, LooseTokens extends string[], SelectAliases extends string> = UnqualifiedColumnRefs<LooseTokens, S, Tables, Aliases> extends infer Cols ? AllTrue<Cols extends string ? CleanIdent<Cols> extends SelectAliases ? true : UnqualifiedColumnValid<Cols, Tables, Aliases, S> : true> : true;
66
+ ] extends [never] ? true : N extends `${string}.${string}` ? AllTrue<QualifiedRefScan<N> extends infer R ? R extends `${infer Q}.${string}` ? QualifierShadowedByAlias<Q, Tables, Aliases, S> extends true ? false : true : true : true> : true;
67
+ export type OuterScopeUnqualifiedValid<N extends string, S extends DatabaseSchema> = StartsWith<N, "select "> extends true ? Lowercase<N> extends `${string}(${string}select${string}` ? ExceedsLengthBudget<N> extends true ? true : StripSubqueries<N> extends infer Stripped extends string ? TablesInQuery<Stripped, S> extends infer OT extends string ? [OT] extends [never] ? true : AllTablesValidFor<OT, S> extends true ? AliasesInQuery<Stripped, S> extends infer OA extends string ? UnqualifiedColumnRefsValidFor<Stripped, S, OT, OA, RefScanSegment<Stripped>, SelectAliasesInQuery<Stripped>> : true : true : true : true : true : true;
68
+ export type UnqualifiedColumnRefsValid<N extends string, S extends DatabaseSchema> = TablesInQuery<N, S> extends infer Tables extends string ? AliasesInQuery<N, S> extends infer Aliases extends string ? SelectAliasesInQuery<N> extends infer SelectAliases extends string ? UnqualifiedColumnRefsValidFor<N, S, Tables, Aliases, RefScanSegment<N>, SelectAliases> : true : true : true;
69
+ export type UnqualifiedColumnRefsValidFor<N extends string, S extends DatabaseSchema, Tables extends string, Aliases extends string, RefSeg extends string, SelectAliases extends string> = UnqualifiedRefScan<RefSeg, S, Tables, Aliases> extends infer Cols ? AllTrue<Cols extends string ? CleanIdent<Cols> extends SelectAliases ? true : UnqualifiedColumnValid<Cols, Tables, Aliases, S> extends true ? true : CleanIdent<Cols> extends SourceAliasListCols<N> ? true : false : true> : true;
70
+ type SourceAliasListCols<N extends string> = N extends `with ${infer CteHead}(${infer CteCols}) as (${infer Rest}` ? AliasHasNoSpace<Trim<CteHead>> extends true ? ColNamesFromList<CteCols> | DerivedAliasListCols<Rest> : DerivedAliasListCols<N> : DerivedAliasListCols<N>;
71
+ type DerivedAliasListCols<N extends string, Steps extends any[] = []> = Steps["length"] extends 15 ? never : N extends `${string}) as ${infer Rest}` ? Rest extends `${infer Alias}(${infer Cols})${infer Tail}` ? AliasHasNoSpace<Trim<Alias>> extends true ? ColNamesFromList<Cols> | DerivedAliasListCols<Tail, [any, ...Steps]> : DerivedAliasListCols<Tail, [any, ...Steps]> : never : never;
72
+ type ColNamesFromList<L extends string> = L extends `${infer A},${infer R}` ? CleanIdent<A> | ColNamesFromList<R> : CleanIdent<L>;
62
73
  export {};
63
74
  //# sourceMappingURL=validate-columns.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate-columns.d.ts","sourceRoot":"","sources":["../../src/validation/validate-columns.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate-columns.d.ts","sourceRoot":"","sources":["../../src/validation/validate-columns.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kuindji/typed-sql",
3
- "version": "0.2.0",
3
+ "version": "0.4.0",
4
4
  "description": "Type-level SQL parser for TypeScript",
5
5
  "author": "Ivan Kuindzhi",
6
6
  "license": "MIT",
package/src/columns.ts CHANGED
@@ -10,11 +10,14 @@ import type {
10
10
  CanPrecedeColumn,
11
11
  CleanExpr,
12
12
  CleanIdent,
13
+ CleanLooseToken,
14
+ DQuoteSpaceSentinel,
13
15
  HasSpecial,
14
16
  IsParamPlaceholder,
15
17
  IsQualifiedRefCandidate,
16
18
  IsRuntimeStringFragment,
17
19
  IsSqlConstant,
20
+ LooseScanView,
18
21
  OperatorToken,
19
22
  ReplaceAll,
20
23
  SqlReserved,
@@ -206,49 +209,182 @@ export type ColumnRefValidNoTables<ColRef extends string, S extends DatabaseSche
206
209
  : ColumnExistsInAnyTable<B, S>
207
210
  : ColumnExistsInAnyTable<CleanIdent<ColRef>, S>;
208
211
 
209
- // Best-effort qualified column references across the query
212
+ // ---- Direct-string column ref-scans ----
213
+ //
214
+ // Best-effort qualified / unqualified column references across a query segment.
215
+ // These walk the padded `LooseScanView` string DIRECTLY, word by word — replacing
216
+ // the old `TokenizeLoose` token ARRAY plus two array-walks (round-9): every array
217
+ // build/destructure step minted a unique-content tuple and its apparent-`Array`
218
+ // types, while a word-jump string walk interns its substrings and `[any, ...Steps]`
219
+ // counter tuples. Token semantics are reproduced verbatim:
220
+ // - per word, the kept token is `CleanLooseToken<ReplaceAll<H, DQuoteSpaceSentinel, " ">>`
221
+ // (exactly the old `SrclPush`); a word cleaning to `""` never occupied an array
222
+ // position, so it updates NO register and consumes NO cap budget;
223
+ // - `IS [NOT] DISTINCT FROM` (old `DropDistinctFrom` pre-pass, fused in): a `from`
224
+ // token whose RAW-stream predecessor is `distinct` is operator text, not a
225
+ // FROM-clause boundary — it is dropped, so the filtered-stream `Prev` the next
226
+ // token sees stays `distinct` (which `CanPrecedeColumn` blesses) instead of
227
+ // `from` (which would mark it a table source and skip validation). `PrevRaw`
228
+ // tracks the UNFILTERED stream (a dropped `from` still sets it to `from`),
229
+ // mirroring the old pre-pass's own `Prev` chain exactly. The old pass only ran
230
+ // when the segment contained `distinct ` — per-token it's the same test, and
231
+ // its 400-token cap (remainder unfiltered) is gone: a >400-token `distinct`
232
+ // stream now validates its RHS like any other, never rejecting valid SQL.
233
+ //
234
+ // Cap parity: `Steps` caps total WORDS at 2000 (the old split cap — on cap the old
235
+ // pipeline blobbed the remainder into ONE token and the walkers processed it; the
236
+ // `*Last` arms apply the same one-token transform to the remainder). `Kept` caps
237
+ // kept TOKENS at 900 (the old ref-walk cap — return `Acc`, rest unscanned).
210
238
 
211
- export type QualifiedColumnRefs<
212
- Tokens extends string[],
213
- S extends DatabaseSchema,
214
- Tables extends string,
215
- Aliases extends string,
239
+ export type QualifiedRefScan<Seg extends string> =
240
+ LooseScanView<Seg> extends infer V extends string
241
+ ? QrsWalk<V>
242
+ : never;
243
+
244
+ type QrsWalk<
245
+ V extends string,
216
246
  Acc extends string = never,
217
247
  Prev extends string = "",
248
+ PrevRaw extends string = "",
249
+ Kept extends any[] = [],
218
250
  Steps extends any[] = []
219
- > = Steps["length"] extends 900
220
- ? Acc
221
- : Tokens extends [infer T extends string, ...infer Rest extends string[]]
222
- ? T extends `${string}.${string}`
223
- ? Prev extends "from" | "join" | "update" | "into" | "delete"
224
- ? QualifiedColumnRefs<Rest, S, Tables, Aliases, Acc, T, [any, ...Steps]>
225
- : IsQualifiedRefCandidate<T> extends true
226
- ? QualifiedColumnRefs<Rest, S, Tables, Aliases, Acc | T, T, [any, ...Steps]>
227
- : QualifiedColumnRefs<Rest, S, Tables, Aliases, Acc, T, [any, ...Steps]>
228
- : QualifiedColumnRefs<Rest, S, Tables, Aliases, Acc, T, [any, ...Steps]>
229
- : Acc;
251
+ > = Steps["length"] extends 2000
252
+ ? QrsLast<V, Acc, Prev>
253
+ : Kept["length"] extends 900
254
+ ? Acc
255
+ : V extends `${infer H} ${infer R}`
256
+ ? CleanLooseToken<ReplaceAll<H, DQuoteSpaceSentinel, " ">> extends infer M extends string
257
+ ? M extends ""
258
+ ? QrsWalk<R, Acc, Prev, PrevRaw, Kept, [any, ...Steps]>
259
+ : M extends "from"
260
+ ? PrevRaw extends "distinct"
261
+ ? QrsWalk<R, Acc, Prev, "from", Kept, [any, ...Steps]>
262
+ : QrsWalk<R, Acc, "from", "from", [any, ...Kept], [any, ...Steps]>
263
+ : M extends `${string}.${string}`
264
+ ? Prev extends "from" | "join" | "update" | "into" | "delete"
265
+ ? QrsWalk<R, Acc, M, M, [any, ...Kept], [any, ...Steps]>
266
+ : IsQualifiedRefCandidate<M> extends true
267
+ ? QrsWalk<R, Acc | M, M, M, [any, ...Kept], [any, ...Steps]>
268
+ : QrsWalk<R, Acc, M, M, [any, ...Kept], [any, ...Steps]>
269
+ : QrsWalk<R, Acc, M, M, [any, ...Kept], [any, ...Steps]>
270
+ : never
271
+ : QrsLast<V, Acc, Prev>;
272
+
273
+ // Final word (or capped remainder) as one token. A trailing `from` is never a ref
274
+ // and there is no subsequent token for its `Prev` effect to matter — `Acc` either way.
275
+ type QrsLast<H extends string, Acc extends string, Prev extends string> =
276
+ CleanLooseToken<ReplaceAll<H, DQuoteSpaceSentinel, " ">> extends infer M extends string
277
+ ? M extends `${string}.${string}`
278
+ ? Prev extends "from" | "join" | "update" | "into" | "delete"
279
+ ? Acc
280
+ : IsQualifiedRefCandidate<M> extends true
281
+ ? Acc | M
282
+ : Acc
283
+ : Acc
284
+ : never;
230
285
 
231
- // Best-effort unqualified column references across the query
286
+ export type UnqualifiedRefScan<
287
+ Seg extends string,
288
+ S extends DatabaseSchema,
289
+ Tables extends string,
290
+ Aliases extends string
291
+ > = LooseScanView<Seg> extends infer V extends string
292
+ ? UrsWalk<V, S, Tables, Aliases>
293
+ : never;
232
294
 
233
- export type UnqualifiedColumnRefs<
234
- Tokens extends string[],
295
+ // Deferred-decision walk: the old array walker judged token T with (Prev, Next) via
296
+ // one-token lookahead. Here the PENDING token `Pend` is judged only when the NEXT
297
+ // kept token `M` materializes — `IsUnqualifiedColumnCandidate<Pend, PrevPrev, M, …>`
298
+ // — then registers shift (`PrevPrev := Pend`, `Pend := M`). At end of stream `Pend`
299
+ // is judged with `Next = ""`, exactly the old `[T]` tail arm. `Pend = ""` means "no
300
+ // pending yet" — safe sentinel (kept tokens are never empty), and the candidate
301
+ // check is `false` for `""`, so the initial shift needs no special arm.
302
+ type UrsWalk<
303
+ V extends string,
235
304
  S extends DatabaseSchema,
236
305
  Tables extends string,
237
306
  Aliases extends string,
238
307
  Acc extends string = never,
239
- Prev extends string = "",
308
+ PrevPrev extends string = "",
309
+ Pend extends string = "",
310
+ PrevRaw extends string = "",
311
+ Kept extends any[] = [],
240
312
  Steps extends any[] = []
241
- > = Steps["length"] extends 900
242
- ? Acc
243
- : Tokens extends [infer T extends string, infer Next extends string, ...infer Rest extends string[]]
244
- ? IsUnqualifiedColumnCandidate<T, Prev, Next, Tables, Aliases, S> extends true
245
- ? UnqualifiedColumnRefs<[Next, ...Rest], S, Tables, Aliases, Acc | T, T, [any, ...Steps]>
246
- : UnqualifiedColumnRefs<[Next, ...Rest], S, Tables, Aliases, Acc, T, [any, ...Steps]>
247
- : Tokens extends [infer T extends string]
248
- ? IsUnqualifiedColumnCandidate<T, Prev, "", Tables, Aliases, S> extends true
249
- ? Acc | T
250
- : Acc
251
- : Acc;
313
+ > = Steps["length"] extends 2000
314
+ ? UrsLast<V, S, Tables, Aliases, Acc, PrevPrev, Pend, PrevRaw>
315
+ : Kept["length"] extends 900
316
+ ? Acc
317
+ : V extends `${infer H} ${infer R}`
318
+ ? CleanLooseToken<ReplaceAll<H, DQuoteSpaceSentinel, " ">> extends infer M extends string
319
+ ? M extends ""
320
+ ? UrsWalk<R, S, Tables, Aliases, Acc, PrevPrev, Pend, PrevRaw, Kept, [any, ...Steps]>
321
+ : M extends "from"
322
+ ? PrevRaw extends "distinct"
323
+ ? UrsWalk<R, S, Tables, Aliases, Acc, PrevPrev, Pend, "from", Kept, [any, ...Steps]>
324
+ : UrsShift<R, S, Tables, Aliases, Acc, PrevPrev, Pend, M, Kept, Steps>
325
+ : UrsShift<R, S, Tables, Aliases, Acc, PrevPrev, Pend, M, Kept, Steps>
326
+ : never
327
+ : UrsLast<V, S, Tables, Aliases, Acc, PrevPrev, Pend, PrevRaw>;
328
+
329
+ type UrsShift<
330
+ R extends string,
331
+ S extends DatabaseSchema,
332
+ Tables extends string,
333
+ Aliases extends string,
334
+ Acc extends string,
335
+ PrevPrev extends string,
336
+ Pend extends string,
337
+ M extends string,
338
+ Kept extends any[],
339
+ Steps extends any[]
340
+ > = IsUnqualifiedColumnCandidate<Pend, PrevPrev, M, Tables, Aliases, S> extends true
341
+ ? UrsWalk<R, S, Tables, Aliases, Acc | Pend, Pend, M, M, [any, ...Kept], [any, ...Steps]>
342
+ : UrsWalk<R, S, Tables, Aliases, Acc, Pend, M, M, [any, ...Kept], [any, ...Steps]>;
343
+
344
+ // Final word (or capped remainder) as one token: judge `Pend` with the final token
345
+ // as `Next`, then the final token itself with `Next = ""`. A final dropped
346
+ // `distinct`-`from` ends the stream, so only `Pend` (with `Next = ""`) is judged.
347
+ type UrsLast<
348
+ H extends string,
349
+ S extends DatabaseSchema,
350
+ Tables extends string,
351
+ Aliases extends string,
352
+ Acc extends string,
353
+ PrevPrev extends string,
354
+ Pend extends string,
355
+ PrevRaw extends string
356
+ > = CleanLooseToken<ReplaceAll<H, DQuoteSpaceSentinel, " ">> extends infer M extends string
357
+ ? M extends ""
358
+ ? UrsEnd<S, Tables, Aliases, Acc, PrevPrev, Pend>
359
+ : M extends "from"
360
+ ? PrevRaw extends "distinct"
361
+ ? UrsEnd<S, Tables, Aliases, Acc, PrevPrev, Pend>
362
+ : UrsLast2<S, Tables, Aliases, Acc, PrevPrev, Pend, M>
363
+ : UrsLast2<S, Tables, Aliases, Acc, PrevPrev, Pend, M>
364
+ : never;
365
+
366
+ type UrsLast2<
367
+ S extends DatabaseSchema,
368
+ Tables extends string,
369
+ Aliases extends string,
370
+ Acc extends string,
371
+ PrevPrev extends string,
372
+ Pend extends string,
373
+ M extends string
374
+ > = IsUnqualifiedColumnCandidate<Pend, PrevPrev, M, Tables, Aliases, S> extends true
375
+ ? UrsEnd<S, Tables, Aliases, Acc | Pend, Pend, M>
376
+ : UrsEnd<S, Tables, Aliases, Acc, Pend, M>;
377
+
378
+ type UrsEnd<
379
+ S extends DatabaseSchema,
380
+ Tables extends string,
381
+ Aliases extends string,
382
+ Acc extends string,
383
+ PrevPrev extends string,
384
+ Pend extends string
385
+ > = IsUnqualifiedColumnCandidate<Pend, PrevPrev, "", Tables, Aliases, S> extends true
386
+ ? Acc | Pend
387
+ : Acc;
252
388
 
253
389
  export type UnqualifiedColumnValid<
254
390
  Col extends string,