@stacksjs/ts-cloud-core 0.1.6 → 0.1.7
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 +0 -0
- package/dist/aws/cloudformation.d.ts +69 -0
- package/dist/aws/cloudfront.d.ts +21 -0
- package/dist/aws/credentials.d.ts +66 -0
- package/dist/aws/credentials.test.d.ts +0 -0
- package/dist/aws/index.d.ts +73 -0
- package/dist/aws/s3.d.ts +130 -0
- package/dist/aws/s3.test.d.ts +0 -0
- package/dist/aws/signature.d.ts +101 -0
- package/dist/aws/signature.test.d.ts +0 -0
- package/dist/backup/disaster-recovery.d.ts +98 -0
- package/dist/backup/disaster-recovery.test.d.ts +0 -0
- package/dist/backup/index.d.ts +24 -0
- package/dist/backup/manager.d.ts +112 -0
- package/dist/backup/manager.test.d.ts +0 -0
- package/dist/cicd/circleci.d.ts +47 -0
- package/dist/cicd/github-actions.d.ts +55 -0
- package/dist/cicd/gitlab-ci.d.ts +46 -0
- package/dist/cicd/index.d.ts +3 -0
- package/dist/cli/history.d.ts +66 -0
- package/dist/cli/index.d.ts +5 -0
- package/dist/cli/progress.d.ts +97 -0
- package/dist/cli/repl.d.ts +76 -0
- package/dist/cli/suggestions.d.ts +67 -0
- package/dist/cli/table.d.ts +70 -0
- package/dist/cli/table.test.d.ts +0 -0
- package/dist/cloudformation/builder.d.ts +59 -0
- package/dist/cloudformation/builder.test.d.ts +0 -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 +66 -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 +36 -0
- package/dist/cloudformation/builders/network.d.ts +14 -0
- package/dist/cloudformation/builders/queue.d.ts +8 -0
- package/dist/cloudformation/builders/security.d.ts +31 -0
- package/dist/cloudformation/builders/storage.d.ts +8 -0
- package/dist/cloudformation/index.d.ts +24 -0
- package/dist/cloudformation/types.d.ts +132 -0
- package/dist/compliance/aws-config.d.ts +88 -0
- package/dist/compliance/cloudtrail.d.ts +96 -0
- package/dist/compliance/compliance.test.d.ts +0 -0
- package/dist/compliance/guardduty.d.ts +110 -0
- package/dist/compliance/index.d.ts +50 -0
- package/dist/compliance/security-hub.d.ts +110 -0
- package/dist/containers/build-optimization.d.ts +110 -0
- package/dist/containers/containers.test.d.ts +0 -0
- package/dist/containers/image-scanning.d.ts +96 -0
- package/dist/containers/index.d.ts +4 -0
- package/dist/containers/registry.d.ts +99 -0
- package/dist/containers/service-mesh.d.ts +206 -0
- package/dist/database/database.test.d.ts +0 -0
- package/dist/database/index.d.ts +4 -0
- package/dist/database/migrations.d.ts +102 -0
- package/dist/database/performance.d.ts +168 -0
- package/dist/database/replicas.d.ts +146 -0
- package/dist/database/users.d.ts +102 -0
- package/dist/dependency-graph.d.ts +19 -0
- package/dist/deployment/ab-testing.d.ts +114 -0
- package/dist/deployment/blue-green.d.ts +98 -0
- package/dist/deployment/canary.d.ts +103 -0
- package/dist/deployment/deployment.test.d.ts +0 -0
- package/dist/deployment/index.d.ts +45 -0
- package/dist/deployment/progressive.d.ts +34 -0
- package/dist/dns/dns.test.d.ts +0 -0
- package/dist/dns/dnssec.d.ts +75 -0
- package/dist/dns/index.d.ts +3 -0
- package/dist/dns/resolver.d.ts +150 -0
- package/dist/dns/routing.d.ts +217 -0
- package/dist/email/advanced/analytics.d.ts +78 -0
- package/dist/email/advanced/index.d.ts +7 -0
- package/dist/email/advanced/rules.d.ts +60 -0
- package/dist/email/advanced/scheduling.d.ts +63 -0
- package/dist/email/advanced/search.d.ts +76 -0
- package/dist/email/advanced/shared-mailboxes.d.ts +66 -0
- package/dist/email/advanced/templates.d.ts +39 -0
- package/dist/email/advanced/threading.d.ts +53 -0
- package/dist/email/analytics.d.ts +144 -0
- package/dist/email/bounce-handling.d.ts +120 -0
- package/dist/email/email.test.d.ts +0 -0
- package/dist/email/handlers/__tests__/inbound.test.d.ts +0 -0
- package/dist/email/handlers/__tests__/outbound.test.d.ts +0 -0
- package/dist/email/handlers/converter.d.ts +225 -0
- package/dist/email/handlers/feedback.d.ts +226 -0
- package/dist/email/handlers/inbound.d.ts +167 -0
- package/dist/email/handlers/outbound.d.ts +176 -0
- package/dist/email/index.d.ts +6 -0
- package/dist/email/reputation.d.ts +97 -0
- package/dist/email/templates.d.ts +82 -0
- package/dist/errors/index.d.ts +186 -0
- package/dist/errors/index.test.d.ts +0 -0
- package/dist/health-checks/index.d.ts +35 -0
- package/dist/index.d.ts +256 -0
- package/dist/index.js +63499 -0
- package/dist/intrinsic-functions.d.ts +37 -0
- package/dist/lambda/concurrency.d.ts +98 -0
- package/dist/lambda/destinations.d.ts +99 -0
- package/dist/lambda/dlq.d.ts +109 -0
- package/dist/lambda/index.d.ts +6 -0
- package/dist/lambda/lambda.test.d.ts +0 -0
- package/dist/lambda/layers.d.ts +81 -0
- package/dist/lambda/versions.d.ts +91 -0
- package/dist/lambda/vpc.d.ts +116 -0
- package/dist/local/config.d.ts +44 -0
- package/dist/local/index.d.ts +2 -0
- package/dist/local/mock-aws.d.ts +60 -0
- package/dist/modules/ai.d.ts +47 -0
- package/dist/modules/api.d.ts +98 -0
- package/dist/modules/auth.d.ts +165 -0
- package/dist/modules/cache.d.ts +73 -0
- package/dist/modules/cdn.d.ts +125 -0
- package/dist/modules/communication.d.ts +98 -0
- package/dist/modules/compute.d.ts +309 -0
- package/dist/modules/database.d.ts +105 -0
- package/dist/modules/deployment.d.ts +181 -0
- package/dist/modules/dns.d.ts +45 -0
- package/dist/modules/email.d.ts +217 -0
- package/dist/modules/filesystem.d.ts +94 -0
- package/dist/modules/index.d.ts +27 -0
- package/dist/modules/messaging.d.ts +108 -0
- package/dist/modules/monitoring.d.ts +127 -0
- package/dist/modules/network.d.ts +102 -0
- package/dist/modules/parameter-store.d.ts +33 -0
- package/dist/modules/permissions.d.ts +132 -0
- package/dist/modules/phone.d.ts +80 -0
- package/dist/modules/queue.d.ts +210 -0
- package/dist/modules/redirects.d.ts +59 -0
- package/dist/modules/registry.d.ts +73 -0
- package/dist/modules/search.d.ts +56 -0
- package/dist/modules/secrets.d.ts +80 -0
- package/dist/modules/security.d.ts +100 -0
- package/dist/modules/sms.d.ts +52 -0
- package/dist/modules/storage.d.ts +160 -0
- package/dist/modules/workflow.d.ts +205 -0
- package/dist/multi-account/config.d.ts +315 -0
- package/dist/multi-account/index.d.ts +2 -0
- package/dist/multi-account/manager.d.ts +100 -0
- package/dist/multi-region/cross-region.d.ts +114 -0
- package/dist/multi-region/index.d.ts +3 -0
- package/dist/multi-region/manager.d.ts +72 -0
- package/dist/multi-region/regions.d.ts +98 -0
- package/dist/network-security/index.d.ts +39 -0
- package/dist/observability/index.d.ts +4 -0
- package/dist/observability/logs.d.ts +129 -0
- package/dist/observability/metrics.d.ts +153 -0
- package/dist/observability/observability.test.d.ts +0 -0
- package/dist/observability/synthetics.d.ts +146 -0
- package/dist/observability/xray.d.ts +129 -0
- package/dist/phone/advanced/analytics.d.ts +66 -0
- package/dist/phone/advanced/callbacks.d.ts +50 -0
- package/dist/phone/advanced/index.d.ts +4 -0
- package/dist/phone/advanced/ivr-builder.d.ts +83 -0
- package/dist/phone/advanced/recording.d.ts +48 -0
- package/dist/phone/handlers/__tests__/incoming-call.test.d.ts +0 -0
- package/dist/phone/handlers/incoming-call.d.ts +115 -0
- package/dist/phone/handlers/missed-call.d.ts +114 -0
- package/dist/phone/handlers/voicemail.d.ts +177 -0
- package/dist/phone/index.d.ts +2 -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 +0 -0
- package/dist/presets/fullstack-app.d.ts +12 -0
- package/dist/presets/index.d.ts +24 -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 +0 -0
- package/dist/preview/index.d.ts +27 -0
- package/dist/preview/manager.d.ts +58 -0
- package/dist/preview/manager.test.d.ts +0 -0
- package/dist/preview/notifications.d.ts +55 -0
- package/dist/preview/notifications.test.d.ts +0 -0
- package/dist/queue/batch-processing.d.ts +87 -0
- package/dist/queue/dlq-monitoring.d.ts +95 -0
- package/dist/queue/fifo.d.ts +90 -0
- package/dist/queue/index.d.ts +4 -0
- package/dist/queue/management.d.ts +105 -0
- package/dist/queue/queue.test.d.ts +0 -0
- package/dist/resource-mgmt/index.d.ts +29 -0
- package/dist/resource-naming.d.ts +26 -0
- package/dist/s3/index.d.ts +173 -0
- package/dist/schema/index.d.ts +9 -0
- package/dist/security/certificate-manager.d.ts +121 -0
- package/dist/security/index.d.ts +4 -0
- package/dist/security/scanning.d.ts +147 -0
- package/dist/security/secrets-manager.d.ts +144 -0
- package/dist/security/secrets-rotation.d.ts +115 -0
- package/dist/security/security.test.d.ts +0 -0
- package/dist/sms/advanced/ab-testing.d.ts +54 -0
- package/dist/sms/advanced/analytics.d.ts +56 -0
- package/dist/sms/advanced/campaigns.d.ts +82 -0
- package/dist/sms/advanced/chatbot.d.ts +48 -0
- package/dist/sms/advanced/index.d.ts +6 -0
- package/dist/sms/advanced/link-tracking.d.ts +42 -0
- package/dist/sms/advanced/mms.d.ts +35 -0
- package/dist/sms/handlers/__tests__/send.test.d.ts +0 -0
- package/dist/sms/handlers/delivery-status.d.ts +131 -0
- package/dist/sms/handlers/receive.d.ts +160 -0
- package/dist/sms/handlers/send.d.ts +172 -0
- package/dist/sms/index.d.ts +2 -0
- package/dist/stack-diff.d.ts +34 -0
- package/dist/static-site/index.d.ts +49 -0
- package/dist/template-builder.d.ts +14 -0
- package/dist/template-validator.d.ts +24 -0
- package/dist/utils/cache.d.ts +55 -0
- package/dist/utils/diff.d.ts +48 -0
- package/dist/utils/hash.d.ts +58 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/parallel.d.ts +60 -0
- package/dist/validators/credentials.d.ts +23 -0
- package/dist/validators/credentials.test.d.ts +0 -0
- package/dist/validators/quotas.d.ts +60 -0
- package/dist/validators/quotas.test.d.ts +0 -0
- package/package.json +4 -4
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Global replica manager instance
|
|
3
|
+
*/
|
|
4
|
+
export declare const replicaManager: ReplicaManager;
|
|
5
|
+
/**
|
|
6
|
+
* Database Replicas & Connection Pooling
|
|
7
|
+
* Read replica management and RDS Proxy for connection pooling
|
|
8
|
+
*/
|
|
9
|
+
export declare interface ReadReplica {
|
|
10
|
+
id: string
|
|
11
|
+
name: string
|
|
12
|
+
sourceDatabase: string
|
|
13
|
+
region: string
|
|
14
|
+
instanceClass: string
|
|
15
|
+
multiAZ?: boolean
|
|
16
|
+
autoMinorVersionUpgrade?: boolean
|
|
17
|
+
backupRetentionPeriod?: number
|
|
18
|
+
preferredBackupWindow?: string
|
|
19
|
+
preferredMaintenanceWindow?: string
|
|
20
|
+
replicationLag?: number
|
|
21
|
+
status?: 'creating' | 'available' | 'failing-over' | 'failed'
|
|
22
|
+
}
|
|
23
|
+
export declare interface ReplicationGroup {
|
|
24
|
+
id: string
|
|
25
|
+
name: string
|
|
26
|
+
primaryDatabase: string
|
|
27
|
+
replicas: ReadReplica[]
|
|
28
|
+
loadBalancing?: LoadBalancingStrategy
|
|
29
|
+
failoverEnabled?: boolean
|
|
30
|
+
autoScaling?: AutoScalingConfig
|
|
31
|
+
}
|
|
32
|
+
export declare interface LoadBalancingStrategy {
|
|
33
|
+
type: 'round-robin' | 'least-connections' | 'weighted' | 'latency-based'
|
|
34
|
+
weights?: Record<string, number>
|
|
35
|
+
}
|
|
36
|
+
export declare interface AutoScalingConfig {
|
|
37
|
+
enabled: boolean
|
|
38
|
+
minReplicas: number
|
|
39
|
+
maxReplicas: number
|
|
40
|
+
targetCPU?: number
|
|
41
|
+
targetConnections?: number
|
|
42
|
+
scaleUpCooldown?: number
|
|
43
|
+
scaleDownCooldown?: number
|
|
44
|
+
}
|
|
45
|
+
export declare interface RDSProxy {
|
|
46
|
+
id: string
|
|
47
|
+
name: string
|
|
48
|
+
engineFamily: 'MYSQL' | 'POSTGRESQL' | 'SQLSERVER'
|
|
49
|
+
targetDatabase: string
|
|
50
|
+
maxConnectionsPercent?: number
|
|
51
|
+
maxIdleConnectionsPercent?: number
|
|
52
|
+
connectionBorrowTimeout?: number
|
|
53
|
+
sessionPinningFilters?: SessionPinningFilter[]
|
|
54
|
+
requireTLS?: boolean
|
|
55
|
+
idleClientTimeout?: number
|
|
56
|
+
vpcSubnetIds: string[]
|
|
57
|
+
securityGroupIds: string[]
|
|
58
|
+
secretArn?: string
|
|
59
|
+
}
|
|
60
|
+
export declare interface ProxyTarget {
|
|
61
|
+
id: string
|
|
62
|
+
proxyId: string
|
|
63
|
+
targetArn: string
|
|
64
|
+
targetType: 'RDS_INSTANCE' | 'RDS_CLUSTER' | 'TRACKED_CLUSTER'
|
|
65
|
+
isWritable: boolean
|
|
66
|
+
weight?: number
|
|
67
|
+
}
|
|
68
|
+
export declare interface ConnectionPoolConfig {
|
|
69
|
+
minPoolSize: number
|
|
70
|
+
maxPoolSize: number
|
|
71
|
+
connectionTimeout: number
|
|
72
|
+
idleTimeout: number
|
|
73
|
+
maxLifetime?: number
|
|
74
|
+
statementTimeout?: number
|
|
75
|
+
}
|
|
76
|
+
export type SessionPinningFilter = | 'EXCLUDE_VARIABLE_SETS'
|
|
77
|
+
/**
|
|
78
|
+
* Replica manager
|
|
79
|
+
*/
|
|
80
|
+
export declare class ReplicaManager {
|
|
81
|
+
private replicas: Map<string, ReadReplica>;
|
|
82
|
+
private replicationGroups: Map<string, ReplicationGroup>;
|
|
83
|
+
private proxies: Map<string, RDSProxy>;
|
|
84
|
+
private proxyTargets: Map<string, ProxyTarget>;
|
|
85
|
+
private replicaCounter: any;
|
|
86
|
+
private groupCounter: any;
|
|
87
|
+
private proxyCounter: any;
|
|
88
|
+
private targetCounter: any;
|
|
89
|
+
createReplica(replica: Omit<ReadReplica, 'id'>): ReadReplica;
|
|
90
|
+
createRDSReplica(options: {
|
|
91
|
+
sourceDatabase: string
|
|
92
|
+
name: string
|
|
93
|
+
region?: string
|
|
94
|
+
instanceClass?: string
|
|
95
|
+
multiAZ?: boolean
|
|
96
|
+
}): ReadReplica;
|
|
97
|
+
createCrossRegionReplica(options: {
|
|
98
|
+
sourceDatabase: string
|
|
99
|
+
name: string
|
|
100
|
+
targetRegion: string
|
|
101
|
+
instanceClass?: string
|
|
102
|
+
encrypted?: boolean
|
|
103
|
+
}): ReadReplica;
|
|
104
|
+
createReplicationGroup(group: Omit<ReplicationGroup, 'id'>): ReplicationGroup;
|
|
105
|
+
createAutoScalingReplicationGroup(options: {
|
|
106
|
+
name: string
|
|
107
|
+
primaryDatabase: string
|
|
108
|
+
minReplicas: number
|
|
109
|
+
maxReplicas: number
|
|
110
|
+
targetCPU?: number
|
|
111
|
+
loadBalancing?: LoadBalancingStrategy
|
|
112
|
+
}): ReplicationGroup;
|
|
113
|
+
addReplicaToGroup(groupId: string, replica: ReadReplica): void;
|
|
114
|
+
createProxy(proxy: Omit<RDSProxy, 'id'>): RDSProxy;
|
|
115
|
+
createConnectionPoolProxy(options: {
|
|
116
|
+
name: string
|
|
117
|
+
engineFamily: 'MYSQL' | 'POSTGRESQL' | 'SQLSERVER'
|
|
118
|
+
targetDatabase: string
|
|
119
|
+
vpcSubnetIds: string[]
|
|
120
|
+
securityGroupIds: string[]
|
|
121
|
+
secretArn: string
|
|
122
|
+
maxConnections?: number
|
|
123
|
+
}): RDSProxy;
|
|
124
|
+
createServerlessProxy(options: {
|
|
125
|
+
name: string
|
|
126
|
+
engineFamily: 'MYSQL' | 'POSTGRESQL' | 'SQLSERVER'
|
|
127
|
+
targetDatabase: string
|
|
128
|
+
vpcSubnetIds: string[]
|
|
129
|
+
securityGroupIds: string[]
|
|
130
|
+
secretArn: string
|
|
131
|
+
}): RDSProxy;
|
|
132
|
+
addProxyTarget(target: Omit<ProxyTarget, 'id'>): ProxyTarget;
|
|
133
|
+
promoteReplica(replicaId: string): { success: boolean; message: string };
|
|
134
|
+
getReplicationLag(replicaId: string): number;
|
|
135
|
+
getReplica(id: string): ReadReplica | undefined;
|
|
136
|
+
listReplicas(): ReadReplica[];
|
|
137
|
+
getReplicationGroup(id: string): ReplicationGroup | undefined;
|
|
138
|
+
listReplicationGroups(): ReplicationGroup[];
|
|
139
|
+
getProxy(id: string): RDSProxy | undefined;
|
|
140
|
+
listProxies(): RDSProxy[];
|
|
141
|
+
generateReplicaCF(replica: ReadReplica): any;
|
|
142
|
+
generateProxyCF(proxy: RDSProxy): any;
|
|
143
|
+
generateProxyTargetCF(target: ProxyTarget, proxy: RDSProxy): any;
|
|
144
|
+
generateProxyRoleCF(): any;
|
|
145
|
+
clear(): void;
|
|
146
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Global database user manager instance
|
|
3
|
+
*/
|
|
4
|
+
export declare const databaseUserManager: DatabaseUserManager;
|
|
5
|
+
/**
|
|
6
|
+
* Database User Management
|
|
7
|
+
* User creation, permissions, and access control
|
|
8
|
+
*/
|
|
9
|
+
export declare interface DatabaseUser {
|
|
10
|
+
id: string
|
|
11
|
+
username: string
|
|
12
|
+
database: string
|
|
13
|
+
privileges: DatabasePrivilege[]
|
|
14
|
+
passwordSecretArn?: string
|
|
15
|
+
createdAt: Date
|
|
16
|
+
lastRotated?: Date
|
|
17
|
+
rotationEnabled?: boolean
|
|
18
|
+
rotationDays?: number
|
|
19
|
+
}
|
|
20
|
+
export declare interface DatabasePrivilege {
|
|
21
|
+
database?: string
|
|
22
|
+
table?: string
|
|
23
|
+
privileges: PrivilegeType[]
|
|
24
|
+
}
|
|
25
|
+
export declare interface UserRole {
|
|
26
|
+
id: string
|
|
27
|
+
name: string
|
|
28
|
+
description?: string
|
|
29
|
+
privileges: DatabasePrivilege[]
|
|
30
|
+
users: string[]
|
|
31
|
+
}
|
|
32
|
+
export declare interface AccessAudit {
|
|
33
|
+
id: string
|
|
34
|
+
username: string
|
|
35
|
+
action: 'LOGIN' | 'QUERY' | 'MODIFY' | 'GRANT' | 'REVOKE'
|
|
36
|
+
database?: string
|
|
37
|
+
table?: string
|
|
38
|
+
query?: string
|
|
39
|
+
timestamp: Date
|
|
40
|
+
success: boolean
|
|
41
|
+
ipAddress?: string
|
|
42
|
+
}
|
|
43
|
+
export type PrivilegeType = | 'SELECT'
|
|
44
|
+
| 'INSERT'
|
|
45
|
+
| 'UPDATE'
|
|
46
|
+
| 'DELETE'
|
|
47
|
+
| 'CREATE'
|
|
48
|
+
| 'DROP'
|
|
49
|
+
| 'ALTER'
|
|
50
|
+
| 'INDEX'
|
|
51
|
+
| 'EXECUTE'
|
|
52
|
+
| 'ALL'
|
|
53
|
+
/**
|
|
54
|
+
* Database user manager
|
|
55
|
+
*/
|
|
56
|
+
export declare class DatabaseUserManager {
|
|
57
|
+
private users: Map<string, DatabaseUser>;
|
|
58
|
+
private roles: Map<string, UserRole>;
|
|
59
|
+
private audits: Map<string, AccessAudit>;
|
|
60
|
+
private userCounter: any;
|
|
61
|
+
private roleCounter: any;
|
|
62
|
+
private auditCounter: any;
|
|
63
|
+
createUser(user: Omit<DatabaseUser, 'id' | 'createdAt'>): DatabaseUser;
|
|
64
|
+
createReadOnlyUser(options: {
|
|
65
|
+
username: string
|
|
66
|
+
database: string
|
|
67
|
+
passwordSecretArn?: string
|
|
68
|
+
tables?: string[]
|
|
69
|
+
}): DatabaseUser;
|
|
70
|
+
createReadWriteUser(options: {
|
|
71
|
+
username: string
|
|
72
|
+
database: string
|
|
73
|
+
passwordSecretArn?: string
|
|
74
|
+
tables?: string[]
|
|
75
|
+
}): DatabaseUser;
|
|
76
|
+
createAdminUser(options: {
|
|
77
|
+
username: string
|
|
78
|
+
database: string
|
|
79
|
+
passwordSecretArn?: string
|
|
80
|
+
}): DatabaseUser;
|
|
81
|
+
createApplicationUser(options: {
|
|
82
|
+
username: string
|
|
83
|
+
database: string
|
|
84
|
+
tables: { name: string; privileges: PrivilegeType[] }[]
|
|
85
|
+
passwordSecretArn?: string
|
|
86
|
+
}): DatabaseUser;
|
|
87
|
+
createRole(role: Omit<UserRole, 'id' | 'users'>): UserRole;
|
|
88
|
+
assignUserToRole(userId: string, roleId: string): void;
|
|
89
|
+
grantPrivileges(userId: string, privileges: DatabasePrivilege[]): { success: boolean; message: string };
|
|
90
|
+
revokePrivileges(userId: string, privileges: DatabasePrivilege[]): { success: boolean; message: string };
|
|
91
|
+
rotatePassword(userId: string): { success: boolean; newSecretArn?: string };
|
|
92
|
+
needsPasswordRotation(userId: string): boolean;
|
|
93
|
+
auditAccess(audit: Omit<AccessAudit, 'id' | 'timestamp'>): AccessAudit;
|
|
94
|
+
getUserAccessHistory(username: string, limit?: number): AccessAudit[];
|
|
95
|
+
getFailedLoginAttempts(username: string, hours?: number): AccessAudit[];
|
|
96
|
+
generateCreateUserSQL(user: DatabaseUser, engine?: 'postgres' | 'mysql'): string;
|
|
97
|
+
getUser(id: string): DatabaseUser | undefined;
|
|
98
|
+
listUsers(): DatabaseUser[];
|
|
99
|
+
getRole(id: string): UserRole | undefined;
|
|
100
|
+
listRoles(): UserRole[];
|
|
101
|
+
clear(): void;
|
|
102
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { CloudFormationResource } from '@stacksjs/ts-cloud-aws-types';
|
|
2
|
+
export declare 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: Map<string, ResourceNode>;
|
|
13
|
+
addResource(logicalId: string, resource: CloudFormationResource): void;
|
|
14
|
+
private extractDependencies(resource: CloudFormationResource): Set<string>;
|
|
15
|
+
private findReferences(obj: any, dependencies: Set<string>): void;
|
|
16
|
+
topologicalSort(): string[];
|
|
17
|
+
validate(): void;
|
|
18
|
+
getDependents(logicalId: string): string[];
|
|
19
|
+
}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Global A/B testing manager instance
|
|
3
|
+
*/
|
|
4
|
+
export declare const abTestManager: ABTestManager;
|
|
5
|
+
/**
|
|
6
|
+
* A/B Testing Infrastructure
|
|
7
|
+
* Traffic splitting based on user attributes, headers, or cookies
|
|
8
|
+
*/
|
|
9
|
+
export declare interface ABTest {
|
|
10
|
+
id: string
|
|
11
|
+
name: string
|
|
12
|
+
description?: string
|
|
13
|
+
variants: ABVariant[]
|
|
14
|
+
routingStrategy: RoutingStrategy
|
|
15
|
+
startTime: Date
|
|
16
|
+
endTime?: Date
|
|
17
|
+
status: 'draft' | 'active' | 'paused' | 'completed'
|
|
18
|
+
metrics?: ABMetrics
|
|
19
|
+
winner?: string
|
|
20
|
+
}
|
|
21
|
+
export declare interface ABVariant {
|
|
22
|
+
id: string
|
|
23
|
+
name: string
|
|
24
|
+
description?: string
|
|
25
|
+
trafficPercentage: number
|
|
26
|
+
targetGroupArn?: string
|
|
27
|
+
functionVersionArn?: string
|
|
28
|
+
originId?: string
|
|
29
|
+
weight: number
|
|
30
|
+
}
|
|
31
|
+
export declare interface RoutingStrategy {
|
|
32
|
+
type: 'random' | 'cookie' | 'header' | 'geo' | 'device' | 'user-attribute'
|
|
33
|
+
cookieName?: string
|
|
34
|
+
headerName?: string
|
|
35
|
+
attributeName?: string
|
|
36
|
+
stickySession?: boolean
|
|
37
|
+
sessionDuration?: number
|
|
38
|
+
}
|
|
39
|
+
export declare interface ABMetrics {
|
|
40
|
+
variants: Record<string, VariantMetrics>
|
|
41
|
+
totalRequests: number
|
|
42
|
+
startTime: Date
|
|
43
|
+
lastUpdated: Date
|
|
44
|
+
}
|
|
45
|
+
export declare interface VariantMetrics {
|
|
46
|
+
requests: number
|
|
47
|
+
conversions: number
|
|
48
|
+
conversionRate: number
|
|
49
|
+
averageLatency: number
|
|
50
|
+
errorRate: number
|
|
51
|
+
revenue?: number
|
|
52
|
+
customMetrics?: Record<string, number>
|
|
53
|
+
}
|
|
54
|
+
export declare interface ABTestResult {
|
|
55
|
+
testId: string
|
|
56
|
+
winningVariant: string
|
|
57
|
+
confidence: number
|
|
58
|
+
improvement: number
|
|
59
|
+
statisticalSignificance: boolean
|
|
60
|
+
metrics: ABMetrics
|
|
61
|
+
recommendation: string
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* A/B testing manager
|
|
65
|
+
*/
|
|
66
|
+
export declare class ABTestManager {
|
|
67
|
+
private tests: Map<string, ABTest>;
|
|
68
|
+
private testCounter: any;
|
|
69
|
+
createTest(test: Omit<ABTest, 'id'>): ABTest;
|
|
70
|
+
createSimpleABTest(options: {
|
|
71
|
+
name: string
|
|
72
|
+
description?: string
|
|
73
|
+
controlTargetGroupArn: string
|
|
74
|
+
variantTargetGroupArn: string
|
|
75
|
+
variantTrafficPercentage?: number
|
|
76
|
+
stickySession?: boolean
|
|
77
|
+
}): ABTest;
|
|
78
|
+
createMultivariateTest(options: {
|
|
79
|
+
name: string
|
|
80
|
+
description?: string
|
|
81
|
+
variants: Array<{
|
|
82
|
+
name: string
|
|
83
|
+
description?: string
|
|
84
|
+
targetGroupArn: string
|
|
85
|
+
trafficPercentage: number
|
|
86
|
+
}>
|
|
87
|
+
routingStrategy?: RoutingStrategy
|
|
88
|
+
}): ABTest;
|
|
89
|
+
createHeaderBasedTest(options: {
|
|
90
|
+
name: string
|
|
91
|
+
controlTargetGroupArn: string
|
|
92
|
+
variantTargetGroupArn: string
|
|
93
|
+
headerName: string
|
|
94
|
+
headerValue: string
|
|
95
|
+
}): ABTest;
|
|
96
|
+
createGeoBasedTest(options: {
|
|
97
|
+
name: string
|
|
98
|
+
controlTargetGroupArn: string
|
|
99
|
+
variantTargetGroupArn: string
|
|
100
|
+
regions: string[] // For variant (e.g., ['US', 'CA'])
|
|
101
|
+
}): ABTest;
|
|
102
|
+
startTest(testId: string): void;
|
|
103
|
+
pauseTest(testId: string): void;
|
|
104
|
+
updateTrafficSplit(testId: string, variantId: string, newPercentage: number): void;
|
|
105
|
+
analyzeResults(testId: string): ABTestResult;
|
|
106
|
+
declareWinner(testId: string, variantId: string): void;
|
|
107
|
+
private collectMetrics(test: ABTest): ABMetrics;
|
|
108
|
+
private generateRecommendation(improvement: number, significant: boolean, winnerName: string): string;
|
|
109
|
+
getTest(id: string): ABTest | undefined;
|
|
110
|
+
listTests(): ABTest[];
|
|
111
|
+
generateALBListenerRuleCF(test: ABTest): any;
|
|
112
|
+
generateLambdaEdgeFunction(test: ABTest): string;
|
|
113
|
+
clear(): void;
|
|
114
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Global blue/green manager instance
|
|
3
|
+
*/
|
|
4
|
+
export declare const blueGreenManager: BlueGreenManager;
|
|
5
|
+
/**
|
|
6
|
+
* Blue/Green Deployment Strategy
|
|
7
|
+
* Zero-downtime deployments with instant rollback capability
|
|
8
|
+
*/
|
|
9
|
+
export declare interface BlueGreenDeployment {
|
|
10
|
+
id: string
|
|
11
|
+
name: string
|
|
12
|
+
blueEnvironment: Environment
|
|
13
|
+
greenEnvironment: Environment
|
|
14
|
+
activeEnvironment: 'blue' | 'green'
|
|
15
|
+
routingConfig: RoutingConfig
|
|
16
|
+
autoPromote?: boolean
|
|
17
|
+
autoRollback?: boolean
|
|
18
|
+
healthCheckConfig?: HealthCheckConfig
|
|
19
|
+
}
|
|
20
|
+
export declare interface Environment {
|
|
21
|
+
name: string
|
|
22
|
+
targetGroupArn: string
|
|
23
|
+
autoScalingGroupName?: string
|
|
24
|
+
taskDefinitionArn?: string
|
|
25
|
+
functionVersionArn?: string
|
|
26
|
+
instanceIds?: string[]
|
|
27
|
+
weight?: number
|
|
28
|
+
}
|
|
29
|
+
export declare interface RoutingConfig {
|
|
30
|
+
type: 'alb' | 'route53' | 'cloudfront' | 'api-gateway'
|
|
31
|
+
listenerArn?: string
|
|
32
|
+
hostedZoneId?: string
|
|
33
|
+
distributionId?: string
|
|
34
|
+
apiId?: string
|
|
35
|
+
switchoverTimeSeconds?: number
|
|
36
|
+
}
|
|
37
|
+
export declare interface HealthCheckConfig {
|
|
38
|
+
healthyThreshold: number
|
|
39
|
+
unhealthyThreshold: number
|
|
40
|
+
interval: number
|
|
41
|
+
timeout: number
|
|
42
|
+
path?: string
|
|
43
|
+
port?: number
|
|
44
|
+
}
|
|
45
|
+
export declare interface DeploymentResult {
|
|
46
|
+
success: boolean
|
|
47
|
+
deploymentId: string
|
|
48
|
+
startTime: Date
|
|
49
|
+
endTime?: Date
|
|
50
|
+
switchedAt?: Date
|
|
51
|
+
rolledBackAt?: Date
|
|
52
|
+
healthChecksPassed: boolean
|
|
53
|
+
errors?: string[]
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Blue/Green deployment manager
|
|
57
|
+
*/
|
|
58
|
+
export declare class BlueGreenManager {
|
|
59
|
+
private deployments: Map<string, BlueGreenDeployment>;
|
|
60
|
+
private deploymentHistory: Map<string, DeploymentResult[]>;
|
|
61
|
+
private deploymentCounter: any;
|
|
62
|
+
private resultCounter: any;
|
|
63
|
+
createDeployment(deployment: Omit<BlueGreenDeployment, 'id'>): BlueGreenDeployment;
|
|
64
|
+
createALBDeployment(options: {
|
|
65
|
+
name: string
|
|
66
|
+
listenerArn: string
|
|
67
|
+
blueTargetGroupArn: string
|
|
68
|
+
greenTargetGroupArn: string
|
|
69
|
+
autoPromote?: boolean
|
|
70
|
+
healthCheckConfig?: HealthCheckConfig
|
|
71
|
+
}): BlueGreenDeployment;
|
|
72
|
+
createRoute53Deployment(options: {
|
|
73
|
+
name: string
|
|
74
|
+
hostedZoneId: string
|
|
75
|
+
blueTargetGroupArn: string
|
|
76
|
+
greenTargetGroupArn: string
|
|
77
|
+
switchoverTimeSeconds?: number
|
|
78
|
+
}): BlueGreenDeployment;
|
|
79
|
+
createECSDeployment(options: {
|
|
80
|
+
name: string
|
|
81
|
+
listenerArn: string
|
|
82
|
+
blueTargetGroupArn: string
|
|
83
|
+
greenTargetGroupArn: string
|
|
84
|
+
blueTaskDefinitionArn: string
|
|
85
|
+
greenTaskDefinitionArn: string
|
|
86
|
+
autoRollback?: boolean
|
|
87
|
+
}): BlueGreenDeployment;
|
|
88
|
+
executeDeployment(deploymentId: string, dryRun?: boolean): Promise<DeploymentResult>;
|
|
89
|
+
rollback(deploymentId: string): Promise<DeploymentResult>;
|
|
90
|
+
private runHealthChecks(deployment: BlueGreenDeployment, environment: 'blue' | 'green', dryRun: boolean): Promise<boolean>;
|
|
91
|
+
private recordDeployment(deploymentId: string, result: DeploymentResult): void;
|
|
92
|
+
getDeployment(id: string): BlueGreenDeployment | undefined;
|
|
93
|
+
listDeployments(): BlueGreenDeployment[];
|
|
94
|
+
getDeploymentHistory(deploymentId: string): DeploymentResult[];
|
|
95
|
+
generateALBListenerCF(deployment: BlueGreenDeployment): any;
|
|
96
|
+
generateRoute53RecordSetCF(deployment: BlueGreenDeployment, recordName: string): any[];
|
|
97
|
+
clear(): void;
|
|
98
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Global canary manager instance
|
|
3
|
+
*/
|
|
4
|
+
export declare const canaryManager: CanaryManager;
|
|
5
|
+
/**
|
|
6
|
+
* Canary Deployment Strategy
|
|
7
|
+
* Gradual rollout with automatic rollback based on metrics
|
|
8
|
+
*/
|
|
9
|
+
export declare interface CanaryDeployment {
|
|
10
|
+
id: string
|
|
11
|
+
name: string
|
|
12
|
+
baselineVersion: DeploymentVersion
|
|
13
|
+
canaryVersion: DeploymentVersion
|
|
14
|
+
stages: CanaryStage[]
|
|
15
|
+
currentStage: number
|
|
16
|
+
status: 'pending' | 'in_progress' | 'completed' | 'rolled_back' | 'failed'
|
|
17
|
+
metrics?: CanaryMetrics
|
|
18
|
+
autoPromote?: boolean
|
|
19
|
+
autoRollback?: boolean
|
|
20
|
+
}
|
|
21
|
+
export declare interface DeploymentVersion {
|
|
22
|
+
version: string
|
|
23
|
+
targetGroupArn?: string
|
|
24
|
+
taskDefinitionArn?: string
|
|
25
|
+
functionVersionArn?: string
|
|
26
|
+
weight: number
|
|
27
|
+
}
|
|
28
|
+
export declare interface CanaryStage {
|
|
29
|
+
name: string
|
|
30
|
+
trafficPercentage: number
|
|
31
|
+
durationMinutes: number
|
|
32
|
+
alarmThresholds?: AlarmThresholds
|
|
33
|
+
}
|
|
34
|
+
export declare interface AlarmThresholds {
|
|
35
|
+
errorRate?: number
|
|
36
|
+
latencyP99?: number
|
|
37
|
+
latencyP95?: number
|
|
38
|
+
httpErrorRate?: number
|
|
39
|
+
customMetrics?: CustomMetric[]
|
|
40
|
+
}
|
|
41
|
+
export declare interface CustomMetric {
|
|
42
|
+
name: string
|
|
43
|
+
namespace: string
|
|
44
|
+
threshold: number
|
|
45
|
+
comparisonOperator: 'GreaterThanThreshold' | 'LessThanThreshold' | 'GreaterThanOrEqualToThreshold' | 'LessThanOrEqualToThreshold'
|
|
46
|
+
}
|
|
47
|
+
export declare interface CanaryMetrics {
|
|
48
|
+
baselineErrorRate: number
|
|
49
|
+
canaryErrorRate: number
|
|
50
|
+
baselineLatencyP99: number
|
|
51
|
+
canaryLatencyP99: number
|
|
52
|
+
baselineRequestCount: number
|
|
53
|
+
canaryRequestCount: number
|
|
54
|
+
}
|
|
55
|
+
export declare interface CanaryResult {
|
|
56
|
+
success: boolean
|
|
57
|
+
deploymentId: string
|
|
58
|
+
startTime: Date
|
|
59
|
+
endTime?: Date
|
|
60
|
+
completedStages: number
|
|
61
|
+
rolledBack: boolean
|
|
62
|
+
reason?: string
|
|
63
|
+
metricsAtCompletion?: CanaryMetrics
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Canary deployment manager
|
|
67
|
+
*/
|
|
68
|
+
export declare class CanaryManager {
|
|
69
|
+
private deployments: Map<string, CanaryDeployment>;
|
|
70
|
+
private deploymentHistory: Map<string, CanaryResult[]>;
|
|
71
|
+
private deploymentCounter: any;
|
|
72
|
+
private resultCounter: any;
|
|
73
|
+
static readonly Strategies: any;
|
|
74
|
+
createDeployment(deployment: Omit<CanaryDeployment, 'id'>): CanaryDeployment;
|
|
75
|
+
createLambdaCanaryDeployment(options: {
|
|
76
|
+
name: string
|
|
77
|
+
baselineVersionArn: string
|
|
78
|
+
canaryVersionArn: string
|
|
79
|
+
strategy?: keyof typeof CanaryManager.Strategies
|
|
80
|
+
autoPromote?: boolean
|
|
81
|
+
errorRateThreshold?: number
|
|
82
|
+
latencyThreshold?: number
|
|
83
|
+
}): CanaryDeployment;
|
|
84
|
+
createECSCanaryDeployment(options: {
|
|
85
|
+
name: string
|
|
86
|
+
baselineTaskDefinitionArn: string
|
|
87
|
+
canaryTaskDefinitionArn: string
|
|
88
|
+
baselineTargetGroupArn: string
|
|
89
|
+
canaryTargetGroupArn: string
|
|
90
|
+
strategy?: keyof typeof CanaryManager.Strategies
|
|
91
|
+
}): CanaryDeployment;
|
|
92
|
+
executeDeployment(deploymentId: string, dryRun?: boolean): Promise<CanaryResult>;
|
|
93
|
+
private monitorStage(deployment: CanaryDeployment, stage: CanaryStage, dryRun: boolean): Promise<boolean>;
|
|
94
|
+
rollback(deploymentId: string, dryRun?: boolean): Promise<void>;
|
|
95
|
+
promoteCanary(deploymentId: string): void;
|
|
96
|
+
private recordDeployment(deploymentId: string, result: CanaryResult): void;
|
|
97
|
+
getDeployment(id: string): CanaryDeployment | undefined;
|
|
98
|
+
listDeployments(): CanaryDeployment[];
|
|
99
|
+
getDeploymentHistory(deploymentId: string): CanaryResult[];
|
|
100
|
+
generateLambdaAliasCF(deployment: CanaryDeployment, aliasName: string): any;
|
|
101
|
+
generateALBListenerRuleCF(deployment: CanaryDeployment): any;
|
|
102
|
+
clear(): void;
|
|
103
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export type {
|
|
2
|
+
BlueGreenDeployment,
|
|
3
|
+
Environment,
|
|
4
|
+
RoutingConfig,
|
|
5
|
+
HealthCheckConfig,
|
|
6
|
+
DeploymentResult,
|
|
7
|
+
} from './blue-green';
|
|
8
|
+
export type {
|
|
9
|
+
CanaryDeployment,
|
|
10
|
+
DeploymentVersion,
|
|
11
|
+
CanaryStage,
|
|
12
|
+
AlarmThresholds,
|
|
13
|
+
CustomMetric,
|
|
14
|
+
CanaryMetrics,
|
|
15
|
+
CanaryResult,
|
|
16
|
+
} from './canary';
|
|
17
|
+
export type {
|
|
18
|
+
ABTest,
|
|
19
|
+
ABVariant,
|
|
20
|
+
RoutingStrategy,
|
|
21
|
+
ABMetrics,
|
|
22
|
+
VariantMetrics,
|
|
23
|
+
ABTestResult,
|
|
24
|
+
} from './ab-testing';
|
|
25
|
+
export type {
|
|
26
|
+
ProgressiveRollout,
|
|
27
|
+
FeatureFlag,
|
|
28
|
+
DeploymentGate,
|
|
29
|
+
} from './progressive';
|
|
30
|
+
export {
|
|
31
|
+
BlueGreenManager,
|
|
32
|
+
blueGreenManager,
|
|
33
|
+
} from './blue-green';
|
|
34
|
+
export {
|
|
35
|
+
CanaryManager,
|
|
36
|
+
canaryManager,
|
|
37
|
+
} from './canary';
|
|
38
|
+
export {
|
|
39
|
+
ABTestManager,
|
|
40
|
+
abTestManager,
|
|
41
|
+
} from './ab-testing';
|
|
42
|
+
export {
|
|
43
|
+
ProgressiveDeploymentManager,
|
|
44
|
+
progressiveDeploymentManager,
|
|
45
|
+
} from './progressive';
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export declare const progressiveDeploymentManager: ProgressiveDeploymentManager;
|
|
2
|
+
/**
|
|
3
|
+
* Progressive Rollouts, Feature Flags, and Deployment Gates
|
|
4
|
+
*/
|
|
5
|
+
export declare interface ProgressiveRollout {
|
|
6
|
+
id: string
|
|
7
|
+
name: string
|
|
8
|
+
stages: Array<{ percentage: number; durationMinutes: number }>
|
|
9
|
+
currentStage: number
|
|
10
|
+
}
|
|
11
|
+
export declare interface FeatureFlag {
|
|
12
|
+
id: string
|
|
13
|
+
name: string
|
|
14
|
+
enabled: boolean
|
|
15
|
+
rolloutPercentage: number
|
|
16
|
+
targetingRules: Array<{ attribute: string; operator: string; value: any }>
|
|
17
|
+
}
|
|
18
|
+
export declare interface DeploymentGate {
|
|
19
|
+
id: string
|
|
20
|
+
name: string
|
|
21
|
+
type: 'manual' | 'automated'
|
|
22
|
+
approvers?: string[]
|
|
23
|
+
conditions?: Array<{ metric: string; threshold: number }>
|
|
24
|
+
}
|
|
25
|
+
export declare class ProgressiveDeploymentManager {
|
|
26
|
+
private rollouts: any;
|
|
27
|
+
private flags: any;
|
|
28
|
+
private gates: any;
|
|
29
|
+
private counter: any;
|
|
30
|
+
createProgressiveRollout(name: string, stages: Array<{ percentage: number; durationMinutes: number }>): ProgressiveRollout;
|
|
31
|
+
createFeatureFlag(name: string, rolloutPercentage?: any): FeatureFlag;
|
|
32
|
+
createDeploymentGate(name: string, type: 'manual' | 'automated', approvers?: string[], conditions?: Array<{ metric: string; threshold: number }>): DeploymentGate;
|
|
33
|
+
clear(): void;
|
|
34
|
+
}
|
|
File without changes
|