@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.
Files changed (196) hide show
  1. package/CHANGELOG.md +15 -1
  2. package/README.md +74 -1
  3. package/SKILL.md +229 -0
  4. package/dist/cli/index.d.ts +13 -0
  5. package/dist/cli/index.d.ts.map +1 -1
  6. package/dist/cli/index.js +74 -1
  7. package/dist/cli/index.js.map +1 -1
  8. package/dist/connectors/azure-sql.d.ts +121 -0
  9. package/dist/connectors/azure-sql.d.ts.map +1 -0
  10. package/dist/connectors/azure-sql.js +489 -0
  11. package/dist/connectors/azure-sql.js.map +1 -0
  12. package/dist/connectors/base-connector.d.ts +139 -0
  13. package/dist/connectors/base-connector.d.ts.map +1 -1
  14. package/dist/connectors/base-connector.js +160 -3
  15. package/dist/connectors/base-connector.js.map +1 -1
  16. package/dist/connectors/bigquery.d.ts +100 -0
  17. package/dist/connectors/bigquery.d.ts.map +1 -1
  18. package/dist/connectors/bigquery.js +143 -2
  19. package/dist/connectors/bigquery.js.map +1 -1
  20. package/dist/connectors/duckdb.d.ts +96 -0
  21. package/dist/connectors/duckdb.d.ts.map +1 -1
  22. package/dist/connectors/duckdb.js +144 -7
  23. package/dist/connectors/duckdb.js.map +1 -1
  24. package/dist/connectors/index.d.ts +28 -0
  25. package/dist/connectors/index.d.ts.map +1 -1
  26. package/dist/connectors/index.js +28 -0
  27. package/dist/connectors/index.js.map +1 -1
  28. package/dist/connectors/mssql.d.ts +119 -0
  29. package/dist/connectors/mssql.d.ts.map +1 -0
  30. package/dist/connectors/mssql.js +483 -0
  31. package/dist/connectors/mssql.js.map +1 -0
  32. package/dist/connectors/mysql.d.ts +85 -0
  33. package/dist/connectors/mysql.d.ts.map +1 -1
  34. package/dist/connectors/mysql.js +118 -3
  35. package/dist/connectors/mysql.js.map +1 -1
  36. package/dist/connectors/postgres.d.ts +85 -0
  37. package/dist/connectors/postgres.d.ts.map +1 -1
  38. package/dist/connectors/postgres.js +113 -6
  39. package/dist/connectors/postgres.js.map +1 -1
  40. package/dist/connectors/redshift.d.ts +90 -0
  41. package/dist/connectors/redshift.d.ts.map +1 -1
  42. package/dist/connectors/redshift.js +131 -7
  43. package/dist/connectors/redshift.js.map +1 -1
  44. package/dist/connectors/snowflake.d.ts +108 -0
  45. package/dist/connectors/snowflake.d.ts.map +1 -1
  46. package/dist/connectors/snowflake.js +137 -3
  47. package/dist/connectors/snowflake.js.map +1 -1
  48. package/dist/connectors/synapse.d.ts +123 -0
  49. package/dist/connectors/synapse.d.ts.map +1 -0
  50. package/dist/connectors/synapse.js +495 -0
  51. package/dist/connectors/synapse.js.map +1 -0
  52. package/dist/db/index.d.ts +25 -0
  53. package/dist/db/index.d.ts.map +1 -1
  54. package/dist/db/index.js +23 -0
  55. package/dist/db/index.js.map +1 -1
  56. package/dist/db/migrate.d.ts +23 -0
  57. package/dist/db/migrate.d.ts.map +1 -1
  58. package/dist/db/migrate.js +38 -0
  59. package/dist/db/migrate.js.map +1 -1
  60. package/dist/db/schema.d.ts +11 -0
  61. package/dist/db/schema.d.ts.map +1 -1
  62. package/dist/db/schema.js +70 -0
  63. package/dist/db/schema.js.map +1 -1
  64. package/dist/errors/debug-factory.d.ts +38 -0
  65. package/dist/errors/debug-factory.d.ts.map +1 -1
  66. package/dist/errors/debug-factory.js +40 -0
  67. package/dist/errors/debug-factory.js.map +1 -1
  68. package/dist/errors/index.d.ts +59 -0
  69. package/dist/errors/index.d.ts.map +1 -1
  70. package/dist/errors/index.js +110 -7
  71. package/dist/errors/index.js.map +1 -1
  72. package/dist/index.d.ts +32 -1
  73. package/dist/index.d.ts.map +1 -1
  74. package/dist/index.js +37 -1
  75. package/dist/index.js.map +1 -1
  76. package/dist/metadata/duckdb-storage.d.ts +3 -0
  77. package/dist/metadata/duckdb-storage.d.ts.map +1 -1
  78. package/dist/metadata/duckdb-storage.js +6 -0
  79. package/dist/metadata/duckdb-storage.js.map +1 -1
  80. package/dist/metadata/factory.d.ts +30 -0
  81. package/dist/metadata/factory.d.ts.map +1 -1
  82. package/dist/metadata/factory.js +31 -0
  83. package/dist/metadata/factory.js.map +1 -1
  84. package/dist/metadata/index.d.ts +26 -0
  85. package/dist/metadata/index.d.ts.map +1 -1
  86. package/dist/metadata/index.js +26 -0
  87. package/dist/metadata/index.js.map +1 -1
  88. package/dist/metadata/interface.d.ts +33 -0
  89. package/dist/metadata/interface.d.ts.map +1 -1
  90. package/dist/metadata/interface.js +3 -0
  91. package/dist/metadata/interface.js.map +1 -1
  92. package/dist/metadata/postgresql-storage.d.ts +3 -0
  93. package/dist/metadata/postgresql-storage.d.ts.map +1 -1
  94. package/dist/metadata/postgresql-storage.js +12 -2
  95. package/dist/metadata/postgresql-storage.js.map +1 -1
  96. package/dist/metadata/schema-config.d.ts +53 -0
  97. package/dist/metadata/schema-config.d.ts.map +1 -1
  98. package/dist/metadata/schema-config.js +64 -0
  99. package/dist/metadata/schema-config.js.map +1 -1
  100. package/dist/metadata/types.d.ts +3 -0
  101. package/dist/metadata/types.d.ts.map +1 -1
  102. package/dist/metadata/types.js +3 -0
  103. package/dist/metadata/types.js.map +1 -1
  104. package/dist/monitor/baseline-calculator.d.ts +56 -0
  105. package/dist/monitor/baseline-calculator.d.ts.map +1 -1
  106. package/dist/monitor/baseline-calculator.js +72 -0
  107. package/dist/monitor/baseline-calculator.js.map +1 -1
  108. package/dist/monitor/baseline-config.d.ts +77 -0
  109. package/dist/monitor/baseline-config.d.ts.map +1 -1
  110. package/dist/monitor/baseline-config.js +79 -1
  111. package/dist/monitor/baseline-config.js.map +1 -1
  112. package/dist/monitor/freshness.d.ts +40 -0
  113. package/dist/monitor/freshness.d.ts.map +1 -1
  114. package/dist/monitor/freshness.js +82 -3
  115. package/dist/monitor/freshness.js.map +1 -1
  116. package/dist/monitor/index.d.ts +29 -0
  117. package/dist/monitor/index.d.ts.map +1 -1
  118. package/dist/monitor/index.js +29 -0
  119. package/dist/monitor/index.js.map +1 -1
  120. package/dist/monitor/schema-baseline.d.ts +45 -0
  121. package/dist/monitor/schema-baseline.d.ts.map +1 -1
  122. package/dist/monitor/schema-baseline.js +63 -5
  123. package/dist/monitor/schema-baseline.js.map +1 -1
  124. package/dist/monitor/schema-changes.d.ts +45 -0
  125. package/dist/monitor/schema-changes.d.ts.map +1 -1
  126. package/dist/monitor/schema-changes.js +85 -0
  127. package/dist/monitor/schema-changes.js.map +1 -1
  128. package/dist/monitor/volume.d.ts +43 -0
  129. package/dist/monitor/volume.d.ts.map +1 -1
  130. package/dist/monitor/volume.js +89 -0
  131. package/dist/monitor/volume.js.map +1 -1
  132. package/dist/observability/logger.d.ts +91 -0
  133. package/dist/observability/logger.d.ts.map +1 -1
  134. package/dist/observability/logger.js +108 -0
  135. package/dist/observability/logger.js.map +1 -1
  136. package/dist/observability/metrics.d.ts +140 -0
  137. package/dist/observability/metrics.d.ts.map +1 -1
  138. package/dist/observability/metrics.js +184 -7
  139. package/dist/observability/metrics.js.map +1 -1
  140. package/dist/resilience/circuit-breaker.d.ts +112 -2
  141. package/dist/resilience/circuit-breaker.d.ts.map +1 -1
  142. package/dist/resilience/circuit-breaker.js +140 -6
  143. package/dist/resilience/circuit-breaker.js.map +1 -1
  144. package/dist/resilience/index.d.ts +9 -0
  145. package/dist/resilience/index.d.ts.map +1 -1
  146. package/dist/resilience/index.js +13 -0
  147. package/dist/resilience/index.js.map +1 -1
  148. package/dist/resilience/retry-policy.d.ts +105 -0
  149. package/dist/resilience/retry-policy.d.ts.map +1 -1
  150. package/dist/resilience/retry-policy.js +158 -7
  151. package/dist/resilience/retry-policy.js.map +1 -1
  152. package/dist/resilience/timeout-manager.d.ts +137 -0
  153. package/dist/resilience/timeout-manager.d.ts.map +1 -1
  154. package/dist/resilience/timeout-manager.js +151 -4
  155. package/dist/resilience/timeout-manager.js.map +1 -1
  156. package/dist/security/query-analyzer.d.ts +124 -0
  157. package/dist/security/query-analyzer.d.ts.map +1 -1
  158. package/dist/security/query-analyzer.js +150 -9
  159. package/dist/security/query-analyzer.js.map +1 -1
  160. package/dist/security/schema-cache.d.ts +152 -0
  161. package/dist/security/schema-cache.d.ts.map +1 -1
  162. package/dist/security/schema-cache.js +144 -12
  163. package/dist/security/schema-cache.js.map +1 -1
  164. package/dist/types/connector.d.ts +68 -1
  165. package/dist/types/connector.d.ts.map +1 -1
  166. package/dist/types/connector.js +38 -15
  167. package/dist/types/connector.js.map +1 -1
  168. package/dist/types/driver-results.d.ts +28 -0
  169. package/dist/types/driver-results.d.ts.map +1 -1
  170. package/dist/types/driver-results.js +12 -0
  171. package/dist/types/driver-results.js.map +1 -1
  172. package/dist/types.d.ts +113 -1
  173. package/dist/types.d.ts.map +1 -1
  174. package/dist/types.js +8 -0
  175. package/dist/types.js.map +1 -1
  176. package/dist/validation/index.d.ts +8 -0
  177. package/dist/validation/index.d.ts.map +1 -1
  178. package/dist/validation/index.js +12 -0
  179. package/dist/validation/index.js.map +1 -1
  180. package/dist/validation/runtime-validator.d.ts +98 -0
  181. package/dist/validation/runtime-validator.d.ts.map +1 -1
  182. package/dist/validation/runtime-validator.js +114 -1
  183. package/dist/validation/runtime-validator.js.map +1 -1
  184. package/dist/validation/sanitizers.d.ts +59 -0
  185. package/dist/validation/sanitizers.d.ts.map +1 -1
  186. package/dist/validation/sanitizers.js +104 -20
  187. package/dist/validation/sanitizers.js.map +1 -1
  188. package/dist/validation/schemas.d.ts +73 -0
  189. package/dist/validation/schemas.d.ts.map +1 -1
  190. package/dist/validation/schemas.js +132 -5
  191. package/dist/validation/schemas.js.map +1 -1
  192. package/dist/validators/index.d.ts +54 -0
  193. package/dist/validators/index.d.ts.map +1 -1
  194. package/dist/validators/index.js +93 -2
  195. package/dist/validators/index.js.map +1 -1
  196. 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":"AAQA,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;AAqBrD,qBAAa,iBAAkB,SAAQ,aAAa;IAClD,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE,eAAe,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC;IAY7E,OAAO,CAAC,MAAM,CAAC,sBAAsB;YA2CvB,OAAO;cA2DL,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;cAqE7F,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAO9D,cAAc,CAAC,WAAW,CAAC,EAAE,OAAO,aAAa,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IA+DvF,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,oCAAoC;IAyCtC,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IA4B/B,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAyDnD,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAyC1D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBtB,OAAO,CAAC,eAAe;IA6BvB,OAAO,CAAC,cAAc;IAkChB,aAAa,CAAC,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmC5D,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;IA0B7C,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IASpD,YAAY,IAAI,MAAM;IAOtB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAOnC,WAAW,IAAI,MAAM;CAGtB"}
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":"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"}
1
+ {"version":3,"file":"bigquery.js","sourceRoot":"","sources":["../../src/connectors/bigquery.ts"],"names":[],"mappings":"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"}