@freshguard/freshguard-core 0.11.2

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.
Files changed (180) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +644 -0
  3. package/dist/cli/index.d.ts +3 -0
  4. package/dist/cli/index.d.ts.map +1 -0
  5. package/dist/cli/index.js +350 -0
  6. package/dist/cli/index.js.map +1 -0
  7. package/dist/connectors/base-connector.d.ts +62 -0
  8. package/dist/connectors/base-connector.d.ts.map +1 -0
  9. package/dist/connectors/base-connector.js +549 -0
  10. package/dist/connectors/base-connector.js.map +1 -0
  11. package/dist/connectors/bigquery.d.ts +38 -0
  12. package/dist/connectors/bigquery.d.ts.map +1 -0
  13. package/dist/connectors/bigquery.js +406 -0
  14. package/dist/connectors/bigquery.js.map +1 -0
  15. package/dist/connectors/duckdb.d.ts +36 -0
  16. package/dist/connectors/duckdb.d.ts.map +1 -0
  17. package/dist/connectors/duckdb.js +364 -0
  18. package/dist/connectors/duckdb.js.map +1 -0
  19. package/dist/connectors/index.d.ts +7 -0
  20. package/dist/connectors/index.d.ts.map +1 -0
  21. package/dist/connectors/index.js +7 -0
  22. package/dist/connectors/index.js.map +1 -0
  23. package/dist/connectors/mysql.d.ts +32 -0
  24. package/dist/connectors/mysql.d.ts.map +1 -0
  25. package/dist/connectors/mysql.js +348 -0
  26. package/dist/connectors/mysql.js.map +1 -0
  27. package/dist/connectors/postgres.d.ts +31 -0
  28. package/dist/connectors/postgres.d.ts.map +1 -0
  29. package/dist/connectors/postgres.js +326 -0
  30. package/dist/connectors/postgres.js.map +1 -0
  31. package/dist/connectors/redshift.d.ts +32 -0
  32. package/dist/connectors/redshift.d.ts.map +1 -0
  33. package/dist/connectors/redshift.js +366 -0
  34. package/dist/connectors/redshift.js.map +1 -0
  35. package/dist/connectors/snowflake.d.ts +43 -0
  36. package/dist/connectors/snowflake.d.ts.map +1 -0
  37. package/dist/connectors/snowflake.js +442 -0
  38. package/dist/connectors/snowflake.js.map +1 -0
  39. package/dist/db/index.d.ts +9 -0
  40. package/dist/db/index.d.ts.map +1 -0
  41. package/dist/db/index.js +10 -0
  42. package/dist/db/index.js.map +1 -0
  43. package/dist/db/migrate.d.ts +12 -0
  44. package/dist/db/migrate.d.ts.map +1 -0
  45. package/dist/db/migrate.js +114 -0
  46. package/dist/db/migrate.js.map +1 -0
  47. package/dist/db/schema.d.ts +2053 -0
  48. package/dist/db/schema.d.ts.map +1 -0
  49. package/dist/db/schema.js +164 -0
  50. package/dist/db/schema.js.map +1 -0
  51. package/dist/errors/debug-factory.d.ts +23 -0
  52. package/dist/errors/debug-factory.d.ts.map +1 -0
  53. package/dist/errors/debug-factory.js +149 -0
  54. package/dist/errors/debug-factory.js.map +1 -0
  55. package/dist/errors/index.d.ts +119 -0
  56. package/dist/errors/index.d.ts.map +1 -0
  57. package/dist/errors/index.js +341 -0
  58. package/dist/errors/index.js.map +1 -0
  59. package/dist/index.d.ts +9 -0
  60. package/dist/index.d.ts.map +1 -0
  61. package/dist/index.js +6 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/metadata/duckdb-storage.d.ts +31 -0
  64. package/dist/metadata/duckdb-storage.d.ts.map +1 -0
  65. package/dist/metadata/duckdb-storage.js +230 -0
  66. package/dist/metadata/duckdb-storage.js.map +1 -0
  67. package/dist/metadata/factory.d.ts +4 -0
  68. package/dist/metadata/factory.d.ts.map +1 -0
  69. package/dist/metadata/factory.js +23 -0
  70. package/dist/metadata/factory.js.map +1 -0
  71. package/dist/metadata/index.d.ts +6 -0
  72. package/dist/metadata/index.d.ts.map +1 -0
  73. package/dist/metadata/index.js +4 -0
  74. package/dist/metadata/index.js.map +1 -0
  75. package/dist/metadata/interface.d.ts +26 -0
  76. package/dist/metadata/interface.d.ts.map +1 -0
  77. package/dist/metadata/interface.js +2 -0
  78. package/dist/metadata/interface.js.map +1 -0
  79. package/dist/metadata/postgresql-storage.d.ts +32 -0
  80. package/dist/metadata/postgresql-storage.d.ts.map +1 -0
  81. package/dist/metadata/postgresql-storage.js +242 -0
  82. package/dist/metadata/postgresql-storage.js.map +1 -0
  83. package/dist/metadata/schema-config.d.ts +30 -0
  84. package/dist/metadata/schema-config.d.ts.map +1 -0
  85. package/dist/metadata/schema-config.js +94 -0
  86. package/dist/metadata/schema-config.js.map +1 -0
  87. package/dist/metadata/types.d.ts +35 -0
  88. package/dist/metadata/types.d.ts.map +1 -0
  89. package/dist/metadata/types.js +2 -0
  90. package/dist/metadata/types.js.map +1 -0
  91. package/dist/monitor/baseline-calculator.d.ts +30 -0
  92. package/dist/monitor/baseline-calculator.d.ts.map +1 -0
  93. package/dist/monitor/baseline-calculator.js +192 -0
  94. package/dist/monitor/baseline-calculator.js.map +1 -0
  95. package/dist/monitor/baseline-config.d.ts +37 -0
  96. package/dist/monitor/baseline-config.d.ts.map +1 -0
  97. package/dist/monitor/baseline-config.js +156 -0
  98. package/dist/monitor/baseline-config.js.map +1 -0
  99. package/dist/monitor/freshness.d.ts +5 -0
  100. package/dist/monitor/freshness.d.ts.map +1 -0
  101. package/dist/monitor/freshness.js +239 -0
  102. package/dist/monitor/freshness.js.map +1 -0
  103. package/dist/monitor/index.d.ts +5 -0
  104. package/dist/monitor/index.d.ts.map +1 -0
  105. package/dist/monitor/index.js +5 -0
  106. package/dist/monitor/index.js.map +1 -0
  107. package/dist/monitor/schema-baseline.d.ts +22 -0
  108. package/dist/monitor/schema-baseline.d.ts.map +1 -0
  109. package/dist/monitor/schema-baseline.js +211 -0
  110. package/dist/monitor/schema-baseline.js.map +1 -0
  111. package/dist/monitor/schema-changes.d.ts +5 -0
  112. package/dist/monitor/schema-changes.d.ts.map +1 -0
  113. package/dist/monitor/schema-changes.js +289 -0
  114. package/dist/monitor/schema-changes.js.map +1 -0
  115. package/dist/monitor/volume.d.ts +5 -0
  116. package/dist/monitor/volume.d.ts.map +1 -0
  117. package/dist/monitor/volume.js +262 -0
  118. package/dist/monitor/volume.js.map +1 -0
  119. package/dist/observability/logger.d.ts +63 -0
  120. package/dist/observability/logger.d.ts.map +1 -0
  121. package/dist/observability/logger.js +282 -0
  122. package/dist/observability/logger.js.map +1 -0
  123. package/dist/observability/metrics.d.ts +106 -0
  124. package/dist/observability/metrics.d.ts.map +1 -0
  125. package/dist/observability/metrics.js +441 -0
  126. package/dist/observability/metrics.js.map +1 -0
  127. package/dist/query-analyzer.js +526 -0
  128. package/dist/resilience/circuit-breaker.d.ts +94 -0
  129. package/dist/resilience/circuit-breaker.d.ts.map +1 -0
  130. package/dist/resilience/circuit-breaker.js +379 -0
  131. package/dist/resilience/circuit-breaker.js.map +1 -0
  132. package/dist/resilience/index.d.ts +7 -0
  133. package/dist/resilience/index.d.ts.map +1 -0
  134. package/dist/resilience/index.js +7 -0
  135. package/dist/resilience/index.js.map +1 -0
  136. package/dist/resilience/retry-policy.d.ts +87 -0
  137. package/dist/resilience/retry-policy.d.ts.map +1 -0
  138. package/dist/resilience/retry-policy.js +423 -0
  139. package/dist/resilience/retry-policy.js.map +1 -0
  140. package/dist/resilience/timeout-manager.d.ts +97 -0
  141. package/dist/resilience/timeout-manager.d.ts.map +1 -0
  142. package/dist/resilience/timeout-manager.js +339 -0
  143. package/dist/resilience/timeout-manager.js.map +1 -0
  144. package/dist/security/query-analyzer.d.ts +82 -0
  145. package/dist/security/query-analyzer.d.ts.map +1 -0
  146. package/dist/security/query-analyzer.js +381 -0
  147. package/dist/security/query-analyzer.js.map +1 -0
  148. package/dist/security/schema-cache.d.ts +95 -0
  149. package/dist/security/schema-cache.d.ts.map +1 -0
  150. package/dist/security/schema-cache.js +344 -0
  151. package/dist/security/schema-cache.js.map +1 -0
  152. package/dist/types/connector.d.ts +68 -0
  153. package/dist/types/connector.d.ts.map +1 -0
  154. package/dist/types/connector.js +26 -0
  155. package/dist/types/connector.js.map +1 -0
  156. package/dist/types.d.ts +244 -0
  157. package/dist/types.d.ts.map +1 -0
  158. package/dist/types.js +2 -0
  159. package/dist/types.js.map +1 -0
  160. package/dist/validation/index.d.ts +7 -0
  161. package/dist/validation/index.d.ts.map +1 -0
  162. package/dist/validation/index.js +5 -0
  163. package/dist/validation/index.js.map +1 -0
  164. package/dist/validation/runtime-validator.d.ts +70 -0
  165. package/dist/validation/runtime-validator.d.ts.map +1 -0
  166. package/dist/validation/runtime-validator.js +206 -0
  167. package/dist/validation/runtime-validator.js.map +1 -0
  168. package/dist/validation/sanitizers.d.ts +56 -0
  169. package/dist/validation/sanitizers.d.ts.map +1 -0
  170. package/dist/validation/sanitizers.js +264 -0
  171. package/dist/validation/sanitizers.js.map +1 -0
  172. package/dist/validation/schemas.d.ts +224 -0
  173. package/dist/validation/schemas.d.ts.map +1 -0
  174. package/dist/validation/schemas.js +263 -0
  175. package/dist/validation/schemas.js.map +1 -0
  176. package/dist/validators/index.d.ts +18 -0
  177. package/dist/validators/index.d.ts.map +1 -0
  178. package/dist/validators/index.js +209 -0
  179. package/dist/validators/index.js.map +1 -0
  180. package/package.json +91 -0
@@ -0,0 +1,366 @@
1
+ import postgres from 'postgres';
2
+ import { BaseConnector } from './base-connector.js';
3
+ import { ConnectionError, TimeoutError, QueryError, ErrorHandler } from '../errors/index.js';
4
+ import { validateConnectorConfig } from '../validators/index.js';
5
+ export class RedshiftConnector extends BaseConnector {
6
+ client = null;
7
+ connected = false;
8
+ constructor(config, securityConfig) {
9
+ validateConnectorConfig(config);
10
+ super(config, securityConfig);
11
+ }
12
+ async connect() {
13
+ if (this.connected && this.client) {
14
+ return;
15
+ }
16
+ try {
17
+ const sslConfig = this.requireSSL ? { rejectUnauthorized: true } : false;
18
+ this.client = postgres({
19
+ host: this.config.host,
20
+ port: this.config.port || 5439,
21
+ database: this.config.database,
22
+ username: this.config.username,
23
+ password: this.config.password,
24
+ ssl: this.config.ssl !== false ? sslConfig : false,
25
+ connection: {
26
+ application_name: this.config.applicationName || 'freshguard-core'
27
+ },
28
+ transform: {
29
+ undefined: null
30
+ },
31
+ connect_timeout: this.connectionTimeout / 1000,
32
+ max: 1,
33
+ idle_timeout: 30,
34
+ max_lifetime: 60 * 60,
35
+ prepare: false
36
+ });
37
+ this.connected = true;
38
+ }
39
+ catch (error) {
40
+ throw new ConnectionError('Failed to connect to Redshift', this.config.host, this.config.port, error instanceof Error ? error : undefined);
41
+ }
42
+ }
43
+ async executeQuery(sql) {
44
+ return this.executeParameterizedQuery(sql, []);
45
+ }
46
+ async executeParameterizedQuery(sql, parameters = []) {
47
+ await this.connect();
48
+ if (!this.client) {
49
+ throw new ConnectionError('Database connection not available');
50
+ }
51
+ try {
52
+ const result = await this.executeWithTimeout(async () => parameters.length > 0
53
+ ? await this.client.unsafe(sql, parameters)
54
+ : await this.client.unsafe(sql), this.queryTimeout);
55
+ this.validateResultSize(result);
56
+ return result;
57
+ }
58
+ catch (error) {
59
+ if (error instanceof TimeoutError) {
60
+ throw error;
61
+ }
62
+ throw new QueryError(ErrorHandler.getUserMessage(error), 'query_execution', undefined, error instanceof Error ? error : undefined);
63
+ }
64
+ }
65
+ async testConnection(debugConfig) {
66
+ const mergedDebugConfig = this.mergeDebugConfig(debugConfig);
67
+ const debugId = `rs-test-${Date.now().toString(36)}-${Math.random().toString(36).substr(2, 5)}`;
68
+ const startTime = performance.now();
69
+ try {
70
+ this.logDebugInfo(mergedDebugConfig, debugId, 'Starting connection test', {
71
+ host: this.config.host,
72
+ port: this.config.port,
73
+ database: this.config.database,
74
+ ssl: this.config.ssl
75
+ });
76
+ await this.connect();
77
+ if (!this.client) {
78
+ this.logDebugError(mergedDebugConfig, debugId, 'Connection test', {
79
+ error: 'Client not available after connect',
80
+ duration: performance.now() - startTime
81
+ });
82
+ return false;
83
+ }
84
+ const sql = 'SELECT 1 as test';
85
+ await this.executeWithTimeout(() => this.client.unsafe(sql), this.connectionTimeout);
86
+ const duration = performance.now() - startTime;
87
+ if (mergedDebugConfig?.enabled) {
88
+ console.log(`[DEBUG-${debugId}] Connection test completed:`, {
89
+ success: true,
90
+ duration,
91
+ host: this.config.host,
92
+ database: this.config.database
93
+ });
94
+ }
95
+ return true;
96
+ }
97
+ catch (error) {
98
+ const duration = performance.now() - startTime;
99
+ this.logDebugError(mergedDebugConfig, debugId, 'Connection test', {
100
+ host: this.config.host,
101
+ port: this.config.port,
102
+ database: this.config.database,
103
+ error: mergedDebugConfig?.exposeRawErrors && error instanceof Error ? error.message : 'Connection failed',
104
+ duration,
105
+ suggestion: this.generateConnectionSuggestion(error)
106
+ });
107
+ return false;
108
+ }
109
+ }
110
+ mergeDebugConfig(debugConfig) {
111
+ return {
112
+ enabled: debugConfig?.enabled ?? (process.env.NODE_ENV === 'development'),
113
+ exposeQueries: debugConfig?.exposeQueries ?? true,
114
+ exposeRawErrors: debugConfig?.exposeRawErrors ?? true,
115
+ logLevel: debugConfig?.logLevel ?? 'debug'
116
+ };
117
+ }
118
+ generateConnectionSuggestion(error) {
119
+ if (!(error instanceof Error)) {
120
+ return 'Check database connection configuration';
121
+ }
122
+ const message = error.message.toLowerCase();
123
+ if (message.includes('connection refused') || message.includes('could not connect')) {
124
+ return `Redshift cluster at ${this.config.host}:${this.config.port} is not accepting connections. Verify the cluster is running and accessible.`;
125
+ }
126
+ if (message.includes('timeout')) {
127
+ return `Connection timeout to ${this.config.host}:${this.config.port}. Check network connectivity and cluster responsiveness.`;
128
+ }
129
+ if (message.includes('authentication failed') || message.includes('password authentication failed')) {
130
+ return `Authentication failed for database '${this.config.database}'. Verify username, password, and database name.`;
131
+ }
132
+ if (message.includes('database') && message.includes('does not exist')) {
133
+ return `Database '${this.config.database}' not found on cluster. Check database name and create if necessary.`;
134
+ }
135
+ if (message.includes('ssl') || message.includes('tls')) {
136
+ return `SSL/TLS connection issue. Redshift requires SSL - check SSL configuration and cluster settings.`;
137
+ }
138
+ if (message.includes('cluster') && message.includes('paused')) {
139
+ return `Redshift cluster appears to be paused. Resume the cluster and try again.`;
140
+ }
141
+ return `Connection failed to ${this.config.host}:${this.config.port}. Check host, port, credentials, and network connectivity.`;
142
+ }
143
+ async listTables() {
144
+ const sql = `
145
+ SELECT tablename
146
+ FROM pg_tables
147
+ WHERE schemaname = $1
148
+ ORDER BY tablename
149
+ LIMIT $2
150
+ `;
151
+ this.validateQuery(sql);
152
+ try {
153
+ const result = await this.executeParameterizedQuery(sql, ['public', this.maxRows]);
154
+ return result.map((row) => row.tablename).filter(Boolean);
155
+ }
156
+ catch (error) {
157
+ throw new QueryError('Failed to list tables', 'table_listing', undefined, error instanceof Error ? error : undefined);
158
+ }
159
+ }
160
+ async getTableSchema(table) {
161
+ this.escapeIdentifier(table);
162
+ const sql = `
163
+ SELECT
164
+ column_name,
165
+ data_type,
166
+ is_nullable
167
+ FROM information_schema.columns
168
+ WHERE table_schema = $1
169
+ AND table_name = $2
170
+ ORDER BY ordinal_position
171
+ LIMIT $3
172
+ `;
173
+ this.validateQuery(sql);
174
+ try {
175
+ const result = await this.executeParameterizedQuery(sql, ['public', table, this.maxRows]);
176
+ if (result.length === 0) {
177
+ throw QueryError.tableNotFound(table);
178
+ }
179
+ return {
180
+ table,
181
+ columns: result.map(row => ({
182
+ name: row.column_name,
183
+ type: this.mapRedshiftType(row.data_type),
184
+ nullable: row.is_nullable === 'YES'
185
+ }))
186
+ };
187
+ }
188
+ catch (error) {
189
+ if (error instanceof QueryError) {
190
+ throw error;
191
+ }
192
+ throw new QueryError('Failed to get table schema', 'schema_query', table, error instanceof Error ? error : undefined);
193
+ }
194
+ }
195
+ async getLastModified(table) {
196
+ const timestampColumns = ['updated_at', 'modified_at', 'last_modified', 'timestamp'];
197
+ for (const column of timestampColumns) {
198
+ try {
199
+ const result = await this.getMaxTimestamp(table, column);
200
+ if (result) {
201
+ return result;
202
+ }
203
+ }
204
+ catch {
205
+ continue;
206
+ }
207
+ }
208
+ try {
209
+ const sql = `
210
+ SELECT MAX(last_modified_time) as last_modified
211
+ FROM svv_table_info
212
+ WHERE database = $1 AND schema = $2 AND table = $3
213
+ `;
214
+ this.validateQuery(sql);
215
+ const result = await this.executeParameterizedQuery(sql, [this.config.database, 'public', table]);
216
+ if (result.length > 0 && result[0].last_modified) {
217
+ return new Date(result[0].last_modified);
218
+ }
219
+ }
220
+ catch {
221
+ try {
222
+ const sql = `
223
+ SELECT GREATEST(
224
+ last_vacuum,
225
+ last_autovacuum,
226
+ last_analyze,
227
+ last_autoanalyze
228
+ ) as last_modified
229
+ FROM pg_stat_user_tables
230
+ WHERE schemaname = $1 AND relname = $2
231
+ `;
232
+ this.validateQuery(sql);
233
+ const result = await this.executeParameterizedQuery(sql, ['public', table]);
234
+ if (result.length > 0 && result[0].last_modified) {
235
+ return new Date(result[0].last_modified);
236
+ }
237
+ }
238
+ catch {
239
+ }
240
+ }
241
+ return null;
242
+ }
243
+ async close() {
244
+ if (this.client) {
245
+ try {
246
+ await this.client.end();
247
+ }
248
+ catch (error) {
249
+ console.warn('Warning: Error closing Redshift connection:', ErrorHandler.getUserMessage(error));
250
+ }
251
+ finally {
252
+ this.client = null;
253
+ this.connected = false;
254
+ }
255
+ }
256
+ }
257
+ mapRedshiftType(redshiftType) {
258
+ const typeMap = {
259
+ 'smallint': 'integer',
260
+ 'integer': 'integer',
261
+ 'int': 'integer',
262
+ 'int2': 'integer',
263
+ 'int4': 'integer',
264
+ 'bigint': 'bigint',
265
+ 'int8': 'bigint',
266
+ 'decimal': 'decimal',
267
+ 'numeric': 'decimal',
268
+ 'real': 'float',
269
+ 'float4': 'float',
270
+ 'double precision': 'float',
271
+ 'float8': 'float',
272
+ 'float': 'float',
273
+ 'char': 'text',
274
+ 'character': 'text',
275
+ 'nchar': 'text',
276
+ 'varchar': 'text',
277
+ 'character varying': 'text',
278
+ 'nvarchar': 'text',
279
+ 'text': 'text',
280
+ 'bpchar': 'text',
281
+ 'date': 'date',
282
+ 'timestamp': 'timestamp',
283
+ 'timestamp without time zone': 'timestamp',
284
+ 'timestamp with time zone': 'timestamptz',
285
+ 'timestamptz': 'timestamptz',
286
+ 'time': 'time',
287
+ 'time without time zone': 'time',
288
+ 'time with time zone': 'timetz',
289
+ 'timetz': 'timetz',
290
+ 'boolean': 'boolean',
291
+ 'bool': 'boolean',
292
+ 'super': 'json',
293
+ 'json': 'json',
294
+ 'geometry': 'text',
295
+ 'geography': 'text',
296
+ 'varbyte': 'text'
297
+ };
298
+ return typeMap[redshiftType.toLowerCase()] || 'unknown';
299
+ }
300
+ escapeIdentifier(identifier) {
301
+ if (!/^[a-zA-Z0-9_\.]+$/.test(identifier)) {
302
+ throw new Error(`Invalid identifier: ${identifier}`);
303
+ }
304
+ if (identifier.length > 256) {
305
+ throw new Error('Identifier too long');
306
+ }
307
+ return `"${identifier}"`;
308
+ }
309
+ async connectLegacy(credentials) {
310
+ console.warn('Warning: connectLegacy is deprecated. Use constructor with ConnectorConfig instead.');
311
+ const config = {
312
+ host: credentials.host || '',
313
+ port: credentials.port || 5439,
314
+ database: credentials.database || '',
315
+ username: credentials.username || '',
316
+ password: credentials.password || '',
317
+ ssl: credentials.sslMode !== 'disable'
318
+ };
319
+ validateConnectorConfig(config);
320
+ this.config = { ...this.config, ...config };
321
+ await this.connect();
322
+ }
323
+ async testConnectionLegacy() {
324
+ console.warn('Warning: testConnectionLegacy is deprecated. Use testConnection() instead.');
325
+ try {
326
+ const success = await this.testConnection();
327
+ if (success) {
328
+ const tables = await this.listTables();
329
+ return {
330
+ success: true,
331
+ tableCount: tables.length
332
+ };
333
+ }
334
+ else {
335
+ return {
336
+ success: false,
337
+ error: 'Connection test failed'
338
+ };
339
+ }
340
+ }
341
+ catch (error) {
342
+ return {
343
+ success: false,
344
+ error: ErrorHandler.getUserMessage(error)
345
+ };
346
+ }
347
+ }
348
+ async getTableMetadata(tableName, timestampColumn = 'updated_at') {
349
+ console.warn('Warning: getTableMetadata is deprecated. Use getRowCount() and getMaxTimestamp() instead.');
350
+ try {
351
+ const rowCount = await this.getRowCount(tableName);
352
+ const lastUpdate = await this.getMaxTimestamp(tableName, timestampColumn);
353
+ return {
354
+ rowCount,
355
+ lastUpdate: lastUpdate || undefined
356
+ };
357
+ }
358
+ catch (error) {
359
+ throw new QueryError('Failed to get table metadata', 'metadata_query', tableName, error instanceof Error ? error : undefined);
360
+ }
361
+ }
362
+ async query(_sql) {
363
+ throw new Error('Direct SQL queries are not allowed for security reasons. Use specific methods like getRowCount(), getMaxTimestamp(), etc.');
364
+ }
365
+ }
366
+ //# sourceMappingURL=redshift.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redshift.js","sourceRoot":"","sources":["../../src/connectors/redshift.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { BaseConnector } from './base-connector.js';
2
+ import type { ConnectorConfig, TableSchema, SecurityConfig } from '../types/connector.js';
3
+ import type { SourceCredentials } from '../types.js';
4
+ export declare class SnowflakeConnector extends BaseConnector {
5
+ private connection;
6
+ private account;
7
+ private warehouse;
8
+ private database;
9
+ private schema;
10
+ private connected;
11
+ constructor(config: ConnectorConfig, securityConfig?: Partial<SecurityConfig>);
12
+ private static validateSnowflakeConfig;
13
+ private extractAccount;
14
+ private connect;
15
+ protected executeParameterizedQuery(sql: string, parameters?: any[]): Promise<any[]>;
16
+ protected executeQuery(sql: string): Promise<any[]>;
17
+ testConnection(debugConfig?: import('../types.js').DebugConfig): Promise<boolean>;
18
+ private mergeDebugConfig;
19
+ private generateSnowflakeConnectionSuggestion;
20
+ listTables(): Promise<string[]>;
21
+ getTableSchema(table: string): Promise<TableSchema>;
22
+ getLastModified(table: string): Promise<Date | null>;
23
+ close(): Promise<void>;
24
+ private mapSnowflakeType;
25
+ private parseTableName;
26
+ connectLegacy(credentials: SourceCredentials): Promise<void>;
27
+ testConnectionLegacy(): Promise<{
28
+ success: boolean;
29
+ tableCount?: number;
30
+ error?: string;
31
+ }>;
32
+ getTableMetadata(tableName: string, timestampColumn?: string): Promise<{
33
+ rowCount: number;
34
+ lastUpdate?: Date;
35
+ }>;
36
+ query<T = unknown>(_sql: string): Promise<T[]>;
37
+ getAccount(): string;
38
+ setWarehouse(warehouse: string): void;
39
+ getWarehouse(): string;
40
+ setSchema(schema: string): void;
41
+ getSchema(): string;
42
+ }
43
+ //# sourceMappingURL=snowflake.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snowflake.d.ts","sourceRoot":"","sources":["../../src/connectors/snowflake.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC1F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAqBrD,qBAAa,kBAAmB,SAAQ,aAAa;IACnD,OAAO,CAAC,UAAU,CAAqC;IACvD,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE,eAAe,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC;IAa7E,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAsBtC,OAAO,CAAC,cAAc;YAWR,OAAO;cAoDL,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,GAAE,GAAG,EAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;cA8D9E,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAOnD,cAAc,CAAC,WAAW,CAAC,EAAE,OAAO,aAAa,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IA8DvF,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,qCAAqC;IAiDvC,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IA4B/B,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAsDnD,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IA0BpD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB5B,OAAO,CAAC,gBAAgB;IA6CxB,OAAO,CAAC,cAAc;IAkChB,aAAa,CAAC,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkC5D,oBAAoB,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IA+B1F,gBAAgB,CACpB,SAAS,EAAE,MAAM,EACjB,eAAe,SAAe,GAC7B,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,IAAI,CAAA;KAAE,CAAC;IAyB7C,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IASpD,UAAU,IAAI,MAAM;IAOpB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAOrC,YAAY,IAAI,MAAM;IAOtB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAO/B,SAAS,IAAI,MAAM;CAGpB"}