@typesql/core 0.3.0 → 0.5.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 +34 -0
- package/README.md +12 -10
- package/dist/adapter.d.ts +9 -0
- package/dist/adapter.d.ts.map +1 -0
- package/dist/adapter.js +9 -0
- package/dist/adapter.js.map +1 -0
- package/dist/cache/discover.d.ts +5 -0
- package/dist/cache/discover.d.ts.map +1 -1
- package/dist/cache/discover.js +82 -23
- package/dist/cache/discover.js.map +1 -1
- package/dist/cache/evaluate.d.ts +87 -0
- package/dist/cache/evaluate.d.ts.map +1 -0
- package/dist/cache/evaluate.js +481 -0
- package/dist/cache/evaluate.js.map +1 -0
- package/dist/cache/format.d.ts.map +1 -1
- package/dist/cache/format.js +33 -11
- package/dist/cache/format.js.map +1 -1
- package/dist/cache/job.d.ts +3 -7
- package/dist/cache/job.d.ts.map +1 -1
- package/dist/cache/job.js +155 -167
- package/dist/cache/job.js.map +1 -1
- package/dist/cache/mapper.d.ts.map +1 -1
- package/dist/cache/mapper.js +26 -7
- package/dist/cache/mapper.js.map +1 -1
- package/dist/cache/print.d.ts +7 -7
- package/dist/cache/print.d.ts.map +1 -1
- package/dist/cache/print.js +61 -13
- package/dist/cache/print.js.map +1 -1
- package/dist/cache/rpc.d.ts.map +1 -1
- package/dist/cache/rpc.js +11 -2
- package/dist/cache/rpc.js.map +1 -1
- package/dist/cache/scan.d.ts.map +1 -1
- package/dist/cache/scan.js +5 -3
- package/dist/cache/scan.js.map +1 -1
- package/dist/cache/store.d.ts.map +1 -1
- package/dist/cache/store.js +33 -8
- package/dist/cache/store.js.map +1 -1
- package/dist/create-sql.d.ts +122 -66
- package/dist/create-sql.d.ts.map +1 -1
- package/dist/create-sql.js +11 -11
- package/dist/create-sql.js.map +1 -1
- package/dist/editor/call.d.ts +33 -0
- package/dist/editor/call.d.ts.map +1 -0
- package/dist/editor/call.js +97 -0
- package/dist/editor/call.js.map +1 -0
- package/dist/editor/complete.d.ts +42 -0
- package/dist/editor/complete.d.ts.map +1 -0
- package/dist/editor/complete.js +213 -0
- package/dist/editor/complete.js.map +1 -0
- package/dist/editor/index.d.ts +10 -0
- package/dist/editor/index.d.ts.map +1 -0
- package/dist/editor/index.js +38 -0
- package/dist/editor/index.js.map +1 -0
- package/dist/editor/scan.d.ts +53 -0
- package/dist/editor/scan.d.ts.map +1 -0
- package/dist/editor/scan.js +754 -0
- package/dist/editor/scan.js.map +1 -0
- package/dist/editor/schema.d.ts +37 -0
- package/dist/editor/schema.d.ts.map +1 -0
- package/dist/editor/schema.js +132 -0
- package/dist/editor/schema.js.map +1 -0
- package/dist/engine/ast.d.ts.map +1 -1
- package/dist/engine/binder/clauses.d.ts +31 -22
- package/dist/engine/binder/clauses.d.ts.map +1 -1
- package/dist/engine/binder/from.d.ts +174 -99
- package/dist/engine/binder/from.d.ts.map +1 -1
- package/dist/engine/binder/narrow.d.ts +7 -9
- package/dist/engine/binder/narrow.d.ts.map +1 -1
- package/dist/engine/binder/resolve.d.ts +43 -14
- package/dist/engine/binder/resolve.d.ts.map +1 -1
- package/dist/engine/cache.d.ts +29 -24
- package/dist/engine/cache.d.ts.map +1 -1
- package/dist/engine/ddl/apply.d.ts +98 -61
- package/dist/engine/ddl/apply.d.ts.map +1 -1
- package/dist/engine/errors.d.ts.map +1 -1
- package/dist/engine/index.d.ts +28 -0
- package/dist/engine/index.d.ts.map +1 -0
- package/dist/engine/index.js +8 -0
- package/dist/engine/index.js.map +1 -0
- package/dist/engine/infer.d.ts +27 -25
- package/dist/engine/infer.d.ts.map +1 -1
- package/dist/engine/inline.d.ts +63 -33
- package/dist/engine/inline.d.ts.map +1 -1
- package/dist/engine/json.d.ts +27 -26
- package/dist/engine/json.d.ts.map +1 -1
- package/dist/engine/lexer/chars.d.ts.map +1 -1
- package/dist/engine/lexer/lex.d.ts +61 -24
- package/dist/engine/lexer/lex.d.ts.map +1 -1
- package/dist/engine/lexer/next.d.ts +1 -1
- package/dist/engine/lexer/tokens.d.ts.map +1 -1
- package/dist/engine/lexer/unicode.d.ts +13 -13
- package/dist/engine/lexer/unicode.d.ts.map +1 -1
- package/dist/engine/named.d.ts +26 -7
- package/dist/engine/named.d.ts.map +1 -1
- package/dist/engine/parser/ddl.d.ts +189 -72
- package/dist/engine/parser/ddl.d.ts.map +1 -1
- package/dist/engine/parser/dml.d.ts +86 -21
- package/dist/engine/parser/dml.d.ts.map +1 -1
- package/dist/engine/parser/expr.d.ts +77 -44
- package/dist/engine/parser/expr.d.ts.map +1 -1
- package/dist/engine/parser/json.d.ts +85 -21
- package/dist/engine/parser/json.d.ts.map +1 -1
- package/dist/engine/parser/keywords.d.ts.map +1 -1
- package/dist/engine/parser/merge.d.ts +19 -5
- package/dist/engine/parser/merge.d.ts.map +1 -1
- package/dist/engine/parser/select.d.ts +142 -68
- package/dist/engine/parser/select.d.ts.map +1 -1
- package/dist/engine/parser/stmt.d.ts +9 -6
- package/dist/engine/parser/stmt.d.ts.map +1 -1
- package/dist/engine/parser/typename.d.ts +9 -6
- package/dist/engine/parser/typename.d.ts.map +1 -1
- package/dist/engine/parser/util.d.ts +15 -6
- package/dist/engine/parser/util.d.ts.map +1 -1
- package/dist/engine/parser/utility.d.ts +4 -4
- package/dist/engine/parser/utility.d.ts.map +1 -1
- package/dist/engine/parser/xml.d.ts +53 -33
- package/dist/engine/parser/xml.d.ts.map +1 -1
- package/dist/engine/project/dml.d.ts +153 -58
- package/dist/engine/project/dml.d.ts.map +1 -1
- package/dist/engine/project/merge.d.ts +25 -9
- package/dist/engine/project/merge.d.ts.map +1 -1
- package/dist/engine/project/naming.d.ts +13 -10
- package/dist/engine/project/naming.d.ts.map +1 -1
- package/dist/engine/project/select.d.ts +93 -44
- package/dist/engine/project/select.d.ts.map +1 -1
- package/dist/engine/project/stmt.d.ts +1 -1
- package/dist/engine/project/stmt.d.ts.map +1 -1
- package/dist/engine/shape.d.ts +3 -3
- package/dist/engine/shape.d.ts.map +1 -1
- package/dist/engine/splice.d.ts +45 -17
- package/dist/engine/splice.d.ts.map +1 -1
- package/dist/engine/suggest.d.ts +6 -8
- package/dist/engine/suggest.d.ts.map +1 -1
- package/dist/engine/typer/catalog.d.ts +594 -144
- package/dist/engine/typer/catalog.d.ts.map +1 -1
- package/dist/engine/typer/operators.d.ts +17 -17
- package/dist/engine/typer/operators.d.ts.map +1 -1
- package/dist/engine/typer/params.d.ts +117 -59
- package/dist/engine/typer/params.d.ts.map +1 -1
- package/dist/engine/typer/pg-functions.d.ts +61 -18
- package/dist/engine/typer/pg-functions.d.ts.map +1 -1
- package/dist/engine/typer/sqljson.d.ts +24 -12
- package/dist/engine/typer/sqljson.d.ts.map +1 -1
- package/dist/engine/typer/typeof.d.ts +66 -41
- package/dist/engine/typer/typeof.d.ts.map +1 -1
- package/dist/engine/typer/xml.d.ts +39 -15
- package/dist/engine/typer/xml.d.ts.map +1 -1
- package/dist/engine/types.d.ts +13 -5
- package/dist/engine/types.d.ts.map +1 -1
- package/dist/engine/write.d.ts +9 -6
- package/dist/engine/write.d.ts.map +1 -1
- package/dist/index.d.ts +11 -23
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -7
- package/dist/index.js.map +1 -1
- package/dist/migrations.d.ts +6 -3
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js.map +1 -1
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +3 -1
- package/dist/query.js.map +1 -1
- package/dist/row-keys.d.ts.map +1 -1
- package/dist/row-keys.js.map +1 -1
- package/dist/runtime/inline.d.ts +7 -10
- package/dist/runtime/inline.d.ts.map +1 -1
- package/dist/runtime/inline.js +21 -31
- package/dist/runtime/inline.js.map +1 -1
- package/dist/runtime/json.d.ts.map +1 -1
- package/dist/runtime/json.js.map +1 -1
- package/dist/runtime/splice.d.ts.map +1 -1
- package/dist/runtime/splice.js +3 -1
- package/dist/runtime/splice.js.map +1 -1
- package/dist/runtime/write.d.ts.map +1 -1
- package/dist/runtime/write.js +5 -2
- package/dist/runtime/write.js.map +1 -1
- package/dist/schema/column.d.ts +2 -2
- package/dist/schema/column.d.ts.map +1 -1
- package/dist/schema/index.d.ts +4 -4
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/normalize.d.ts.map +1 -1
- package/dist/schema/pg-catalog.d.ts +15 -2
- package/dist/schema/pg-catalog.d.ts.map +1 -1
- package/dist/schema/pg-types.d.ts.map +1 -1
- package/dist/transaction.d.ts.map +1 -1
- package/dist/transaction.js.map +1 -1
- package/dist/type-map/index.d.ts +3 -3
- package/dist/type-map/index.d.ts.map +1 -1
- package/package.json +14 -1
- package/src/adapter.ts +13 -0
- package/src/cache/discover.ts +297 -150
- package/src/cache/evaluate.ts +576 -0
- package/src/cache/format.ts +150 -105
- package/src/cache/job.ts +784 -612
- package/src/cache/mapper.ts +129 -89
- package/src/cache/print.ts +186 -120
- package/src/cache/rpc.ts +79 -57
- package/src/cache/scan.ts +91 -82
- package/src/cache/store.ts +176 -99
- package/src/create-sql.ts +721 -312
- package/src/editor/call.ts +168 -0
- package/src/editor/complete.ts +282 -0
- package/src/editor/index.ts +60 -0
- package/src/editor/scan.ts +841 -0
- package/src/editor/schema.ts +187 -0
- package/src/engine/ast.ts +609 -303
- package/src/engine/binder/clauses.ts +541 -173
- package/src/engine/binder/from.ts +871 -242
- package/src/engine/binder/narrow.ts +131 -40
- package/src/engine/binder/resolve.ts +214 -86
- package/src/engine/cache.ts +229 -85
- package/src/engine/ddl/apply.ts +1136 -424
- package/src/engine/errors.ts +12 -8
- package/src/engine/index.ts +108 -0
- package/src/engine/infer.ts +242 -108
- package/src/engine/inline.ts +340 -152
- package/src/engine/json.ts +391 -121
- package/src/engine/lexer/chars.ts +71 -6
- package/src/engine/lexer/lex.ts +468 -183
- package/src/engine/lexer/next.ts +1 -1
- package/src/engine/lexer/tokens.ts +24 -6
- package/src/engine/lexer/unicode.ts +421 -95
- package/src/engine/named.ts +183 -63
- package/src/engine/parser/ddl.ts +1932 -645
- package/src/engine/parser/dml.ts +583 -217
- package/src/engine/parser/expr.ts +1474 -624
- package/src/engine/parser/json.ts +702 -291
- package/src/engine/parser/keywords.ts +198 -27
- package/src/engine/parser/merge.ts +216 -81
- package/src/engine/parser/select.ts +1257 -504
- package/src/engine/parser/stmt.ts +121 -45
- package/src/engine/parser/typename.ts +163 -55
- package/src/engine/parser/util.ts +147 -59
- package/src/engine/parser/utility.ts +92 -47
- package/src/engine/parser/xml.ts +478 -187
- package/src/engine/project/dml.ts +1312 -391
- package/src/engine/project/merge.ts +335 -93
- package/src/engine/project/naming.ts +83 -28
- package/src/engine/project/select.ts +929 -297
- package/src/engine/project/stmt.ts +25 -7
- package/src/engine/shape.ts +37 -15
- package/src/engine/splice.ts +260 -81
- package/src/engine/suggest.ts +157 -65
- package/src/engine/typer/catalog.ts +1404 -668
- package/src/engine/typer/operators.ts +561 -180
- package/src/engine/typer/params.ts +943 -229
- package/src/engine/typer/pg-functions.ts +85 -62
- package/src/engine/typer/sqljson.ts +299 -99
- package/src/engine/typer/typeof.ts +753 -241
- package/src/engine/typer/xml.ts +245 -76
- package/src/engine/types.ts +86 -30
- package/src/engine/write.ts +115 -36
- package/src/index.ts +46 -24
- package/src/migrations.ts +62 -45
- package/src/query.ts +124 -82
- package/src/row-keys.ts +42 -29
- package/src/runtime/inline.ts +106 -88
- package/src/runtime/json.ts +17 -11
- package/src/runtime/splice.ts +206 -152
- package/src/runtime/write.ts +67 -46
- package/src/schema/column.ts +45 -16
- package/src/schema/index.ts +38 -4
- package/src/schema/normalize.ts +88 -33
- package/src/schema/pg-catalog.ts +16 -3
- package/src/schema/pg-types.ts +63 -18
- package/src/transaction.ts +60 -35
- package/src/type-map/index.ts +126 -91
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,39 @@
|
|
|
1
1
|
# @typesql/core
|
|
2
2
|
|
|
3
|
+
## 0.5.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- What adapters and custom executors build on moved to `@typesql/core/adapter`: `createTransactionalSql`, `runTransaction`, `SqlDriver`, `mapRows`, `rowKeysOf`, `camelCase` and `JsonParam`.
|
|
8
|
+
|
|
9
|
+
- The engine's types (`Analyze`, `ArgsOf`, `KeyedRow`, `ListRep`, `SetRep`, the inline markers, lexer, parser, schema and type cache types, …) moved to `@typesql/core/engine`; the root keeps `Sql`, `Query`, `Fragment`, the schema helpers, `RowOf`, `ParamsOf`, `Validate`, `ApplyDdl` and the other types you write in application code.
|
|
10
|
+
|
|
11
|
+
- The root export is the user-facing API only: the standalone `param`, `valueOrDefault` and `json` are gone (use `sql.param`, `sql.json`), and so are the splice and query-building helpers (`splice`, `renumberParams`, `maxParam`, `quoteIdent`, `joinFragments`, `hasSlots`, `rewriteNamed`, `makeQuery`, `makeFragment`).
|
|
12
|
+
|
|
13
|
+
- `sql.valueOrDefault` is removed: `sql.param(value)` sends `DEFAULT` when the value is `undefined`, and a value that can be `undefined` is a compile error where `DEFAULT` is not allowed and inside `sql.fragment`.
|
|
14
|
+
|
|
15
|
+
- `sql.list` is merged into `sql.join`: joining a runtime array of fragments whose texts are known is checked as `sql.list` did, and `sql.join` throws when there are no items.
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- No user-visible change: PostgreSQL's parser (libpg-query) is a development dependency, for a test that compares parse trees.
|
|
20
|
+
|
|
21
|
+
- No user-visible change: the type cache job evaluates statements through an internal module the type oracles share.
|
|
22
|
+
|
|
23
|
+
- Types follow PostgreSQL 18: `PgCatalog` has the new catalog columns (`pg_attribute.attcacheoff` is gone), the new built-in functions are known, and `reverse(bytea)` and `json(b)_strip_nulls(x, strip_in_arrays)` are typed.
|
|
24
|
+
|
|
25
|
+
- The README's documentation links point to the docs site, after its pages moved.
|
|
26
|
+
|
|
27
|
+
- No user-visible change: comments in the type engine say its rules are verified against PostgreSQL 18, which the type and function oracles now check.
|
|
28
|
+
|
|
29
|
+
- No user-visible change: simpler printed-type parsing in the type cache job, with mutation-testing annotations.
|
|
30
|
+
|
|
31
|
+
## 0.4.0
|
|
32
|
+
|
|
33
|
+
### Minor Changes
|
|
34
|
+
|
|
35
|
+
- Editor completions inside `sql()` strings: `@typesql/core/editor` suggests tables, views, schemas and columns (with their types) at the cursor, for the new TypeSQL VS Code extension on top of TypeScript 7.1. See the "Editor completions" guide.
|
|
36
|
+
|
|
3
37
|
## 0.3.0
|
|
4
38
|
|
|
5
39
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@ and rejects its syntax errors ([how it is tested](https://typesql.karsli.net/gui
|
|
|
13
13
|
pnpm add @typesql/core
|
|
14
14
|
```
|
|
15
15
|
|
|
16
|
-
[Open an example in the TypeScript Playground](https://www.typescriptlang.org/play/#code/PTAEBUE8AcFMGUCKAZAXKACgewM4BcBzAJ1h1CWQBpRoBDInWAE1ACNIIYEBjIgS2h4A5GTxdQOSPlgBbAHSgAokz55QeABaxyKULQB2LDVgBusIuq3quOVACgQoIlgDuZAyzpFaM2HnNkAGZYADYhrtQeoDJ8+LQA1qR6JKDcWDLQfCHa5s4MoFj6ltr4-
|
|
16
|
+
[Open an example in the TypeScript Playground](https://www.typescriptlang.org/play/#code/PTAEBUE8AcFMGUCKAZAXKACgewM4BcBzAJ1h1CWQBpRoBDInWAE1ACNIIYEBjIgS2h4A5GTxdQOSPlgBbAHSgAokz55QeABaxyKULQB2LDVgBusIuq3quOVACgQoIlgDuZAyzpFaM2HnNkAGZYADYhrtQeoDJ8+LQA1qR6JKDcWDLQfCHa5s4MoFj6ltr4-PoEcnZ8GVhEagDedgCQYnCgAMKhlM28sLT+8ACOId0t4gDisPrm-cyjrdoAcgCuYbSs2fPiGPQ+OFBwW20ASq4HsN0AvqCBzjKgAEQAAgs4w8BpJA8A3HZV+v4iIFaNxtAARABCoEaTWWjAY6BhTT4THQk2m3n8TAAPA8+ACACwPAB831Ajg0tHcoCYsGBqzw6Cwgj4hVoIQKRQAkot4IpjuBmk1ZLQsuhOiFcf4AB54Em-JpNFQ4aAhWiQAD6+h8sHQKzWG1gUtgsvlQt6syYGv6aKmMyxUuqpDwPkEAC8zU1LgroLg8LZoUKUbaMZbcfi8AAOT1NWjLTS1DXBjqhcOEmN4VTZcWph4yuWkoWsLBMSB61Zqw3G02Fr2-S5-NL6fASYagAC8qRIsyGkshxIAFABKX4OMDIRQAMXAoAAUgB5HnRBJJTTafgEDRqHAo7T6CvrbJkgAkAEZ1CuyKpROJbulQMs5CjKk2W4MO62QgPmgADPkT9oZ0fFFqEfEUsmoaA5EzPBsjsUAEMQpDkMnY55wAWQfeEyGWUAJ2nOdF0WGg-TIaBQHnYioLjBMiCTFhO2Aph4OQ1jEIAdQACX5RQHyfBjQDPH9RgAdm6Ec7AWUBThcD8ZPObEFiwQJQEGQtHAQgA9AB+STtl2GQyE7HZvEMhSlJUtTfg00AdL+RwAEECGIWACFmdxDFSUJlhkIptV8IJQnCWTsHwFyAzSZYAQHAAqIdQFiBKAUjSIJDwMoCAfQxzFAfQS1gABaX0wpIHAX0KFs4n9D83i-X9-0UQC9HjYw6JAryorwWKh2oGRaGlAcYOyeKHPgUA1X8FtUIwkj8DIcY0IAVQwUAIQATWa2j6OEuwJKk+AXWqzt5K4RSuGUtL+hwdSwC03Sx1ALl9BCfFtBMdlliSegSimNQqUEoovB1QEPJYbgtG4RIWFoNz8RbFwtBSNcOG+rDmHK5s1HAjlOweWgmFoJ4TVdbI5DSGQfjsV81AtLEauGb8mh-Hk+QFR7FnAec0fyAdsfigA1BzkEWxQxoHY96lquQgZkXm+qyIdLni45FHARbjkWHlxgSphqFp5hrTwHa9vEdpuzp46zlOiyuz6LEbsQuyHvQ2IXUSdwUnJzJslAXJajIQpih0ZA0oyhRJz4aVihkexaoHP9FAAmd9F8UBpswuEAh-EdyTAP2iHQNIQh8ooHhT2AHhpLAkjyrHpVduw4+Z3l+RnHlOdm6rBqzWABaFkWxbPIdhMeTjYDCLAHhzxx8-QGjWvohKyEWecZ0WRbkBDqJKTIPKaTpOMQjwOwgA) <!-- playground:core --> to hover the types and edit the SQL, with nothing to install.
|
|
17
17
|
|
|
18
18
|
Add the adapter for your driver to run queries: [`@typesql/pg`](https://www.npmjs.com/package/@typesql/pg)
|
|
19
19
|
(node-postgres) or [`@typesql/postgres`](https://www.npmjs.com/package/@typesql/postgres)
|
|
@@ -68,9 +68,9 @@ checked against their context.
|
|
|
68
68
|
- **Typed JSON**: `json_build_object`, `json_agg`, `to_json(t)` and `->` / `#>` give the JSON's
|
|
69
69
|
structure, typed as Postgres serializes it.
|
|
70
70
|
- **Postgres column naming** (`?column?`, `count`, `lower`) and Postgres-worded compile errors.
|
|
71
|
-
- **Fragments**: `sql.fragment`, `sql.id`, `sql.join
|
|
72
|
-
`$n` renumbering.
|
|
73
|
-
- **Write helpers**: `sql.
|
|
71
|
+
- **Fragments**: `sql.fragment`, `sql.id`, `sql.join` (also over runtime arrays of typed
|
|
72
|
+
elements), `sql.raw`, spliced into inference with `$n` renumbering.
|
|
73
|
+
- **Write helpers**: `sql.param(x)` sends `DEFAULT` for `undefined`; `sql.set(table, partial)`
|
|
74
74
|
and `sql.values(table, rows)` build typed `SET` lists and `VALUES` rows from objects.
|
|
75
75
|
- **DDL**: `ApplyDdl<DB, "ALTER TABLE …">` and the `migrations()` builder derive the schema from
|
|
76
76
|
your migrations.
|
|
@@ -109,14 +109,16 @@ opt-in slice: `createSql<DB & PgCatalog>()`.
|
|
|
109
109
|
TypeScript 7.1 or later (the native compiler; `7.1.0-beta` works) and Node.js 26 or later.
|
|
110
110
|
PostgreSQL semantics only.
|
|
111
111
|
|
|
112
|
-
Optionally, a [type cache](https://
|
|
112
|
+
Optionally, a [type cache](https://typesql.karsli.net/guide/performance#type-cache)
|
|
113
113
|
file, which TypeScript 7.1's content mappers let this package serve and keep up to date, saves
|
|
114
114
|
recomputing query types on every `tsc` run and every edit.
|
|
115
115
|
|
|
116
116
|
## Documentation
|
|
117
117
|
|
|
118
|
-
[Guide](https://
|
|
119
|
-
[API reference](https://
|
|
120
|
-
[DDL support](https://
|
|
121
|
-
[Errors
|
|
122
|
-
[
|
|
118
|
+
[Guide](https://typesql.karsli.net/guide/introduction) ·
|
|
119
|
+
[API reference](https://typesql.karsli.net/reference/api) ·
|
|
120
|
+
[DDL support](https://typesql.karsli.net/reference/ddl) ·
|
|
121
|
+
[Errors](https://typesql.karsli.net/guide/errors) ·
|
|
122
|
+
[Limits](https://typesql.karsli.net/guide/limits) ·
|
|
123
|
+
[Type cache](https://typesql.karsli.net/guide/performance#type-cache) ·
|
|
124
|
+
[VS Code extension](https://typesql.karsli.net/guide/editor)
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@typesql/core/adapter`: what driver adapters and custom executors build on. Applications
|
|
3
|
+
* import `@typesql/core` or an adapter package instead.
|
|
4
|
+
*/
|
|
5
|
+
export { mapRows, rowKeysOf } from "./query.js";
|
|
6
|
+
export { camelCase } from "./row-keys.js";
|
|
7
|
+
export { JsonParam } from "./runtime/json.js";
|
|
8
|
+
export { createTransactionalSql, runTransaction, type SqlDriver, } from "./transaction.js";
|
|
9
|
+
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EACN,sBAAsB,EACtB,cAAc,EACd,KAAK,SAAS,GACd,MAAM,kBAAkB,CAAC"}
|
package/dist/adapter.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@typesql/core/adapter`: what driver adapters and custom executors build on. Applications
|
|
3
|
+
* import `@typesql/core` or an adapter package instead.
|
|
4
|
+
*/
|
|
5
|
+
export { mapRows, rowKeysOf } from "./query.js";
|
|
6
|
+
export { camelCase } from "./row-keys.js";
|
|
7
|
+
export { JsonParam } from "./runtime/json.js";
|
|
8
|
+
export { createTransactionalSql, runTransaction, } from "./transaction.js";
|
|
9
|
+
//# sourceMappingURL=adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.js","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EACN,sBAAsB,EACtB,cAAc,GAEd,MAAM,kBAAkB,CAAC"}
|
package/dist/cache/discover.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ export interface Kinds {
|
|
|
17
17
|
export interface SqlSite {
|
|
18
18
|
/** The query literal (with `:name` and `${sql.param()}` markers as written). */
|
|
19
19
|
readonly key: string;
|
|
20
|
+
readonly file: string;
|
|
20
21
|
readonly db: Type;
|
|
21
22
|
readonly tm: Type;
|
|
22
23
|
readonly keys: Type;
|
|
@@ -26,10 +27,12 @@ export interface SqlSite {
|
|
|
26
27
|
/** A statement written as a type: `RowOf<DB, TM, "SELECT …">`, or a literal argument of the project's own alias. */
|
|
27
28
|
export interface TypeSite {
|
|
28
29
|
readonly key: string;
|
|
30
|
+
readonly file: string;
|
|
29
31
|
readonly db: Type;
|
|
30
32
|
}
|
|
31
33
|
export interface DdlSite {
|
|
32
34
|
readonly key: string;
|
|
35
|
+
readonly file: string;
|
|
33
36
|
/** The schema before the step (`Migrations<DB>`'s `DB`). */
|
|
34
37
|
readonly db: Type;
|
|
35
38
|
}
|
|
@@ -38,4 +41,6 @@ export declare function discover(program: Program, checker: Checker, kinds: Kind
|
|
|
38
41
|
types: TypeSite[];
|
|
39
42
|
ddl: DdlSite[];
|
|
40
43
|
}>;
|
|
44
|
+
/** Whether `type` is a reference to one of core's `names` (`Sql`, `Migrations`, …). */
|
|
45
|
+
export declare function isCoreRef(type: Type, names: readonly string[], isCorePath: (path: string) => boolean): Promise<boolean>;
|
|
41
46
|
//# sourceMappingURL=discover.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discover.d.ts","sources":["../../src/cache/discover.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"discover.d.ts","sources":["../../src/cache/discover.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH,OAAO,KAAK,EACX,OAAO,EACP,OAAO,EAEP,IAAI,EACJ,MAAM,kBAAkB,CAAC;AAE1B,6FAA6F;AAC7F,MAAM,WAAW,KAAK;IACrB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC;IAC1C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;CACtC;AAED,MAAM,WAAW,OAAO;IACvB,gFAAgF;IAChF,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,2EAA2E;IAC3E,QAAQ,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC;CAC5B;AAED,oHAAoH;AACpH,MAAM,WAAW,QAAQ;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,OAAO;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;CAClB;AAsBD,wBAAsB,QAAQ,CAC7B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,EACrC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,GACpC,OAAO,CAAC;IAAE,GAAG,EAAE,OAAO,EAAE,CAAC;IAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;IAAC,GAAG,EAAE,OAAO,EAAE,CAAA;CAAE,CAAC,CAyJhE;AAqFD,uFAAuF;AACvF,wBAAsB,SAAS,CAC9B,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,GACnC,OAAO,CAAC,OAAO,CAAC,CAQlB"}
|
package/dist/cache/discover.js
CHANGED
|
@@ -1,7 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Finds the statements of a program: `sql(…)` calls (the callee is core's `Sql` or
|
|
3
|
+
* `TransactionalSql`, whatever it is named locally) and `migrations().add(…)` steps. Only the
|
|
4
|
+
* callee, the receiver and the first arguments are typed, not the call: discovering 500
|
|
5
|
+
* queries takes milliseconds and analyses none of them.
|
|
6
|
+
*/
|
|
1
7
|
const SLOT = /\{[A-Za-z_][A-Za-z0-9_]*\}/;
|
|
2
8
|
/** Core aliases taking `(DB, …, Q)`: the index of `Q`. */
|
|
3
|
-
const QUERY_ALIASES = {
|
|
4
|
-
|
|
9
|
+
const QUERY_ALIASES = {
|
|
10
|
+
RowOf: 2,
|
|
11
|
+
ParamsOf: 2,
|
|
12
|
+
ArgsOf: 2,
|
|
13
|
+
ParamsArgs: 2,
|
|
14
|
+
Validate: 1,
|
|
15
|
+
KindOf: 1,
|
|
16
|
+
NamesOf: 1,
|
|
17
|
+
Analysis: 1,
|
|
18
|
+
};
|
|
19
|
+
const DDL_ALIASES = {
|
|
20
|
+
ApplyDdl: 1,
|
|
21
|
+
ValidateDdl: 1,
|
|
22
|
+
};
|
|
5
23
|
const LOOKS_LIKE_QUERY = /^\s*(\(\s*)*(select|with|insert|update|delete|values|table)\b/i;
|
|
6
24
|
const LOOKS_LIKE_DDL = /^\s*(create|alter|drop|comment)\b/i;
|
|
7
25
|
export async function discover(program, checker, kinds, isCorePath, include) {
|
|
@@ -22,58 +40,83 @@ export async function discover(program, checker, kinds, isCorePath, include) {
|
|
|
22
40
|
const fileDbs = new Map();
|
|
23
41
|
const loose = [];
|
|
24
42
|
// statements written as types
|
|
25
|
-
const syms = refs.length
|
|
43
|
+
const syms = refs.length
|
|
44
|
+
? await checker.getSymbolAtLocation(refs.map((r) => r.typeName))
|
|
45
|
+
: [];
|
|
26
46
|
await Promise.all(refs.map(async (r, i) => {
|
|
27
47
|
let sym = syms[i];
|
|
28
48
|
if (sym && sym.flags & 2097152 /* SymbolFlags.Alias */)
|
|
29
49
|
sym = await checker.getAliasedSymbol(sym);
|
|
30
50
|
const args = r.typeArguments ?? [];
|
|
31
51
|
const isCore = !!sym && sym.declarations.some((d) => isCorePath(d.path));
|
|
32
|
-
const qAt = isCore
|
|
52
|
+
const qAt = isCore
|
|
53
|
+
? (QUERY_ALIASES[sym.name] ?? DDL_ALIASES[sym.name])
|
|
54
|
+
: undefined;
|
|
33
55
|
if (qAt !== undefined && args[0] && args[qAt]) {
|
|
34
56
|
const db = await checker.getTypeFromTypeNode(args[0]);
|
|
35
57
|
fileDbs.set(db.id, db);
|
|
36
58
|
const key = literalOf(args[qAt], kinds);
|
|
37
59
|
if (key === null)
|
|
38
60
|
return;
|
|
39
|
-
(sym.name in DDL_ALIASES ? ddl : types).push({
|
|
61
|
+
(sym.name in DDL_ALIASES ? ddl : types).push({
|
|
62
|
+
key,
|
|
63
|
+
db,
|
|
64
|
+
file: fileName,
|
|
65
|
+
});
|
|
40
66
|
return;
|
|
41
67
|
}
|
|
42
68
|
// the project's own alias of a core one: `type Row<Q extends string> = RowOf<DB, TM, Q>`
|
|
43
|
-
const wrapped = sym && !isCore
|
|
69
|
+
const wrapped = sym && !isCore
|
|
70
|
+
? await wrappedCoreAlias(sym, program, checker, kinds, isCorePath, aliasMemo)
|
|
71
|
+
: null;
|
|
44
72
|
if (wrapped) {
|
|
45
|
-
const key = args[wrapped.param]
|
|
73
|
+
const key = args[wrapped.param]
|
|
74
|
+
? literalOf(args[wrapped.param], kinds)
|
|
75
|
+
: null;
|
|
76
|
+
// Stryker disable next-line ConditionalExpression: a null key (the alias given a non-literal) gives no entry either way; this skips evaluating it
|
|
46
77
|
if (key !== null)
|
|
47
|
-
(wrapped.ddl ? ddl : types).push({
|
|
78
|
+
(wrapped.ddl ? ddl : types).push({
|
|
79
|
+
key,
|
|
80
|
+
db: wrapped.db,
|
|
81
|
+
file: fileName,
|
|
82
|
+
});
|
|
48
83
|
}
|
|
49
84
|
else if (!isCore) {
|
|
50
85
|
for (const a of args) {
|
|
51
86
|
const key = literalOf(a, kinds);
|
|
52
|
-
if (key !== null &&
|
|
87
|
+
if (key !== null &&
|
|
88
|
+
(LOOKS_LIKE_QUERY.test(key) || LOOKS_LIKE_DDL.test(key)))
|
|
53
89
|
loose.push(key);
|
|
54
90
|
}
|
|
55
91
|
}
|
|
56
92
|
}));
|
|
57
93
|
// migration steps: the receiver is core's Migrations<DB>
|
|
58
|
-
const adds = calls.filter((c) => c.expression.kind === kinds.PropertyAccessExpression &&
|
|
94
|
+
const adds = calls.filter((c) => c.expression.kind === kinds.PropertyAccessExpression &&
|
|
95
|
+
c.expression.name.text === "add");
|
|
59
96
|
if (adds.length) {
|
|
60
97
|
const receivers = await checker.getTypeAtLocation(adds.map((c) => c.expression.expression));
|
|
61
98
|
const args = await checker.getTypeAtLocation(adds.map((c) => c.arguments[0]));
|
|
62
99
|
await Promise.all(adds.map(async (_, i) => {
|
|
63
100
|
const r = receivers[i];
|
|
64
101
|
const a = args[i];
|
|
65
|
-
if (!a.isStringLiteralType() ||
|
|
102
|
+
if (!a.isStringLiteralType() ||
|
|
103
|
+
!(await isCoreRef(r, ["Migrations"], isCorePath)))
|
|
66
104
|
return;
|
|
67
105
|
const [db] = await checker.getTypeArguments(r);
|
|
106
|
+
// Stryker disable next-line ConditionalExpression: a Migrations<DB> receiver has its type argument
|
|
68
107
|
if (db)
|
|
69
|
-
ddl.push({ key: a.value, db });
|
|
108
|
+
ddl.push({ key: a.value, db, file: fileName });
|
|
70
109
|
}));
|
|
71
110
|
}
|
|
72
111
|
// sql(…) calls: the callee is core's Sql or TransactionalSql
|
|
73
112
|
const others = calls.filter((c) => !adds.includes(c));
|
|
74
|
-
const callees = others.length
|
|
113
|
+
const callees = others.length
|
|
114
|
+
? await checker.getTypeAtLocation(others.map((c) => c.expression))
|
|
115
|
+
: [];
|
|
75
116
|
const hits = (await Promise.all(others.map((_, i) => isCoreRef(callees[i], ["Sql", "TransactionalSql"], isCorePath).then((ok) => (ok ? i : -1))))).filter((i) => i >= 0);
|
|
76
|
-
const firstArgs = hits.length
|
|
117
|
+
const firstArgs = hits.length
|
|
118
|
+
? await checker.getTypeAtLocation(hits.map((i) => others[i].arguments[0]))
|
|
119
|
+
: [];
|
|
77
120
|
await Promise.all(hits.map(async (i, k) => {
|
|
78
121
|
const [db, tm, keys] = await checker.getTypeArguments(callees[i]);
|
|
79
122
|
if (!db || !tm || !keys)
|
|
@@ -83,12 +126,18 @@ export async function discover(program, checker, kinds, isCorePath, include) {
|
|
|
83
126
|
if (!a.isStringLiteralType())
|
|
84
127
|
return;
|
|
85
128
|
const call = others[i];
|
|
86
|
-
const slots = SLOT.test(a.value) && call.arguments.length > 1
|
|
87
|
-
|
|
129
|
+
const slots = SLOT.test(a.value) && call.arguments.length > 1
|
|
130
|
+
? await checker.getTypeAtLocation(call.arguments[1])
|
|
131
|
+
: null;
|
|
132
|
+
sql.push({ key: a.value, db, tm, keys, slots, file: fileName });
|
|
88
133
|
}));
|
|
89
134
|
for (const key of loose)
|
|
90
135
|
for (const db of fileDbs.values())
|
|
91
|
-
(LOOKS_LIKE_DDL.test(key) ? ddl : types).push({
|
|
136
|
+
(LOOKS_LIKE_DDL.test(key) ? ddl : types).push({
|
|
137
|
+
key,
|
|
138
|
+
db,
|
|
139
|
+
file: fileName,
|
|
140
|
+
});
|
|
92
141
|
}
|
|
93
142
|
return { sql, types, ddl };
|
|
94
143
|
}
|
|
@@ -115,11 +164,16 @@ function wrappedCoreAlias(sym, program, checker, kinds, isCorePath, memo) {
|
|
|
115
164
|
const dbArg = ref.typeArguments?.[0];
|
|
116
165
|
if (!qArg || !dbArg || qArg.kind !== kinds.TypeReference)
|
|
117
166
|
return null;
|
|
118
|
-
const qName = qArg.typeName
|
|
167
|
+
const qName = qArg.typeName
|
|
168
|
+
.text;
|
|
119
169
|
const param = decl.typeParameters?.findIndex((tp) => tp.name.text === qName) ?? -1;
|
|
120
170
|
if (param < 0)
|
|
121
171
|
return null;
|
|
122
|
-
return {
|
|
172
|
+
return {
|
|
173
|
+
param,
|
|
174
|
+
db: await checker.getTypeFromTypeNode(dbArg),
|
|
175
|
+
ddl: target.name in DDL_ALIASES,
|
|
176
|
+
};
|
|
123
177
|
})();
|
|
124
178
|
memo.set(sym.id, found);
|
|
125
179
|
}
|
|
@@ -135,19 +189,24 @@ function nodesIn(sf, kinds) {
|
|
|
135
189
|
const calls = [];
|
|
136
190
|
const refs = [];
|
|
137
191
|
const walk = (n) => {
|
|
138
|
-
if (n.kind === kinds.CallExpression &&
|
|
192
|
+
if (n.kind === kinds.CallExpression &&
|
|
193
|
+
n.arguments.length > 0)
|
|
139
194
|
calls.push(n);
|
|
140
|
-
else if (n.kind === kinds.TypeReference &&
|
|
195
|
+
else if (n.kind === kinds.TypeReference &&
|
|
196
|
+
n.typeArguments?.some((a) => literalOf(a, kinds) !== null))
|
|
141
197
|
refs.push(n);
|
|
142
198
|
n.forEachChild(walk);
|
|
143
199
|
};
|
|
144
200
|
walk(sf);
|
|
145
201
|
return { calls, refs };
|
|
146
202
|
}
|
|
147
|
-
|
|
203
|
+
/** Whether `type` is a reference to one of core's `names` (`Sql`, `Migrations`, …). */
|
|
204
|
+
export async function isCoreRef(type, names, isCorePath) {
|
|
148
205
|
if (!type.isTypeReference())
|
|
149
206
|
return false;
|
|
150
207
|
const sym = await type.getSymbol();
|
|
151
|
-
return !!sym &&
|
|
208
|
+
return (!!sym &&
|
|
209
|
+
names.includes(sym.name) &&
|
|
210
|
+
sym.declarations.some((d) => isCorePath(d.path)));
|
|
152
211
|
}
|
|
153
212
|
//# sourceMappingURL=discover.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discover.js","sources":["../../src/cache/discover.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"discover.js","sources":["../../src/cache/discover.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import type { Node, SourceFile } from "typescript/ast";
|
|
2
|
+
import type { API as AsyncAPI, Checker, Program, Type } from "typescript/async";
|
|
3
|
+
import type { Kinds } from "./discover.js";
|
|
4
|
+
/** The project's `typescript` package: its async API, fs helpers and syntax kinds. */
|
|
5
|
+
export interface TypeScript {
|
|
6
|
+
readonly API: typeof AsyncAPI;
|
|
7
|
+
readonly createFileSystemLayer: (files: readonly (readonly [string, string])[]) => unknown;
|
|
8
|
+
readonly kinds: Kinds & {
|
|
9
|
+
readonly VariableStatement: number;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export declare function loadTypeScript(configFile: string): Promise<TypeScript>;
|
|
13
|
+
export declare const PROBE_HEAD = "import type * as __T from \"@typesql/core/engine\";\nexport declare const __v: __T.CacheVersion;\nexport declare const __fc: __T.FunctionCatalog;\n";
|
|
14
|
+
export interface ProbeProgram {
|
|
15
|
+
readonly program: Program;
|
|
16
|
+
readonly checker: Checker;
|
|
17
|
+
readonly sf: SourceFile;
|
|
18
|
+
}
|
|
19
|
+
export declare class ProbeSession {
|
|
20
|
+
private ts;
|
|
21
|
+
private api;
|
|
22
|
+
private snapshot;
|
|
23
|
+
private changed;
|
|
24
|
+
private disposed;
|
|
25
|
+
private readonly configFile;
|
|
26
|
+
readonly probe: string;
|
|
27
|
+
constructor(configFile: string, probe: string);
|
|
28
|
+
typescript(): Promise<TypeScript>;
|
|
29
|
+
markChanged(files: Iterable<string>): void;
|
|
30
|
+
close(): Promise<void>;
|
|
31
|
+
/** Close for good: a request in progress fails at its next program instead of reopening. */
|
|
32
|
+
dispose(): Promise<void>;
|
|
33
|
+
withProbe(text: string): Promise<ProbeProgram>;
|
|
34
|
+
}
|
|
35
|
+
export type Evaluated = {
|
|
36
|
+
readonly text: string;
|
|
37
|
+
} | {
|
|
38
|
+
readonly error: string;
|
|
39
|
+
};
|
|
40
|
+
export declare function evaluateTypes(session: ProbeSession, base: string, exprs: readonly string[], isCorePath: (path: string) => boolean): Promise<Evaluated[]>;
|
|
41
|
+
export declare function evaluateAnalyses(session: ProbeSession, base: string, items: readonly {
|
|
42
|
+
readonly db: string;
|
|
43
|
+
readonly text: string;
|
|
44
|
+
}[], isCorePath: (path: string) => boolean): Promise<Evaluated[]>;
|
|
45
|
+
/** `export declare const name: …` declarations of the probe, by name. */
|
|
46
|
+
export declare function declarations(sf: SourceFile, kinds: TypeScript["kinds"]): Map<string, Node>;
|
|
47
|
+
export declare function declTypes(checker: Checker, sf: SourceFile, kinds: TypeScript["kinds"]): Promise<Map<string, Type>>;
|
|
48
|
+
/** Probe declarations whose line has a compile error (an alias the probe could not resolve, …), with the first message. */
|
|
49
|
+
export declare function badDeclarations(program: Program, sf: SourceFile): Promise<Map<string, string>>;
|
|
50
|
+
export declare const lineOf: (text: string, offset: number) => number;
|
|
51
|
+
export type TypeValue = string | number | boolean | null | readonly TypeValue[] | TypeRecord | {
|
|
52
|
+
readonly union: readonly TypeValue[];
|
|
53
|
+
} | {
|
|
54
|
+
readonly and: readonly TypeValue[];
|
|
55
|
+
} | {
|
|
56
|
+
readonly ref: string;
|
|
57
|
+
};
|
|
58
|
+
export type TypeRecord = {
|
|
59
|
+
readonly [key: string]: TypeValue;
|
|
60
|
+
};
|
|
61
|
+
export declare function parseTypeText(text: string): TypeValue;
|
|
62
|
+
export interface AnalysisType {
|
|
63
|
+
readonly type: string;
|
|
64
|
+
readonly nullable: boolean;
|
|
65
|
+
readonly printed?: string;
|
|
66
|
+
}
|
|
67
|
+
export interface Analysis {
|
|
68
|
+
readonly kind: string;
|
|
69
|
+
/** Columns of a `*` expansion are marked `star`: their order is the object type's, not the statement's. */
|
|
70
|
+
readonly cols: readonly ({
|
|
71
|
+
readonly name: string;
|
|
72
|
+
readonly star?: true;
|
|
73
|
+
} & AnalysisType)[];
|
|
74
|
+
/** By parameter number (1-based). */
|
|
75
|
+
readonly params: {
|
|
76
|
+
readonly [n: number]: AnalysisType;
|
|
77
|
+
};
|
|
78
|
+
readonly max: number;
|
|
79
|
+
readonly names: readonly string[];
|
|
80
|
+
}
|
|
81
|
+
export interface AnalysisError {
|
|
82
|
+
readonly error: string;
|
|
83
|
+
readonly pos: number | null;
|
|
84
|
+
}
|
|
85
|
+
export declare function readAnalysis(text: string): Analysis | AnalysisError;
|
|
86
|
+
export declare const asRecord: (v: TypeValue | undefined) => TypeRecord | null;
|
|
87
|
+
//# sourceMappingURL=evaluate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluate.d.ts","sources":["../../src/cache/evaluate.ts"],"names":[],"mappings":"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"}
|