@ts-cloud/core 0.2.2 → 0.2.4
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/dist/advanced-features.test.d.ts +1 -0
- package/dist/aws/cloudformation.d.ts +136 -0
- package/dist/aws/cloudfront.d.ts +45 -0
- package/dist/aws/credentials.d.ts +77 -0
- package/dist/aws/credentials.test.d.ts +4 -0
- package/dist/aws/index.d.ts +10 -0
- package/dist/aws/s3.d.ts +256 -0
- package/dist/aws/s3.test.d.ts +4 -0
- package/dist/aws/signature.d.ts +142 -0
- package/dist/aws/signature.test.d.ts +4 -0
- package/dist/backup/disaster-recovery.d.ts +140 -0
- package/dist/backup/disaster-recovery.test.d.ts +1 -0
- package/dist/backup/index.d.ts +8 -0
- package/dist/backup/manager.d.ts +172 -0
- package/dist/backup/manager.test.d.ts +1 -0
- package/dist/cicd/circleci.d.ts +50 -0
- package/dist/cicd/github-actions.d.ts +62 -0
- package/dist/cicd/gitlab-ci.d.ts +50 -0
- package/dist/cicd/index.d.ts +7 -0
- package/dist/cli/history.d.ts +137 -0
- package/dist/cli/index.d.ts +9 -0
- package/dist/cli/progress.d.ts +193 -0
- package/dist/cli/repl.d.ts +148 -0
- package/dist/cli/suggestions.d.ts +74 -0
- package/dist/cli/table.d.ts +73 -0
- package/dist/cli/table.test.d.ts +1 -0
- package/dist/cloudformation/builder.d.ts +93 -0
- package/dist/cloudformation/builder.test.d.ts +4 -0
- package/dist/cloudformation/builders/api-gateway.d.ts +30 -0
- package/dist/cloudformation/builders/cache.d.ts +35 -0
- package/dist/cloudformation/builders/cdn.d.ts +34 -0
- package/dist/cloudformation/builders/compute.d.ts +68 -0
- package/dist/cloudformation/builders/database.d.ts +61 -0
- package/dist/cloudformation/builders/functions.d.ts +32 -0
- package/dist/cloudformation/builders/messaging.d.ts +17 -0
- package/dist/cloudformation/builders/monitoring.d.ts +39 -0
- package/dist/cloudformation/builders/network.d.ts +14 -0
- package/dist/cloudformation/builders/queue.d.ts +16 -0
- package/dist/cloudformation/builders/security.d.ts +31 -0
- package/dist/cloudformation/builders/storage.d.ts +36 -0
- package/dist/cloudformation/index.d.ts +10 -0
- package/dist/cloudformation/types.d.ts +200 -0
- package/dist/compliance/aws-config.d.ts +175 -0
- package/dist/compliance/cloudtrail.d.ts +132 -0
- package/dist/compliance/compliance.test.d.ts +1 -0
- package/dist/compliance/guardduty.d.ts +176 -0
- package/dist/compliance/index.d.ts +12 -0
- package/dist/compliance/security-hub.d.ts +178 -0
- package/dist/containers/build-optimization.d.ts +155 -0
- package/dist/containers/containers.test.d.ts +1 -0
- package/dist/containers/image-scanning.d.ts +144 -0
- package/dist/containers/index.d.ts +8 -0
- package/dist/containers/registry.d.ts +129 -0
- package/dist/containers/service-mesh.d.ts +254 -0
- package/dist/database/database.test.d.ts +1 -0
- package/dist/database/index.d.ts +8 -0
- package/dist/database/migrations.d.ts +153 -0
- package/dist/database/performance.d.ts +219 -0
- package/dist/database/replicas.d.ts +218 -0
- package/dist/database/users.d.ts +165 -0
- package/dist/dependency-graph.d.ts +37 -0
- package/dist/deployment/ab-testing.d.ts +165 -0
- package/dist/deployment/blue-green.d.ts +140 -0
- package/dist/deployment/canary.d.ts +165 -0
- package/dist/deployment/deployment.test.d.ts +1 -0
- package/dist/deployment/index.d.ts +12 -0
- package/dist/deployment/progressive.d.ts +50 -0
- package/dist/dns/dns.test.d.ts +1 -0
- package/dist/dns/dnssec.d.ts +120 -0
- package/dist/dns/index.d.ts +7 -0
- package/dist/dns/resolver.d.ts +216 -0
- package/dist/dns/routing.d.ts +277 -0
- package/dist/email/advanced/analytics.d.ts +107 -0
- package/dist/email/advanced/index.d.ts +10 -0
- package/dist/email/advanced/rules.d.ts +131 -0
- package/dist/email/advanced/scheduling.d.ts +81 -0
- package/dist/email/advanced/search.d.ts +91 -0
- package/dist/email/advanced/shared-mailboxes.d.ts +109 -0
- package/dist/email/advanced/templates.d.ts +95 -0
- package/dist/email/advanced/threading.d.ts +65 -0
- package/dist/email/analytics.d.ts +189 -0
- package/dist/email/bounce-handling.d.ts +171 -0
- package/dist/email/email.test.d.ts +1 -0
- package/dist/email/handlers/__tests__/inbound.test.d.ts +1 -0
- package/dist/email/handlers/__tests__/outbound.test.d.ts +1 -0
- package/dist/email/handlers/converter.d.ts +11 -0
- package/dist/email/handlers/feedback.d.ts +11 -0
- package/dist/email/handlers/inbound.d.ts +13 -0
- package/dist/email/handlers/outbound.d.ts +13 -0
- package/dist/email/index.d.ts +10 -0
- package/dist/email/reputation.d.ts +133 -0
- package/dist/email/templates.d.ts +124 -0
- package/dist/errors/index.d.ts +177 -0
- package/dist/errors/index.test.d.ts +4 -0
- package/dist/health-checks/index.d.ts +35 -0
- package/dist/index.d.ts +15 -256
- package/dist/index.js +228 -80
- package/dist/intrinsic-functions.d.ts +77 -0
- package/dist/lambda/concurrency.d.ts +146 -0
- package/dist/lambda/destinations.d.ts +141 -0
- package/dist/lambda/dlq.d.ts +160 -0
- package/dist/lambda/index.d.ts +10 -0
- package/dist/lambda/lambda.test.d.ts +1 -0
- package/dist/lambda/layers.d.ts +117 -0
- package/dist/lambda/versions.d.ts +145 -0
- package/dist/lambda/vpc.d.ts +164 -0
- package/dist/local/config.d.ts +44 -0
- package/dist/local/index.d.ts +5 -0
- package/dist/local/mock-aws.d.ts +69 -0
- package/dist/modules/ai.d.ts +108 -0
- package/dist/modules/api.d.ts +157 -0
- package/dist/modules/auth.d.ts +262 -0
- package/dist/modules/cache.d.ts +108 -0
- package/dist/modules/cdn.d.ts +305 -0
- package/dist/modules/communication.d.ts +117 -0
- package/dist/modules/compute.d.ts +1376 -0
- package/dist/modules/database.d.ts +144 -0
- package/dist/modules/deployment.d.ts +372 -0
- package/dist/modules/dns.d.ts +143 -0
- package/dist/modules/email.d.ts +314 -0
- package/dist/modules/filesystem.d.ts +132 -0
- package/dist/modules/index.d.ts +31 -0
- package/dist/modules/messaging.d.ts +210 -0
- package/dist/modules/monitoring.d.ts +574 -0
- package/dist/modules/network.d.ts +148 -0
- package/dist/modules/parameter-store.d.ts +143 -0
- package/dist/modules/permissions.d.ts +245 -0
- package/dist/modules/phone.d.ts +125 -0
- package/dist/modules/queue.d.ts +411 -0
- package/dist/modules/redirects.d.ts +140 -0
- package/dist/modules/registry.d.ts +189 -0
- package/dist/modules/search.d.ts +135 -0
- package/dist/modules/secrets.d.ts +149 -0
- package/dist/modules/security.d.ts +219 -0
- package/dist/modules/sms.d.ts +130 -0
- package/dist/modules/storage.d.ts +344 -0
- package/dist/modules/workflow.d.ts +288 -0
- package/dist/multi-account/config.d.ts +166 -0
- package/dist/multi-account/index.d.ts +6 -0
- package/dist/multi-account/manager.d.ts +181 -0
- package/dist/multi-region/cross-region.d.ts +204 -0
- package/dist/multi-region/index.d.ts +7 -0
- package/dist/multi-region/manager.d.ts +136 -0
- package/dist/multi-region/regions.d.ts +98 -0
- package/dist/network-security/index.d.ts +55 -0
- package/dist/observability/index.d.ts +8 -0
- package/dist/observability/logs.d.ts +213 -0
- package/dist/observability/metrics.d.ts +187 -0
- package/dist/observability/observability.test.d.ts +1 -0
- package/dist/observability/synthetics.d.ts +189 -0
- package/dist/observability/xray.d.ts +193 -0
- package/dist/phone/advanced/analytics.d.ts +83 -0
- package/dist/phone/advanced/callbacks.d.ts +67 -0
- package/dist/phone/advanced/index.d.ts +7 -0
- package/dist/phone/advanced/ivr-builder.d.ts +130 -0
- package/dist/phone/advanced/recording.d.ts +62 -0
- package/dist/phone/handlers/__tests__/incoming-call.test.d.ts +1 -0
- package/dist/phone/handlers/incoming-call.d.ts +10 -0
- package/dist/phone/handlers/missed-call.d.ts +9 -0
- package/dist/phone/handlers/voicemail.d.ts +10 -0
- package/dist/phone/index.d.ts +5 -0
- package/dist/presets/api-backend.d.ts +11 -0
- package/dist/presets/data-pipeline.d.ts +11 -0
- package/dist/presets/extend.d.ts +194 -0
- package/dist/presets/extend.test.d.ts +4 -0
- package/dist/presets/fullstack-app.d.ts +12 -0
- package/dist/presets/index.d.ts +13 -0
- package/dist/presets/jamstack.d.ts +12 -0
- package/dist/presets/microservices.d.ts +18 -0
- package/dist/presets/ml-api.d.ts +13 -0
- package/dist/presets/nodejs-server.d.ts +14 -0
- package/dist/presets/nodejs-serverless.d.ts +14 -0
- package/dist/presets/realtime-app.d.ts +11 -0
- package/dist/presets/static-site.d.ts +12 -0
- package/dist/presets/traditional-web-app.d.ts +16 -0
- package/dist/presets/wordpress.d.ts +12 -0
- package/dist/preview/github.d.ts +32 -0
- package/dist/preview/github.test.d.ts +1 -0
- package/dist/preview/index.d.ts +10 -0
- package/dist/preview/manager.d.ts +101 -0
- package/dist/preview/manager.test.d.ts +1 -0
- package/dist/preview/notifications.d.ts +89 -0
- package/dist/preview/notifications.test.d.ts +1 -0
- package/dist/queue/batch-processing.d.ts +138 -0
- package/dist/queue/dlq-monitoring.d.ts +143 -0
- package/dist/queue/fifo.d.ts +131 -0
- package/dist/queue/index.d.ts +8 -0
- package/dist/queue/management.d.ts +162 -0
- package/dist/queue/queue.test.d.ts +1 -0
- package/dist/resource-mgmt/index.d.ts +44 -0
- package/dist/resource-naming.d.ts +26 -0
- package/dist/s3/index.d.ts +227 -0
- package/dist/schema/index.d.ts +12 -0
- package/dist/security/certificate-manager.d.ts +184 -0
- package/dist/security/index.d.ts +8 -0
- package/dist/security/scanning.d.ts +196 -0
- package/dist/security/secrets-manager.d.ts +204 -0
- package/dist/security/secrets-rotation.d.ts +167 -0
- package/dist/security/security.test.d.ts +1 -0
- package/dist/sms/advanced/ab-testing.d.ts +74 -0
- package/dist/sms/advanced/analytics.d.ts +75 -0
- package/dist/sms/advanced/campaigns.d.ts +96 -0
- package/dist/sms/advanced/chatbot.d.ts +67 -0
- package/dist/sms/advanced/index.d.ts +9 -0
- package/dist/sms/advanced/link-tracking.d.ts +60 -0
- package/dist/sms/advanced/mms.d.ts +60 -0
- package/dist/sms/handlers/__tests__/send.test.d.ts +1 -0
- package/dist/sms/handlers/delivery-status.d.ts +10 -0
- package/dist/sms/handlers/receive.d.ts +10 -0
- package/dist/sms/handlers/send.d.ts +10 -0
- package/dist/sms/index.d.ts +5 -0
- package/dist/stack-diff.d.ts +38 -0
- package/dist/static-site/index.d.ts +49 -0
- package/dist/template-builder.d.ts +42 -0
- package/dist/template-validator.d.ts +28 -0
- package/dist/types.d.ts +2514 -0
- package/dist/utils/cache.d.ts +117 -0
- package/dist/utils/diff.d.ts +52 -0
- package/dist/utils/hash.d.ts +73 -0
- package/dist/utils/index.d.ts +7 -0
- package/dist/utils/parallel.d.ts +78 -0
- package/dist/validators/credentials.d.ts +30 -0
- package/dist/validators/credentials.test.d.ts +4 -0
- package/dist/validators/quotas.d.ts +64 -0
- package/dist/validators/quotas.test.d.ts +4 -0
- package/package.json +2 -2
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database Migration Management
|
|
3
|
+
* Version-controlled schema changes with rollback support
|
|
4
|
+
*/
|
|
5
|
+
export interface Migration {
|
|
6
|
+
id: string;
|
|
7
|
+
version: string;
|
|
8
|
+
name: string;
|
|
9
|
+
description?: string;
|
|
10
|
+
up: string;
|
|
11
|
+
down: string;
|
|
12
|
+
checksum: string;
|
|
13
|
+
appliedAt?: Date;
|
|
14
|
+
rolledBackAt?: Date;
|
|
15
|
+
executionTimeMs?: number;
|
|
16
|
+
}
|
|
17
|
+
export interface MigrationPlan {
|
|
18
|
+
id: string;
|
|
19
|
+
name: string;
|
|
20
|
+
database: DatabaseTarget;
|
|
21
|
+
migrations: Migration[];
|
|
22
|
+
autoApply?: boolean;
|
|
23
|
+
backupBeforeMigration?: boolean;
|
|
24
|
+
testMigrations?: boolean;
|
|
25
|
+
validateRollback?: boolean;
|
|
26
|
+
}
|
|
27
|
+
export interface DatabaseTarget {
|
|
28
|
+
type: 'rds' | 'aurora' | 'dynamodb';
|
|
29
|
+
identifier: string;
|
|
30
|
+
engine?: 'postgres' | 'mysql' | 'mariadb';
|
|
31
|
+
endpoint?: string;
|
|
32
|
+
database?: string;
|
|
33
|
+
}
|
|
34
|
+
export interface MigrationResult {
|
|
35
|
+
success: boolean;
|
|
36
|
+
version: string;
|
|
37
|
+
appliedMigrations: string[];
|
|
38
|
+
failedMigrations: string[];
|
|
39
|
+
executionTimeMs: number;
|
|
40
|
+
error?: string;
|
|
41
|
+
rollbackPerformed?: boolean;
|
|
42
|
+
}
|
|
43
|
+
export interface MigrationStatus {
|
|
44
|
+
currentVersion: string;
|
|
45
|
+
pendingMigrations: Migration[];
|
|
46
|
+
appliedMigrations: Migration[];
|
|
47
|
+
lastMigration?: Migration;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Migration manager
|
|
51
|
+
*/
|
|
52
|
+
export declare class MigrationManager {
|
|
53
|
+
private plans;
|
|
54
|
+
private migrations;
|
|
55
|
+
private planCounter;
|
|
56
|
+
private migrationCounter;
|
|
57
|
+
/**
|
|
58
|
+
* Create migration plan
|
|
59
|
+
*/
|
|
60
|
+
createPlan(plan: Omit<MigrationPlan, 'id'>): MigrationPlan;
|
|
61
|
+
/**
|
|
62
|
+
* Create migration
|
|
63
|
+
*/
|
|
64
|
+
createMigration(migration: Omit<Migration, 'id' | 'checksum'>): Migration;
|
|
65
|
+
/**
|
|
66
|
+
* Create schema change migration
|
|
67
|
+
*/
|
|
68
|
+
createSchemaMigration(options: {
|
|
69
|
+
version: string;
|
|
70
|
+
name: string;
|
|
71
|
+
tableName: string;
|
|
72
|
+
changes: SchemaChange[];
|
|
73
|
+
engine?: 'postgres' | 'mysql';
|
|
74
|
+
}): Migration;
|
|
75
|
+
/**
|
|
76
|
+
* Create data migration
|
|
77
|
+
*/
|
|
78
|
+
createDataMigration(options: {
|
|
79
|
+
version: string;
|
|
80
|
+
name: string;
|
|
81
|
+
description?: string;
|
|
82
|
+
upSQL: string;
|
|
83
|
+
downSQL: string;
|
|
84
|
+
}): Migration;
|
|
85
|
+
/**
|
|
86
|
+
* Add migration to plan
|
|
87
|
+
*/
|
|
88
|
+
addMigrationToPlan(planId: string, migration: Migration): void;
|
|
89
|
+
/**
|
|
90
|
+
* Execute migration plan
|
|
91
|
+
*/
|
|
92
|
+
executePlan(planId: string, dryRun?: boolean): Promise<MigrationResult>;
|
|
93
|
+
/**
|
|
94
|
+
* Rollback migrations
|
|
95
|
+
*/
|
|
96
|
+
private rollbackMigrations;
|
|
97
|
+
/**
|
|
98
|
+
* Get migration status
|
|
99
|
+
*/
|
|
100
|
+
getMigrationStatus(planId: string): MigrationStatus;
|
|
101
|
+
/**
|
|
102
|
+
* Generate schema SQL from changes
|
|
103
|
+
*/
|
|
104
|
+
private generateSchemaSQL;
|
|
105
|
+
/**
|
|
106
|
+
* Generate checksum for migration
|
|
107
|
+
*/
|
|
108
|
+
private generateChecksum;
|
|
109
|
+
/**
|
|
110
|
+
* Validate migration plan
|
|
111
|
+
*/
|
|
112
|
+
validatePlan(planId: string): {
|
|
113
|
+
valid: boolean;
|
|
114
|
+
errors: string[];
|
|
115
|
+
};
|
|
116
|
+
/**
|
|
117
|
+
* Get plan
|
|
118
|
+
*/
|
|
119
|
+
getPlan(id: string): MigrationPlan | undefined;
|
|
120
|
+
/**
|
|
121
|
+
* List plans
|
|
122
|
+
*/
|
|
123
|
+
listPlans(): MigrationPlan[];
|
|
124
|
+
/**
|
|
125
|
+
* Get migration
|
|
126
|
+
*/
|
|
127
|
+
getMigration(id: string): Migration | undefined;
|
|
128
|
+
/**
|
|
129
|
+
* List migrations
|
|
130
|
+
*/
|
|
131
|
+
listMigrations(): Migration[];
|
|
132
|
+
/**
|
|
133
|
+
* Clear all data
|
|
134
|
+
*/
|
|
135
|
+
clear(): void;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Schema change types
|
|
139
|
+
*/
|
|
140
|
+
export interface SchemaChange {
|
|
141
|
+
type: 'add_column' | 'drop_column' | 'modify_column' | 'add_index' | 'drop_index';
|
|
142
|
+
columnName?: string;
|
|
143
|
+
columnType?: string;
|
|
144
|
+
newType?: string;
|
|
145
|
+
nullable?: boolean;
|
|
146
|
+
defaultValue?: string;
|
|
147
|
+
indexName?: string;
|
|
148
|
+
columns?: string[];
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Global migration manager instance
|
|
152
|
+
*/
|
|
153
|
+
export declare const migrationManager: MigrationManager;
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database Performance Monitoring
|
|
3
|
+
* Query performance insights, slow query detection, and optimization
|
|
4
|
+
*/
|
|
5
|
+
export interface PerformanceInsights {
|
|
6
|
+
id: string;
|
|
7
|
+
name: string;
|
|
8
|
+
databaseIdentifier: string;
|
|
9
|
+
enabled: boolean;
|
|
10
|
+
retentionPeriod: number;
|
|
11
|
+
kmsKeyId?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface SlowQueryLog {
|
|
14
|
+
id: string;
|
|
15
|
+
name: string;
|
|
16
|
+
databaseIdentifier: string;
|
|
17
|
+
enabled: boolean;
|
|
18
|
+
logDestination: 'cloudwatch' | 's3';
|
|
19
|
+
cloudwatchLogGroup?: string;
|
|
20
|
+
s3Bucket?: string;
|
|
21
|
+
s3Prefix?: string;
|
|
22
|
+
minExecutionTime?: number;
|
|
23
|
+
}
|
|
24
|
+
export interface QueryMetric {
|
|
25
|
+
id: string;
|
|
26
|
+
queryId: string;
|
|
27
|
+
sql: string;
|
|
28
|
+
executionCount: number;
|
|
29
|
+
avgExecutionTime: number;
|
|
30
|
+
maxExecutionTime: number;
|
|
31
|
+
minExecutionTime: number;
|
|
32
|
+
totalCPUTime: number;
|
|
33
|
+
totalIOWait: number;
|
|
34
|
+
totalLockWait: number;
|
|
35
|
+
rowsExamined: number;
|
|
36
|
+
rowsReturned: number;
|
|
37
|
+
timestamp: Date;
|
|
38
|
+
}
|
|
39
|
+
export interface PerformanceReport {
|
|
40
|
+
id: string;
|
|
41
|
+
name: string;
|
|
42
|
+
databaseIdentifier: string;
|
|
43
|
+
reportType: 'daily' | 'weekly' | 'monthly';
|
|
44
|
+
metrics: PerformanceMetrics;
|
|
45
|
+
topQueries: QueryMetric[];
|
|
46
|
+
slowQueries: QueryMetric[];
|
|
47
|
+
recommendations: PerformanceRecommendation[];
|
|
48
|
+
generatedAt: Date;
|
|
49
|
+
}
|
|
50
|
+
export interface PerformanceMetrics {
|
|
51
|
+
avgCPU: number;
|
|
52
|
+
maxCPU: number;
|
|
53
|
+
avgConnections: number;
|
|
54
|
+
maxConnections: number;
|
|
55
|
+
avgReadIOPS: number;
|
|
56
|
+
avgWriteIOPS: number;
|
|
57
|
+
avgReadThroughput: number;
|
|
58
|
+
avgWriteThroughput: number;
|
|
59
|
+
avgReadLatency: number;
|
|
60
|
+
avgWriteLatency: number;
|
|
61
|
+
cacheHitRatio: number;
|
|
62
|
+
deadlocks: number;
|
|
63
|
+
longRunningTransactions: number;
|
|
64
|
+
}
|
|
65
|
+
export interface PerformanceRecommendation {
|
|
66
|
+
type: 'index' | 'query' | 'schema' | 'configuration' | 'scaling';
|
|
67
|
+
severity: 'high' | 'medium' | 'low';
|
|
68
|
+
title: string;
|
|
69
|
+
description: string;
|
|
70
|
+
impact: string;
|
|
71
|
+
effort: 'low' | 'medium' | 'high';
|
|
72
|
+
sqlExample?: string;
|
|
73
|
+
}
|
|
74
|
+
export interface IndexRecommendation {
|
|
75
|
+
id: string;
|
|
76
|
+
tableName: string;
|
|
77
|
+
columns: string[];
|
|
78
|
+
reason: string;
|
|
79
|
+
estimatedImprovement: number;
|
|
80
|
+
estimatedSize: number;
|
|
81
|
+
createSQL: string;
|
|
82
|
+
}
|
|
83
|
+
export interface QueryAnalysis {
|
|
84
|
+
id: string;
|
|
85
|
+
queryId: string;
|
|
86
|
+
sql: string;
|
|
87
|
+
executionPlan: ExecutionPlanNode[];
|
|
88
|
+
bottlenecks: Bottleneck[];
|
|
89
|
+
recommendations: string[];
|
|
90
|
+
estimatedCost: number;
|
|
91
|
+
}
|
|
92
|
+
export interface ExecutionPlanNode {
|
|
93
|
+
id: number;
|
|
94
|
+
operation: string;
|
|
95
|
+
table?: string;
|
|
96
|
+
rows: number;
|
|
97
|
+
cost: number;
|
|
98
|
+
children?: ExecutionPlanNode[];
|
|
99
|
+
}
|
|
100
|
+
export interface Bottleneck {
|
|
101
|
+
type: 'full_table_scan' | 'missing_index' | 'suboptimal_join' | 'high_cardinality';
|
|
102
|
+
severity: 'critical' | 'warning' | 'info';
|
|
103
|
+
description: string;
|
|
104
|
+
tableName?: string;
|
|
105
|
+
columnName?: string;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Performance manager
|
|
109
|
+
*/
|
|
110
|
+
export declare class PerformanceManager {
|
|
111
|
+
private insights;
|
|
112
|
+
private slowQueryLogs;
|
|
113
|
+
private queryMetrics;
|
|
114
|
+
private reports;
|
|
115
|
+
private indexRecommendations;
|
|
116
|
+
private insightsCounter;
|
|
117
|
+
private logCounter;
|
|
118
|
+
private metricCounter;
|
|
119
|
+
private reportCounter;
|
|
120
|
+
private recommendationCounter;
|
|
121
|
+
/**
|
|
122
|
+
* Enable performance insights
|
|
123
|
+
*/
|
|
124
|
+
enablePerformanceInsights(options: {
|
|
125
|
+
name: string;
|
|
126
|
+
databaseIdentifier: string;
|
|
127
|
+
retentionPeriod?: number;
|
|
128
|
+
kmsKeyId?: string;
|
|
129
|
+
}): PerformanceInsights;
|
|
130
|
+
/**
|
|
131
|
+
* Enable slow query log
|
|
132
|
+
*/
|
|
133
|
+
enableSlowQueryLog(options: {
|
|
134
|
+
name: string;
|
|
135
|
+
databaseIdentifier: string;
|
|
136
|
+
logDestination: 'cloudwatch' | 's3';
|
|
137
|
+
cloudwatchLogGroup?: string;
|
|
138
|
+
s3Bucket?: string;
|
|
139
|
+
minExecutionTime?: number;
|
|
140
|
+
}): SlowQueryLog;
|
|
141
|
+
/**
|
|
142
|
+
* Record query metric
|
|
143
|
+
*/
|
|
144
|
+
recordQueryMetric(metric: Omit<QueryMetric, 'id' | 'timestamp'>): QueryMetric;
|
|
145
|
+
/**
|
|
146
|
+
* Generate performance report
|
|
147
|
+
*/
|
|
148
|
+
generatePerformanceReport(options: {
|
|
149
|
+
name: string;
|
|
150
|
+
databaseIdentifier: string;
|
|
151
|
+
reportType: 'daily' | 'weekly' | 'monthly';
|
|
152
|
+
}): PerformanceReport;
|
|
153
|
+
/**
|
|
154
|
+
* Generate recommendations based on metrics
|
|
155
|
+
*/
|
|
156
|
+
private generateRecommendations;
|
|
157
|
+
/**
|
|
158
|
+
* Analyze query
|
|
159
|
+
*/
|
|
160
|
+
analyzeQuery(sql: string): QueryAnalysis;
|
|
161
|
+
/**
|
|
162
|
+
* Recommend index
|
|
163
|
+
*/
|
|
164
|
+
recommendIndex(options: {
|
|
165
|
+
tableName: string;
|
|
166
|
+
columns: string[];
|
|
167
|
+
reason: string;
|
|
168
|
+
estimatedImprovement?: number;
|
|
169
|
+
}): IndexRecommendation;
|
|
170
|
+
/**
|
|
171
|
+
* Get performance insights
|
|
172
|
+
*/
|
|
173
|
+
getInsights(id: string): PerformanceInsights | undefined;
|
|
174
|
+
/**
|
|
175
|
+
* List performance insights
|
|
176
|
+
*/
|
|
177
|
+
listInsights(): PerformanceInsights[];
|
|
178
|
+
/**
|
|
179
|
+
* Get slow query log
|
|
180
|
+
*/
|
|
181
|
+
getSlowQueryLog(id: string): SlowQueryLog | undefined;
|
|
182
|
+
/**
|
|
183
|
+
* List slow query logs
|
|
184
|
+
*/
|
|
185
|
+
listSlowQueryLogs(): SlowQueryLog[];
|
|
186
|
+
/**
|
|
187
|
+
* Get report
|
|
188
|
+
*/
|
|
189
|
+
getReport(id: string): PerformanceReport | undefined;
|
|
190
|
+
/**
|
|
191
|
+
* List reports
|
|
192
|
+
*/
|
|
193
|
+
listReports(): PerformanceReport[];
|
|
194
|
+
/**
|
|
195
|
+
* List index recommendations
|
|
196
|
+
*/
|
|
197
|
+
listIndexRecommendations(): IndexRecommendation[];
|
|
198
|
+
/**
|
|
199
|
+
* Generate CloudFormation for Performance Insights
|
|
200
|
+
*/
|
|
201
|
+
generatePerformanceInsightsCF(insights: PerformanceInsights): any;
|
|
202
|
+
/**
|
|
203
|
+
* Generate CloudWatch alarm for slow queries
|
|
204
|
+
*/
|
|
205
|
+
generateSlowQueryAlarmCF(options: {
|
|
206
|
+
alarmName: string;
|
|
207
|
+
logGroupName: string;
|
|
208
|
+
threshold: number;
|
|
209
|
+
snsTopicArn?: string;
|
|
210
|
+
}): any;
|
|
211
|
+
/**
|
|
212
|
+
* Clear all data
|
|
213
|
+
*/
|
|
214
|
+
clear(): void;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Global performance manager instance
|
|
218
|
+
*/
|
|
219
|
+
export declare const performanceManager: PerformanceManager;
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database Replicas & Connection Pooling
|
|
3
|
+
* Read replica management and RDS Proxy for connection pooling
|
|
4
|
+
*/
|
|
5
|
+
export interface ReadReplica {
|
|
6
|
+
id: string;
|
|
7
|
+
name: string;
|
|
8
|
+
sourceDatabase: string;
|
|
9
|
+
region: string;
|
|
10
|
+
instanceClass: string;
|
|
11
|
+
multiAZ?: boolean;
|
|
12
|
+
autoMinorVersionUpgrade?: boolean;
|
|
13
|
+
backupRetentionPeriod?: number;
|
|
14
|
+
preferredBackupWindow?: string;
|
|
15
|
+
preferredMaintenanceWindow?: string;
|
|
16
|
+
replicationLag?: number;
|
|
17
|
+
status?: 'creating' | 'available' | 'failing-over' | 'failed';
|
|
18
|
+
}
|
|
19
|
+
export interface ReplicationGroup {
|
|
20
|
+
id: string;
|
|
21
|
+
name: string;
|
|
22
|
+
primaryDatabase: string;
|
|
23
|
+
replicas: ReadReplica[];
|
|
24
|
+
loadBalancing?: LoadBalancingStrategy;
|
|
25
|
+
failoverEnabled?: boolean;
|
|
26
|
+
autoScaling?: AutoScalingConfig;
|
|
27
|
+
}
|
|
28
|
+
export interface LoadBalancingStrategy {
|
|
29
|
+
type: 'round-robin' | 'least-connections' | 'weighted' | 'latency-based';
|
|
30
|
+
weights?: Record<string, number>;
|
|
31
|
+
}
|
|
32
|
+
export interface AutoScalingConfig {
|
|
33
|
+
enabled: boolean;
|
|
34
|
+
minReplicas: number;
|
|
35
|
+
maxReplicas: number;
|
|
36
|
+
targetCPU?: number;
|
|
37
|
+
targetConnections?: number;
|
|
38
|
+
scaleUpCooldown?: number;
|
|
39
|
+
scaleDownCooldown?: number;
|
|
40
|
+
}
|
|
41
|
+
export interface RDSProxy {
|
|
42
|
+
id: string;
|
|
43
|
+
name: string;
|
|
44
|
+
engineFamily: 'MYSQL' | 'POSTGRESQL' | 'SQLSERVER';
|
|
45
|
+
targetDatabase: string;
|
|
46
|
+
maxConnectionsPercent?: number;
|
|
47
|
+
maxIdleConnectionsPercent?: number;
|
|
48
|
+
connectionBorrowTimeout?: number;
|
|
49
|
+
sessionPinningFilters?: SessionPinningFilter[];
|
|
50
|
+
requireTLS?: boolean;
|
|
51
|
+
idleClientTimeout?: number;
|
|
52
|
+
vpcSubnetIds: string[];
|
|
53
|
+
securityGroupIds: string[];
|
|
54
|
+
secretArn?: string;
|
|
55
|
+
}
|
|
56
|
+
export type SessionPinningFilter = 'EXCLUDE_VARIABLE_SETS';
|
|
57
|
+
export interface ProxyTarget {
|
|
58
|
+
id: string;
|
|
59
|
+
proxyId: string;
|
|
60
|
+
targetArn: string;
|
|
61
|
+
targetType: 'RDS_INSTANCE' | 'RDS_CLUSTER' | 'TRACKED_CLUSTER';
|
|
62
|
+
isWritable: boolean;
|
|
63
|
+
weight?: number;
|
|
64
|
+
}
|
|
65
|
+
export interface ConnectionPoolConfig {
|
|
66
|
+
minPoolSize: number;
|
|
67
|
+
maxPoolSize: number;
|
|
68
|
+
connectionTimeout: number;
|
|
69
|
+
idleTimeout: number;
|
|
70
|
+
maxLifetime?: number;
|
|
71
|
+
statementTimeout?: number;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Replica manager
|
|
75
|
+
*/
|
|
76
|
+
export declare class ReplicaManager {
|
|
77
|
+
private replicas;
|
|
78
|
+
private replicationGroups;
|
|
79
|
+
private proxies;
|
|
80
|
+
private proxyTargets;
|
|
81
|
+
private replicaCounter;
|
|
82
|
+
private groupCounter;
|
|
83
|
+
private proxyCounter;
|
|
84
|
+
private targetCounter;
|
|
85
|
+
/**
|
|
86
|
+
* Create read replica
|
|
87
|
+
*/
|
|
88
|
+
createReplica(replica: Omit<ReadReplica, 'id'>): ReadReplica;
|
|
89
|
+
/**
|
|
90
|
+
* Create read replica for RDS instance
|
|
91
|
+
*/
|
|
92
|
+
createRDSReplica(options: {
|
|
93
|
+
sourceDatabase: string;
|
|
94
|
+
name: string;
|
|
95
|
+
region?: string;
|
|
96
|
+
instanceClass?: string;
|
|
97
|
+
multiAZ?: boolean;
|
|
98
|
+
}): ReadReplica;
|
|
99
|
+
/**
|
|
100
|
+
* Create cross-region replica
|
|
101
|
+
*/
|
|
102
|
+
createCrossRegionReplica(options: {
|
|
103
|
+
sourceDatabase: string;
|
|
104
|
+
name: string;
|
|
105
|
+
targetRegion: string;
|
|
106
|
+
instanceClass?: string;
|
|
107
|
+
encrypted?: boolean;
|
|
108
|
+
}): ReadReplica;
|
|
109
|
+
/**
|
|
110
|
+
* Create replication group
|
|
111
|
+
*/
|
|
112
|
+
createReplicationGroup(group: Omit<ReplicationGroup, 'id'>): ReplicationGroup;
|
|
113
|
+
/**
|
|
114
|
+
* Create replication group with auto-scaling
|
|
115
|
+
*/
|
|
116
|
+
createAutoScalingReplicationGroup(options: {
|
|
117
|
+
name: string;
|
|
118
|
+
primaryDatabase: string;
|
|
119
|
+
minReplicas: number;
|
|
120
|
+
maxReplicas: number;
|
|
121
|
+
targetCPU?: number;
|
|
122
|
+
loadBalancing?: LoadBalancingStrategy;
|
|
123
|
+
}): ReplicationGroup;
|
|
124
|
+
/**
|
|
125
|
+
* Add replica to group
|
|
126
|
+
*/
|
|
127
|
+
addReplicaToGroup(groupId: string, replica: ReadReplica): void;
|
|
128
|
+
/**
|
|
129
|
+
* Create RDS Proxy
|
|
130
|
+
*/
|
|
131
|
+
createProxy(proxy: Omit<RDSProxy, 'id'>): RDSProxy;
|
|
132
|
+
/**
|
|
133
|
+
* Create RDS Proxy for connection pooling
|
|
134
|
+
*/
|
|
135
|
+
createConnectionPoolProxy(options: {
|
|
136
|
+
name: string;
|
|
137
|
+
engineFamily: 'MYSQL' | 'POSTGRESQL' | 'SQLSERVER';
|
|
138
|
+
targetDatabase: string;
|
|
139
|
+
vpcSubnetIds: string[];
|
|
140
|
+
securityGroupIds: string[];
|
|
141
|
+
secretArn: string;
|
|
142
|
+
maxConnections?: number;
|
|
143
|
+
}): RDSProxy;
|
|
144
|
+
/**
|
|
145
|
+
* Create serverless proxy (optimized for Lambda)
|
|
146
|
+
*/
|
|
147
|
+
createServerlessProxy(options: {
|
|
148
|
+
name: string;
|
|
149
|
+
engineFamily: 'MYSQL' | 'POSTGRESQL' | 'SQLSERVER';
|
|
150
|
+
targetDatabase: string;
|
|
151
|
+
vpcSubnetIds: string[];
|
|
152
|
+
securityGroupIds: string[];
|
|
153
|
+
secretArn: string;
|
|
154
|
+
}): RDSProxy;
|
|
155
|
+
/**
|
|
156
|
+
* Add proxy target
|
|
157
|
+
*/
|
|
158
|
+
addProxyTarget(target: Omit<ProxyTarget, 'id'>): ProxyTarget;
|
|
159
|
+
/**
|
|
160
|
+
* Promote replica to primary
|
|
161
|
+
*/
|
|
162
|
+
promoteReplica(replicaId: string): {
|
|
163
|
+
success: boolean;
|
|
164
|
+
message: string;
|
|
165
|
+
};
|
|
166
|
+
/**
|
|
167
|
+
* Get replication lag for replica
|
|
168
|
+
*/
|
|
169
|
+
getReplicationLag(replicaId: string): number;
|
|
170
|
+
/**
|
|
171
|
+
* Get replica
|
|
172
|
+
*/
|
|
173
|
+
getReplica(id: string): ReadReplica | undefined;
|
|
174
|
+
/**
|
|
175
|
+
* List replicas
|
|
176
|
+
*/
|
|
177
|
+
listReplicas(): ReadReplica[];
|
|
178
|
+
/**
|
|
179
|
+
* Get replication group
|
|
180
|
+
*/
|
|
181
|
+
getReplicationGroup(id: string): ReplicationGroup | undefined;
|
|
182
|
+
/**
|
|
183
|
+
* List replication groups
|
|
184
|
+
*/
|
|
185
|
+
listReplicationGroups(): ReplicationGroup[];
|
|
186
|
+
/**
|
|
187
|
+
* Get proxy
|
|
188
|
+
*/
|
|
189
|
+
getProxy(id: string): RDSProxy | undefined;
|
|
190
|
+
/**
|
|
191
|
+
* List proxies
|
|
192
|
+
*/
|
|
193
|
+
listProxies(): RDSProxy[];
|
|
194
|
+
/**
|
|
195
|
+
* Generate CloudFormation for read replica
|
|
196
|
+
*/
|
|
197
|
+
generateReplicaCF(replica: ReadReplica): any;
|
|
198
|
+
/**
|
|
199
|
+
* Generate CloudFormation for RDS Proxy
|
|
200
|
+
*/
|
|
201
|
+
generateProxyCF(proxy: RDSProxy): any;
|
|
202
|
+
/**
|
|
203
|
+
* Generate CloudFormation for proxy target
|
|
204
|
+
*/
|
|
205
|
+
generateProxyTargetCF(target: ProxyTarget, proxy: RDSProxy): any;
|
|
206
|
+
/**
|
|
207
|
+
* Generate CloudFormation for proxy IAM role
|
|
208
|
+
*/
|
|
209
|
+
generateProxyRoleCF(): any;
|
|
210
|
+
/**
|
|
211
|
+
* Clear all data
|
|
212
|
+
*/
|
|
213
|
+
clear(): void;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Global replica manager instance
|
|
217
|
+
*/
|
|
218
|
+
export declare const replicaManager: ReplicaManager;
|