@freshguard/freshguard-core 0.11.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +644 -0
  3. package/dist/cli/index.d.ts +3 -0
  4. package/dist/cli/index.d.ts.map +1 -0
  5. package/dist/cli/index.js +350 -0
  6. package/dist/cli/index.js.map +1 -0
  7. package/dist/connectors/base-connector.d.ts +62 -0
  8. package/dist/connectors/base-connector.d.ts.map +1 -0
  9. package/dist/connectors/base-connector.js +549 -0
  10. package/dist/connectors/base-connector.js.map +1 -0
  11. package/dist/connectors/bigquery.d.ts +38 -0
  12. package/dist/connectors/bigquery.d.ts.map +1 -0
  13. package/dist/connectors/bigquery.js +406 -0
  14. package/dist/connectors/bigquery.js.map +1 -0
  15. package/dist/connectors/duckdb.d.ts +36 -0
  16. package/dist/connectors/duckdb.d.ts.map +1 -0
  17. package/dist/connectors/duckdb.js +364 -0
  18. package/dist/connectors/duckdb.js.map +1 -0
  19. package/dist/connectors/index.d.ts +7 -0
  20. package/dist/connectors/index.d.ts.map +1 -0
  21. package/dist/connectors/index.js +7 -0
  22. package/dist/connectors/index.js.map +1 -0
  23. package/dist/connectors/mysql.d.ts +32 -0
  24. package/dist/connectors/mysql.d.ts.map +1 -0
  25. package/dist/connectors/mysql.js +348 -0
  26. package/dist/connectors/mysql.js.map +1 -0
  27. package/dist/connectors/postgres.d.ts +31 -0
  28. package/dist/connectors/postgres.d.ts.map +1 -0
  29. package/dist/connectors/postgres.js +326 -0
  30. package/dist/connectors/postgres.js.map +1 -0
  31. package/dist/connectors/redshift.d.ts +32 -0
  32. package/dist/connectors/redshift.d.ts.map +1 -0
  33. package/dist/connectors/redshift.js +366 -0
  34. package/dist/connectors/redshift.js.map +1 -0
  35. package/dist/connectors/snowflake.d.ts +43 -0
  36. package/dist/connectors/snowflake.d.ts.map +1 -0
  37. package/dist/connectors/snowflake.js +442 -0
  38. package/dist/connectors/snowflake.js.map +1 -0
  39. package/dist/db/index.d.ts +9 -0
  40. package/dist/db/index.d.ts.map +1 -0
  41. package/dist/db/index.js +10 -0
  42. package/dist/db/index.js.map +1 -0
  43. package/dist/db/migrate.d.ts +12 -0
  44. package/dist/db/migrate.d.ts.map +1 -0
  45. package/dist/db/migrate.js +114 -0
  46. package/dist/db/migrate.js.map +1 -0
  47. package/dist/db/schema.d.ts +2053 -0
  48. package/dist/db/schema.d.ts.map +1 -0
  49. package/dist/db/schema.js +164 -0
  50. package/dist/db/schema.js.map +1 -0
  51. package/dist/errors/debug-factory.d.ts +23 -0
  52. package/dist/errors/debug-factory.d.ts.map +1 -0
  53. package/dist/errors/debug-factory.js +149 -0
  54. package/dist/errors/debug-factory.js.map +1 -0
  55. package/dist/errors/index.d.ts +119 -0
  56. package/dist/errors/index.d.ts.map +1 -0
  57. package/dist/errors/index.js +341 -0
  58. package/dist/errors/index.js.map +1 -0
  59. package/dist/index.d.ts +9 -0
  60. package/dist/index.d.ts.map +1 -0
  61. package/dist/index.js +6 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/metadata/duckdb-storage.d.ts +31 -0
  64. package/dist/metadata/duckdb-storage.d.ts.map +1 -0
  65. package/dist/metadata/duckdb-storage.js +230 -0
  66. package/dist/metadata/duckdb-storage.js.map +1 -0
  67. package/dist/metadata/factory.d.ts +4 -0
  68. package/dist/metadata/factory.d.ts.map +1 -0
  69. package/dist/metadata/factory.js +23 -0
  70. package/dist/metadata/factory.js.map +1 -0
  71. package/dist/metadata/index.d.ts +6 -0
  72. package/dist/metadata/index.d.ts.map +1 -0
  73. package/dist/metadata/index.js +4 -0
  74. package/dist/metadata/index.js.map +1 -0
  75. package/dist/metadata/interface.d.ts +26 -0
  76. package/dist/metadata/interface.d.ts.map +1 -0
  77. package/dist/metadata/interface.js +2 -0
  78. package/dist/metadata/interface.js.map +1 -0
  79. package/dist/metadata/postgresql-storage.d.ts +32 -0
  80. package/dist/metadata/postgresql-storage.d.ts.map +1 -0
  81. package/dist/metadata/postgresql-storage.js +242 -0
  82. package/dist/metadata/postgresql-storage.js.map +1 -0
  83. package/dist/metadata/schema-config.d.ts +30 -0
  84. package/dist/metadata/schema-config.d.ts.map +1 -0
  85. package/dist/metadata/schema-config.js +94 -0
  86. package/dist/metadata/schema-config.js.map +1 -0
  87. package/dist/metadata/types.d.ts +35 -0
  88. package/dist/metadata/types.d.ts.map +1 -0
  89. package/dist/metadata/types.js +2 -0
  90. package/dist/metadata/types.js.map +1 -0
  91. package/dist/monitor/baseline-calculator.d.ts +30 -0
  92. package/dist/monitor/baseline-calculator.d.ts.map +1 -0
  93. package/dist/monitor/baseline-calculator.js +192 -0
  94. package/dist/monitor/baseline-calculator.js.map +1 -0
  95. package/dist/monitor/baseline-config.d.ts +37 -0
  96. package/dist/monitor/baseline-config.d.ts.map +1 -0
  97. package/dist/monitor/baseline-config.js +156 -0
  98. package/dist/monitor/baseline-config.js.map +1 -0
  99. package/dist/monitor/freshness.d.ts +5 -0
  100. package/dist/monitor/freshness.d.ts.map +1 -0
  101. package/dist/monitor/freshness.js +239 -0
  102. package/dist/monitor/freshness.js.map +1 -0
  103. package/dist/monitor/index.d.ts +5 -0
  104. package/dist/monitor/index.d.ts.map +1 -0
  105. package/dist/monitor/index.js +5 -0
  106. package/dist/monitor/index.js.map +1 -0
  107. package/dist/monitor/schema-baseline.d.ts +22 -0
  108. package/dist/monitor/schema-baseline.d.ts.map +1 -0
  109. package/dist/monitor/schema-baseline.js +211 -0
  110. package/dist/monitor/schema-baseline.js.map +1 -0
  111. package/dist/monitor/schema-changes.d.ts +5 -0
  112. package/dist/monitor/schema-changes.d.ts.map +1 -0
  113. package/dist/monitor/schema-changes.js +289 -0
  114. package/dist/monitor/schema-changes.js.map +1 -0
  115. package/dist/monitor/volume.d.ts +5 -0
  116. package/dist/monitor/volume.d.ts.map +1 -0
  117. package/dist/monitor/volume.js +262 -0
  118. package/dist/monitor/volume.js.map +1 -0
  119. package/dist/observability/logger.d.ts +63 -0
  120. package/dist/observability/logger.d.ts.map +1 -0
  121. package/dist/observability/logger.js +282 -0
  122. package/dist/observability/logger.js.map +1 -0
  123. package/dist/observability/metrics.d.ts +106 -0
  124. package/dist/observability/metrics.d.ts.map +1 -0
  125. package/dist/observability/metrics.js +441 -0
  126. package/dist/observability/metrics.js.map +1 -0
  127. package/dist/query-analyzer.js +526 -0
  128. package/dist/resilience/circuit-breaker.d.ts +94 -0
  129. package/dist/resilience/circuit-breaker.d.ts.map +1 -0
  130. package/dist/resilience/circuit-breaker.js +379 -0
  131. package/dist/resilience/circuit-breaker.js.map +1 -0
  132. package/dist/resilience/index.d.ts +7 -0
  133. package/dist/resilience/index.d.ts.map +1 -0
  134. package/dist/resilience/index.js +7 -0
  135. package/dist/resilience/index.js.map +1 -0
  136. package/dist/resilience/retry-policy.d.ts +87 -0
  137. package/dist/resilience/retry-policy.d.ts.map +1 -0
  138. package/dist/resilience/retry-policy.js +423 -0
  139. package/dist/resilience/retry-policy.js.map +1 -0
  140. package/dist/resilience/timeout-manager.d.ts +97 -0
  141. package/dist/resilience/timeout-manager.d.ts.map +1 -0
  142. package/dist/resilience/timeout-manager.js +339 -0
  143. package/dist/resilience/timeout-manager.js.map +1 -0
  144. package/dist/security/query-analyzer.d.ts +82 -0
  145. package/dist/security/query-analyzer.d.ts.map +1 -0
  146. package/dist/security/query-analyzer.js +381 -0
  147. package/dist/security/query-analyzer.js.map +1 -0
  148. package/dist/security/schema-cache.d.ts +95 -0
  149. package/dist/security/schema-cache.d.ts.map +1 -0
  150. package/dist/security/schema-cache.js +344 -0
  151. package/dist/security/schema-cache.js.map +1 -0
  152. package/dist/types/connector.d.ts +68 -0
  153. package/dist/types/connector.d.ts.map +1 -0
  154. package/dist/types/connector.js +26 -0
  155. package/dist/types/connector.js.map +1 -0
  156. package/dist/types.d.ts +244 -0
  157. package/dist/types.d.ts.map +1 -0
  158. package/dist/types.js +2 -0
  159. package/dist/types.js.map +1 -0
  160. package/dist/validation/index.d.ts +7 -0
  161. package/dist/validation/index.d.ts.map +1 -0
  162. package/dist/validation/index.js +5 -0
  163. package/dist/validation/index.js.map +1 -0
  164. package/dist/validation/runtime-validator.d.ts +70 -0
  165. package/dist/validation/runtime-validator.d.ts.map +1 -0
  166. package/dist/validation/runtime-validator.js +206 -0
  167. package/dist/validation/runtime-validator.js.map +1 -0
  168. package/dist/validation/sanitizers.d.ts +56 -0
  169. package/dist/validation/sanitizers.d.ts.map +1 -0
  170. package/dist/validation/sanitizers.js +264 -0
  171. package/dist/validation/sanitizers.js.map +1 -0
  172. package/dist/validation/schemas.d.ts +224 -0
  173. package/dist/validation/schemas.d.ts.map +1 -0
  174. package/dist/validation/schemas.js +263 -0
  175. package/dist/validation/schemas.js.map +1 -0
  176. package/dist/validators/index.d.ts +18 -0
  177. package/dist/validators/index.d.ts.map +1 -0
  178. package/dist/validators/index.js +209 -0
  179. package/dist/validators/index.js.map +1 -0
  180. package/package.json +91 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,164 @@
1
+ import { pgTable, uuid, varchar, text, timestamp, boolean, integer, bigint, jsonb, inet, numeric } from 'drizzle-orm/pg-core';
2
+ import { relations } from 'drizzle-orm';
3
+ export const dataSources = pgTable('data_sources', {
4
+ id: uuid('id').primaryKey().defaultRandom(),
5
+ name: varchar('name', { length: 255 }).notNull(),
6
+ type: varchar('type', { length: 50 }).notNull(),
7
+ host: varchar('host', { length: 255 }),
8
+ port: integer('port'),
9
+ databaseName: varchar('database_name', { length: 255 }),
10
+ username: varchar('username', { length: 255 }),
11
+ password: varchar('password', { length: 255 }),
12
+ encryptedCredentials: text('encrypted_credentials'),
13
+ credentialsKeyId: varchar('credentials_key_id', { length: 255 }),
14
+ connectionOptions: jsonb('connection_options').default({}),
15
+ isActive: boolean('is_active').default(true),
16
+ lastTestedAt: timestamp('last_tested_at'),
17
+ lastTestSuccess: boolean('last_test_success'),
18
+ lastError: text('last_error'),
19
+ tableCount: integer('table_count'),
20
+ estimatedSizeBytes: bigint('estimated_size_bytes', { mode: 'number' }),
21
+ createdAt: timestamp('created_at').defaultNow(),
22
+ updatedAt: timestamp('updated_at').defaultNow(),
23
+ });
24
+ export const monitoringRules = pgTable('monitoring_rules', {
25
+ id: uuid('id').primaryKey().defaultRandom(),
26
+ sourceId: uuid('source_id').references(() => dataSources.id, { onDelete: 'cascade' }).notNull(),
27
+ name: varchar('name', { length: 255 }).notNull(),
28
+ description: text('description'),
29
+ tableName: varchar('table_name', { length: 255 }).notNull(),
30
+ ruleType: varchar('rule_type', { length: 50 }).notNull(),
31
+ expectedFrequency: varchar('expected_frequency', { length: 50 }),
32
+ toleranceMinutes: integer('tolerance_minutes'),
33
+ timestampColumn: varchar('timestamp_column', { length: 255 }).default('updated_at'),
34
+ baselineWindowDays: integer('baseline_window_days').default(30),
35
+ deviationThresholdPercent: integer('deviation_threshold_percent').default(20),
36
+ minimumRowCount: integer('minimum_row_count').default(0),
37
+ trackColumnChanges: boolean('track_column_changes').default(false),
38
+ trackTableChanges: boolean('track_table_changes').default(false),
39
+ customSql: text('custom_sql'),
40
+ expectedResult: jsonb('expected_result'),
41
+ checkIntervalMinutes: integer('check_interval_minutes').default(5),
42
+ timezone: varchar('timezone', { length: 50 }).default('UTC'),
43
+ isActive: boolean('is_active').default(true),
44
+ lastCheckAt: timestamp('last_check_at'),
45
+ lastStatus: varchar('last_status', { length: 20 }).default('pending'),
46
+ consecutiveFailures: integer('consecutive_failures').default(0),
47
+ createdAt: timestamp('created_at').defaultNow(),
48
+ updatedAt: timestamp('updated_at').defaultNow(),
49
+ });
50
+ export const alertDestinations = pgTable('alert_destinations', {
51
+ id: uuid('id').primaryKey().defaultRandom(),
52
+ ruleId: uuid('rule_id').references(() => monitoringRules.id, { onDelete: 'cascade' }).notNull(),
53
+ destinationType: varchar('destination_type', { length: 50 }).notNull(),
54
+ destinationAddress: varchar('destination_address', { length: 500 }).notNull(),
55
+ severityLevel: varchar('severity_level', { length: 20 }).default('medium'),
56
+ alertOnRecovery: boolean('alert_on_recovery').default(true),
57
+ cooldownMinutes: integer('cooldown_minutes').default(5),
58
+ messageTemplate: text('message_template'),
59
+ includeQueryResults: boolean('include_query_results').default(false),
60
+ isActive: boolean('is_active').default(true),
61
+ createdAt: timestamp('created_at').defaultNow(),
62
+ });
63
+ export const checkExecutions = pgTable('check_executions', {
64
+ id: uuid('id').primaryKey().defaultRandom(),
65
+ ruleId: uuid('rule_id').references(() => monitoringRules.id, { onDelete: 'cascade' }).notNull(),
66
+ sourceId: uuid('source_id').references(() => dataSources.id, { onDelete: 'cascade' }).notNull(),
67
+ status: varchar('status', { length: 20 }).notNull(),
68
+ errorMessage: text('error_message'),
69
+ queryExecuted: text('query_executed'),
70
+ executionDurationMs: integer('execution_duration_ms'),
71
+ rowCount: bigint('row_count', { mode: 'number' }),
72
+ lastUpdate: timestamp('last_update'),
73
+ lagMinutes: integer('lag_minutes'),
74
+ baselineAverage: numeric('baseline_average', { precision: 15, scale: 2 }),
75
+ currentDeviationPercent: numeric('current_deviation_percent', { precision: 5, scale: 2 }),
76
+ schemaChanges: jsonb('schema_changes'),
77
+ executedAt: timestamp('executed_at').defaultNow(),
78
+ nextCheckAt: timestamp('next_check_at'),
79
+ });
80
+ export const alertLog = pgTable('alert_log', {
81
+ id: uuid('id').primaryKey().defaultRandom(),
82
+ executionId: uuid('execution_id').references(() => checkExecutions.id, { onDelete: 'cascade' }).notNull(),
83
+ ruleId: uuid('rule_id').references(() => monitoringRules.id, { onDelete: 'cascade' }).notNull(),
84
+ alertType: varchar('alert_type', { length: 50 }).notNull(),
85
+ destinationType: varchar('destination_type', { length: 50 }).notNull(),
86
+ destinationAddress: varchar('destination_address', { length: 500 }).notNull(),
87
+ subject: varchar('subject', { length: 255 }),
88
+ messageContent: text('message_content'),
89
+ alertSeverity: varchar('alert_severity', { length: 20 }).notNull(),
90
+ status: varchar('status', { length: 20 }).default('pending'),
91
+ deliveryAttempts: integer('delivery_attempts').default(0),
92
+ lastAttemptAt: timestamp('last_attempt_at'),
93
+ errorMessage: text('error_message'),
94
+ externalId: varchar('external_id', { length: 255 }),
95
+ sentAt: timestamp('sent_at'),
96
+ createdAt: timestamp('created_at').defaultNow(),
97
+ });
98
+ export const auditLog = pgTable('audit_log', {
99
+ id: uuid('id').primaryKey().defaultRandom(),
100
+ action: varchar('action', { length: 100 }).notNull(),
101
+ targetType: varchar('target_type', { length: 50 }),
102
+ targetId: uuid('target_id'),
103
+ oldValues: jsonb('old_values'),
104
+ newValues: jsonb('new_values'),
105
+ ipAddress: inet('ip_address'),
106
+ userAgent: text('user_agent'),
107
+ apiEndpoint: varchar('api_endpoint', { length: 255 }),
108
+ createdAt: timestamp('created_at').defaultNow(),
109
+ });
110
+ export const systemConfig = pgTable('system_config', {
111
+ key: varchar('key', { length: 100 }).primaryKey(),
112
+ value: text('value').notNull(),
113
+ description: text('description'),
114
+ dataType: varchar('data_type', { length: 20 }).default('string'),
115
+ isSecret: boolean('is_secret').default(false),
116
+ updatedAt: timestamp('updated_at').defaultNow(),
117
+ });
118
+ export const schemaBaselines = pgTable('schema_baselines', {
119
+ id: uuid('id').primaryKey().defaultRandom(),
120
+ ruleId: uuid('rule_id').references(() => monitoringRules.id, { onDelete: 'cascade' }).notNull(),
121
+ tableName: varchar('table_name', { length: 256 }).notNull(),
122
+ schemaSnapshot: jsonb('schema_snapshot').notNull(),
123
+ schemaHash: varchar('schema_hash', { length: 64 }).notNull(),
124
+ capturedAt: timestamp('captured_at').notNull().defaultNow(),
125
+ updatedAt: timestamp('updated_at').notNull().defaultNow(),
126
+ adaptationReason: text('adaptation_reason'),
127
+ });
128
+ export const schemaMigrations = pgTable('schema_migrations', {
129
+ version: integer('version').primaryKey(),
130
+ name: varchar('name', { length: 255 }).notNull(),
131
+ appliedAt: timestamp('applied_at').defaultNow(),
132
+ });
133
+ export const dataSourcesRelations = relations(dataSources, ({ many }) => ({
134
+ monitoringRules: many(monitoringRules),
135
+ checkExecutions: many(checkExecutions),
136
+ }));
137
+ export const monitoringRulesRelations = relations(monitoringRules, ({ one, many }) => ({
138
+ dataSource: one(dataSources, {
139
+ fields: [monitoringRules.sourceId],
140
+ references: [dataSources.id],
141
+ }),
142
+ alertDestinations: many(alertDestinations),
143
+ checkExecutions: many(checkExecutions),
144
+ alertLogs: many(alertLog),
145
+ schemaBaselines: many(schemaBaselines),
146
+ }));
147
+ export const schemaBaselinesRelations = relations(schemaBaselines, ({ one }) => ({
148
+ rule: one(monitoringRules, {
149
+ fields: [schemaBaselines.ruleId],
150
+ references: [monitoringRules.id],
151
+ }),
152
+ }));
153
+ export const checkExecutionsRelations = relations(checkExecutions, ({ one, many }) => ({
154
+ rule: one(monitoringRules, {
155
+ fields: [checkExecutions.ruleId],
156
+ references: [monitoringRules.id],
157
+ }),
158
+ dataSource: one(dataSources, {
159
+ fields: [checkExecutions.sourceId],
160
+ references: [dataSources.id],
161
+ }),
162
+ alertLogs: many(alertLog),
163
+ }));
164
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { DebugConfig } from '../types.js';
2
+ import { QueryError, ConnectionError, TimeoutError } from './index.js';
3
+ export interface QueryContext {
4
+ sql: string;
5
+ params?: unknown[];
6
+ table?: string;
7
+ column?: string;
8
+ duration?: number;
9
+ operation?: string;
10
+ }
11
+ export declare class DebugErrorFactory {
12
+ private readonly debugConfig?;
13
+ constructor(debugConfig?: DebugConfig | undefined);
14
+ createQueryError(message: string, rawError?: Error, queryContext?: QueryContext): QueryError;
15
+ createConnectionError(message: string, host?: string, port?: number, rawError?: Error): ConnectionError;
16
+ createTimeoutError(message: string, operationType: string, timeoutMs: number, queryContext?: QueryContext): TimeoutError;
17
+ private generateSuggestion;
18
+ private generateConnectionSuggestion;
19
+ private generateTimeoutSuggestion;
20
+ }
21
+ export declare function getDefaultDebugConfig(): DebugConfig;
22
+ export declare function mergeDebugConfig(userConfig?: DebugConfig): DebugConfig;
23
+ //# sourceMappingURL=debug-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-factory.d.ts","sourceRoot":"","sources":["../../src/errors/debug-factory.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAa,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAKvE,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAKD,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAAZ,WAAW,CAAC,EAAE,WAAW,YAAA;IAKtD,gBAAgB,CACd,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,KAAK,EAChB,YAAY,CAAC,EAAE,YAAY,GAC1B,UAAU;IA8Bb,qBAAqB,CACnB,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,KAAK,GACf,eAAe;IAmBlB,kBAAkB,CAChB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,YAAY,GAC1B,YAAY;IAwBf,OAAO,CAAC,kBAAkB;IAkD1B,OAAO,CAAC,4BAA4B;IA+BpC,OAAO,CAAC,yBAAyB;CAiBlC;AAKD,wBAAgB,qBAAqB,IAAI,WAAW,CAUnD;AAKD,wBAAgB,gBAAgB,CAAC,UAAU,CAAC,EAAE,WAAW,GAAG,WAAW,CActE"}
@@ -0,0 +1,149 @@
1
+ import { QueryError, ConnectionError, TimeoutError } from './index.js';
2
+ export class DebugErrorFactory {
3
+ debugConfig;
4
+ constructor(debugConfig) {
5
+ this.debugConfig = debugConfig;
6
+ }
7
+ createQueryError(message, rawError, queryContext) {
8
+ let debug;
9
+ if (this.debugConfig?.enabled) {
10
+ debug = {
11
+ query: this.debugConfig.exposeQueries ? queryContext?.sql : undefined,
12
+ params: this.debugConfig.exposeQueries ? queryContext?.params : undefined,
13
+ rawError: this.debugConfig.exposeRawErrors ? rawError?.message : undefined,
14
+ suggestion: this.generateSuggestion(rawError, queryContext),
15
+ duration: queryContext?.duration,
16
+ context: queryContext ? {
17
+ table: queryContext.table,
18
+ column: queryContext.column,
19
+ operation: queryContext.operation
20
+ } : undefined
21
+ };
22
+ }
23
+ return new QueryError(message, queryContext?.operation || 'query', queryContext?.table, rawError, debug);
24
+ }
25
+ createConnectionError(message, host, port, rawError) {
26
+ let debug;
27
+ if (this.debugConfig?.enabled) {
28
+ debug = {
29
+ rawError: this.debugConfig.exposeRawErrors ? rawError?.message : undefined,
30
+ suggestion: this.generateConnectionSuggestion(rawError, host, port),
31
+ context: { host, port }
32
+ };
33
+ }
34
+ const error = new ConnectionError(message, host, port, rawError);
35
+ error.debug = debug;
36
+ return error;
37
+ }
38
+ createTimeoutError(message, operationType, timeoutMs, queryContext) {
39
+ let debug;
40
+ if (this.debugConfig?.enabled) {
41
+ debug = {
42
+ query: this.debugConfig.exposeQueries ? queryContext?.sql : undefined,
43
+ suggestion: this.generateTimeoutSuggestion(operationType, timeoutMs, queryContext),
44
+ duration: timeoutMs,
45
+ context: {
46
+ operation: operationType,
47
+ timeout: timeoutMs,
48
+ table: queryContext?.table
49
+ }
50
+ };
51
+ }
52
+ const error = new TimeoutError(message, operationType, timeoutMs);
53
+ error.debug = debug;
54
+ return error;
55
+ }
56
+ generateSuggestion(error, context) {
57
+ if (!error)
58
+ return undefined;
59
+ const message = error.message.toLowerCase();
60
+ if (message.includes('relation') && message.includes('does not exist')) {
61
+ return `Table '${context?.table}' does not exist. Verify table name and database schema access.`;
62
+ }
63
+ if (message.includes('table') && message.includes('does not exist')) {
64
+ return `Table '${context?.table}' not found. Check spelling and database permissions.`;
65
+ }
66
+ if (message.includes('column') && message.includes('does not exist')) {
67
+ const table = context?.table;
68
+ const column = context?.column;
69
+ return table
70
+ ? `Column '${column}' not found in table '${table}'. Use DESCRIBE ${table} to check available columns.`
71
+ : 'Column not found. Check column name and table schema.';
72
+ }
73
+ if (message.includes('permission denied') || message.includes('access denied')) {
74
+ const table = context?.table;
75
+ return table
76
+ ? `Access denied to table '${table}'. Grant SELECT permission: GRANT SELECT ON ${table} TO your_user;`
77
+ : 'Database access denied. Check user permissions and credentials.';
78
+ }
79
+ if (message.includes('syntax error')) {
80
+ return 'SQL syntax error detected. Check for special characters in table/column names that may need quoting.';
81
+ }
82
+ if (message.includes('invalid input') || message.includes('type')) {
83
+ const column = context?.column;
84
+ return column
85
+ ? `Data type mismatch for column '${column}'. Check that the column contains valid timestamp data.`
86
+ : 'Data type mismatch. Verify column contains expected data type.';
87
+ }
88
+ return 'Check database connection, table existence, and access permissions.';
89
+ }
90
+ generateConnectionSuggestion(error, host, port) {
91
+ if (!error)
92
+ return undefined;
93
+ const message = error.message.toLowerCase();
94
+ if (message.includes('connection refused')) {
95
+ return `Database server at ${host}:${port} is not accepting connections. Check if server is running and port is correct.`;
96
+ }
97
+ if (message.includes('timeout') || message.includes('timed out')) {
98
+ return `Connection to ${host}:${port} timed out. Check network connectivity and firewall settings.`;
99
+ }
100
+ if (message.includes('authentication failed') || message.includes('password')) {
101
+ return `Authentication failed for ${host}. Verify username, password, and database name are correct.`;
102
+ }
103
+ if (message.includes('database') && message.includes('does not exist')) {
104
+ return `Database not found on server ${host}. Check database name and server configuration.`;
105
+ }
106
+ if (message.includes('ssl') || message.includes('tls')) {
107
+ return `SSL/TLS connection failed to ${host}. Check SSL configuration and certificate validity.`;
108
+ }
109
+ return `Database connection failed. Check host (${host}), port (${port}), and network connectivity.`;
110
+ }
111
+ generateTimeoutSuggestion(operationType, timeoutMs, context) {
112
+ const table = context?.table;
113
+ switch (operationType) {
114
+ case 'freshness_check':
115
+ case 'volume_check':
116
+ return table
117
+ ? `Query timeout after ${timeoutMs}ms on table '${table}'. Table may be very large - consider adding indexes on timestamp columns or increasing timeout.`
118
+ : `Query timeout after ${timeoutMs}ms. Consider optimizing query or increasing timeout value.`;
119
+ case 'connection':
120
+ return `Connection timeout after ${timeoutMs}ms. Check network connectivity and server responsiveness.`;
121
+ default:
122
+ return `Operation '${operationType}' timeout after ${timeoutMs}ms. Consider increasing timeout or optimizing the operation.`;
123
+ }
124
+ }
125
+ }
126
+ export function getDefaultDebugConfig() {
127
+ const isDevelopment = process.env.NODE_ENV === 'development' ||
128
+ process.env.FRESHGUARD_DEBUG === 'true';
129
+ return {
130
+ enabled: isDevelopment,
131
+ exposeQueries: isDevelopment,
132
+ exposeRawErrors: isDevelopment,
133
+ logLevel: isDevelopment ? 'debug' : 'error'
134
+ };
135
+ }
136
+ export function mergeDebugConfig(userConfig) {
137
+ const defaultConfig = getDefaultDebugConfig();
138
+ if (!userConfig)
139
+ return defaultConfig;
140
+ const enabled = userConfig.enabled ?? defaultConfig.enabled;
141
+ return {
142
+ enabled,
143
+ exposeQueries: userConfig.exposeQueries ?? (enabled ? true : false),
144
+ exposeRawErrors: userConfig.exposeRawErrors ?? (enabled ? true : false),
145
+ logLevel: userConfig.logLevel ?? defaultConfig.logLevel,
146
+ correlationId: userConfig.correlationId
147
+ };
148
+ }
149
+ //# sourceMappingURL=debug-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-factory.js","sourceRoot":"","sources":["../../src/errors/debug-factory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,119 @@
1
+ export declare abstract class FreshGuardError extends Error {
2
+ readonly code: string;
3
+ readonly timestamp: Date;
4
+ readonly sanitized: boolean;
5
+ readonly debugId: string;
6
+ debug?: import('../types.js').DebugInfo;
7
+ constructor(message: string, code: string, sanitized?: boolean, debug?: import('../types.js').DebugInfo);
8
+ toJSON(): object;
9
+ }
10
+ export declare class SecurityError extends FreshGuardError {
11
+ readonly attemptedAction: string;
12
+ constructor(message: string, attemptedAction?: string);
13
+ static invalidIdentifier(identifier: string): SecurityError;
14
+ static blockedQuery(keyword: string): SecurityError;
15
+ static queryPatternNotAllowed(): SecurityError;
16
+ static sslRequired(): SecurityError;
17
+ }
18
+ export declare class ConnectionError extends FreshGuardError {
19
+ readonly host?: string;
20
+ readonly port?: number;
21
+ constructor(message: string, host?: string, port?: number, originalError?: Error);
22
+ private static sanitizeConnectionError;
23
+ static hostUnreachable(host: string, port?: number): ConnectionError;
24
+ static authenticationFailed(host: string): ConnectionError;
25
+ static databaseNotFound(_database: string, host: string): ConnectionError;
26
+ }
27
+ export declare class TimeoutError extends FreshGuardError {
28
+ readonly operationType: string;
29
+ readonly timeoutMs: number;
30
+ constructor(message: string, operationType?: string, timeoutMs?: number);
31
+ private static sanitizeTimeoutError;
32
+ static queryTimeout(timeoutMs: number): TimeoutError;
33
+ static connectionTimeout(timeoutMs: number): TimeoutError;
34
+ }
35
+ export declare class QueryError extends FreshGuardError {
36
+ readonly queryType: string;
37
+ readonly table?: string;
38
+ constructor(message: string, queryType?: string, table?: string, originalError?: Error, debug?: import('../types.js').DebugInfo);
39
+ private static sanitizeQueryError;
40
+ static tableNotFound(table: string): QueryError;
41
+ static columnNotFound(_column: string, table: string): QueryError;
42
+ static resultTooLarge(maxRows: number, table?: string): QueryError;
43
+ }
44
+ export declare class ConfigurationError extends FreshGuardError {
45
+ readonly field?: string;
46
+ constructor(message: string, field?: string);
47
+ static missingRequired(field: string): ConfigurationError;
48
+ static invalidValue(field: string, _value: string, expected: string): ConfigurationError;
49
+ static invalidFormat(field: string, format: string): ConfigurationError;
50
+ }
51
+ export declare class MonitoringError extends FreshGuardError {
52
+ readonly ruleId?: string;
53
+ readonly table?: string;
54
+ readonly checkType?: string;
55
+ constructor(message: string, checkType?: string, ruleId?: string, table?: string);
56
+ static freshnessCheckFailed(table: string, reason: string): MonitoringError;
57
+ static volumeCheckFailed(table: string, reason: string): MonitoringError;
58
+ }
59
+ export declare class MetadataStorageError extends FreshGuardError {
60
+ readonly operation?: string;
61
+ readonly context?: Record<string, unknown>;
62
+ constructor(message: string, operation?: string, context?: Record<string, unknown>, originalError?: Error, skipSanitization?: boolean);
63
+ private static sanitizeMetadataError;
64
+ private static sanitizeContext;
65
+ static initializationFailed(reason?: string): MetadataStorageError;
66
+ static saveExecutionFailed(ruleId: string, originalError?: Error): MetadataStorageError;
67
+ static getHistoricalDataFailed(ruleId: string, days: number, originalError?: Error): MetadataStorageError;
68
+ static saveRuleFailed(ruleId: string, originalError?: Error): MetadataStorageError;
69
+ static getRuleFailed(ruleId: string, originalError?: Error): MetadataStorageError;
70
+ static connectionFailed(originalError?: Error): MetadataStorageError;
71
+ static migrationFailed(version?: string, originalError?: Error): MetadataStorageError;
72
+ }
73
+ export declare class ErrorHandler {
74
+ static sanitize(error: unknown): FreshGuardError;
75
+ static shouldLogDetails(error: FreshGuardError): boolean;
76
+ static getUserMessage(error: unknown): string;
77
+ static getErrorCode(error: unknown): string;
78
+ }
79
+ export declare const createError: {
80
+ security: {
81
+ invalidIdentifier: (name: string) => SecurityError;
82
+ blockedQuery: (keyword: string) => SecurityError;
83
+ queryNotAllowed: () => SecurityError;
84
+ sslRequired: () => SecurityError;
85
+ };
86
+ connection: {
87
+ hostUnreachable: (host: string, port?: number) => ConnectionError;
88
+ authFailed: (host: string) => ConnectionError;
89
+ databaseNotFound: (database: string, host: string) => ConnectionError;
90
+ };
91
+ timeout: {
92
+ query: (timeoutMs: number) => TimeoutError;
93
+ connection: (timeoutMs: number) => TimeoutError;
94
+ };
95
+ query: {
96
+ tableNotFound: (table: string) => QueryError;
97
+ columnNotFound: (column: string, table: string) => QueryError;
98
+ resultTooLarge: (maxRows: number, table?: string) => QueryError;
99
+ };
100
+ config: {
101
+ missingRequired: (field: string) => ConfigurationError;
102
+ invalidValue: (field: string, value: string, expected: string) => ConfigurationError;
103
+ invalidFormat: (field: string, format: string) => ConfigurationError;
104
+ };
105
+ monitoring: {
106
+ freshnessCheckFailed: (table: string, reason: string) => MonitoringError;
107
+ volumeCheckFailed: (table: string, reason: string) => MonitoringError;
108
+ };
109
+ metadata: {
110
+ initializationFailed: (reason?: string) => MetadataStorageError;
111
+ saveExecutionFailed: (ruleId: string, originalError?: Error) => MetadataStorageError;
112
+ getHistoricalDataFailed: (ruleId: string, days: number, originalError?: Error) => MetadataStorageError;
113
+ saveRuleFailed: (ruleId: string, originalError?: Error) => MetadataStorageError;
114
+ getRuleFailed: (ruleId: string, originalError?: Error) => MetadataStorageError;
115
+ connectionFailed: (originalError?: Error) => MetadataStorageError;
116
+ migrationFailed: (version?: string, originalError?: Error) => MetadataStorageError;
117
+ };
118
+ };
119
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"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"}