@typesql/core 0.0.3 → 0.0.4

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 (131) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/README.md +20 -5
  3. package/dist/create-sql.d.ts +150 -27
  4. package/dist/create-sql.d.ts.map +1 -1
  5. package/dist/create-sql.js +25 -7
  6. package/dist/create-sql.js.map +1 -1
  7. package/dist/engine/ast.d.ts +9 -2
  8. package/dist/engine/ast.d.ts.map +1 -1
  9. package/dist/engine/binder/clauses.d.ts +2 -1
  10. package/dist/engine/binder/clauses.d.ts.map +1 -1
  11. package/dist/engine/binder/from.d.ts +1 -1
  12. package/dist/engine/binder/from.d.ts.map +1 -1
  13. package/dist/engine/binder/resolve.d.ts +18 -6
  14. package/dist/engine/binder/resolve.d.ts.map +1 -1
  15. package/dist/engine/ddl/apply.d.ts +28 -10
  16. package/dist/engine/ddl/apply.d.ts.map +1 -1
  17. package/dist/engine/errors.d.ts +1 -1
  18. package/dist/engine/infer.d.ts +54 -15
  19. package/dist/engine/infer.d.ts.map +1 -1
  20. package/dist/engine/inline.d.ts +54 -3
  21. package/dist/engine/inline.d.ts.map +1 -1
  22. package/dist/engine/json.d.ts +219 -0
  23. package/dist/engine/json.d.ts.map +1 -0
  24. package/dist/engine/json.js +2 -0
  25. package/dist/engine/json.js.map +1 -0
  26. package/dist/engine/lexer/lex.d.ts +11 -2
  27. package/dist/engine/lexer/lex.d.ts.map +1 -1
  28. package/dist/engine/parser/ddl.d.ts +14 -1
  29. package/dist/engine/parser/ddl.d.ts.map +1 -1
  30. package/dist/engine/parser/expr.d.ts +18 -3
  31. package/dist/engine/parser/expr.d.ts.map +1 -1
  32. package/dist/engine/project/dml.d.ts +21 -6
  33. package/dist/engine/project/dml.d.ts.map +1 -1
  34. package/dist/engine/project/select.d.ts +9 -1
  35. package/dist/engine/project/select.d.ts.map +1 -1
  36. package/dist/engine/shape.d.ts +50 -0
  37. package/dist/engine/shape.d.ts.map +1 -0
  38. package/dist/engine/shape.js +2 -0
  39. package/dist/engine/shape.js.map +1 -0
  40. package/dist/engine/splice.d.ts +9 -0
  41. package/dist/engine/splice.d.ts.map +1 -1
  42. package/dist/engine/suggest.d.ts +15 -5
  43. package/dist/engine/suggest.d.ts.map +1 -1
  44. package/dist/engine/typer/catalog.d.ts +112 -28
  45. package/dist/engine/typer/catalog.d.ts.map +1 -1
  46. package/dist/engine/typer/operators.d.ts +6 -3
  47. package/dist/engine/typer/operators.d.ts.map +1 -1
  48. package/dist/engine/typer/params.d.ts +73 -20
  49. package/dist/engine/typer/params.d.ts.map +1 -1
  50. package/dist/engine/typer/pg-functions.d.ts +683 -0
  51. package/dist/engine/typer/pg-functions.d.ts.map +1 -0
  52. package/dist/engine/typer/pg-functions.js +2 -0
  53. package/dist/engine/typer/pg-functions.js.map +1 -0
  54. package/dist/engine/typer/typeof.d.ts +28 -13
  55. package/dist/engine/typer/typeof.d.ts.map +1 -1
  56. package/dist/engine/write.d.ts +100 -0
  57. package/dist/engine/write.d.ts.map +1 -0
  58. package/dist/engine/write.js +2 -0
  59. package/dist/engine/write.js.map +1 -0
  60. package/dist/index.d.ts +10 -7
  61. package/dist/index.d.ts.map +1 -1
  62. package/dist/index.js +4 -2
  63. package/dist/index.js.map +1 -1
  64. package/dist/migrations.d.ts +2 -2
  65. package/dist/migrations.d.ts.map +1 -1
  66. package/dist/query.d.ts +36 -5
  67. package/dist/query.d.ts.map +1 -1
  68. package/dist/query.js +42 -6
  69. package/dist/query.js.map +1 -1
  70. package/dist/row-keys.d.ts +36 -0
  71. package/dist/row-keys.d.ts.map +1 -0
  72. package/dist/row-keys.js +38 -0
  73. package/dist/row-keys.js.map +1 -0
  74. package/dist/runtime/inline.d.ts +12 -2
  75. package/dist/runtime/inline.d.ts.map +1 -1
  76. package/dist/runtime/inline.js +38 -2
  77. package/dist/runtime/inline.js.map +1 -1
  78. package/dist/runtime/json.d.ts +22 -0
  79. package/dist/runtime/json.d.ts.map +1 -0
  80. package/dist/runtime/json.js +32 -0
  81. package/dist/runtime/json.js.map +1 -0
  82. package/dist/runtime/write.d.ts +15 -0
  83. package/dist/runtime/write.d.ts.map +1 -0
  84. package/dist/runtime/write.js +70 -0
  85. package/dist/runtime/write.js.map +1 -0
  86. package/dist/schema/column.d.ts +18 -2
  87. package/dist/schema/column.d.ts.map +1 -1
  88. package/dist/schema/index.d.ts +2 -1
  89. package/dist/schema/index.d.ts.map +1 -1
  90. package/dist/schema/pg-catalog.d.ts +968 -0
  91. package/dist/schema/pg-catalog.d.ts.map +1 -0
  92. package/dist/schema/pg-catalog.js +2 -0
  93. package/dist/schema/pg-catalog.js.map +1 -0
  94. package/dist/type-map/index.d.ts +54 -2
  95. package/dist/type-map/index.d.ts.map +1 -1
  96. package/package.json +1 -1
  97. package/src/create-sql.ts +191 -37
  98. package/src/engine/ast.ts +4 -2
  99. package/src/engine/binder/clauses.ts +3 -1
  100. package/src/engine/binder/from.ts +1 -1
  101. package/src/engine/binder/resolve.ts +27 -6
  102. package/src/engine/ddl/apply.ts +23 -8
  103. package/src/engine/errors.ts +1 -1
  104. package/src/engine/infer.ts +50 -14
  105. package/src/engine/inline.ts +67 -5
  106. package/src/engine/json.ts +232 -0
  107. package/src/engine/lexer/lex.ts +29 -16
  108. package/src/engine/parser/ddl.ts +28 -1
  109. package/src/engine/parser/expr.ts +9 -2
  110. package/src/engine/project/dml.ts +20 -5
  111. package/src/engine/project/select.ts +13 -1
  112. package/src/engine/shape.ts +51 -0
  113. package/src/engine/splice.ts +9 -0
  114. package/src/engine/suggest.ts +17 -4
  115. package/src/engine/typer/catalog.ts +109 -32
  116. package/src/engine/typer/operators.ts +10 -7
  117. package/src/engine/typer/params.ts +51 -25
  118. package/src/engine/typer/pg-functions.ts +495 -0
  119. package/src/engine/typer/typeof.ts +45 -14
  120. package/src/engine/write.ts +89 -0
  121. package/src/index.ts +11 -8
  122. package/src/migrations.ts +2 -2
  123. package/src/query.ts +69 -8
  124. package/src/row-keys.ts +69 -0
  125. package/src/runtime/inline.ts +36 -3
  126. package/src/runtime/json.ts +31 -0
  127. package/src/runtime/write.ts +65 -0
  128. package/src/schema/column.ts +17 -2
  129. package/src/schema/index.ts +2 -1
  130. package/src/schema/pg-catalog.ts +971 -0
  131. package/src/type-map/index.ts +65 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,39 @@
1
1
  # @typesql/core
2
2
 
3
+ ## 0.0.4
4
+
5
+ ### Patch Changes
6
+
7
+ - A statement that fails to validate reports only its SqlError on the SQL text, instead of an argument-count error such as "Expected 2 arguments, but got 3".
8
+
9
+ - An opt-in `PgCatalog` slice types queries on `pg_stat_activity`, `pg_stat_database`, `pg_tables`, `pg_class`, `information_schema.columns` and other system catalogs: `createSql<DB & PgCatalog>()`.
10
+
11
+ - Queries have `executeCount()`, which resolves to the affected row count: an `Executor` may resolve to `{ rows, rowCount }` instead of the rows, as the `executor()` of `@typesql/pg`, `@typesql/postgres` and `@typesql/kysely` now do.
12
+
13
+ - Declare typed JSON columns with `Json<T>`: rows read `T`, `->` / `#>` index into it, parameters take `T`, and `sql.json(value)` sends JSON the same way with pg and postgres.js, inline, as a `sql.set` / `sql.values` value or as a positional or named argument; a raw array for a json / jsonb parameter (through `sql.param()`, `sql.set`, `sql.values` or as an argument) is now a compile error.
14
+
15
+ - Compile errors on long statements show the SqlError message first (`SqlError<…> & "…SQL…"`), so it is no longer cut off when TypeScript truncates the statement text in the diagnostic.
16
+
17
+ - `createSql(executor, { rowKeys: "camelCase" })` (and the adapters' `createSql(client, { rowKeys: "camelCase" })`) camelCases the top-level row keys the way Kysely's `CamelCasePlugin` does, in the row types and in the rows `execute*` and the `query`/`one`/`maybeOne`/`many` helpers return, leaving JSON values untouched.
18
+
19
+ - A table alias used as a value is a whole-row reference: `to_json(t)`, `json_agg(t)`, `row_to_json(t.*)` and `t IS NULL` no longer fail with "column does not exist", and `(t).col` / `(t).*` read its columns.
20
+
21
+ - `sql.id(name)` with a generic name constrained to `RelationName<DB>` is typed as every table and view instead of failing, other non-literal names give the usual "dynamic SQL fragment" error, and a fragment whose text is a union now reports an error in any member instead of passing when one member is valid.
22
+
23
+ - Type checking is about 7% faster: the lexer handles punctuation, `=`, `::` and `.` without trying every operator, cutting its type instantiations by about 20%.
24
+
25
+ - Calling an unknown function is a compile error (`function f(text) does not exist`, with a "Perhaps you meant" hint); declare app and extension functions under `$functions` in the schema or in `FunctionCatalog`, `CREATE FUNCTION` in migrations registers them, and every other `pg_catalog` function is known with its return type.
26
+
27
+ - Add write helpers: `sql.valueOrDefault(x)` sends `DEFAULT` when `x` is `undefined`, and `sql.set(table, partial)` / `sql.values(table, rows)` build typed `SET` lists and `VALUES` rows from objects. `DEFAULT` outside a `VALUES` item or `SET` value, or for a `NOT NULL` column without a default, is now a compile error.
28
+
29
+ - Add `sql.list(items, separator)`: join a runtime array of fragments with known texts (such as user-chosen `ORDER BY` keys) and keep the statement checked, without `sql.as`.
30
+
31
+ - JSON built in SQL is typed: `json_build_object`, `json_build_array`, `json_agg`, `json_object_agg` and `to_json(t)` give the JSON's structure (values typed as Postgres serializes them, so timestamps are strings), `->`, `#>` and subscripts follow it, and JSON aggregates in a grouped query are no longer nullable.
32
+
33
+ - Parameters accept `null` wherever Postgres does: comparisons (`col = $1`, `IN`, `ANY`, `LIKE`), `LIMIT`/`OFFSET`, casts in comparisons and function arguments (`coalesce($1::text, 'x')`), and array elements (`(number | null)[]`); assigning `null` to a `NOT NULL` column is still an error.
34
+
35
+ - Parameters accept what the driver can serialize on top of the row type (`int8`, `numeric` and `money` take `number | bigint | string`, dates and timestamps take `Date | string`), also when a type map types those rows differently; a type map can declare its own input types under `$params`.
36
+
3
37
  ## 0.0.3
4
38
 
5
39
  ### Patch Changes
package/README.md CHANGED
@@ -39,7 +39,7 @@ const sql = createSql<DB>();
39
39
  const q = sql(`SELECT u.id, u.email, p.title
40
40
  FROM users u LEFT JOIN posts p ON p.author_id = u.id
41
41
  WHERE u.id = $1`, 7);
42
- // ^? Query<{ id: number; email: string; title: string | null }, [number]>
42
+ // ^? Query<{ id: number; email: string; title: string | null }, [number | null]>
43
43
 
44
44
  q.text; // the SQL, sent to Postgres as is
45
45
  q.values; // [7]
@@ -50,7 +50,8 @@ sql("SELECT nme FROM users");
50
50
 
51
51
  The SQL must be a string literal (tagged templates cannot be inferred by TypeScript). Values
52
52
  can be passed positionally (`$1`), by name (`:email` with an object), or inline with
53
- `${sql.param(value)}`; all are sent as bind parameters and checked against their context.
53
+ `${sql.param(value)}` (`${sql.json(value)}` for JSON); all are sent as bind parameters and
54
+ checked against their context.
54
55
 
55
56
  ## What you get
56
57
 
@@ -58,17 +59,28 @@ can be passed positionally (`$1`), by name (`:email` with an object), or inline
58
59
  window functions) and `INSERT`/`UPDATE`/`DELETE … RETURNING`.
59
60
  - **Nullability** from the schema, outer joins, `WHERE` filters and expressions (`COALESCE`,
60
61
  aggregates, `CASE`).
62
+ - **Typed JSON**: `json_build_object`, `json_agg`, `to_json(t)` and `->` / `#>` give the JSON's
63
+ structure, typed as Postgres serializes it.
61
64
  - **Postgres column naming** (`?column?`, `count`, `lower`) and Postgres-worded compile errors.
62
- - **Fragments**: `sql.fragment`, `sql.id`, `sql.join`, `sql.raw`, spliced into inference with
65
+ - **Fragments**: `sql.fragment`, `sql.id`, `sql.join`, `sql.list` (runtime arrays of typed elements), `sql.raw`, spliced into inference with
63
66
  `$n` renumbering.
67
+ - **Write helpers**: `sql.valueOrDefault(x)` sends `DEFAULT` for `undefined`; `sql.set(table, partial)`
68
+ and `sql.values(table, rows)` build typed `SET` lists and `VALUES` rows from objects.
64
69
  - **DDL**: `ApplyDdl<DB, "ALTER TABLE …">` and the `migrations()` builder derive the schema from
65
70
  your migrations.
71
+ - **Running queries**: with `createSql(executor)` (or an adapter's `createSql(client)`), queries
72
+ have `execute()`, `executeTakeFirst()`, `executeTakeFirstOrThrow()` and `executeCount()` (the
73
+ affected row count). An `Executor` resolves to the rows or to `{ rows, rowCount }`.
74
+ - **camelCase rows**: `createSql(executor, { rowKeys: "camelCase" })` renames the rows'
75
+ top-level keys (`created_at` → `createdAt`, as Kysely's `CamelCasePlugin` does) in the types
76
+ and at runtime, leaving JSON values alone.
66
77
  - **Escape hatch**: `sql.as<Row>(…)` for SQL the engine cannot type.
67
78
 
68
79
  ## Schema
69
80
 
70
81
  Columns are declared with Postgres type names; a type map turns them into TypeScript types
71
- (`DefaultTypeMap` matches node-postgres: `int8` and `numeric` are `string`):
82
+ (`DefaultTypeMap` matches node-postgres: `int8` and `numeric` rows are `string`; their parameters
83
+ also take numbers and bigints, and date parameters take `Date | string`):
72
84
 
73
85
  | Helper | Meaning |
74
86
  |---|---|
@@ -77,9 +89,12 @@ Columns are declared with Postgres type names; a type map turns them into TypeSc
77
89
  | `Generated<"int4">` | has a default: optional in `INSERT` |
78
90
  | `NullableGenerated<"text">` | both |
79
91
  | `Enum<"mood">` | values in `DB["$types"]["mood"]` |
92
+ | `Json<T>` | `jsonb` holding `T`: rows read `T`, `->` indexes into it, `${sql.json(v)}` writes it |
80
93
  | `View<{ … }>` | read-only relation |
81
94
 
82
- Other Postgres schemas nest (`DB["auth"]["sessions"]` is `auth.sessions`).
95
+ Other Postgres schemas nest (`DB["auth"]["sessions"]` is `auth.sessions`). For
96
+ `pg_stat_activity`, `pg_tables`, `information_schema.columns` and other system catalogs, add the
97
+ opt-in slice: `createSql<DB & PgCatalog>()`.
83
98
 
84
99
  ## Requirements
85
100
 
@@ -1,10 +1,19 @@
1
- import type { ParamsOf, RowOf, Validate } from "./engine/infer.js";
1
+ import type { ArgsOf, ParamsOf, RowOf, Validate } from "./engine/infer.js";
2
2
  import type { NamedParams, RewriteNamedStr } from "./engine/named.js";
3
3
  import type { AnyErr, SqlError } from "./engine/errors.js";
4
- import type { CheckCarried, Enc, InlineMarker, RewriteInlineStr, Skip } from "./engine/inline.js";
5
- import type { HasSlots, JoinedText, MaxParamStr, QuotedIdent, SlotNames, Splice, SpliceCarried, Take, UnknownTuple } from "./engine/splice.js";
4
+ import type { CheckCarried, DefaultMarker, HasDefaultable, InlineMarker, JsonMarker, RewriteInlineStr, Skip, ValueEnc, WithDefaults } from "./engine/inline.js";
5
+ import type { HasSlots, JoinedText, MaxParamStr, QuotedIdent, SlotNames, Splice, SpliceCarried, Take, UnionList, UnknownTuple } from "./engine/splice.js";
6
6
  import type { DefaultTypeMap } from "./type-map/index.js";
7
7
  import { type CARRIED, type Executor, type Fragment, type Query, type TextType } from "./query.js";
8
+ import type { KeyedRow, RowKeys, SqlOptions } from "./row-keys.js";
9
+ import type { InsertInput, NoExtraKeys, RelationName, SetInput, SetRep, TableName, ValuesRep } from "./engine/write.js";
10
+ /**
11
+ * `Parts` when every part is a literal (or a union of literals). A generic part leaves this
12
+ * unresolved, which fails the first `sql.id` overload so the later ones apply.
13
+ */
14
+ type LiteralParts<Parts extends readonly string[]> = {
15
+ readonly [I in keyof Parts]: string extends Parts[I] ? never : {} extends Record<Parts[I], 1> ? never : Parts[I];
16
+ };
8
17
  /** Fragments accepted in a slot object: fragments or whole queries (subqueries). */
9
18
  export type Slottable = Fragment<string, readonly unknown[], readonly unknown[]> | Query<unknown, readonly unknown[], string>;
10
19
  export type SlotMap = {
@@ -47,18 +56,38 @@ type WithInline<T1 extends string, Names extends string[], M extends number> = R
47
56
  /** The positional text of a call (what is validated and sent). */
48
57
  type PText<Q extends string> = Prepared<Q> extends [infer X extends string, ...unknown[]] ? X : Q;
49
58
  /** Arguments after the query (or after the slots): positional values or one `:name` object. */
50
- type ArgsFor<DB, TM, X extends string, Names extends string[], Encs extends readonly unknown[], M extends number> = Names extends [] ? Encs extends readonly [] ? ParamsOf<DB, TM, X> : Take<ParamsOf<DB, TM, X>, M> : [params: NamedParams<Names, Take<ParamsOf<DB, TM, X>, Names["length"]>>];
51
- /** `unknown` when the call is valid; otherwise the SqlError (so it lands on the query literal). */
52
- type CallCheck<DB, TM, Q extends string> = IsLiteral<Q> extends false ? SqlError<NotLiteralMessage, 0> : HasSlots<Q> extends true ? never : Prepared<Q> extends infer P ? P extends [infer X extends string, string[], infer Encs extends readonly string[], infer M extends number] ? Validate<DB, X> extends infer V ? V extends AnyErr ? V : Carried<DB, TM, X, [...Skip<M>, ...Encs]> : never : P : never;
53
- type CallArgs<DB, TM, Q extends string> = IsLiteral<Q> extends false ? readonly unknown[] : Prepared<Q> extends [infer X extends string, infer Names extends string[], infer Encs extends readonly string[], infer M extends number] ? ArgsFor<DB, TM, X, Names, Encs, M> : readonly unknown[];
54
- /** `unknown` when every carried value type fits its parameter, else the SqlError. */
55
- type Carried<DB, TM, X extends string, K extends readonly unknown[]> = K extends readonly null[] ? unknown : CheckCarried<DB, TM, X, K> extends infer C ? (C extends true ? unknown : C) : never;
59
+ type ArgsFor<DB, TM, X extends string, Names extends string[], Encs extends readonly unknown[], M extends number> = Names extends [] ? Encs extends readonly [] ? ArgsOf<DB, TM, X> : Take<ArgsOf<DB, TM, X>, M> : [params: NamedParams<Names, Take<ArgsOf<DB, TM, X>, Names["length"]>>];
60
+ /** `true` when the call is valid; otherwise the SqlError (so it lands on the query literal). */
61
+ type CallCheck<DB, TM, Q extends string> = IsLiteral<Q> extends false ? SqlError<NotLiteralMessage, 0> : HasSlots<Q> extends true ? never : Prepared<Q> extends infer P ? P extends [infer X extends string, string[], infer Encs extends readonly string[], infer M extends number] ? Validate<DB, X> extends infer V ? V extends AnyErr ? V : Carried<DB, TM, X, [...Skip<M>, ...Encs]> extends infer K ? (K extends AnyErr ? K : DefaultsCheck<DB, Q, null>) : never : never : P : never;
62
+ /**
63
+ * Arguments of a call. When the statement does not validate (or has slots), this signature
64
+ * takes none, and the slotted signature takes any (`SlottedArgs`): with arguments, TypeScript
65
+ * then rejects this one on arity and reports the slotted signature's error, which is the
66
+ * SqlError on the query text. (An incomplete parameter tuple on both would surface as
67
+ * "Expected 2 arguments, but got 3" and hide the SqlError.)
68
+ */
69
+ type CallArgs<DB, TM, Q extends string> = IsLiteral<Q> extends false ? [] : HasSlots<Q> extends true ? [] : Prepared<Q> extends [infer X extends string, infer Names extends string[], infer Encs extends readonly string[], infer M extends number] ? Validate<DB, X> extends AnyErr ? [] : ArgsFor<DB, TM, X, Names, Encs, M> : [];
70
+ /** `true` when every carried value type fits its parameter, else the SqlError. */
71
+ type Carried<DB, TM, X extends string, K extends readonly unknown[]> = K extends readonly null[] ? true : CheckCarried<DB, TM, X, K>;
72
+ /**
73
+ * `sql.valueOrDefault(v)` with a value that can be `undefined`: the statement is checked again
74
+ * with `DEFAULT` in place of every such marker (one extra analysis, not one per marker: each
75
+ * position allows `DEFAULT` or not on its own). `S` is the slot object, `null` without slots.
76
+ */
77
+ type DefaultsCheck<DB, Q extends string, S> = HasDefaultable<Q> extends false ? true : PText<WithDefaults<Q>> extends infer X extends string ? (S extends null ? X : Splice<X, SlotTexts<S>>) extends infer X2 extends string ? Extract<Validate<DB, X2>, AnyErr> extends infer E ? ([E] extends [never] ? true : DefaultErr<E>) : never : true : true;
78
+ type DefaultErr<E> = E extends SqlError<infer Msg extends string, infer At> ? SqlError<`${Msg} (sql.valueOrDefault() sends DEFAULT for undefined)`, At> : E;
79
+ /**
80
+ * Checks return `true` or an SqlError per member of a union text (a fragment whose text is a
81
+ * union of literals), so the results are a union. Any error wins; then `unknown` (valid) or
82
+ * `never` (wrong overload).
83
+ */
84
+ type Surface<R> = [Extract<R, AnyErr>] extends [never] ? ([R] extends [never] ? never : unknown) : Extract<R, AnyErr>;
56
85
  /** The fully spliced literal (or an SqlError / `string` for dynamic fragments). */
57
86
  export type SplicedText<Q extends string, S> = Splice<PText<Q>, SlotTexts<S>>;
58
- type SlottedCheck<DB, TM, Q extends string, S> = IsLiteral<Q> extends false ? SqlError<NotLiteralMessage, 0> : Prepared<Q> extends infer P ? P extends [infer T2 extends string, string[], infer Encs extends readonly string[], infer M extends number] ? Splice<T2, SlotTexts<S>> extends infer X ? X extends string ? string extends X ? SqlError<"dynamic SQL fragment: the statement text is not a literal; use sql.as<Row>() to assert the row type", null> : Validate<DB, X> extends infer V ? V extends AnyErr ? V : Carried<DB, TM, X, [...Skip<M>, ...Encs, ...SpliceCarried<T2, SlotCarried<S>>]> : never : X : never : P : never;
59
- type SlottedArgs<DB, TM, Q extends string, S> = IsLiteral<Q> extends false ? readonly unknown[] : Prepared<Q> extends [infer T2 extends string, infer Names extends string[], readonly unknown[], infer M extends number] ? Splice<T2, SlotTexts<S>> extends infer X extends string ? Names extends [] ? Take<ParamsOf<DB, TM, X>, M> : [params: NamedParams<Names, Take<ParamsOf<DB, TM, X>, Names["length"]>>] : readonly unknown[] : readonly unknown[];
87
+ type SlottedCheck<DB, TM, Q extends string, S> = IsLiteral<Q> extends false ? SqlError<NotLiteralMessage, 0> : Prepared<Q> extends infer P ? P extends [infer T2 extends string, string[], infer Encs extends readonly string[], infer M extends number] ? Splice<T2, SlotTexts<S>> extends infer X ? X extends string ? string extends X ? SqlError<"dynamic SQL fragment: the statement text is not a literal; use sql.as<Row>() to assert the row type", null> : Validate<DB, X> extends infer V ? V extends AnyErr ? V : Carried<DB, TM, X, [...Skip<M>, ...Encs, ...SpliceCarried<T2, SlotCarried<S>>]> extends infer K ? (K extends AnyErr ? K : DefaultsCheck<DB, Q, S>) : never : never : X : never : P : never;
88
+ type SlottedArgs<DB, TM, Q extends string, S> = IsLiteral<Q> extends false ? readonly unknown[] : Prepared<Q> extends [infer T2 extends string, infer Names extends string[], readonly unknown[], infer M extends number] ? Splice<T2, SlotTexts<S>> extends infer X extends string ? string extends X ? readonly unknown[] : Validate<DB, X> extends AnyErr ? readonly unknown[] : Names extends [] ? Take<ArgsOf<DB, TM, X>, M> : [params: NamedParams<Names, Take<ArgsOf<DB, TM, X>, Names["length"]>>] : readonly unknown[] : readonly unknown[];
60
89
  type SplicedOr<Q extends string, S> = SplicedText<Q, S> extends infer X extends string ? X : string;
61
- type FragCheck<Text extends string, Slotted extends boolean> = IsLiteral<Text> extends false ? SqlError<NotLiteralMessage, 0> : HasSlots<Text> extends Slotted ? Prepared<Text> extends infer P ? (P extends AnyErr ? P : unknown) : never : never;
90
+ type FragCheck<Text extends string, Slotted extends boolean> = IsLiteral<Text> extends false ? SqlError<NotLiteralMessage, 0> : HasSlots<Text> extends Slotted ? Prepared<Text> extends infer P ? (P extends AnyErr ? P : true) : never : never;
62
91
  /**
63
92
  * Arguments to `sql.fragment`: positional values for its `$n`, or one `:name` object. Applied as
64
93
  * `...params: A & BoxFragArgs<Text>` with `A` unconstrained: a constraint that goes through
@@ -71,23 +100,54 @@ type FragCount<Text extends string> = Prepared<Text> extends [string, string[],
71
100
  /** Encoded types of the values a fragment carries: its arguments, then its inline params. */
72
101
  type FragCarried<Text extends string, A extends readonly unknown[]> = Prepared<Text> extends [string, infer Names extends string[], infer Encs extends readonly string[], number] ? Names extends [] ? [...EncAll<A>, ...Encs] : [...EncNamed<Names, A[0]>, ...Encs] : [];
73
102
  type EncAll<A extends readonly unknown[]> = {
74
- -readonly [I in keyof A]: Enc<A[I]>;
103
+ -readonly [I in keyof A]: ValueEnc<A[I]>;
75
104
  };
76
105
  type EncNamed<Names extends string[], O> = {
77
- [I in keyof Names]: Names[I] extends keyof O ? Enc<O[Names[I]]> : "*";
106
+ [I in keyof Names]: Names[I] extends keyof O ? ValueEnc<O[Names[I]]> : "*";
78
107
  };
79
108
  type JoinedCarried<Items extends readonly unknown[], Acc extends readonly unknown[] = []> = Items extends readonly [infer H, ...infer R] ? JoinedCarried<R, [...Acc, ...(CarriedOf<H> extends infer C extends readonly unknown[] ? C : [])]> : Acc;
80
- type GateCallCheck<DB, TM, Q extends string> = [DB, TM, Q] extends [infer D, infer M, infer Q2 extends string] ? CallCheck<D, M, Q2> : never;
109
+ /**
110
+ * `[text, carried]` for every element type of a list, split per literal text (a fragment whose
111
+ * text is a union of literals contributes one pair per member).
112
+ */
113
+ type ElemPairs<F> = F extends unknown ? (TextType<F> extends infer T extends string ? (T extends unknown ? readonly [T, CarriedOf<F>] : never) : never) : never;
114
+ type AnyDynamic<P> = true extends (P extends readonly [infer T extends string, unknown] ? (IsLiteral<T> extends true ? false : true) : true) ? true : false;
115
+ type PairCarried<Ps extends readonly unknown[], Acc extends readonly unknown[] = []> = Ps extends readonly [readonly [string, infer C extends readonly unknown[]], ...infer R] ? PairCarried<R, [...Acc, ...C]> : Acc;
116
+ type PairTexts<Ps extends readonly unknown[]> = {
117
+ [I in keyof Ps]: {
118
+ readonly text: Ps[I] extends readonly [infer T extends string, unknown] ? T : string;
119
+ };
120
+ };
121
+ /**
122
+ * The representative statement piece of `sql.list(items, sep)`: every distinct element once,
123
+ * joined with `Sep` and renumbered, plus the values those elements carry. A statement that is
124
+ * valid with each element present once is valid for any count and order of them in a list
125
+ * position (ORDER BY, SET, VALUES rows, AND chains, …), so one analysis covers every runtime
126
+ * combination. Unknown element types or a dynamic element text make the list dynamic.
127
+ */
128
+ export type ListRep<E, Sep extends string> = [
129
+ E
130
+ ] extends [never] ? {
131
+ readonly text: string;
132
+ readonly carried: [];
133
+ } : ElemPairs<E> extends infer P ? AnyDynamic<P> extends true ? {
134
+ readonly text: string;
135
+ readonly carried: [];
136
+ } : UnionList<P> extends infer Ps extends readonly unknown[] ? {
137
+ readonly text: JoinedText<PairTexts<Ps>, Sep>;
138
+ readonly carried: PairCarried<Ps>;
139
+ } : never : never;
140
+ type GateCallCheck<DB, TM, Q extends string> = [DB, TM, Q] extends [infer D, infer M, infer Q2 extends string] ? Surface<CallCheck<D, M, Q2>> : never;
81
141
  type GateSlottedCheck<DB, TM, Q extends string, S> = [
82
142
  DB,
83
143
  TM,
84
144
  Q,
85
145
  S
86
- ] extends [infer D, infer M, infer Q2 extends string, infer S2] ? SlottedCheck<D, M, Q2, S2> : never;
146
+ ] extends [infer D, infer M, infer Q2 extends string, infer S2] ? Surface<SlottedCheck<D, M, Q2, S2>> : never;
87
147
  type GateFragCheck<Text extends string, Slotted extends boolean> = [
88
148
  Text,
89
149
  Slotted
90
- ] extends [infer T2 extends string, infer B extends boolean] ? FragCheck<T2, B> : never;
150
+ ] extends [infer T2 extends string, infer B extends boolean] ? Surface<FragCheck<T2, B>> : never;
91
151
  type BoxCallArgs<DB, TM, Q extends string> = Extract<{
92
152
  [K in Q as `${K}`]: CallArgs<DB, TM, K>;
93
153
  }[`${Q}`], readonly unknown[]>;
@@ -107,11 +167,18 @@ type BoxFragArgs<Text extends string> = Extract<{
107
167
  *
108
168
  * On an invalid statement the `query` argument's type becomes `SqlError<"...", position>`,
109
169
  * so the compile error lands on the SQL text.
170
+ *
171
+ * `Keys` is the `rowKeys` option: with `"camelCase"` the row types (and the rows) have
172
+ * camelCased keys.
110
173
  */
111
- export interface Sql<DB, TM> {
112
- <const Q extends string>(query: Q & GateCallCheck<DB, TM, Q>, ...params: BoxCallArgs<DB, TM, Q>): Query<RowOf<DB, TM, PText<Q>>, ParamsOf<DB, TM, PText<Q>>, PText<Q>>;
113
- <const Q extends string, const S extends SlotMap>(query: Q & GateSlottedCheck<DB, TM, Q, S>, slots: S & SlotsFor<Q, S>, ...params: BoxSlottedArgs<DB, TM, Q, S>): Query<RowOf<DB, TM, SplicedOr<Q, S>>, ParamsOf<DB, TM, SplicedOr<Q, S>>, SplicedOr<Q, S>>;
114
- /** Escape hatch: bypass inference and assert the row type. Accepts slots, `:name` and inline params like the main call. */
174
+ export interface Sql<DB, TM, Keys extends RowKeys = "preserve"> {
175
+ <const Q extends string>(query: GateCallCheck<DB, TM, Q> & Q, ...params: BoxCallArgs<DB, TM, Q>): Query<KeyedRow<RowOf<DB, TM, PText<Q>>, Keys>, ParamsOf<DB, TM, PText<Q>>, PText<Q>>;
176
+ <const Q extends string, const S extends SlotMap>(query: GateSlottedCheck<DB, TM, Q, S> & Q, slots: S & SlotsFor<Q, S>, ...params: BoxSlottedArgs<DB, TM, Q, S>): Query<KeyedRow<RowOf<DB, TM, SplicedOr<Q, S>>, Keys>, ParamsOf<DB, TM, SplicedOr<Q, S>>, SplicedOr<Q, S>>;
177
+ /**
178
+ * Escape hatch: bypass inference and assert the row type. Accepts slots, `:name` and inline
179
+ * params like the main call. `Row` is the row as returned, so with `rowKeys: "camelCase"` it
180
+ * has camelCase keys.
181
+ */
115
182
  as<Row>(query: string, ...params: readonly unknown[]): Query<Row, readonly unknown[]>;
116
183
  as<Row>(query: string, slots: SlotMap, ...params: readonly unknown[]): Query<Row, readonly unknown[]>;
117
184
  /**
@@ -119,23 +186,79 @@ export interface Sql<DB, TM> {
119
186
  * `$n` parameter (never text) and its type is checked against the parameter's context.
120
187
  */
121
188
  param<const T>(value: T): InlineMarker<T>;
189
+ /**
190
+ * Like `sql.param(value)`, but `undefined` is sent as `DEFAULT`:
191
+ * `` VALUES (${sql.param(email)}, ${sql.valueOrDefault(mood)}) ``. The value is checked like a
192
+ * parameter (without `undefined`); when it can be `undefined`, the statement must also be
193
+ * valid with `DEFAULT` there (a VALUES item or SET value, and not a NOT NULL column without
194
+ * a default). Inside `sql.fragment` only the value is checked.
195
+ */
196
+ valueOrDefault<const T>(value: T): DefaultMarker<T>;
197
+ /**
198
+ * Bind a JSON value inline: `` sql(`UPDATE t SET data = ${sql.json(value)}`) ``. Sent as JSON
199
+ * text by every driver (a raw JS array would become a Postgres array under node-postgres);
200
+ * only accepted where a json / jsonb value is expected, and checked against a `Json<T>`
201
+ * column's `T`. `null` / `undefined` are SQL NULL.
202
+ */
203
+ json<const T>(value: T): JsonMarker<T>;
122
204
  /**
123
205
  * A spliceable SQL piece (not validated on its own; its parameters are typed once spliced).
124
206
  * `:name` and inline parameters are resolved at creation, so a fragment can be reused; the
125
207
  * values' types are checked when the fragment is spliced.
126
208
  */
127
- fragment<const Text extends string, const A extends readonly unknown[]>(text: Text & GateFragCheck<Text, false>, ...params: A & BoxFragArgs<Text>): Fragment<PText<Text>, UnknownTuple<FragCount<Text>>, FragCarried<Text, A>>;
128
- fragment<const Text extends string, const S extends SlotMap, const A extends readonly unknown[]>(text: Text & GateFragCheck<Text, true>, slots: S & SlotsFor<Text, S>, ...params: A & BoxFragArgs<Text>): Fragment<SplicedOr<Text, S>, readonly unknown[], [...FragCarried<Text, A>, ...SpliceCarried<PText<Text>, SlotCarried<S>>]>;
129
- /** Quoted identifier fragment: `sql.id("col")` → `"col"`, `sql.id("s", "t")` → `"s"."t"`. */
130
- id<const Parts extends readonly [string, ...string[]]>(...parts: Parts): Fragment<QuotedIdent<Parts>, [], []>;
209
+ fragment<const Text extends string, const A extends readonly unknown[]>(text: GateFragCheck<Text, false> & Text, ...params: A & BoxFragArgs<Text>): Fragment<PText<Text>, UnknownTuple<FragCount<Text>>, FragCarried<Text, A>>;
210
+ fragment<const Text extends string, const S extends SlotMap, const A extends readonly unknown[]>(text: GateFragCheck<Text, true> & Text, slots: S & SlotsFor<Text, S>, ...params: A & BoxFragArgs<Text>): Fragment<SplicedOr<Text, S>, readonly unknown[], [...FragCarried<Text, A>, ...SpliceCarried<PText<Text>, SlotCarried<S>>]>;
211
+ /**
212
+ * Quoted identifier fragment: `sql.id("col")` → `"col"`, `sql.id("s", "t")` → `"s"."t"`. A union
213
+ * of literals gives a union of texts, and the statement is checked once per member.
214
+ */
215
+ id<const Parts extends readonly [string, ...string[]]>(...parts: Parts & LiteralParts<Parts>): Fragment<QuotedIdent<Parts>, [], []>;
216
+ /**
217
+ * A generic relation name (`<T extends RelationName<DB>>(t: T) => sql.id(t)`) cannot be read
218
+ * inside the generic function, so it is widened to every table and view: the statement is
219
+ * checked against each and the row type is the union of their rows.
220
+ */
221
+ id(name: RelationName<DB>): Fragment<QuotedIdent<[RelationName<DB>]>, [], []>;
222
+ /** Any other name (`string`, a generic): a dynamic fragment, for `sql.as<Row>()`. */
223
+ id(...parts: readonly [string, ...string[]]): Fragment<string, [], []>;
131
224
  /** Join fragments with a separator; a tuple input keeps the literal text, an array yields a dynamic fragment. */
132
225
  join<const Items extends readonly Slottable[], const Sep extends string = ", ">(items: Items, separator?: Sep): Fragment<JoinedText<SlotTexts<Items> extends readonly {
133
226
  readonly text: string;
134
227
  }[] ? SlotTexts<Items> : never, Sep>, readonly unknown[], JoinedCarried<Items>>;
228
+ /**
229
+ * Join a runtime array of fragments whose texts are known: `sql.list(keys.map((k) => SORT[k]))`.
230
+ * The count and order are dynamic, but every element type is a literal, so the statement is
231
+ * still checked: it is validated once with each distinct element present (see `ListRep`).
232
+ * Throws at runtime on an empty array.
233
+ */
234
+ list<const Items extends readonly Slottable[], const Sep extends string = ", ">(items: Items, separator?: Sep): Fragment<ListRep<Items[number], Sep>["text"], readonly unknown[], ListRep<Items[number], Sep>["carried"]>;
235
+ /**
236
+ * `SET` list from an object: `sql("UPDATE users SET {set} WHERE id = $1", { set: sql.set("users", input) }, id)`.
237
+ * Keys must be columns of `table` and values must fit them; `undefined` values are skipped.
238
+ * Typed with every key of the input type assigned once. Throws at runtime when no value is defined.
239
+ */
240
+ set<const T extends TableName<DB>, const P extends SetInput<DB, TM, T>>(table: T, values: NoExtraKeys<P, SetInput<DB, TM, T>>): Fragment<SetRep<P>["text"], readonly unknown[], SetRep<P>["carried"]>;
241
+ /**
242
+ * Column list and `VALUES` rows from objects: `sql("INSERT INTO users {rows} RETURNING id", { rows: sql.values("users", rows) })`.
243
+ * NOT NULL columns without a default are required; a missing or `undefined` value is `DEFAULT`.
244
+ * Typed with every key of the row types once. Throws at runtime on an empty array.
245
+ */
246
+ values<const T extends TableName<DB>, const R extends readonly InsertInput<DB, TM, T>[]>(table: T, rows: R & {
247
+ readonly [I in keyof R]: NoExtraKeys<R[I], InsertInput<DB, TM, T>>;
248
+ }): Fragment<ValuesRep<R[number]>["text"], readonly unknown[], ValuesRep<R[number]>["carried"]>;
135
249
  /** Raw, untyped SQL text. Splicing it forces the override path (`sql.as`). */
136
250
  raw(text: string): Fragment<string, [], []>;
137
251
  }
138
- /** `executor`, when given, is what the queries' `execute*` methods run on by default. */
139
- export declare function createSql<DB, TM = DefaultTypeMap>(executor?: Executor): Sql<DB, TM>;
252
+ /**
253
+ * `executor`, when given, is what the queries' `execute*` methods run on by default.
254
+ * `{ rowKeys: "camelCase" }` camelCases the top-level keys of every row, in the row types and in
255
+ * the rows `execute*` return (see `CamelCase`); values, JSON included, are not touched.
256
+ */
257
+ export declare function createSql<DB, TM = DefaultTypeMap>(executor: Executor | undefined, options: SqlOptions & {
258
+ readonly rowKeys: "camelCase";
259
+ }): Sql<DB, TM, "camelCase">;
260
+ export declare function createSql<DB, TM = DefaultTypeMap>(executor?: Executor, options?: SqlOptions & {
261
+ readonly rowKeys?: "preserve";
262
+ }): Sql<DB, TM>;
140
263
  export {};
141
264
  //# sourceMappingURL=create-sql.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-sql.d.ts","sourceRoot":"","sources":["../src/create-sql.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-sql.d.ts","sourceRoot":"","sources":["../src/create-sql.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import { makeFragment, makeQuery } from "./query.js";
2
2
  import { joinFragments, maxParam, quoteIdent, rewriteNamed, splice } from "./runtime/splice.js";
3
- import { hasInline, param, resolveInline } from "./runtime/inline.js";
3
+ import { hasInline, param, resolveInline, takeValue, valueOrDefault } from "./runtime/inline.js";
4
+ import { json } from "./runtime/json.js";
5
+ import { buildSet, buildValues } from "./runtime/write.js";
4
6
  function isSlotMap(v) {
5
7
  if (v === null || typeof v !== "object" || Array.isArray(v))
6
8
  return false;
@@ -24,7 +26,7 @@ function build(text, rest) {
24
26
  outer = rest.slice(1);
25
27
  }
26
28
  let positional = text;
27
- let values = [...outer];
29
+ let values = outer.map(takeValue);
28
30
  if (NAMED_RE.test(text)) {
29
31
  const rn = rewriteNamed(text);
30
32
  if (rn.names.length > 0) {
@@ -36,7 +38,7 @@ function build(text, rest) {
36
38
  values = rn.names.map((n) => {
37
39
  if (!(n in record))
38
40
  throw new Error(`typesql: missing named parameter :${n}`);
39
- return record[n];
41
+ return takeValue(record[n]);
40
42
  });
41
43
  positional = rn.text;
42
44
  }
@@ -48,18 +50,20 @@ function build(text, rest) {
48
50
  }
49
51
  return slots ? splice(positional, slots, values) : { text: positional, values };
50
52
  }
51
- /** `executor`, when given, is what the queries' `execute*` methods run on by default. */
52
- export function createSql(executor) {
53
+ export function createSql(executor, options) {
54
+ const rowKeys = options?.rowKeys ?? "preserve";
53
55
  const call = (query, ...rest) => {
54
56
  const { text, values } = build(query, rest);
55
- return makeQuery(text, values, executor);
57
+ return makeQuery(text, values, executor, rowKeys);
56
58
  };
57
59
  const api = Object.assign(call, {
58
60
  as: (query, ...rest) => {
59
61
  const { text, values } = build(query, rest);
60
- return makeQuery(text, values, executor);
62
+ return makeQuery(text, values, executor, rowKeys);
61
63
  },
62
64
  param,
65
+ valueOrDefault,
66
+ json,
63
67
  fragment: (text, ...rest) => {
64
68
  const r = build(text, rest);
65
69
  return makeFragment(r.text, r.values);
@@ -69,6 +73,20 @@ export function createSql(executor) {
69
73
  const r = joinFragments(items, separator);
70
74
  return makeFragment(r.text, r.values);
71
75
  },
76
+ list: (items, separator = ", ") => {
77
+ if (items.length === 0)
78
+ throw new Error("typesql: sql.list() needs at least one item; put a fixed element first (`[base, ...rest]`) or skip the clause");
79
+ const r = joinFragments(items, separator);
80
+ return makeFragment(r.text, r.values);
81
+ },
82
+ set: (_table, values) => {
83
+ const r = buildSet(values);
84
+ return makeFragment(r.text, r.values);
85
+ },
86
+ values: (_table, rows) => {
87
+ const r = buildValues(rows);
88
+ return makeFragment(r.text, r.values);
89
+ },
72
90
  raw: (text) => {
73
91
  const r = build(text, []);
74
92
  return makeFragment(r.text, r.values);
@@ -1 +1 @@
1
- {"version":3,"file":"create-sql.js","sourceRoot":"","sources":["../src/create-sql.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-sql.js","sourceRoot":"","sources":["../src/create-sql.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAyE,MAAM,YAAY,CAAC;AAE5H,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAmB,MAAM,qBAAqB,CAAC;AACjH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACjG,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAoU3D,SAAS,SAAS,CAAC,CAAU;IAC3B,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1E,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAA4B,CAAC,EAAE,CAAC;QAC5D,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAQ,CAAgB,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAE,CAAgB,CAAC,MAAM,CAAC;YAAE,OAAO,KAAK,CAAC;IAClJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,OAAO,GAAG,4BAA4B,CAAC;AAC7C,MAAM,QAAQ,GAAG,oBAAoB,CAAC;AAEtC;;;GAGG;AACH,SAAS,KAAK,CAAC,IAAY,EAAE,IAAwB;IACnD,IAAI,KAAK,GAAmB,IAAI,CAAC;IACjC,IAAI,KAAK,GAAuB,IAAI,CAAC;IACrC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,UAAU,GAAG,IAAI,CAAC;IACtB,IAAI,MAAM,GAAc,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC7C,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,MAAM,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAClE,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;YAClG,CAAC;YACD,MAAM,MAAM,GAAG,GAA8B,CAAC;YAC9C,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC1B,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,EAAE,CAAC,CAAC;gBAC9E,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9B,CAAC,CAAC,CAAC;YACH,UAAU,GAAG,EAAE,CAAC,IAAI,CAAC;QACvB,CAAC;IACH,CAAC;IACD,IAAI,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QACnF,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC;QACpB,MAAM,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AAClF,CAAC;AASD,MAAM,UAAU,SAAS,CAA0B,QAAmB,EAAE,OAAoB;IAC1F,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,UAAU,CAAC;IAC/C,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,GAAG,IAAwB,EAAE,EAAE;QAC1D,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC5C,OAAO,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC,CAAC;IACF,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;QAC9B,EAAE,EAAE,CAAC,KAAa,EAAE,GAAG,IAAwB,EAAE,EAAE;YACjD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC5C,OAAO,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QACpD,CAAC;QACD,KAAK;QACL,cAAc;QACd,IAAI;QACJ,QAAQ,EAAE,CAAC,IAAY,EAAE,GAAG,IAAwB,EAAE,EAAE;YACtD,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC5B,OAAO,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC;QACD,EAAE,EAAE,CAAC,GAAG,KAAwB,EAAE,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC;QAC3E,IAAI,EAAE,CAAC,KAA4B,EAAE,SAAS,GAAW,IAAI,EAAE,EAAE;YAC/D,MAAM,CAAC,GAAG,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAC1C,OAAO,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,EAAE,CAAC,KAA4B,EAAE,SAAS,GAAW,IAAI,EAAE,EAAE;YAC/D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,+GAA+G,CAAC,CAAC;YACzJ,MAAM,CAAC,GAAG,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAC1C,OAAO,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC;QACD,GAAG,EAAE,CAAC,MAAc,EAAE,MAAyC,EAAE,EAAE;YACjE,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC3B,OAAO,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,EAAE,CAAC,MAAc,EAAE,IAAkD,EAAE,EAAE;YAC7E,MAAM,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;YAC5B,OAAO,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC;QACD,GAAG,EAAE,CAAC,IAAY,EAAE,EAAE;YACpB,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC1B,OAAO,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC;KACF,CAAC,CAAC;IACH,OAAO,GAAsC,CAAC;AAChD,CAAC"}
@@ -563,11 +563,18 @@ export type RenameSchema = {
563
563
  readonly from: string;
564
564
  readonly to: string;
565
565
  };
566
- /** Statements with no schema effect: CREATE INDEX, TRUNCATE, GRANT, COMMENT, CREATE FUNCTION, ... */
566
+ /** `CREATE FUNCTION name(…) RETURNS [SETOF] ret`: registered in `$functions` (arguments unchecked). */
567
+ export type CreateFunction = {
568
+ readonly t: "create_function";
569
+ readonly name: TableRef;
570
+ readonly ret: string;
571
+ readonly srf: boolean;
572
+ };
573
+ /** Statements with no schema effect: CREATE INDEX, TRUNCATE, GRANT, COMMENT, CREATE PROCEDURE, ... */
567
574
  export type NoopStmt = {
568
575
  readonly t: "noop";
569
576
  readonly what: string;
570
577
  };
571
- export type DdlStmt = CreateTable | CreateTableAs | AlterTable | DropTable | CreateView | DropView | CreateEnum | AlterEnum | DropType | CreateSchema | DropSchema | RenameSchema | NoopStmt;
578
+ export type DdlStmt = CreateTable | CreateTableAs | AlterTable | DropTable | CreateView | DropView | CreateEnum | AlterEnum | DropType | CreateSchema | DropSchema | RenameSchema | CreateFunction | NoopStmt;
572
579
  export type Stmt = SelectStmt | InsertStmt | UpdateStmt | DeleteStmt | DdlStmt;
573
580
  //# sourceMappingURL=ast.d.ts.map