@ts-cloud/core 0.2.3 → 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,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database User Management
|
|
3
|
+
* User creation, permissions, and access control
|
|
4
|
+
*/
|
|
5
|
+
export interface DatabaseUser {
|
|
6
|
+
id: string;
|
|
7
|
+
username: string;
|
|
8
|
+
database: string;
|
|
9
|
+
privileges: DatabasePrivilege[];
|
|
10
|
+
passwordSecretArn?: string;
|
|
11
|
+
createdAt: Date;
|
|
12
|
+
lastRotated?: Date;
|
|
13
|
+
rotationEnabled?: boolean;
|
|
14
|
+
rotationDays?: number;
|
|
15
|
+
}
|
|
16
|
+
export interface DatabasePrivilege {
|
|
17
|
+
database?: string;
|
|
18
|
+
table?: string;
|
|
19
|
+
privileges: PrivilegeType[];
|
|
20
|
+
}
|
|
21
|
+
export type PrivilegeType = 'SELECT' | 'INSERT' | 'UPDATE' | 'DELETE' | 'CREATE' | 'DROP' | 'ALTER' | 'INDEX' | 'EXECUTE' | 'ALL';
|
|
22
|
+
export interface UserRole {
|
|
23
|
+
id: string;
|
|
24
|
+
name: string;
|
|
25
|
+
description?: string;
|
|
26
|
+
privileges: DatabasePrivilege[];
|
|
27
|
+
users: string[];
|
|
28
|
+
}
|
|
29
|
+
export interface AccessAudit {
|
|
30
|
+
id: string;
|
|
31
|
+
username: string;
|
|
32
|
+
action: 'LOGIN' | 'QUERY' | 'MODIFY' | 'GRANT' | 'REVOKE';
|
|
33
|
+
database?: string;
|
|
34
|
+
table?: string;
|
|
35
|
+
query?: string;
|
|
36
|
+
timestamp: Date;
|
|
37
|
+
success: boolean;
|
|
38
|
+
ipAddress?: string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Database user manager
|
|
42
|
+
*/
|
|
43
|
+
export declare class DatabaseUserManager {
|
|
44
|
+
private users;
|
|
45
|
+
private roles;
|
|
46
|
+
private audits;
|
|
47
|
+
private userCounter;
|
|
48
|
+
private roleCounter;
|
|
49
|
+
private auditCounter;
|
|
50
|
+
/**
|
|
51
|
+
* Create database user
|
|
52
|
+
*/
|
|
53
|
+
createUser(user: Omit<DatabaseUser, 'id' | 'createdAt'>): DatabaseUser;
|
|
54
|
+
/**
|
|
55
|
+
* Create read-only user
|
|
56
|
+
*/
|
|
57
|
+
createReadOnlyUser(options: {
|
|
58
|
+
username: string;
|
|
59
|
+
database: string;
|
|
60
|
+
passwordSecretArn?: string;
|
|
61
|
+
tables?: string[];
|
|
62
|
+
}): DatabaseUser;
|
|
63
|
+
/**
|
|
64
|
+
* Create read-write user
|
|
65
|
+
*/
|
|
66
|
+
createReadWriteUser(options: {
|
|
67
|
+
username: string;
|
|
68
|
+
database: string;
|
|
69
|
+
passwordSecretArn?: string;
|
|
70
|
+
tables?: string[];
|
|
71
|
+
}): DatabaseUser;
|
|
72
|
+
/**
|
|
73
|
+
* Create admin user
|
|
74
|
+
*/
|
|
75
|
+
createAdminUser(options: {
|
|
76
|
+
username: string;
|
|
77
|
+
database: string;
|
|
78
|
+
passwordSecretArn?: string;
|
|
79
|
+
}): DatabaseUser;
|
|
80
|
+
/**
|
|
81
|
+
* Create application user with specific table access
|
|
82
|
+
*/
|
|
83
|
+
createApplicationUser(options: {
|
|
84
|
+
username: string;
|
|
85
|
+
database: string;
|
|
86
|
+
tables: {
|
|
87
|
+
name: string;
|
|
88
|
+
privileges: PrivilegeType[];
|
|
89
|
+
}[];
|
|
90
|
+
passwordSecretArn?: string;
|
|
91
|
+
}): DatabaseUser;
|
|
92
|
+
/**
|
|
93
|
+
* Create user role
|
|
94
|
+
*/
|
|
95
|
+
createRole(role: Omit<UserRole, 'id' | 'users'>): UserRole;
|
|
96
|
+
/**
|
|
97
|
+
* Assign user to role
|
|
98
|
+
*/
|
|
99
|
+
assignUserToRole(userId: string, roleId: string): void;
|
|
100
|
+
/**
|
|
101
|
+
* Grant privileges to user
|
|
102
|
+
*/
|
|
103
|
+
grantPrivileges(userId: string, privileges: DatabasePrivilege[]): {
|
|
104
|
+
success: boolean;
|
|
105
|
+
message: string;
|
|
106
|
+
};
|
|
107
|
+
/**
|
|
108
|
+
* Revoke privileges from user
|
|
109
|
+
*/
|
|
110
|
+
revokePrivileges(userId: string, privileges: DatabasePrivilege[]): {
|
|
111
|
+
success: boolean;
|
|
112
|
+
message: string;
|
|
113
|
+
};
|
|
114
|
+
/**
|
|
115
|
+
* Rotate user password
|
|
116
|
+
*/
|
|
117
|
+
rotatePassword(userId: string): {
|
|
118
|
+
success: boolean;
|
|
119
|
+
newSecretArn?: string;
|
|
120
|
+
};
|
|
121
|
+
/**
|
|
122
|
+
* Check if password rotation needed
|
|
123
|
+
*/
|
|
124
|
+
needsPasswordRotation(userId: string): boolean;
|
|
125
|
+
/**
|
|
126
|
+
* Audit access
|
|
127
|
+
*/
|
|
128
|
+
auditAccess(audit: Omit<AccessAudit, 'id' | 'timestamp'>): AccessAudit;
|
|
129
|
+
/**
|
|
130
|
+
* Get user access history
|
|
131
|
+
*/
|
|
132
|
+
getUserAccessHistory(username: string, limit?: number): AccessAudit[];
|
|
133
|
+
/**
|
|
134
|
+
* Get failed login attempts
|
|
135
|
+
*/
|
|
136
|
+
getFailedLoginAttempts(username: string, hours?: number): AccessAudit[];
|
|
137
|
+
/**
|
|
138
|
+
* Generate SQL for user creation
|
|
139
|
+
*/
|
|
140
|
+
generateCreateUserSQL(user: DatabaseUser, engine?: 'postgres' | 'mysql'): string;
|
|
141
|
+
/**
|
|
142
|
+
* Get user
|
|
143
|
+
*/
|
|
144
|
+
getUser(id: string): DatabaseUser | undefined;
|
|
145
|
+
/**
|
|
146
|
+
* List users
|
|
147
|
+
*/
|
|
148
|
+
listUsers(): DatabaseUser[];
|
|
149
|
+
/**
|
|
150
|
+
* Get role
|
|
151
|
+
*/
|
|
152
|
+
getRole(id: string): UserRole | undefined;
|
|
153
|
+
/**
|
|
154
|
+
* List roles
|
|
155
|
+
*/
|
|
156
|
+
listRoles(): UserRole[];
|
|
157
|
+
/**
|
|
158
|
+
* Clear all data
|
|
159
|
+
*/
|
|
160
|
+
clear(): void;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Global database user manager instance
|
|
164
|
+
*/
|
|
165
|
+
export declare const databaseUserManager: DatabaseUserManager;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { CloudFormationResource } from '@ts-cloud/aws-types';
|
|
2
|
+
export interface ResourceNode {
|
|
3
|
+
logicalId: string;
|
|
4
|
+
resource: CloudFormationResource;
|
|
5
|
+
dependencies: Set<string>;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Dependency Graph for CloudFormation resources
|
|
9
|
+
* Ensures resources are created in the correct order
|
|
10
|
+
*/
|
|
11
|
+
export declare class DependencyGraph {
|
|
12
|
+
private nodes;
|
|
13
|
+
/**
|
|
14
|
+
* Add a resource to the dependency graph
|
|
15
|
+
*/
|
|
16
|
+
addResource(logicalId: string, resource: CloudFormationResource): void;
|
|
17
|
+
/**
|
|
18
|
+
* Extract dependencies from a resource
|
|
19
|
+
*/
|
|
20
|
+
private extractDependencies;
|
|
21
|
+
/**
|
|
22
|
+
* Find all Ref references in an object
|
|
23
|
+
*/
|
|
24
|
+
private findReferences;
|
|
25
|
+
/**
|
|
26
|
+
* Perform topological sort to determine resource creation order
|
|
27
|
+
*/
|
|
28
|
+
topologicalSort(): string[];
|
|
29
|
+
/**
|
|
30
|
+
* Validate that all dependencies exist
|
|
31
|
+
*/
|
|
32
|
+
validate(): void;
|
|
33
|
+
/**
|
|
34
|
+
* Get resources that depend on a given resource
|
|
35
|
+
*/
|
|
36
|
+
getDependents(logicalId: string): string[];
|
|
37
|
+
}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A/B Testing Infrastructure
|
|
3
|
+
* Traffic splitting based on user attributes, headers, or cookies
|
|
4
|
+
*/
|
|
5
|
+
export interface ABTest {
|
|
6
|
+
id: string;
|
|
7
|
+
name: string;
|
|
8
|
+
description?: string;
|
|
9
|
+
variants: ABVariant[];
|
|
10
|
+
routingStrategy: RoutingStrategy;
|
|
11
|
+
startTime: Date;
|
|
12
|
+
endTime?: Date;
|
|
13
|
+
status: 'draft' | 'active' | 'paused' | 'completed';
|
|
14
|
+
metrics?: ABMetrics;
|
|
15
|
+
winner?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface ABVariant {
|
|
18
|
+
id: string;
|
|
19
|
+
name: string;
|
|
20
|
+
description?: string;
|
|
21
|
+
trafficPercentage: number;
|
|
22
|
+
targetGroupArn?: string;
|
|
23
|
+
functionVersionArn?: string;
|
|
24
|
+
originId?: string;
|
|
25
|
+
weight: number;
|
|
26
|
+
}
|
|
27
|
+
export interface RoutingStrategy {
|
|
28
|
+
type: 'random' | 'cookie' | 'header' | 'geo' | 'device' | 'user-attribute';
|
|
29
|
+
cookieName?: string;
|
|
30
|
+
headerName?: string;
|
|
31
|
+
attributeName?: string;
|
|
32
|
+
stickySession?: boolean;
|
|
33
|
+
sessionDuration?: number;
|
|
34
|
+
}
|
|
35
|
+
export interface ABMetrics {
|
|
36
|
+
variants: Record<string, VariantMetrics>;
|
|
37
|
+
totalRequests: number;
|
|
38
|
+
startTime: Date;
|
|
39
|
+
lastUpdated: Date;
|
|
40
|
+
}
|
|
41
|
+
export interface VariantMetrics {
|
|
42
|
+
requests: number;
|
|
43
|
+
conversions: number;
|
|
44
|
+
conversionRate: number;
|
|
45
|
+
averageLatency: number;
|
|
46
|
+
errorRate: number;
|
|
47
|
+
revenue?: number;
|
|
48
|
+
customMetrics?: Record<string, number>;
|
|
49
|
+
}
|
|
50
|
+
export interface ABTestResult {
|
|
51
|
+
testId: string;
|
|
52
|
+
winningVariant: string;
|
|
53
|
+
confidence: number;
|
|
54
|
+
improvement: number;
|
|
55
|
+
statisticalSignificance: boolean;
|
|
56
|
+
metrics: ABMetrics;
|
|
57
|
+
recommendation: string;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* A/B testing manager
|
|
61
|
+
*/
|
|
62
|
+
export declare class ABTestManager {
|
|
63
|
+
private tests;
|
|
64
|
+
private testCounter;
|
|
65
|
+
/**
|
|
66
|
+
* Create A/B test
|
|
67
|
+
*/
|
|
68
|
+
createTest(test: Omit<ABTest, 'id'>): ABTest;
|
|
69
|
+
/**
|
|
70
|
+
* Create simple A/B test (control vs variant)
|
|
71
|
+
*/
|
|
72
|
+
createSimpleABTest(options: {
|
|
73
|
+
name: string;
|
|
74
|
+
description?: string;
|
|
75
|
+
controlTargetGroupArn: string;
|
|
76
|
+
variantTargetGroupArn: string;
|
|
77
|
+
variantTrafficPercentage?: number;
|
|
78
|
+
stickySession?: boolean;
|
|
79
|
+
}): ABTest;
|
|
80
|
+
/**
|
|
81
|
+
* Create multivariate test
|
|
82
|
+
*/
|
|
83
|
+
createMultivariateTest(options: {
|
|
84
|
+
name: string;
|
|
85
|
+
description?: string;
|
|
86
|
+
variants: Array<{
|
|
87
|
+
name: string;
|
|
88
|
+
description?: string;
|
|
89
|
+
targetGroupArn: string;
|
|
90
|
+
trafficPercentage: number;
|
|
91
|
+
}>;
|
|
92
|
+
routingStrategy?: RoutingStrategy;
|
|
93
|
+
}): ABTest;
|
|
94
|
+
/**
|
|
95
|
+
* Create header-based A/B test
|
|
96
|
+
*/
|
|
97
|
+
createHeaderBasedTest(options: {
|
|
98
|
+
name: string;
|
|
99
|
+
controlTargetGroupArn: string;
|
|
100
|
+
variantTargetGroupArn: string;
|
|
101
|
+
headerName: string;
|
|
102
|
+
headerValue: string;
|
|
103
|
+
}): ABTest;
|
|
104
|
+
/**
|
|
105
|
+
* Create geo-based A/B test
|
|
106
|
+
*/
|
|
107
|
+
createGeoBasedTest(options: {
|
|
108
|
+
name: string;
|
|
109
|
+
controlTargetGroupArn: string;
|
|
110
|
+
variantTargetGroupArn: string;
|
|
111
|
+
regions: string[];
|
|
112
|
+
}): ABTest;
|
|
113
|
+
/**
|
|
114
|
+
* Start A/B test
|
|
115
|
+
*/
|
|
116
|
+
startTest(testId: string): void;
|
|
117
|
+
/**
|
|
118
|
+
* Pause A/B test
|
|
119
|
+
*/
|
|
120
|
+
pauseTest(testId: string): void;
|
|
121
|
+
/**
|
|
122
|
+
* Update traffic split
|
|
123
|
+
*/
|
|
124
|
+
updateTrafficSplit(testId: string, variantId: string, newPercentage: number): void;
|
|
125
|
+
/**
|
|
126
|
+
* Analyze test results
|
|
127
|
+
*/
|
|
128
|
+
analyzeResults(testId: string): ABTestResult;
|
|
129
|
+
/**
|
|
130
|
+
* Declare winner and route all traffic
|
|
131
|
+
*/
|
|
132
|
+
declareWinner(testId: string, variantId: string): void;
|
|
133
|
+
/**
|
|
134
|
+
* Collect metrics for test
|
|
135
|
+
*/
|
|
136
|
+
private collectMetrics;
|
|
137
|
+
/**
|
|
138
|
+
* Generate recommendation
|
|
139
|
+
*/
|
|
140
|
+
private generateRecommendation;
|
|
141
|
+
/**
|
|
142
|
+
* Get test
|
|
143
|
+
*/
|
|
144
|
+
getTest(id: string): ABTest | undefined;
|
|
145
|
+
/**
|
|
146
|
+
* List tests
|
|
147
|
+
*/
|
|
148
|
+
listTests(): ABTest[];
|
|
149
|
+
/**
|
|
150
|
+
* Generate CloudFormation for ALB weighted routing
|
|
151
|
+
*/
|
|
152
|
+
generateALBListenerRuleCF(test: ABTest): any;
|
|
153
|
+
/**
|
|
154
|
+
* Generate Lambda@Edge function for A/B testing
|
|
155
|
+
*/
|
|
156
|
+
generateLambdaEdgeFunction(test: ABTest): string;
|
|
157
|
+
/**
|
|
158
|
+
* Clear all data
|
|
159
|
+
*/
|
|
160
|
+
clear(): void;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Global A/B testing manager instance
|
|
164
|
+
*/
|
|
165
|
+
export declare const abTestManager: ABTestManager;
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Blue/Green Deployment Strategy
|
|
3
|
+
* Zero-downtime deployments with instant rollback capability
|
|
4
|
+
*/
|
|
5
|
+
export interface BlueGreenDeployment {
|
|
6
|
+
id: string;
|
|
7
|
+
name: string;
|
|
8
|
+
blueEnvironment: Environment;
|
|
9
|
+
greenEnvironment: Environment;
|
|
10
|
+
activeEnvironment: 'blue' | 'green';
|
|
11
|
+
routingConfig: RoutingConfig;
|
|
12
|
+
autoPromote?: boolean;
|
|
13
|
+
autoRollback?: boolean;
|
|
14
|
+
healthCheckConfig?: HealthCheckConfig;
|
|
15
|
+
}
|
|
16
|
+
export interface Environment {
|
|
17
|
+
name: string;
|
|
18
|
+
targetGroupArn: string;
|
|
19
|
+
autoScalingGroupName?: string;
|
|
20
|
+
taskDefinitionArn?: string;
|
|
21
|
+
functionVersionArn?: string;
|
|
22
|
+
instanceIds?: string[];
|
|
23
|
+
weight?: number;
|
|
24
|
+
}
|
|
25
|
+
export interface RoutingConfig {
|
|
26
|
+
type: 'alb' | 'route53' | 'cloudfront' | 'api-gateway';
|
|
27
|
+
listenerArn?: string;
|
|
28
|
+
hostedZoneId?: string;
|
|
29
|
+
distributionId?: string;
|
|
30
|
+
apiId?: string;
|
|
31
|
+
switchoverTimeSeconds?: number;
|
|
32
|
+
}
|
|
33
|
+
export interface HealthCheckConfig {
|
|
34
|
+
healthyThreshold: number;
|
|
35
|
+
unhealthyThreshold: number;
|
|
36
|
+
interval: number;
|
|
37
|
+
timeout: number;
|
|
38
|
+
path?: string;
|
|
39
|
+
port?: number;
|
|
40
|
+
}
|
|
41
|
+
export interface DeploymentResult {
|
|
42
|
+
success: boolean;
|
|
43
|
+
deploymentId: string;
|
|
44
|
+
startTime: Date;
|
|
45
|
+
endTime?: Date;
|
|
46
|
+
switchedAt?: Date;
|
|
47
|
+
rolledBackAt?: Date;
|
|
48
|
+
healthChecksPassed: boolean;
|
|
49
|
+
errors?: string[];
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Blue/Green deployment manager
|
|
53
|
+
*/
|
|
54
|
+
export declare class BlueGreenManager {
|
|
55
|
+
private deployments;
|
|
56
|
+
private deploymentHistory;
|
|
57
|
+
private deploymentCounter;
|
|
58
|
+
private resultCounter;
|
|
59
|
+
/**
|
|
60
|
+
* Create blue/green deployment configuration
|
|
61
|
+
*/
|
|
62
|
+
createDeployment(deployment: Omit<BlueGreenDeployment, 'id'>): BlueGreenDeployment;
|
|
63
|
+
/**
|
|
64
|
+
* Create ALB-based blue/green deployment
|
|
65
|
+
*/
|
|
66
|
+
createALBDeployment(options: {
|
|
67
|
+
name: string;
|
|
68
|
+
listenerArn: string;
|
|
69
|
+
blueTargetGroupArn: string;
|
|
70
|
+
greenTargetGroupArn: string;
|
|
71
|
+
autoPromote?: boolean;
|
|
72
|
+
healthCheckConfig?: HealthCheckConfig;
|
|
73
|
+
}): BlueGreenDeployment;
|
|
74
|
+
/**
|
|
75
|
+
* Create Route53-based blue/green deployment
|
|
76
|
+
*/
|
|
77
|
+
createRoute53Deployment(options: {
|
|
78
|
+
name: string;
|
|
79
|
+
hostedZoneId: string;
|
|
80
|
+
blueTargetGroupArn: string;
|
|
81
|
+
greenTargetGroupArn: string;
|
|
82
|
+
switchoverTimeSeconds?: number;
|
|
83
|
+
}): BlueGreenDeployment;
|
|
84
|
+
/**
|
|
85
|
+
* Create ECS blue/green deployment
|
|
86
|
+
*/
|
|
87
|
+
createECSDeployment(options: {
|
|
88
|
+
name: string;
|
|
89
|
+
listenerArn: string;
|
|
90
|
+
blueTargetGroupArn: string;
|
|
91
|
+
greenTargetGroupArn: string;
|
|
92
|
+
blueTaskDefinitionArn: string;
|
|
93
|
+
greenTaskDefinitionArn: string;
|
|
94
|
+
autoRollback?: boolean;
|
|
95
|
+
}): BlueGreenDeployment;
|
|
96
|
+
/**
|
|
97
|
+
* Execute blue/green deployment
|
|
98
|
+
*/
|
|
99
|
+
executeDeployment(deploymentId: string, dryRun?: boolean): Promise<DeploymentResult>;
|
|
100
|
+
/**
|
|
101
|
+
* Rollback deployment
|
|
102
|
+
*/
|
|
103
|
+
rollback(deploymentId: string): Promise<DeploymentResult>;
|
|
104
|
+
/**
|
|
105
|
+
* Run health checks
|
|
106
|
+
*/
|
|
107
|
+
private runHealthChecks;
|
|
108
|
+
/**
|
|
109
|
+
* Record deployment result
|
|
110
|
+
*/
|
|
111
|
+
private recordDeployment;
|
|
112
|
+
/**
|
|
113
|
+
* Get deployment
|
|
114
|
+
*/
|
|
115
|
+
getDeployment(id: string): BlueGreenDeployment | undefined;
|
|
116
|
+
/**
|
|
117
|
+
* List deployments
|
|
118
|
+
*/
|
|
119
|
+
listDeployments(): BlueGreenDeployment[];
|
|
120
|
+
/**
|
|
121
|
+
* Get deployment history
|
|
122
|
+
*/
|
|
123
|
+
getDeploymentHistory(deploymentId: string): DeploymentResult[];
|
|
124
|
+
/**
|
|
125
|
+
* Generate CloudFormation for ALB target group switching
|
|
126
|
+
*/
|
|
127
|
+
generateALBListenerCF(deployment: BlueGreenDeployment): any;
|
|
128
|
+
/**
|
|
129
|
+
* Generate CloudFormation for Route53 weighted routing
|
|
130
|
+
*/
|
|
131
|
+
generateRoute53RecordSetCF(deployment: BlueGreenDeployment, recordName: string): any[];
|
|
132
|
+
/**
|
|
133
|
+
* Clear all data
|
|
134
|
+
*/
|
|
135
|
+
clear(): void;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Global blue/green manager instance
|
|
139
|
+
*/
|
|
140
|
+
export declare const blueGreenManager: BlueGreenManager;
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canary Deployment Strategy
|
|
3
|
+
* Gradual rollout with automatic rollback based on metrics
|
|
4
|
+
*/
|
|
5
|
+
export interface CanaryDeployment {
|
|
6
|
+
id: string;
|
|
7
|
+
name: string;
|
|
8
|
+
baselineVersion: DeploymentVersion;
|
|
9
|
+
canaryVersion: DeploymentVersion;
|
|
10
|
+
stages: CanaryStage[];
|
|
11
|
+
currentStage: number;
|
|
12
|
+
status: 'pending' | 'in_progress' | 'completed' | 'rolled_back' | 'failed';
|
|
13
|
+
metrics?: CanaryMetrics;
|
|
14
|
+
autoPromote?: boolean;
|
|
15
|
+
autoRollback?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface DeploymentVersion {
|
|
18
|
+
version: string;
|
|
19
|
+
targetGroupArn?: string;
|
|
20
|
+
taskDefinitionArn?: string;
|
|
21
|
+
functionVersionArn?: string;
|
|
22
|
+
weight: number;
|
|
23
|
+
}
|
|
24
|
+
export interface CanaryStage {
|
|
25
|
+
name: string;
|
|
26
|
+
trafficPercentage: number;
|
|
27
|
+
durationMinutes: number;
|
|
28
|
+
alarmThresholds?: AlarmThresholds;
|
|
29
|
+
}
|
|
30
|
+
export interface AlarmThresholds {
|
|
31
|
+
errorRate?: number;
|
|
32
|
+
latencyP99?: number;
|
|
33
|
+
latencyP95?: number;
|
|
34
|
+
httpErrorRate?: number;
|
|
35
|
+
customMetrics?: CustomMetric[];
|
|
36
|
+
}
|
|
37
|
+
export interface CustomMetric {
|
|
38
|
+
name: string;
|
|
39
|
+
namespace: string;
|
|
40
|
+
threshold: number;
|
|
41
|
+
comparisonOperator: 'GreaterThanThreshold' | 'LessThanThreshold' | 'GreaterThanOrEqualToThreshold' | 'LessThanOrEqualToThreshold';
|
|
42
|
+
}
|
|
43
|
+
export interface CanaryMetrics {
|
|
44
|
+
baselineErrorRate: number;
|
|
45
|
+
canaryErrorRate: number;
|
|
46
|
+
baselineLatencyP99: number;
|
|
47
|
+
canaryLatencyP99: number;
|
|
48
|
+
baselineRequestCount: number;
|
|
49
|
+
canaryRequestCount: number;
|
|
50
|
+
}
|
|
51
|
+
export interface CanaryResult {
|
|
52
|
+
success: boolean;
|
|
53
|
+
deploymentId: string;
|
|
54
|
+
startTime: Date;
|
|
55
|
+
endTime?: Date;
|
|
56
|
+
completedStages: number;
|
|
57
|
+
rolledBack: boolean;
|
|
58
|
+
reason?: string;
|
|
59
|
+
metricsAtCompletion?: CanaryMetrics;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Canary deployment manager
|
|
63
|
+
*/
|
|
64
|
+
export declare class CanaryManager {
|
|
65
|
+
private deployments;
|
|
66
|
+
private deploymentHistory;
|
|
67
|
+
private deploymentCounter;
|
|
68
|
+
private resultCounter;
|
|
69
|
+
/**
|
|
70
|
+
* Predefined canary strategies
|
|
71
|
+
*/
|
|
72
|
+
static readonly Strategies: {
|
|
73
|
+
/**
|
|
74
|
+
* Conservative: 10% -> 25% -> 50% -> 100%
|
|
75
|
+
*/
|
|
76
|
+
CONSERVATIVE: CanaryStage[];
|
|
77
|
+
/**
|
|
78
|
+
* Balanced: 20% -> 50% -> 100%
|
|
79
|
+
*/
|
|
80
|
+
BALANCED: CanaryStage[];
|
|
81
|
+
/**
|
|
82
|
+
* Aggressive: 50% -> 100%
|
|
83
|
+
*/
|
|
84
|
+
AGGRESSIVE: CanaryStage[];
|
|
85
|
+
/**
|
|
86
|
+
* Linear 10%: Incremental 10% steps
|
|
87
|
+
*/
|
|
88
|
+
LINEAR_10: CanaryStage[];
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* Create canary deployment
|
|
92
|
+
*/
|
|
93
|
+
createDeployment(deployment: Omit<CanaryDeployment, 'id'>): CanaryDeployment;
|
|
94
|
+
/**
|
|
95
|
+
* Create Lambda canary deployment
|
|
96
|
+
*/
|
|
97
|
+
createLambdaCanaryDeployment(options: {
|
|
98
|
+
name: string;
|
|
99
|
+
baselineVersionArn: string;
|
|
100
|
+
canaryVersionArn: string;
|
|
101
|
+
strategy?: keyof typeof CanaryManager.Strategies;
|
|
102
|
+
autoPromote?: boolean;
|
|
103
|
+
errorRateThreshold?: number;
|
|
104
|
+
latencyThreshold?: number;
|
|
105
|
+
}): CanaryDeployment;
|
|
106
|
+
/**
|
|
107
|
+
* Create ECS canary deployment
|
|
108
|
+
*/
|
|
109
|
+
createECSCanaryDeployment(options: {
|
|
110
|
+
name: string;
|
|
111
|
+
baselineTaskDefinitionArn: string;
|
|
112
|
+
canaryTaskDefinitionArn: string;
|
|
113
|
+
baselineTargetGroupArn: string;
|
|
114
|
+
canaryTargetGroupArn: string;
|
|
115
|
+
strategy?: keyof typeof CanaryManager.Strategies;
|
|
116
|
+
}): CanaryDeployment;
|
|
117
|
+
/**
|
|
118
|
+
* Execute canary deployment
|
|
119
|
+
*/
|
|
120
|
+
executeDeployment(deploymentId: string, dryRun?: boolean): Promise<CanaryResult>;
|
|
121
|
+
/**
|
|
122
|
+
* Monitor canary stage
|
|
123
|
+
*/
|
|
124
|
+
private monitorStage;
|
|
125
|
+
/**
|
|
126
|
+
* Rollback canary deployment
|
|
127
|
+
*/
|
|
128
|
+
rollback(deploymentId: string, dryRun?: boolean): Promise<void>;
|
|
129
|
+
/**
|
|
130
|
+
* Promote canary to baseline
|
|
131
|
+
*/
|
|
132
|
+
promoteCanary(deploymentId: string): void;
|
|
133
|
+
/**
|
|
134
|
+
* Record deployment result
|
|
135
|
+
*/
|
|
136
|
+
private recordDeployment;
|
|
137
|
+
/**
|
|
138
|
+
* Get deployment
|
|
139
|
+
*/
|
|
140
|
+
getDeployment(id: string): CanaryDeployment | undefined;
|
|
141
|
+
/**
|
|
142
|
+
* List deployments
|
|
143
|
+
*/
|
|
144
|
+
listDeployments(): CanaryDeployment[];
|
|
145
|
+
/**
|
|
146
|
+
* Get deployment history
|
|
147
|
+
*/
|
|
148
|
+
getDeploymentHistory(deploymentId: string): CanaryResult[];
|
|
149
|
+
/**
|
|
150
|
+
* Generate CloudFormation for Lambda canary
|
|
151
|
+
*/
|
|
152
|
+
generateLambdaAliasCF(deployment: CanaryDeployment, aliasName: string): any;
|
|
153
|
+
/**
|
|
154
|
+
* Generate CloudFormation for ALB weighted target groups
|
|
155
|
+
*/
|
|
156
|
+
generateALBListenerRuleCF(deployment: CanaryDeployment): any;
|
|
157
|
+
/**
|
|
158
|
+
* Clear all data
|
|
159
|
+
*/
|
|
160
|
+
clear(): void;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Global canary manager instance
|
|
164
|
+
*/
|
|
165
|
+
export declare const canaryManager: CanaryManager;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Advanced Deployment Strategies
|
|
3
|
+
* Blue/green, canary, and A/B testing implementations
|
|
4
|
+
*/
|
|
5
|
+
export { BlueGreenManager, blueGreenManager, } from './blue-green';
|
|
6
|
+
export type { BlueGreenDeployment, Environment, RoutingConfig, HealthCheckConfig, DeploymentResult, } from './blue-green';
|
|
7
|
+
export { CanaryManager, canaryManager, } from './canary';
|
|
8
|
+
export type { CanaryDeployment, DeploymentVersion, CanaryStage, AlarmThresholds, CustomMetric, CanaryMetrics, CanaryResult, } from './canary';
|
|
9
|
+
export { ABTestManager, abTestManager, } from './ab-testing';
|
|
10
|
+
export type { ABTest, ABVariant, RoutingStrategy, ABMetrics, VariantMetrics, ABTestResult, } from './ab-testing';
|
|
11
|
+
export { ProgressiveDeploymentManager, progressiveDeploymentManager, } from './progressive';
|
|
12
|
+
export type { ProgressiveRollout, FeatureFlag, DeploymentGate, } from './progressive';
|