@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,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Email Analytics
|
|
3
|
+
*
|
|
4
|
+
* Provides open tracking, click tracking, and email metrics
|
|
5
|
+
*/
|
|
6
|
+
export interface EmailAnalytics {
|
|
7
|
+
messageId: string;
|
|
8
|
+
sent: boolean;
|
|
9
|
+
sentAt?: string;
|
|
10
|
+
delivered: boolean;
|
|
11
|
+
deliveredAt?: string;
|
|
12
|
+
opened: boolean;
|
|
13
|
+
openedAt?: string;
|
|
14
|
+
openCount: number;
|
|
15
|
+
clicked: boolean;
|
|
16
|
+
clickedAt?: string;
|
|
17
|
+
clickCount: number;
|
|
18
|
+
clicks: ClickEvent[];
|
|
19
|
+
bounced: boolean;
|
|
20
|
+
bouncedAt?: string;
|
|
21
|
+
bounceType?: string;
|
|
22
|
+
complained: boolean;
|
|
23
|
+
complainedAt?: string;
|
|
24
|
+
unsubscribed: boolean;
|
|
25
|
+
unsubscribedAt?: string;
|
|
26
|
+
}
|
|
27
|
+
export interface ClickEvent {
|
|
28
|
+
url: string;
|
|
29
|
+
clickedAt: string;
|
|
30
|
+
userAgent?: string;
|
|
31
|
+
ipAddress?: string;
|
|
32
|
+
}
|
|
33
|
+
export interface EmailMetrics {
|
|
34
|
+
period: string;
|
|
35
|
+
sent: number;
|
|
36
|
+
delivered: number;
|
|
37
|
+
opened: number;
|
|
38
|
+
clicked: number;
|
|
39
|
+
bounced: number;
|
|
40
|
+
complained: number;
|
|
41
|
+
unsubscribed: number;
|
|
42
|
+
deliveryRate: number;
|
|
43
|
+
openRate: number;
|
|
44
|
+
clickRate: number;
|
|
45
|
+
bounceRate: number;
|
|
46
|
+
complaintRate: number;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Email Analytics Module
|
|
50
|
+
*/
|
|
51
|
+
export declare class EmailAnalyticsModule {
|
|
52
|
+
/**
|
|
53
|
+
* Lambda code for tracking pixel (open tracking)
|
|
54
|
+
*/
|
|
55
|
+
static TrackingPixelLambdaCode: string;
|
|
56
|
+
/**
|
|
57
|
+
* Lambda code for click tracking
|
|
58
|
+
*/
|
|
59
|
+
static ClickTrackingLambdaCode: string;
|
|
60
|
+
/**
|
|
61
|
+
* Lambda code for processing SES events
|
|
62
|
+
*/
|
|
63
|
+
static SesEventProcessorCode: string;
|
|
64
|
+
/**
|
|
65
|
+
* Create analytics DynamoDB table
|
|
66
|
+
*/
|
|
67
|
+
static createAnalyticsTable(config: {
|
|
68
|
+
slug: string;
|
|
69
|
+
}): Record<string, any>;
|
|
70
|
+
/**
|
|
71
|
+
* Create tracking pixel Lambda
|
|
72
|
+
*/
|
|
73
|
+
static createTrackingPixelLambda(config: {
|
|
74
|
+
slug: string;
|
|
75
|
+
roleArn: string;
|
|
76
|
+
analyticsTable: string;
|
|
77
|
+
}): Record<string, any>;
|
|
78
|
+
/**
|
|
79
|
+
* Create click tracking Lambda
|
|
80
|
+
*/
|
|
81
|
+
static createClickTrackingLambda(config: {
|
|
82
|
+
slug: string;
|
|
83
|
+
roleArn: string;
|
|
84
|
+
analyticsTable: string;
|
|
85
|
+
}): Record<string, any>;
|
|
86
|
+
/**
|
|
87
|
+
* Create SES event processor Lambda
|
|
88
|
+
*/
|
|
89
|
+
static createSesEventProcessorLambda(config: {
|
|
90
|
+
slug: string;
|
|
91
|
+
roleArn: string;
|
|
92
|
+
analyticsTable: string;
|
|
93
|
+
}): Record<string, any>;
|
|
94
|
+
/**
|
|
95
|
+
* Inject tracking into email HTML
|
|
96
|
+
*/
|
|
97
|
+
static injectTracking(params: {
|
|
98
|
+
html: string;
|
|
99
|
+
messageId: string;
|
|
100
|
+
trackingDomain: string;
|
|
101
|
+
}): string;
|
|
102
|
+
/**
|
|
103
|
+
* Calculate email metrics for a period
|
|
104
|
+
*/
|
|
105
|
+
static calculateMetrics(analytics: EmailAnalytics[]): EmailMetrics;
|
|
106
|
+
}
|
|
107
|
+
export default EmailAnalyticsModule;
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Email Rules and Automation
|
|
3
|
+
*
|
|
4
|
+
* Provides email filtering, routing, and automation
|
|
5
|
+
*/
|
|
6
|
+
export interface EmailRule {
|
|
7
|
+
id: string;
|
|
8
|
+
name: string;
|
|
9
|
+
enabled: boolean;
|
|
10
|
+
priority: number;
|
|
11
|
+
conditions: RuleCondition[];
|
|
12
|
+
conditionOperator: 'and' | 'or';
|
|
13
|
+
actions: RuleAction[];
|
|
14
|
+
createdAt: string;
|
|
15
|
+
updatedAt: string;
|
|
16
|
+
}
|
|
17
|
+
export interface RuleCondition {
|
|
18
|
+
field: 'from' | 'to' | 'subject' | 'body' | 'headers' | 'attachments' | 'size';
|
|
19
|
+
operator: 'contains' | 'not-contains' | 'equals' | 'not-equals' | 'starts-with' | 'ends-with' | 'regex' | 'greater-than' | 'less-than';
|
|
20
|
+
value: string;
|
|
21
|
+
caseSensitive?: boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface RuleAction {
|
|
24
|
+
type: 'move' | 'copy' | 'delete' | 'label' | 'forward' | 'reply' | 'mark-read' | 'mark-starred' | 'webhook' | 'lambda';
|
|
25
|
+
params: Record<string, any>;
|
|
26
|
+
}
|
|
27
|
+
export interface AutomationWorkflow {
|
|
28
|
+
id: string;
|
|
29
|
+
name: string;
|
|
30
|
+
trigger: WorkflowTrigger;
|
|
31
|
+
steps: WorkflowStep[];
|
|
32
|
+
enabled: boolean;
|
|
33
|
+
}
|
|
34
|
+
export interface WorkflowTrigger {
|
|
35
|
+
type: 'email-received' | 'email-sent' | 'schedule' | 'webhook';
|
|
36
|
+
conditions?: RuleCondition[];
|
|
37
|
+
}
|
|
38
|
+
export interface WorkflowStep {
|
|
39
|
+
id: string;
|
|
40
|
+
type: 'delay' | 'condition' | 'action' | 'loop';
|
|
41
|
+
config: Record<string, any>;
|
|
42
|
+
next?: string;
|
|
43
|
+
onTrue?: string;
|
|
44
|
+
onFalse?: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Email Rules Module
|
|
48
|
+
*/
|
|
49
|
+
export declare class EmailRules {
|
|
50
|
+
/**
|
|
51
|
+
* Lambda code for rule processing
|
|
52
|
+
*/
|
|
53
|
+
static RuleProcessorCode: string;
|
|
54
|
+
/**
|
|
55
|
+
* Create rules DynamoDB table
|
|
56
|
+
*/
|
|
57
|
+
static createRulesTable(config: {
|
|
58
|
+
slug: string;
|
|
59
|
+
}): Record<string, any>;
|
|
60
|
+
/**
|
|
61
|
+
* Create rule processor Lambda
|
|
62
|
+
*/
|
|
63
|
+
static createRuleProcessorLambda(config: {
|
|
64
|
+
slug: string;
|
|
65
|
+
roleArn: string;
|
|
66
|
+
emailBucket: string;
|
|
67
|
+
rulesTable: string;
|
|
68
|
+
}): Record<string, any>;
|
|
69
|
+
/**
|
|
70
|
+
* Built-in rule templates
|
|
71
|
+
*/
|
|
72
|
+
static readonly RuleTemplates: {
|
|
73
|
+
readonly spamFilter: {
|
|
74
|
+
readonly name: "Spam Filter";
|
|
75
|
+
readonly conditions: readonly [{
|
|
76
|
+
readonly field: "subject";
|
|
77
|
+
readonly operator: "regex";
|
|
78
|
+
readonly value: "(viagra|lottery|winner|prince|inheritance)";
|
|
79
|
+
readonly caseSensitive: false;
|
|
80
|
+
}];
|
|
81
|
+
readonly conditionOperator: "or";
|
|
82
|
+
readonly actions: readonly [{
|
|
83
|
+
readonly type: "move";
|
|
84
|
+
readonly params: {
|
|
85
|
+
readonly folder: "spam";
|
|
86
|
+
};
|
|
87
|
+
}, {
|
|
88
|
+
readonly type: "mark-read";
|
|
89
|
+
readonly params: {};
|
|
90
|
+
}];
|
|
91
|
+
};
|
|
92
|
+
readonly autoLabel: {
|
|
93
|
+
readonly name: "Auto Label Invoices";
|
|
94
|
+
readonly conditions: readonly [{
|
|
95
|
+
readonly field: "subject";
|
|
96
|
+
readonly operator: "contains";
|
|
97
|
+
readonly value: "invoice";
|
|
98
|
+
readonly caseSensitive: false;
|
|
99
|
+
}];
|
|
100
|
+
readonly conditionOperator: "and";
|
|
101
|
+
readonly actions: readonly [{
|
|
102
|
+
readonly type: "label";
|
|
103
|
+
readonly params: {
|
|
104
|
+
readonly label: "invoices";
|
|
105
|
+
};
|
|
106
|
+
}];
|
|
107
|
+
};
|
|
108
|
+
readonly forwardUrgent: {
|
|
109
|
+
readonly name: "Forward Urgent";
|
|
110
|
+
readonly conditions: readonly [{
|
|
111
|
+
readonly field: "subject";
|
|
112
|
+
readonly operator: "contains";
|
|
113
|
+
readonly value: "urgent";
|
|
114
|
+
readonly caseSensitive: false;
|
|
115
|
+
}];
|
|
116
|
+
readonly conditionOperator: "and";
|
|
117
|
+
readonly actions: readonly [{
|
|
118
|
+
readonly type: "forward";
|
|
119
|
+
readonly params: {
|
|
120
|
+
readonly to: "admin@example.com";
|
|
121
|
+
};
|
|
122
|
+
}, {
|
|
123
|
+
readonly type: "label";
|
|
124
|
+
readonly params: {
|
|
125
|
+
readonly label: "urgent";
|
|
126
|
+
};
|
|
127
|
+
}];
|
|
128
|
+
};
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
export default EmailRules;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Email Scheduling (Send Later)
|
|
3
|
+
*
|
|
4
|
+
* Provides scheduled email sending functionality
|
|
5
|
+
*/
|
|
6
|
+
export interface ScheduledEmail {
|
|
7
|
+
id: string;
|
|
8
|
+
email: {
|
|
9
|
+
from: string;
|
|
10
|
+
to: string | string[];
|
|
11
|
+
cc?: string[];
|
|
12
|
+
bcc?: string[];
|
|
13
|
+
subject: string;
|
|
14
|
+
html?: string;
|
|
15
|
+
text?: string;
|
|
16
|
+
attachments?: Array<{
|
|
17
|
+
filename: string;
|
|
18
|
+
content: string;
|
|
19
|
+
contentType?: string;
|
|
20
|
+
}>;
|
|
21
|
+
};
|
|
22
|
+
scheduledFor: string;
|
|
23
|
+
timezone?: string;
|
|
24
|
+
status: 'pending' | 'sent' | 'failed' | 'cancelled';
|
|
25
|
+
createdAt: string;
|
|
26
|
+
sentAt?: string;
|
|
27
|
+
error?: string;
|
|
28
|
+
retryCount?: number;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Email Scheduling Module
|
|
32
|
+
*/
|
|
33
|
+
export declare class EmailScheduling {
|
|
34
|
+
/**
|
|
35
|
+
* Lambda code for processing scheduled emails
|
|
36
|
+
*/
|
|
37
|
+
static SchedulerLambdaCode: string;
|
|
38
|
+
/**
|
|
39
|
+
* Create scheduler Lambda function
|
|
40
|
+
*/
|
|
41
|
+
static createSchedulerLambda(config: {
|
|
42
|
+
slug: string;
|
|
43
|
+
roleArn: string;
|
|
44
|
+
emailBucket: string;
|
|
45
|
+
}): Record<string, any>;
|
|
46
|
+
/**
|
|
47
|
+
* Create EventBridge rule to trigger scheduler
|
|
48
|
+
*/
|
|
49
|
+
static createSchedulerRule(config: {
|
|
50
|
+
slug: string;
|
|
51
|
+
lambdaArn: string;
|
|
52
|
+
scheduleExpression?: string;
|
|
53
|
+
}): Record<string, any>;
|
|
54
|
+
/**
|
|
55
|
+
* Schedule an email (SDK helper)
|
|
56
|
+
*/
|
|
57
|
+
static scheduleEmail(params: {
|
|
58
|
+
s3Client: any;
|
|
59
|
+
bucket: string;
|
|
60
|
+
email: ScheduledEmail['email'];
|
|
61
|
+
scheduledFor: Date | string;
|
|
62
|
+
timezone?: string;
|
|
63
|
+
}): Promise<ScheduledEmail>;
|
|
64
|
+
/**
|
|
65
|
+
* Cancel a scheduled email
|
|
66
|
+
*/
|
|
67
|
+
static cancelScheduledEmail(params: {
|
|
68
|
+
s3Client: any;
|
|
69
|
+
bucket: string;
|
|
70
|
+
id: string;
|
|
71
|
+
}): Promise<boolean>;
|
|
72
|
+
/**
|
|
73
|
+
* List scheduled emails
|
|
74
|
+
*/
|
|
75
|
+
static listScheduledEmails(params: {
|
|
76
|
+
s3Client: any;
|
|
77
|
+
bucket: string;
|
|
78
|
+
status?: ScheduledEmail['status'];
|
|
79
|
+
}): Promise<ScheduledEmail[]>;
|
|
80
|
+
}
|
|
81
|
+
export default EmailScheduling;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Email Search and Indexing
|
|
3
|
+
*
|
|
4
|
+
* Provides OpenSearch integration for email search functionality
|
|
5
|
+
*/
|
|
6
|
+
export interface EmailSearchConfig {
|
|
7
|
+
slug: string;
|
|
8
|
+
environment: string;
|
|
9
|
+
domainName?: string;
|
|
10
|
+
instanceType?: string;
|
|
11
|
+
instanceCount?: number;
|
|
12
|
+
ebsVolumeSize?: number;
|
|
13
|
+
masterUserName?: string;
|
|
14
|
+
masterUserPassword?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface EmailSearchDocument {
|
|
17
|
+
messageId: string;
|
|
18
|
+
from: string;
|
|
19
|
+
fromName?: string;
|
|
20
|
+
to: string;
|
|
21
|
+
toName?: string;
|
|
22
|
+
cc?: string[];
|
|
23
|
+
subject: string;
|
|
24
|
+
body: string;
|
|
25
|
+
bodyPreview: string;
|
|
26
|
+
date: string;
|
|
27
|
+
receivedAt: string;
|
|
28
|
+
hasAttachments: boolean;
|
|
29
|
+
attachmentNames?: string[];
|
|
30
|
+
labels?: string[];
|
|
31
|
+
folder: string;
|
|
32
|
+
threadId?: string;
|
|
33
|
+
isRead: boolean;
|
|
34
|
+
isStarred?: boolean;
|
|
35
|
+
mailbox: string;
|
|
36
|
+
}
|
|
37
|
+
export interface SearchQuery {
|
|
38
|
+
query: string;
|
|
39
|
+
from?: string;
|
|
40
|
+
to?: string;
|
|
41
|
+
subject?: string;
|
|
42
|
+
hasAttachments?: boolean;
|
|
43
|
+
dateFrom?: string;
|
|
44
|
+
dateTo?: string;
|
|
45
|
+
folder?: string;
|
|
46
|
+
labels?: string[];
|
|
47
|
+
isRead?: boolean;
|
|
48
|
+
limit?: number;
|
|
49
|
+
offset?: number;
|
|
50
|
+
sort?: 'date' | 'relevance';
|
|
51
|
+
sortOrder?: 'asc' | 'desc';
|
|
52
|
+
}
|
|
53
|
+
export interface SearchResult {
|
|
54
|
+
total: number;
|
|
55
|
+
hits: Array<{
|
|
56
|
+
score: number;
|
|
57
|
+
document: EmailSearchDocument;
|
|
58
|
+
highlights?: Record<string, string[]>;
|
|
59
|
+
}>;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Email Search Module
|
|
63
|
+
*/
|
|
64
|
+
export declare class EmailSearch {
|
|
65
|
+
/**
|
|
66
|
+
* Create OpenSearch domain for email indexing
|
|
67
|
+
*/
|
|
68
|
+
static createSearchDomain(config: EmailSearchConfig): Record<string, any>;
|
|
69
|
+
/**
|
|
70
|
+
* Create Lambda for indexing emails
|
|
71
|
+
*/
|
|
72
|
+
static createIndexerLambda(config: {
|
|
73
|
+
slug: string;
|
|
74
|
+
roleArn: string;
|
|
75
|
+
searchDomainEndpoint: string;
|
|
76
|
+
emailBucket: string;
|
|
77
|
+
}): Record<string, any>;
|
|
78
|
+
/**
|
|
79
|
+
* Lambda code for email indexing
|
|
80
|
+
*/
|
|
81
|
+
static IndexerLambdaCode: string;
|
|
82
|
+
/**
|
|
83
|
+
* Create email index mapping
|
|
84
|
+
*/
|
|
85
|
+
static getIndexMapping(): Record<string, any>;
|
|
86
|
+
/**
|
|
87
|
+
* Build OpenSearch query from search parameters
|
|
88
|
+
*/
|
|
89
|
+
static buildSearchQuery(params: SearchQuery): Record<string, any>;
|
|
90
|
+
}
|
|
91
|
+
export default EmailSearch;
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Mailboxes for Teams
|
|
3
|
+
*
|
|
4
|
+
* Provides shared mailbox functionality with team access
|
|
5
|
+
*/
|
|
6
|
+
export interface SharedMailbox {
|
|
7
|
+
id: string;
|
|
8
|
+
address: string;
|
|
9
|
+
displayName: string;
|
|
10
|
+
description?: string;
|
|
11
|
+
members: MailboxMember[];
|
|
12
|
+
settings: MailboxSettings;
|
|
13
|
+
createdAt: string;
|
|
14
|
+
updatedAt: string;
|
|
15
|
+
}
|
|
16
|
+
export interface MailboxMember {
|
|
17
|
+
userId: string;
|
|
18
|
+
email: string;
|
|
19
|
+
name?: string;
|
|
20
|
+
role: 'owner' | 'admin' | 'member' | 'viewer';
|
|
21
|
+
permissions: MailboxPermissions;
|
|
22
|
+
addedAt: string;
|
|
23
|
+
addedBy: string;
|
|
24
|
+
}
|
|
25
|
+
export interface MailboxPermissions {
|
|
26
|
+
read: boolean;
|
|
27
|
+
send: boolean;
|
|
28
|
+
delete: boolean;
|
|
29
|
+
manage: boolean;
|
|
30
|
+
assignTo: boolean;
|
|
31
|
+
}
|
|
32
|
+
export interface MailboxSettings {
|
|
33
|
+
autoAssign: boolean;
|
|
34
|
+
assignmentStrategy: 'round-robin' | 'least-busy' | 'manual';
|
|
35
|
+
notifyOnNew: boolean;
|
|
36
|
+
notifyMembers: string[];
|
|
37
|
+
signature?: string;
|
|
38
|
+
autoResponder?: {
|
|
39
|
+
enabled: boolean;
|
|
40
|
+
subject: string;
|
|
41
|
+
body: string;
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
export interface MailboxAssignment {
|
|
45
|
+
messageId: string;
|
|
46
|
+
assignedTo: string;
|
|
47
|
+
assignedBy: string;
|
|
48
|
+
assignedAt: string;
|
|
49
|
+
status: 'open' | 'in-progress' | 'resolved' | 'closed';
|
|
50
|
+
notes?: string;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Shared Mailboxes Module
|
|
54
|
+
*/
|
|
55
|
+
export declare class SharedMailboxes {
|
|
56
|
+
/**
|
|
57
|
+
* Lambda code for shared mailbox management
|
|
58
|
+
*/
|
|
59
|
+
static SharedMailboxLambdaCode: string;
|
|
60
|
+
/**
|
|
61
|
+
* Create shared mailbox DynamoDB table
|
|
62
|
+
*/
|
|
63
|
+
static createMailboxTable(config: {
|
|
64
|
+
slug: string;
|
|
65
|
+
}): Record<string, any>;
|
|
66
|
+
/**
|
|
67
|
+
* Create shared mailbox Lambda
|
|
68
|
+
*/
|
|
69
|
+
static createSharedMailboxLambda(config: {
|
|
70
|
+
slug: string;
|
|
71
|
+
roleArn: string;
|
|
72
|
+
emailBucket: string;
|
|
73
|
+
mailboxTable: string;
|
|
74
|
+
}): Record<string, any>;
|
|
75
|
+
/**
|
|
76
|
+
* Default permission sets
|
|
77
|
+
*/
|
|
78
|
+
static readonly PermissionSets: {
|
|
79
|
+
readonly owner: {
|
|
80
|
+
readonly read: true;
|
|
81
|
+
readonly send: true;
|
|
82
|
+
readonly delete: true;
|
|
83
|
+
readonly manage: true;
|
|
84
|
+
readonly assignTo: true;
|
|
85
|
+
};
|
|
86
|
+
readonly admin: {
|
|
87
|
+
readonly read: true;
|
|
88
|
+
readonly send: true;
|
|
89
|
+
readonly delete: true;
|
|
90
|
+
readonly manage: true;
|
|
91
|
+
readonly assignTo: true;
|
|
92
|
+
};
|
|
93
|
+
readonly member: {
|
|
94
|
+
readonly read: true;
|
|
95
|
+
readonly send: true;
|
|
96
|
+
readonly delete: false;
|
|
97
|
+
readonly manage: false;
|
|
98
|
+
readonly assignTo: true;
|
|
99
|
+
};
|
|
100
|
+
readonly viewer: {
|
|
101
|
+
readonly read: true;
|
|
102
|
+
readonly send: false;
|
|
103
|
+
readonly delete: false;
|
|
104
|
+
readonly manage: false;
|
|
105
|
+
readonly assignTo: false;
|
|
106
|
+
};
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
export default SharedMailboxes;
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Email Templates with Stacks Views
|
|
3
|
+
*
|
|
4
|
+
* Provides template management and rendering
|
|
5
|
+
*/
|
|
6
|
+
export interface EmailTemplate {
|
|
7
|
+
id: string;
|
|
8
|
+
name: string;
|
|
9
|
+
subject: string;
|
|
10
|
+
html: string;
|
|
11
|
+
text?: string;
|
|
12
|
+
variables: string[];
|
|
13
|
+
category?: string;
|
|
14
|
+
createdAt: string;
|
|
15
|
+
updatedAt: string;
|
|
16
|
+
version: number;
|
|
17
|
+
}
|
|
18
|
+
export interface TemplateRenderOptions {
|
|
19
|
+
data: Record<string, any>;
|
|
20
|
+
locale?: string;
|
|
21
|
+
timezone?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Email Templates Module
|
|
25
|
+
*/
|
|
26
|
+
export declare class EmailTemplates {
|
|
27
|
+
/**
|
|
28
|
+
* Lambda code for template rendering
|
|
29
|
+
*/
|
|
30
|
+
static TemplateRendererCode: string;
|
|
31
|
+
/**
|
|
32
|
+
* Built-in email templates
|
|
33
|
+
*/
|
|
34
|
+
static BuiltInTemplates: {
|
|
35
|
+
welcome: {
|
|
36
|
+
id: string;
|
|
37
|
+
name: string;
|
|
38
|
+
subject: string;
|
|
39
|
+
html: string;
|
|
40
|
+
text: string;
|
|
41
|
+
variables: readonly ["appName", "userName", "verificationUrl"];
|
|
42
|
+
category: string;
|
|
43
|
+
};
|
|
44
|
+
passwordReset: {
|
|
45
|
+
id: string;
|
|
46
|
+
name: string;
|
|
47
|
+
subject: string;
|
|
48
|
+
html: string;
|
|
49
|
+
text: string;
|
|
50
|
+
variables: readonly ["appName", "userName", "resetUrl", "expiresIn"];
|
|
51
|
+
category: string;
|
|
52
|
+
};
|
|
53
|
+
notification: {
|
|
54
|
+
id: string;
|
|
55
|
+
name: string;
|
|
56
|
+
subject: string;
|
|
57
|
+
html: string;
|
|
58
|
+
text: string;
|
|
59
|
+
variables: readonly ["subject", "title", "message", "actionUrl", "actionText", "appName"];
|
|
60
|
+
category: string;
|
|
61
|
+
};
|
|
62
|
+
invoice: {
|
|
63
|
+
id: string;
|
|
64
|
+
name: string;
|
|
65
|
+
subject: string;
|
|
66
|
+
html: string;
|
|
67
|
+
variables: readonly ["invoiceNumber", "customerName", "period", "items", "total", "paymentUrl", "appName"];
|
|
68
|
+
category: string;
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Create template storage bucket
|
|
73
|
+
*/
|
|
74
|
+
static createTemplateBucket(config: {
|
|
75
|
+
slug: string;
|
|
76
|
+
}): Record<string, any>;
|
|
77
|
+
/**
|
|
78
|
+
* Create template renderer Lambda
|
|
79
|
+
*/
|
|
80
|
+
static createTemplateRendererLambda(config: {
|
|
81
|
+
slug: string;
|
|
82
|
+
roleArn: string;
|
|
83
|
+
templateBucket: string;
|
|
84
|
+
}): Record<string, any>;
|
|
85
|
+
/**
|
|
86
|
+
* Render a template with data (SDK helper)
|
|
87
|
+
*/
|
|
88
|
+
static render(template: string, data: Record<string, any>): string;
|
|
89
|
+
private static getNestedValue;
|
|
90
|
+
/**
|
|
91
|
+
* Extract variables from template
|
|
92
|
+
*/
|
|
93
|
+
static extractVariables(template: string): string[];
|
|
94
|
+
}
|
|
95
|
+
export default EmailTemplates;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Email Threading and Conversation View
|
|
3
|
+
*
|
|
4
|
+
* Groups emails into conversations based on subject and references
|
|
5
|
+
*/
|
|
6
|
+
export interface EmailThread {
|
|
7
|
+
threadId: string;
|
|
8
|
+
subject: string;
|
|
9
|
+
participants: string[];
|
|
10
|
+
messageCount: number;
|
|
11
|
+
unreadCount: number;
|
|
12
|
+
lastMessageDate: string;
|
|
13
|
+
firstMessageDate: string;
|
|
14
|
+
messages: ThreadMessage[];
|
|
15
|
+
labels?: string[];
|
|
16
|
+
isStarred?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface ThreadMessage {
|
|
19
|
+
messageId: string;
|
|
20
|
+
from: string;
|
|
21
|
+
fromName?: string;
|
|
22
|
+
to: string[];
|
|
23
|
+
cc?: string[];
|
|
24
|
+
date: string;
|
|
25
|
+
bodyPreview: string;
|
|
26
|
+
isRead: boolean;
|
|
27
|
+
hasAttachments: boolean;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Email Threading Module
|
|
31
|
+
*/
|
|
32
|
+
export declare class EmailThreading {
|
|
33
|
+
/**
|
|
34
|
+
* Lambda code for threading emails
|
|
35
|
+
*/
|
|
36
|
+
static ThreadingLambdaCode: string;
|
|
37
|
+
/**
|
|
38
|
+
* Create threading Lambda function
|
|
39
|
+
*/
|
|
40
|
+
static createThreadingLambda(config: {
|
|
41
|
+
slug: string;
|
|
42
|
+
roleArn: string;
|
|
43
|
+
emailBucket: string;
|
|
44
|
+
}): Record<string, any>;
|
|
45
|
+
/**
|
|
46
|
+
* Get threads for a mailbox (SDK helper)
|
|
47
|
+
*/
|
|
48
|
+
static getThreads(params: {
|
|
49
|
+
s3Client: any;
|
|
50
|
+
bucket: string;
|
|
51
|
+
mailbox: string;
|
|
52
|
+
limit?: number;
|
|
53
|
+
offset?: number;
|
|
54
|
+
}): Promise<EmailThread[]>;
|
|
55
|
+
/**
|
|
56
|
+
* Get a specific thread
|
|
57
|
+
*/
|
|
58
|
+
static getThread(params: {
|
|
59
|
+
s3Client: any;
|
|
60
|
+
bucket: string;
|
|
61
|
+
mailbox: string;
|
|
62
|
+
threadId: string;
|
|
63
|
+
}): Promise<EmailThread | null>;
|
|
64
|
+
}
|
|
65
|
+
export default EmailThreading;
|