@typed-sql/core 1.0.0-rc.0 → 1.0.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 CHANGED
@@ -1,5 +1,55 @@
1
1
  # @typed-sql/core
2
2
 
3
+ ## 1.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - 7ca256b: Release the first public typed-sql beta: exact TypeScript 7 row inference from static PostgreSQL and
8
+ MySQL, versioned schema introspection, application-owned drivers, config-driven grammar plugins,
9
+ CLI verification, editor language-server integration, versioned diagnostics, bounded parsing, and
10
+ real-database plus packed-tarball verification.
11
+
12
+ ### Minor Changes
13
+
14
+ - eb16de7: Add grammar-neutral stream and ordered-result type contracts, and add lazy prepared-query factories to the PostgreSQL and MySQL runtime adapters. Prepared factories retain exact query types, validate stable SQL shapes, and remain available inside nested transactions.
15
+ - b6389e4: Cache immutable SQL rendering skeletons for prepared query factories so repeated calls only bind changing values while still rejecting structural drift before driver dispatch.
16
+ - eb16de7: Add a grammar-neutral validated query-batch type and ordered, exactly typed query batches to the
17
+ PostgreSQL and MySQL runtime adapters. Non-empty root batches execute sequentially on one leased
18
+ connection, transaction batches reuse their transaction connection, and empty batches avoid
19
+ connection acquisition. Batch execution preserves prepared metadata and adapter codecs, stops at
20
+ the first failure, and rejects transaction work that escapes its callback.
21
+
22
+ ### Patch Changes
23
+
24
+ - b6389e4: Reuse immutable SQL text segments and whole interpolation-free fragments at template callsites, and avoid spread allocations while composing predicates, joins, and appended queries.
25
+ - eb16de7: Allow adapters to retain enriched capabilities in transaction callbacks and nested transactions
26
+ through a self-typed core database contract. Transaction cleanup now also preserves the original
27
+ operation error when rollback or connection-release cleanup fails.
28
+ - 1563a7a: Declare and enforce the 1.0 package stability boundary. Core SQL, compiler, schema, config, AST,
29
+ PostgreSQL, MySQL, and CLI packages form the stable train; the TypeScript preview bridge and
30
+ language server remain explicitly experimental. Freeze public entrypoints and query type contracts,
31
+ and remove internal compiler/type helpers from stable package-root exports before 1.0.
32
+ - 9dd6bc4: Finalize dialect contract version 3 with explicit identifier quoting and grammar-owned capability
33
+ declarations. Accept third-party snapshot dialects, validate grammar versions, and document the
34
+ public grammar-authoring and conformance workflow.
35
+ - 16e2475: Prove npm trusted publishing and provenance after the initial registry bootstrap.
36
+ - 69c7d87: Report `TSQ004` for bare nested templates used as conditional SQL structure and offer an alias-aware
37
+ language-server quick fix that prefixes the template with `sql.fragment`. Ordinary and nested
38
+ values remain parameterized across the edit.
39
+ - 3e2c75c: Infer ordered query parameter tuples and let TypeScript reject interpolation values that do not
40
+ match their SQL context. Dialect contract version 2 adds explicit parameter analysis; unresolved
41
+ positions remain `unknown`. Add typed nullable predicate composition through `sql.fragment()`,
42
+ `sql.and()`, `sql.or()`, `sql.where()`, and `sql.append()` while preserving row and parameter tuples.
43
+ Direct append fragments are grammar-analyzed cumulatively against their static base, so TypeScript
44
+ rejects fragment interpolation values that disagree with the referenced database columns.
45
+ Add `sql.empty` and SQL-template-native conditional structural fragments. The compiler analyzes
46
+ complete branch variants, preserves literal boolean-dependent result rows, and type-checks nested
47
+ fragment parameters without adding a query-builder DSL. Bound independent structural expansion at
48
+ 64 variants by default, correlate repeated conditions, merge diagnostics and fragment expectations
49
+ across variants, and fail closed on incompatible contexts. Share indexed catalog and conservative
50
+ parameter-resolution primitives across grammars, harden cooked-template scanning, and add runtime,
51
+ resolver, scanner, and structural performance gates.
52
+
3
53
  ## 1.0.0-rc.0
4
54
 
5
55
  ### Patch Changes
package/README.md CHANGED
@@ -1,157 +1,38 @@
1
1
  # @typed-sql/core
2
2
 
3
- The driver- and dialect-neutral foundation of [typed-sql](https://github.com/Lojhan/typed-sql).
4
- It owns the `sql` tagged template, `Query<Row, Parameters>`, safe query fragments, rendering contract, database
5
- adapter contract, diagnostics, and the interface implemented by every SQL grammar.
6
-
7
- Most applications install it alongside one dialect:
3
+ The stable, driver- and grammar-neutral foundation of
4
+ [typed-sql](https://github.com/Lojhan/typed-sql). It defines queries, fragments, rendering,
5
+ database adapters, diagnostics, schema contracts, and the interface implemented by every SQL
6
+ grammar.
8
7
 
9
8
  ```sh
10
- pnpm add @typed-sql/core@next @typed-sql/postgres@next pg
9
+ pnpm add @typed-sql/core @typed-sql/postgres pg
11
10
  ```
12
11
 
13
- Application queries import `sql` from the dialect root so tooling can associate the query with the
14
- correct grammar:
12
+ Application queries import `sql` from the selected grammar so the compiler can associate each
13
+ template with its dialect:
15
14
 
16
15
  ```ts
17
16
  import { sql } from "@typed-sql/postgres";
17
+ import type { QueryParameters, QueryRow } from "@typed-sql/core";
18
18
 
19
19
  const query = sql`
20
20
  SELECT account.id, account.email
21
21
  FROM accounts AS account
22
22
  WHERE account.id = ${42n}
23
23
  `;
24
- ```
25
-
26
- The compiler supplies the ordered parameter tuple from SQL context. For example, comparing an
27
- interpolation with a `bigint` column produces `Query<Row, readonly [bigint]>`, so passing a `string`
28
- is a normal TypeScript error. Positions that cannot be proven remain `unknown`.
29
24
 
30
- For optional runtime filters, infer a static base query and compose predicates without concatenating
31
- values into SQL:
32
-
33
- ```ts
34
- import { sql } from "@typed-sql/postgres";
35
- import type { QueryRow } from "@typed-sql/core";
36
-
37
- const base = sql`SELECT account.id, account.status FROM accounts AS account`;
38
- type Account = QueryRow<typeof base>;
39
-
40
- function filtered(status: Account["status"] | null, minimumId: Account["id"] | null) {
41
- const predicates = [
42
- status == null ? undefined : sql.fragment`account.status = ${status}`,
43
- minimumId == null ? undefined : sql.fragment`account.id >= ${minimumId}`,
44
- ] as const;
45
- return sql.where(base, sql.and(predicates));
46
- }
25
+ type Account = QueryRow<typeof query>;
26
+ type Parameters = QueryParameters<typeof query>;
47
27
  ```
48
28
 
49
- `sql.and()` and `sql.or()` accept nullable fragment tuples, preserve parameter order, parenthesize
50
- each predicate, and render `TRUE` when every predicate is absent. `sql.where()` preserves the base
51
- row and concatenates its parameter tuple with the fragment tuple. This is a safe parameterization
52
- and type-composition boundary; arbitrary dynamic SQL strings are intentionally not analyzed.
53
-
54
- `sql.append()` provides the type-safe equivalent of conditionally appending clauses:
55
-
56
- ```ts
57
- function filtered2(filters: { status?: Account["status"] | null; minimumId?: Account["id"] | null }) {
58
- const query = sql`SELECT account.id, account.status FROM accounts AS account`;
59
- return sql.append(
60
- query,
61
- sql.fragment` WHERE 1 = 1`,
62
- filters.status == null ? undefined : sql.fragment` AND account.status = ${filters.status}`,
63
- filters.minimumId == null ? undefined : sql.fragment` AND account.id >= ${filters.minimumId}`,
64
- );
65
- }
66
- ```
67
-
68
- JavaScript does not support operator overloading, so `query += fragment` would stringify the values
69
- and erase their type and parameter segments. `sql.append()` skips `undefined`, `null`, and `false`,
70
- then concatenates only validated fragments. Variadic arguments retain exact parameter order;
71
- mutable fragment arrays can be spread and retain their allowed parameter union, but have a
72
- variable-length parameter array.
73
-
74
- When direct variadic fragments are visible to the typed-sql compiler, it analyzes them cumulatively
75
- with the static base. The grammar therefore supplies each interpolation's expected column type;
76
- the core runtime alone only owns immutable composition and parameterization.
77
-
78
- `sql.empty` enables SQL-template-native conditional structure:
79
-
80
- ```ts
81
- const query = sql`
82
- SELECT account.id, account.email
83
- ${select.status ? sql.fragment`, account.status` : sql.empty}
84
- FROM accounts AS account
85
- `;
86
- ```
87
-
88
- The runtime only flattens fragment segments and values. The compiler analyzes every finite branch as
89
- a complete statement and supplies the branch-dependent row type; no clause-builder abstraction is
90
- introduced. Structural compilation defaults to at most 64 correlated variants and fails with
91
- `TSQ003` before invoking a grammar if independent conditions exceed that bound.
92
-
93
- Structural branches must use `sql.fragment`; an untagged nested template is a JavaScript string and
94
- therefore a parameter value. The compiler reports `TSQ004` when such a template is paired with
95
- `sql.empty` or another trusted structural branch. The explicit marker is an injection boundary:
96
- interpolated values inside `sql.fragment` remain parameters rather than becoming SQL text.
97
-
98
- `sql.join()` accepts only `SqlFragment` values. Its optional separator is also a trusted fragment,
99
- so use `sql.raw(" UNION ALL ")` when a non-comma separator is intentional; an arbitrary runtime
100
- string is never promoted to SQL implicitly.
101
-
102
- `@typed-sql/core` is directly useful to grammar and adapter authors:
103
-
104
- ```ts
105
- import {
106
- DIALECT_CONTRACT_VERSION,
107
- assertDialectPlugin,
108
- createDatabase,
109
- defineConfig,
110
- closestName,
111
- ParameterCollector,
112
- renderQuery,
113
- parameterTypeLiteral,
114
- ResolverSchemaIndex,
115
- rowTypeLiteral,
116
- sql,
117
- unionTypeLiterals,
118
- type DialectPlugin,
119
- type DialectCapabilities,
120
- type Query,
121
- type QueryParameters,
122
- type QueryRow,
123
- type SqlFragment,
124
- type SchemaSnapshot,
125
- } from "@typed-sql/core";
126
- ```
127
-
128
- `ResolverSchemaIndex`, `ParameterCollector`, `unionTypeLiterals`, and `closestName` are reusable,
129
- dialect-neutral resolver primitives. Future PostgreSQL, MySQL, MSSQL, SQLite, and third-party
130
- grammars can share indexed catalog lookup and conservative parameter merging while keeping SQL
131
- semantics, built-ins, quoting, type policy, and unsupported syntax inside their own package.
132
-
133
- The package has no database, parser, grammar, driver, TypeScript compiler, or editor dependency.
134
- See the [architecture contract](https://github.com/Lojhan/typed-sql/blob/main/docs/ARCHITECTURE.md)
135
- and [grammar authoring guide](https://github.com/Lojhan/typed-sql/blob/main/docs/GRAMMAR_AUTHORING.md)
136
- and [root documentation](https://github.com/Lojhan/typed-sql#readme).
137
-
138
- ## Diagnostics
139
-
140
- Diagnostic meanings become stable at 1.0. Consumers should key automation on `code`, not English
141
- message text. The machine-readable registry is exported as `diagnosticRegistry`.
29
+ Grammar and adapter authors can use `DialectPlugin`, `DIALECT_CONTRACT_VERSION`,
30
+ `assertDialectPlugin`, `createDatabase`, `renderQuery`, the prepared-query skeleton helpers, and
31
+ the neutral resolver primitives from the package root. The package has no parser, grammar,
32
+ database driver, TypeScript compiler, or editor dependency.
142
33
 
143
- | Range | Meaning |
144
- | --- | --- |
145
- | `TSQ001` | SQL syntax error |
146
- | `TSQ002` | Parser resource limit exceeded |
147
- | `TSQ003` | Conditional SQL exceeded the configured structural variant bound |
148
- | `TSQ004` | Structural SQL requires an explicitly trusted fragment |
149
- | `TSQ007` | Dialect/snapshot contract mismatch |
150
- | `TSQ100`–`TSQ108` | Catalog lookup, ambiguity, output naming, and cast errors |
151
- | `TSQ202`–`TSQ204` | Unknown/ambiguous functions and unsafe operator inference |
152
- | `TSQ205` | A shared fragment has incompatible parameter expectations across structural branches |
153
- | `TSQ210`–`TSQ217` | CTE, DML arity, join, and subquery safety errors |
154
- | `TSQ301` | Schema or type-policy drift |
155
- | `TSQ401` | Deliberately unsupported dialect surface |
34
+ Read the [query API](https://github.com/Lojhan/typed-sql/blob/main/docs/reference/api.md),
35
+ [architecture](https://github.com/Lojhan/typed-sql/blob/main/docs/concepts/architecture.md), and
36
+ [custom grammar guide](https://github.com/Lojhan/typed-sql/blob/main/docs/extending/custom-grammars.md).
156
37
 
157
38
  MIT © typed-sql contributors
@@ -0,0 +1,30 @@
1
+ import type { Query } from "./query.js";
2
+ /** The buffered rows produced by executing one typed query. */
3
+ export type QueryResult<Value> = Value extends Query<infer Row, infer _Params> ? readonly Row[] : never;
4
+ /**
5
+ * Maps an ordered query tuple or array to its ordered buffered results.
6
+ *
7
+ * A tuple remains a tuple, while a homogeneous query array remains an array.
8
+ */
9
+ export type QueryResults<Queries extends readonly unknown[]> = {
10
+ readonly [Index in keyof Queries]: QueryResult<Queries[Index]>;
11
+ };
12
+ /** Validates an ordered tuple or array while preserving every query's exact type. */
13
+ export type QueryBatch<Queries extends readonly unknown[]> = Queries & {
14
+ readonly [Index in keyof Queries]: Queries[Index] extends Query<infer Row, infer Params> ? Query<Row, Params> : never;
15
+ };
16
+ /** Common, grammar-neutral stream configuration. */
17
+ export interface StreamOptions {
18
+ /**
19
+ * Preferred number of rows fetched or buffered at a time.
20
+ *
21
+ * Adapters must reject values that are not positive safe integers. This is a row count, not a
22
+ * byte limit or a guarantee of server-side cursor paging.
23
+ */
24
+ readonly batchSize?: number;
25
+ }
26
+ /** A lazy, explicitly closeable stream of typed query rows. */
27
+ export interface QueryStream<Row> extends AsyncIterableIterator<Row>, AsyncDisposable {
28
+ close(): Promise<void>;
29
+ }
30
+ //# sourceMappingURL=execution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../../../src/execution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,+DAA+D;AAC/D,MAAM,MAAM,WAAW,CAAC,KAAK,IAAI,KAAK,SAAS,KAAK,CAAC,MAAM,GAAG,EAAE,MAAM,OAAO,CAAC,GAAG,SAAS,GAAG,EAAE,GAAG,KAAK,CAAC;AAExG;;;;GAIG;AACH,MAAM,MAAM,YAAY,CAAC,OAAO,SAAS,SAAS,OAAO,EAAE,IAAI;IAC7D,QAAQ,EAAE,KAAK,IAAI,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;CAC/D,CAAC;AAEF,qFAAqF;AACrF,MAAM,MAAM,UAAU,CAAC,OAAO,SAAS,SAAS,OAAO,EAAE,IAAI,OAAO,GAAG;IACrE,QAAQ,EAAE,KAAK,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,KAAK,CAAC,MAAM,GAAG,EAAE,MAAM,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,KAAK;CACtH,CAAC;AAEF,oDAAoD;AACpD,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,+DAA+D;AAC/D,MAAM,WAAW,WAAW,CAAC,GAAG,CAAE,SAAQ,qBAAqB,CAAC,GAAG,CAAC,EAAE,eAAe;IACnF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=execution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution.js","sourceRoot":"","sources":["../../../../src/execution.ts"],"names":[],"mappings":""}
@@ -1,7 +1,8 @@
1
1
  export type { TypedSqlDiagnosticCode } from "./diagnostics.js";
2
2
  export { diagnosticRegistry, isTypedSqlDiagnosticCode } from "./diagnostics.js";
3
- export type { Database, OptionalSqlFragment, Query, QueryExecutor, QueryParameters, QueryRow, RenderedQuery, SqlFragment, SqlRenderer, SqlSegment, SqlTag, TransactionRunner, } from "./query.js";
4
- export { createDatabase, renderQuery, sql } from "./query.js";
3
+ export type { QueryBatch, QueryResult, QueryResults, QueryStream, StreamOptions } from "./execution.js";
4
+ export type { Database, OptionalSqlFragment, Query, QueryExecutor, QueryParameters, QueryRenderSkeleton, QueryRow, RenderedQuery, SqlFragment, SqlRenderer, SqlSegment, SqlTag, TransactionDatabase, TransactionRunner, } from "./query.js";
5
+ export { bindQueryRenderSkeleton, compileQueryRenderSkeleton, createDatabase, renderQuery, sql, } from "./query.js";
5
6
  export type { ResolverType } from "./resolver.js";
6
7
  export { closestName, ParameterCollector, ResolverSchemaIndex, unionTypeLiterals } from "./resolver.js";
7
8
  export type { ColumnSnapshot, DialectAnalysis, DialectCapabilities, DialectPlugin, DomainSnapshot, FunctionSnapshot, GeneratedSchemaMetadata, GeneratedSchemaSnapshot, ResolvedColumn, ResolvedParameter, SchemaProvider, SchemaSnapshot, SourceRange, SqlDiagnostic, SqlDiagnosticFix, TableSnapshot, TypedSqlConfig, } from "./types.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAChF,YAAY,EACV,QAAQ,EACR,mBAAmB,EACnB,KAAK,EACL,aAAa,EACb,eAAe,EACf,QAAQ,EACR,aAAa,EACb,WAAW,EACX,WAAW,EACX,UAAU,EACV,MAAM,EACN,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAC9D,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACxG,YAAY,EACV,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,uBAAuB,EACvB,uBAAuB,EACvB,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,YAAY,EACZ,oBAAoB,EACpB,cAAc,GACf,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAChF,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACxG,YAAY,EACV,QAAQ,EACR,mBAAmB,EACnB,KAAK,EACL,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,QAAQ,EACR,aAAa,EACb,WAAW,EACX,WAAW,EACX,UAAU,EACV,MAAM,EACN,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,cAAc,EACd,WAAW,EACX,GAAG,GACJ,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACxG,YAAY,EACV,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,uBAAuB,EACvB,uBAAuB,EACvB,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,YAAY,EACZ,oBAAoB,EACpB,cAAc,GACf,MAAM,YAAY,CAAC"}
@@ -1,5 +1,5 @@
1
1
  export { diagnosticRegistry, isTypedSqlDiagnosticCode } from "./diagnostics.js";
2
- export { createDatabase, renderQuery, sql } from "./query.js";
2
+ export { bindQueryRenderSkeleton, compileQueryRenderSkeleton, createDatabase, renderQuery, sql, } from "./query.js";
3
3
  export { closestName, ParameterCollector, ResolverSchemaIndex, unionTypeLiterals } from "./resolver.js";
4
4
  export { assertDialectPlugin, DIALECT_CONTRACT_VERSION, defineConfig, parameterTypeLiteral, rowTypeLiteral, } from "./types.js";
5
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAehF,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAE9D,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAoBxG,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,YAAY,EACZ,oBAAoB,EACpB,cAAc,GACf,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAkBhF,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,cAAc,EACd,WAAW,EACX,GAAG,GACJ,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAoBxG,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,YAAY,EACZ,oBAAoB,EACpB,cAAc,GACf,MAAM,YAAY,CAAC"}
@@ -1,5 +1,6 @@
1
1
  declare const fragmentBrand: unique symbol;
2
2
  declare const queryBrand: unique symbol;
3
+ declare const queryRenderSkeletonBrand: unique symbol;
3
4
  export type SqlSegment = {
4
5
  readonly kind: "text";
5
6
  readonly text: string;
@@ -57,16 +58,48 @@ export interface RenderedQuery {
57
58
  readonly text: string;
58
59
  readonly values: readonly unknown[];
59
60
  }
61
+ type QueryRenderSkeletonSegment = {
62
+ readonly kind: "text";
63
+ readonly text: string;
64
+ } | {
65
+ readonly kind: "value";
66
+ } | {
67
+ readonly kind: "identifier";
68
+ readonly name: string;
69
+ };
70
+ /**
71
+ * An immutable rendering plan for queries that must retain one structural SQL shape.
72
+ * Create it with {@link compileQueryRenderSkeleton}; its representation is intentionally opaque.
73
+ */
74
+ export interface QueryRenderSkeleton {
75
+ readonly text: string;
76
+ readonly [queryRenderSkeletonBrand]: readonly QueryRenderSkeletonSegment[];
77
+ }
60
78
  export interface QueryExecutor {
61
79
  execute(text: string, values: readonly unknown[]): Promise<readonly unknown[]>;
62
80
  }
63
- export interface Database {
81
+ export interface Database<TransactionScope extends Database<TransactionScope> = TransactionDatabase> {
64
82
  execute<Row, Params extends readonly unknown[]>(query: Query<Row, Params>): Promise<readonly Row[]>;
65
- transaction<T>(fn: (db: Database) => Promise<T>): Promise<T>;
83
+ transaction<T>(fn: (db: TransactionScope) => Promise<T>): Promise<T>;
84
+ }
85
+ export interface TransactionDatabase extends Database<TransactionDatabase> {
66
86
  }
67
87
  export type TransactionRunner = <T>(fn: (executor: QueryExecutor) => Promise<T>) => Promise<T>;
68
88
  export declare const sql: SqlTag;
69
89
  export declare function renderQuery<Row, Params extends readonly unknown[]>(queryValue: Query<Row, Params>, renderer: SqlRenderer): RenderedQuery;
90
+ /**
91
+ * Renders a query and compiles an immutable structural plan that can bind later values without
92
+ * quoting identifiers, formatting placeholders, or rebuilding the SQL text.
93
+ */
94
+ export declare function compileQueryRenderSkeleton<Row, Params extends readonly unknown[]>(queryValue: Query<Row, Params>, renderer: SqlRenderer): {
95
+ readonly skeleton: QueryRenderSkeleton;
96
+ readonly rendered: RenderedQuery;
97
+ };
98
+ /**
99
+ * Binds the values of a query to a previously compiled skeleton. Returns `undefined` when the
100
+ * segment count, segment kinds, structural text, or identifier names have drifted.
101
+ */
102
+ export declare function bindQueryRenderSkeleton<Row, Params extends readonly unknown[]>(queryValue: Query<Row, Params>, skeleton: QueryRenderSkeleton): RenderedQuery | undefined;
70
103
  export declare function createDatabase(executor: QueryExecutor, renderer: SqlRenderer, transactionRunner?: TransactionRunner): Database;
71
104
  export {};
72
105
  //# sourceMappingURL=query.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../../src/query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../../src/query.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  const fragmentBrand = Symbol.for("@typed-sql/core.fragment");
2
2
  const queryBrand = Symbol.for("@typed-sql/core.query");
3
+ const queryRenderSkeletonBrand = Symbol("@typed-sql/core.query-render-skeleton");
3
4
  const text = (textValue) => ({ kind: "text", text: textValue });
5
+ const cachedText = (textValue) => Object.freeze({ kind: "text", text: textValue });
4
6
  const value = (valueItem) => ({ kind: "value", value: valueItem });
5
7
  const fragmentTypeBrand = () => [];
6
8
  const queryTypeBrand = Object.freeze({
@@ -25,15 +27,30 @@ function query(segments) {
25
27
  segments: Object.freeze(segments),
26
28
  });
27
29
  }
30
+ const templateTextCache = new WeakMap();
31
+ const staticFragmentCache = new WeakMap();
32
+ function templateTextSegments(strings) {
33
+ const cached = templateTextCache.get(strings);
34
+ if (cached !== undefined)
35
+ return cached;
36
+ const segments = Object.freeze(Array.from(strings, cachedText));
37
+ templateTextCache.set(strings, segments);
38
+ return segments;
39
+ }
40
+ function appendSegments(target, source) {
41
+ for (let index = 0; index < source.length; index += 1)
42
+ target.push(source[index]);
43
+ }
28
44
  function templateSegments(strings, parts) {
45
+ const template = templateTextSegments(strings);
29
46
  const segments = [];
30
- for (let index = 0; index < strings.length; index += 1) {
31
- segments.push(text(strings[index] ?? ""));
47
+ for (let index = 0; index < template.length; index += 1) {
48
+ segments.push(template[index]);
32
49
  if (index >= parts.length)
33
50
  continue;
34
51
  const part = parts[index];
35
52
  if (isFragment(part))
36
- segments.push(...part.segments);
53
+ appendSegments(segments, part.segments);
37
54
  else
38
55
  segments.push(value(part));
39
56
  }
@@ -43,8 +60,22 @@ const tag = (strings, ...parts) => {
43
60
  return query(templateSegments(strings, parts));
44
61
  };
45
62
  const fragmentTag = (strings, ...parts) => {
63
+ if (parts.length === 0) {
64
+ const cached = staticFragmentCache.get(strings);
65
+ if (cached !== undefined)
66
+ return cached;
67
+ const staticFragment = fragment(templateSegments(strings, parts));
68
+ staticFragmentCache.set(strings, staticFragment);
69
+ return staticFragment;
70
+ }
46
71
  return fragment(templateSegments(strings, parts));
47
72
  };
73
+ const openParenthesis = cachedText("(");
74
+ const closeParenthesis = cachedText(")");
75
+ const andSeparator = cachedText(" AND ");
76
+ const orSeparator = cachedText(" OR ");
77
+ const truePredicate = cachedText("TRUE");
78
+ const whereSeparator = cachedText(" WHERE ");
48
79
  function booleanGroup(parts, operator) {
49
80
  const segments = [];
50
81
  for (const part of parts) {
@@ -53,11 +84,13 @@ function booleanGroup(parts, operator) {
53
84
  if (!isFragment(part))
54
85
  throw new TypeError(`sql.${operator.toLowerCase()}() accepts SQL fragments or empty values`);
55
86
  if (segments.length > 0)
56
- segments.push(text(` ${operator} `));
57
- segments.push(text("("), ...part.segments, text(")"));
87
+ segments.push(operator === "AND" ? andSeparator : orSeparator);
88
+ segments.push(openParenthesis);
89
+ appendSegments(segments, part.segments);
90
+ segments.push(closeParenthesis);
58
91
  }
59
92
  if (segments.length === 0)
60
- segments.push(text("TRUE"));
93
+ segments.push(truePredicate);
61
94
  return fragment(segments);
62
95
  }
63
96
  const commaSeparator = fragment([text(", ")]);
@@ -79,13 +112,14 @@ export const sql = Object.assign(tag, {
79
112
  if (!isFragment(separator))
80
113
  throw new TypeError("sql.join() separator must be a trusted SQL fragment");
81
114
  const segments = [];
82
- parts.forEach((part, index) => {
115
+ for (let index = 0; index < parts.length; index += 1) {
116
+ const part = parts[index];
83
117
  if (!isFragment(part))
84
118
  throw new TypeError("sql.join() accepts SQL fragments");
85
119
  if (index > 0)
86
- segments.push(...separator.segments);
87
- segments.push(...part.segments);
88
- });
120
+ appendSegments(segments, separator.segments);
121
+ appendSegments(segments, part.segments);
122
+ }
89
123
  return fragment(segments);
90
124
  },
91
125
  and(parts) {
@@ -95,20 +129,21 @@ export const sql = Object.assign(tag, {
95
129
  return booleanGroup(parts, "OR");
96
130
  },
97
131
  where(queryValue, predicate) {
98
- return query([
99
- ...queryValue.segments,
100
- text(" WHERE "),
101
- ...predicate.segments,
102
- ]);
132
+ const segments = [];
133
+ appendSegments(segments, queryValue.segments);
134
+ segments.push(whereSeparator);
135
+ appendSegments(segments, predicate.segments);
136
+ return query(segments);
103
137
  },
104
138
  append(queryValue, ...parts) {
105
- const segments = [...queryValue.segments];
139
+ const segments = [];
140
+ appendSegments(segments, queryValue.segments);
106
141
  for (const part of parts) {
107
142
  if (part === undefined || part === null || part === false)
108
143
  continue;
109
144
  if (!isFragment(part))
110
145
  throw new TypeError("sql.append() accepts SQL fragments or empty values");
111
- segments.push(...part.segments);
146
+ appendSegments(segments, part.segments);
112
147
  }
113
148
  return query(segments);
114
149
  },
@@ -134,6 +169,67 @@ export function renderQuery(queryValue, renderer) {
134
169
  }
135
170
  return { text: chunks.join(""), values: Object.freeze(values) };
136
171
  }
172
+ /**
173
+ * Renders a query and compiles an immutable structural plan that can bind later values without
174
+ * quoting identifiers, formatting placeholders, or rebuilding the SQL text.
175
+ */
176
+ export function compileQueryRenderSkeleton(queryValue, renderer) {
177
+ const values = [];
178
+ const chunks = [];
179
+ const skeletonSegments = [];
180
+ for (const segment of queryValue.segments) {
181
+ if (segment.kind === "text") {
182
+ chunks.push(segment.text);
183
+ skeletonSegments.push(Object.freeze({ kind: "text", text: segment.text }));
184
+ }
185
+ else if (segment.kind === "identifier") {
186
+ chunks.push(renderer.quoteIdentifier(segment.name));
187
+ skeletonSegments.push(Object.freeze({ kind: "identifier", name: segment.name }));
188
+ }
189
+ else {
190
+ values.push(segment.value);
191
+ chunks.push(renderer.placeholder(values.length));
192
+ skeletonSegments.push(Object.freeze({ kind: "value" }));
193
+ }
194
+ }
195
+ const textValue = chunks.join("");
196
+ return {
197
+ skeleton: Object.freeze({
198
+ text: textValue,
199
+ [queryRenderSkeletonBrand]: Object.freeze(skeletonSegments),
200
+ }),
201
+ rendered: { text: textValue, values: Object.freeze(values) },
202
+ };
203
+ }
204
+ /**
205
+ * Binds the values of a query to a previously compiled skeleton. Returns `undefined` when the
206
+ * segment count, segment kinds, structural text, or identifier names have drifted.
207
+ */
208
+ export function bindQueryRenderSkeleton(queryValue, skeleton) {
209
+ const querySegments = queryValue.segments;
210
+ const skeletonSegments = skeleton[queryRenderSkeletonBrand];
211
+ if (querySegments.length !== skeletonSegments.length)
212
+ return undefined;
213
+ const values = [];
214
+ for (let index = 0; index < querySegments.length; index += 1) {
215
+ const segment = querySegments[index];
216
+ const skeletonSegment = skeletonSegments[index];
217
+ if (skeletonSegment.kind === "text") {
218
+ if (segment.kind !== "text" || segment.text !== skeletonSegment.text)
219
+ return undefined;
220
+ }
221
+ else if (skeletonSegment.kind === "identifier") {
222
+ if (segment.kind !== "identifier" || segment.name !== skeletonSegment.name)
223
+ return undefined;
224
+ }
225
+ else {
226
+ if (segment.kind !== "value")
227
+ return undefined;
228
+ values.push(segment.value);
229
+ }
230
+ }
231
+ return { text: skeleton.text, values: Object.freeze(values) };
232
+ }
137
233
  class DatabaseImplementation {
138
234
  #executor;
139
235
  #renderer;
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../../src/query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../../src/query.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAkB,MAAM,CAAC,GAAG,CAAC,0BAA0B,CAAU,CAAC;AACrF,MAAM,UAAU,GAAkB,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAU,CAAC;AAC/E,MAAM,wBAAwB,GAAkB,MAAM,CAAC,uCAAuC,CAAC,CAAC;AAqIhG,MAAM,IAAI,GAAG,CAAC,SAAiB,EAAc,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;AACpF,MAAM,UAAU,GAAG,CAAC,SAAiB,EAAc,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;AACvG,MAAM,KAAK,GAAG,CAAC,SAAkB,EAAc,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;AACxF,MAAM,iBAAiB,GAAG,GAAuB,EAAE,CAAC,EAAE,CAAC;AACvD,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC;IACnC,GAAG,EAAE,CAAC,GAAY,EAAW,EAAE,CAAC,GAAG;IACnC,MAAM,EAAE,CAAC,MAA0B,EAAsB,EAAE,CAAC,MAAM;CACnE,CAAC,CAAC;AAEH,SAAS,QAAQ,CAAoC,QAAsB;IACzE,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,CAAC,aAAa,CAAC,EAAE,iBAAiC;QAClD,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;KAClC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,UAAU,CAAC,IAAa;IAC/B,OAAO,CACL,OAAO,IAAI,KAAK,QAAQ;QACxB,IAAI,KAAK,IAAI;QACb,aAAa,IAAI,IAAI;QACrB,KAAK,CAAC,OAAO,CAAE,IAA6B,CAAC,QAAQ,CAAC,CACvD,CAAC;AACJ,CAAC;AAED,SAAS,KAAK,CAAyC,QAAsB;IAC3E,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,CAAC,UAAU,CAAC,EAAE,cAAkE;QAChF,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;KAClC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,iBAAiB,GAAG,IAAI,OAAO,EAA+C,CAAC;AACrF,MAAM,mBAAmB,GAAG,IAAI,OAAO,EAAkD,CAAC;AAE1F,SAAS,oBAAoB,CAAC,OAA6B;IACzD,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IAChE,iBAAiB,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACzC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,cAAc,CAAC,MAAoB,EAAE,MAA6B;IACzE,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAE,CAAC,CAAC;AACrF,CAAC;AAED,SAAS,gBAAgB,CAAC,OAA6B,EAAE,KAAyB;IAChF,MAAM,QAAQ,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAiB,EAAE,CAAC;IAClC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACxD,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAE,CAAC,CAAC;QAChC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM;YAAE,SAAS;QACpC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,UAAU,CAAC,IAAI,CAAC;YAAE,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;;YACzD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,GAAG,GAAG,CACV,OAA6B,EAC7B,GAAG,KAAY,EACwB,EAAE;IACzC,OAAO,KAAK,CAAiC,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AACjF,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAClB,OAA6B,EAC7B,GAAG,KAAY,EACyB,EAAE;IAC1C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,MAAgD,CAAC;QAClF,MAAM,cAAc,GAAG,QAAQ,CAA4B,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7F,mBAAmB,CAAC,GAAG,CAAC,OAAO,EAAE,cAA0C,CAAC,CAAC;QAC7E,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,OAAO,QAAQ,CAA4B,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/E,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;AACxC,MAAM,gBAAgB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;AACzC,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;AACzC,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;AACvC,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;AACzC,MAAM,cAAc,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;AAE7C,SAAS,YAAY,CACnB,KAAY,EACZ,QAAsB;IAEtB,MAAM,QAAQ,GAAiB,EAAE,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK;YAAE,SAAS;QACpE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,OAAO,QAAQ,CAAC,WAAW,EAAE,0CAA0C,CAAC,CAAC;QACpH,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QACxF,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC/B,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACxD,OAAO,QAAQ,CAAgC,QAAQ,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,cAAc,GAAG,QAAQ,CAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAE3D,MAAM,CAAC,MAAM,GAAG,GAAW,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;IAC5C,OAAO;QACL,OAAO,CACL,OAA6B,EAC7B,GAAG,KAAqC,EACxC,EAAE,CAAC,GAAG,CAAa,OAAO,EAAE,GAAI,KAA0B,CAAkC,CAAC;IACjG,CAAC;IACD,QAAQ,EAAE,WAAW;IACrB,KAAK,EAAE,QAAQ,CAAc,EAAE,CAAC;IAChC,KAAK,CAAC,IAAY;QAChB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC1C,MAAM,IAAI,SAAS,CAAC,0DAA0D,CAAC,CAAC;QAClF,OAAO,QAAQ,CAAc,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC/D,CAAC;IACD,KAAK,CAAQ,SAAgB;QAC3B,OAAO,QAAQ,CAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,CACF,KAAY,EACZ,SAAS,GAA6B,cAAc;QAEpD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,qDAAqD,CAAC,CAAC;QACvG,MAAM,QAAQ,GAAiB,EAAE,CAAC;QAClC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAE,CAAC;YAC3B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBAAE,MAAM,IAAI,SAAS,CAAC,kCAAkC,CAAC,CAAC;YAC/E,IAAI,KAAK,GAAG,CAAC;gBAAE,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC5D,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,QAAQ,CAAgC,QAAQ,CAAC,CAAC;IAC3D,CAAC;IACD,GAAG,CAAqD,KAAY;QAClE,OAAO,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;IACD,EAAE,CAAqD,KAAY;QACjE,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IACD,KAAK,CACH,UAAmC,EACnC,SAAuC;QAEvC,MAAM,QAAQ,GAAiB,EAAE,CAAC;QAClC,cAAc,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC9C,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC9B,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC7C,OAAO,KAAK,CAAqD,QAAQ,CAAC,CAAC;IAC7E,CAAC;IACD,MAAM,CACJ,UAAmC,EACnC,GAAG,KAAY;QAEf,MAAM,QAAQ,GAAiB,EAAE,CAAC;QAClC,cAAc,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC9C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK;gBAAE,SAAS;YACpE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBAAE,MAAM,IAAI,SAAS,CAAC,oDAAoD,CAAC,CAAC;YACjG,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,KAAK,CAAmE,QAAQ,CAAC,CAAC;IAC3F,CAAC;IACD,GAAG,CAAC,OAAe;QACjB,OAAO,QAAQ,CAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,CAAC,OAAe;QACrB,OAAO,KAAK,CAA8B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC;CACF,CAAkB,CAAC;AAEpB,MAAM,UAAU,WAAW,CACzB,UAA8B,EAC9B,QAAqB;IAErB,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;QAC1C,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;aAClD,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY;YAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;aACvF,CAAC;YACJ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;AAClE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CACxC,UAA8B,EAC9B,QAAqB;IAErB,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,gBAAgB,GAAiC,EAAE,CAAC;IAC1D,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;QAC1C,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC1B,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7E,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACzC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YACpD,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACnF,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YACjD,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClC,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;YACtB,IAAI,EAAE,SAAS;YACf,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC;SAC5D,CAAC;QACF,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;KAC7D,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,UAA8B,EAC9B,QAA6B;IAE7B,MAAM,aAAa,GAAG,UAAU,CAAC,QAAQ,CAAC;IAC1C,MAAM,gBAAgB,GAAG,QAAQ,CAAC,wBAAwB,CAAC,CAAC;IAC5D,IAAI,aAAa,CAAC,MAAM,KAAK,gBAAgB,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAEvE,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,aAAa,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC7D,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAE,CAAC;QACtC,MAAM,eAAe,GAAG,gBAAgB,CAAC,KAAK,CAAE,CAAC;QACjD,IAAI,eAAe,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACpC,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,IAAI,KAAK,eAAe,CAAC,IAAI;gBAAE,OAAO,SAAS,CAAC;QACzF,CAAC;aAAM,IAAI,eAAe,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACjD,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,IAAI,OAAO,CAAC,IAAI,KAAK,eAAe,CAAC,IAAI;gBAAE,OAAO,SAAS,CAAC;QAC/F,CAAC;aAAM,CAAC;YACN,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO;gBAAE,OAAO,SAAS,CAAC;YAC/C,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;AAChE,CAAC;AAED,MAAM,sBAAsB;IACjB,SAAS,CAAgB;IACzB,SAAS,CAAc;IACvB,kBAAkB,CAAgC;IAE3D,YAAY,QAAuB,EAAE,QAAqB,EAAE,iBAAqC;QAC/F,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,OAAO,CAAyC,UAA8B;QAClF,MAAM,QAAQ,GAAG,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACzD,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAmB,CAAC;IAC1F,CAAC;IAED,KAAK,CAAC,WAAW,CAAI,EAAgC;QACnD,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QAClH,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAChD,EAAE,CAAC,IAAI,sBAAsB,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAClF,CAAC;IACJ,CAAC;CACF;AAED,MAAM,UAAU,cAAc,CAC5B,QAAuB,EACvB,QAAqB,EACrB,iBAAqC;IAErC,OAAO,IAAI,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAC3E,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typed-sql/core",
3
- "version": "1.0.0-rc.0",
3
+ "version": "1.0.0",
4
4
  "description": "Driver- and dialect-neutral typed SQL query contracts.",
5
5
  "license": "MIT",
6
6
  "author": "Lojhan",