@freshguard/freshguard-core 0.13.2 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -1
- package/README.md +74 -1
- package/SKILL.md +229 -0
- package/dist/cli/index.d.ts +13 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +74 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/connectors/azure-sql.d.ts +121 -0
- package/dist/connectors/azure-sql.d.ts.map +1 -0
- package/dist/connectors/azure-sql.js +489 -0
- package/dist/connectors/azure-sql.js.map +1 -0
- package/dist/connectors/base-connector.d.ts +139 -0
- package/dist/connectors/base-connector.d.ts.map +1 -1
- package/dist/connectors/base-connector.js +160 -3
- package/dist/connectors/base-connector.js.map +1 -1
- package/dist/connectors/bigquery.d.ts +100 -0
- package/dist/connectors/bigquery.d.ts.map +1 -1
- package/dist/connectors/bigquery.js +143 -2
- package/dist/connectors/bigquery.js.map +1 -1
- package/dist/connectors/duckdb.d.ts +96 -0
- package/dist/connectors/duckdb.d.ts.map +1 -1
- package/dist/connectors/duckdb.js +144 -7
- package/dist/connectors/duckdb.js.map +1 -1
- package/dist/connectors/index.d.ts +28 -0
- package/dist/connectors/index.d.ts.map +1 -1
- package/dist/connectors/index.js +28 -0
- package/dist/connectors/index.js.map +1 -1
- package/dist/connectors/mssql.d.ts +119 -0
- package/dist/connectors/mssql.d.ts.map +1 -0
- package/dist/connectors/mssql.js +483 -0
- package/dist/connectors/mssql.js.map +1 -0
- package/dist/connectors/mysql.d.ts +85 -0
- package/dist/connectors/mysql.d.ts.map +1 -1
- package/dist/connectors/mysql.js +118 -3
- package/dist/connectors/mysql.js.map +1 -1
- package/dist/connectors/postgres.d.ts +85 -0
- package/dist/connectors/postgres.d.ts.map +1 -1
- package/dist/connectors/postgres.js +113 -6
- package/dist/connectors/postgres.js.map +1 -1
- package/dist/connectors/redshift.d.ts +90 -0
- package/dist/connectors/redshift.d.ts.map +1 -1
- package/dist/connectors/redshift.js +131 -7
- package/dist/connectors/redshift.js.map +1 -1
- package/dist/connectors/snowflake.d.ts +108 -0
- package/dist/connectors/snowflake.d.ts.map +1 -1
- package/dist/connectors/snowflake.js +137 -3
- package/dist/connectors/snowflake.js.map +1 -1
- package/dist/connectors/synapse.d.ts +123 -0
- package/dist/connectors/synapse.d.ts.map +1 -0
- package/dist/connectors/synapse.js +495 -0
- package/dist/connectors/synapse.js.map +1 -0
- package/dist/db/index.d.ts +25 -0
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +23 -0
- package/dist/db/index.js.map +1 -1
- package/dist/db/migrate.d.ts +23 -0
- package/dist/db/migrate.d.ts.map +1 -1
- package/dist/db/migrate.js +38 -0
- package/dist/db/migrate.js.map +1 -1
- package/dist/db/schema.d.ts +11 -0
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +70 -0
- package/dist/db/schema.js.map +1 -1
- package/dist/errors/debug-factory.d.ts +38 -0
- package/dist/errors/debug-factory.d.ts.map +1 -1
- package/dist/errors/debug-factory.js +40 -0
- package/dist/errors/debug-factory.js.map +1 -1
- package/dist/errors/index.d.ts +59 -0
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +110 -7
- package/dist/errors/index.js.map +1 -1
- package/dist/index.d.ts +32 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +37 -1
- package/dist/index.js.map +1 -1
- package/dist/metadata/duckdb-storage.d.ts +3 -0
- package/dist/metadata/duckdb-storage.d.ts.map +1 -1
- package/dist/metadata/duckdb-storage.js +6 -0
- package/dist/metadata/duckdb-storage.js.map +1 -1
- package/dist/metadata/factory.d.ts +30 -0
- package/dist/metadata/factory.d.ts.map +1 -1
- package/dist/metadata/factory.js +31 -0
- package/dist/metadata/factory.js.map +1 -1
- package/dist/metadata/index.d.ts +26 -0
- package/dist/metadata/index.d.ts.map +1 -1
- package/dist/metadata/index.js +26 -0
- package/dist/metadata/index.js.map +1 -1
- package/dist/metadata/interface.d.ts +33 -0
- package/dist/metadata/interface.d.ts.map +1 -1
- package/dist/metadata/interface.js +3 -0
- package/dist/metadata/interface.js.map +1 -1
- package/dist/metadata/postgresql-storage.d.ts +3 -0
- package/dist/metadata/postgresql-storage.d.ts.map +1 -1
- package/dist/metadata/postgresql-storage.js +12 -2
- package/dist/metadata/postgresql-storage.js.map +1 -1
- package/dist/metadata/schema-config.d.ts +53 -0
- package/dist/metadata/schema-config.d.ts.map +1 -1
- package/dist/metadata/schema-config.js +64 -0
- package/dist/metadata/schema-config.js.map +1 -1
- package/dist/metadata/types.d.ts +3 -0
- package/dist/metadata/types.d.ts.map +1 -1
- package/dist/metadata/types.js +3 -0
- package/dist/metadata/types.js.map +1 -1
- package/dist/monitor/baseline-calculator.d.ts +56 -0
- package/dist/monitor/baseline-calculator.d.ts.map +1 -1
- package/dist/monitor/baseline-calculator.js +72 -0
- package/dist/monitor/baseline-calculator.js.map +1 -1
- package/dist/monitor/baseline-config.d.ts +77 -0
- package/dist/monitor/baseline-config.d.ts.map +1 -1
- package/dist/monitor/baseline-config.js +79 -1
- package/dist/monitor/baseline-config.js.map +1 -1
- package/dist/monitor/freshness.d.ts +40 -0
- package/dist/monitor/freshness.d.ts.map +1 -1
- package/dist/monitor/freshness.js +82 -3
- package/dist/monitor/freshness.js.map +1 -1
- package/dist/monitor/index.d.ts +29 -0
- package/dist/monitor/index.d.ts.map +1 -1
- package/dist/monitor/index.js +29 -0
- package/dist/monitor/index.js.map +1 -1
- package/dist/monitor/schema-baseline.d.ts +45 -0
- package/dist/monitor/schema-baseline.d.ts.map +1 -1
- package/dist/monitor/schema-baseline.js +63 -5
- package/dist/monitor/schema-baseline.js.map +1 -1
- package/dist/monitor/schema-changes.d.ts +45 -0
- package/dist/monitor/schema-changes.d.ts.map +1 -1
- package/dist/monitor/schema-changes.js +85 -0
- package/dist/monitor/schema-changes.js.map +1 -1
- package/dist/monitor/volume.d.ts +43 -0
- package/dist/monitor/volume.d.ts.map +1 -1
- package/dist/monitor/volume.js +89 -0
- package/dist/monitor/volume.js.map +1 -1
- package/dist/observability/logger.d.ts +91 -0
- package/dist/observability/logger.d.ts.map +1 -1
- package/dist/observability/logger.js +108 -0
- package/dist/observability/logger.js.map +1 -1
- package/dist/observability/metrics.d.ts +140 -0
- package/dist/observability/metrics.d.ts.map +1 -1
- package/dist/observability/metrics.js +184 -7
- package/dist/observability/metrics.js.map +1 -1
- package/dist/resilience/circuit-breaker.d.ts +112 -2
- package/dist/resilience/circuit-breaker.d.ts.map +1 -1
- package/dist/resilience/circuit-breaker.js +140 -6
- package/dist/resilience/circuit-breaker.js.map +1 -1
- package/dist/resilience/index.d.ts +9 -0
- package/dist/resilience/index.d.ts.map +1 -1
- package/dist/resilience/index.js +13 -0
- package/dist/resilience/index.js.map +1 -1
- package/dist/resilience/retry-policy.d.ts +105 -0
- package/dist/resilience/retry-policy.d.ts.map +1 -1
- package/dist/resilience/retry-policy.js +158 -7
- package/dist/resilience/retry-policy.js.map +1 -1
- package/dist/resilience/timeout-manager.d.ts +137 -0
- package/dist/resilience/timeout-manager.d.ts.map +1 -1
- package/dist/resilience/timeout-manager.js +151 -4
- package/dist/resilience/timeout-manager.js.map +1 -1
- package/dist/security/query-analyzer.d.ts +124 -0
- package/dist/security/query-analyzer.d.ts.map +1 -1
- package/dist/security/query-analyzer.js +150 -9
- package/dist/security/query-analyzer.js.map +1 -1
- package/dist/security/schema-cache.d.ts +152 -0
- package/dist/security/schema-cache.d.ts.map +1 -1
- package/dist/security/schema-cache.js +144 -12
- package/dist/security/schema-cache.js.map +1 -1
- package/dist/types/connector.d.ts +68 -1
- package/dist/types/connector.d.ts.map +1 -1
- package/dist/types/connector.js +38 -15
- package/dist/types/connector.js.map +1 -1
- package/dist/types/driver-results.d.ts +28 -0
- package/dist/types/driver-results.d.ts.map +1 -1
- package/dist/types/driver-results.js +12 -0
- package/dist/types/driver-results.js.map +1 -1
- package/dist/types.d.ts +113 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -1
- package/dist/validation/index.d.ts +8 -0
- package/dist/validation/index.d.ts.map +1 -1
- package/dist/validation/index.js +12 -0
- package/dist/validation/index.js.map +1 -1
- package/dist/validation/runtime-validator.d.ts +98 -0
- package/dist/validation/runtime-validator.d.ts.map +1 -1
- package/dist/validation/runtime-validator.js +114 -1
- package/dist/validation/runtime-validator.js.map +1 -1
- package/dist/validation/sanitizers.d.ts +59 -0
- package/dist/validation/sanitizers.d.ts.map +1 -1
- package/dist/validation/sanitizers.js +104 -20
- package/dist/validation/sanitizers.js.map +1 -1
- package/dist/validation/schemas.d.ts +73 -0
- package/dist/validation/schemas.d.ts.map +1 -1
- package/dist/validation/schemas.js +132 -5
- package/dist/validation/schemas.js.map +1 -1
- package/dist/validators/index.d.ts +54 -0
- package/dist/validators/index.d.ts.map +1 -1
- package/dist/validators/index.js +93 -2
- package/dist/validators/index.js.map +1 -1
- package/package.json +6 -2
|
@@ -1,37 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secure DuckDB connector for FreshGuard Core
|
|
3
|
+
* Extends BaseConnector with security built-in
|
|
4
|
+
*
|
|
5
|
+
* @module @freshguard/freshguard-core/connectors/duckdb
|
|
6
|
+
*/
|
|
1
7
|
import { BaseConnector } from './base-connector.js';
|
|
2
8
|
import type { ConnectorConfig, TableSchema, SecurityConfig } from '../types/connector.js';
|
|
3
9
|
import { type QueryResultRow } from '../types/driver-results.js';
|
|
4
10
|
import type { SourceCredentials } from '../types.js';
|
|
11
|
+
/**
|
|
12
|
+
* Secure DuckDB connector
|
|
13
|
+
*
|
|
14
|
+
* Uses a local DuckDB file (or `:memory:`) for lightweight, embedded analytics.
|
|
15
|
+
*
|
|
16
|
+
* Features:
|
|
17
|
+
* - SQL injection prevention
|
|
18
|
+
* - File path validation
|
|
19
|
+
* - Read-only query patterns
|
|
20
|
+
* - Connection timeouts
|
|
21
|
+
* - Secure error handling
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* import { DuckDBConnector } from '@freshguard/freshguard-core';
|
|
26
|
+
*
|
|
27
|
+
* const connector = new DuckDBConnector({
|
|
28
|
+
* host: 'local', port: 0,
|
|
29
|
+
* database: './warehouse.duckdb', // or ':memory:'
|
|
30
|
+
* username: '', password: '',
|
|
31
|
+
* });
|
|
32
|
+
*
|
|
33
|
+
* const tables = await connector.listTables();
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
5
36
|
export declare class DuckDBConnector extends BaseConnector {
|
|
6
37
|
private instance;
|
|
7
38
|
private connection;
|
|
8
39
|
private databasePath;
|
|
9
40
|
private connected;
|
|
41
|
+
/**
|
|
42
|
+
* @param config - Connection config; `database` is the DuckDB file path or `':memory:'`
|
|
43
|
+
* @param securityConfig - Optional overrides for query timeouts, max rows, and blocked keywords
|
|
44
|
+
*/
|
|
10
45
|
constructor(config: ConnectorConfig, securityConfig?: Partial<SecurityConfig>);
|
|
46
|
+
/**
|
|
47
|
+
* Validate DuckDB-specific configuration
|
|
48
|
+
*/
|
|
11
49
|
private static validateDuckDBConfig;
|
|
50
|
+
/**
|
|
51
|
+
* Connect to DuckDB database with security validation
|
|
52
|
+
*/
|
|
12
53
|
private connect;
|
|
54
|
+
/**
|
|
55
|
+
* Execute a validated SQL query with security measures
|
|
56
|
+
*/
|
|
13
57
|
protected executeQuery(sql: string): Promise<QueryResultRow[]>;
|
|
58
|
+
/**
|
|
59
|
+
* Execute a parameterized SQL query (DuckDB with manual parameter substitution)
|
|
60
|
+
* Note: DuckDB node API has limited prepared statement support, so we use safe parameter substitution
|
|
61
|
+
*/
|
|
14
62
|
protected executeParameterizedQuery(sql: string, parameters?: unknown[]): Promise<QueryResultRow[]>;
|
|
63
|
+
/**
|
|
64
|
+
* Test database connection with security validation
|
|
65
|
+
*/
|
|
15
66
|
testConnection(debugConfig?: import('../types.js').DebugConfig): Promise<boolean>;
|
|
67
|
+
/**
|
|
68
|
+
* Helper method to merge debug configuration
|
|
69
|
+
*/
|
|
16
70
|
private mergeDebugConfig;
|
|
71
|
+
/**
|
|
72
|
+
* Generate DuckDB-specific connection suggestions based on error
|
|
73
|
+
*/
|
|
17
74
|
private generateDuckDBConnectionSuggestion;
|
|
75
|
+
/**
|
|
76
|
+
* List all tables in the database (excluding system schemas)
|
|
77
|
+
*/
|
|
18
78
|
listTables(): Promise<string[]>;
|
|
79
|
+
/**
|
|
80
|
+
* Get table schema information securely
|
|
81
|
+
*/
|
|
19
82
|
getTableSchema(table: string): Promise<TableSchema>;
|
|
83
|
+
/**
|
|
84
|
+
* Get last modified timestamp for DuckDB
|
|
85
|
+
* Since DuckDB doesn't have built-in table modification timestamps,
|
|
86
|
+
* we'll look for common timestamp columns
|
|
87
|
+
*/
|
|
20
88
|
getLastModified(table: string): Promise<Date | null>;
|
|
89
|
+
/**
|
|
90
|
+
* Close the database connection
|
|
91
|
+
*/
|
|
21
92
|
close(): Promise<void>;
|
|
93
|
+
/**
|
|
94
|
+
* Map DuckDB data types to standard types
|
|
95
|
+
*/
|
|
22
96
|
private mapDuckDBType;
|
|
97
|
+
/**
|
|
98
|
+
* Legacy connect method for backward compatibility
|
|
99
|
+
* @deprecated Use constructor with ConnectorConfig instead
|
|
100
|
+
*/
|
|
23
101
|
connectLegacy(credentials: SourceCredentials): Promise<void>;
|
|
102
|
+
/**
|
|
103
|
+
* Legacy test connection method for backward compatibility
|
|
104
|
+
* @deprecated Use testConnection() instead
|
|
105
|
+
*/
|
|
24
106
|
testConnectionLegacy(): Promise<{
|
|
25
107
|
success: boolean;
|
|
26
108
|
tableCount?: number;
|
|
27
109
|
error?: string;
|
|
28
110
|
}>;
|
|
111
|
+
/**
|
|
112
|
+
* Legacy get table metadata method for backward compatibility
|
|
113
|
+
* @deprecated Use getRowCount() and getMaxTimestamp() instead
|
|
114
|
+
*/
|
|
29
115
|
getTableMetadata(tableName: string, timestampColumn?: string): Promise<{
|
|
30
116
|
rowCount: number;
|
|
31
117
|
lastUpdate?: Date;
|
|
32
118
|
}>;
|
|
119
|
+
/**
|
|
120
|
+
* Legacy query method for backward compatibility
|
|
121
|
+
* @deprecated Direct SQL queries are not allowed for security reasons
|
|
122
|
+
*/
|
|
33
123
|
query<T = unknown>(_sql: string): Promise<T[]>;
|
|
124
|
+
/**
|
|
125
|
+
* Get database file path (DuckDB-specific utility)
|
|
126
|
+
*/
|
|
34
127
|
getDatabasePath(): string;
|
|
128
|
+
/**
|
|
129
|
+
* Check if database is in-memory
|
|
130
|
+
*/
|
|
35
131
|
isInMemory(): boolean;
|
|
36
132
|
}
|
|
37
133
|
//# sourceMappingURL=duckdb.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duckdb.d.ts","sourceRoot":"","sources":["../../src/connectors/duckdb.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"duckdb.d.ts","sourceRoot":"","sources":["../../src/connectors/duckdb.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC1F,OAAO,EAAE,KAAK,cAAc,EAAa,MAAM,4BAA4B,CAAC;AAC5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAYrD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,eAAgB,SAAQ,aAAa;IAChD,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,SAAS,CAAS;IAE1B;;;OAGG;gBACS,MAAM,EAAE,eAAe,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC;IAS7E;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IA2BnC;;OAEG;YACW,OAAO;IAiDrB;;OAEG;cACa,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAIpE;;;OAGG;cACa,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IA4D7G;;OAEG;IACG,cAAc,CAAC,WAAW,CAAC,EAAE,OAAO,aAAa,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IA4DvF;;OAEG;IACH,OAAO,CAAC,gBAAgB;IASxB;;OAEG;IACH,OAAO,CAAC,kCAAkC;IA8C1C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAwBrC;;OAEG;IACG,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IA+CzD;;;;OAIG;IACG,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAuB1D;;OAEG;IAEG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB5B;;OAEG;IACH,OAAO,CAAC,aAAa;IAmCrB;;;OAGG;IACG,aAAa,CAAC,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBlE;;;OAGG;IACG,oBAAoB,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IA2BhG;;;OAGG;IACG,gBAAgB,CACpB,SAAS,EAAE,MAAM,EACjB,eAAe,SAAe,GAC7B,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,IAAI,CAAA;KAAE,CAAC;IAwBnD;;;OAGG;IAEG,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAMpD;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACH,UAAU,IAAI,OAAO;CAGtB"}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secure DuckDB connector for FreshGuard Core
|
|
3
|
+
* Extends BaseConnector with security built-in
|
|
4
|
+
*
|
|
5
|
+
* @module @freshguard/freshguard-core/connectors/duckdb
|
|
6
|
+
*/
|
|
1
7
|
import { DuckDBInstance } from '@duckdb/node-api';
|
|
2
8
|
import { BaseConnector } from './base-connector.js';
|
|
3
9
|
import { rowString } from '../types/driver-results.js';
|
|
@@ -5,45 +11,95 @@ import { ConnectionError, TimeoutError, QueryError, ConfigurationError, ErrorHan
|
|
|
5
11
|
import { validateDatabaseIdentifier } from '../validators/index.js';
|
|
6
12
|
import { existsSync } from 'fs';
|
|
7
13
|
import { resolve } from 'path';
|
|
14
|
+
/**
|
|
15
|
+
* Secure DuckDB connector
|
|
16
|
+
*
|
|
17
|
+
* Uses a local DuckDB file (or `:memory:`) for lightweight, embedded analytics.
|
|
18
|
+
*
|
|
19
|
+
* Features:
|
|
20
|
+
* - SQL injection prevention
|
|
21
|
+
* - File path validation
|
|
22
|
+
* - Read-only query patterns
|
|
23
|
+
* - Connection timeouts
|
|
24
|
+
* - Secure error handling
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* import { DuckDBConnector } from '@freshguard/freshguard-core';
|
|
29
|
+
*
|
|
30
|
+
* const connector = new DuckDBConnector({
|
|
31
|
+
* host: 'local', port: 0,
|
|
32
|
+
* database: './warehouse.duckdb', // or ':memory:'
|
|
33
|
+
* username: '', password: '',
|
|
34
|
+
* });
|
|
35
|
+
*
|
|
36
|
+
* const tables = await connector.listTables();
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
8
39
|
export class DuckDBConnector extends BaseConnector {
|
|
9
40
|
instance = null;
|
|
10
41
|
connection = null;
|
|
11
42
|
databasePath = '';
|
|
12
43
|
connected = false;
|
|
44
|
+
/**
|
|
45
|
+
* @param config - Connection config; `database` is the DuckDB file path or `':memory:'`
|
|
46
|
+
* @param securityConfig - Optional overrides for query timeouts, max rows, and blocked keywords
|
|
47
|
+
*/
|
|
13
48
|
constructor(config, securityConfig) {
|
|
49
|
+
// Validate DuckDB-specific configuration
|
|
14
50
|
DuckDBConnector.validateDuckDBConfig(config);
|
|
15
51
|
super(config, securityConfig);
|
|
52
|
+
// For DuckDB, database field contains the file path
|
|
16
53
|
this.databasePath = config.database === ':memory:' ? ':memory:' : resolve(config.database);
|
|
17
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Validate DuckDB-specific configuration
|
|
57
|
+
*/
|
|
18
58
|
static validateDuckDBConfig(config) {
|
|
19
59
|
if (!config.database) {
|
|
20
60
|
throw new ConfigurationError('Database path is required for DuckDB');
|
|
21
61
|
}
|
|
62
|
+
// DuckDB doesn't use traditional host/port/username/password for file-based databases
|
|
63
|
+
// But we still require them for consistency with the interface
|
|
22
64
|
if (config.database !== ':memory:') {
|
|
65
|
+
// Validate file path security
|
|
23
66
|
const resolvedPath = resolve(config.database);
|
|
67
|
+
// Prevent directory traversal attacks
|
|
24
68
|
if (config.database.includes('..')) {
|
|
25
69
|
throw new ConfigurationError('Database path cannot contain directory traversal patterns');
|
|
26
70
|
}
|
|
71
|
+
// Ensure path doesn't access system directories
|
|
27
72
|
const systemPaths = ['/etc', '/sys', '/proc', '/dev', '/root', '/var/log'];
|
|
28
73
|
if (systemPaths.some(sysPath => resolvedPath.startsWith(sysPath))) {
|
|
29
74
|
throw new ConfigurationError('Database path cannot access system directories');
|
|
30
75
|
}
|
|
76
|
+
// For production, we could add more restrictions like only allowing specific directories
|
|
77
|
+
// This would be configurable based on deployment environment
|
|
31
78
|
}
|
|
32
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* Connect to DuckDB database with security validation
|
|
82
|
+
*/
|
|
33
83
|
async connect() {
|
|
34
84
|
if (this.connected && this.instance && this.connection) {
|
|
35
|
-
return;
|
|
85
|
+
return; // Already connected
|
|
36
86
|
}
|
|
37
87
|
try {
|
|
88
|
+
// Validate file access before connecting
|
|
38
89
|
if (this.databasePath !== ':memory:') {
|
|
90
|
+
// For file-based databases, check if file exists and is accessible
|
|
91
|
+
// Note: DuckDB will create the file if it doesn't exist, but we want to validate the directory
|
|
39
92
|
const dirPath = this.databasePath.substring(0, this.databasePath.lastIndexOf('/'));
|
|
93
|
+
// eslint-disable-next-line security/detect-non-literal-fs-filename -- dirPath is derived from validated databasePath config
|
|
40
94
|
if (dirPath && !existsSync(dirPath)) {
|
|
41
95
|
throw new ConnectionError('Database directory does not exist');
|
|
42
96
|
}
|
|
43
97
|
}
|
|
98
|
+
// Create DuckDB instance with timeout protection
|
|
44
99
|
this.instance = await this.executeWithTimeout(() => this.databasePath === ':memory:'
|
|
45
100
|
? DuckDBInstance.create()
|
|
46
101
|
: DuckDBInstance.create(this.databasePath), this.connectionTimeout);
|
|
102
|
+
// Get a connection from the instance
|
|
47
103
|
this.connection = await this.executeWithTimeout(() => {
|
|
48
104
|
if (!this.instance)
|
|
49
105
|
throw new ConnectionError('DuckDB instance not available');
|
|
@@ -55,27 +111,40 @@ export class DuckDBConnector extends BaseConnector {
|
|
|
55
111
|
if (error instanceof TimeoutError) {
|
|
56
112
|
throw error;
|
|
57
113
|
}
|
|
58
|
-
throw new ConnectionError('Failed to connect to DuckDB', 'localhost',
|
|
114
|
+
throw new ConnectionError('Failed to connect to DuckDB', 'localhost', // DuckDB is always local
|
|
115
|
+
undefined, error instanceof Error ? error : undefined);
|
|
59
116
|
}
|
|
60
117
|
}
|
|
118
|
+
/**
|
|
119
|
+
* Execute a validated SQL query with security measures
|
|
120
|
+
*/
|
|
61
121
|
async executeQuery(sql) {
|
|
62
122
|
return this.executeParameterizedQuery(sql, []);
|
|
63
123
|
}
|
|
124
|
+
/**
|
|
125
|
+
* Execute a parameterized SQL query (DuckDB with manual parameter substitution)
|
|
126
|
+
* Note: DuckDB node API has limited prepared statement support, so we use safe parameter substitution
|
|
127
|
+
*/
|
|
64
128
|
async executeParameterizedQuery(sql, parameters = []) {
|
|
65
129
|
await this.connect();
|
|
66
130
|
if (!this.connection) {
|
|
67
131
|
throw new ConnectionError('DuckDB connection not available');
|
|
68
132
|
}
|
|
69
133
|
try {
|
|
134
|
+
// DuckDB doesn't have robust parameterized query support in node API
|
|
135
|
+
// Use safe parameter substitution for numeric values, keep string validation strict
|
|
70
136
|
let finalSql = sql;
|
|
71
137
|
if (parameters.length > 0) {
|
|
138
|
+
// Replace $1, $2, etc. with properly escaped parameters
|
|
72
139
|
for (let i = 0; i < parameters.length; i++) {
|
|
73
140
|
const param = parameters[i];
|
|
74
141
|
const placeholder = `$${i + 1}`;
|
|
75
142
|
if (typeof param === 'number') {
|
|
143
|
+
// Safe for numeric parameters
|
|
76
144
|
finalSql = finalSql.replace(placeholder, param.toString());
|
|
77
145
|
}
|
|
78
146
|
else if (typeof param === 'string') {
|
|
147
|
+
// For string parameters, use single quotes and escape internal quotes
|
|
79
148
|
const escapedParam = param.replace(/'/g, "''");
|
|
80
149
|
finalSql = finalSql.replace(placeholder, `'${escapedParam}'`);
|
|
81
150
|
}
|
|
@@ -90,6 +159,7 @@ export class DuckDBConnector extends BaseConnector {
|
|
|
90
159
|
return this.connection.runAndReadAll(finalSql);
|
|
91
160
|
}, this.queryTimeout);
|
|
92
161
|
const rows = reader.getRowObjects();
|
|
162
|
+
// Validate result size for security
|
|
93
163
|
this.validateResultSize(rows);
|
|
94
164
|
return rows;
|
|
95
165
|
}
|
|
@@ -97,9 +167,13 @@ export class DuckDBConnector extends BaseConnector {
|
|
|
97
167
|
if (error instanceof TimeoutError) {
|
|
98
168
|
throw error;
|
|
99
169
|
}
|
|
170
|
+
// Sanitize and re-throw as QueryError
|
|
100
171
|
throw new QueryError(ErrorHandler.getUserMessage(error), 'query_execution', undefined, error instanceof Error ? error : undefined);
|
|
101
172
|
}
|
|
102
173
|
}
|
|
174
|
+
/**
|
|
175
|
+
* Test database connection with security validation
|
|
176
|
+
*/
|
|
103
177
|
async testConnection(debugConfig) {
|
|
104
178
|
const mergedDebugConfig = this.mergeDebugConfig(debugConfig);
|
|
105
179
|
const debugId = `duck-test-${Date.now().toString(36)}-${Math.random().toString(36).substr(2, 5)}`;
|
|
@@ -118,6 +192,7 @@ export class DuckDBConnector extends BaseConnector {
|
|
|
118
192
|
});
|
|
119
193
|
return false;
|
|
120
194
|
}
|
|
195
|
+
// Test with a simple, safe query (skip validation for connection test)
|
|
121
196
|
const sql = 'SELECT 1 as test';
|
|
122
197
|
await this.executeWithTimeout(() => {
|
|
123
198
|
if (!this.connection)
|
|
@@ -143,9 +218,13 @@ export class DuckDBConnector extends BaseConnector {
|
|
|
143
218
|
duration,
|
|
144
219
|
suggestion: this.generateDuckDBConnectionSuggestion(error)
|
|
145
220
|
});
|
|
221
|
+
// Don't throw - this method should return boolean
|
|
146
222
|
return false;
|
|
147
223
|
}
|
|
148
224
|
}
|
|
225
|
+
/**
|
|
226
|
+
* Helper method to merge debug configuration
|
|
227
|
+
*/
|
|
149
228
|
mergeDebugConfig(debugConfig) {
|
|
150
229
|
return {
|
|
151
230
|
enabled: debugConfig?.enabled ?? (process.env.NODE_ENV === 'development'),
|
|
@@ -154,6 +233,9 @@ export class DuckDBConnector extends BaseConnector {
|
|
|
154
233
|
logLevel: debugConfig?.logLevel ?? 'debug'
|
|
155
234
|
};
|
|
156
235
|
}
|
|
236
|
+
/**
|
|
237
|
+
* Generate DuckDB-specific connection suggestions based on error
|
|
238
|
+
*/
|
|
157
239
|
generateDuckDBConnectionSuggestion(error) {
|
|
158
240
|
if (!(error instanceof Error)) {
|
|
159
241
|
return 'Check DuckDB database configuration';
|
|
@@ -188,6 +270,9 @@ export class DuckDBConnector extends BaseConnector {
|
|
|
188
270
|
}
|
|
189
271
|
return `DuckDB connection failed for database '${this.databasePath}'. Check file path, permissions, and disk space.`;
|
|
190
272
|
}
|
|
273
|
+
/**
|
|
274
|
+
* List all tables in the database (excluding system schemas)
|
|
275
|
+
*/
|
|
191
276
|
async listTables() {
|
|
192
277
|
const sql = `
|
|
193
278
|
SELECT table_name
|
|
@@ -205,7 +290,11 @@ export class DuckDBConnector extends BaseConnector {
|
|
|
205
290
|
throw new QueryError('Failed to list tables', 'table_listing', undefined, error instanceof Error ? error : undefined);
|
|
206
291
|
}
|
|
207
292
|
}
|
|
293
|
+
/**
|
|
294
|
+
* Get table schema information securely
|
|
295
|
+
*/
|
|
208
296
|
async getTableSchema(table) {
|
|
297
|
+
// Validate table name (identifiers cannot be parameterized)
|
|
209
298
|
this.escapeIdentifier(table);
|
|
210
299
|
const sql = `
|
|
211
300
|
SELECT
|
|
@@ -240,7 +329,13 @@ export class DuckDBConnector extends BaseConnector {
|
|
|
240
329
|
throw new QueryError('Failed to get table schema', 'schema_query', table, error instanceof Error ? error : undefined);
|
|
241
330
|
}
|
|
242
331
|
}
|
|
332
|
+
/**
|
|
333
|
+
* Get last modified timestamp for DuckDB
|
|
334
|
+
* Since DuckDB doesn't have built-in table modification timestamps,
|
|
335
|
+
* we'll look for common timestamp columns
|
|
336
|
+
*/
|
|
243
337
|
async getLastModified(table) {
|
|
338
|
+
// Try common timestamp columns
|
|
244
339
|
const timestampColumns = [
|
|
245
340
|
'updated_at', 'modified_at', 'last_modified', 'timestamp',
|
|
246
341
|
'created_at', 'date_modified', 'last_update'
|
|
@@ -253,31 +348,44 @@ export class DuckDBConnector extends BaseConnector {
|
|
|
253
348
|
}
|
|
254
349
|
}
|
|
255
350
|
catch {
|
|
351
|
+
// Column doesn't exist, try next one
|
|
256
352
|
continue;
|
|
257
353
|
}
|
|
258
354
|
}
|
|
355
|
+
// No timestamp columns found
|
|
259
356
|
return null;
|
|
260
357
|
}
|
|
358
|
+
/**
|
|
359
|
+
* Close the database connection
|
|
360
|
+
*/
|
|
361
|
+
// eslint-disable-next-line @typescript-eslint/require-await -- must match abstract close(): Promise<void>
|
|
261
362
|
async close() {
|
|
262
363
|
try {
|
|
364
|
+
// Close connection first
|
|
263
365
|
if (this.connection) {
|
|
264
366
|
this.connection.closeSync();
|
|
265
367
|
this.connection = null;
|
|
266
368
|
}
|
|
369
|
+
// Clean up instance reference
|
|
267
370
|
if (this.instance) {
|
|
268
371
|
this.instance = null;
|
|
269
372
|
}
|
|
270
373
|
this.connected = false;
|
|
271
374
|
}
|
|
272
375
|
catch (error) {
|
|
376
|
+
// Log error but don't throw - closing should be safe
|
|
273
377
|
console.warn('Warning: Error closing DuckDB connection:', ErrorHandler.getUserMessage(error));
|
|
274
378
|
}
|
|
275
379
|
finally {
|
|
380
|
+
// Ensure cleanup even if error occurs
|
|
276
381
|
this.connection = null;
|
|
277
382
|
this.instance = null;
|
|
278
383
|
this.connected = false;
|
|
279
384
|
}
|
|
280
385
|
}
|
|
386
|
+
/**
|
|
387
|
+
* Map DuckDB data types to standard types
|
|
388
|
+
*/
|
|
281
389
|
mapDuckDBType(duckdbType) {
|
|
282
390
|
const typeMap = {
|
|
283
391
|
'BIGINT': 'bigint',
|
|
@@ -307,27 +415,41 @@ export class DuckDBConnector extends BaseConnector {
|
|
|
307
415
|
};
|
|
308
416
|
return typeMap[duckdbType.toUpperCase()] ?? 'unknown';
|
|
309
417
|
}
|
|
418
|
+
// ==============================================
|
|
419
|
+
// Legacy API compatibility methods
|
|
420
|
+
// ==============================================
|
|
421
|
+
/**
|
|
422
|
+
* Legacy connect method for backward compatibility
|
|
423
|
+
* @deprecated Use constructor with ConnectorConfig instead
|
|
424
|
+
*/
|
|
310
425
|
async connectLegacy(credentials) {
|
|
311
426
|
console.warn('Warning: connectLegacy is deprecated. Use constructor with ConnectorConfig instead.');
|
|
427
|
+
// Convert legacy credentials to new format
|
|
312
428
|
const dbPath = credentials.connectionString ?? credentials.database ?? ':memory:';
|
|
313
429
|
const config = {
|
|
314
|
-
host: 'localhost',
|
|
315
|
-
port: 0,
|
|
430
|
+
host: 'localhost', // DuckDB is always local
|
|
431
|
+
port: 0, // Not used for DuckDB
|
|
316
432
|
database: dbPath,
|
|
317
|
-
username: 'duckdb',
|
|
318
|
-
password: 'duckdb',
|
|
319
|
-
ssl: false
|
|
433
|
+
username: 'duckdb', // Default for compatibility
|
|
434
|
+
password: 'duckdb', // Not used for file-based DuckDB
|
|
435
|
+
ssl: false // Not applicable for DuckDB
|
|
320
436
|
};
|
|
437
|
+
// Validate and reconnect
|
|
321
438
|
DuckDBConnector.validateDuckDBConfig(config);
|
|
322
439
|
this.config = { ...this.config, ...config };
|
|
323
440
|
this.databasePath = config.database === ':memory:' ? ':memory:' : resolve(config.database);
|
|
324
441
|
await this.connect();
|
|
325
442
|
}
|
|
443
|
+
/**
|
|
444
|
+
* Legacy test connection method for backward compatibility
|
|
445
|
+
* @deprecated Use testConnection() instead
|
|
446
|
+
*/
|
|
326
447
|
async testConnectionLegacy() {
|
|
327
448
|
console.warn('Warning: testConnectionLegacy is deprecated. Use testConnection() instead.');
|
|
328
449
|
try {
|
|
329
450
|
const success = await this.testConnection();
|
|
330
451
|
if (success) {
|
|
452
|
+
// Get table count for legacy compatibility
|
|
331
453
|
const tables = await this.listTables();
|
|
332
454
|
return {
|
|
333
455
|
success: true,
|
|
@@ -348,6 +470,10 @@ export class DuckDBConnector extends BaseConnector {
|
|
|
348
470
|
};
|
|
349
471
|
}
|
|
350
472
|
}
|
|
473
|
+
/**
|
|
474
|
+
* Legacy get table metadata method for backward compatibility
|
|
475
|
+
* @deprecated Use getRowCount() and getMaxTimestamp() instead
|
|
476
|
+
*/
|
|
351
477
|
async getTableMetadata(tableName, timestampColumn = 'updated_at') {
|
|
352
478
|
console.warn('Warning: getTableMetadata is deprecated. Use getRowCount() and getMaxTimestamp() instead.');
|
|
353
479
|
try {
|
|
@@ -364,12 +490,23 @@ export class DuckDBConnector extends BaseConnector {
|
|
|
364
490
|
throw new QueryError('Failed to get table metadata', 'metadata_query', tableName, error instanceof Error ? error : undefined);
|
|
365
491
|
}
|
|
366
492
|
}
|
|
493
|
+
/**
|
|
494
|
+
* Legacy query method for backward compatibility
|
|
495
|
+
* @deprecated Direct SQL queries are not allowed for security reasons
|
|
496
|
+
*/
|
|
497
|
+
// eslint-disable-next-line @typescript-eslint/require-await -- deprecated stub that always throws
|
|
367
498
|
async query(_sql) {
|
|
368
499
|
throw new Error('Direct SQL queries are not allowed for security reasons. Use specific methods like getRowCount(), getMaxTimestamp(), etc.');
|
|
369
500
|
}
|
|
501
|
+
/**
|
|
502
|
+
* Get database file path (DuckDB-specific utility)
|
|
503
|
+
*/
|
|
370
504
|
getDatabasePath() {
|
|
371
505
|
return this.databasePath;
|
|
372
506
|
}
|
|
507
|
+
/**
|
|
508
|
+
* Check if database is in-memory
|
|
509
|
+
*/
|
|
373
510
|
isInMemory() {
|
|
374
511
|
return this.databasePath === ':memory:';
|
|
375
512
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duckdb.js","sourceRoot":"","sources":["../../src/connectors/duckdb.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"duckdb.js","sourceRoot":"","sources":["../../src/connectors/duckdb.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database connectors for FreshGuard Core
|
|
3
|
+
*
|
|
4
|
+
* Each connector extends {@link BaseConnector} and implements the read-only
|
|
5
|
+
* {@link Connector} interface with built-in SQL-injection prevention, query
|
|
6
|
+
* timeouts, and error sanitization.
|
|
7
|
+
*
|
|
8
|
+
* Pick the connector that matches your data warehouse, instantiate it with a
|
|
9
|
+
* {@link ConnectorConfig}, and pass it to any monitoring function
|
|
10
|
+
* (`checkFreshness`, `checkVolumeAnomaly`, `checkSchemaChanges`).
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* import { PostgresConnector, checkFreshness } from '@freshguard/freshguard-core';
|
|
15
|
+
*
|
|
16
|
+
* const pg = new PostgresConnector({
|
|
17
|
+
* host: 'localhost', port: 5432,
|
|
18
|
+
* database: 'analytics', username: 'reader', password: 'secret', ssl: true,
|
|
19
|
+
* });
|
|
20
|
+
*
|
|
21
|
+
* const result = await checkFreshness(pg, rule);
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* @module @freshguard/freshguard-core/connectors
|
|
25
|
+
*/
|
|
1
26
|
export { PostgresConnector } from './postgres.js';
|
|
2
27
|
export { DuckDBConnector } from './duckdb.js';
|
|
3
28
|
export { BigQueryConnector } from './bigquery.js';
|
|
4
29
|
export { SnowflakeConnector } from './snowflake.js';
|
|
5
30
|
export { MySQLConnector } from './mysql.js';
|
|
6
31
|
export { RedshiftConnector } from './redshift.js';
|
|
32
|
+
export { MSSQLConnector } from './mssql.js';
|
|
33
|
+
export { AzureSQLConnector } from './azure-sql.js';
|
|
34
|
+
export { SynapseConnector } from './synapse.js';
|
|
7
35
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/connectors/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/connectors/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/connectors/index.js
CHANGED
|
@@ -1,7 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database connectors for FreshGuard Core
|
|
3
|
+
*
|
|
4
|
+
* Each connector extends {@link BaseConnector} and implements the read-only
|
|
5
|
+
* {@link Connector} interface with built-in SQL-injection prevention, query
|
|
6
|
+
* timeouts, and error sanitization.
|
|
7
|
+
*
|
|
8
|
+
* Pick the connector that matches your data warehouse, instantiate it with a
|
|
9
|
+
* {@link ConnectorConfig}, and pass it to any monitoring function
|
|
10
|
+
* (`checkFreshness`, `checkVolumeAnomaly`, `checkSchemaChanges`).
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* import { PostgresConnector, checkFreshness } from '@freshguard/freshguard-core';
|
|
15
|
+
*
|
|
16
|
+
* const pg = new PostgresConnector({
|
|
17
|
+
* host: 'localhost', port: 5432,
|
|
18
|
+
* database: 'analytics', username: 'reader', password: 'secret', ssl: true,
|
|
19
|
+
* });
|
|
20
|
+
*
|
|
21
|
+
* const result = await checkFreshness(pg, rule);
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* @module @freshguard/freshguard-core/connectors
|
|
25
|
+
*/
|
|
1
26
|
export { PostgresConnector } from './postgres.js';
|
|
2
27
|
export { DuckDBConnector } from './duckdb.js';
|
|
3
28
|
export { BigQueryConnector } from './bigquery.js';
|
|
4
29
|
export { SnowflakeConnector } from './snowflake.js';
|
|
5
30
|
export { MySQLConnector } from './mysql.js';
|
|
6
31
|
export { RedshiftConnector } from './redshift.js';
|
|
32
|
+
export { MSSQLConnector } from './mssql.js';
|
|
33
|
+
export { AzureSQLConnector } from './azure-sql.js';
|
|
34
|
+
export { SynapseConnector } from './synapse.js';
|
|
7
35
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/connectors/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/connectors/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC"}
|