@typesql/core 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @typesql/core
2
2
 
3
+ ## 0.4.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 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.
8
+
3
9
  ## 0.3.0
4
10
 
5
11
  ### Minor Changes
package/README.md CHANGED
@@ -119,4 +119,5 @@ recomputing query types on every `tsc` run and every edit.
119
119
  [API reference](https://github.com/ismailkarsli/typesql/blob/main/packages/docs/reference/api.md) ·
120
120
  [DDL support](https://github.com/ismailkarsli/typesql/blob/main/packages/docs/reference/ddl.md) ·
121
121
  [Errors and limits](https://github.com/ismailkarsli/typesql/blob/main/packages/docs/guide/errors-and-limits.md) ·
122
- [Type cache](https://github.com/ismailkarsli/typesql/blob/main/packages/docs/guide/caching.md)
122
+ [Type cache](https://github.com/ismailkarsli/typesql/blob/main/packages/docs/guide/caching.md) ·
123
+ [Editor completions](https://github.com/ismailkarsli/typesql/blob/main/packages/docs/guide/editor.md)
@@ -38,4 +38,6 @@ export declare function discover(program: Program, checker: Checker, kinds: Kind
38
38
  types: TypeSite[];
39
39
  ddl: DdlSite[];
40
40
  }>;
41
+ /** Whether `type` is a reference to one of core's `names` (`Sql`, `Migrations`, …). */
42
+ export declare function isCoreRef(type: Type, names: readonly string[], isCorePath: (path: string) => boolean): Promise<boolean>;
41
43
  //# sourceMappingURL=discover.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"discover.d.ts","sources":["../../src/cache/discover.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAsB,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAGnF,6FAA6F;AAC7F,MAAM,WAAW,KAAK;IACpB,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;CACvC;AAED,MAAM,WAAW,OAAO;IACtB,gFAAgF;IAChF,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,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;CAC7B;AAED,oHAAoH;AACpH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;CACnB;AASD,wBAAsB,QAAQ,CAC5B,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,GACrC,OAAO,CAAC;IAAE,GAAG,EAAE,OAAO,EAAE,CAAC;IAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;IAAC,GAAG,EAAE,OAAO,EAAE,CAAA;CAAE,CAAC,CA6EhE"}
1
+ {"version":3,"file":"discover.d.ts","sources":["../../src/cache/discover.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAsB,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAGnF,6FAA6F;AAC7F,MAAM,WAAW,KAAK;IACpB,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;CACvC;AAED,MAAM,WAAW,OAAO;IACtB,gFAAgF;IAChF,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,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;CAC7B;AAED,oHAAoH;AACpH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;CACnB;AASD,wBAAsB,QAAQ,CAC5B,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,GACrC,OAAO,CAAC;IAAE,GAAG,EAAE,OAAO,EAAE,CAAC;IAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;IAAC,GAAG,EAAE,OAAO,EAAE,CAAA;CAAE,CAAC,CA6EhE;AAuDD,uFAAuF;AACvF,wBAAsB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAI7H"}
@@ -144,7 +144,8 @@ function nodesIn(sf, kinds) {
144
144
  walk(sf);
145
145
  return { calls, refs };
146
146
  }
147
- async function isCoreRef(type, names, isCorePath) {
147
+ /** Whether `type` is a reference to one of core's `names` (`Sql`, `Migrations`, …). */
148
+ export async function isCoreRef(type, names, isCorePath) {
148
149
  if (!type.isTypeReference())
149
150
  return false;
150
151
  const sym = await type.getSymbol();
@@ -1 +1 @@
1
- {"version":3,"file":"discover.js","sources":["../../src/cache/discover.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discover.js","sources":["../../src/cache/discover.ts"],"names":[],"mappings":"AAyCA,MAAM,IAAI,GAAG,4BAA4B,CAAC;AAC1C,0DAA0D;AAC1D,MAAM,aAAa,GAAwC,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;AAChK,MAAM,WAAW,GAAwC,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;AACzF,MAAM,gBAAgB,GAAG,gEAAgE,CAAC;AAC1F,MAAM,cAAc,GAAG,oCAAoC,CAAC;AAE5D,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,OAAgB,EAChB,OAAgB,EAChB,KAAY,EACZ,UAAqC,EACrC,OAAsC;IAEtC,MAAM,GAAG,GAAc,EAAE,CAAC;IAC1B,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,MAAM,GAAG,GAAc,EAAE,CAAC;IAC1B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAmC,CAAC;IAC7D,KAAK,MAAM,QAAQ,IAAI,MAAM,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;QAC1D,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YAAE,SAAS;QACjC,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,CAAC,EAAE;YAAE,SAAS;QAClB,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,SAAS;QAC5C,mFAAmF;QACnF,MAAM,OAAO,GAAG,IAAI,GAAG,EAAgB,CAAC;QACxC,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,8BAA8B;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/F,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;YACxC,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,uBAAuB;gBAAE,GAAG,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAClG,MAAM,IAAI,GAAG,CAAC,CAAC,aAAa,IAAI,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACzE,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,GAAI,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,GAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACtF,IAAI,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC9C,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACvB,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAE,EAAE,KAAK,CAAC,CAAC;gBACzC,IAAI,GAAG,KAAK,IAAI;oBAAE,OAAO;gBACzB,CAAC,GAAI,CAAC,IAAI,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC3D,OAAO;YACT,CAAC;YACD,yFAAyF;YACzF,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACpH,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAChF,IAAI,GAAG,KAAK,IAAI;oBAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9E,CAAC;iBAAM,IAAI,CAAC,MAAM,EAAE,CAAC;gBACnB,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;oBACrB,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;oBAChC,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAChG,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC,CAAC;QAEJ,yDAAyD;QACzD,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,KAAK,CAAC,wBAAwB,IAAK,CAAC,CAAC,UAAuC,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;QACzJ,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAC,CAAC,UAAuC,CAAC,UAAU,CAAC,CAAC,CAAC;YAC1H,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC;YAC/E,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;gBACxC,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC;gBACxB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;gBACnB,IAAI,CAAC,CAAC,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC,MAAM,SAAS,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC,CAAC;oBAAE,OAAO;gBAC1F,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAU,CAAC,CAAC;gBACxD,IAAI,EAAE;oBAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC,CAAC;QACN,CAAC;QAED,6DAA6D;QAC7D,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtG,MAAM,IAAI,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAE,EAAE,CAAC,KAAK,EAAE,kBAAkB,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1K,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChH,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;YACxC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAW,CAAC,CAAC;YAC5E,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI;gBAAE,OAAO;YAChC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACvB,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC;YACxB,IAAI,CAAC,CAAC,CAAC,mBAAmB,EAAE;gBAAE,OAAO;YACrC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;YACxB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3H,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC,CAAC;QAEJ,KAAK,MAAM,GAAG,IAAI,KAAK;YAAE,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,MAAM,EAAE;gBAAE,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IACzH,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAC7B,CAAC;AASD,+GAA+G;AAC/G,SAAS,gBAAgB,CAAC,GAAa,EAAE,OAAgB,EAAE,OAAgB,EAAE,KAAY,EAAE,UAAqC,EAAE,IAA0C;IAC1K,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE;YAClB,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,oBAAoB;gBAAE,OAAO,IAAI,CAAC;YACvE,MAAM,IAAI,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAqC,CAAC;YAC9F,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,CAAC;YACxB,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,aAAa;gBAAE,OAAO,IAAI,CAAC;YACrE,MAAM,GAAG,GAAG,IAAyB,CAAC;YACtC,IAAI,MAAM,GAAG,MAAM,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC7D,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,GAAG,OAAO;gBAAE,MAAM,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;YACtF,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAC;YACjF,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACnE,MAAM,IAAI,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC;YACtE,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;YACrC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,aAAa;gBAAE,OAAO,IAAI,CAAC;YACtE,MAAM,KAAK,GAAK,IAA0B,CAAC,QAA8B,CAAC,IAAI,CAAC;YAC/E,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YACnF,IAAI,KAAK,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC3B,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,IAAI,WAAW,EAAE,CAAC;QAClG,CAAC,CAAC,EAAE,CAAC;QACL,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,SAAS,CAAC,IAAc,EAAE,KAAY;IAC7C,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IACjD,MAAM,GAAG,GAAI,IAAwB,CAAC,OAAO,CAAC;IAC9C,OAAO,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAE,GAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/E,CAAC;AAED,SAAS,OAAO,CAAC,EAAc,EAAE,KAAY;IAC3C,MAAM,KAAK,GAAqB,EAAE,CAAC;IACnC,MAAM,IAAI,GAAwB,EAAE,CAAC;IACrC,MAAM,IAAI,GAAG,CAAC,CAAO,EAAQ,EAAE;QAC7B,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,cAAc,IAAK,CAAoB,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,CAAmB,CAAC,CAAC;aAC9G,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,aAAa,IAAK,CAAuB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,CAAsB,CAAC,CAAC;QAChK,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC,CAAC;IACF,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACzB,CAAC;AAED,uFAAuF;AACvF,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAU,EAAE,KAAwB,EAAE,UAAqC;IACzG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;QAAE,OAAO,KAAK,CAAC;IAC1C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;IACnC,OAAO,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/F,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * The statement literal under the cursor: the first argument of a `sql(…)` / `tx(…)` call (the
3
+ * callee is core's `Sql` or `TransactionalSql`), or of `sql.fragment(…)` / `sql.as(…)`, and the
4
+ * call's `DB` type. Only the callee is typed, never the call.
5
+ */
6
+ import type { Checker, DocumentIdentifier, Program, Type } from "typescript/async";
7
+ import type { LineAndCharacter, SourceFile } from "typescript/ast";
8
+ /** SyntaxKind values (typescript/ast), passed in so this module loads nothing at runtime. */
9
+ export interface EditorKinds {
10
+ readonly CallExpression: number;
11
+ readonly PropertyAccessExpression: number;
12
+ readonly StringLiteral: number;
13
+ readonly NoSubstitutionTemplateLiteral: number;
14
+ readonly TemplateExpression: number;
15
+ }
16
+ export interface SqlCall {
17
+ readonly file: SourceFile;
18
+ /** The cursor's offset in the file. */
19
+ readonly offset: number;
20
+ /** Offsets of the literal's text (inside the quotes) in the file. */
21
+ readonly start: number;
22
+ readonly end: number;
23
+ /**
24
+ * The literal's text as written, as long as the source range: each `${…}` becomes `$0` padded
25
+ * with spaces and each escape sequence keeps its length, so an offset in the text is
26
+ * `start` plus an offset in the file.
27
+ */
28
+ readonly text: string;
29
+ readonly db: Type;
30
+ }
31
+ /** The statement literal of a core `sql` call that contains the cursor (an offset or an LSP position), or null. */
32
+ export declare function sqlCallAt(program: Program, checker: Checker, kinds: EditorKinds, document: DocumentIdentifier, at: number | LineAndCharacter, isCorePath: (path: string) => boolean): Promise<SqlCall | null>;
33
+ //# sourceMappingURL=call.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"call.d.ts","sources":["../../src/editor/call.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,KAAK,EAAkB,gBAAgB,EAAkC,UAAU,EAAsB,MAAM,gBAAgB,CAAC;AAGvI,6FAA6F;AAC7F,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC;IAC1C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,6BAA6B,EAAE,MAAM,CAAC;IAC/C,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,uCAAuC;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,qEAAqE;IACrE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;CACnB;AAID,mHAAmH;AACnH,wBAAsB,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,GAAG,gBAAgB,EAAE,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAoBnN"}
@@ -0,0 +1,79 @@
1
+ import { isCoreRef } from "../cache/discover.js";
2
+ const METHODS = new Set(["fragment", "as"]);
3
+ /** The statement literal of a core `sql` call that contains the cursor (an offset or an LSP position), or null. */
4
+ export async function sqlCallAt(program, checker, kinds, document, at, isCorePath) {
5
+ const file = await program.getSourceFile(document);
6
+ if (!file)
7
+ return null;
8
+ const offset = typeof at === "number" ? at : file.getPositionOfLineAndCharacter(at.line, at.character);
9
+ const call = callAt(file, offset, kinds);
10
+ if (!call)
11
+ return null;
12
+ const literal = call.arguments[0];
13
+ const parts = textOf(file, literal, kinds);
14
+ if (!parts || offset < parts.start || offset > parts.end || parts.holes.some(([s, e]) => offset > s && offset < e))
15
+ return null;
16
+ const callee = call.expression;
17
+ let db;
18
+ if (callee.kind === kinds.PropertyAccessExpression && METHODS.has(callee.name.text)) {
19
+ const receiver = await checker.getTypeAtLocation(callee.expression);
20
+ if (await isCoreRef(receiver, ["Sql", "TransactionalSql"], isCorePath))
21
+ db = (await checker.getTypeArguments(receiver))[0];
22
+ }
23
+ else {
24
+ const t = await checker.getTypeAtLocation(callee);
25
+ if (await isCoreRef(t, ["Sql", "TransactionalSql"], isCorePath))
26
+ db = (await checker.getTypeArguments(t))[0];
27
+ }
28
+ return db ? { file, offset, start: parts.start, end: parts.end, text: parts.text, db } : null;
29
+ }
30
+ /** The innermost call whose first argument is a string or template literal containing `offset`. */
31
+ function callAt(file, offset, kinds) {
32
+ let found = null;
33
+ const visit = (n) => {
34
+ if (offset < n.pos || offset > n.end)
35
+ return;
36
+ if (n.kind === kinds.CallExpression) {
37
+ const arg = n.arguments[0];
38
+ if (arg && (arg.kind === kinds.StringLiteral || arg.kind === kinds.NoSubstitutionTemplateLiteral || arg.kind === kinds.TemplateExpression) && offset > arg.getStart(file) && offset <= arg.end) {
39
+ found = n;
40
+ }
41
+ }
42
+ n.forEachChild(visit);
43
+ };
44
+ visit(file);
45
+ return found;
46
+ }
47
+ /** The literal's text range, its text (see `SqlCall.text`) and its `${…}` ranges. */
48
+ function textOf(file, literal, kinds) {
49
+ const src = file.text;
50
+ const open = literal.getStart(file);
51
+ const quote = src[open];
52
+ const start = open + 1;
53
+ // an unterminated literal (still being typed) has no closing quote
54
+ let end = literal.end;
55
+ if (end - 1 > open && src[end - 1] === quote && src[end - 2] !== "\\")
56
+ end--;
57
+ const holes = [];
58
+ if (literal.kind === kinds.TemplateExpression) {
59
+ const t = literal;
60
+ let prev = t.head;
61
+ for (const span of t.templateSpans) {
62
+ // from `${` to `}`
63
+ holes.push([prev.end - 2, span.literal.getStart(file) + 1]);
64
+ prev = span.literal;
65
+ }
66
+ }
67
+ let text = "";
68
+ let i = start;
69
+ for (const [s, e] of [...holes, [end, end]]) {
70
+ text += escapes(src.slice(i, s));
71
+ if (e > s)
72
+ text += "$0".padEnd(e - s, " ");
73
+ i = e;
74
+ }
75
+ return { start, end, text, holes };
76
+ }
77
+ /** Escape sequences replaced by text of the same length: `\"` → ` "`, `\n` → two spaces. */
78
+ const escapes = (s) => s.replace(/\\(.)/gs, (_, c) => (c === '"' || c === "'" || c === "`" ? ` ${c}` : " "));
79
+ //# sourceMappingURL=call.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"call.js","sources":["../../src/editor/call.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Completion items for a statement literal: what the scanner expects at the cursor (scan.ts),
3
+ * filled from the `DB` type of the call (schema.ts). Names only, inserted at the cursor.
4
+ */
5
+ import type { Checker, DocumentIdentifier, Program } from "typescript/async";
6
+ import type { LineAndCharacter } from "typescript/ast";
7
+ import { type EditorKinds } from "./call.js";
8
+ import { type Context } from "./scan.js";
9
+ import { type Schema } from "./schema.js";
10
+ export interface CompletionItem {
11
+ /** The name. */
12
+ readonly label: string;
13
+ readonly kind: "table" | "view" | "namespace" | "cte" | "column" | "alias";
14
+ /** A column's type (`int4`, `text | null`), a relation's kind, an alias's relation. */
15
+ readonly detail: string;
16
+ /** The name, quoted when Postgres would fold it or read it as a keyword. */
17
+ readonly insertText: string;
18
+ readonly sortText: string;
19
+ }
20
+ /** Items for `ctx` (from `contextAt`) against `schema`. */
21
+ export declare function completions(schema: Schema, ctx: Context): Promise<CompletionItem[]>;
22
+ export interface Range<T> {
23
+ readonly start: T;
24
+ readonly end: T;
25
+ }
26
+ export interface Completions {
27
+ readonly items: readonly CompletionItem[];
28
+ /** What the items replace (the name typed so far): file offsets, and the LSP range. */
29
+ readonly replace: Range<number>;
30
+ readonly replaceRange: Range<LineAndCharacter>;
31
+ /** The statement literal's text (inside the quotes): file offsets, and the LSP range. */
32
+ readonly literal: Range<number>;
33
+ readonly literalRange: Range<LineAndCharacter>;
34
+ }
35
+ /**
36
+ * Completions at the cursor (a file offset or an LSP position), or null when it is not inside
37
+ * the statement literal of a core `sql` call. `items` is empty where the scanner expects nothing.
38
+ */
39
+ export declare function completionsAt(program: Program, checker: Checker, kinds: EditorKinds, document: DocumentIdentifier, at: number | LineAndCharacter, isCorePath: (path: string) => boolean): Promise<Completions | null>;
40
+ /** `name` as SQL: bare when Postgres reads it back unchanged, else in double quotes. */
41
+ export declare function quoteIdent(name: string): string;
42
+ //# sourceMappingURL=complete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"complete.d.ts","sources":["../../src/editor/complete.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAa,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAa,KAAK,OAAO,EAAe,MAAM,WAAW,CAAC;AACjE,OAAO,EAAY,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,WAAW,cAAc;IAC7B,gBAAgB;IAChB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,WAAW,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC3E,uFAAuF;IACvF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,4EAA4E;IAC5E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAKD,2DAA2D;AAC3D,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAgCzF;AAED,MAAM,WAAW,KAAK,CAAC,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,SAAS,cAAc,EAAE,CAAC;IAC1C,uFAAuF;IACvF,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC/C,yFAAyF;IACzF,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;CAChD;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,GAAG,gBAAgB,EAAE,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAU3N;AAuBD,wFAAwF;AACxF,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C"}
@@ -0,0 +1,82 @@
1
+ import { sqlCallAt } from "./call.js";
2
+ import { contextAt } from "./scan.js";
3
+ import { schemaOf } from "./schema.js";
4
+ /** At most this many items per request. */
5
+ const MAX_ITEMS = 1000;
6
+ /** Items for `ctx` (from `contextAt`) against `schema`. */
7
+ export async function completions(schema, ctx) {
8
+ const e = ctx.expect;
9
+ const items = [];
10
+ const add = (label, kind, detail, sort) => {
11
+ if (items.length < MAX_ITEMS)
12
+ items.push({ label, kind, detail, insertText: quoteIdent(label), sortText: sort });
13
+ };
14
+ if (e.kind === "relation") {
15
+ e.ctes.forEach((c, i) => add(c.name, "cte", "WITH query", `0${pad(i)}`));
16
+ const used = new Set(e.used.filter((r) => (r.schema ?? null) === e.schema || (e.schema === "public" && r.schema === null)).map((r) => r.name));
17
+ const rels = await schema.relations(e.schema);
18
+ rels.forEach((r, i) => add(r.name, r.view ? "view" : "table", r.view ? "view" : "table", `${used.has(r.name) ? 1 : 2}${pad(i)}`));
19
+ if (e.schema === null)
20
+ schema.namespaces.forEach((ns, i) => add(ns, "namespace", "schema", `3${pad(i)}`));
21
+ return dedupe(items);
22
+ }
23
+ if (e.kind === "column") {
24
+ const many = e.sources.length > 1;
25
+ const lists = await Promise.all(e.sources.map(async (s) => {
26
+ if (s.columns)
27
+ return s.columns.map((name) => ({ name, detail: many ? `${s.name}.${name}` : "" }));
28
+ const cols = s.rel ? await schema.columns(s.rel) : null;
29
+ return (cols ?? []).map((c) => {
30
+ const type = `${c.type}${c.nullable ? " | null" : ""}`;
31
+ return { name: c.name, detail: many ? `${s.name}.${c.name}: ${type}` : type };
32
+ });
33
+ }));
34
+ lists.forEach((cols, i) => cols.forEach((c, k) => add(c.name, "column", c.detail, `${pad(i)}${pad(k)}`)));
35
+ e.aliases.forEach((a, i) => {
36
+ const s = e.sources.find((x) => x.name === a);
37
+ add(a, "alias", s?.rel ? relName(s.rel) : "", `9${pad(i)}`);
38
+ });
39
+ return dedupe(items);
40
+ }
41
+ return items;
42
+ }
43
+ /**
44
+ * Completions at the cursor (a file offset or an LSP position), or null when it is not inside
45
+ * the statement literal of a core `sql` call. `items` is empty where the scanner expects nothing.
46
+ */
47
+ export async function completionsAt(program, checker, kinds, document, at, isCorePath) {
48
+ const call = await sqlCallAt(program, checker, kinds, document, at, isCorePath);
49
+ if (!call)
50
+ return null;
51
+ const ctx = contextAt(call.text, call.offset - call.start);
52
+ const lc = (o) => call.file.getLineAndCharacterOfPosition(o);
53
+ const replace = { start: call.start + ctx.from, end: call.offset };
54
+ const literal = { start: call.start, end: call.end };
55
+ const ranges = { replace, replaceRange: { start: lc(replace.start), end: lc(replace.end) }, literal, literalRange: { start: lc(literal.start), end: lc(literal.end) } };
56
+ if (ctx.expect.kind === "none")
57
+ return { items: [], ...ranges };
58
+ return { items: await completions(await schemaOf(checker, call.db), ctx), ...ranges };
59
+ }
60
+ const pad = (n) => String(n).padStart(4, "0");
61
+ const relName = (r) => (r.schema === null ? r.name : `${r.schema}.${r.name}`);
62
+ function dedupe(items) {
63
+ const seen = new Set();
64
+ return items.filter((i) => !seen.has(i.label) && !!seen.add(i.label));
65
+ }
66
+ /** Reserved words (Postgres's `reserved` and `type_func_name` keywords): names spelled like them need quotes. */
67
+ const RESERVED = new Set([
68
+ "all", "analyse", "analyze", "and", "any", "array", "as", "asc", "asymmetric", "authorization", "binary", "both", "case", "cast",
69
+ "check", "collate", "collation", "column", "concurrently", "constraint", "create", "cross", "current_catalog", "current_date",
70
+ "current_role", "current_schema", "current_time", "current_timestamp", "current_user", "default", "deferrable", "desc", "distinct",
71
+ "do", "else", "end", "except", "false", "fetch", "for", "foreign", "freeze", "from", "full", "grant", "group", "having", "ilike", "in",
72
+ "initially", "inner", "intersect", "into", "is", "isnull", "join", "lateral", "leading", "left", "like", "limit", "localtime",
73
+ "localtimestamp", "natural", "not", "notnull", "null", "offset", "on", "only", "or", "order", "outer", "overlaps", "placing",
74
+ "primary", "references", "returning", "right", "select", "session_user", "similar", "some", "symmetric", "system_user", "table",
75
+ "tablesample", "then", "to", "trailing", "true", "union", "unique", "user", "using", "variadic", "verbose", "when", "where",
76
+ "window", "with",
77
+ ]);
78
+ /** `name` as SQL: bare when Postgres reads it back unchanged, else in double quotes. */
79
+ export function quoteIdent(name) {
80
+ return /^[a-z_][a-z0-9_$]*$/.test(name) && !RESERVED.has(name) ? name : `"${name.replaceAll('"', '""')}"`;
81
+ }
82
+ //# sourceMappingURL=complete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"complete.js","sources":["../../src/editor/complete.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { EditorKinds } from "./call.js";
2
+ export { sqlCallAt, type EditorKinds, type SqlCall } from "./call.js";
3
+ export { completions, completionsAt, quoteIdent, type CompletionItem, type Completions, type Range } from "./complete.js";
4
+ export { contextAt, fold, type Context, type Cte, type Expect, type RelRef, type ScopeItem } from "./scan.js";
5
+ export { schemaOf, type Column, type Relation, type Schema } from "./schema.js";
6
+ /** Whether a declaration belongs to this copy of `@typesql/core` (its dist or src). */
7
+ export declare const isCorePath: (path: string) => boolean;
8
+ /** The `EditorKinds` from `typescript/ast`'s `SyntaxKind`. */
9
+ export declare function editorKinds(syntaxKind: Readonly<Record<string, number | string>>): EditorKinds;
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sources":["../../src/editor/index.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,EAAE,SAAS,EAAE,KAAK,WAAW,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAE,KAAK,KAAK,EAAE,MAAM,eAAe,CAAC;AAC1H,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,MAAM,EAAE,KAAK,MAAM,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAC9G,OAAO,EAAE,QAAQ,EAAE,KAAK,MAAM,EAAE,KAAK,QAAQ,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAKhF,uFAAuF;AACvF,eAAO,MAAM,UAAU,SAAU,MAAM,KAAG,OAAgG,CAAC;AAE3I,8DAA8D;AAC9D,wBAAgB,WAAW,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,GAAG,WAAW,CAa9F"}
@@ -0,0 +1,37 @@
1
+ /// <reference types="node" />
2
+ /**
3
+ * `@typesql/core/editor`: completions inside statement literals, for editor extensions. Runs in
4
+ * Node next to a TypeScript 7.1 API session (on the language server's own program), reads the
5
+ * schema from the `DB` type of the call with the checker and the context at the cursor with a
6
+ * scanner. It never evaluates a statement's types.
7
+ *
8
+ * Load the project's own copy (resolved from its tsconfig), so completions follow the project's
9
+ * version of the engine.
10
+ */
11
+ import { dirname, join, sep } from "node:path";
12
+ import { fileURLToPath } from "node:url";
13
+ export { sqlCallAt } from "./call.js";
14
+ export { completions, completionsAt, quoteIdent } from "./complete.js";
15
+ export { contextAt, fold } from "./scan.js";
16
+ export { schemaOf } from "./schema.js";
17
+ /** The package root (dist/editor/ or src/editor/ → the directory with package.json). */
18
+ const root = join(dirname(fileURLToPath(import.meta.url)), "..", "..");
19
+ /** Whether a declaration belongs to this copy of `@typesql/core` (its dist or src). */
20
+ export const isCorePath = (path) => path.startsWith(join(root, "dist") + sep) || path.startsWith(join(root, "src") + sep);
21
+ /** The `EditorKinds` from `typescript/ast`'s `SyntaxKind`. */
22
+ export function editorKinds(syntaxKind) {
23
+ const k = (name) => {
24
+ const v = syntaxKind[name];
25
+ if (typeof v !== "number")
26
+ throw new Error(`typesql: SyntaxKind.${name} is missing`);
27
+ return v;
28
+ };
29
+ return {
30
+ CallExpression: k("CallExpression"),
31
+ PropertyAccessExpression: k("PropertyAccessExpression"),
32
+ StringLiteral: k("StringLiteral"),
33
+ NoSubstitutionTemplateLiteral: k("NoSubstitutionTemplateLiteral"),
34
+ TemplateExpression: k("TemplateExpression"),
35
+ };
36
+ }
37
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../src/editor/index.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B;;;;;;;;GAQG;AACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,OAAO,EAAE,SAAS,EAAkC,MAAM,WAAW,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAqD,MAAM,eAAe,CAAC;AAC1H,OAAO,EAAE,SAAS,EAAE,IAAI,EAAoE,MAAM,WAAW,CAAC;AAC9G,OAAO,EAAE,QAAQ,EAA2C,MAAM,aAAa,CAAC;AAEhF,wFAAwF;AACxF,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAEvE,uFAAuF;AACvF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAW,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;AAE3I,8DAA8D;AAC9D,MAAM,UAAU,WAAW,CAAC,UAAqD;IAC/E,MAAM,CAAC,GAAG,CAAC,IAAY,EAAU,EAAE;QACjC,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,aAAa,CAAC,CAAC;QACrF,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IACF,OAAO;QACL,cAAc,EAAE,CAAC,CAAC,gBAAgB,CAAC;QACnC,wBAAwB,EAAE,CAAC,CAAC,0BAA0B,CAAC;QACvD,aAAa,EAAE,CAAC,CAAC,eAAe,CAAC;QACjC,6BAA6B,EAAE,CAAC,CAAC,+BAA+B,CAAC;QACjE,kBAAkB,EAAE,CAAC,CAAC,oBAAoB,CAAC;KAC5C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * What may come at a cursor in a statement's text, for editor completions: a relation, a
3
+ * column (and of which FROM items), or nothing. A rough scan, not the parser: it reads
4
+ * keywords, FROM items, aliases and CTEs around the cursor and never fails on incomplete
5
+ * text. A wrong guess only makes the list less useful; it never changes a type.
6
+ */
7
+ /** A relation as written: `users` (schema null), `auth.sessions`. Unquoted names are folded. */
8
+ export interface RelRef {
9
+ readonly schema: string | null;
10
+ readonly name: string;
11
+ }
12
+ /** A FROM item (or DML target) visible at the cursor. */
13
+ export interface ScopeItem {
14
+ /** The alias, or the relation's name without one. */
15
+ readonly name: string;
16
+ /** The relation it reads; null for a subquery, CTE, function or `{slot}`. */
17
+ readonly rel: RelRef | null;
18
+ /** Output column names of a subquery or CTE, when the scan can tell. */
19
+ readonly columns: readonly string[] | null;
20
+ }
21
+ export interface Cte {
22
+ readonly name: string;
23
+ readonly columns: readonly string[] | null;
24
+ }
25
+ export type Expect = {
26
+ readonly kind: "none";
27
+ }
28
+ /** A relation, CTE or namespace name; `schema` for `auth.|`. `used`: relations the statement names. */
29
+ | {
30
+ readonly kind: "relation";
31
+ readonly schema: string | null;
32
+ readonly ctes: readonly Cte[];
33
+ readonly used: readonly RelRef[];
34
+ }
35
+ /**
36
+ * A column of `sources` (innermost FROM items first). `aliases` are FROM item names to offer
37
+ * too (for a bare name; empty after `alias.` and in a column list).
38
+ */
39
+ | {
40
+ readonly kind: "column";
41
+ readonly sources: readonly ScopeItem[];
42
+ readonly aliases: readonly string[];
43
+ };
44
+ export interface Context {
45
+ readonly expect: Expect;
46
+ /** Start of the name being typed; the completion replaces `[from, offset)`. */
47
+ readonly from: number;
48
+ }
49
+ /** Postgres folds unquoted names to lower case. */
50
+ export declare const fold: (s: string) => string;
51
+ /** What may be typed at `offset` of `text`. */
52
+ export declare function contextAt(text: string, offset: number): Context;
53
+ //# sourceMappingURL=scan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan.d.ts","sources":["../../src/editor/scan.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,gGAAgG;AAChG,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,yDAAyD;AACzD,MAAM,WAAW,SAAS;IACxB,qDAAqD;IACrD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,6EAA6E;IAC7E,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,wEAAwE;IACxE,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;CAC5C;AAED,MAAM,WAAW,GAAG;IAClB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;CAC5C;AAED,MAAM,MAAM,MAAM,GACd;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAC3B,uGAAuG;GACrG;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE;AAChI;;;GAGG;GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC;AAE7G,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,+EAA+E;IAC/E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAqBD,mDAAmD;AACnD,eAAO,MAAM,IAAI,MAAO,MAAM,KAAG,MAAsD,CAAC;AA6cxF,+CAA+C;AAC/C,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAc/D"}