@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.
- package/LICENSE +21 -0
- package/README.md +644 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +350 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/connectors/base-connector.d.ts +62 -0
- package/dist/connectors/base-connector.d.ts.map +1 -0
- package/dist/connectors/base-connector.js +549 -0
- package/dist/connectors/base-connector.js.map +1 -0
- package/dist/connectors/bigquery.d.ts +38 -0
- package/dist/connectors/bigquery.d.ts.map +1 -0
- package/dist/connectors/bigquery.js +406 -0
- package/dist/connectors/bigquery.js.map +1 -0
- package/dist/connectors/duckdb.d.ts +36 -0
- package/dist/connectors/duckdb.d.ts.map +1 -0
- package/dist/connectors/duckdb.js +364 -0
- package/dist/connectors/duckdb.js.map +1 -0
- package/dist/connectors/index.d.ts +7 -0
- package/dist/connectors/index.d.ts.map +1 -0
- package/dist/connectors/index.js +7 -0
- package/dist/connectors/index.js.map +1 -0
- package/dist/connectors/mysql.d.ts +32 -0
- package/dist/connectors/mysql.d.ts.map +1 -0
- package/dist/connectors/mysql.js +348 -0
- package/dist/connectors/mysql.js.map +1 -0
- package/dist/connectors/postgres.d.ts +31 -0
- package/dist/connectors/postgres.d.ts.map +1 -0
- package/dist/connectors/postgres.js +326 -0
- package/dist/connectors/postgres.js.map +1 -0
- package/dist/connectors/redshift.d.ts +32 -0
- package/dist/connectors/redshift.d.ts.map +1 -0
- package/dist/connectors/redshift.js +366 -0
- package/dist/connectors/redshift.js.map +1 -0
- package/dist/connectors/snowflake.d.ts +43 -0
- package/dist/connectors/snowflake.d.ts.map +1 -0
- package/dist/connectors/snowflake.js +442 -0
- package/dist/connectors/snowflake.js.map +1 -0
- package/dist/db/index.d.ts +9 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +10 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/migrate.d.ts +12 -0
- package/dist/db/migrate.d.ts.map +1 -0
- package/dist/db/migrate.js +114 -0
- package/dist/db/migrate.js.map +1 -0
- package/dist/db/schema.d.ts +2053 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +164 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/errors/debug-factory.d.ts +23 -0
- package/dist/errors/debug-factory.d.ts.map +1 -0
- package/dist/errors/debug-factory.js +149 -0
- package/dist/errors/debug-factory.js.map +1 -0
- package/dist/errors/index.d.ts +119 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +341 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/metadata/duckdb-storage.d.ts +31 -0
- package/dist/metadata/duckdb-storage.d.ts.map +1 -0
- package/dist/metadata/duckdb-storage.js +230 -0
- package/dist/metadata/duckdb-storage.js.map +1 -0
- package/dist/metadata/factory.d.ts +4 -0
- package/dist/metadata/factory.d.ts.map +1 -0
- package/dist/metadata/factory.js +23 -0
- package/dist/metadata/factory.js.map +1 -0
- package/dist/metadata/index.d.ts +6 -0
- package/dist/metadata/index.d.ts.map +1 -0
- package/dist/metadata/index.js +4 -0
- package/dist/metadata/index.js.map +1 -0
- package/dist/metadata/interface.d.ts +26 -0
- package/dist/metadata/interface.d.ts.map +1 -0
- package/dist/metadata/interface.js +2 -0
- package/dist/metadata/interface.js.map +1 -0
- package/dist/metadata/postgresql-storage.d.ts +32 -0
- package/dist/metadata/postgresql-storage.d.ts.map +1 -0
- package/dist/metadata/postgresql-storage.js +242 -0
- package/dist/metadata/postgresql-storage.js.map +1 -0
- package/dist/metadata/schema-config.d.ts +30 -0
- package/dist/metadata/schema-config.d.ts.map +1 -0
- package/dist/metadata/schema-config.js +94 -0
- package/dist/metadata/schema-config.js.map +1 -0
- package/dist/metadata/types.d.ts +35 -0
- package/dist/metadata/types.d.ts.map +1 -0
- package/dist/metadata/types.js +2 -0
- package/dist/metadata/types.js.map +1 -0
- package/dist/monitor/baseline-calculator.d.ts +30 -0
- package/dist/monitor/baseline-calculator.d.ts.map +1 -0
- package/dist/monitor/baseline-calculator.js +192 -0
- package/dist/monitor/baseline-calculator.js.map +1 -0
- package/dist/monitor/baseline-config.d.ts +37 -0
- package/dist/monitor/baseline-config.d.ts.map +1 -0
- package/dist/monitor/baseline-config.js +156 -0
- package/dist/monitor/baseline-config.js.map +1 -0
- package/dist/monitor/freshness.d.ts +5 -0
- package/dist/monitor/freshness.d.ts.map +1 -0
- package/dist/monitor/freshness.js +239 -0
- package/dist/monitor/freshness.js.map +1 -0
- package/dist/monitor/index.d.ts +5 -0
- package/dist/monitor/index.d.ts.map +1 -0
- package/dist/monitor/index.js +5 -0
- package/dist/monitor/index.js.map +1 -0
- package/dist/monitor/schema-baseline.d.ts +22 -0
- package/dist/monitor/schema-baseline.d.ts.map +1 -0
- package/dist/monitor/schema-baseline.js +211 -0
- package/dist/monitor/schema-baseline.js.map +1 -0
- package/dist/monitor/schema-changes.d.ts +5 -0
- package/dist/monitor/schema-changes.d.ts.map +1 -0
- package/dist/monitor/schema-changes.js +289 -0
- package/dist/monitor/schema-changes.js.map +1 -0
- package/dist/monitor/volume.d.ts +5 -0
- package/dist/monitor/volume.d.ts.map +1 -0
- package/dist/monitor/volume.js +262 -0
- package/dist/monitor/volume.js.map +1 -0
- package/dist/observability/logger.d.ts +63 -0
- package/dist/observability/logger.d.ts.map +1 -0
- package/dist/observability/logger.js +282 -0
- package/dist/observability/logger.js.map +1 -0
- package/dist/observability/metrics.d.ts +106 -0
- package/dist/observability/metrics.d.ts.map +1 -0
- package/dist/observability/metrics.js +441 -0
- package/dist/observability/metrics.js.map +1 -0
- package/dist/query-analyzer.js +526 -0
- package/dist/resilience/circuit-breaker.d.ts +94 -0
- package/dist/resilience/circuit-breaker.d.ts.map +1 -0
- package/dist/resilience/circuit-breaker.js +379 -0
- package/dist/resilience/circuit-breaker.js.map +1 -0
- package/dist/resilience/index.d.ts +7 -0
- package/dist/resilience/index.d.ts.map +1 -0
- package/dist/resilience/index.js +7 -0
- package/dist/resilience/index.js.map +1 -0
- package/dist/resilience/retry-policy.d.ts +87 -0
- package/dist/resilience/retry-policy.d.ts.map +1 -0
- package/dist/resilience/retry-policy.js +423 -0
- package/dist/resilience/retry-policy.js.map +1 -0
- package/dist/resilience/timeout-manager.d.ts +97 -0
- package/dist/resilience/timeout-manager.d.ts.map +1 -0
- package/dist/resilience/timeout-manager.js +339 -0
- package/dist/resilience/timeout-manager.js.map +1 -0
- package/dist/security/query-analyzer.d.ts +82 -0
- package/dist/security/query-analyzer.d.ts.map +1 -0
- package/dist/security/query-analyzer.js +381 -0
- package/dist/security/query-analyzer.js.map +1 -0
- package/dist/security/schema-cache.d.ts +95 -0
- package/dist/security/schema-cache.d.ts.map +1 -0
- package/dist/security/schema-cache.js +344 -0
- package/dist/security/schema-cache.js.map +1 -0
- package/dist/types/connector.d.ts +68 -0
- package/dist/types/connector.d.ts.map +1 -0
- package/dist/types/connector.js +26 -0
- package/dist/types/connector.js.map +1 -0
- package/dist/types.d.ts +244 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/validation/index.d.ts +7 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +5 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/runtime-validator.d.ts +70 -0
- package/dist/validation/runtime-validator.d.ts.map +1 -0
- package/dist/validation/runtime-validator.js +206 -0
- package/dist/validation/runtime-validator.js.map +1 -0
- package/dist/validation/sanitizers.d.ts +56 -0
- package/dist/validation/sanitizers.d.ts.map +1 -0
- package/dist/validation/sanitizers.js +264 -0
- package/dist/validation/sanitizers.js.map +1 -0
- package/dist/validation/schemas.d.ts +224 -0
- package/dist/validation/schemas.d.ts.map +1 -0
- package/dist/validation/schemas.js +263 -0
- package/dist/validation/schemas.js.map +1 -0
- package/dist/validators/index.d.ts +18 -0
- package/dist/validators/index.d.ts.map +1 -0
- package/dist/validators/index.js +209 -0
- package/dist/validators/index.js.map +1 -0
- 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":"AAgBA,8BAAsB,eAAgB,SAAQ,KAAK;IACjD,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,SAAS,EAAE,IAAI,CAAC;IAChC,SAAgB,SAAS,EAAE,OAAO,CAAC;IACnC,SAAgB,OAAO,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,OAAO,aAAa,EAAE,SAAS,CAAC;gBAEnC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,UAAO,EAAE,KAAK,CAAC,EAAE,OAAO,aAAa,EAAE,SAAS;IAkBpG,MAAM,IAAI,MAAM;CAWjB;AAgBD,qBAAa,aAAc,SAAQ,eAAe;IAChD,SAAgB,eAAe,EAAE,MAAM,CAAC;gBAE5B,OAAO,EAAE,MAAM,EAAE,eAAe,SAAY;IAKxD,MAAM,CAAC,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa;IAO3D,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa;IAOnD,MAAM,CAAC,sBAAsB,IAAI,aAAa;IAO9C,MAAM,CAAC,WAAW,IAAI,aAAa;CAMpC;AAKD,qBAAa,eAAgB,SAAQ,eAAe;IAClD,SAAgB,IAAI,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAgB,IAAI,CAAC,EAAE,MAAM,CAAC;gBAG5B,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,MAAM,EACb,aAAa,CAAC,EAAE,KAAK;IAWvB,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAkCtC,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,eAAe;IAQpE,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe;IAO1D,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe;CAM1E;AAKD,qBAAa,YAAa,SAAQ,eAAe;IAC/C,SAAgB,aAAa,EAAE,MAAM,CAAC;IACtC,SAAgB,SAAS,EAAE,MAAM,CAAC;gBAGhC,OAAO,EAAE,MAAM,EACf,aAAa,SAAY,EACzB,SAAS,SAAI;IAQf,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAenC,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY;IAQpD,MAAM,CAAC,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY;CAO1D;AAKD,qBAAa,UAAW,SAAQ,eAAe;IAC7C,SAAgB,SAAS,EAAE,MAAM,CAAC;IAClC,SAAgB,KAAK,CAAC,EAAE,MAAM,CAAC;gBAG7B,OAAO,EAAE,MAAM,EACf,SAAS,SAAY,EACrB,KAAK,CAAC,EAAE,MAAM,EACd,aAAa,CAAC,EAAE,KAAK,EACrB,KAAK,CAAC,EAAE,OAAO,aAAa,EAAE,SAAS;IAQzC,OAAO,CAAC,MAAM,CAAC,kBAAkB;IA2BjC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU;IAQ/C,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU;IAQjE,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,UAAU;CAOnE;AAKD,qBAAa,kBAAmB,SAAQ,eAAe;IACrD,SAAgB,KAAK,CAAC,EAAE,MAAM,CAAC;gBAEnB,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;IAK3C,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB;IAOzD,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,kBAAkB;IAOxF,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,kBAAkB;CAMxE;AAKD,qBAAa,eAAgB,SAAQ,eAAe;IAClD,SAAgB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChC,SAAgB,KAAK,CAAC,EAAE,MAAM,CAAC;IAC/B,SAAgB,SAAS,CAAC,EAAE,MAAM,CAAC;gBAGjC,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM;IAQhB,MAAM,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe;IAS3E,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe;CAQzE;AAKD,qBAAa,oBAAqB,SAAQ,eAAe;IACvD,SAAgB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnC,SAAgB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAGhD,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,aAAa,CAAC,EAAE,KAAK,EACrB,gBAAgB,UAAQ;IAW1B,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAkDpC,OAAO,CAAC,MAAM,CAAC,eAAe;IAgB9B,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,oBAAoB;IAUlE,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,KAAK,GAAG,oBAAoB;IAUvF,MAAM,CAAC,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,KAAK,GAAG,oBAAoB;IAUzG,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,KAAK,GAAG,oBAAoB;IAUlF,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,KAAK,GAAG,oBAAoB;IAUjF,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,KAAK,GAAG,oBAAoB;IAUpE,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,KAAK,GAAG,oBAAoB;CAStF;AASD,qBAAa,YAAY;IAIvB,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe;IAoChD,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO;IAWxD,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IAQ7C,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;CAI5C;AASD,eAAO,MAAM,WAAW;;kCAEM,MAAM;gCACR,MAAM;;;;;gCAMN,MAAM,SAAS,MAAM;2BAC1B,MAAM;qCACI,MAAM,QAAQ,MAAM;;;2BAI9B,MAAM;gCACD,MAAM;;;+BAIP,MAAM;iCACJ,MAAM,SAAS,MAAM;kCACpB,MAAM,UAAU,MAAM;;;iCAIvB,MAAM;8BACT,MAAM,SAAS,MAAM,YAAY,MAAM;+BAEtC,MAAM,UAAU,MAAM;;;sCAIf,MAAM,UAAU,MAAM;mCAEzB,MAAM,UAAU,MAAM;;;wCAKjB,MAAM;sCACR,MAAM,kBAAkB,KAAK;0CAEzB,MAAM,QAAQ,MAAM,kBAAkB,KAAK;iCAEpD,MAAM,kBAAkB,KAAK;gCAE9B,MAAM,kBAAkB,KAAK;2CAElB,KAAK;oCACZ,MAAM,kBAAkB,KAAK;;CAG5D,CAAC"}
|