@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,39 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secure BigQuery connector for FreshGuard Core
|
|
3
|
+
* Extends BaseConnector with security built-in
|
|
4
|
+
*
|
|
5
|
+
* @module @freshguard/freshguard-core/connectors/bigquery
|
|
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 BigQuery connector
|
|
13
|
+
*
|
|
14
|
+
* Connects to Google BigQuery using Application Default Credentials or a
|
|
15
|
+
* service-account key. The `database` field in the config is the GCP project ID.
|
|
16
|
+
*
|
|
17
|
+
* Features:
|
|
18
|
+
* - SQL injection prevention
|
|
19
|
+
* - Credential validation
|
|
20
|
+
* - Read-only query patterns
|
|
21
|
+
* - Connection timeouts
|
|
22
|
+
* - Secure error handling
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* import { BigQueryConnector } from '@freshguard/freshguard-core';
|
|
27
|
+
*
|
|
28
|
+
* const connector = new BigQueryConnector({
|
|
29
|
+
* host: 'bigquery.googleapis.com', port: 443,
|
|
30
|
+
* database: 'my-gcp-project',
|
|
31
|
+
* username: 'service-account@project.iam.gserviceaccount.com',
|
|
32
|
+
* password: process.env.BQ_KEY!,
|
|
33
|
+
* });
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
5
36
|
export declare class BigQueryConnector extends BaseConnector {
|
|
6
37
|
private client;
|
|
7
38
|
private projectId;
|
|
8
39
|
private location;
|
|
9
40
|
private connected;
|
|
41
|
+
/**
|
|
42
|
+
* @param config - Connection config; `database` is the GCP project ID
|
|
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 BigQuery-specific configuration
|
|
48
|
+
*/
|
|
11
49
|
private static validateBigQueryConfig;
|
|
50
|
+
/**
|
|
51
|
+
* Connect to BigQuery with security validation
|
|
52
|
+
*/
|
|
12
53
|
private connect;
|
|
54
|
+
/**
|
|
55
|
+
* Execute a parameterized SQL query using BigQuery's named parameters
|
|
56
|
+
*/
|
|
13
57
|
protected executeParameterizedQuery(sql: string, parameters?: unknown[]): Promise<QueryResultRow[]>;
|
|
58
|
+
/**
|
|
59
|
+
* Execute a validated SQL query with security measures
|
|
60
|
+
*/
|
|
14
61
|
protected executeQuery(sql: string): Promise<QueryResultRow[]>;
|
|
62
|
+
/**
|
|
63
|
+
* Test database connection with security validation
|
|
64
|
+
*/
|
|
15
65
|
testConnection(debugConfig?: import('../types.js').DebugConfig): Promise<boolean>;
|
|
66
|
+
/**
|
|
67
|
+
* Helper method to merge debug configuration
|
|
68
|
+
*/
|
|
16
69
|
private mergeDebugConfig;
|
|
70
|
+
/**
|
|
71
|
+
* Generate BigQuery-specific connection suggestions based on error
|
|
72
|
+
*/
|
|
17
73
|
private generateBigQueryConnectionSuggestion;
|
|
74
|
+
/**
|
|
75
|
+
* List all tables in the project (limited to accessible datasets)
|
|
76
|
+
*/
|
|
18
77
|
listTables(): Promise<string[]>;
|
|
78
|
+
/**
|
|
79
|
+
* Get table schema information securely
|
|
80
|
+
*/
|
|
19
81
|
getTableSchema(table: string): Promise<TableSchema>;
|
|
82
|
+
/**
|
|
83
|
+
* Get last modified timestamp for BigQuery tables
|
|
84
|
+
* Uses BigQuery's table metadata when possible
|
|
85
|
+
*/
|
|
20
86
|
getLastModified(table: string): Promise<Date | null>;
|
|
87
|
+
/**
|
|
88
|
+
* Close the BigQuery connection
|
|
89
|
+
*/
|
|
21
90
|
close(): Promise<void>;
|
|
91
|
+
/**
|
|
92
|
+
* Map BigQuery data types to standard types
|
|
93
|
+
*/
|
|
22
94
|
private mapBigQueryType;
|
|
95
|
+
/**
|
|
96
|
+
* Parse and validate table name for BigQuery
|
|
97
|
+
*/
|
|
23
98
|
private parseTableName;
|
|
99
|
+
/**
|
|
100
|
+
* Legacy connect method for backward compatibility
|
|
101
|
+
* @deprecated Use constructor with ConnectorConfig instead
|
|
102
|
+
*/
|
|
24
103
|
connectLegacy(credentials: SourceCredentials): Promise<void>;
|
|
104
|
+
/**
|
|
105
|
+
* Legacy test connection method for backward compatibility
|
|
106
|
+
* @deprecated Use testConnection() instead
|
|
107
|
+
*/
|
|
25
108
|
testConnectionLegacy(): Promise<{
|
|
26
109
|
success: boolean;
|
|
27
110
|
tableCount?: number;
|
|
28
111
|
error?: string;
|
|
29
112
|
}>;
|
|
113
|
+
/**
|
|
114
|
+
* Legacy get table metadata method for backward compatibility
|
|
115
|
+
* @deprecated Use getRowCount() and getMaxTimestamp() instead
|
|
116
|
+
*/
|
|
30
117
|
getTableMetadata(tableName: string, timestampColumn?: string): Promise<{
|
|
31
118
|
rowCount: number;
|
|
32
119
|
lastUpdate?: Date;
|
|
33
120
|
}>;
|
|
121
|
+
/**
|
|
122
|
+
* Legacy query method for backward compatibility
|
|
123
|
+
* @deprecated Direct SQL queries are not allowed for security reasons
|
|
124
|
+
*/
|
|
34
125
|
query<T = unknown>(_sql: string): Promise<T[]>;
|
|
126
|
+
/**
|
|
127
|
+
* Get BigQuery project ID
|
|
128
|
+
*/
|
|
35
129
|
getProjectId(): string;
|
|
130
|
+
/**
|
|
131
|
+
* Set BigQuery location/region
|
|
132
|
+
*/
|
|
36
133
|
setLocation(location: string): void;
|
|
134
|
+
/**
|
|
135
|
+
* Get current BigQuery location/region
|
|
136
|
+
*/
|
|
37
137
|
getLocation(): string;
|
|
38
138
|
}
|
|
39
139
|
//# sourceMappingURL=bigquery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bigquery.d.ts","sourceRoot":"","sources":["../../src/connectors/bigquery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bigquery.d.ts","sourceRoot":"","sources":["../../src/connectors/bigquery.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,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;AAWrD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,iBAAkB,SAAQ,aAAa;IAClD,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,QAAQ,CAAQ;IACxB,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,sBAAsB;IAwCrC;;OAEG;YACW,OAAO;IAwDrB;;OAEG;cACa,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAkE7G;;OAEG;cACa,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAIpE;;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,oCAAoC;IAsC5C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAyBrC;;OAEG;IACG,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAqDzD;;;OAGG;IACG,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAsC1D;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAatB;;OAEG;IACH,OAAO,CAAC,eAAe;IA0BvB;;OAEG;IACH,OAAO,CAAC,cAAc;IA8BtB;;;OAGG;IACG,aAAa,CAAC,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BlE;;;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;IAqBnD;;;OAGG;IAEG,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAMpD;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAInC;;OAEG;IACH,WAAW,IAAI,MAAM;CAGtB"}
|
|
@@ -1,32 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secure BigQuery connector for FreshGuard Core
|
|
3
|
+
* Extends BaseConnector with security built-in
|
|
4
|
+
*
|
|
5
|
+
* @module @freshguard/freshguard-core/connectors/bigquery
|
|
6
|
+
*/
|
|
1
7
|
import { BigQuery } from '@google-cloud/bigquery';
|
|
2
8
|
import { BaseConnector } from './base-connector.js';
|
|
3
9
|
import { rowString } from '../types/driver-results.js';
|
|
4
10
|
import { ConnectionError, TimeoutError, QueryError, ConfigurationError, SecurityError, ErrorHandler } from '../errors/index.js';
|
|
5
11
|
import { validateDatabaseIdentifier } from '../validators/index.js';
|
|
12
|
+
/**
|
|
13
|
+
* Secure BigQuery connector
|
|
14
|
+
*
|
|
15
|
+
* Connects to Google BigQuery using Application Default Credentials or a
|
|
16
|
+
* service-account key. The `database` field in the config is the GCP project ID.
|
|
17
|
+
*
|
|
18
|
+
* Features:
|
|
19
|
+
* - SQL injection prevention
|
|
20
|
+
* - Credential validation
|
|
21
|
+
* - Read-only query patterns
|
|
22
|
+
* - Connection timeouts
|
|
23
|
+
* - Secure error handling
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* import { BigQueryConnector } from '@freshguard/freshguard-core';
|
|
28
|
+
*
|
|
29
|
+
* const connector = new BigQueryConnector({
|
|
30
|
+
* host: 'bigquery.googleapis.com', port: 443,
|
|
31
|
+
* database: 'my-gcp-project',
|
|
32
|
+
* username: 'service-account@project.iam.gserviceaccount.com',
|
|
33
|
+
* password: process.env.BQ_KEY!,
|
|
34
|
+
* });
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
6
37
|
export class BigQueryConnector extends BaseConnector {
|
|
7
38
|
client = null;
|
|
8
39
|
projectId = '';
|
|
9
40
|
location = 'US';
|
|
10
41
|
connected = false;
|
|
42
|
+
/**
|
|
43
|
+
* @param config - Connection config; `database` is the GCP project ID
|
|
44
|
+
* @param securityConfig - Optional overrides for query timeouts, max rows, and blocked keywords
|
|
45
|
+
*/
|
|
11
46
|
constructor(config, securityConfig) {
|
|
47
|
+
// Validate BigQuery-specific configuration
|
|
12
48
|
BigQueryConnector.validateBigQueryConfig(config);
|
|
13
49
|
super(config, securityConfig);
|
|
50
|
+
// For BigQuery, database field contains the project ID
|
|
14
51
|
this.projectId = config.database;
|
|
15
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* Validate BigQuery-specific configuration
|
|
55
|
+
*/
|
|
16
56
|
static validateBigQueryConfig(config) {
|
|
17
57
|
if (!config.database) {
|
|
18
58
|
throw new ConfigurationError('Project ID is required for BigQuery (use database field)');
|
|
19
59
|
}
|
|
60
|
+
// Validate project ID format (Google Cloud project IDs have specific rules)
|
|
20
61
|
const projectIdPattern = /^[a-z][a-z0-9-]*[a-z0-9]$/;
|
|
21
62
|
if (!projectIdPattern.test(config.database)) {
|
|
22
63
|
throw new ConfigurationError('Invalid BigQuery project ID format');
|
|
23
64
|
}
|
|
65
|
+
// BigQuery uses service account authentication, not traditional username/password
|
|
66
|
+
// But we still require them for consistency with the interface
|
|
24
67
|
if (!config.password && !config.username) {
|
|
25
68
|
throw new ConfigurationError('Service account credentials required for BigQuery');
|
|
26
69
|
}
|
|
70
|
+
// Validate service account credentials if provided
|
|
27
71
|
if (config.password) {
|
|
28
72
|
try {
|
|
73
|
+
// Parse service account JSON from password field
|
|
29
74
|
const credentials = JSON.parse(config.password);
|
|
75
|
+
// Validate that this looks like a service account key
|
|
30
76
|
if (!credentials.type || credentials.type !== 'service_account') {
|
|
31
77
|
throw new SecurityError('Invalid service account credentials format');
|
|
32
78
|
}
|
|
@@ -42,27 +88,36 @@ export class BigQueryConnector extends BaseConnector {
|
|
|
42
88
|
}
|
|
43
89
|
}
|
|
44
90
|
}
|
|
91
|
+
/**
|
|
92
|
+
* Connect to BigQuery with security validation
|
|
93
|
+
*/
|
|
45
94
|
async connect() {
|
|
46
95
|
if (this.connected && this.client) {
|
|
47
|
-
return;
|
|
96
|
+
return; // Already connected
|
|
48
97
|
}
|
|
49
98
|
try {
|
|
50
99
|
const bigqueryOptions = {
|
|
51
100
|
projectId: this.projectId,
|
|
52
101
|
location: this.location,
|
|
102
|
+
// Timeout for BigQuery operations
|
|
53
103
|
queryTimeoutMs: this.queryTimeout,
|
|
54
104
|
};
|
|
105
|
+
// Handle authentication - prioritize service account key
|
|
55
106
|
if (this.config.password) {
|
|
107
|
+
// Service account validation was already done in constructor
|
|
56
108
|
const credentials = JSON.parse(this.config.password);
|
|
57
109
|
bigqueryOptions.credentials = credentials;
|
|
58
110
|
}
|
|
59
111
|
else {
|
|
112
|
+
// Fallback to Application Default Credentials
|
|
60
113
|
console.warn('No service account provided, using Application Default Credentials');
|
|
61
114
|
}
|
|
115
|
+
// Create BigQuery client with timeout protection
|
|
62
116
|
this.client = await this.executeWithTimeout(() => new Promise((resolvePromise) => {
|
|
63
117
|
const client = new BigQuery(bigqueryOptions);
|
|
64
118
|
resolvePromise(client);
|
|
65
119
|
}), this.connectionTimeout);
|
|
120
|
+
// Test authentication by listing datasets (limited)
|
|
66
121
|
await this.executeWithTimeout(() => {
|
|
67
122
|
if (!this.client)
|
|
68
123
|
throw new ConnectionError('BigQuery client not available');
|
|
@@ -77,18 +132,24 @@ export class BigQueryConnector extends BaseConnector {
|
|
|
77
132
|
throw new ConnectionError('Failed to connect to BigQuery', 'bigquery.googleapis.com', 443, error instanceof Error ? error : undefined);
|
|
78
133
|
}
|
|
79
134
|
}
|
|
135
|
+
/**
|
|
136
|
+
* Execute a parameterized SQL query using BigQuery's named parameters
|
|
137
|
+
*/
|
|
80
138
|
async executeParameterizedQuery(sql, parameters = []) {
|
|
81
139
|
await this.connect();
|
|
82
140
|
if (!this.client) {
|
|
83
141
|
throw new ConnectionError('BigQuery client not available');
|
|
84
142
|
}
|
|
85
143
|
try {
|
|
144
|
+
// Convert positional parameters ($1, $2, etc.) to BigQuery named parameters (@param1, @param2, etc.)
|
|
86
145
|
let finalSql = sql;
|
|
87
146
|
const namedParams = {};
|
|
88
147
|
if (parameters.length > 0) {
|
|
89
148
|
for (let i = 0; i < parameters.length; i++) {
|
|
90
149
|
const placeholder = `$${i + 1}`;
|
|
91
150
|
const namedParam = `param${i + 1}`;
|
|
151
|
+
// Replace $1, $2, etc. with @param1, @param2, etc.
|
|
152
|
+
// eslint-disable-next-line security/detect-non-literal-regexp
|
|
92
153
|
finalSql = finalSql.replace(new RegExp(`\\${placeholder}\\b`, 'g'), `@${namedParam}`);
|
|
93
154
|
namedParams[namedParam] = parameters[i];
|
|
94
155
|
}
|
|
@@ -98,8 +159,9 @@ export class BigQueryConnector extends BaseConnector {
|
|
|
98
159
|
location: this.location,
|
|
99
160
|
maxResults: this.maxRows,
|
|
100
161
|
jobTimeoutMs: this.queryTimeout,
|
|
101
|
-
useLegacySql: false,
|
|
162
|
+
useLegacySql: false, // Force standard SQL for security
|
|
102
163
|
};
|
|
164
|
+
// Add named parameters if any exist
|
|
103
165
|
if (Object.keys(namedParams).length > 0) {
|
|
104
166
|
queryOptions.params = namedParams;
|
|
105
167
|
}
|
|
@@ -109,6 +171,7 @@ export class BigQueryConnector extends BaseConnector {
|
|
|
109
171
|
return this.client.query(queryOptions);
|
|
110
172
|
}, this.queryTimeout);
|
|
111
173
|
const typedRows = rows;
|
|
174
|
+
// Validate result size for security
|
|
112
175
|
this.validateResultSize(typedRows);
|
|
113
176
|
return typedRows;
|
|
114
177
|
}
|
|
@@ -116,12 +179,19 @@ export class BigQueryConnector extends BaseConnector {
|
|
|
116
179
|
if (error instanceof TimeoutError) {
|
|
117
180
|
throw error;
|
|
118
181
|
}
|
|
182
|
+
// Sanitize and re-throw as QueryError
|
|
119
183
|
throw new QueryError(ErrorHandler.getUserMessage(error), 'query_execution', undefined, error instanceof Error ? error : undefined);
|
|
120
184
|
}
|
|
121
185
|
}
|
|
186
|
+
/**
|
|
187
|
+
* Execute a validated SQL query with security measures
|
|
188
|
+
*/
|
|
122
189
|
async executeQuery(sql) {
|
|
123
190
|
return this.executeParameterizedQuery(sql, []);
|
|
124
191
|
}
|
|
192
|
+
/**
|
|
193
|
+
* Test database connection with security validation
|
|
194
|
+
*/
|
|
125
195
|
async testConnection(debugConfig) {
|
|
126
196
|
const mergedDebugConfig = this.mergeDebugConfig(debugConfig);
|
|
127
197
|
const debugId = `bq-test-${Date.now().toString(36)}-${Math.random().toString(36).substr(2, 5)}`;
|
|
@@ -139,6 +209,7 @@ export class BigQueryConnector extends BaseConnector {
|
|
|
139
209
|
});
|
|
140
210
|
return false;
|
|
141
211
|
}
|
|
212
|
+
// Test with a simple, safe query (skip validation for connection test)
|
|
142
213
|
const sql = 'SELECT 1 as test';
|
|
143
214
|
await this.executeWithTimeout(() => {
|
|
144
215
|
if (!this.client)
|
|
@@ -165,9 +236,13 @@ export class BigQueryConnector extends BaseConnector {
|
|
|
165
236
|
duration,
|
|
166
237
|
suggestion: this.generateBigQueryConnectionSuggestion(error)
|
|
167
238
|
});
|
|
239
|
+
// Don't throw - this method should return boolean
|
|
168
240
|
return false;
|
|
169
241
|
}
|
|
170
242
|
}
|
|
243
|
+
/**
|
|
244
|
+
* Helper method to merge debug configuration
|
|
245
|
+
*/
|
|
171
246
|
mergeDebugConfig(debugConfig) {
|
|
172
247
|
return {
|
|
173
248
|
enabled: debugConfig?.enabled ?? (process.env.NODE_ENV === 'development'),
|
|
@@ -176,6 +251,9 @@ export class BigQueryConnector extends BaseConnector {
|
|
|
176
251
|
logLevel: debugConfig?.logLevel ?? 'debug'
|
|
177
252
|
};
|
|
178
253
|
}
|
|
254
|
+
/**
|
|
255
|
+
* Generate BigQuery-specific connection suggestions based on error
|
|
256
|
+
*/
|
|
179
257
|
generateBigQueryConnectionSuggestion(error) {
|
|
180
258
|
if (!(error instanceof Error)) {
|
|
181
259
|
return 'Check BigQuery project configuration and permissions';
|
|
@@ -204,6 +282,9 @@ export class BigQueryConnector extends BaseConnector {
|
|
|
204
282
|
}
|
|
205
283
|
return `BigQuery connection failed for project '${this.projectId}'. Check project ID, credentials, and billing status.`;
|
|
206
284
|
}
|
|
285
|
+
/**
|
|
286
|
+
* List all tables in the project (limited to accessible datasets)
|
|
287
|
+
*/
|
|
207
288
|
async listTables() {
|
|
208
289
|
const sql = `
|
|
209
290
|
SELECT
|
|
@@ -222,9 +303,13 @@ export class BigQueryConnector extends BaseConnector {
|
|
|
222
303
|
throw new QueryError('Failed to list tables', 'table_listing', undefined, error instanceof Error ? error : undefined);
|
|
223
304
|
}
|
|
224
305
|
}
|
|
306
|
+
/**
|
|
307
|
+
* Get table schema information securely
|
|
308
|
+
*/
|
|
225
309
|
async getTableSchema(table) {
|
|
226
310
|
const parsedTable = this.parseTableName(table);
|
|
227
311
|
const tableParts = parsedTable.split('.');
|
|
312
|
+
// Ensure we have exactly 3 parts: project.dataset.table
|
|
228
313
|
if (tableParts.length !== 3) {
|
|
229
314
|
throw new QueryError('Invalid table name format. Expected: project.dataset.table', 'invalid_table_name');
|
|
230
315
|
}
|
|
@@ -261,9 +346,14 @@ export class BigQueryConnector extends BaseConnector {
|
|
|
261
346
|
throw new QueryError('Failed to get table schema', 'schema_query', table, error instanceof Error ? error : undefined);
|
|
262
347
|
}
|
|
263
348
|
}
|
|
349
|
+
/**
|
|
350
|
+
* Get last modified timestamp for BigQuery tables
|
|
351
|
+
* Uses BigQuery's table metadata when possible
|
|
352
|
+
*/
|
|
264
353
|
async getLastModified(table) {
|
|
265
354
|
const parsedTable = this.parseTableName(table);
|
|
266
355
|
try {
|
|
356
|
+
// First try to get table metadata from BigQuery API
|
|
267
357
|
const [dataset, tableId] = parsedTable.split('.').slice(-2);
|
|
268
358
|
if (this.client && dataset && tableId) {
|
|
269
359
|
const tableRef = this.client.dataset(dataset).table(tableId);
|
|
@@ -275,7 +365,9 @@ export class BigQueryConnector extends BaseConnector {
|
|
|
275
365
|
}
|
|
276
366
|
}
|
|
277
367
|
catch {
|
|
368
|
+
// Fallback to SQL-based approach
|
|
278
369
|
}
|
|
370
|
+
// Try common timestamp columns
|
|
279
371
|
const timestampColumns = ['updated_at', 'modified_at', 'last_modified', 'timestamp', '_airbyte_extracted_at'];
|
|
280
372
|
for (const column of timestampColumns) {
|
|
281
373
|
try {
|
|
@@ -285,21 +377,31 @@ export class BigQueryConnector extends BaseConnector {
|
|
|
285
377
|
}
|
|
286
378
|
}
|
|
287
379
|
catch {
|
|
380
|
+
// Column doesn't exist, try next one
|
|
288
381
|
continue;
|
|
289
382
|
}
|
|
290
383
|
}
|
|
291
384
|
return null;
|
|
292
385
|
}
|
|
386
|
+
/**
|
|
387
|
+
* Close the BigQuery connection
|
|
388
|
+
*/
|
|
293
389
|
close() {
|
|
294
390
|
try {
|
|
391
|
+
// BigQuery client doesn't require explicit cleanup
|
|
392
|
+
// Just reset references
|
|
295
393
|
this.client = null;
|
|
296
394
|
this.connected = false;
|
|
297
395
|
}
|
|
298
396
|
catch (error) {
|
|
397
|
+
// Log error but don't throw
|
|
299
398
|
console.warn('Warning: Error closing BigQuery connection:', ErrorHandler.getUserMessage(error));
|
|
300
399
|
}
|
|
301
400
|
return Promise.resolve();
|
|
302
401
|
}
|
|
402
|
+
/**
|
|
403
|
+
* Map BigQuery data types to standard types
|
|
404
|
+
*/
|
|
303
405
|
mapBigQueryType(bqType) {
|
|
304
406
|
const typeMap = {
|
|
305
407
|
'STRING': 'text',
|
|
@@ -324,26 +426,40 @@ export class BigQueryConnector extends BaseConnector {
|
|
|
324
426
|
};
|
|
325
427
|
return typeMap[bqType.toUpperCase()] ?? 'unknown';
|
|
326
428
|
}
|
|
429
|
+
/**
|
|
430
|
+
* Parse and validate table name for BigQuery
|
|
431
|
+
*/
|
|
327
432
|
parseTableName(tableName) {
|
|
328
433
|
validateDatabaseIdentifier(tableName, 'table');
|
|
329
434
|
const parts = tableName.split('.');
|
|
330
435
|
if (parts.length === 3) {
|
|
436
|
+
// project.dataset.table format
|
|
331
437
|
const [project, _dataset, _table] = parts;
|
|
438
|
+
// Validate project matches
|
|
332
439
|
if (project !== this.projectId) {
|
|
333
440
|
throw new SecurityError('Table project does not match configured project');
|
|
334
441
|
}
|
|
335
442
|
return tableName;
|
|
336
443
|
}
|
|
337
444
|
else if (parts.length === 2) {
|
|
445
|
+
// dataset.table format - prepend project
|
|
338
446
|
return `${this.projectId}.${tableName}`;
|
|
339
447
|
}
|
|
340
448
|
else if (parts.length === 1) {
|
|
449
|
+
// Just table name - need dataset
|
|
341
450
|
throw new QueryError('Table name must include dataset (format: dataset.table)', 'invalid_table_name');
|
|
342
451
|
}
|
|
343
452
|
else {
|
|
344
453
|
throw new QueryError('Invalid table name format', 'invalid_table_name');
|
|
345
454
|
}
|
|
346
455
|
}
|
|
456
|
+
// ==============================================
|
|
457
|
+
// Legacy API compatibility methods
|
|
458
|
+
// ==============================================
|
|
459
|
+
/**
|
|
460
|
+
* Legacy connect method for backward compatibility
|
|
461
|
+
* @deprecated Use constructor with ConnectorConfig instead
|
|
462
|
+
*/
|
|
347
463
|
async connectLegacy(credentials) {
|
|
348
464
|
console.warn('Warning: connectLegacy is deprecated. Use constructor with ConnectorConfig instead.');
|
|
349
465
|
const options = credentials.additionalOptions ?? {};
|
|
@@ -359,19 +475,26 @@ export class BigQueryConnector extends BaseConnector {
|
|
|
359
475
|
password: credentials.password ?? '',
|
|
360
476
|
ssl: true
|
|
361
477
|
};
|
|
478
|
+
// Set location if provided
|
|
362
479
|
if (options.location) {
|
|
363
480
|
this.location = options.location;
|
|
364
481
|
}
|
|
482
|
+
// Validate and reconnect
|
|
365
483
|
BigQueryConnector.validateBigQueryConfig(config);
|
|
366
484
|
this.config = { ...this.config, ...config };
|
|
367
485
|
this.projectId = config.database;
|
|
368
486
|
await this.connect();
|
|
369
487
|
}
|
|
488
|
+
/**
|
|
489
|
+
* Legacy test connection method for backward compatibility
|
|
490
|
+
* @deprecated Use testConnection() instead
|
|
491
|
+
*/
|
|
370
492
|
async testConnectionLegacy() {
|
|
371
493
|
console.warn('Warning: testConnectionLegacy is deprecated. Use testConnection() instead.');
|
|
372
494
|
try {
|
|
373
495
|
const success = await this.testConnection();
|
|
374
496
|
if (success) {
|
|
497
|
+
// Get table count for legacy compatibility
|
|
375
498
|
const tables = await this.listTables();
|
|
376
499
|
return {
|
|
377
500
|
success: true,
|
|
@@ -392,6 +515,10 @@ export class BigQueryConnector extends BaseConnector {
|
|
|
392
515
|
};
|
|
393
516
|
}
|
|
394
517
|
}
|
|
518
|
+
/**
|
|
519
|
+
* Legacy get table metadata method for backward compatibility
|
|
520
|
+
* @deprecated Use getRowCount() and getMaxTimestamp() instead
|
|
521
|
+
*/
|
|
395
522
|
async getTableMetadata(tableName, timestampColumn = 'updated_at') {
|
|
396
523
|
console.warn('Warning: getTableMetadata is deprecated. Use getRowCount() and getMaxTimestamp() instead.');
|
|
397
524
|
try {
|
|
@@ -406,15 +533,29 @@ export class BigQueryConnector extends BaseConnector {
|
|
|
406
533
|
throw new QueryError('Failed to get table metadata', 'metadata_query', tableName, error instanceof Error ? error : undefined);
|
|
407
534
|
}
|
|
408
535
|
}
|
|
536
|
+
/**
|
|
537
|
+
* Legacy query method for backward compatibility
|
|
538
|
+
* @deprecated Direct SQL queries are not allowed for security reasons
|
|
539
|
+
*/
|
|
540
|
+
// eslint-disable-next-line @typescript-eslint/require-await -- deprecated stub that always throws
|
|
409
541
|
async query(_sql) {
|
|
410
542
|
throw new Error('Direct SQL queries are not allowed for security reasons. Use specific methods like getRowCount(), getMaxTimestamp(), etc.');
|
|
411
543
|
}
|
|
544
|
+
/**
|
|
545
|
+
* Get BigQuery project ID
|
|
546
|
+
*/
|
|
412
547
|
getProjectId() {
|
|
413
548
|
return this.projectId;
|
|
414
549
|
}
|
|
550
|
+
/**
|
|
551
|
+
* Set BigQuery location/region
|
|
552
|
+
*/
|
|
415
553
|
setLocation(location) {
|
|
416
554
|
this.location = location;
|
|
417
555
|
}
|
|
556
|
+
/**
|
|
557
|
+
* Get current BigQuery location/region
|
|
558
|
+
*/
|
|
418
559
|
getLocation() {
|
|
419
560
|
return this.location;
|
|
420
561
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bigquery.js","sourceRoot":"","sources":["../../src/connectors/bigquery.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAuB,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE5E,OAAO,EACL,eAAe,EACf,YAAY,EACZ,UAAU,EACV,kBAAkB,EAClB,aAAa,EACb,YAAY,EACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAYpE,MAAM,OAAO,iBAAkB,SAAQ,aAAa;IAC1C,MAAM,GAAoB,IAAI,CAAC;IAC/B,SAAS,GAAG,EAAE,CAAC;IACf,QAAQ,GAAG,IAAI,CAAC;IAChB,SAAS,GAAG,KAAK,CAAC;IAE1B,YAAY,MAAuB,EAAE,cAAwC;QAE3E,iBAAiB,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;QACjD,KAAK,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAG9B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;IACnC,CAAC;IAKO,MAAM,CAAC,sBAAsB,CAAC,MAAuB;QAC3D,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrB,MAAM,IAAI,kBAAkB,CAAC,0DAA0D,CAAC,CAAC;QAC3F,CAAC;QAGD,MAAM,gBAAgB,GAAG,2BAA2B,CAAC;QACrD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,kBAAkB,CAAC,oCAAoC,CAAC,CAAC;QACrE,CAAC;QAID,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACzC,MAAM,IAAI,kBAAkB,CAAC,mDAAmD,CAAC,CAAC;QACpF,CAAC;QAGD,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,IAAI,CAAC;gBAEH,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAA4B,CAAC;gBAG3E,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;oBAChE,MAAM,IAAI,aAAa,CAAC,4CAA4C,CAAC,CAAC;gBACxE,CAAC;gBAED,IAAI,CAAC,WAAW,CAAC,UAAU,IAAI,WAAW,CAAC,UAAU,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;oBAC1E,MAAM,IAAI,aAAa,CAAC,6DAA6D,CAAC,CAAC;gBACzF,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,aAAa,EAAE,CAAC;oBACnC,MAAM,KAAK,CAAC;gBACd,CAAC;gBACD,MAAM,IAAI,kBAAkB,CAAC,gDAAgD,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;IACH,CAAC;IAKO,KAAK,CAAC,OAAO;QACnB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAClC,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,eAAe,GAA4B;gBAC/C,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBAEvB,cAAc,EAAE,IAAI,CAAC,YAAY;aAClC,CAAC;YAGF,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAEzB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAA4B,CAAC;gBAChF,eAAe,CAAC,WAAW,GAAG,WAAW,CAAC;YAC5C,CAAC;iBAAM,CAAC;gBAEN,OAAO,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;YACrF,CAAC;YAGD,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CACzC,GAAG,EAAE,CAAC,IAAI,OAAO,CAAW,CAAC,cAAc,EAAE,EAAE;gBAC7C,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,eAA4D,CAAC,CAAC;gBAC1F,cAAc,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC,CAAC,EACF,IAAI,CAAC,iBAAiB,CACvB,CAAC;YAGF,MAAM,IAAI,CAAC,kBAAkB,CAC3B,GAAG,EAAE;gBACH,IAAI,CAAC,IAAI,CAAC,MAAM;oBAAE,MAAM,IAAI,eAAe,CAAC,+BAA+B,CAAC,CAAC;gBAC7E,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;YACpD,CAAC,EACD,IAAI,CAAC,iBAAiB,CACvB,CAAC;YAEF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,YAAY,IAAI,KAAK,YAAY,aAAa,EAAE,CAAC;gBACpE,MAAM,KAAK,CAAC;YACd,CAAC;YAED,MAAM,IAAI,eAAe,CACvB,+BAA+B,EAC/B,yBAAyB,EACzB,GAAG,EACH,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAC3C,CAAC;QACJ,CAAC;IACH,CAAC;IAKS,KAAK,CAAC,yBAAyB,CAAC,GAAW,EAAE,aAAwB,EAAE;QAC/E,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAErB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,eAAe,CAAC,+BAA+B,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,CAAC;YAEH,IAAI,QAAQ,GAAG,GAAG,CAAC;YACnB,MAAM,WAAW,GAA4B,EAAE,CAAC;YAEhD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBAChC,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBAInC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,WAAW,KAAK,EAAE,GAAG,CAAC,EAAE,IAAI,UAAU,EAAE,CAAC,CAAC;oBACtF,WAAW,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC1C,CAAC;YACH,CAAC;YAED,MAAM,YAAY,GAA4B;gBAC5C,KAAK,EAAE,QAAQ;gBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,UAAU,EAAE,IAAI,CAAC,OAAO;gBACxB,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,YAAY,EAAE,KAAK;aACpB,CAAC;YAGF,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxC,YAAY,CAAC,MAAM,GAAG,WAAW,CAAC;YACpC,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAC1C,GAAG,EAAE;gBACH,IAAI,CAAC,IAAI,CAAC,MAAM;oBAAE,MAAM,IAAI,eAAe,CAAC,+BAA+B,CAAC,CAAC;gBAC7E,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAgD,CAAC,CAAC;YAC7E,CAAC,EACD,IAAI,CAAC,YAAY,CAClB,CAAC;YAEF,MAAM,SAAS,GAAG,IAAwB,CAAC;YAG3C,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;YAEnC,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;gBAClC,MAAM,KAAK,CAAC;YACd,CAAC;YAGD,MAAM,IAAI,UAAU,CAClB,YAAY,CAAC,cAAc,CAAC,KAAK,CAAC,EAClC,iBAAiB,EACjB,SAAS,EACT,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAC3C,CAAC;QACJ,CAAC;IACH,CAAC;IAKS,KAAK,CAAC,YAAY,CAAC,GAAW;QACtC,OAAO,IAAI,CAAC,yBAAyB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACjD,CAAC;IAKD,KAAK,CAAC,cAAc,CAAC,WAA+C;QAClE,MAAM,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,WAAW,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAChG,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAEpC,IAAI,CAAC;YACH,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,OAAO,EAAE,mCAAmC,EAAE;gBACjF,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC,CAAC;YAEH,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YAErB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE,OAAO,EAAE,0BAA0B,EAAE;oBACzE,KAAK,EAAE,oCAAoC;oBAC3C,QAAQ,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS;iBACxC,CAAC,CAAC;gBACH,OAAO,KAAK,CAAC;YACf,CAAC;YAGD,MAAM,GAAG,GAAG,kBAAkB,CAAC;YAE/B,MAAM,IAAI,CAAC,kBAAkB,CAC3B,GAAG,EAAE;gBACH,IAAI,CAAC,IAAI,CAAC,MAAM;oBAAE,MAAM,IAAI,eAAe,CAAC,+BAA+B,CAAC,CAAC;gBAC7E,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YACpE,CAAC,EACD,IAAI,CAAC,iBAAiB,CACvB,CAAC;YAEF,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAE/C,IAAI,iBAAiB,EAAE,OAAO,EAAE,CAAC;gBAC/B,OAAO,CAAC,GAAG,CAAC,UAAU,OAAO,uCAAuC,EAAE;oBACpE,OAAO,EAAE,IAAI;oBACb,QAAQ;oBACR,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;iBACxB,CAAC,CAAC;YACL,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAE/C,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE,OAAO,EAAE,0BAA0B,EAAE;gBACzE,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,KAAK,EAAE,iBAAiB,EAAE,eAAe,IAAI,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB;gBACzG,QAAQ;gBACR,UAAU,EAAE,IAAI,CAAC,oCAAoC,CAAC,KAAK,CAAC;aAC7D,CAAC,CAAC;YAGH,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAKO,gBAAgB,CAAC,WAA+C;QACtE,OAAO;YACL,OAAO,EAAE,WAAW,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,CAAC;YACzE,aAAa,EAAE,WAAW,EAAE,aAAa,IAAI,IAAI;YACjD,eAAe,EAAE,WAAW,EAAE,eAAe,IAAI,IAAI;YACrD,QAAQ,EAAE,WAAW,EAAE,QAAQ,IAAI,OAAO;SAC3C,CAAC;IACJ,CAAC;IAKO,oCAAoC,CAAC,KAAc;QACzD,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,sDAAsD,CAAC;QAChE,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAE5C,IAAI,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACjF,OAAO,YAAY,IAAI,CAAC,SAAS,sFAAsF,CAAC;QAC1H,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YAC/E,OAAO,kCAAkC,IAAI,CAAC,SAAS,oEAAoE,CAAC;QAC9H,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YAC1E,OAAO,yGAAyG,CAAC;QACnH,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3D,OAAO,wCAAwC,IAAI,CAAC,SAAS,yCAAyC,CAAC;QACzG,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YACjE,OAAO,iCAAiC,IAAI,CAAC,SAAS,kDAAkD,CAAC;QAC3G,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/D,OAAO,mDAAmD,IAAI,CAAC,QAAQ,8BAA8B,CAAC;QACxG,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAChC,OAAO,oCAAoC,IAAI,CAAC,SAAS,mDAAmD,CAAC;QAC/G,CAAC;QAED,OAAO,2CAA2C,IAAI,CAAC,SAAS,uDAAuD,CAAC;IAC1H,CAAC;IAKD,KAAK,CAAC,UAAU;QACd,MAAM,GAAG,GAAG;;;;;;;KAOX,CAAC;QAEF,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAE9B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YACzF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,SAAS,IAAI,EAAE,CAAW,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC1H,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,UAAU,CAClB,uBAAuB,EACvB,eAAe,EACf,SAAS,EACT,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAC3C,CAAC;QACJ,CAAC;IACH,CAAC;IAKD,KAAK,CAAC,cAAc,CAAC,KAAa;QAChC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAG1C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,UAAU,CAAC,4DAA4D,EAAE,oBAAoB,CAAC,CAAC;QAC3G,CAAC;QAED,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,GAAG,UAAU,CAAC;QAErD,MAAM,GAAG,GAAG;;;;;;;;;KASX,CAAC;QAEF,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAE9B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAE1G,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACxC,CAAC;YAED,OAAO;gBACL,KAAK;gBACL,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAC1B,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW,IAAI,EAAE,CAAW,CAAC;oBAClE,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,IAAI,EAAE,CAAW,CAAC,CAAC;oBACpF,QAAQ,EAAE,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW,CAAC,KAAK,KAAK;iBACzD,CAAC,CAAC;aACJ,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;gBAChC,MAAM,KAAK,CAAC;YACd,CAAC;YAED,MAAM,IAAI,UAAU,CAClB,4BAA4B,EAC5B,cAAc,EACd,KAAK,EACL,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAC3C,CAAC;QACJ,CAAC;IACH,CAAC;IAMD,KAAK,CAAC,eAAe,CAAC,KAAa;QACjC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAE/C,IAAI,CAAC;YAEH,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAE5D,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC;gBACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC7D,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,QAAQ,CAAC,WAAW,EAA0C,CAAC;gBAExF,MAAM,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC;gBACnD,IAAI,gBAAgB,EAAE,CAAC;oBACrB,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC7D,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;QAET,CAAC;QAGD,MAAM,gBAAgB,GAAG,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,uBAAuB,CAAC,CAAC;QAE9G,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBACzD,IAAI,MAAM,EAAE,CAAC;oBACX,OAAO,MAAM,CAAC;gBAChB,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBAEP,SAAS;YACX,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAKD,KAAK;QACH,IAAI,CAAC;YAGH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAEf,OAAO,CAAC,IAAI,CAAC,6CAA6C,EAAE,YAAY,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;QAClG,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAKO,eAAe,CAAC,MAAc;QACpC,MAAM,OAAO,GAA2B;YACtC,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,QAAQ;YACjB,SAAS,EAAE,QAAQ;YACnB,OAAO,EAAE,QAAQ;YACjB,OAAO,EAAE,OAAO;YAChB,SAAS,EAAE,OAAO;YAClB,SAAS,EAAE,SAAS;YACpB,SAAS,EAAE,SAAS;YACpB,YAAY,EAAE,SAAS;YACvB,SAAS,EAAE,SAAS;YACpB,WAAW,EAAE,aAAa;YAC1B,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,MAAM;YACd,UAAU,EAAE,WAAW;YACvB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,OAAO;YAChB,QAAQ,EAAE,QAAQ;YAClB,QAAQ,EAAE,QAAQ;YAClB,WAAW,EAAE,WAAW;SACzB,CAAC;QAEF,OAAO,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,SAAS,CAAC;IACpD,CAAC;IAKO,cAAc,CAAC,SAAiB;QACtC,0BAA0B,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAE/C,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEnC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAEvB,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;YAG1C,IAAI,OAAO,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC/B,MAAM,IAAI,aAAa,CAAC,iDAAiD,CAAC,CAAC;YAC7E,CAAC;YAED,OAAO,SAAS,CAAC;QACnB,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAE9B,OAAO,GAAG,IAAI,CAAC,SAAS,IAAI,SAAS,EAAE,CAAC;QAC1C,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAE9B,MAAM,IAAI,UAAU,CAAC,yDAAyD,EAAE,oBAAoB,CAAC,CAAC;QACxG,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,UAAU,CAAC,2BAA2B,EAAE,oBAAoB,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAUD,KAAK,CAAC,aAAa,CAAC,WAA8B;QAChD,OAAO,CAAC,IAAI,CAAC,qFAAqF,CAAC,CAAC;QAEpG,MAAM,OAAO,GAAG,WAAW,CAAC,iBAAiB,IAAI,EAAE,CAAC;QACpD,MAAM,SAAS,GAAI,OAAO,CAAC,SAAoB,IAAI,WAAW,CAAC,QAAQ,IAAI,EAAE,CAAC;QAE9E,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,kBAAkB,CAAC,iCAAiC,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,MAAM,GAAoB;YAC9B,IAAI,EAAE,yBAAyB;YAC/B,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,WAAW,CAAC,QAAQ,IAAI,UAAU;YAC5C,QAAQ,EAAE,WAAW,CAAC,QAAQ,IAAI,EAAE;YACpC,GAAG,EAAE,IAAI;SACV,CAAC;QAGF,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAkB,CAAC;QAC7C,CAAC;QAGD,iBAAiB,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;QAC5C,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;QACjC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC;IAMD,KAAK,CAAC,oBAAoB;QACxB,OAAO,CAAC,IAAI,CAAC,4EAA4E,CAAC,CAAC;QAE3F,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5C,IAAI,OAAO,EAAE,CAAC;gBAEZ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;gBACvC,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE,MAAM,CAAC,MAAM;iBAC1B,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,wBAAwB;iBAChC,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,YAAY,CAAC,cAAc,CAAC,KAAK,CAAC;aAC1C,CAAC;QACJ,CAAC;IACH,CAAC;IAMD,KAAK,CAAC,gBAAgB,CACpB,SAAiB,EACjB,eAAe,GAAG,YAAY;QAE9B,OAAO,CAAC,IAAI,CAAC,2FAA2F,CAAC,CAAC;QAE1G,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YACnD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;YAE1E,OAAO;gBACL,QAAQ;gBACR,UAAU,EAAE,UAAU,IAAI,SAAS;aACpC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,UAAU,CAClB,8BAA8B,EAC9B,gBAAgB,EAChB,SAAS,EACT,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAC3C,CAAC;QACJ,CAAC;IACH,CAAC;IAOD,KAAK,CAAC,KAAK,CAAc,IAAY;QACnC,MAAM,IAAI,KAAK,CACb,2HAA2H,CAC5H,CAAC;IACJ,CAAC;IAKD,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAKD,WAAW,CAAC,QAAgB;QAC1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAKD,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"bigquery.js","sourceRoot":"","sources":["../../src/connectors/bigquery.ts"],"names":[],"mappings":"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"}
|