@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,12 +1,32 @@
1
+ /**
2
+ * Zod validation schemas for FreshGuard Core Phase 2
3
+ *
4
+ * Replaces manual validation functions with declarative Zod schemas
5
+ * for better error handling, type safety, and maintainability.
6
+ *
7
+ * @license MIT
8
+ */
1
9
  import { z } from 'zod';
10
+ // ==============================================
11
+ // Constants
12
+ // ==============================================
13
+ /**
14
+ * SQL reserved keywords that should not be used as identifiers
15
+ */
2
16
  const SQL_RESERVED_KEYWORDS = [
17
+ // Core SQL keywords
3
18
  'SELECT', 'INSERT', 'UPDATE', 'DELETE', 'DROP', 'ALTER', 'CREATE',
4
19
  'TABLE', 'FROM', 'WHERE', 'AND', 'OR', 'NOT', 'NULL', 'TRUE', 'FALSE',
5
20
  'COUNT', 'MAX', 'MIN', 'SUM', 'AVG', 'DISTINCT', 'ORDER', 'GROUP', 'BY',
21
+ // Additional dangerous keywords
6
22
  'EXEC', 'EXECUTE', 'TRUNCATE', 'GRANT', 'REVOKE', 'UNION', 'MERGE',
7
23
  'CALL', 'DECLARE', 'SET', 'USE', 'SHOW', 'DESCRIBE', 'EXPLAIN',
24
+ // Database-specific system functions and procedures
8
25
  'XP_', 'SP_', 'SYS', 'INFORMATION_SCHEMA', 'PERFORMANCE_SCHEMA'
9
26
  ];
27
+ /**
28
+ * Dangerous SQL patterns that should not appear in connection strings
29
+ */
10
30
  const DANGEROUS_SQL_PATTERNS = [
11
31
  /drop\s+table/i,
12
32
  /delete\s+from/i,
@@ -20,29 +40,52 @@ const DANGEROUS_SQL_PATTERNS = [
20
40
  /xp_/i,
21
41
  /sp_/i
22
42
  ];
43
+ // ==============================================
44
+ // Base Identifier Schemas
45
+ // ==============================================
46
+ /**
47
+ * Schema for validating SQL identifiers (base pattern)
48
+ * Allows letters, numbers, underscores, starting with letter or underscore
49
+ */
23
50
  const BaseIdentifierSchema = z.string()
24
51
  .min(1, 'Identifier cannot be empty')
25
52
  .max(256, 'Identifier too long (max 256 characters)')
26
53
  .regex(/^[a-zA-Z_][a-zA-Z0-9_]*$/, 'Identifier must start with letter or underscore, contain only alphanumeric characters and underscores');
54
+ /**
55
+ * Schema for validating table names
56
+ * Supports schema.table notation (e.g., "public.users")
57
+ */
27
58
  export const TableNameSchema = z.string()
28
59
  .min(1, 'Table name cannot be empty')
29
60
  .max(256, 'Table name too long (max 256 characters)')
30
- .regex(/^[a-zA-Z_][a-zA-Z0-9_]*(\.[a-zA-Z_][a-zA-Z0-9_]*)?$/, 'Table name must be a valid identifier or schema.table format')
61
+ .regex(
62
+ // eslint-disable-next-line security/detect-unsafe-regex -- Bounded input (max 256 chars), no catastrophic backtracking
63
+ /^[a-zA-Z_][a-zA-Z0-9_]*(\.[a-zA-Z_][a-zA-Z0-9_]*)?$/, 'Table name must be a valid identifier or schema.table format')
31
64
  .refine((name) => {
65
+ // Check each part of schema.table notation against reserved keywords
32
66
  const parts = name.split('.');
33
67
  return !parts.some(part => SQL_RESERVED_KEYWORDS.includes(part.toUpperCase()));
34
68
  }, {
35
69
  message: "Table name contains reserved SQL keywords"
36
70
  })
37
71
  .refine((name) => {
72
+ // Additional security check - ensure no dangerous patterns
73
+ // eslint-disable-next-line no-control-regex -- Intentional: blocking control chars in identifiers
38
74
  return !(/[;/*\x00-\x1F\x7F]|--/.exec(name));
39
75
  }, 'Table name contains dangerous characters');
76
+ /**
77
+ * Schema for validating column names
78
+ * Column names don't support schema notation
79
+ */
40
80
  export const ColumnNameSchema = BaseIdentifierSchema
41
81
  .refine((name) => {
42
82
  return !SQL_RESERVED_KEYWORDS.includes(name.toUpperCase());
43
83
  }, {
44
84
  message: "Column name is a reserved SQL keyword"
45
85
  });
86
+ /**
87
+ * Schema for validating database identifiers (generic)
88
+ */
46
89
  export const DatabaseIdentifierSchema = z.object({
47
90
  identifier: z.string(),
48
91
  type: z.enum(['table', 'column']).default('table')
@@ -54,45 +97,76 @@ export const DatabaseIdentifierSchema = z.object({
54
97
  return ColumnNameSchema.parse(identifier);
55
98
  }
56
99
  });
100
+ // ==============================================
101
+ // Network and Connection Schemas
102
+ // ==============================================
103
+ /**
104
+ * Schema for validating hostnames and IP addresses
105
+ */
57
106
  export const HostnameSchema = z.string()
58
107
  .min(1, 'Host is required')
59
108
  .max(255, 'Host name too long (max 255 characters)')
60
109
  .regex(/^[a-zA-Z0-9\-.]+$/, 'Invalid host name format')
61
110
  .refine((host) => {
111
+ // Prevent localhost variations in production (configurable)
62
112
  const isLocalhost = /^(localhost|127\.|::1|0\.0\.0\.0)/.test(host);
63
113
  return !isLocalhost || process.env.NODE_ENV !== 'production';
64
114
  }, 'Localhost connections not allowed in production');
115
+ /**
116
+ * Schema for validating port numbers
117
+ */
65
118
  export const PortSchema = z.number()
66
119
  .int('Port must be an integer')
67
120
  .min(1, 'Port must be at least 1')
68
121
  .max(65535, 'Port must be at most 65535')
69
122
  .refine((port) => {
123
+ // Warn about common dangerous ports (FTP, Telnet, etc.)
70
124
  const dangerousPorts = [21, 23, 25, 53, 69, 135, 139, 445];
71
125
  return !dangerousPorts.includes(port);
72
126
  }, 'Port number may be unsafe for database connections');
127
+ /**
128
+ * Schema for validating timeout values (milliseconds)
129
+ */
73
130
  export const TimeoutSchema = z.number()
74
131
  .int('Timeout must be an integer')
75
132
  .min(1000, 'Timeout must be at least 1000ms (1 second)')
76
133
  .max(300000, 'Timeout cannot exceed 300000ms (5 minutes)');
134
+ /**
135
+ * Schema for validating query timeout values (shorter than connection timeout)
136
+ */
77
137
  export const QueryTimeoutSchema = z.number()
78
138
  .int('Query timeout must be an integer')
79
139
  .min(1000, 'Query timeout must be at least 1000ms (1 second)')
80
140
  .max(60000, 'Query timeout cannot exceed 60000ms (1 minute)');
141
+ /**
142
+ * Schema for validating maximum row limits
143
+ */
81
144
  export const MaxRowsSchema = z.number()
82
145
  .int('Max rows must be an integer')
83
146
  .min(1, 'Max rows must be at least 1')
84
147
  .max(10000, 'Max rows cannot exceed 10000');
148
+ // ==============================================
149
+ // Connector Configuration Schemas
150
+ // ==============================================
151
+ /**
152
+ * Schema for validating database credentials
153
+ */
85
154
  export const DatabaseCredentialsSchema = z.object({
86
155
  username: z.string()
87
156
  .min(1, 'Username is required')
88
157
  .max(64, 'Username too long (max 64 characters)')
89
158
  .refine((username) => {
159
+ // Prevent obvious injection attempts in username
160
+ // eslint-disable-next-line no-control-regex -- Intentional: blocking control chars in credentials
90
161
  return !(/[;/*\x00-\x1F\x7F]|--/.exec(username));
91
162
  }, 'Username contains invalid characters'),
92
163
  password: z.string()
93
164
  .min(1, 'Password is required')
94
165
  .max(256, 'Password too long (max 256 characters)')
95
166
  });
167
+ /**
168
+ * Schema for validating database names
169
+ */
96
170
  export const DatabaseNameSchema = z.string()
97
171
  .min(1, 'Database name is required')
98
172
  .max(64, 'Database name too long (max 64 characters)')
@@ -100,6 +174,9 @@ export const DatabaseNameSchema = z.string()
100
174
  .refine((name) => {
101
175
  return !SQL_RESERVED_KEYWORDS.includes(name.toUpperCase());
102
176
  }, 'Database name cannot be a reserved SQL keyword');
177
+ /**
178
+ * Base connector configuration schema
179
+ */
103
180
  export const BaseConnectorConfigSchema = z.object({
104
181
  host: HostnameSchema,
105
182
  port: PortSchema.optional(),
@@ -112,6 +189,7 @@ export const BaseConnectorConfigSchema = z.object({
112
189
  maxRows: MaxRowsSchema.optional(),
113
190
  applicationName: z.string().max(64).optional()
114
191
  }).refine((config) => {
192
+ // Ensure query timeout is less than connection timeout
115
193
  if (config.timeout && config.queryTimeout && config.queryTimeout >= config.timeout) {
116
194
  return false;
117
195
  }
@@ -120,46 +198,62 @@ export const BaseConnectorConfigSchema = z.object({
120
198
  message: 'Query timeout must be less than connection timeout',
121
199
  path: ['queryTimeout']
122
200
  });
201
+ /**
202
+ * PostgreSQL-specific connector configuration
203
+ */
123
204
  export const PostgresConnectorConfigSchema = BaseConnectorConfigSchema.extend({
124
205
  schema: z.string().max(64).optional(),
125
206
  sslMode: z.enum(['disable', 'allow', 'prefer', 'require', 'verify-ca', 'verify-full']).default('require')
126
207
  });
208
+ /**
209
+ * DuckDB-specific connector configuration (file-based)
210
+ */
127
211
  export const DuckDBConnectorConfigSchema = z.object({
128
212
  database: z.string()
129
213
  .min(1, 'Database path is required')
130
214
  .max(1024, 'Database path too long')
131
215
  .refine((path) => {
216
+ // Allow :memory: for in-memory databases
132
217
  if (path === ':memory:')
133
218
  return true;
219
+ // Prevent directory traversal attacks
134
220
  return !path.includes('..') && !path.includes('//');
135
221
  }, 'Invalid database path')
136
222
  .refine((path) => {
223
+ // Prevent access to system directories
137
224
  const systemDirs = ['/etc/', '/sys/', '/proc/', '/dev/', '/var/'];
138
225
  return path === ':memory:' || !systemDirs.some(dir => path.startsWith(dir));
139
226
  }, 'Cannot access system directories'),
140
- readOnly: z.boolean().default(true),
227
+ readOnly: z.boolean().default(true), // Default to read-only for security
141
228
  timeout: TimeoutSchema.optional(),
142
229
  queryTimeout: QueryTimeoutSchema.optional(),
143
230
  maxRows: MaxRowsSchema.optional()
144
231
  });
232
+ /**
233
+ * BigQuery-specific connector configuration
234
+ */
145
235
  export const BigQueryConnectorConfigSchema = z.object({
146
236
  projectId: z.string()
147
237
  .min(1, 'Project ID is required')
148
238
  .max(63, 'Project ID too long')
149
239
  .regex(/^[a-z0-9-]+$/, 'Project ID must contain only lowercase letters, numbers, and hyphens'),
150
- keyFilename: z.string().optional(),
151
- credentials: z.object({}).passthrough().optional(),
240
+ keyFilename: z.string().optional(), // Path to service account JSON
241
+ credentials: z.object({}).passthrough().optional(), // Service account JSON object
152
242
  dataset: z.string().max(1024).optional(),
153
243
  location: z.string().max(64).optional(),
154
244
  timeout: TimeoutSchema.optional(),
155
245
  queryTimeout: QueryTimeoutSchema.optional(),
156
246
  maxRows: MaxRowsSchema.optional()
157
247
  }).refine((config) => {
248
+ // Must have either keyFilename or credentials
158
249
  return config.keyFilename ?? config.credentials;
159
250
  }, {
160
251
  message: 'Either keyFilename or credentials must be provided',
161
252
  path: ['credentials']
162
253
  });
254
+ /**
255
+ * Snowflake-specific connector configuration
256
+ */
163
257
  export const SnowflakeConnectorConfigSchema = z.object({
164
258
  account: z.string()
165
259
  .min(1, 'Account is required')
@@ -177,15 +271,26 @@ export const SnowflakeConnectorConfigSchema = z.object({
177
271
  queryTimeout: QueryTimeoutSchema.optional(),
178
272
  maxRows: MaxRowsSchema.optional()
179
273
  });
274
+ // ==============================================
275
+ // Input Sanitization Schemas
276
+ // ==============================================
277
+ /**
278
+ * Schema for sanitizing and validating string inputs
279
+ */
180
280
  export const SanitizedStringSchema = z.string()
181
281
  .min(1, 'Input cannot be empty')
182
282
  .max(256, 'Input too long (max 256 characters)')
183
283
  .transform((input) => input.trim())
184
284
  .refine((input) => input.length > 0, 'Input is empty after sanitization')
185
285
  .transform((input) => {
286
+ // Remove dangerous characters
287
+ // eslint-disable-next-line no-control-regex -- Intentional: sanitizing control chars from input
186
288
  return input.replace(/[;/*\x00-\x1F\x7F]|--/g, '');
187
289
  })
188
290
  .refine((input) => input.length > 0, 'Input is empty after removing dangerous characters');
291
+ /**
292
+ * Schema for validating SQL LIMIT values
293
+ */
189
294
  export const LimitSchema = z.union([
190
295
  z.number().int().min(1).max(10000),
191
296
  z.string().transform((val) => {
@@ -196,15 +301,26 @@ export const LimitSchema = z.union([
196
301
  return num;
197
302
  }).refine((num) => num >= 1 && num <= 10000, 'LIMIT must be between 1 and 10000')
198
303
  ]);
304
+ /**
305
+ * Schema for validating connection strings
306
+ */
199
307
  export const ConnectionStringSchema = z.string()
200
308
  .min(1, 'Connection string cannot be empty')
201
309
  .max(2048, 'Connection string too long (max 2048 characters)')
202
310
  .refine((connStr) => {
311
+ // Must contain host or server specification
203
312
  return /(?:host|server|hostname)=/i.test(connStr);
204
313
  }, 'Connection string must contain host/server specification')
205
314
  .refine((connStr) => {
315
+ // Must not contain dangerous SQL patterns
206
316
  return !DANGEROUS_SQL_PATTERNS.some(pattern => pattern.test(connStr));
207
317
  }, 'Connection string contains dangerous SQL patterns');
318
+ // ==============================================
319
+ // Monitoring Rule Schemas
320
+ // ==============================================
321
+ /**
322
+ * Schema for validating freshness monitoring rules
323
+ */
208
324
  export const FreshnessRuleSchema = z.object({
209
325
  id: z.string().uuid().optional(),
210
326
  sourceId: z.string().uuid(),
@@ -220,6 +336,9 @@ export const FreshnessRuleSchema = z.object({
220
336
  .max(1440, 'Check interval cannot exceed 1440 minutes (1 day)'),
221
337
  isActive: z.boolean().default(true)
222
338
  });
339
+ /**
340
+ * Schema for validating volume anomaly monitoring rules
341
+ */
223
342
  export const VolumeRuleSchema = z.object({
224
343
  id: z.string().uuid().optional(),
225
344
  sourceId: z.string().uuid(),
@@ -231,22 +350,28 @@ export const VolumeRuleSchema = z.object({
231
350
  deviationThreshold: z.number()
232
351
  .min(0, 'Deviation threshold must be non-negative')
233
352
  .max(10, 'Deviation threshold cannot exceed 1000%')
234
- .transform((val) => val / 100),
353
+ .transform((val) => val / 100), // Convert percentage to decimal
235
354
  checkIntervalMinutes: z.number()
236
355
  .int('Check interval must be an integer')
237
356
  .min(15, 'Check interval must be at least 15 minutes')
238
357
  .max(1440, 'Check interval cannot exceed 1440 minutes (1 day)'),
239
358
  isActive: z.boolean().default(true)
240
359
  });
360
+ // ==============================================
361
+ // Export all schemas
362
+ // ==============================================
241
363
  export const schemas = {
364
+ // Identifier schemas
242
365
  TableNameSchema,
243
366
  ColumnNameSchema,
244
367
  DatabaseIdentifierSchema,
368
+ // Network schemas
245
369
  HostnameSchema,
246
370
  PortSchema,
247
371
  TimeoutSchema,
248
372
  QueryTimeoutSchema,
249
373
  MaxRowsSchema,
374
+ // Connector configuration schemas
250
375
  BaseConnectorConfigSchema,
251
376
  PostgresConnectorConfigSchema,
252
377
  DuckDBConnectorConfigSchema,
@@ -254,9 +379,11 @@ export const schemas = {
254
379
  SnowflakeConnectorConfigSchema,
255
380
  DatabaseCredentialsSchema,
256
381
  DatabaseNameSchema,
382
+ // Input sanitization schemas
257
383
  SanitizedStringSchema,
258
384
  LimitSchema,
259
385
  ConnectionStringSchema,
386
+ // Monitoring rule schemas
260
387
  FreshnessRuleSchema,
261
388
  VolumeRuleSchema
262
389
  };
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/validation/schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/validation/schemas.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,64 @@
1
+ /**
2
+ * Input validation utilities for FreshGuard Core
3
+ *
4
+ * Provides centralized validation functions to prevent injection attacks
5
+ * and ensure data integrity across the application.
6
+ *
7
+ * @license MIT
8
+ */
1
9
  import type { ConnectorConfig } from '../types/connector.js';
10
+ /**
11
+ * Validate table name for SQL injection prevention
12
+ *
13
+ * @param name - Table name to validate
14
+ * @returns True if valid
15
+ * @throws Error if invalid
16
+ */
2
17
  export declare function validateTableName(name: string): boolean;
18
+ /**
19
+ * Validate column name for SQL injection prevention
20
+ *
21
+ * @param name - Column name to validate
22
+ * @returns True if valid
23
+ * @throws Error if invalid
24
+ */
3
25
  export declare function validateColumnName(name: string): boolean;
26
+ /**
27
+ * Validate database identifier (table or column name)
28
+ *
29
+ * @param identifier - Identifier to validate
30
+ * @param type - Type of identifier ('table' or 'column')
31
+ * @returns True if valid
32
+ */
4
33
  export declare function validateDatabaseIdentifier(identifier: string, type?: 'table' | 'column'): boolean;
34
+ /**
35
+ * Validate connector configuration for security and completeness
36
+ *
37
+ * @param config - Connector configuration to validate
38
+ * @throws Error if configuration is invalid
39
+ */
5
40
  export declare function validateConnectorConfig(config: Partial<ConnectorConfig>): void;
41
+ /**
42
+ * Sanitize string input to prevent injection attacks
43
+ *
44
+ * @param input - Input string to sanitize
45
+ * @param maxLength - Maximum allowed length
46
+ * @returns Sanitized string
47
+ */
6
48
  export declare function sanitizeString(input: string, maxLength?: number): string;
49
+ /**
50
+ * Validate and sanitize SQL LIMIT value
51
+ *
52
+ * @param limit - LIMIT value to validate
53
+ * @returns Validated limit as number
54
+ */
7
55
  export declare function validateLimit(limit: number | string): number;
56
+ /**
57
+ * Validate connection string format (basic validation)
58
+ *
59
+ * @param connectionString - Database connection string
60
+ * @returns True if format appears valid
61
+ */
8
62
  export declare function validateConnectionString(connectionString: string): boolean;
9
63
  export declare const validators: {
10
64
  readonly validateTableName: typeof validateTableName;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validators/index.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAa7D,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAkCvD;AASD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAmCxD;AASD,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,GAAE,OAAO,GAAG,QAAkB,GAAG,OAAO,CAM1G;AAYD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI,CAqG9E;AAaD,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,SAAM,GAAG,MAAM,CAuBrE;AAQD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CA0B5D;AAYD,wBAAgB,wBAAwB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAmC1E;AAMD,eAAO,MAAM,UAAU;;;;;;;;CAQb,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validators/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAM7D;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAkCvD;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAmCxD;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,GAAE,OAAO,GAAG,QAAkB,GAAG,OAAO,CAM1G;AAMD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI,CAqG9E;AAMD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,SAAM,GAAG,MAAM,CAuBrE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CA0B5D;AAMD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAmC1E;AAMD,eAAO,MAAM,UAAU;;;;;;;;CAQb,CAAC"}