@typesql/core 0.0.3 → 0.1.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.
- package/CHANGELOG.md +40 -0
- package/README.md +22 -5
- package/dist/create-sql.d.ts +150 -27
- package/dist/create-sql.d.ts.map +1 -1
- package/dist/create-sql.js +25 -7
- package/dist/create-sql.js.map +1 -1
- package/dist/engine/ast.d.ts +9 -2
- package/dist/engine/ast.d.ts.map +1 -1
- package/dist/engine/binder/clauses.d.ts +2 -1
- package/dist/engine/binder/clauses.d.ts.map +1 -1
- package/dist/engine/binder/from.d.ts +1 -1
- package/dist/engine/binder/from.d.ts.map +1 -1
- package/dist/engine/binder/resolve.d.ts +18 -6
- package/dist/engine/binder/resolve.d.ts.map +1 -1
- package/dist/engine/ddl/apply.d.ts +28 -10
- package/dist/engine/ddl/apply.d.ts.map +1 -1
- package/dist/engine/errors.d.ts +1 -1
- package/dist/engine/infer.d.ts +54 -15
- package/dist/engine/infer.d.ts.map +1 -1
- package/dist/engine/inline.d.ts +54 -3
- package/dist/engine/inline.d.ts.map +1 -1
- package/dist/engine/json.d.ts +219 -0
- package/dist/engine/json.d.ts.map +1 -0
- package/dist/engine/json.js +2 -0
- package/dist/engine/json.js.map +1 -0
- package/dist/engine/lexer/lex.d.ts +11 -2
- package/dist/engine/lexer/lex.d.ts.map +1 -1
- package/dist/engine/parser/ddl.d.ts +14 -1
- package/dist/engine/parser/ddl.d.ts.map +1 -1
- package/dist/engine/parser/expr.d.ts +18 -3
- package/dist/engine/parser/expr.d.ts.map +1 -1
- package/dist/engine/project/dml.d.ts +21 -6
- package/dist/engine/project/dml.d.ts.map +1 -1
- package/dist/engine/project/select.d.ts +9 -1
- package/dist/engine/project/select.d.ts.map +1 -1
- package/dist/engine/shape.d.ts +50 -0
- package/dist/engine/shape.d.ts.map +1 -0
- package/dist/engine/shape.js +2 -0
- package/dist/engine/shape.js.map +1 -0
- package/dist/engine/splice.d.ts +9 -0
- package/dist/engine/splice.d.ts.map +1 -1
- package/dist/engine/suggest.d.ts +15 -5
- package/dist/engine/suggest.d.ts.map +1 -1
- package/dist/engine/typer/catalog.d.ts +112 -28
- package/dist/engine/typer/catalog.d.ts.map +1 -1
- package/dist/engine/typer/operators.d.ts +6 -3
- package/dist/engine/typer/operators.d.ts.map +1 -1
- package/dist/engine/typer/params.d.ts +73 -20
- package/dist/engine/typer/params.d.ts.map +1 -1
- package/dist/engine/typer/pg-functions.d.ts +683 -0
- package/dist/engine/typer/pg-functions.d.ts.map +1 -0
- package/dist/engine/typer/pg-functions.js +2 -0
- package/dist/engine/typer/pg-functions.js.map +1 -0
- package/dist/engine/typer/typeof.d.ts +28 -13
- package/dist/engine/typer/typeof.d.ts.map +1 -1
- package/dist/engine/write.d.ts +100 -0
- package/dist/engine/write.d.ts.map +1 -0
- package/dist/engine/write.js +2 -0
- package/dist/engine/write.js.map +1 -0
- package/dist/index.d.ts +11 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/migrations.d.ts +2 -2
- package/dist/migrations.d.ts.map +1 -1
- package/dist/query.d.ts +39 -5
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +45 -6
- package/dist/query.js.map +1 -1
- package/dist/row-keys.d.ts +36 -0
- package/dist/row-keys.d.ts.map +1 -0
- package/dist/row-keys.js +38 -0
- package/dist/row-keys.js.map +1 -0
- package/dist/runtime/inline.d.ts +12 -2
- package/dist/runtime/inline.d.ts.map +1 -1
- package/dist/runtime/inline.js +38 -2
- package/dist/runtime/inline.js.map +1 -1
- package/dist/runtime/json.d.ts +22 -0
- package/dist/runtime/json.d.ts.map +1 -0
- package/dist/runtime/json.js +32 -0
- package/dist/runtime/json.js.map +1 -0
- package/dist/runtime/write.d.ts +15 -0
- package/dist/runtime/write.d.ts.map +1 -0
- package/dist/runtime/write.js +70 -0
- package/dist/runtime/write.js.map +1 -0
- package/dist/schema/column.d.ts +18 -2
- package/dist/schema/column.d.ts.map +1 -1
- package/dist/schema/index.d.ts +2 -1
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/pg-catalog.d.ts +968 -0
- package/dist/schema/pg-catalog.d.ts.map +1 -0
- package/dist/schema/pg-catalog.js +2 -0
- package/dist/schema/pg-catalog.js.map +1 -0
- package/dist/transaction.d.ts +43 -0
- package/dist/transaction.d.ts.map +1 -0
- package/dist/transaction.js +45 -0
- package/dist/transaction.js.map +1 -0
- package/dist/type-map/index.d.ts +54 -2
- package/dist/type-map/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/create-sql.ts +191 -37
- package/src/engine/ast.ts +4 -2
- package/src/engine/binder/clauses.ts +3 -1
- package/src/engine/binder/from.ts +1 -1
- package/src/engine/binder/resolve.ts +27 -6
- package/src/engine/ddl/apply.ts +23 -8
- package/src/engine/errors.ts +1 -1
- package/src/engine/infer.ts +50 -14
- package/src/engine/inline.ts +67 -5
- package/src/engine/json.ts +232 -0
- package/src/engine/lexer/lex.ts +29 -16
- package/src/engine/parser/ddl.ts +28 -1
- package/src/engine/parser/expr.ts +9 -2
- package/src/engine/project/dml.ts +20 -5
- package/src/engine/project/select.ts +13 -1
- package/src/engine/shape.ts +51 -0
- package/src/engine/splice.ts +9 -0
- package/src/engine/suggest.ts +17 -4
- package/src/engine/typer/catalog.ts +109 -32
- package/src/engine/typer/operators.ts +10 -7
- package/src/engine/typer/params.ts +51 -25
- package/src/engine/typer/pg-functions.ts +495 -0
- package/src/engine/typer/typeof.ts +45 -14
- package/src/engine/write.ts +89 -0
- package/src/index.ts +12 -8
- package/src/migrations.ts +2 -2
- package/src/query.ts +74 -8
- package/src/row-keys.ts +69 -0
- package/src/runtime/inline.ts +36 -3
- package/src/runtime/json.ts +31 -0
- package/src/runtime/write.ts +65 -0
- package/src/schema/column.ts +17 -2
- package/src/schema/index.ts +2 -1
- package/src/schema/pg-catalog.ts +971 -0
- package/src/transaction.ts +70 -0
- package/src/type-map/index.ts +65 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,45 @@
|
|
|
1
1
|
# @typesql/core
|
|
2
2
|
|
|
3
|
+
## 0.1.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- Adapters build their `sql` with `createTransactionalSql(client, driver)`, typed `TransactionalSql` (core's `Sql` plus `transaction(fn)`), and `runTransaction` sends BEGIN/COMMIT/ROLLBACK or savepoints; an `Executor` may have a `count(text, values)` method, which `executeCount` runs instead.
|
|
8
|
+
|
|
9
|
+
## 0.0.4
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- 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".
|
|
14
|
+
|
|
15
|
+
- 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>()`.
|
|
16
|
+
|
|
17
|
+
- 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.
|
|
18
|
+
|
|
19
|
+
- 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.
|
|
20
|
+
|
|
21
|
+
- 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.
|
|
22
|
+
|
|
23
|
+
- `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.
|
|
24
|
+
|
|
25
|
+
- 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.
|
|
26
|
+
|
|
27
|
+
- `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.
|
|
28
|
+
|
|
29
|
+
- Type checking is about 7% faster: the lexer handles punctuation, `=`, `::` and `.` without trying every operator, cutting its type instantiations by about 20%.
|
|
30
|
+
|
|
31
|
+
- 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.
|
|
32
|
+
|
|
33
|
+
- 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.
|
|
34
|
+
|
|
35
|
+
- 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`.
|
|
36
|
+
|
|
37
|
+
- 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.
|
|
38
|
+
|
|
39
|
+
- 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.
|
|
40
|
+
|
|
41
|
+
- 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`.
|
|
42
|
+
|
|
3
43
|
## 0.0.3
|
|
4
44
|
|
|
5
45
|
### 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)}
|
|
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,30 @@ 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 }`. An
|
|
74
|
+
adapter's `sql` also has `sql.transaction(fn)`, which runs `fn` with a `sql` bound to one
|
|
75
|
+
transaction (`TransactionalSql`).
|
|
76
|
+
- **camelCase rows**: `createSql(executor, { rowKeys: "camelCase" })` renames the rows'
|
|
77
|
+
top-level keys (`created_at` → `createdAt`, as Kysely's `CamelCasePlugin` does) in the types
|
|
78
|
+
and at runtime, leaving JSON values alone.
|
|
66
79
|
- **Escape hatch**: `sql.as<Row>(…)` for SQL the engine cannot type.
|
|
67
80
|
|
|
68
81
|
## Schema
|
|
69
82
|
|
|
70
83
|
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
|
|
84
|
+
(`DefaultTypeMap` matches node-postgres: `int8` and `numeric` rows are `string`; their parameters
|
|
85
|
+
also take numbers and bigints, and date parameters take `Date | string`):
|
|
72
86
|
|
|
73
87
|
| Helper | Meaning |
|
|
74
88
|
|---|---|
|
|
@@ -77,9 +91,12 @@ Columns are declared with Postgres type names; a type map turns them into TypeSc
|
|
|
77
91
|
| `Generated<"int4">` | has a default: optional in `INSERT` |
|
|
78
92
|
| `NullableGenerated<"text">` | both |
|
|
79
93
|
| `Enum<"mood">` | values in `DB["$types"]["mood"]` |
|
|
94
|
+
| `Json<T>` | `jsonb` holding `T`: rows read `T`, `->` indexes into it, `${sql.json(v)}` writes it |
|
|
80
95
|
| `View<{ … }>` | read-only relation |
|
|
81
96
|
|
|
82
|
-
Other Postgres schemas nest (`DB["auth"]["sessions"]` is `auth.sessions`).
|
|
97
|
+
Other Postgres schemas nest (`DB["auth"]["sessions"]` is `auth.sessions`). For
|
|
98
|
+
`pg_stat_activity`, `pg_tables`, `information_schema.columns` and other system catalogs, add the
|
|
99
|
+
opt-in slice: `createSql<DB & PgCatalog>()`.
|
|
83
100
|
|
|
84
101
|
## Requirements
|
|
85
102
|
|
package/dist/create-sql.d.ts
CHANGED
|
@@ -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,
|
|
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 [] ?
|
|
51
|
-
/** `
|
|
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
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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<
|
|
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 :
|
|
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]:
|
|
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 ?
|
|
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
|
-
|
|
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
|
|
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
|
|
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:
|
|
113
|
-
<const Q extends string, const S extends SlotMap>(query:
|
|
114
|
-
/**
|
|
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 &
|
|
128
|
-
fragment<const Text extends string, const S extends SlotMap, const A extends readonly unknown[]>(text: Text &
|
|
129
|
-
/**
|
|
130
|
-
|
|
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
|
-
/**
|
|
139
|
-
|
|
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
|
package/dist/create-sql.d.ts.map
CHANGED
|
@@ -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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"}
|
package/dist/create-sql.js
CHANGED
|
@@ -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 =
|
|
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
|
-
|
|
52
|
-
|
|
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);
|
package/dist/create-sql.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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;
|
|
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"}
|
package/dist/engine/ast.d.ts
CHANGED
|
@@ -563,11 +563,18 @@ export type RenameSchema = {
|
|
|
563
563
|
readonly from: string;
|
|
564
564
|
readonly to: string;
|
|
565
565
|
};
|
|
566
|
-
/**
|
|
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
|