@askdb/sqlserver 0.1.0-beta.19 → 0.1.0-beta.20

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/README.md CHANGED
@@ -9,9 +9,11 @@ Microsoft SQL Server integration for AskDB. Bundles three pieces:
9
9
  ## Install
10
10
 
11
11
  ```bash
12
- pnpm add @askdb/core @askdb/introspect @askdb/sqlserver
12
+ pnpm add @askdb/core @askdb/introspect @askdb/sqlserver ai
13
13
  ```
14
14
 
15
+ `ai` (Vercel AI SDK 6 or 7) is a required peer dependency of `@askdb/core`; your app owns its version.
16
+
15
17
  `mssql` is an **optional peer dependency** — install it only when using live introspection mode:
16
18
 
17
19
  ```bash
@@ -71,6 +73,13 @@ const result = await introspect(
71
73
  | Prisma `sqlserver://` | `sqlserver://localhost:1433;database=MyDb;user=sa;password=pass;encrypt=true` |
72
74
  | ADO.NET (`Key=Value;`) | `Server=localhost,1433;Database=MyDb;User Id=sa;Password=pass;` |
73
75
 
76
+ In the Prisma form, wrap a value that contains `;` in curly braces, as Prisma does: `password={Pass:Word;}` is `Pass:Word;`. AskDB reads braces this way only where its earlier parser couldn't read the value, so strings that worked before keep connecting with the same values:
77
+
78
+ - A value is an escape when it starts with `{`, has a `;` before its first `}`, and ends at the first `}` that is followed only by blanks and then a `;` or the end of the string, where the `;`-separated piece that ends at that `}` has no `=`. Everything between the braces is the value, read verbatim: `{{a;b}}` is `{a;b}`.
79
+ - Any other brace is a plain character, as before: `password={abc}` is `{abc}`, and a `{` that is never closed is part of the value.
80
+ - Prisma reads every `{…}` as an escape, so a URL shared with Prisma that braces a value without a `;` (such as `password={Pass:Word}`) reaches SQL Server with its braces when AskDB connects.
81
+ - Prisma's credential keys `username`, `uid` and `pwd` are also read when `user` or `password` is absent (`username` before `uid`); the canonical key wins when both are set.
82
+
74
83
  **TLS / self-signed certificates**
75
84
 
76
85
  SQL Server uses TLS by default. If you connect to a local or dev instance with a self-signed certificate you will see a `self-signed certificate` error unless you tell the driver to trust it:
@@ -90,9 +99,13 @@ SQL Server uses TLS by default. If you connect to a local or dev instance with a
90
99
 
91
100
  > **Never set `TrustServerCertificate=True` in production** unless you have verified the server's certificate through another means. Use a properly signed certificate, or install the CA cert in the system trust store (`NODE_EXTRA_CA_CERTS` / `--use-system-ca`).
92
101
 
102
+ **Labels for display**
103
+
104
+ `sqlServerConnectorProvider` parses a connection into display-safe parts, so a connector registry's `connectionLabel()` (and the `sourceLabel` from `resolveConnection()`) shows only the host, port and database from any of the three formats: `Server=localhost,1433;Database=app;User Id=sa;Password=pass;` becomes `sqlserver://localhost:1433/app`. The parts come from the same code the connection uses: `resolveConnectionInput()` for `mssql://` and `sqlserver://`, and `@tediousjs/connection-string` (the parser `mssql` uses, a dependency of this package) for ADO.NET strings, so the label names the host and database the driver will use. A string the driver rejects, a named instance or pipe, an `@` in the `sqlserver://` form, a `sqlserver://` string that can be read more than one way (it holds a `{`, a quote, a piece without `=`, or an empty piece before another one), or JDBC becomes `configured sqlserver connection`.
105
+
93
106
  ## Captured metadata
94
107
 
95
- Tables, views, columns (SQL Server native type strings), primary keys, unique constraints, foreign keys (with referential actions), and indexes.
108
+ Tables, views, columns (SQL Server native type strings), primary keys, unique constraints, foreign keys (with referential actions), and indexes. Objects shipped by SQL Server itself (`is_ms_shipped = 1`, e.g. replication `MS*` tables) are excluded.
96
109
 
97
110
  ## License
98
111
 
@@ -1,5 +1,5 @@
1
1
  import type { CatalogQueryRunner, IntrospectionFilters, IntrospectionResult } from "@askdb/introspect";
2
- import { compileTableFilters } from "./glob.js";
2
+ import { compileTableFilters } from "@askdb/introspect/kit";
3
3
  export type DescribeSqlServerInput = {
4
4
  runner: CatalogQueryRunner;
5
5
  filters?: IntrospectionFilters;
@@ -8,9 +8,9 @@ export type DescribeSqlServerInput = {
8
8
  };
9
9
  /** Internal: the catalog SQL strings, exposed for snapshot-based tests. */
10
10
  export declare const SQLSERVER_CATALOG_SQL: {
11
- readonly tables: "SELECT\n s.name AS schema_name,\n t.name AS table_name,\n 'BASE TABLE' AS table_type\nFROM sys.tables t\nJOIN sys.schemas s ON s.schema_id = t.schema_id\nUNION ALL\nSELECT\n s.name AS schema_name,\n v.name AS table_name,\n 'VIEW' AS table_type\nFROM sys.views v\nJOIN sys.schemas s ON s.schema_id = v.schema_id\nORDER BY schema_name, table_name";
12
- readonly views: "SELECT\n s.name AS schema_name,\n v.name AS view_name,\n m.definition AS view_definition\nFROM sys.views v\nJOIN sys.schemas s ON s.schema_id = v.schema_id\nLEFT JOIN sys.sql_modules m ON m.object_id = v.object_id\nORDER BY s.name, v.name";
13
- readonly columns: "SELECT\n s.name AS schema_name,\n o.name AS table_name,\n c.name AS column_name,\n c.column_id AS ordinal_position,\n typ.name AS type_name,\n c.max_length AS max_length,\n c.precision AS precision_v,\n c.scale AS scale,\n c.is_nullable AS is_nullable\nFROM sys.columns c\nJOIN sys.objects o ON o.object_id = c.object_id\nJOIN sys.schemas s ON s.schema_id = o.schema_id\nJOIN sys.types typ ON typ.user_type_id = c.user_type_id\nWHERE o.type IN ('U','V')\nORDER BY s.name, o.name, c.column_id";
11
+ readonly tables: "SELECT\n s.name AS schema_name,\n t.name AS table_name,\n 'BASE TABLE' AS table_type\nFROM sys.tables t\nJOIN sys.schemas s ON s.schema_id = t.schema_id\nWHERE t.is_ms_shipped = 0\nUNION ALL\nSELECT\n s.name AS schema_name,\n v.name AS table_name,\n 'VIEW' AS table_type\nFROM sys.views v\nJOIN sys.schemas s ON s.schema_id = v.schema_id\nWHERE v.is_ms_shipped = 0\nORDER BY schema_name, table_name";
12
+ readonly views: "SELECT\n s.name AS schema_name,\n v.name AS view_name,\n m.definition AS view_definition\nFROM sys.views v\nJOIN sys.schemas s ON s.schema_id = v.schema_id\nLEFT JOIN sys.sql_modules m ON m.object_id = v.object_id\nWHERE v.is_ms_shipped = 0\nORDER BY s.name, v.name";
13
+ readonly columns: "SELECT\n s.name AS schema_name,\n o.name AS table_name,\n c.name AS column_name,\n c.column_id AS ordinal_position,\n typ.name AS type_name,\n c.max_length AS max_length,\n c.precision AS precision_v,\n c.scale AS scale,\n c.is_nullable AS is_nullable\nFROM sys.columns c\nJOIN sys.objects o ON o.object_id = c.object_id\nJOIN sys.schemas s ON s.schema_id = o.schema_id\nJOIN sys.types typ ON typ.user_type_id = c.user_type_id\nWHERE o.type IN ('U','V')\n AND o.is_ms_shipped = 0\nORDER BY s.name, o.name, c.column_id";
14
14
  readonly constraints: "SELECT\n s.name AS schema_name,\n t.name AS table_name,\n i.name AS constraint_name,\n c.name AS column_name,\n ic.key_ordinal AS ordinal_position,\n CASE WHEN i.is_primary_key = 1 THEN 'PRIMARY KEY' ELSE 'UNIQUE' END AS constraint_type\nFROM sys.indexes i\nJOIN sys.tables t ON t.object_id = i.object_id\nJOIN sys.schemas s ON s.schema_id = t.schema_id\nJOIN sys.index_columns ic ON ic.object_id = i.object_id AND ic.index_id = i.index_id\nJOIN sys.columns c ON c.object_id = ic.object_id AND c.column_id = ic.column_id\nWHERE (i.is_primary_key = 1 OR i.is_unique_constraint = 1)\n AND ic.is_included_column = 0\nORDER BY s.name, t.name, i.name, ic.key_ordinal";
15
15
  readonly foreign_keys: "SELECT\n s.name AS schema_name,\n pt.name AS table_name,\n fk.name AS constraint_name,\n pc.name AS column_name,\n fkc.constraint_column_id AS ordinal_position,\n rs.name AS referenced_schema,\n rt.name AS referenced_table,\n rc.name AS referenced_column,\n fk.update_referential_action AS update_action,\n fk.delete_referential_action AS delete_action\nFROM sys.foreign_keys fk\nJOIN sys.tables pt ON pt.object_id = fk.parent_object_id\nJOIN sys.schemas s ON s.schema_id = pt.schema_id\nJOIN sys.tables rt ON rt.object_id = fk.referenced_object_id\nJOIN sys.schemas rs ON rs.schema_id = rt.schema_id\nJOIN sys.foreign_key_columns fkc ON fkc.constraint_object_id = fk.object_id\nJOIN sys.columns pc ON pc.object_id = fkc.parent_object_id AND pc.column_id = fkc.parent_column_id\nJOIN sys.columns rc ON rc.object_id = fkc.referenced_object_id AND rc.column_id = fkc.referenced_column_id\nORDER BY s.name, pt.name, fk.name, fkc.constraint_column_id";
16
16
  readonly indexes: "SELECT\n s.name AS schema_name,\n t.name AS table_name,\n i.name AS index_name,\n c.name AS column_name,\n ic.key_ordinal AS ordinal_position,\n i.is_unique AS is_unique,\n i.type_desc AS method\nFROM sys.indexes i\nJOIN sys.tables t ON t.object_id = i.object_id\nJOIN sys.schemas s ON s.schema_id = t.schema_id\nJOIN sys.index_columns ic ON ic.object_id = i.object_id AND ic.index_id = i.index_id\nJOIN sys.columns c ON c.object_id = ic.object_id AND c.column_id = ic.column_id\nWHERE i.is_primary_key = 0\n AND i.is_unique_constraint = 0\n AND i.name IS NOT NULL\n AND ic.is_included_column = 0\nORDER BY s.name, t.name, i.name, ic.key_ordinal";
@@ -1 +1 @@
1
- {"version":3,"file":"describe.d.ts","sourceRoot":"","sources":["../../src/connector/describe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"describe.d.ts","sourceRoot":"","sources":["../../src/connector/describe.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,4 @@
1
- import { compileTableFilters } from "./glob.js";
2
- import { makeColumnId, makeTableId } from "./ids.js";
1
+ import { ambiguousFilterWarnings, buildOrderedGroups, byName, compileTableFilters, groupBy, makeColumnId, makeTableId, rowsToRecords, sortedUnique, } from "@askdb/introspect/kit";
3
2
  /**
4
3
  * System schemas excluded from the default introspection.
5
4
  * Honors the engine-agnostic `excludeSchemas` filter additively.
@@ -21,12 +20,18 @@ const DEFAULT_SYSTEM_SCHEMAS = new Set([
21
20
  // sys.* catalog queries. Tables/views, columns (no comments/defaults yet —
22
21
  // follow-up), PKs + UNIQUE constraints via sys.indexes, FKs via sys.foreign_keys,
23
22
  // non-PK/non-UNIQUE indexes for completeness.
23
+ //
24
+ // Objects with `is_ms_shipped = 1` are created by SQL Server itself or its
25
+ // features (replication `MS*` tables, CDC/change-tracking artifacts, etc.) —
26
+ // often in `dbo`, so the system-schema list alone does not catch them. They are
27
+ // excluded from the table/view listing (and their columns) at the source.
24
28
  const SQL_TABLES = `SELECT
25
29
  s.name AS schema_name,
26
30
  t.name AS table_name,
27
31
  'BASE TABLE' AS table_type
28
32
  FROM sys.tables t
29
33
  JOIN sys.schemas s ON s.schema_id = t.schema_id
34
+ WHERE t.is_ms_shipped = 0
30
35
  UNION ALL
31
36
  SELECT
32
37
  s.name AS schema_name,
@@ -34,6 +39,7 @@ SELECT
34
39
  'VIEW' AS table_type
35
40
  FROM sys.views v
36
41
  JOIN sys.schemas s ON s.schema_id = v.schema_id
42
+ WHERE v.is_ms_shipped = 0
37
43
  ORDER BY schema_name, table_name`;
38
44
  const SQL_VIEWS = `SELECT
39
45
  s.name AS schema_name,
@@ -42,6 +48,7 @@ const SQL_VIEWS = `SELECT
42
48
  FROM sys.views v
43
49
  JOIN sys.schemas s ON s.schema_id = v.schema_id
44
50
  LEFT JOIN sys.sql_modules m ON m.object_id = v.object_id
51
+ WHERE v.is_ms_shipped = 0
45
52
  ORDER BY s.name, v.name`;
46
53
  const SQL_COLUMNS = `SELECT
47
54
  s.name AS schema_name,
@@ -58,6 +65,7 @@ JOIN sys.objects o ON o.object_id = c.object_id
58
65
  JOIN sys.schemas s ON s.schema_id = o.schema_id
59
66
  JOIN sys.types typ ON typ.user_type_id = c.user_type_id
60
67
  WHERE o.type IN ('U','V')
68
+ AND o.is_ms_shipped = 0
61
69
  ORDER BY s.name, o.name, c.column_id`;
62
70
  const SQL_CONSTRAINTS = `SELECT
63
71
  s.name AS schema_name,
@@ -124,20 +132,7 @@ export const SQLSERVER_CATALOG_SQL = {
124
132
  export async function describeSqlServer(input) {
125
133
  const runner = input.runner;
126
134
  const tableFilter = compileTableFilters(input.filters?.tables);
127
- const run = async (sql) => {
128
- const result = await runner(sql);
129
- if (result.rows.length === 0)
130
- return [];
131
- const idx = new Map();
132
- for (let i = 0; i < result.columns.length; i++)
133
- idx.set(result.columns[i], i);
134
- return result.rows.map((row) => {
135
- const record = {};
136
- for (const [name, i] of idx)
137
- record[name] = row[i];
138
- return record;
139
- });
140
- };
135
+ const run = async (sql) => rowsToRecords(await runner(sql));
141
136
  const [tableRows, viewRows, columnRows, constraintRows, fkRows, indexRows] = await Promise.all([
142
137
  run(SQL_TABLES),
143
138
  run(SQL_VIEWS),
@@ -173,15 +168,7 @@ export function foldSqlServerResult(input) {
173
168
  return false;
174
169
  return true;
175
170
  };
176
- const colsByTable = new Map();
177
- for (const c of input.columnRows) {
178
- if (!includes(c.schema_name))
179
- continue;
180
- const key = `${c.schema_name}.${c.table_name}`;
181
- const list = colsByTable.get(key) ?? [];
182
- list.push(c);
183
- colsByTable.set(key, list);
184
- }
171
+ const colsByTable = groupByQualified(input.columnRows, includes);
185
172
  const constraintsByTable = groupByQualified(input.constraintRows, includes);
186
173
  const fksByTable = groupByQualified(input.fkRows, includes);
187
174
  const indexesByTable = groupByQualified(input.indexRows, includes);
@@ -250,12 +237,7 @@ export function foldSqlServerResult(input) {
250
237
  enums: [],
251
238
  sequences: [],
252
239
  }));
253
- for (const pattern of input.declaredFilters) {
254
- const matched = namespaces.some((ns) => ns.tables.some((t) => compileTableFilters([pattern])(`${ns.name}.${t.name}`)) ||
255
- ns.views.some((v) => compileTableFilters([pattern])(`${ns.name}.${v.name}`)));
256
- if (!matched)
257
- warnings.push({ code: "ambiguous_filter", filter: pattern });
258
- }
240
+ warnings.push(...ambiguousFilterWarnings(input.declaredFilters, namespaces.flatMap((ns) => [...ns.tables, ...ns.views].map((t) => `${ns.name}.${t.name}`))));
259
241
  const schema = { schemaId: input.schemaId, schemas: namespaces };
260
242
  const isEmpty = namespaces.length === 0;
261
243
  return { schema, warnings, isEmpty, viewDefinitions, provider: "sqlserver" };
@@ -293,34 +275,12 @@ function renderType(c) {
293
275
  return c.type_name;
294
276
  }
295
277
  function buildUniques(rows) {
296
- const byName = new Map();
297
- for (const r of rows) {
298
- if (r.constraint_type !== "UNIQUE")
299
- continue;
300
- const list = byName.get(r.constraint_name) ?? [];
301
- list.push(r);
302
- byName.set(r.constraint_name, list);
303
- }
304
- return Array.from(byName, ([name, list]) => ({
305
- name,
306
- columns: list
307
- .slice()
308
- .sort((a, b) => a.ordinal_position - b.ordinal_position)
309
- .map((r) => r.column_name),
310
- })).sort((a, b) => a.name.localeCompare(b.name));
278
+ return buildOrderedGroups(rows.filter((r) => r.constraint_type === "UNIQUE"), (r) => r.constraint_name, (r) => r.ordinal_position, (name, ordered) => ({ name, columns: ordered.map((r) => r.column_name) }));
311
279
  }
312
280
  function buildForeignKeys(rows) {
313
- const byName = new Map();
314
- for (const r of rows) {
315
- const list = byName.get(r.constraint_name) ?? [];
316
- list.push(r);
317
- byName.set(r.constraint_name, list);
318
- }
319
- const fks = [];
320
- for (const [name, list] of byName) {
321
- const ordered = list.slice().sort((a, b) => a.ordinal_position - b.ordinal_position);
281
+ return buildOrderedGroups(rows, (r) => r.constraint_name, (r) => r.ordinal_position, (name, ordered) => {
322
282
  const sample = ordered[0];
323
- fks.push({
283
+ return {
324
284
  name,
325
285
  columns: ordered.map((r) => r.column_name),
326
286
  references: {
@@ -330,9 +290,8 @@ function buildForeignKeys(rows) {
330
290
  },
331
291
  onDelete: mapAction(sample.delete_action),
332
292
  onUpdate: mapAction(sample.update_action),
333
- });
334
- }
335
- return fks.sort((a, b) => a.name.localeCompare(b.name));
293
+ };
294
+ });
336
295
  }
337
296
  function mapAction(code) {
338
297
  switch (code) {
@@ -349,14 +308,7 @@ function mapAction(code) {
349
308
  }
350
309
  }
351
310
  function buildIndexes(rows) {
352
- const byName = new Map();
353
- for (const r of rows) {
354
- const list = byName.get(r.index_name) ?? [];
355
- list.push(r);
356
- byName.set(r.index_name, list);
357
- }
358
- return Array.from(byName, ([name, list]) => {
359
- const ordered = list.slice().sort((a, b) => a.ordinal_position - b.ordinal_position);
311
+ return buildOrderedGroups(rows, (r) => r.index_name, (r) => r.ordinal_position, (name, ordered) => {
360
312
  const sample = ordered[0];
361
313
  return {
362
314
  name,
@@ -364,24 +316,9 @@ function buildIndexes(rows) {
364
316
  unique: sample.is_unique === 1 || sample.is_unique === true,
365
317
  method: sample.method,
366
318
  };
367
- }).sort((a, b) => a.name.localeCompare(b.name));
319
+ });
368
320
  }
369
321
  function groupByQualified(rows, includes) {
370
- const out = new Map();
371
- for (const r of rows) {
372
- if (!includes(r.schema_name))
373
- continue;
374
- const key = `${r.schema_name}.${r.table_name}`;
375
- const list = out.get(key) ?? [];
376
- list.push(r);
377
- out.set(key, list);
378
- }
379
- return out;
380
- }
381
- function sortedUnique(values) {
382
- return Array.from(new Set(values)).sort((a, b) => a.localeCompare(b));
383
- }
384
- function byName(a, b) {
385
- return a.name.localeCompare(b.name);
322
+ return groupBy(rows.filter((r) => includes(r.schema_name)), (r) => `${r.schema_name}.${r.table_name}`);
386
323
  }
387
324
  //# sourceMappingURL=describe.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"describe.js","sourceRoot":"","sources":["../../src/connector/describe.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAErD;;;GAGG;AACH,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAS;IAC7C,KAAK;IACL,oBAAoB;IACpB,UAAU;IACV,gBAAgB;IAChB,kBAAkB;IAClB,aAAa;IACb,mBAAmB;IACnB,eAAe;IACf,eAAe;IACf,mBAAmB;IACnB,mBAAmB;IACnB,OAAO;CACR,CAAC,CAAC;AASH,2EAA2E;AAC3E,kFAAkF;AAClF,8CAA8C;AAE9C,MAAM,UAAU,GAAG;;;;;;;;;;;;;iCAac,CAAC;AAElC,MAAM,SAAS,GAAG;;;;;;;wBAOM,CAAC;AAEzB,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;qCAeiB,CAAC;AAEtC,MAAM,eAAe,GAAG;;;;;;;;;;;;;;gDAcwB,CAAC;AAEjD,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;4DAmBmC,CAAC;AAE7D,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;gDAiB4B,CAAC;AAEjD,2EAA2E;AAC3E,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,MAAM,EAAE,UAAU;IAClB,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,WAAW;IACpB,WAAW,EAAE,eAAe;IAC5B,YAAY,EAAE,gBAAgB;IAC9B,OAAO,EAAE,WAAW;CACZ,CAAC;AAqDX,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,KAA6B;IACnE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,MAAM,WAAW,GAAG,mBAAmB,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAE/D,MAAM,GAAG,GAAG,KAAK,EAAK,GAAW,EAAgB,EAAE;QACjD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE;YAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAC;QAC/E,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAC7B,MAAM,MAAM,GAA4B,EAAE,CAAC;YAC3C,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,GAAG;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACnD,OAAO,MAAW,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC7F,GAAG,CAAW,UAAU,CAAC;QACzB,GAAG,CAAU,SAAS,CAAC;QACvB,GAAG,CAAY,WAAW,CAAC;QAC3B,GAAG,CAAgB,eAAe,CAAC;QACnC,GAAG,CAAgB,gBAAgB,CAAC;QACpC,GAAG,CAAW,WAAW,CAAC;KAC3B,CAAC,CAAC;IAEH,OAAO,mBAAmB,CAAC;QACzB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,cAAc;QAC1C,WAAW;QACX,cAAc,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO;QACtC,cAAc,EAAE,KAAK,CAAC,OAAO,EAAE,cAAc,IAAI,EAAE;QACnD,SAAS;QACT,QAAQ;QACR,UAAU;QACV,cAAc;QACd,MAAM;QACN,SAAS;QACT,eAAe,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE;KAC7C,CAAC,CAAC;AACL,CAAC;AAgBD,MAAM,UAAU,mBAAmB,CAAC,KAAgB;IAClD,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACpF,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,CAAC,UAAkB,EAAW,EAAE;QAC/C,IAAI,sBAAsB,CAAC,GAAG,CAAC,UAAU,CAAC;YAAE,OAAO,KAAK,CAAC;QACzD,IAAI,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;YAAE,OAAO,KAAK,CAAC;QAC7C,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;YAAE,OAAO,KAAK,CAAC;QAC5D,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,IAAI,GAAG,EAAuB,CAAC;IACnD,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC;YAAE,SAAS;QACvC,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;QAC/C,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACb,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,KAAK,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IAC5E,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC5D,MAAM,cAAc,GAAG,gBAAgB,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACnE,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACrD,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC;YAAE,SAAS;QACvC,IAAI,CAAC,CAAC,eAAe;YAAE,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC;IACtG,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,GAAG,EAAsB,CAAC;IACrD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAqB,CAAC;IACnD,MAAM,eAAe,GAA2B,EAAE,CAAC;IAEnD,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC;YAAE,SAAS;QACvC,MAAM,SAAS,GAAG,GAAG,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;QACrD,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC;YAAE,SAAS;QAE5C,MAAM,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;aAC5C,KAAK,EAAE;aACP,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,gBAAgB,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAC5D,MAAM,MAAM,GAAG,WAAW;aACvB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,KAAK,aAAa,CAAC;aAClD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,gBAAgB,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;QAEjC,MAAM,OAAO,GAAgB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC1C,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,CAAC,CACnD,CAAC;QAEF,IAAI,CAAC,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACpD,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YACpD,IAAI,CAAC,IAAI,CAAC;gBACR,MAAM,EAAE,CAAC,CAAC,WAAW;gBACrB,IAAI,EAAE,CAAC,CAAC,UAAU;gBAClB,UAAU,EAAE,GAAG;gBACf,OAAO;aACR,CAAC,CAAC;YACH,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YACvC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,GAAG,CAAC;YAChE,SAAS;QACX,CAAC;QAED,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QACrD,IAAI,CAAC,IAAI,CAAC;YACR,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,UAAU,CAAC;YAC5C,MAAM,EAAE,CAAC,CAAC,WAAW;YACrB,IAAI,EAAE,CAAC,CAAC,UAAU;YAClB,OAAO,EAAE,SAAS;YAClB,OAAO;YACP,UAAU,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS;YACrE,WAAW,EAAE,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YAC9D,iBAAiB,EAAE,YAAY,CAAC,WAAW,CAAC;YAC5C,OAAO,EAAE,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YAC1D,gBAAgB,EAAE,EAAE;SACrB,CAAC,CAAC;QACH,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,WAAW,GAAG,YAAY,CAAC;QAC/B,GAAG,cAAc,CAAC,IAAI,EAAE;QACxB,GAAG,aAAa,CAAC,IAAI,EAAE;KACxB,CAAC,CAAC;IACH,MAAM,UAAU,GAAmB,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC5D,IAAI;QACJ,MAAM,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;QAC7D,KAAK,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;QAC3D,KAAK,EAAE,EAAE;QACT,SAAS,EAAE,EAAE;KACd,CAAC,CAAC,CAAC;IAEJ,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAC7B,CAAC,EAAE,EAAE,EAAE,CACL,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7E,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAC/E,CAAC;QACF,IAAI,CAAC,OAAO;YAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,MAAM,GAAc,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IAC5E,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC;IACxC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AAC/E,CAAC;AAED,SAAS,WAAW,CAClB,UAAkB,EAClB,SAAiB,EACjB,CAAY,EACZ,KAAkB;IAElB,8EAA8E;IAC9E,+EAA+E;IAC/E,0DAA0D;IAC1D,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAC/B,OAAO;QACL,EAAE,EAAE,YAAY,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC;QACtD,IAAI,EAAE,CAAC,CAAC,WAAW;QACnB,eAAe,EAAE,CAAC,CAAC,gBAAgB;QACnC,QAAQ;QACR,OAAO,EAAE,CAAC,CAAC,SAAS;QACpB,QAAQ,EAAE,CAAC,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,IAAI;QACvD,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC;QACpC,iBAAiB,EAAE,SAAS;QAC5B,OAAO,EAAE,SAAS;KACnB,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,CAAY;IAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;IACpC,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC;IAC7F,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC;QAC3E,OAAO,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC;IACzF,CAAC;IACD,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,UAAU,EAAE,CAAC;QACtC,IAAI,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC;YAAE,OAAO,GAAG,CAAC,CAAC,SAAS,OAAO,CAAC;QACtD,oDAAoD;QACpD,OAAO,GAAG,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC;IAC3D,CAAC;IACD,OAAO,CAAC,CAAC,SAAS,CAAC;AACrB,CAAC;AAED,SAAS,YAAY,CAAC,IAAqB;IACzC,MAAM,MAAM,GAAG,IAAI,GAAG,EAA2B,CAAC;IAClD,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,CAAC,eAAe,KAAK,QAAQ;YAAE,SAAS;QAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACb,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3C,IAAI;QACJ,OAAO,EAAE,IAAI;aACV,KAAK,EAAE;aACP,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,gBAAgB,CAAC;aACvD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;KAC7B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAqB;IAC7C,MAAM,MAAM,GAAG,IAAI,GAAG,EAA2B,CAAC;IAClD,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACb,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IACD,MAAM,GAAG,GAAoB,EAAE,CAAC;IAChC,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,gBAAgB,CAAC,CAAC;QACrF,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;QAC3B,GAAG,CAAC,IAAI,CAAC;YACP,IAAI;YACJ,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;YAC1C,UAAU,EAAE;gBACV,MAAM,EAAE,MAAM,CAAC,iBAAiB;gBAChC,KAAK,EAAE,MAAM,CAAC,gBAAgB;gBAC9B,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC;aACjD;YACD,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC;YACzC,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC;SAC1C,CAAC,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,CAAC;YACJ,OAAO,WAAW,CAAC;QACrB,KAAK,CAAC;YACJ,OAAO,SAAS,CAAC;QACnB,KAAK,CAAC;YACJ,OAAO,UAAU,CAAC;QACpB,KAAK,CAAC;YACJ,OAAO,aAAa,CAAC;QACvB;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,IAAgB;IACpC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC7C,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACb,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,gBAAgB,CAAC,CAAC;QACrF,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;QAC3B,OAAO;YACL,IAAI;YACJ,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;YAC1C,MAAM,EAAE,MAAM,CAAC,SAAS,KAAK,CAAC,IAAI,MAAM,CAAC,SAAS,KAAK,IAAI;YAC3D,MAAM,EAAE,MAAM,CAAC,MAAM;SACH,CAAC;IACvB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,gBAAgB,CACvB,IAAS,EACT,QAAyC;IAEzC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAe,CAAC;IACnC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC;YAAE,SAAS;QACvC,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;QAC/C,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACb,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,YAAY,CAAC,MAAwB;IAC5C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,MAAM,CAA6B,CAAI,EAAE,CAAI;IACpD,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"describe.js","sourceRoot":"","sources":["../../src/connector/describe.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,2 @@
1
- import type { ConnectorProviderAdapter } from "@askdb/connectors";
2
- export declare const sqlServerConnectorProvider: ConnectorProviderAdapter;
1
+ export declare const sqlServerConnectorProvider: import("@askdb/introspect").ConnectorProviderAdapter;
3
2
  //# sourceMappingURL=provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/connector/provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAmB,wBAAwB,EAAmB,MAAM,mBAAmB,CAAC;AAIpG,eAAO,MAAM,0BAA0B,EAAE,wBAgBxC,CAAC"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/connector/provider.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,0BAA0B,sDAcrC,CAAC"}
@@ -1,20 +1,19 @@
1
+ import { defineLiveConnectorProvider } from "@askdb/introspect/kit";
1
2
  import { createSqlServerConnector } from "./index.js";
2
3
  import { createSqlServerCatalogQueryRunner } from "../exec/sqlserver.js";
3
- export const sqlServerConnectorProvider = {
4
+ import { parseSqlServerConnection } from "../label.js";
5
+ export const sqlServerConnectorProvider = defineLiveConnectorProvider({
4
6
  provider: "sqlserver",
5
- createConnector(config) {
6
- if (!config.url) {
7
- throw new Error("SQL Server connector requires a connection URL (config.url).");
8
- }
9
- return {
10
- mode: "live",
11
- input: {
12
- mode: "live",
13
- runner: createSqlServerCatalogQueryRunner(config.url),
14
- filters: config.filters,
15
- },
16
- connector: createSqlServerConnector(),
17
- };
7
+ displayName: "SQL Server",
8
+ runtimeKey: "sqlserverDatabaseUrl",
9
+ connectionNoun: "a connection URL",
10
+ missingConnection: {
11
+ cli: "Provide --url <sqlserver-url> (or set introspection.providerConfig.sqlserver.databaseUrl / ASKDB_INTROSPECT_SQLSERVER_URL / DATABASE_URL).",
12
+ config: "No SQL Server connection configured. Set introspection.providerConfig.sqlserver.databaseUrl in askdb.config.ts (bound to an env var in .env).",
18
13
  },
19
- };
14
+ fromExportUnsupported: "--from-export is currently supported only for --engine postgres (got sqlserver).",
15
+ createConnector: createSqlServerConnector,
16
+ createRunner: (url) => createSqlServerCatalogQueryRunner(url),
17
+ connectionLabelParts: parseSqlServerConnection,
18
+ });
20
19
  //# sourceMappingURL=provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/connector/provider.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,iCAAiC,EAAE,MAAM,sBAAsB,CAAC;AAEzE,MAAM,CAAC,MAAM,0BAA0B,GAA6B;IAClE,QAAQ,EAAE,WAAW;IACrB,eAAe,CAAC,MAAuB;QACrC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAClF,CAAC;QACD,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE;gBACL,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,iCAAiC,CAAC,MAAM,CAAC,GAAG,CAAC;gBACrD,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB;YACD,SAAS,EAAE,wBAAwB,EAAwB;SAC5D,CAAC;IACJ,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/connector/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,iCAAiC,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAEvD,MAAM,CAAC,MAAM,0BAA0B,GAAG,2BAA2B,CAAC;IACpE,QAAQ,EAAE,WAAW;IACrB,WAAW,EAAE,YAAY;IACzB,UAAU,EAAE,sBAAsB;IAClC,cAAc,EAAE,kBAAkB;IAClC,iBAAiB,EAAE;QACjB,GAAG,EAAE,4IAA4I;QACjJ,MAAM,EACJ,+IAA+I;KAClJ;IACD,qBAAqB,EAAE,kFAAkF;IACzG,eAAe,EAAE,wBAAwB;IACzC,YAAY,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,iCAAiC,CAAC,GAAG,CAAC;IAC7D,oBAAoB,EAAE,wBAAwB;CAC/C,CAAC,CAAC"}
@@ -1,16 +1,7 @@
1
1
  import type { CatalogQueryRunner } from "@askdb/introspect";
2
+ import { type DriverLoadOptions } from "@askdb/introspect/kit";
2
3
  export type { CatalogQueryResult, CatalogQueryRunner } from "@askdb/introspect";
3
4
  type MssqlModule = typeof import("mssql");
4
- /**
5
- * Lazily resolve the optional `mssql` peer dependency. Mirrors the lazy-load
6
- * pattern in `@askdb/postgres` / `@askdb/mysql` so consumers with a custom
7
- * `CatalogQueryRunner` can import `@askdb/sqlserver` without `mssql` installed.
8
- */
9
- type DriverLoadOptions = {
10
- resolveFrom?: string;
11
- };
12
- /** @internal exposed for tests that need to reset the lazy `mssql` cache. */
13
- export declare function __resetMssqlModuleCacheForTests(): void;
14
5
  type MssqlDriverModule = MssqlModule;
15
6
  /**
16
7
  * Resolve and cache the optional `mssql` peer driver, with the same lazy-import
@@ -45,6 +36,16 @@ export type MssqlConfigInput = {
45
36
  * ADO.NET strings are identified as anything that is not a URL (no `://`).
46
37
  */
47
38
  export declare function resolveConnectionInput(connectionString: string): string | MssqlConfigInput;
39
+ /**
40
+ * True when a Prisma-style `sqlserver://` string can be read more than one
41
+ * way, so a display label must not trust its parts: it has a `{` (an escape
42
+ * only around a whole value holding a `;`, while Prisma reads every `{…}` as
43
+ * one), a quote, a segment that
44
+ * isn't `key=value` (an unbraced `;` inside a value), an empty segment before
45
+ * another one, or an unclosed `{`. The connection still uses
46
+ * `parsePrismaSqlServerUrl`'s reading.
47
+ */
48
+ export declare function isPrismaSqlServerUrlAmbiguous(connectionString: string): boolean;
48
49
  /**
49
50
  * Build the built-in `mssql`-backed catalog query runner used by live SQL
50
51
  * Server introspection. `connectionString` may be:
@@ -1 +1 @@
1
- {"version":3,"file":"sqlserver.d.ts","sourceRoot":"","sources":["../../src/exec/sqlserver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAsB,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAKhF,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAIhF,KAAK,WAAW,GAAG,cAAc,OAAO,CAAC,CAAC;AAE1C;;;;GAIG;AACH,KAAK,iBAAiB,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAoDlD,6EAA6E;AAC7E,wBAAgB,+BAA+B,IAAI,IAAI,CAEtD;AAED,KAAK,iBAAiB,GAAG,WAAW,CAAC;AAErC;;;GAGG;AACH,wBAAsB,eAAe,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAG7F;AAED,wBAAgB,sBAAsB,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAQ3E;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,sBAAsB,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CACnE,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,GAAG,gBAAgB,CAa1F;AAgID;;;;;;;;;GASG;AACH,wBAAgB,iCAAiC,CAC/C,gBAAgB,EAAE,MAAM,EACxB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,kBAAkB,CAEpB"}
1
+ {"version":3,"file":"sqlserver.d.ts","sourceRoot":"","sources":["../../src/exec/sqlserver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAsB,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAIhF,KAAK,WAAW,GAAG,cAAc,OAAO,CAAC,CAAC;AAa1C,KAAK,iBAAiB,GAAG,WAAW,CAAC;AAErC;;;GAGG;AACH,wBAAsB,eAAe,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAG7F;AAED,wBAAgB,sBAAsB,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAE3E;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,sBAAsB,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CACnE,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,GAAG,gBAAgB,CAa1F;AA6ID;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAS/E;AA0HD;;;;;;;;;GASG;AACH,wBAAgB,iCAAiC,CAC/C,gBAAgB,EAAE,MAAM,EACxB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,kBAAkB,CAEpB"}
@@ -1,76 +1,25 @@
1
1
  import { AskDbError } from "@askdb/core";
2
- import { createRequire } from "node:module";
3
- import { join } from "node:path";
4
- import { pathToFileURL } from "node:url";
5
- let mssqlModulePromises = new Map();
6
- function isModuleResolutionFailure(cause, packageName) {
7
- if (!(cause instanceof Error))
8
- return false;
9
- const nestedCause = cause.cause;
10
- if (nestedCause && nestedCause !== cause && isModuleResolutionFailure(nestedCause, packageName)) {
11
- return true;
12
- }
13
- const code = cause.code;
14
- if (code !== "ERR_MODULE_NOT_FOUND" && code !== "MODULE_NOT_FOUND")
15
- return false;
16
- return cause.message.includes(packageName);
17
- }
18
- async function importOptionalMssql(opts) {
19
- try {
20
- return await import("mssql");
21
- }
22
- catch (cause) {
23
- if (!isModuleResolutionFailure(cause, "mssql"))
24
- throw cause;
25
- const fromDir = opts?.resolveFrom ?? process.cwd();
26
- const projectRequire = createRequire(join(fromDir, "package.json"));
27
- try {
28
- const resolved = projectRequire.resolve("mssql");
29
- return (await import(pathToFileURL(resolved).href));
30
- }
31
- catch (projectCause) {
32
- if (!isModuleResolutionFailure(projectCause, "mssql"))
33
- throw projectCause;
34
- throw new AggregateError([cause, projectCause], "Unable to resolve optional `mssql` peer dependency");
35
- }
36
- }
37
- }
38
- async function loadMssqlOrThrow(opts) {
39
- const key = opts?.resolveFrom;
40
- let promise = mssqlModulePromises.get(key);
41
- if (!promise) {
42
- promise = importOptionalMssql(opts).catch((cause) => {
43
- mssqlModulePromises.delete(key);
44
- throw new AskDbError("The built-in SQL Server catalog query runner requires the optional `mssql` peer dependency. " +
45
- "Install it in your project (e.g. `pnpm add mssql`) or include it in the same one-off command " +
46
- "(e.g. `pnpm dlx -p askdb -p mssql askdb ...` or `npx -p askdb -p mssql askdb ...`). " +
47
- "You can also pass a custom catalog query runner to the SQL Server connector.", cause);
48
- });
49
- mssqlModulePromises.set(key, promise);
50
- }
51
- return promise;
52
- }
53
- /** @internal exposed for tests that need to reset the lazy `mssql` cache. */
54
- export function __resetMssqlModuleCacheForTests() {
55
- mssqlModulePromises.clear();
56
- }
2
+ import { createOptionalDriverLoader, rethrowDriverImportError, isDriverInstalled, missingDriverMessage, } from "@askdb/introspect/kit";
3
+ /**
4
+ * Lazily resolve the optional `mssql` peer dependency. Mirrors the lazy-load
5
+ * pattern in `@askdb/postgres` / `@askdb/mysql` so consumers with a custom
6
+ * `CatalogQueryRunner` can import `@askdb/sqlserver` without `mssql` installed.
7
+ */
8
+ const mssqlLoader = createOptionalDriverLoader({
9
+ packageName: "mssql",
10
+ importDriver: () => import("mssql").catch(rethrowDriverImportError),
11
+ missingMessage: missingDriverMessage({ engine: "SQL Server", packageName: "mssql" }),
12
+ });
57
13
  /**
58
14
  * Resolve and cache the optional `mssql` peer driver, with the same lazy-import
59
15
  * + project-root fallback behavior as the catalog runner.
60
16
  */
61
17
  export async function loadMssqlDriver(options) {
62
- const mod = await loadMssqlOrThrow(options);
18
+ const mod = await mssqlLoader.load(options);
63
19
  return mod.default ?? mod;
64
20
  }
65
21
  export function isMssqlDriverInstalled(options) {
66
- try {
67
- const req = createRequire(join(options?.resolveFrom ?? process.cwd(), "package.json"));
68
- req.resolve("mssql");
69
- return true;
70
- }
71
- catch {
72
- return false;
73
- }
22
+ return isDriverInstalled("mssql", options);
74
23
  }
75
24
  /**
76
25
  * mssql v12 uses @tediousjs/connection-string v1.x, which has two known gaps:
@@ -146,12 +95,47 @@ function parseMssqlSchemeUrl(connectionString) {
146
95
  },
147
96
  };
148
97
  }
98
+ /**
99
+ * Parse Prisma's SQL Server connection URL,
100
+ * `sqlserver://HOST[:PORT][;key=value…]`.
101
+ *
102
+ * Backward compatible with the parser this replaces for every string it could
103
+ * read: it connects with exactly the same values as before. Segments are split on `;`,
104
+ * a key ends at its first `=` (so `password=a=b` is `a=b`), keys are trimmed
105
+ * and lower-cased, values are trimmed, non-ASCII is fine, a segment without
106
+ * `=` or with an empty key or value is skipped, and a later key replaces an
107
+ * earlier one. The host part ends at its last `:`, and a port that isn't a
108
+ * number is ignored.
109
+ *
110
+ * On top of that it reads Prisma's `{…}` escaping (Prisma's SQL Server docs:
111
+ * "If your credentials contain `: \ = ; / [ ] { }`, wrap values in curly
112
+ * braces", e.g. `password={Pass:Word;}`), but only where the old parser never
113
+ * read the value as written: a value that starts with `{`, has a `;` before its
114
+ * first `}`, and ends at a `}` whose `;`-separated piece holds no `=`. The old
115
+ * parser cut such a value at its first `;` and dropped that last piece (a piece
116
+ * without `=` is skipped), so it never connected with the value the user wrote.
117
+ * The value is everything between the braces, read verbatim, so `;`, `=` and
118
+ * braces inside it are part of it (`{{a;b}}` is `{a;b}`); it ends at the first
119
+ * `}` followed only by blanks and then `;` or the end of the string.
120
+ *
121
+ * Any other `{` or `}` is a plain character, as before: `password={abc}` is
122
+ * `{abc}`, and an unclosed `{` is part of the value. Braces that close before
123
+ * any `;` never reach into a later value (`password={ab}cd;user={me}` reads
124
+ * `{ab}cd` and `{me}`), and neither does a `{` whose closing `}` ends a later
125
+ * `key=value` piece (`password={Xy7;user={me}` reads `{Xy7` and `{me}`).
126
+ * This is where it differs from Prisma, which reads every `{…}` as an escape
127
+ * (`{abc}` is `abc`) and ends it at the first `}`.
128
+ *
129
+ * Prisma's credential aliases are read (`username` and `uid` for `user`,
130
+ * `pwd` for `password`) only when the canonical key is absent: the old parser
131
+ * dropped them, so such a string had no credentials, and where the canonical
132
+ * key is present it still wins. `initial catalog` is not, because the old parser ignored it and
133
+ * the connection used the login's default database; reading it now would
134
+ * change where a working string connects.
135
+ */
149
136
  function parsePrismaSqlServerUrl(connectionString) {
150
- // Prisma format: sqlserver://HOST:PORT;database=DATABASE;user=USER;password=PASSWORD;encrypt=true
151
- const withoutScheme = connectionString.slice("sqlserver://".length);
152
- const firstSemiIdx = withoutScheme.indexOf(";");
153
- const hostPart = firstSemiIdx === -1 ? withoutScheme : withoutScheme.slice(0, firstSemiIdx);
154
- const paramsPart = firstSemiIdx === -1 ? "" : withoutScheme.slice(firstSemiIdx + 1);
137
+ const segments = splitPrismaSegments(connectionString.slice("sqlserver://".length));
138
+ const hostPart = unbrace(segments[0]);
155
139
  const colonIdx = hostPart.lastIndexOf(":");
156
140
  const server = colonIdx === -1 ? hostPart : hostPart.slice(0, colonIdx);
157
141
  const portStr = colonIdx === -1 ? undefined : hostPart.slice(colonIdx + 1);
@@ -161,21 +145,30 @@ function parsePrismaSqlServerUrl(connectionString) {
161
145
  "Expected: sqlserver://HOST:PORT;database=DATABASE;user=USER;password=PASSWORD");
162
146
  }
163
147
  const params = {};
164
- for (const part of paramsPart.split(";")) {
165
- const eqIdx = part.indexOf("=");
166
- if (eqIdx === -1)
148
+ for (const segment of segments.slice(1)) {
149
+ const eq = segment.findIndex((piece) => !piece.braced && piece.text.includes("="));
150
+ if (eq === -1)
167
151
  continue;
168
- const key = part.slice(0, eqIdx).trim().toLowerCase();
169
- const value = part.slice(eqIdx + 1).trim();
152
+ const split = segment[eq].text.indexOf("=");
153
+ const keyPieces = [...segment.slice(0, eq), { braced: false, text: segment[eq].text.slice(0, split) }];
154
+ const valuePieces = [{ braced: false, text: segment[eq].text.slice(split + 1) }, ...segment.slice(eq + 1)];
155
+ const key = unbrace(keyPieces).trim().toLowerCase();
156
+ const value = trimUnbraced(valuePieces);
170
157
  if (key && value)
171
158
  params[key] = value;
172
159
  }
160
+ // The canonical key wins, as it did when the aliases were ignored; an alias
161
+ // is used only when the canonical key is absent.
162
+ const pick = (...keys) => keys.map((key) => params[key]).find((value) => value !== undefined);
163
+ const database = params["database"];
164
+ const user = pick("user", "username", "uid");
165
+ const password = pick("password", "pwd");
173
166
  return {
174
167
  server,
175
168
  ...(port !== undefined && !Number.isNaN(port) ? { port } : {}),
176
- ...(params["database"] ? { database: params["database"] } : {}),
177
- ...(params["user"] ? { user: params["user"] } : {}),
178
- ...(params["password"] ? { password: params["password"] } : {}),
169
+ ...(database ? { database } : {}),
170
+ ...(user ? { user } : {}),
171
+ ...(password ? { password } : {}),
179
172
  options: {
180
173
  ...(params["encrypt"] !== undefined ? { encrypt: params["encrypt"].toLowerCase() === "true" } : {}),
181
174
  ...(params["trustservercertificate"] !== undefined
@@ -184,8 +177,114 @@ function parsePrismaSqlServerUrl(connectionString) {
184
177
  },
185
178
  };
186
179
  }
180
+ /**
181
+ * True when a Prisma-style `sqlserver://` string can be read more than one
182
+ * way, so a display label must not trust its parts: it has a `{` (an escape
183
+ * only around a whole value holding a `;`, while Prisma reads every `{…}` as
184
+ * one), a quote, a segment that
185
+ * isn't `key=value` (an unbraced `;` inside a value), an empty segment before
186
+ * another one, or an unclosed `{`. The connection still uses
187
+ * `parsePrismaSqlServerUrl`'s reading.
188
+ */
189
+ export function isPrismaSqlServerUrlAmbiguous(connectionString) {
190
+ const rest = connectionString.slice("sqlserver://".length);
191
+ if (/[{'"]/.test(rest))
192
+ return true;
193
+ const segments = rest.split(";").slice(1);
194
+ return segments.some((segment, i) => {
195
+ const last = i === segments.length - 1;
196
+ if (segment.trim() === "")
197
+ return !last;
198
+ return !segment.includes("=");
199
+ });
200
+ }
201
+ /**
202
+ * Split on `;` outside an escaping `{…}`; each segment keeps its braced and
203
+ * plain pieces. A value is an escape (see `parsePrismaSqlServerUrl`) when it
204
+ * starts with `{` (after `key=` and blanks), has a `;` before its first `}`,
205
+ * and ends at a `}` followed only by blanks before the next `;` or the end of
206
+ * the string. Everything else, including the host part, splits on every `;`.
207
+ */
208
+ function splitPrismaSegments(input) {
209
+ const hostEnd = input.indexOf(";");
210
+ if (hostEnd === -1)
211
+ return [[{ braced: false, text: input }]];
212
+ const segments = [[{ braced: false, text: input.slice(0, hostEnd) }]];
213
+ let pos = hostEnd + 1;
214
+ while (pos <= input.length) {
215
+ const next = input.indexOf(";", pos);
216
+ const end = next === -1 ? input.length : next;
217
+ const escape = escapedValue(input, pos, end);
218
+ if (escape) {
219
+ segments.push([
220
+ { braced: false, text: input.slice(pos, escape.open) },
221
+ { braced: true, text: input.slice(escape.open + 1, escape.close) },
222
+ { braced: false, text: input.slice(escape.close + 1, escape.end) },
223
+ ].filter((piece) => piece.braced || piece.text !== ""));
224
+ pos = escape.end + 1;
225
+ }
226
+ else {
227
+ segments.push(end > pos ? [{ braced: false, text: input.slice(pos, end) }] : []);
228
+ pos = end + 1;
229
+ }
230
+ }
231
+ return segments;
232
+ }
233
+ /**
234
+ * The escaping `{…}` of the segment starting at `start` (whose first `;` is at
235
+ * `firstSemi`), or `undefined`: the value must start with `{`, a `;` must come
236
+ * before the first `}` after it, the first `}` followed only by blanks and then
237
+ * `;` or the end of the input closes it, and the `;`-separated piece that `}`
238
+ * ends must hold no `=` (the old parser skipped that piece).
239
+ */
240
+ function escapedValue(input, start, firstSemi) {
241
+ const eq = input.indexOf("=", start);
242
+ if (eq === -1 || eq >= firstSemi)
243
+ return undefined;
244
+ let open = eq + 1;
245
+ while (input[open] === " " || input[open] === "\t")
246
+ open++;
247
+ if (input[open] !== "{")
248
+ return undefined;
249
+ // A `}` before the value's first `;` means the braces wrap no `;`: plain text.
250
+ const firstClose = input.indexOf("}", open + 1);
251
+ if (firstClose === -1 || firstClose < firstSemi)
252
+ return undefined;
253
+ const closing = /\}[ \t]*(?:;|$)/g;
254
+ closing.lastIndex = open + 1;
255
+ const match = closing.exec(input);
256
+ if (!match)
257
+ return undefined;
258
+ const close = match.index;
259
+ // The piece the `}` ends is a `key=value` the old parser read: plain text.
260
+ if (input.slice(input.lastIndexOf(";", close) + 1, close).includes("="))
261
+ return undefined;
262
+ const end = match[0].endsWith(";") ? close + match[0].length - 1 : input.length;
263
+ return { open, close, end };
264
+ }
265
+ function unbrace(pieces) {
266
+ return pieces.map((piece) => piece.text).join("");
267
+ }
268
+ /** Join the pieces, trimming whitespace only from unbraced text at either end. */
269
+ function trimUnbraced(pieces) {
270
+ const copy = pieces.map((piece) => ({ ...piece }));
271
+ while (copy.length > 0 && !copy[0].braced) {
272
+ copy[0].text = copy[0].text.trimStart();
273
+ if (copy[0].text !== "")
274
+ break;
275
+ copy.shift();
276
+ }
277
+ while (copy.length > 0 && !copy[copy.length - 1].braced) {
278
+ const last = copy[copy.length - 1];
279
+ last.text = last.text.trimEnd();
280
+ if (last.text !== "")
281
+ break;
282
+ copy.pop();
283
+ }
284
+ return unbrace(copy);
285
+ }
187
286
  async function runSqlServerCatalogQuery(connectionString, sql, params, options) {
188
- const mod = await loadMssqlOrThrow(options);
287
+ const mod = await mssqlLoader.load(options);
189
288
  const mssql = mod.default ?? mod;
190
289
  const pool = new mssql.ConnectionPool(resolveConnectionInput(connectionString));
191
290
  await pool.connect();
@@ -1 +1 @@
1
- {"version":3,"file":"sqlserver.js","sourceRoot":"","sources":["../../src/exec/sqlserver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sqlserver.js","sourceRoot":"","sources":["../../src/exec/sqlserver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { ConnectionLabelParts } from "@askdb/introspect/kit";
2
+ /**
3
+ * The display-safe parts of a SQL Server connection string, read by the same
4
+ * code the connection uses — never a reimplementation of the grammar
5
+ * (ADR 0011):
6
+ *
7
+ * - `resolveConnectionInput()` turns `mssql://…` and Prisma's
8
+ * `sqlserver://host:port;key=value` form into `{ server, port, database }`
9
+ * (the latter backward compatible, plus Prisma's `{…}` escapes where they wrap a `;`), and hands
10
+ * ADO.NET strings to `mssql`;
11
+ * - `mssql` parses ADO.NET strings with `@tediousjs/connection-string`
12
+ * (`parse(…).toSchema(MSSQL_SCHEMA)`), then splits `data source` into
13
+ * server, instance and port. The split below mirrors that step; a
14
+ * differential test checks the result against `mssql`'s own
15
+ * `ConnectionPool.parseConnectionString`.
16
+ *
17
+ * Returns `undefined` (the registry labels it `configured sqlserver
18
+ * connection`) when a parser throws, when there is no server, for a named
19
+ * instance or named pipe, for any other scheme, for an `@` in the
20
+ * `sqlserver://` form (it has no userinfo) or a `sqlserver://` string that can be
21
+ * read more than one way (`isPrismaSqlServerUrlAmbiguous`), and for an `@` or `#` after the
22
+ * host of an `mssql://` URL (a password containing `/`, `?` or `#` is split
23
+ * there). `formatConnectionLabel`'s allowlist is the second check.
24
+ */
25
+ export declare function parseSqlServerConnection(input: string): ConnectionLabelParts | undefined;
26
+ //# sourceMappingURL=label.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label.d.ts","sourceRoot":"","sources":["../src/label.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAIlE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS,CAmBxF"}
package/dist/label.js ADDED
@@ -0,0 +1,89 @@
1
+ import { MSSQL_SCHEMA, parse } from "@tediousjs/connection-string";
2
+ import { isPrismaSqlServerUrlAmbiguous, resolveConnectionInput } from "./exec/sqlserver.js";
3
+ /**
4
+ * The display-safe parts of a SQL Server connection string, read by the same
5
+ * code the connection uses — never a reimplementation of the grammar
6
+ * (ADR 0011):
7
+ *
8
+ * - `resolveConnectionInput()` turns `mssql://…` and Prisma's
9
+ * `sqlserver://host:port;key=value` form into `{ server, port, database }`
10
+ * (the latter backward compatible, plus Prisma's `{…}` escapes where they wrap a `;`), and hands
11
+ * ADO.NET strings to `mssql`;
12
+ * - `mssql` parses ADO.NET strings with `@tediousjs/connection-string`
13
+ * (`parse(…).toSchema(MSSQL_SCHEMA)`), then splits `data source` into
14
+ * server, instance and port. The split below mirrors that step; a
15
+ * differential test checks the result against `mssql`'s own
16
+ * `ConnectionPool.parseConnectionString`.
17
+ *
18
+ * Returns `undefined` (the registry labels it `configured sqlserver
19
+ * connection`) when a parser throws, when there is no server, for a named
20
+ * instance or named pipe, for any other scheme, for an `@` in the
21
+ * `sqlserver://` form (it has no userinfo) or a `sqlserver://` string that can be
22
+ * read more than one way (`isPrismaSqlServerUrlAmbiguous`), and for an `@` or `#` after the
23
+ * host of an `mssql://` URL (a password containing `/`, `?` or `#` is split
24
+ * there). `formatConnectionLabel`'s allowlist is the second check.
25
+ */
26
+ export function parseSqlServerConnection(input) {
27
+ let resolved;
28
+ try {
29
+ resolved = resolveConnectionInput(input);
30
+ }
31
+ catch {
32
+ return undefined;
33
+ }
34
+ if (typeof resolved === "string") {
35
+ return resolved.includes("://") ? undefined : adoNetParts(resolved);
36
+ }
37
+ if (input.startsWith("sqlserver://") && (input.includes("@") || isPrismaSqlServerUrlAmbiguous(input))) {
38
+ return undefined;
39
+ }
40
+ if (input.startsWith("mssql://") && !mssqlUrlIsUnambiguous(input))
41
+ return undefined;
42
+ return partsWithHost({
43
+ host: resolved.server,
44
+ port: resolved.port === undefined ? undefined : String(resolved.port),
45
+ database: resolved.database,
46
+ });
47
+ }
48
+ function mssqlUrlIsUnambiguous(input) {
49
+ const url = new URL(input);
50
+ return url.hash === "" && !`${url.pathname}${url.search}`.includes("@");
51
+ }
52
+ function adoNetParts(connectionString) {
53
+ let schema;
54
+ try {
55
+ schema = parse(connectionString).toSchema(MSSQL_SCHEMA);
56
+ }
57
+ catch {
58
+ return undefined;
59
+ }
60
+ const dataSource = schema["data source"];
61
+ const database = schema["initial catalog"];
62
+ if (typeof dataSource !== "string" || (database !== undefined && typeof database !== "string")) {
63
+ return undefined;
64
+ }
65
+ // mssql's `data source` handling: `np:` is rejected, `tcp:` stripped,
66
+ // `server\instance` names an instance, `server,port` sets the port.
67
+ if (/^np:/i.test(dataSource))
68
+ return undefined;
69
+ const address = dataSource.replace(/^tcp:/i, "");
70
+ if (address.includes("\\"))
71
+ return undefined;
72
+ // Trimmed only around a `,port`, as mssql does: `tcp: leak` keeps its space.
73
+ const comma = /^(.*),(.*)$/.exec(address);
74
+ const server = comma ? comma[1].trim() : address;
75
+ const port = comma ? comma[2].trim() : undefined;
76
+ const host = server === "." || /^\((local|\.|localdb)\)$/i.test(server) ? "localhost" : server;
77
+ return partsWithHost({ host, port, database });
78
+ }
79
+ /** The parts, or `undefined` (the fallback label) when there is no host: `Server=;Database=app` falls back rather than showing `sqlserver:///app`. */
80
+ function partsWithHost({ host, port, database, }) {
81
+ if (host === "")
82
+ return undefined;
83
+ return {
84
+ host,
85
+ ...(port !== undefined && port !== "" ? { port } : {}),
86
+ ...(database !== undefined && database !== "" ? { database } : {}),
87
+ };
88
+ }
89
+ //# sourceMappingURL=label.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label.js","sourceRoot":"","sources":["../src/label.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@askdb/sqlserver",
3
- "version": "0.1.0-beta.19",
3
+ "version": "0.1.0-beta.20",
4
4
  "description": "AskDB Microsoft SQL Server integration: introspection connector via sys.* catalog views and an mssql-backed catalog query runner. Pairs with @askdb/core's SQLSERVER_DIALECT.",
5
5
  "keywords": [
6
6
  "askdb",
@@ -41,12 +41,12 @@
41
41
  "NOTICE"
42
42
  ],
43
43
  "engines": {
44
- "node": ">=22.12"
44
+ "node": ">=22.23.4"
45
45
  },
46
46
  "dependencies": {
47
- "@askdb/connectors": "0.1.0-beta.8",
48
- "@askdb/core": "1.0.0-beta.43",
49
- "@askdb/introspect": "0.3.0-beta.17"
47
+ "@askdb/core": "1.0.0-beta.44",
48
+ "@askdb/introspect": "0.3.0-beta.18",
49
+ "@tediousjs/connection-string": "^1.1.0"
50
50
  },
51
51
  "peerDependencies": {
52
52
  "mssql": ">=12"
@@ -58,9 +58,9 @@
58
58
  },
59
59
  "devDependencies": {
60
60
  "@types/mssql": "^12.3.0",
61
- "mssql": "^12.5.5",
61
+ "mssql": "^12.7.13",
62
62
  "typescript": "^6.0.3",
63
- "vitest": "^5.0.1"
63
+ "vitest": "^5.0.5"
64
64
  },
65
65
  "scripts": {
66
66
  "build": "tsc -p tsconfig.build.json",
@@ -1,3 +0,0 @@
1
- export type GlobMatcher = (qualifiedName: string) => boolean;
2
- export declare function compileTableFilters(patterns: ReadonlyArray<string> | undefined): GlobMatcher;
3
- //# sourceMappingURL=glob.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"glob.d.ts","sourceRoot":"","sources":["../../src/connector/glob.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,WAAW,GAAG,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC;AAE7D,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS,GAC1C,WAAW,CAIb"}
@@ -1,23 +0,0 @@
1
- /** Minimal glob matcher — identical to the postgres / mysql / sqlite connectors. */
2
- function compileGlob(pattern) {
3
- let out = "^";
4
- for (const ch of pattern) {
5
- if (ch === "*")
6
- out += ".*";
7
- else if (ch === "?")
8
- out += ".";
9
- else if (/[.+^${}()|[\]\\]/.test(ch))
10
- out += "\\" + ch;
11
- else
12
- out += ch;
13
- }
14
- out += "$";
15
- return new RegExp(out);
16
- }
17
- export function compileTableFilters(patterns) {
18
- if (!patterns || patterns.length === 0)
19
- return () => true;
20
- const compiled = patterns.map(compileGlob);
21
- return (qualifiedName) => compiled.some((re) => re.test(qualifiedName));
22
- }
23
- //# sourceMappingURL=glob.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"glob.js","sourceRoot":"","sources":["../../src/connector/glob.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,SAAS,WAAW,CAAC,OAAe;IAClC,IAAI,GAAG,GAAG,GAAG,CAAC;IACd,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;QACzB,IAAI,EAAE,KAAK,GAAG;YAAE,GAAG,IAAI,IAAI,CAAC;aACvB,IAAI,EAAE,KAAK,GAAG;YAAE,GAAG,IAAI,GAAG,CAAC;aAC3B,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;YAAE,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC;;YAClD,GAAG,IAAI,EAAE,CAAC;IACjB,CAAC;IACD,GAAG,IAAI,GAAG,CAAC;IACX,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAID,MAAM,UAAU,mBAAmB,CACjC,QAA2C;IAE3C,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC;IAC1D,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC3C,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;AAC1E,CAAC"}
@@ -1,4 +0,0 @@
1
- /** Schema v2 ID conventions — aligned with the postgres / mysql / sqlite connectors. */
2
- export declare function makeTableId(schemaName: string, tableName: string): string;
3
- export declare function makeColumnId(schemaName: string, tableName: string, columnName: string): string;
4
- //# sourceMappingURL=ids.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ids.d.ts","sourceRoot":"","sources":["../../src/connector/ids.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEzE;AAED,wBAAgB,YAAY,CAC1B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,MAAM,CAER"}
@@ -1,8 +0,0 @@
1
- /** Schema v2 ID conventions — aligned with the postgres / mysql / sqlite connectors. */
2
- export function makeTableId(schemaName, tableName) {
3
- return `table:${schemaName}.${tableName}`;
4
- }
5
- export function makeColumnId(schemaName, tableName, columnName) {
6
- return `table:${schemaName}.${tableName}#${columnName}`;
7
- }
8
- //# sourceMappingURL=ids.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ids.js","sourceRoot":"","sources":["../../src/connector/ids.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,MAAM,UAAU,WAAW,CAAC,UAAkB,EAAE,SAAiB;IAC/D,OAAO,SAAS,UAAU,IAAI,SAAS,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,UAAkB,EAClB,SAAiB,EACjB,UAAkB;IAElB,OAAO,SAAS,UAAU,IAAI,SAAS,IAAI,UAAU,EAAE,CAAC;AAC1D,CAAC"}