@freshguard/freshguard-core 0.13.2 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -1
- package/README.md +74 -1
- package/SKILL.md +229 -0
- package/dist/cli/index.d.ts +13 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +74 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/connectors/azure-sql.d.ts +121 -0
- package/dist/connectors/azure-sql.d.ts.map +1 -0
- package/dist/connectors/azure-sql.js +489 -0
- package/dist/connectors/azure-sql.js.map +1 -0
- package/dist/connectors/base-connector.d.ts +139 -0
- package/dist/connectors/base-connector.d.ts.map +1 -1
- package/dist/connectors/base-connector.js +160 -3
- package/dist/connectors/base-connector.js.map +1 -1
- package/dist/connectors/bigquery.d.ts +100 -0
- package/dist/connectors/bigquery.d.ts.map +1 -1
- package/dist/connectors/bigquery.js +143 -2
- package/dist/connectors/bigquery.js.map +1 -1
- package/dist/connectors/duckdb.d.ts +96 -0
- package/dist/connectors/duckdb.d.ts.map +1 -1
- package/dist/connectors/duckdb.js +144 -7
- package/dist/connectors/duckdb.js.map +1 -1
- package/dist/connectors/index.d.ts +28 -0
- package/dist/connectors/index.d.ts.map +1 -1
- package/dist/connectors/index.js +28 -0
- package/dist/connectors/index.js.map +1 -1
- package/dist/connectors/mssql.d.ts +119 -0
- package/dist/connectors/mssql.d.ts.map +1 -0
- package/dist/connectors/mssql.js +483 -0
- package/dist/connectors/mssql.js.map +1 -0
- package/dist/connectors/mysql.d.ts +85 -0
- package/dist/connectors/mysql.d.ts.map +1 -1
- package/dist/connectors/mysql.js +118 -3
- package/dist/connectors/mysql.js.map +1 -1
- package/dist/connectors/postgres.d.ts +85 -0
- package/dist/connectors/postgres.d.ts.map +1 -1
- package/dist/connectors/postgres.js +113 -6
- package/dist/connectors/postgres.js.map +1 -1
- package/dist/connectors/redshift.d.ts +90 -0
- package/dist/connectors/redshift.d.ts.map +1 -1
- package/dist/connectors/redshift.js +131 -7
- package/dist/connectors/redshift.js.map +1 -1
- package/dist/connectors/snowflake.d.ts +108 -0
- package/dist/connectors/snowflake.d.ts.map +1 -1
- package/dist/connectors/snowflake.js +137 -3
- package/dist/connectors/snowflake.js.map +1 -1
- package/dist/connectors/synapse.d.ts +123 -0
- package/dist/connectors/synapse.d.ts.map +1 -0
- package/dist/connectors/synapse.js +495 -0
- package/dist/connectors/synapse.js.map +1 -0
- package/dist/db/index.d.ts +25 -0
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +23 -0
- package/dist/db/index.js.map +1 -1
- package/dist/db/migrate.d.ts +23 -0
- package/dist/db/migrate.d.ts.map +1 -1
- package/dist/db/migrate.js +38 -0
- package/dist/db/migrate.js.map +1 -1
- package/dist/db/schema.d.ts +11 -0
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +70 -0
- package/dist/db/schema.js.map +1 -1
- package/dist/errors/debug-factory.d.ts +38 -0
- package/dist/errors/debug-factory.d.ts.map +1 -1
- package/dist/errors/debug-factory.js +40 -0
- package/dist/errors/debug-factory.js.map +1 -1
- package/dist/errors/index.d.ts +59 -0
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +110 -7
- package/dist/errors/index.js.map +1 -1
- package/dist/index.d.ts +32 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +37 -1
- package/dist/index.js.map +1 -1
- package/dist/metadata/duckdb-storage.d.ts +3 -0
- package/dist/metadata/duckdb-storage.d.ts.map +1 -1
- package/dist/metadata/duckdb-storage.js +6 -0
- package/dist/metadata/duckdb-storage.js.map +1 -1
- package/dist/metadata/factory.d.ts +30 -0
- package/dist/metadata/factory.d.ts.map +1 -1
- package/dist/metadata/factory.js +31 -0
- package/dist/metadata/factory.js.map +1 -1
- package/dist/metadata/index.d.ts +26 -0
- package/dist/metadata/index.d.ts.map +1 -1
- package/dist/metadata/index.js +26 -0
- package/dist/metadata/index.js.map +1 -1
- package/dist/metadata/interface.d.ts +33 -0
- package/dist/metadata/interface.d.ts.map +1 -1
- package/dist/metadata/interface.js +3 -0
- package/dist/metadata/interface.js.map +1 -1
- package/dist/metadata/postgresql-storage.d.ts +3 -0
- package/dist/metadata/postgresql-storage.d.ts.map +1 -1
- package/dist/metadata/postgresql-storage.js +12 -2
- package/dist/metadata/postgresql-storage.js.map +1 -1
- package/dist/metadata/schema-config.d.ts +53 -0
- package/dist/metadata/schema-config.d.ts.map +1 -1
- package/dist/metadata/schema-config.js +64 -0
- package/dist/metadata/schema-config.js.map +1 -1
- package/dist/metadata/types.d.ts +3 -0
- package/dist/metadata/types.d.ts.map +1 -1
- package/dist/metadata/types.js +3 -0
- package/dist/metadata/types.js.map +1 -1
- package/dist/monitor/baseline-calculator.d.ts +56 -0
- package/dist/monitor/baseline-calculator.d.ts.map +1 -1
- package/dist/monitor/baseline-calculator.js +72 -0
- package/dist/monitor/baseline-calculator.js.map +1 -1
- package/dist/monitor/baseline-config.d.ts +77 -0
- package/dist/monitor/baseline-config.d.ts.map +1 -1
- package/dist/monitor/baseline-config.js +79 -1
- package/dist/monitor/baseline-config.js.map +1 -1
- package/dist/monitor/freshness.d.ts +40 -0
- package/dist/monitor/freshness.d.ts.map +1 -1
- package/dist/monitor/freshness.js +82 -3
- package/dist/monitor/freshness.js.map +1 -1
- package/dist/monitor/index.d.ts +29 -0
- package/dist/monitor/index.d.ts.map +1 -1
- package/dist/monitor/index.js +29 -0
- package/dist/monitor/index.js.map +1 -1
- package/dist/monitor/schema-baseline.d.ts +45 -0
- package/dist/monitor/schema-baseline.d.ts.map +1 -1
- package/dist/monitor/schema-baseline.js +63 -5
- package/dist/monitor/schema-baseline.js.map +1 -1
- package/dist/monitor/schema-changes.d.ts +45 -0
- package/dist/monitor/schema-changes.d.ts.map +1 -1
- package/dist/monitor/schema-changes.js +85 -0
- package/dist/monitor/schema-changes.js.map +1 -1
- package/dist/monitor/volume.d.ts +43 -0
- package/dist/monitor/volume.d.ts.map +1 -1
- package/dist/monitor/volume.js +89 -0
- package/dist/monitor/volume.js.map +1 -1
- package/dist/observability/logger.d.ts +91 -0
- package/dist/observability/logger.d.ts.map +1 -1
- package/dist/observability/logger.js +108 -0
- package/dist/observability/logger.js.map +1 -1
- package/dist/observability/metrics.d.ts +140 -0
- package/dist/observability/metrics.d.ts.map +1 -1
- package/dist/observability/metrics.js +184 -7
- package/dist/observability/metrics.js.map +1 -1
- package/dist/resilience/circuit-breaker.d.ts +112 -2
- package/dist/resilience/circuit-breaker.d.ts.map +1 -1
- package/dist/resilience/circuit-breaker.js +140 -6
- package/dist/resilience/circuit-breaker.js.map +1 -1
- package/dist/resilience/index.d.ts +9 -0
- package/dist/resilience/index.d.ts.map +1 -1
- package/dist/resilience/index.js +13 -0
- package/dist/resilience/index.js.map +1 -1
- package/dist/resilience/retry-policy.d.ts +105 -0
- package/dist/resilience/retry-policy.d.ts.map +1 -1
- package/dist/resilience/retry-policy.js +158 -7
- package/dist/resilience/retry-policy.js.map +1 -1
- package/dist/resilience/timeout-manager.d.ts +137 -0
- package/dist/resilience/timeout-manager.d.ts.map +1 -1
- package/dist/resilience/timeout-manager.js +151 -4
- package/dist/resilience/timeout-manager.js.map +1 -1
- package/dist/security/query-analyzer.d.ts +124 -0
- package/dist/security/query-analyzer.d.ts.map +1 -1
- package/dist/security/query-analyzer.js +150 -9
- package/dist/security/query-analyzer.js.map +1 -1
- package/dist/security/schema-cache.d.ts +152 -0
- package/dist/security/schema-cache.d.ts.map +1 -1
- package/dist/security/schema-cache.js +144 -12
- package/dist/security/schema-cache.js.map +1 -1
- package/dist/types/connector.d.ts +68 -1
- package/dist/types/connector.d.ts.map +1 -1
- package/dist/types/connector.js +38 -15
- package/dist/types/connector.js.map +1 -1
- package/dist/types/driver-results.d.ts +28 -0
- package/dist/types/driver-results.d.ts.map +1 -1
- package/dist/types/driver-results.js +12 -0
- package/dist/types/driver-results.js.map +1 -1
- package/dist/types.d.ts +113 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -1
- package/dist/validation/index.d.ts +8 -0
- package/dist/validation/index.d.ts.map +1 -1
- package/dist/validation/index.js +12 -0
- package/dist/validation/index.js.map +1 -1
- package/dist/validation/runtime-validator.d.ts +98 -0
- package/dist/validation/runtime-validator.d.ts.map +1 -1
- package/dist/validation/runtime-validator.js +114 -1
- package/dist/validation/runtime-validator.js.map +1 -1
- package/dist/validation/sanitizers.d.ts +59 -0
- package/dist/validation/sanitizers.d.ts.map +1 -1
- package/dist/validation/sanitizers.js +104 -20
- package/dist/validation/sanitizers.js.map +1 -1
- package/dist/validation/schemas.d.ts +73 -0
- package/dist/validation/schemas.d.ts.map +1 -1
- package/dist/validation/schemas.js +132 -5
- package/dist/validation/schemas.js.map +1 -1
- package/dist/validators/index.d.ts +54 -0
- package/dist/validators/index.d.ts.map +1 -1
- package/dist/validators/index.js +93 -2
- package/dist/validators/index.js.map +1 -1
- package/package.json +6 -2
|
@@ -1,17 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for database driver query results
|
|
3
|
+
*
|
|
4
|
+
* These interfaces replace `any` in database connector code to provide
|
|
5
|
+
* type safety for query results from various database drivers.
|
|
6
|
+
*
|
|
7
|
+
* @license MIT
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Generic row returned from any database query.
|
|
11
|
+
* Uses `unknown` values to force callers to narrow types before use.
|
|
12
|
+
*/
|
|
1
13
|
export type QueryResultRow = Record<string, unknown>;
|
|
14
|
+
/**
|
|
15
|
+
* Row returned from a COUNT(*) query
|
|
16
|
+
*/
|
|
2
17
|
export interface CountResultRow extends QueryResultRow {
|
|
3
18
|
count?: string | number;
|
|
4
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* Row returned from a MAX/MIN timestamp query
|
|
22
|
+
*/
|
|
5
23
|
export interface TimestampResultRow extends QueryResultRow {
|
|
6
24
|
max_date?: unknown;
|
|
7
25
|
min_date?: unknown;
|
|
8
26
|
last_modified?: unknown;
|
|
9
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* Row returned from information_schema.tables
|
|
30
|
+
*/
|
|
10
31
|
export interface TableNameRow extends QueryResultRow {
|
|
11
32
|
table_name?: string;
|
|
12
33
|
TABLE_NAME?: string;
|
|
13
34
|
tablename?: string;
|
|
14
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Row returned from information_schema.columns
|
|
38
|
+
*/
|
|
15
39
|
export interface ColumnMetadataRow extends QueryResultRow {
|
|
16
40
|
column_name?: string;
|
|
17
41
|
COLUMN_NAME?: string;
|
|
@@ -20,5 +44,9 @@ export interface ColumnMetadataRow extends QueryResultRow {
|
|
|
20
44
|
is_nullable?: string;
|
|
21
45
|
IS_NULLABLE?: string;
|
|
22
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Safely convert an unknown database value to a string.
|
|
49
|
+
* Handles the common pattern of accessing unknown values from QueryResultRow.
|
|
50
|
+
*/
|
|
23
51
|
export declare function rowString(value: unknown): string;
|
|
24
52
|
//# sourceMappingURL=driver-results.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driver-results.d.ts","sourceRoot":"","sources":["../../src/types/driver-results.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"driver-results.d.ts","sourceRoot":"","sources":["../../src/types/driver-results.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,cAAc;IACpD,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACxD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAMhD"}
|
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for database driver query results
|
|
3
|
+
*
|
|
4
|
+
* These interfaces replace `any` in database connector code to provide
|
|
5
|
+
* type safety for query results from various database drivers.
|
|
6
|
+
*
|
|
7
|
+
* @license MIT
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Safely convert an unknown database value to a string.
|
|
11
|
+
* Handles the common pattern of accessing unknown values from QueryResultRow.
|
|
12
|
+
*/
|
|
1
13
|
export function rowString(value) {
|
|
2
14
|
if (typeof value === 'string')
|
|
3
15
|
return value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driver-results.js","sourceRoot":"","sources":["../../src/types/driver-results.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"driver-results.js","sourceRoot":"","sources":["../../src/types/driver-results.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA6CH;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,EAAE,CAAC;IAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/G,IAAI,KAAK,YAAY,IAAI;QAAE,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IACtD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,8 +1,19 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Shared TypeScript types for FreshGuard Core
|
|
3
|
+
*
|
|
4
|
+
* These types support the open-source data pipeline freshness monitoring engine.
|
|
5
|
+
* Designed for single-tenant self-hosted installations.
|
|
6
|
+
*
|
|
7
|
+
* @license MIT
|
|
8
|
+
*/
|
|
9
|
+
export type DataSourceType = 'postgres' | 'duckdb' | 'bigquery' | 'snowflake' | 'mysql' | 'redshift' | 'mssql' | 'azure_sql' | 'synapse';
|
|
2
10
|
export type RuleType = 'freshness' | 'volume_anomaly' | 'schema_change' | 'custom_sql';
|
|
3
11
|
export type CheckStatus = 'ok' | 'alert' | 'failed' | 'pending';
|
|
4
12
|
export type AlertDestinationType = 'slack' | 'email' | 'pagerduty' | 'webhook';
|
|
5
13
|
export type SeverityLevel = 'low' | 'medium' | 'high' | 'critical';
|
|
14
|
+
/**
|
|
15
|
+
* Data source credentials (encrypted in production)
|
|
16
|
+
*/
|
|
6
17
|
export interface SourceCredentials {
|
|
7
18
|
host?: string;
|
|
8
19
|
port?: number;
|
|
@@ -13,6 +24,24 @@ export interface SourceCredentials {
|
|
|
13
24
|
sslMode?: 'disable' | 'require' | 'verify-ca' | 'verify-full';
|
|
14
25
|
additionalOptions?: Record<string, unknown>;
|
|
15
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* Data source configuration
|
|
29
|
+
*
|
|
30
|
+
* Represents a registered database that FreshGuard monitors.
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```typescript
|
|
34
|
+
* const source: DataSource = {
|
|
35
|
+
* id: 'prod_pg',
|
|
36
|
+
* name: 'Production PostgreSQL',
|
|
37
|
+
* type: 'postgres',
|
|
38
|
+
* credentials: { host: 'db.example.com', port: 5432, database: 'app', username: 'reader', password: '***' },
|
|
39
|
+
* isActive: true,
|
|
40
|
+
* createdAt: new Date(),
|
|
41
|
+
* updatedAt: new Date(),
|
|
42
|
+
* };
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
16
45
|
export interface DataSource {
|
|
17
46
|
id: string;
|
|
18
47
|
name: string;
|
|
@@ -27,6 +56,29 @@ export interface DataSource {
|
|
|
27
56
|
createdAt: Date;
|
|
28
57
|
updatedAt: Date;
|
|
29
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* Monitoring rule configuration
|
|
61
|
+
*
|
|
62
|
+
* Pass a `MonitoringRule` to `checkFreshness`, `checkVolumeAnomaly`, or
|
|
63
|
+
* `checkSchemaChanges` to define what to monitor and the alert thresholds.
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```typescript
|
|
67
|
+
* const rule: MonitoringRule = {
|
|
68
|
+
* id: 'orders-freshness',
|
|
69
|
+
* sourceId: 'prod_pg',
|
|
70
|
+
* name: 'Orders Freshness',
|
|
71
|
+
* tableName: 'orders',
|
|
72
|
+
* ruleType: 'freshness',
|
|
73
|
+
* toleranceMinutes: 60,
|
|
74
|
+
* timestampColumn: 'updated_at',
|
|
75
|
+
* checkIntervalMinutes: 5,
|
|
76
|
+
* isActive: true,
|
|
77
|
+
* createdAt: new Date(),
|
|
78
|
+
* updatedAt: new Date(),
|
|
79
|
+
* };
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
30
82
|
export interface MonitoringRule {
|
|
31
83
|
id: string;
|
|
32
84
|
sourceId: string;
|
|
@@ -73,6 +125,9 @@ export interface MonitoringRule {
|
|
|
73
125
|
createdAt: Date;
|
|
74
126
|
updatedAt: Date;
|
|
75
127
|
}
|
|
128
|
+
/**
|
|
129
|
+
* Alert destination configuration
|
|
130
|
+
*/
|
|
76
131
|
export interface AlertDestination {
|
|
77
132
|
id: string;
|
|
78
133
|
ruleId: string;
|
|
@@ -86,6 +141,9 @@ export interface AlertDestination {
|
|
|
86
141
|
isActive: boolean;
|
|
87
142
|
createdAt: Date;
|
|
88
143
|
}
|
|
144
|
+
/**
|
|
145
|
+
* Debug information for development and troubleshooting
|
|
146
|
+
*/
|
|
89
147
|
export interface DebugInfo {
|
|
90
148
|
query?: string;
|
|
91
149
|
params?: unknown[];
|
|
@@ -95,6 +153,9 @@ export interface DebugInfo {
|
|
|
95
153
|
debugId?: string;
|
|
96
154
|
context?: Record<string, unknown>;
|
|
97
155
|
}
|
|
156
|
+
/**
|
|
157
|
+
* Debug configuration for enhanced error visibility
|
|
158
|
+
*/
|
|
98
159
|
export interface DebugConfig {
|
|
99
160
|
enabled?: boolean;
|
|
100
161
|
exposeQueries?: boolean;
|
|
@@ -102,6 +163,21 @@ export interface DebugConfig {
|
|
|
102
163
|
logLevel?: 'error' | 'warn' | 'info' | 'debug';
|
|
103
164
|
correlationId?: string;
|
|
104
165
|
}
|
|
166
|
+
/**
|
|
167
|
+
* Check execution result
|
|
168
|
+
*
|
|
169
|
+
* Returned by `checkFreshness`, `checkVolumeAnomaly`, and `checkSchemaChanges`.
|
|
170
|
+
* Inspect `status` to decide whether to alert.
|
|
171
|
+
*
|
|
172
|
+
* @example
|
|
173
|
+
* ```typescript
|
|
174
|
+
* const result: CheckResult = await checkFreshness(connector, rule);
|
|
175
|
+
*
|
|
176
|
+
* if (result.status === 'alert') {
|
|
177
|
+
* console.log(`Stale by ${result.lagMinutes} minutes`);
|
|
178
|
+
* }
|
|
179
|
+
* ```
|
|
180
|
+
*/
|
|
105
181
|
export interface CheckResult {
|
|
106
182
|
status: CheckStatus;
|
|
107
183
|
rowCount?: number;
|
|
@@ -118,6 +194,9 @@ export interface CheckResult {
|
|
|
118
194
|
debugId?: string;
|
|
119
195
|
debug?: DebugInfo;
|
|
120
196
|
}
|
|
197
|
+
/**
|
|
198
|
+
* Check execution record (stored in database)
|
|
199
|
+
*/
|
|
121
200
|
export interface CheckExecution {
|
|
122
201
|
id: string;
|
|
123
202
|
ruleId: string;
|
|
@@ -135,6 +214,9 @@ export interface CheckExecution {
|
|
|
135
214
|
executedAt: Date;
|
|
136
215
|
nextCheckAt?: Date;
|
|
137
216
|
}
|
|
217
|
+
/**
|
|
218
|
+
* Column change detected in schema monitoring
|
|
219
|
+
*/
|
|
138
220
|
export interface ColumnChange {
|
|
139
221
|
columnName: string;
|
|
140
222
|
changeType: 'added' | 'removed' | 'type_changed' | 'nullability_changed';
|
|
@@ -142,6 +224,9 @@ export interface ColumnChange {
|
|
|
142
224
|
newValue?: string;
|
|
143
225
|
impact: 'safe' | 'warning' | 'breaking';
|
|
144
226
|
}
|
|
227
|
+
/**
|
|
228
|
+
* Schema changes result from monitoring
|
|
229
|
+
*/
|
|
145
230
|
export interface SchemaChanges {
|
|
146
231
|
hasChanges: boolean;
|
|
147
232
|
addedColumns: ColumnChange[];
|
|
@@ -151,6 +236,9 @@ export interface SchemaChanges {
|
|
|
151
236
|
changeCount: number;
|
|
152
237
|
severity: 'low' | 'medium' | 'high';
|
|
153
238
|
}
|
|
239
|
+
/**
|
|
240
|
+
* Schema baseline for comparison
|
|
241
|
+
*/
|
|
154
242
|
export interface SchemaBaseline {
|
|
155
243
|
ruleId: string;
|
|
156
244
|
tableName: string;
|
|
@@ -158,6 +246,9 @@ export interface SchemaBaseline {
|
|
|
158
246
|
capturedAt: Date;
|
|
159
247
|
schemaHash: string;
|
|
160
248
|
}
|
|
249
|
+
/**
|
|
250
|
+
* Alert log entry
|
|
251
|
+
*/
|
|
161
252
|
export interface AlertLogEntry {
|
|
162
253
|
id: string;
|
|
163
254
|
executionId: string;
|
|
@@ -176,17 +267,26 @@ export interface AlertLogEntry {
|
|
|
176
267
|
sentAt?: Date;
|
|
177
268
|
createdAt: Date;
|
|
178
269
|
}
|
|
270
|
+
/**
|
|
271
|
+
* Request to create a data source
|
|
272
|
+
*/
|
|
179
273
|
export interface CreateSourceRequest {
|
|
180
274
|
name: string;
|
|
181
275
|
type: DataSourceType;
|
|
182
276
|
credentials: SourceCredentials;
|
|
183
277
|
}
|
|
278
|
+
/**
|
|
279
|
+
* Response from testing a data source connection
|
|
280
|
+
*/
|
|
184
281
|
export interface TestConnectionResponse {
|
|
185
282
|
success: boolean;
|
|
186
283
|
tableCount?: number;
|
|
187
284
|
tables?: string[];
|
|
188
285
|
error?: string;
|
|
189
286
|
}
|
|
287
|
+
/**
|
|
288
|
+
* Request to create a monitoring rule
|
|
289
|
+
*/
|
|
190
290
|
export interface CreateRuleRequest {
|
|
191
291
|
sourceId: string;
|
|
192
292
|
name: string;
|
|
@@ -201,6 +301,9 @@ export interface CreateRuleRequest {
|
|
|
201
301
|
checkIntervalMinutes: number;
|
|
202
302
|
alertDestinations?: Omit<AlertDestination, 'id' | 'ruleId' | 'createdAt'>[];
|
|
203
303
|
}
|
|
304
|
+
/**
|
|
305
|
+
* Request to update a monitoring rule
|
|
306
|
+
*/
|
|
204
307
|
export interface UpdateRuleRequest {
|
|
205
308
|
name?: string;
|
|
206
309
|
description?: string;
|
|
@@ -209,13 +312,22 @@ export interface UpdateRuleRequest {
|
|
|
209
312
|
deviationThresholdPercent?: number;
|
|
210
313
|
checkIntervalMinutes?: number;
|
|
211
314
|
}
|
|
315
|
+
/**
|
|
316
|
+
* Request to manually trigger a check
|
|
317
|
+
*/
|
|
212
318
|
export interface TriggerCheckRequest {
|
|
213
319
|
ruleId: string;
|
|
214
320
|
}
|
|
321
|
+
/**
|
|
322
|
+
* Response from triggering a check
|
|
323
|
+
*/
|
|
215
324
|
export interface TriggerCheckResponse {
|
|
216
325
|
executionId: string;
|
|
217
326
|
result: CheckResult;
|
|
218
327
|
}
|
|
328
|
+
/**
|
|
329
|
+
* Self-hosting configuration file
|
|
330
|
+
*/
|
|
219
331
|
export interface FreshGuardConfig {
|
|
220
332
|
sources: Record<string, {
|
|
221
333
|
type: DataSourceType;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;AACzI,MAAM,MAAM,QAAQ,GAAG,WAAW,GAAG,gBAAgB,GAAG,eAAe,GAAG,YAAY,CAAC;AACvF,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;AAChE,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;AAC/E,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,aAAa,CAAC;IAC9D,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7C;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,cAAc,CAAC;IACrB,WAAW,EAAE,iBAAiB,CAAC;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,QAAQ,CAAC;IAGnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IAGzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,eAAe,CAAC,EAAE,MAAM,CAAC;IAGzB,cAAc,CAAC,EAAE;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,iBAAiB,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,cAAc,CAAC;QACvD,qBAAqB,CAAC,EAAE,MAAM,CAAC;QAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;KAC9B,CAAC;IAGF,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAG5B,kBAAkB,CAAC,EAAE;QACnB,cAAc,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,YAAY,CAAC;QAClD,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACpC,cAAc,CAAC,EAAE;YACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;YACnB,UAAU,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;YACvC,UAAU,CAAC,EAAE,OAAO,CAAC;YACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;SAC5B,CAAC;QACF,mBAAmB,CAAC,EAAE,MAAM,CAAC;KAC9B,CAAC;IAGF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IAGzB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,oBAAoB,CAAC;IACtC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC/C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,IAAI,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,UAAU,EAAE,IAAI,CAAC;IACjB,WAAW,CAAC,EAAE,IAAI,CAAC;IAGnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,WAAW,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,IAAI,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,IAAI,CAAC;IACjB,WAAW,CAAC,EAAE,IAAI,CAAC;CACpB;AAMD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,GAAG,SAAS,GAAG,cAAc,GAAG,qBAAqB,CAAC;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,YAAY,EAAE,CAAC;IAC7B,cAAc,EAAE,YAAY,EAAE,CAAC;IAC/B,eAAe,EAAE,YAAY,EAAE,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,sBAAsB,EAAE,WAAW,CAAC;IACnD,UAAU,EAAE,IAAI,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,oBAAoB,CAAC;IACtC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,aAAa,CAAC;IAC7B,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;IACtC,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,IAAI,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,IAAI,CAAC;IACd,SAAS,EAAE,IAAI,CAAC;CACjB;AAMD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,cAAc,CAAC;IACrB,WAAW,EAAE,iBAAiB,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,QAAQ,CAAC;IAGnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IAGzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,eAAe,CAAC,EAAE,MAAM,CAAC;IAGzB,oBAAoB,EAAE,MAAM,CAAC;IAG7B,iBAAiB,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,QAAQ,GAAG,WAAW,CAAC,EAAE,CAAC;CAC7E;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;CACrB;AAOD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;QACtB,IAAI,EAAE,cAAc,CAAC;QACrB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,iBAAiB,CAAC;KACjC,CAAC,CAAC;IACH,KAAK,EAAE;QACL,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,QAAQ,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE;YACN,IAAI,EAAE,oBAAoB,CAAC;YAC3B,OAAO,EAAE,MAAM,CAAC;SACjB,EAAE,CAAC;KACL,EAAE,CAAC;IACJ,SAAS,CAAC,EAAE;QACV,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IAGF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB"}
|
package/dist/types.js
CHANGED
|
@@ -1,2 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared TypeScript types for FreshGuard Core
|
|
3
|
+
*
|
|
4
|
+
* These types support the open-source data pipeline freshness monitoring engine.
|
|
5
|
+
* Designed for single-tenant self-hosted installations.
|
|
6
|
+
*
|
|
7
|
+
* @license MIT
|
|
8
|
+
*/
|
|
1
9
|
export {};
|
|
2
10
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FreshGuard Core Phase 2 Validation Layer
|
|
3
|
+
*
|
|
4
|
+
* Modern validation system using Zod schemas with enhanced error handling,
|
|
5
|
+
* type safety, and comprehensive input sanitization.
|
|
6
|
+
*
|
|
7
|
+
* @license MIT
|
|
8
|
+
*/
|
|
1
9
|
export * from './schemas.js';
|
|
2
10
|
export * from './runtime-validator.js';
|
|
3
11
|
export * from './sanitizers.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validation/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validation/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,cAAc,cAAc,CAAC;AAG7B,cAAc,wBAAwB,CAAC;AAGvC,cAAc,iBAAiB,CAAC;AAGhC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,0BAA0B,EAC1B,uBAAuB,EACvB,cAAc,EACd,aAAa,EACb,wBAAwB,EACzB,MAAM,wBAAwB,CAAC;AAGhC,YAAY,EACV,eAAe,EACf,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAGhC,YAAY,EACV,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,iBAAiB,CAAC"}
|
package/dist/validation/index.js
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FreshGuard Core Phase 2 Validation Layer
|
|
3
|
+
*
|
|
4
|
+
* Modern validation system using Zod schemas with enhanced error handling,
|
|
5
|
+
* type safety, and comprehensive input sanitization.
|
|
6
|
+
*
|
|
7
|
+
* @license MIT
|
|
8
|
+
*/
|
|
9
|
+
// Export all schemas
|
|
1
10
|
export * from './schemas.js';
|
|
11
|
+
// Export runtime validation
|
|
2
12
|
export * from './runtime-validator.js';
|
|
13
|
+
// Export sanitization utilities
|
|
3
14
|
export * from './sanitizers.js';
|
|
15
|
+
// Re-export commonly used functions for backward compatibility
|
|
4
16
|
export { validateTableName, validateColumnName, validateDatabaseIdentifier, validateConnectorConfig, sanitizeString, validateLimit, validateConnectionString } from './runtime-validator.js';
|
|
5
17
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validation/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validation/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,qBAAqB;AACrB,cAAc,cAAc,CAAC;AAE7B,4BAA4B;AAC5B,cAAc,wBAAwB,CAAC;AAEvC,gCAAgC;AAChC,cAAc,iBAAiB,CAAC;AAEhC,+DAA+D;AAC/D,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,0BAA0B,EAC1B,uBAAuB,EACvB,cAAc,EACd,aAAa,EACb,wBAAwB,EACzB,MAAM,wBAAwB,CAAC"}
|
|
@@ -1,11 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime validation utilities for FreshGuard Core Phase 2
|
|
3
|
+
*
|
|
4
|
+
* Provides structured error handling and runtime validation using Zod schemas
|
|
5
|
+
* with enhanced error formatting and type safety.
|
|
6
|
+
*
|
|
7
|
+
* @license MIT
|
|
8
|
+
*/
|
|
1
9
|
import { z } from 'zod';
|
|
2
10
|
import { schemas } from './schemas.js';
|
|
11
|
+
/**
|
|
12
|
+
* Structured validation error with detailed path information
|
|
13
|
+
*/
|
|
3
14
|
export interface ValidationError {
|
|
4
15
|
field: string;
|
|
5
16
|
code: string;
|
|
6
17
|
message: string;
|
|
7
18
|
value?: unknown;
|
|
8
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* Result type for validation operations
|
|
22
|
+
*/
|
|
9
23
|
export type ValidationResult<T> = {
|
|
10
24
|
success: true;
|
|
11
25
|
data: T;
|
|
@@ -13,11 +27,20 @@ export type ValidationResult<T> = {
|
|
|
13
27
|
success: false;
|
|
14
28
|
errors: ValidationError[];
|
|
15
29
|
};
|
|
30
|
+
/**
|
|
31
|
+
* Enhanced error class for validation failures
|
|
32
|
+
*/
|
|
16
33
|
export declare class ValidationException extends Error {
|
|
17
34
|
readonly errors: ValidationError[];
|
|
18
35
|
readonly timestamp: Date;
|
|
19
36
|
constructor(errors: ValidationError[], message?: string);
|
|
37
|
+
/**
|
|
38
|
+
* Get error messages as a formatted string
|
|
39
|
+
*/
|
|
20
40
|
getFormattedErrors(): string;
|
|
41
|
+
/**
|
|
42
|
+
* Convert to JSON for logging/API responses
|
|
43
|
+
*/
|
|
21
44
|
toJSON(): {
|
|
22
45
|
name: string;
|
|
23
46
|
message: string;
|
|
@@ -25,21 +48,60 @@ export declare class ValidationException extends Error {
|
|
|
25
48
|
timestamp: Date;
|
|
26
49
|
};
|
|
27
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* Runtime validator with structured error handling and caching
|
|
53
|
+
*/
|
|
28
54
|
export declare class RuntimeValidator {
|
|
29
55
|
private readonly schemaCache;
|
|
30
56
|
private validationStats;
|
|
31
57
|
constructor();
|
|
58
|
+
/**
|
|
59
|
+
* Validate data against a Zod schema with structured error handling
|
|
60
|
+
*/
|
|
32
61
|
validate<T>(schema: z.ZodSchema<T>, data: unknown): ValidationResult<T>;
|
|
62
|
+
/**
|
|
63
|
+
* Validate and throw exception on failure (for convenience)
|
|
64
|
+
*/
|
|
33
65
|
validateOrThrow<T>(schema: z.ZodSchema<T>, data: unknown, context?: string): T;
|
|
66
|
+
/**
|
|
67
|
+
* Validate table name
|
|
68
|
+
*/
|
|
34
69
|
validateTableName(name: unknown): ValidationResult<string>;
|
|
70
|
+
/**
|
|
71
|
+
* Validate column name
|
|
72
|
+
*/
|
|
35
73
|
validateColumnName(name: unknown): ValidationResult<string>;
|
|
74
|
+
/**
|
|
75
|
+
* Validate database identifier (table or column)
|
|
76
|
+
*/
|
|
36
77
|
validateDatabaseIdentifier(identifier: unknown, type?: 'table' | 'column'): ValidationResult<string>;
|
|
78
|
+
/**
|
|
79
|
+
* Validate connector configuration
|
|
80
|
+
*/
|
|
37
81
|
validateConnectorConfig(config: unknown, type?: 'postgres' | 'duckdb' | 'bigquery' | 'snowflake'): ValidationResult<Record<string, unknown>>;
|
|
82
|
+
/**
|
|
83
|
+
* Validate and sanitize string input
|
|
84
|
+
*/
|
|
38
85
|
validateSanitizedString(input: unknown): ValidationResult<string>;
|
|
86
|
+
/**
|
|
87
|
+
* Validate SQL LIMIT value
|
|
88
|
+
*/
|
|
39
89
|
validateLimit(limit: unknown): ValidationResult<number>;
|
|
90
|
+
/**
|
|
91
|
+
* Validate connection string
|
|
92
|
+
*/
|
|
40
93
|
validateConnectionString(connectionString: unknown): ValidationResult<string>;
|
|
94
|
+
/**
|
|
95
|
+
* Validate freshness monitoring rule
|
|
96
|
+
*/
|
|
41
97
|
validateFreshnessRule(rule: unknown): ValidationResult<z.infer<typeof schemas.FreshnessRuleSchema>>;
|
|
98
|
+
/**
|
|
99
|
+
* Validate volume anomaly monitoring rule
|
|
100
|
+
*/
|
|
42
101
|
validateVolumeRule(rule: unknown): ValidationResult<z.infer<typeof schemas.VolumeRuleSchema>>;
|
|
102
|
+
/**
|
|
103
|
+
* Validate multiple values at once
|
|
104
|
+
*/
|
|
43
105
|
validateBatch<T>(schema: z.ZodSchema<T>, items: unknown[]): {
|
|
44
106
|
valid: T[];
|
|
45
107
|
invalid: {
|
|
@@ -47,24 +109,60 @@ export declare class RuntimeValidator {
|
|
|
47
109
|
errors: ValidationError[];
|
|
48
110
|
}[];
|
|
49
111
|
};
|
|
112
|
+
/**
|
|
113
|
+
* Get validation statistics
|
|
114
|
+
*/
|
|
50
115
|
getStats(): {
|
|
51
116
|
total: number;
|
|
52
117
|
successes: number;
|
|
53
118
|
failures: number;
|
|
54
119
|
successRate: string;
|
|
55
120
|
};
|
|
121
|
+
/**
|
|
122
|
+
* Reset validation statistics
|
|
123
|
+
*/
|
|
56
124
|
resetStats(): void;
|
|
125
|
+
/**
|
|
126
|
+
* Clear schema cache
|
|
127
|
+
*/
|
|
57
128
|
clearCache(): void;
|
|
58
129
|
}
|
|
59
130
|
declare const globalValidator: RuntimeValidator;
|
|
131
|
+
/**
|
|
132
|
+
* Validate table name (convenience function)
|
|
133
|
+
*/
|
|
60
134
|
export declare function validateTableName(name: unknown): string;
|
|
135
|
+
/**
|
|
136
|
+
* Validate column name (convenience function)
|
|
137
|
+
*/
|
|
61
138
|
export declare function validateColumnName(name: unknown): string;
|
|
139
|
+
/**
|
|
140
|
+
* Validate database identifier (convenience function)
|
|
141
|
+
*/
|
|
62
142
|
export declare function validateDatabaseIdentifier(identifier: unknown, type?: 'table' | 'column'): string;
|
|
143
|
+
/**
|
|
144
|
+
* Validate connector configuration (convenience function)
|
|
145
|
+
*/
|
|
63
146
|
export declare function validateConnectorConfig(config: unknown, type?: 'postgres' | 'duckdb' | 'bigquery' | 'snowflake'): Record<string, unknown>;
|
|
147
|
+
/**
|
|
148
|
+
* Sanitize string input (convenience function)
|
|
149
|
+
*/
|
|
64
150
|
export declare function sanitizeString(input: unknown): string;
|
|
151
|
+
/**
|
|
152
|
+
* Validate SQL LIMIT value (convenience function)
|
|
153
|
+
*/
|
|
65
154
|
export declare function validateLimit(limit: unknown): number;
|
|
155
|
+
/**
|
|
156
|
+
* Validate connection string (convenience function)
|
|
157
|
+
*/
|
|
66
158
|
export declare function validateConnectionString(connectionString: unknown): string;
|
|
159
|
+
/**
|
|
160
|
+
* Create validation middleware for automatic validation
|
|
161
|
+
*/
|
|
67
162
|
export declare function createValidationMiddleware<T>(schema: z.ZodSchema<T>): (data: unknown) => T;
|
|
163
|
+
/**
|
|
164
|
+
* Create async validation middleware
|
|
165
|
+
*/
|
|
68
166
|
export declare function createAsyncValidationMiddleware<T>(schema: z.ZodSchema<T>): (data: unknown) => Promise<T>;
|
|
69
167
|
export { globalValidator as validator, schemas };
|
|
70
168
|
//# sourceMappingURL=runtime-validator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-validator.d.ts","sourceRoot":"","sources":["../../src/validation/runtime-validator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runtime-validator.d.ts","sourceRoot":"","sources":["../../src/validation/runtime-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAMvC;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI;IAChC,OAAO,EAAE,IAAI,CAAC;IACd,IAAI,EAAE,CAAC,CAAC;CACT,GAAG;IACF,OAAO,EAAE,KAAK,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B,CAAC;AAEF;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,SAAgB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1C,SAAgB,SAAS,EAAE,IAAI,CAAC;gBAEpB,MAAM,EAAE,eAAe,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM;IAQvD;;OAEG;IACH,kBAAkB,IAAI,MAAM;IAM5B;;OAEG;IACH,MAAM,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,eAAe,EAAE,CAAC;QAAC,SAAS,EAAE,IAAI,CAAA;KAAE;CAQxF;AAuBD;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkC;IAC9D,OAAO,CAAC,eAAe,CAIrB;;IAaF;;OAEG;IACH,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC;IAiCvE;;OAEG;IACH,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC;IAa9E;;OAEG;IACH,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC;IAI1D;;OAEG;IACH,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC;IAI3D;;OAEG;IACH,0BAA0B,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,GAAE,OAAO,GAAG,QAAkB,GAAG,gBAAgB,CAAC,MAAM,CAAC;IAK7G;;OAEG;IACH,uBAAuB,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAuB5I;;OAEG;IACH,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC;IAIjE;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC;IAIvD;;OAEG;IACH,wBAAwB,CAAC,gBAAgB,EAAE,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC;IAI7E;;OAEG;IACH,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAInG;;OAEG;IACH,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAI7F;;OAEG;IACH,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG;QAC1D,KAAK,EAAE,CAAC,EAAE,CAAC;QACX,OAAO,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,eAAe,EAAE,CAAA;SAAE,EAAE,CAAA;KACxD;IAgBD;;OAEG;IACH,QAAQ,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE;IASvF;;OAEG;IACH,UAAU,IAAI,IAAI;IAQlB;;OAEG;IACH,UAAU,IAAI,IAAI;CAGnB;AAOD,QAAA,MAAM,eAAe,kBAAyB,CAAC;AAE/C;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAEvD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAExD;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,GAAE,OAAO,GAAG,QAAkB,GAAG,MAAM,CAG1G;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQzI;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAErD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEpD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,gBAAgB,EAAE,OAAO,GAAG,MAAM,CAE1E;AAMD;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAC1D,MAAM,OAAO,KAAG,CAAC,CAG1B;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAC/D,MAAM,OAAO,KAAG,OAAO,CAAC,CAAC,CAAC,CAGnC;AAMD,OAAO,EACL,eAAe,IAAI,SAAS,EAC5B,OAAO,EACR,CAAC"}
|