zapql-mcp 0.1.2 → 0.1.4

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.
@@ -0,0 +1,6 @@
1
+ import { SQLServerDriver } from './sql-server-driver';
2
+ export type DriverPreference = 'native' | 'tedious' | 'auto';
3
+ export declare function resolveDriverPreference(rawValue: string | undefined): DriverPreference;
4
+ export declare function connectionStringPrefersNative(connectionString: string): boolean;
5
+ export declare function isNativeDriverAvailable(): boolean;
6
+ export declare function createSQLServerDriver(connectionString: string, databaseName?: string, timeoutMs?: number): SQLServerDriver;
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveDriverPreference = resolveDriverPreference;
4
+ exports.connectionStringPrefersNative = connectionStringPrefersNative;
5
+ exports.isNativeDriverAvailable = isNativeDriverAvailable;
6
+ exports.createSQLServerDriver = createSQLServerDriver;
7
+ const native_sql_server_driver_1 = require("./native-sql-server-driver");
8
+ const sql_server_driver_1 = require("./sql-server-driver");
9
+ const TRUE_LIKE_VALUES = new Set(['true', 'yes', 'sspi']);
10
+ function resolveDriverPreference(rawValue) {
11
+ const normalized = String(rawValue || 'auto').trim().toLowerCase();
12
+ if (normalized === 'native' || normalized === 'tedious') {
13
+ return normalized;
14
+ }
15
+ return 'auto';
16
+ }
17
+ function connectionStringPrefersNative(connectionString) {
18
+ const settings = parseConnectionString(connectionString);
19
+ const trustedConnection = settings.get('trusted_connection');
20
+ const integratedSecurity = settings.get('integrated security');
21
+ const trustedEnabled = trustedConnection ? TRUE_LIKE_VALUES.has(trustedConnection) : false;
22
+ const integratedEnabled = integratedSecurity ? TRUE_LIKE_VALUES.has(integratedSecurity) : false;
23
+ return trustedEnabled || integratedEnabled;
24
+ }
25
+ function isNativeDriverAvailable() {
26
+ try {
27
+ require('msnodesqlv8');
28
+ return true;
29
+ }
30
+ catch {
31
+ return false;
32
+ }
33
+ }
34
+ function createSQLServerDriver(connectionString, databaseName, timeoutMs) {
35
+ const preference = resolveDriverPreference(process.env.ZAPQL_DRIVER);
36
+ const nativeAvailable = isNativeDriverAvailable();
37
+ const shouldAutoSelectNative = preference === 'auto' &&
38
+ nativeAvailable &&
39
+ connectionStringPrefersNative(connectionString);
40
+ if (preference === 'native' || shouldAutoSelectNative) {
41
+ if (!nativeAvailable) {
42
+ throw new Error('ZAPQL_DRIVER is set to native but msnodesqlv8 is not installed. Install msnodesqlv8 or set ZAPQL_DRIVER=tedious.');
43
+ }
44
+ return new native_sql_server_driver_1.NativeSQLServerDriver(connectionString, databaseName, timeoutMs);
45
+ }
46
+ return new sql_server_driver_1.SQLServerDriver(connectionString, databaseName, timeoutMs);
47
+ }
48
+ function parseConnectionString(connectionString) {
49
+ const parsed = new Map();
50
+ const segments = connectionString.split(';').map((segment) => segment.trim()).filter(Boolean);
51
+ for (const segment of segments) {
52
+ const index = segment.indexOf('=');
53
+ if (index === -1) {
54
+ continue;
55
+ }
56
+ const key = segment.slice(0, index).trim().toLowerCase();
57
+ const value = segment.slice(index + 1).trim().toLowerCase();
58
+ if (!key) {
59
+ continue;
60
+ }
61
+ parsed.set(key, value);
62
+ }
63
+ return parsed;
64
+ }
65
+ //# sourceMappingURL=driver-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"driver-factory.js","sourceRoot":"","sources":["../../src/database/driver-factory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { ConnectionPool, config } from 'mssql';
2
+ import { SQLServerDriver } from './sql-server-driver';
3
+ import type { ConnectionInfo, ConnectionStatus, QueryResult, SQLDriverType } from './sql-driver';
4
+ export declare class NativeSQLServerDriver extends SQLServerDriver {
5
+ private nativeModule;
6
+ private nativeConnection;
7
+ private readonly nativeConnectionString;
8
+ private connected;
9
+ protected readonly timeoutMs: number;
10
+ constructor(connectionString: string, databaseName?: string, timeoutMs?: number);
11
+ getDriverType(): SQLDriverType;
12
+ getPool(): ConnectionPool | null;
13
+ getConnectionConfig(): config;
14
+ connect(): Promise<ConnectionStatus>;
15
+ disconnect(): Promise<void>;
16
+ executeQuery<T = any>(sql: string, parameters?: Record<string, any>): Promise<QueryResult<T>>;
17
+ getConnectionInfo(): Promise<ConnectionInfo>;
18
+ isConnected(): boolean;
19
+ private getNativeModule;
20
+ private ensureConnected;
21
+ private runNativeQuery;
22
+ private runModuleQuery;
23
+ private normalizeQueryResult;
24
+ private bindNamedParameters;
25
+ private buildNativeConnectionString;
26
+ }
@@ -0,0 +1,287 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NativeSQLServerDriver = void 0;
4
+ const sql_server_driver_1 = require("./sql-server-driver");
5
+ class NativeSQLServerDriver extends sql_server_driver_1.SQLServerDriver {
6
+ nativeModule = null;
7
+ nativeConnection = null;
8
+ nativeConnectionString;
9
+ connected = false;
10
+ timeoutMs;
11
+ constructor(connectionString, databaseName, timeoutMs) {
12
+ super(connectionString, databaseName, timeoutMs);
13
+ this.nativeConnectionString = this.buildNativeConnectionString(connectionString, databaseName, timeoutMs);
14
+ this.timeoutMs = timeoutMs ?? 30000;
15
+ }
16
+ getDriverType() {
17
+ return 'native';
18
+ }
19
+ getPool() {
20
+ return null;
21
+ }
22
+ getConnectionConfig() {
23
+ return super.getConnectionConfig();
24
+ }
25
+ async connect() {
26
+ try {
27
+ await this.ensureConnected();
28
+ const serverInfo = await this.fetchServerInfo();
29
+ return {
30
+ connected: true,
31
+ message: 'Successfully connected to SQL Server using native Windows auth driver',
32
+ serverInfo
33
+ };
34
+ }
35
+ catch (error) {
36
+ const message = this.wrapSqlError(error, 'Failed to connect to SQL Server (native driver)');
37
+ this.connected = false;
38
+ this.nativeConnection = null;
39
+ return {
40
+ connected: false,
41
+ message
42
+ };
43
+ }
44
+ }
45
+ async disconnect() {
46
+ const connection = this.nativeConnection;
47
+ this.nativeConnection = null;
48
+ this.connected = false;
49
+ if (!connection?.close) {
50
+ return;
51
+ }
52
+ await new Promise((resolve) => {
53
+ try {
54
+ connection.close(() => resolve());
55
+ }
56
+ catch {
57
+ resolve();
58
+ }
59
+ });
60
+ }
61
+ async executeQuery(sql, parameters) {
62
+ if (!this.connected) {
63
+ throw new Error('Not connected to database. Call connect() first.');
64
+ }
65
+ try {
66
+ const { sqlText, values } = this.bindNamedParameters(sql, parameters);
67
+ const rawResult = await this.runNativeQuery(sqlText, values);
68
+ return this.normalizeQueryResult(rawResult);
69
+ }
70
+ catch (error) {
71
+ throw new Error(this.wrapSqlError(error, 'Failed to execute query (native driver)'));
72
+ }
73
+ }
74
+ async getConnectionInfo() {
75
+ if (!this.connected) {
76
+ return { connected: false };
77
+ }
78
+ try {
79
+ const serverInfo = await this.fetchServerInfo();
80
+ return { ...serverInfo, connected: true };
81
+ }
82
+ catch {
83
+ return { connected: false };
84
+ }
85
+ }
86
+ isConnected() {
87
+ return this.connected;
88
+ }
89
+ getNativeModule() {
90
+ if (this.nativeModule) {
91
+ return this.nativeModule;
92
+ }
93
+ try {
94
+ // Optional dependency loaded lazily so non-Windows installs still work.
95
+ const loaded = require('msnodesqlv8');
96
+ if (!loaded || (typeof loaded.query !== 'function' && typeof loaded.Connection !== 'function')) {
97
+ throw new Error('msnodesqlv8 module does not expose expected query APIs');
98
+ }
99
+ this.nativeModule = loaded;
100
+ return loaded;
101
+ }
102
+ catch (error) {
103
+ const baseMessage = 'Native SQL Server driver requested but msnodesqlv8 is not available.';
104
+ throw new Error(`${baseMessage} Install msnodesqlv8 or set ZAPQL_DRIVER=tedious. (${error.message})`);
105
+ }
106
+ }
107
+ async ensureConnected() {
108
+ if (this.connected) {
109
+ return;
110
+ }
111
+ const moduleRef = this.getNativeModule();
112
+ if (typeof moduleRef.Connection === 'function') {
113
+ const connection = new moduleRef.Connection();
114
+ await new Promise((resolve, reject) => {
115
+ if (typeof connection.open !== 'function') {
116
+ reject(new Error('Native connection object does not support open()'));
117
+ return;
118
+ }
119
+ try {
120
+ connection.open(this.nativeConnectionString, (error) => {
121
+ if (error) {
122
+ reject(error);
123
+ return;
124
+ }
125
+ resolve();
126
+ });
127
+ }
128
+ catch (error) {
129
+ reject(error);
130
+ }
131
+ });
132
+ this.nativeConnection = connection;
133
+ this.connected = true;
134
+ return;
135
+ }
136
+ // Fallback to one-shot query mode if persistent connections are unavailable.
137
+ await this.runModuleQuery('SELECT 1 AS Connected', []);
138
+ this.connected = true;
139
+ }
140
+ async runNativeQuery(sql, params) {
141
+ if (this.nativeConnection && (typeof this.nativeConnection.query === 'function' || typeof this.nativeConnection.queryRaw === 'function')) {
142
+ const queryFn = this.nativeConnection.queryRaw || this.nativeConnection.query;
143
+ return new Promise((resolve, reject) => {
144
+ const callback = (error, result) => {
145
+ if (error) {
146
+ reject(error);
147
+ return;
148
+ }
149
+ resolve(result ?? []);
150
+ };
151
+ try {
152
+ if (params.length > 0) {
153
+ queryFn.call(this.nativeConnection, sql, params, callback);
154
+ }
155
+ else {
156
+ queryFn.call(this.nativeConnection, sql, callback);
157
+ }
158
+ }
159
+ catch (error) {
160
+ reject(error);
161
+ }
162
+ });
163
+ }
164
+ return this.runModuleQuery(sql, params);
165
+ }
166
+ async runModuleQuery(sql, params) {
167
+ const moduleRef = this.getNativeModule();
168
+ const queryFn = moduleRef.queryRaw || moduleRef.query;
169
+ if (typeof queryFn !== 'function') {
170
+ throw new Error('msnodesqlv8 query() API is unavailable');
171
+ }
172
+ return new Promise((resolve, reject) => {
173
+ const callback = (error, result) => {
174
+ if (error) {
175
+ reject(error);
176
+ return;
177
+ }
178
+ resolve(result ?? []);
179
+ };
180
+ try {
181
+ if (params.length > 0) {
182
+ queryFn(this.nativeConnectionString, sql, params, callback);
183
+ }
184
+ else {
185
+ queryFn(this.nativeConnectionString, sql, callback);
186
+ }
187
+ }
188
+ catch (error) {
189
+ reject(error);
190
+ }
191
+ });
192
+ }
193
+ normalizeQueryResult(rawResult) {
194
+ let recordsets;
195
+ if (rawResult && Array.isArray(rawResult.recordsets)) {
196
+ recordsets = rawResult.recordsets;
197
+ }
198
+ else if (Array.isArray(rawResult) && rawResult.length > 0 && Array.isArray(rawResult[0])) {
199
+ recordsets = rawResult;
200
+ }
201
+ else if (Array.isArray(rawResult)) {
202
+ recordsets = [rawResult];
203
+ }
204
+ else if (rawResult && Array.isArray(rawResult.recordset)) {
205
+ recordsets = [rawResult.recordset];
206
+ }
207
+ else if (rawResult && Array.isArray(rawResult.rows)) {
208
+ recordsets = [rawResult.rows];
209
+ }
210
+ else if (rawResult && typeof rawResult === 'object') {
211
+ recordsets = [[rawResult]];
212
+ }
213
+ else {
214
+ recordsets = [[]];
215
+ }
216
+ const recordset = recordsets[0] || [];
217
+ const rowsAffected = Array.isArray(rawResult?.rowsAffected)
218
+ ? rawResult.rowsAffected
219
+ : [Array.isArray(recordset) ? recordset.length : 0];
220
+ return {
221
+ recordsets,
222
+ recordset,
223
+ rowsAffected,
224
+ output: rawResult?.output ?? {}
225
+ };
226
+ }
227
+ bindNamedParameters(sql, parameters) {
228
+ if (!parameters || Object.keys(parameters).length === 0) {
229
+ return { sqlText: sql, values: [] };
230
+ }
231
+ const values = [];
232
+ const missing = new Set();
233
+ const sqlText = sql.replace(/(^|[^@])@([A-Za-z_][A-Za-z0-9_]*)/g, (_match, prefix, name) => {
234
+ if (!Object.prototype.hasOwnProperty.call(parameters, name)) {
235
+ missing.add(name);
236
+ return `${prefix}@${name}`;
237
+ }
238
+ values.push(parameters[name]);
239
+ return `${prefix}?`;
240
+ });
241
+ if (missing.size > 0) {
242
+ throw new Error(`Missing SQL parameter value(s): ${Array.from(missing).join(', ')}`);
243
+ }
244
+ return { sqlText, values };
245
+ }
246
+ buildNativeConnectionString(connectionString, databaseName, timeoutMs) {
247
+ const timeoutSeconds = Math.max(1, Math.ceil((timeoutMs ?? 30000) / 1000));
248
+ const entries = connectionString
249
+ .split(';')
250
+ .map((part) => part.trim())
251
+ .filter(Boolean)
252
+ .map((part) => {
253
+ const index = part.indexOf('=');
254
+ if (index === -1) {
255
+ return null;
256
+ }
257
+ return {
258
+ key: part.slice(0, index).trim(),
259
+ value: part.slice(index + 1).trim()
260
+ };
261
+ })
262
+ .filter((entry) => entry !== null);
263
+ const indexByKey = new Map();
264
+ entries.forEach((entry, idx) => indexByKey.set(entry.key.toLowerCase(), idx));
265
+ if (databaseName) {
266
+ const dbKeys = ['database', 'initial catalog'];
267
+ const existingDbIndex = dbKeys
268
+ .map((key) => indexByKey.get(key))
269
+ .find((index) => index !== undefined);
270
+ if (existingDbIndex !== undefined) {
271
+ entries[existingDbIndex].value = databaseName;
272
+ }
273
+ else {
274
+ entries.push({ key: 'Database', value: databaseName });
275
+ }
276
+ }
277
+ if (!indexByKey.has('driver')) {
278
+ entries.push({ key: 'Driver', value: '{ODBC Driver 18 for SQL Server}' });
279
+ }
280
+ if (!indexByKey.has('connection timeout')) {
281
+ entries.push({ key: 'Connection Timeout', value: String(timeoutSeconds) });
282
+ }
283
+ return `${entries.map((entry) => `${entry.key}=${entry.value}`).join(';')};`;
284
+ }
285
+ }
286
+ exports.NativeSQLServerDriver = NativeSQLServerDriver;
287
+ //# sourceMappingURL=native-sql-server-driver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-sql-server-driver.js","sourceRoot":"","sources":["../../src/database/native-sql-server-driver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { ConnectionPool, config, IRecordSet } from 'mssql';
2
+ export type SQLDriverType = 'tedious' | 'native';
3
+ export interface ConnectionStatus {
4
+ connected: boolean;
5
+ message: string;
6
+ serverInfo?: {
7
+ serverName?: string;
8
+ databaseName?: string;
9
+ version?: string;
10
+ };
11
+ }
12
+ export interface ConnectionInfo {
13
+ serverName?: string;
14
+ databaseName?: string;
15
+ version?: string;
16
+ connected: boolean;
17
+ }
18
+ export interface QueryResult<T = any> {
19
+ recordsets: IRecordSet<T>[];
20
+ recordset: IRecordSet<T>;
21
+ rowsAffected: number[];
22
+ output: any;
23
+ }
24
+ export interface SQLDriver {
25
+ getDriverType(): SQLDriverType;
26
+ getPool(): ConnectionPool | null;
27
+ getConnectionConfig(): config;
28
+ connect(): Promise<ConnectionStatus>;
29
+ disconnect(): Promise<void>;
30
+ executeQuery<T = any>(sql: string, parameters?: Record<string, any>): Promise<QueryResult<T>>;
31
+ getConnectionInfo(): Promise<ConnectionInfo>;
32
+ isConnected(): boolean;
33
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=sql-driver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-driver.js","sourceRoot":"","sources":["../../src/database/sql-driver.ts"],"names":[],"mappings":""}
@@ -1,31 +1,16 @@
1
- import { ConnectionPool, config, IRecordSet } from 'mssql';
2
- export interface ConnectionStatus {
3
- connected: boolean;
4
- message: string;
5
- serverInfo?: {
6
- serverName?: string;
7
- databaseName?: string;
8
- version?: string;
9
- };
10
- }
11
- export interface ConnectionInfo {
12
- serverName?: string;
13
- databaseName?: string;
14
- version?: string;
15
- connected: boolean;
16
- }
17
- export interface QueryResult<T = any> {
18
- recordsets: IRecordSet<T>[];
19
- recordset: IRecordSet<T>;
20
- rowsAffected: number[];
21
- output: any;
22
- }
1
+ import { ConnectionPool, config } from 'mssql';
2
+ import type { ConnectionInfo, ConnectionStatus, QueryResult, SQLDriverType } from './sql-driver';
3
+ export type { ConnectionInfo, ConnectionStatus, QueryResult } from './sql-driver';
23
4
  export declare class SQLServerDriver {
24
5
  private pool;
25
6
  private connectionString;
26
7
  private databaseName?;
27
- private timeoutMs;
8
+ protected timeoutMs: number;
28
9
  constructor(connectionString: string, databaseName?: string, timeoutMs?: number);
10
+ /**
11
+ * Driver implementation type
12
+ */
13
+ getDriverType(): SQLDriverType;
29
14
  /**
30
15
  * Get the active connection pool (if connected)
31
16
  */
@@ -66,13 +51,17 @@ export declare class SQLServerDriver {
66
51
  /**
67
52
  * Fetch server information safely
68
53
  */
69
- private fetchServerInfo;
54
+ protected fetchServerInfo(): Promise<{
55
+ serverName?: string;
56
+ databaseName?: string;
57
+ version?: string;
58
+ }>;
70
59
  /**
71
60
  * Wrap SQL errors with descriptive messages while avoiding credential exposure
72
61
  */
73
- private wrapSqlError;
62
+ protected wrapSqlError(error: any, context: string): string;
74
63
  /**
75
64
  * Check if a string might contain credentials (basic heuristic)
76
65
  */
77
- private containsCredentials;
66
+ protected containsCredentials(text: string): boolean;
78
67
  }
@@ -14,6 +14,12 @@ class SQLServerDriver {
14
14
  this.timeoutMs = timeoutMs;
15
15
  }
16
16
  }
17
+ /**
18
+ * Driver implementation type
19
+ */
20
+ getDriverType() {
21
+ return 'tedious';
22
+ }
17
23
  /**
18
24
  * Get the active connection pool (if connected)
19
25
  */
@@ -141,18 +147,41 @@ class SQLServerDriver {
141
147
  */
142
148
  parseConnectionString(connectionString) {
143
149
  const parsedConfig = {};
150
+ let domain;
151
+ let port;
144
152
  // Handle different connection string formats
145
153
  if (connectionString.includes('=')) {
146
154
  // Key-value pair format: Server=..;Database=..;
147
155
  const pairs = connectionString.split(';').filter(pair => pair.trim());
148
156
  for (const pair of pairs) {
149
- const [key, value] = pair.split('=').map(s => s.trim());
157
+ const eqIndex = pair.indexOf('=');
158
+ if (eqIndex === -1)
159
+ continue;
160
+ const key = pair.substring(0, eqIndex).trim();
161
+ const value = pair.substring(eqIndex + 1).trim();
150
162
  if (!key || !value)
151
163
  continue;
152
164
  switch (key.toLowerCase()) {
153
165
  case 'server':
154
166
  case 'data source':
155
- parsedConfig.server = value;
167
+ // Handle comma-port format: server,port (ODBC style)
168
+ if (value.includes(',')) {
169
+ const parts = value.split(',');
170
+ parsedConfig.server = parts[0].trim();
171
+ const parsedPort = parseInt(parts[1].trim(), 10);
172
+ if (!isNaN(parsedPort)) {
173
+ port = parsedPort;
174
+ }
175
+ }
176
+ else {
177
+ parsedConfig.server = value;
178
+ }
179
+ break;
180
+ case 'port':
181
+ const parsedPortVal = parseInt(value, 10);
182
+ if (!isNaN(parsedPortVal)) {
183
+ port = parsedPortVal;
184
+ }
156
185
  break;
157
186
  case 'database':
158
187
  case 'initial catalog':
@@ -166,9 +195,12 @@ class SQLServerDriver {
166
195
  case 'pwd':
167
196
  parsedConfig.password = value;
168
197
  break;
198
+ case 'domain':
199
+ domain = value;
200
+ break;
169
201
  case 'trusted_connection':
170
202
  case 'integrated security':
171
- if (value.toLowerCase() === 'true' || value.toLowerCase() === 'sspi') {
203
+ if (value.toLowerCase() === 'true' || value.toLowerCase() === 'yes' || value.toLowerCase() === 'sspi') {
172
204
  parsedConfig.options = { ...parsedConfig.options, trustedConnection: true };
173
205
  }
174
206
  break;
@@ -176,10 +208,12 @@ class SQLServerDriver {
176
208
  parsedConfig.options = { ...parsedConfig.options, encrypt: value.toLowerCase() === 'true' };
177
209
  break;
178
210
  case 'trustservercertificate':
179
- parsedConfig.options = {
180
- ...parsedConfig.options,
181
- trustServerCertificate: value.toLowerCase() === 'true'
182
- };
211
+ if (value.toLowerCase() === 'true' || value.toLowerCase() === 'yes') {
212
+ parsedConfig.options = {
213
+ ...parsedConfig.options,
214
+ trustServerCertificate: true
215
+ };
216
+ }
183
217
  break;
184
218
  }
185
219
  }
@@ -198,6 +232,14 @@ class SQLServerDriver {
198
232
  trustServerCertificate: false,
199
233
  ...parsedConfig.options,
200
234
  };
235
+ // Set port if parsed from connection string
236
+ if (port) {
237
+ parsedConfig.port = port;
238
+ }
239
+ // Configure domain authentication (NTLM) for Windows auth
240
+ if (domain) {
241
+ parsedConfig.domain = domain;
242
+ }
201
243
  return {
202
244
  server: parsedConfig.server,
203
245
  ...parsedConfig,
@@ -1 +1 @@
1
- {"version":3,"file":"sql-server-driver.js","sourceRoot":"","sources":["../../src/database/sql-server-driver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sql-server-driver.js","sourceRoot":"","sources":["../../src/database/sql-server-driver.ts"],"names":[],"mappings":"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"}