@astralibx/email-rule-engine 1.0.1 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +49 -165
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/schemas/rule.schema.d.ts +1 -1
- package/dist/schemas/rule.schema.d.ts.map +1 -1
- package/dist/schemas/rule.schema.js +2 -2
- package/dist/schemas/rule.schema.js.map +1 -1
- package/dist/schemas/template.schema.d.ts +1 -1
- package/dist/schemas/template.schema.d.ts.map +1 -1
- package/dist/schemas/template.schema.js +2 -2
- package/dist/schemas/template.schema.js.map +1 -1
- package/dist/services/rule-runner.service.d.ts.map +1 -1
- package/dist/services/rule-runner.service.js +27 -1
- package/dist/services/rule-runner.service.js.map +1 -1
- package/dist/types/config.types.d.ts +36 -1
- package/dist/types/config.types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,190 +2,74 @@
|
|
|
2
2
|
|
|
3
3
|
Rule-based email automation engine with MJML + Handlebars templates, per-user throttling, and Redis distributed locking.
|
|
4
4
|
|
|
5
|
-
##
|
|
6
|
-
|
|
7
|
-
- **Templates**: MJML + Handlebars email templates with CRUD, validation, preview, and variable extraction
|
|
8
|
-
- **Rules**: Condition-based rules that target users and send templated emails
|
|
9
|
-
- **Throttling**: Per-user daily/weekly limits with configurable minimum gap between emails
|
|
10
|
-
- **Distributed Locking**: Redis-based locks prevent concurrent rule runs
|
|
11
|
-
- **Run History**: Detailed logging of every rule execution with per-rule stats
|
|
12
|
-
- **Draft Workflow**: Supports draft → approve → send pipeline via adapter
|
|
13
|
-
|
|
14
|
-
## Quick Start
|
|
5
|
+
## Install
|
|
15
6
|
|
|
16
7
|
```bash
|
|
17
8
|
npm install @astralibx/email-rule-engine
|
|
18
9
|
```
|
|
19
10
|
|
|
11
|
+
## Quick Start
|
|
12
|
+
|
|
20
13
|
```typescript
|
|
21
14
|
import { createEmailRuleEngine } from '@astralibx/email-rule-engine';
|
|
22
15
|
import mongoose from 'mongoose';
|
|
23
16
|
import Redis from 'ioredis';
|
|
24
17
|
|
|
25
|
-
const dbConnection = mongoose.createConnection('mongodb://localhost/myapp');
|
|
26
|
-
const redis = new Redis();
|
|
27
|
-
|
|
28
18
|
const engine = createEmailRuleEngine({
|
|
29
|
-
db: { connection:
|
|
30
|
-
redis: { connection:
|
|
31
|
-
|
|
32
|
-
// Your platform values (used for enum validation in schemas)
|
|
33
|
-
platforms: ['web', 'mobile', 'both'],
|
|
34
|
-
|
|
19
|
+
db: { connection: mongoose.createConnection('mongodb://localhost/myapp') },
|
|
20
|
+
redis: { connection: new Redis() },
|
|
35
21
|
adapters: {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
.toArray();
|
|
42
|
-
},
|
|
43
|
-
|
|
44
|
-
// Transform user record into template variables
|
|
45
|
-
resolveData: (user) => ({
|
|
46
|
-
recipient: { name: user.name, email: user.email },
|
|
47
|
-
platform: { name: 'My App', domain: 'myapp.com' }
|
|
48
|
-
}),
|
|
49
|
-
|
|
50
|
-
// Deliver the email (save as draft, send directly, queue — your choice)
|
|
51
|
-
sendEmail: async (params) => {
|
|
52
|
-
await myEmailService.send({
|
|
53
|
-
to: params.identifierId,
|
|
54
|
-
subject: params.subject,
|
|
55
|
-
html: params.htmlBody,
|
|
56
|
-
text: params.textBody
|
|
57
|
-
});
|
|
58
|
-
},
|
|
59
|
-
|
|
60
|
-
// Select a sending account (return null to skip recipient)
|
|
61
|
-
selectAgent: async (identifierId) => {
|
|
62
|
-
const account = await myAccounts.findBest();
|
|
63
|
-
return account ? { accountId: account.id } : null;
|
|
64
|
-
},
|
|
65
|
-
|
|
66
|
-
// Map email address to your identifier system
|
|
67
|
-
findIdentifier: async (email) => {
|
|
68
|
-
const id = await myIdentifiers.findByEmail(email);
|
|
69
|
-
return id ? { id: id._id, contactId: id.contactId } : null;
|
|
70
|
-
},
|
|
71
|
-
|
|
72
|
-
// Optional: send test emails
|
|
73
|
-
sendTestEmail: async (to, subject, html, text) => {
|
|
74
|
-
await mySmtp.send({ to, subject, html, text });
|
|
75
|
-
}
|
|
22
|
+
queryUsers: async (target, limit) => db.collection('users').find({ role: target.role }).limit(limit).toArray(),
|
|
23
|
+
resolveData: (user) => ({ user: { name: user.name, email: user.email }, platform: { name: 'MyApp' } }),
|
|
24
|
+
sendEmail: async (params) => transporter.sendMail({ to: params.identifierId, subject: params.subject, html: params.htmlBody }),
|
|
25
|
+
selectAgent: async () => ({ accountId: 'default' }),
|
|
26
|
+
findIdentifier: async (email) => { const c = await Contacts.findOne({ email }); return c ? { id: c._id.toString(), contactId: c._id.toString() } : null; },
|
|
76
27
|
},
|
|
77
|
-
|
|
78
|
-
logger: console,
|
|
79
|
-
|
|
80
|
-
options: {
|
|
81
|
-
lockTTLMs: 30 * 60 * 1000, // 30 min lock timeout
|
|
82
|
-
defaultMaxPerRun: 500 // max users per rule execution
|
|
83
|
-
}
|
|
84
28
|
});
|
|
85
29
|
|
|
86
|
-
// Mount Express routes
|
|
87
30
|
app.use('/api/email-rules', engine.routes);
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Features & Documentation
|
|
34
|
+
|
|
35
|
+
| Feature | Description | Docs |
|
|
36
|
+
|---------|-------------|------|
|
|
37
|
+
| Adapters | Connect to your data, delivery, and accounts | [adapters.md](docs/adapters.md) |
|
|
38
|
+
| Templates | MJML + Handlebars responsive email templates | [templates.md](docs/templates.md) |
|
|
39
|
+
| Rules | Condition-based targeting and automation | [rules.md](docs/rules.md) |
|
|
40
|
+
| Throttling | Per-user daily/weekly rate limits | [throttling.md](docs/throttling.md) |
|
|
41
|
+
| Send Window | Time-based execution control | [send-window.md](docs/send-window.md) |
|
|
42
|
+
| Delivery Delays | Natural send spread with jitter | [delivery-delays.md](docs/delivery-delays.md) |
|
|
43
|
+
| Progress Hooks | Live execution tracking callbacks | [progress-hooks.md](docs/progress-hooks.md) |
|
|
44
|
+
| SMTP Pooling | Efficient email delivery patterns | [smtp-pooling.md](docs/smtp-pooling.md) |
|
|
45
|
+
| Account Rotation | Multi-account sending with quotas | [account-rotation.md](docs/account-rotation.md) |
|
|
46
|
+
| Email Validation | MX checks and domain validation | [email-validation.md](docs/email-validation.md) |
|
|
47
|
+
| Execution Flow | How the runner processes rules | [execution-flow.md](docs/execution-flow.md) |
|
|
48
|
+
| API Routes | REST endpoint reference | [api-routes.md](docs/api-routes.md) |
|
|
49
|
+
| Config Reference | Full configuration options | [config-reference.md](docs/config-reference.md) |
|
|
50
|
+
|
|
51
|
+
## Prerequisites
|
|
52
|
+
|
|
53
|
+
| Dependency | Version | Purpose |
|
|
54
|
+
|------------|---------|---------|
|
|
55
|
+
| Node.js | >= 18 | Runtime |
|
|
56
|
+
| MongoDB | >= 5.0 | Data storage (5 collections auto-created) |
|
|
57
|
+
| Redis | >= 6.0 | Distributed locking |
|
|
58
|
+
|
|
59
|
+
### Peer Dependencies
|
|
88
60
|
|
|
89
|
-
|
|
90
|
-
|
|
61
|
+
```bash
|
|
62
|
+
npm install express mongoose ioredis handlebars mjml html-to-text
|
|
91
63
|
```
|
|
92
64
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
|
99
|
-
|
|
100
|
-
|
|
|
101
|
-
| POST | `/templates` | Create new template |
|
|
102
|
-
| GET | `/templates/:id` | Get template by ID |
|
|
103
|
-
| PUT | `/templates/:id` | Update template |
|
|
104
|
-
| DELETE | `/templates/:id` | Delete template |
|
|
105
|
-
| PATCH | `/templates/:id/toggle` | Toggle active/inactive |
|
|
106
|
-
| POST | `/templates/:id/preview` | Render preview with sample data |
|
|
107
|
-
| POST | `/templates/:id/test-email` | Send test email |
|
|
108
|
-
| POST | `/templates/validate` | Validate MJML + Handlebars syntax |
|
|
109
|
-
| POST | `/templates/preview` | Preview raw template (without saving) |
|
|
110
|
-
|
|
111
|
-
### Rules
|
|
112
|
-
| Method | Path | Description |
|
|
113
|
-
|--------|------|-------------|
|
|
114
|
-
| GET | `/rules` | List all rules (with populated template info) |
|
|
115
|
-
| POST | `/rules` | Create new rule |
|
|
116
|
-
| GET | `/rules/:id` | Get rule by ID |
|
|
117
|
-
| PATCH | `/rules/:id` | Update rule |
|
|
118
|
-
| DELETE | `/rules/:id` | Delete (or disable if has send history) |
|
|
119
|
-
| PATCH | `/rules/:id/toggle` | Toggle active/inactive |
|
|
120
|
-
| POST | `/rules/:id/dry-run` | Count matching users without sending |
|
|
121
|
-
| GET | `/rules/run-history` | Get execution history |
|
|
122
|
-
|
|
123
|
-
### Runner
|
|
124
|
-
| Method | Path | Description |
|
|
125
|
-
|--------|------|-------------|
|
|
126
|
-
| POST | `/runner` | Trigger manual rule run (fire-and-forget) |
|
|
127
|
-
| GET | `/runner/status` | Get latest run result |
|
|
128
|
-
|
|
129
|
-
### Settings
|
|
130
|
-
| Method | Path | Description |
|
|
131
|
-
|--------|------|-------------|
|
|
132
|
-
| GET | `/settings/throttle` | Get throttle configuration |
|
|
133
|
-
| PATCH | `/settings/throttle` | Update throttle limits |
|
|
134
|
-
|
|
135
|
-
## Config Reference
|
|
136
|
-
|
|
137
|
-
### `EmailRuleEngineConfig`
|
|
138
|
-
|
|
139
|
-
| Field | Type | Required | Description |
|
|
140
|
-
|-------|------|----------|-------------|
|
|
141
|
-
| `db.connection` | `mongoose.Connection` | Yes | Mongoose connection for rule engine collections |
|
|
142
|
-
| `db.collectionPrefix` | `string` | No | Prefix for collection names (e.g., `'myapp_'`) |
|
|
143
|
-
| `redis.connection` | `Redis` | Yes | ioredis instance for distributed locking |
|
|
144
|
-
| `redis.keyPrefix` | `string` | No | Prefix for Redis keys (e.g., `'myapp:'`) |
|
|
145
|
-
| `platforms` | `string[]` | No | Valid platform values for schema validation |
|
|
146
|
-
| `adapters` | object | Yes | Project-specific callbacks (see below) |
|
|
147
|
-
| `logger` | `LogAdapter` | No | Logger with info/warn/error methods |
|
|
148
|
-
| `options.lockTTLMs` | `number` | No | Lock timeout in ms (default: 30 min) |
|
|
149
|
-
| `options.defaultMaxPerRun` | `number` | No | Default user limit per rule (default: 500) |
|
|
150
|
-
|
|
151
|
-
### Adapters
|
|
152
|
-
|
|
153
|
-
| Adapter | Signature | Description |
|
|
154
|
-
|---------|-----------|-------------|
|
|
155
|
-
| `queryUsers` | `(target, limit) => Promise<Record[]>` | Find users matching rule conditions |
|
|
156
|
-
| `resolveData` | `(user) => Record` | Map user to template variables |
|
|
157
|
-
| `sendEmail` | `(params) => Promise<void>` | Deliver or draft the email |
|
|
158
|
-
| `selectAgent` | `(identifierId) => Promise<{accountId} \| null>` | Pick sending account |
|
|
159
|
-
| `findIdentifier` | `(email) => Promise<{id, contactId} \| null>` | Map email to identifier |
|
|
160
|
-
| `sendTestEmail` | `(to, subject, html, text) => Promise<void>` | Optional: send test emails |
|
|
161
|
-
|
|
162
|
-
## Handlebars Helpers
|
|
163
|
-
|
|
164
|
-
Built-in template helpers available in all templates:
|
|
165
|
-
|
|
166
|
-
| Helper | Usage | Output |
|
|
167
|
-
|--------|-------|--------|
|
|
168
|
-
| `currency` | `{{currency 1500}}` | `₹1,500` |
|
|
169
|
-
| `formatDate` | `{{formatDate date}}` | `13 Mar 2026` |
|
|
170
|
-
| `capitalize` | `{{capitalize "hello"}}` | `Hello` |
|
|
171
|
-
| `lowercase` | `{{lowercase "HELLO"}}` | `hello` |
|
|
172
|
-
| `uppercase` | `{{uppercase "hello"}}` | `HELLO` |
|
|
173
|
-
| `join` | `{{join items ", "}}` | `a, b, c` |
|
|
174
|
-
| `pluralize` | `{{pluralize count "item" "items"}}` | `items` |
|
|
175
|
-
| `eq/neq/gt/lt/gte/lte` | `{{#if (eq a b)}}` | Comparison |
|
|
176
|
-
| `not` | `{{#if (not val)}}` | Negation |
|
|
177
|
-
|
|
178
|
-
## Collections Created
|
|
179
|
-
|
|
180
|
-
The engine creates these MongoDB collections (prefixed if configured):
|
|
181
|
-
|
|
182
|
-
| Collection | Purpose | TTL |
|
|
183
|
-
|------------|---------|-----|
|
|
184
|
-
| `email_templates` | MJML + Handlebars templates | - |
|
|
185
|
-
| `email_rules` | Automation rules with conditions | - |
|
|
186
|
-
| `email_rule_sends` | Per-user send tracking (dedup) | - |
|
|
187
|
-
| `email_rule_run_logs` | Execution history | 90 days |
|
|
188
|
-
| `email_throttle_config` | Throttle settings (singleton) | - |
|
|
65
|
+
| Package | Version | Purpose |
|
|
66
|
+
|---------|---------|---------|
|
|
67
|
+
| `express` | ^4.18 or ^5.0 | HTTP routes |
|
|
68
|
+
| `mongoose` | ^7.0 or ^8.0 | MongoDB ODM |
|
|
69
|
+
| `ioredis` | ^5.0 | Redis client |
|
|
70
|
+
| `handlebars` | ^4.7 | Template variables |
|
|
71
|
+
| `mjml` | ^4.0 | Responsive email HTML |
|
|
72
|
+
| `html-to-text` | ^9.0 | Plain text fallback |
|
|
189
73
|
|
|
190
74
|
## License
|
|
191
75
|
|
package/dist/index.js
CHANGED
|
@@ -28,8 +28,8 @@ const routes_1 = require("./routes");
|
|
|
28
28
|
function createEmailRuleEngine(config) {
|
|
29
29
|
const conn = config.db.connection;
|
|
30
30
|
const prefix = config.db.collectionPrefix || '';
|
|
31
|
-
const EmailTemplate = conn.model(`${prefix}EmailTemplate`, (0, template_schema_1.createEmailTemplateSchema)(config.platforms));
|
|
32
|
-
const EmailRule = conn.model(`${prefix}EmailRule`, (0, rule_schema_1.createEmailRuleSchema)(config.platforms));
|
|
31
|
+
const EmailTemplate = conn.model(`${prefix}EmailTemplate`, (0, template_schema_1.createEmailTemplateSchema)(config.platforms, config.audiences));
|
|
32
|
+
const EmailRule = conn.model(`${prefix}EmailRule`, (0, rule_schema_1.createEmailRuleSchema)(config.platforms, config.audiences));
|
|
33
33
|
const EmailRuleSend = conn.model(`${prefix}EmailRuleSend`, (0, rule_send_schema_1.createEmailRuleSendSchema)());
|
|
34
34
|
const EmailRuleRunLog = conn.model(`${prefix}EmailRuleRunLog`, (0, run_log_schema_1.createEmailRuleRunLogSchema)());
|
|
35
35
|
const EmailThrottleConfig = conn.model(`${prefix}EmailThrottleConfig`, (0, throttle_config_schema_1.createEmailThrottleConfigSchema)());
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AA0BA,sDAmDC;AA5ED,+DAA+F;AAC/F,uDAAmF;AACnF,iEAAgG;AAChG,6DAAkG;AAClG,6EAAkH;AAClH,kEAA8D;AAC9D,0DAAsD;AACtD,wEAAmE;AACnE,qCAAwC;AAiBxC,SAAgB,qBAAqB,CAAC,MAA6B;IACjE,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC;IAClC,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,gBAAgB,IAAI,EAAE,CAAC;IAEhD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAC9B,GAAG,MAAM,eAAe,EACxB,IAAA,2CAAyB,EAAC,MAAM,CAAC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AA0BA,sDAmDC;AA5ED,+DAA+F;AAC/F,uDAAmF;AACnF,iEAAgG;AAChG,6DAAkG;AAClG,6EAAkH;AAClH,kEAA8D;AAC9D,0DAAsD;AACtD,wEAAmE;AACnE,qCAAwC;AAiBxC,SAAgB,qBAAqB,CAAC,MAA6B;IACjE,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC;IAClC,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,gBAAgB,IAAI,EAAE,CAAC;IAEhD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAC9B,GAAG,MAAM,eAAe,EACxB,IAAA,2CAAyB,EAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,CACxC,CAAC;IAExB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAC1B,GAAG,MAAM,WAAW,EACpB,IAAA,mCAAqB,EAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,CACxC,CAAC;IAEpB,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAC9B,GAAG,MAAM,eAAe,EACxB,IAAA,4CAAyB,GAAE,CACN,CAAC;IAExB,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAChC,GAAG,MAAM,iBAAiB,EAC1B,IAAA,4CAA2B,GAAE,CACN,CAAC;IAE1B,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CACpC,GAAG,MAAM,qBAAqB,EAC9B,IAAA,wDAA+B,GAAE,CACN,CAAC;IAE9B,MAAM,eAAe,GAAG,IAAI,kCAAe,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACnE,MAAM,WAAW,GAAG,IAAI,0BAAW,CAAC,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;IACvF,MAAM,aAAa,GAAG,IAAI,uCAAiB,CACzC,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,CACtF,CAAC;IAEF,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC;QAC1B,eAAe;QACf,WAAW;QACX,aAAa;QACb,eAAe;QACf,mBAAmB;QACnB,cAAc,EAAE,MAAM,CAAC,SAAS;KACjC,CAAC,CAAC;IAEH,OAAO;QACL,MAAM;QACN,MAAM,EAAE,aAAa;QACrB,eAAe;QACf,WAAW;QACX,MAAM,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,mBAAmB,EAAE;KAC1F,CAAC;AACJ,CAAC;AAED,0CAAwB;AACxB,4CAA0B;AAC1B,8EAAqH;AAA5G,gIAAA,qBAAqB,OAAA;AAC9B,gEAA8D;AAArD,mHAAA,eAAe,OAAA;AACxB,wDAAsD;AAA7C,2GAAA,WAAW,OAAA;AACpB,sEAAmE;AAA1D,wHAAA,iBAAiB,OAAA;AAC1B,iDAA+C;AAAtC,uGAAA,SAAS,OAAA"}
|
|
@@ -10,7 +10,7 @@ export interface EmailRuleStatics {
|
|
|
10
10
|
createRule(input: CreateEmailRuleInput): Promise<EmailRuleDocument>;
|
|
11
11
|
}
|
|
12
12
|
export type EmailRuleModel = Model<IEmailRule> & EmailRuleStatics;
|
|
13
|
-
export declare function createEmailRuleSchema(platformValues?: string[]): Schema<IEmailRule, Model<IEmailRule, any, any, any, import("mongoose").Document<unknown, any, IEmailRule, any, {}> & IEmailRule & {
|
|
13
|
+
export declare function createEmailRuleSchema(platformValues?: string[], audienceValues?: string[]): Schema<IEmailRule, Model<IEmailRule, any, any, any, import("mongoose").Document<unknown, any, IEmailRule, any, {}> & IEmailRule & {
|
|
14
14
|
_id: Types.ObjectId;
|
|
15
15
|
} & {
|
|
16
16
|
__v: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule.schema.d.ts","sourceRoot":"","sources":["../../src/schemas/rule.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAElE,OAAO,KAAK,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3E,MAAM,WAAW,UAAW,SAAQ,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG,YAAY,CAAC;IACvE,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC;CAC5B;AAED,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;AAE7D,MAAM,WAAW,gBAAgB;IAC/B,UAAU,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAC3C,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACpF,UAAU,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACrE;AAED,MAAM,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,gBAAgB,CAAC;AAElE,wBAAgB,qBAAqB,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE;;;;;;;;
|
|
1
|
+
{"version":3,"file":"rule.schema.d.ts","sourceRoot":"","sources":["../../src/schemas/rule.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAElE,OAAO,KAAK,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3E,MAAM,WAAW,UAAW,SAAQ,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG,YAAY,CAAC;IACvE,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC;CAC5B;AAED,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;AAE7D,MAAM,WAAW,gBAAgB;IAC/B,UAAU,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAC3C,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACpF,UAAU,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACrE;AAED,MAAM,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,gBAAgB,CAAC;AAElE,wBAAgB,qBAAqB,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE;;;;;;;;GA0FzF"}
|
|
@@ -3,14 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.createEmailRuleSchema = createEmailRuleSchema;
|
|
4
4
|
const mongoose_1 = require("mongoose");
|
|
5
5
|
const enums_1 = require("../types/enums");
|
|
6
|
-
function createEmailRuleSchema(platformValues) {
|
|
6
|
+
function createEmailRuleSchema(platformValues, audienceValues) {
|
|
7
7
|
const RuleConditionSchema = new mongoose_1.Schema({
|
|
8
8
|
field: { type: String, required: true },
|
|
9
9
|
operator: { type: String, enum: Object.values(enums_1.RuleOperator), required: true },
|
|
10
10
|
value: { type: mongoose_1.Schema.Types.Mixed }
|
|
11
11
|
}, { _id: false });
|
|
12
12
|
const RuleTargetSchema = new mongoose_1.Schema({
|
|
13
|
-
role: { type: String, enum: Object.values(enums_1.TemplateAudience), required: true },
|
|
13
|
+
role: { type: String, enum: audienceValues || Object.values(enums_1.TemplateAudience), required: true },
|
|
14
14
|
platform: {
|
|
15
15
|
type: String,
|
|
16
16
|
required: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule.schema.js","sourceRoot":"","sources":["../../src/schemas/rule.schema.ts"],"names":[],"mappings":";;AAkBA,sDA0FC;AA5GD,uCAAkE;AAClE,0CAA2E;AAiB3E,SAAgB,qBAAqB,CAAC,cAAyB;
|
|
1
|
+
{"version":3,"file":"rule.schema.js","sourceRoot":"","sources":["../../src/schemas/rule.schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,7 @@ export interface EmailTemplateStatics {
|
|
|
12
12
|
createTemplate(input: CreateEmailTemplateInput): Promise<EmailTemplateDocument>;
|
|
13
13
|
}
|
|
14
14
|
export type EmailTemplateModel = Model<IEmailTemplate> & EmailTemplateStatics;
|
|
15
|
-
export declare function createEmailTemplateSchema(platformValues?: string[]): Schema<IEmailTemplate, Model<IEmailTemplate, any, any, any, import("mongoose").Document<unknown, any, IEmailTemplate, any, {}> & IEmailTemplate & {
|
|
15
|
+
export declare function createEmailTemplateSchema(platformValues?: string[], audienceValues?: string[]): Schema<IEmailTemplate, Model<IEmailTemplate, any, any, any, import("mongoose").Document<unknown, any, IEmailTemplate, any, {}> & IEmailTemplate & {
|
|
16
16
|
_id: import("mongoose").Types.ObjectId;
|
|
17
17
|
} & {
|
|
18
18
|
__v: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.schema.d.ts","sourceRoot":"","sources":["../../src/schemas/template.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAEvF,MAAM,WAAW,cAAe,SAAQ,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;CAAG;AAErE,MAAM,MAAM,qBAAqB,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAAC;AAErE,MAAM,WAAW,oBAAoB;IACnC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAAC;IAChE,UAAU,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC/C,cAAc,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC7E,cAAc,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC7E,cAAc,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACjF;AAED,MAAM,MAAM,kBAAkB,GAAG,KAAK,CAAC,cAAc,CAAC,GAAG,oBAAoB,CAAC;AAE9E,wBAAgB,yBAAyB,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE;;;;;;;;
|
|
1
|
+
{"version":3,"file":"template.schema.d.ts","sourceRoot":"","sources":["../../src/schemas/template.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAEvF,MAAM,WAAW,cAAe,SAAQ,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;CAAG;AAErE,MAAM,MAAM,qBAAqB,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAAC;AAErE,MAAM,WAAW,oBAAoB;IACnC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAAC;IAChE,UAAU,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC/C,cAAc,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC7E,cAAc,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC7E,cAAc,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACjF;AAED,MAAM,MAAM,kBAAkB,GAAG,KAAK,CAAC,cAAc,CAAC,GAAG,oBAAoB,CAAC;AAE9E,wBAAgB,yBAAyB,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE;;;;;;;;GAsE7F"}
|
|
@@ -3,13 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.createEmailTemplateSchema = createEmailTemplateSchema;
|
|
4
4
|
const mongoose_1 = require("mongoose");
|
|
5
5
|
const enums_1 = require("../types/enums");
|
|
6
|
-
function createEmailTemplateSchema(platformValues) {
|
|
6
|
+
function createEmailTemplateSchema(platformValues, audienceValues) {
|
|
7
7
|
const schema = new mongoose_1.Schema({
|
|
8
8
|
name: { type: String, required: true },
|
|
9
9
|
slug: { type: String, required: true, unique: true },
|
|
10
10
|
description: String,
|
|
11
11
|
category: { type: String, enum: Object.values(enums_1.TemplateCategory), required: true },
|
|
12
|
-
audience: { type: String, enum: Object.values(enums_1.TemplateAudience), required: true },
|
|
12
|
+
audience: { type: String, enum: audienceValues || Object.values(enums_1.TemplateAudience), required: true },
|
|
13
13
|
platform: {
|
|
14
14
|
type: String,
|
|
15
15
|
required: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.schema.js","sourceRoot":"","sources":["../../src/schemas/template.schema.ts"],"names":[],"mappings":";;AAkBA,8DAsEC;AAxFD,uCAA2D;AAC3D,0CAAoE;AAiBpE,SAAgB,yBAAyB,CAAC,cAAyB;
|
|
1
|
+
{"version":3,"file":"template.schema.js","sourceRoot":"","sources":["../../src/schemas/template.schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-runner.service.d.ts","sourceRoot":"","sources":["../../src/services/rule-runner.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAClF,OAAO,EAAE,UAAU,EAAa,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,qBAAqB,CAAC;AACtE,OAAO,KAAK,EAAE,qBAAqB,EAAc,MAAM,uBAAuB,CAAC;AAK/E,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,IAAI,GAAG,IAAI,CAAC;CAC3B;AAQD,qBAAa,iBAAiB;IAM1B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,mBAAmB;IAC3B,OAAO,CAAC,MAAM;IAVhB,OAAO,CAAC,gBAAgB,CAA+B;IACvD,OAAO,CAAC,IAAI,CAAY;IACxB,OAAO,CAAC,MAAM,CAAa;gBAGjB,SAAS,EAAE,cAAc,EACzB,aAAa,EAAE,kBAAkB,EACjC,aAAa,EAAE,kBAAkB,EACjC,eAAe,EAAE,oBAAoB,EACrC,mBAAmB,EAAE,wBAAwB,EAC7C,MAAM,EAAE,qBAAqB;IAajC,WAAW,CAAC,WAAW,GAAE,OAAO,UAAU,CAAC,MAAM,OAAO,UAAU,CAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"rule-runner.service.d.ts","sourceRoot":"","sources":["../../src/services/rule-runner.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAClF,OAAO,EAAE,UAAU,EAAa,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,qBAAqB,CAAC;AACtE,OAAO,KAAK,EAAE,qBAAqB,EAAc,MAAM,uBAAuB,CAAC;AAK/E,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,IAAI,GAAG,IAAI,CAAC;CAC3B;AAQD,qBAAa,iBAAiB;IAM1B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,mBAAmB;IAC3B,OAAO,CAAC,MAAM;IAVhB,OAAO,CAAC,gBAAgB,CAA+B;IACvD,OAAO,CAAC,IAAI,CAAY;IACxB,OAAO,CAAC,MAAM,CAAa;gBAGjB,SAAS,EAAE,cAAc,EACzB,aAAa,EAAE,kBAAkB,EACjC,aAAa,EAAE,kBAAkB,EACjC,eAAe,EAAE,oBAAoB,EACrC,mBAAmB,EAAE,wBAAwB,EAC7C,MAAM,EAAE,qBAAqB;IAajC,WAAW,CAAC,WAAW,GAAE,OAAO,UAAU,CAAC,MAAM,OAAO,UAAU,CAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAyFrG,WAAW,CACf,IAAI,EAAE,GAAG,EACT,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACtC,cAAc,EAAE,GAAG,GAClB,OAAO,CAAC,YAAY,CAAC;IA2IxB,OAAO,CAAC,aAAa;IA8BrB,gBAAgB,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC;CAuBhE"}
|
|
@@ -34,6 +34,16 @@ class RuleRunnerService {
|
|
|
34
34
|
this.logger = config.logger || defaultLogger;
|
|
35
35
|
}
|
|
36
36
|
async runAllRules(triggeredBy = enums_1.RunTrigger.Cron) {
|
|
37
|
+
if (this.config.options?.sendWindow) {
|
|
38
|
+
const { startHour, endHour, timezone } = this.config.options.sendWindow;
|
|
39
|
+
const now = new Date();
|
|
40
|
+
const formatter = new Intl.DateTimeFormat('en-US', { hour: 'numeric', hour12: false, timeZone: timezone });
|
|
41
|
+
const currentHour = parseInt(formatter.format(now), 10);
|
|
42
|
+
if (currentHour < startHour || currentHour >= endHour) {
|
|
43
|
+
this.logger.info('Outside send window, skipping run', { currentHour, startHour, endHour, timezone });
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
37
47
|
const lockAcquired = await this.lock.acquire();
|
|
38
48
|
if (!lockAcquired) {
|
|
39
49
|
this.logger.warn('Rule runner already executing, skipping');
|
|
@@ -43,6 +53,7 @@ class RuleRunnerService {
|
|
|
43
53
|
try {
|
|
44
54
|
const throttleConfig = await this.EmailThrottleConfig.getConfig();
|
|
45
55
|
const activeRules = await this.EmailRule.findActive();
|
|
56
|
+
this.config.hooks?.onRunStart?.({ rulesCount: activeRules.length, triggeredBy });
|
|
46
57
|
if (activeRules.length === 0) {
|
|
47
58
|
this.logger.info('No active rules to process');
|
|
48
59
|
await this.EmailRuleRunLog.create({
|
|
@@ -83,6 +94,7 @@ class RuleRunnerService {
|
|
|
83
94
|
totalStats,
|
|
84
95
|
perRuleStats
|
|
85
96
|
});
|
|
97
|
+
this.config.hooks?.onRunComplete?.({ duration: Date.now() - runStartTime, totalStats, perRuleStats });
|
|
86
98
|
this.logger.info('Rule run completed', {
|
|
87
99
|
triggeredBy,
|
|
88
100
|
rulesProcessed: activeRules.length,
|
|
@@ -113,6 +125,7 @@ class RuleRunnerService {
|
|
|
113
125
|
return stats;
|
|
114
126
|
}
|
|
115
127
|
stats.matched = users.length;
|
|
128
|
+
this.config.hooks?.onRuleStart?.({ ruleId: rule._id.toString(), ruleName: rule.name, matchedCount: users.length });
|
|
116
129
|
if (users.length === 0)
|
|
117
130
|
return stats;
|
|
118
131
|
const userIds = users.map(u => u._id?.toString()).filter(Boolean);
|
|
@@ -138,7 +151,8 @@ class RuleRunnerService {
|
|
|
138
151
|
}
|
|
139
152
|
}
|
|
140
153
|
const compiled = this.templateRenderer.compileBatch(template.subject, template.body, template.textBody);
|
|
141
|
-
for (
|
|
154
|
+
for (let i = 0; i < users.length; i++) {
|
|
155
|
+
const user = users[i];
|
|
142
156
|
try {
|
|
143
157
|
const userId = user._id?.toString();
|
|
144
158
|
const email = user.email;
|
|
@@ -196,9 +210,20 @@ class RuleRunnerService {
|
|
|
196
210
|
lastSentDate: new Date()
|
|
197
211
|
});
|
|
198
212
|
stats.sent++;
|
|
213
|
+
this.config.hooks?.onSend?.({ ruleId: rule._id.toString(), ruleName: rule.name, email, status: 'sent' });
|
|
214
|
+
if (i < users.length - 1) {
|
|
215
|
+
const delayMs = this.config.options?.delayBetweenSendsMs || 0;
|
|
216
|
+
const jitterMs = this.config.options?.jitterMs || 0;
|
|
217
|
+
if (delayMs > 0 || jitterMs > 0) {
|
|
218
|
+
const totalDelay = delayMs + Math.floor(Math.random() * (jitterMs + 1));
|
|
219
|
+
if (totalDelay > 0)
|
|
220
|
+
await new Promise(resolve => setTimeout(resolve, totalDelay));
|
|
221
|
+
}
|
|
222
|
+
}
|
|
199
223
|
}
|
|
200
224
|
catch (err) {
|
|
201
225
|
stats.errors++;
|
|
226
|
+
this.config.hooks?.onSend?.({ ruleId: rule._id.toString(), ruleName: rule.name, email: user.email || 'unknown', status: 'error' });
|
|
202
227
|
this.logger.error(`Rule "${rule.name}" failed for user ${user._id?.toString()}`, { error: err });
|
|
203
228
|
}
|
|
204
229
|
}
|
|
@@ -206,6 +231,7 @@ class RuleRunnerService {
|
|
|
206
231
|
$set: { lastRunAt: new Date(), lastRunStats: stats },
|
|
207
232
|
$inc: { totalSent: stats.sent, totalSkipped: stats.skipped }
|
|
208
233
|
});
|
|
234
|
+
this.config.hooks?.onRuleComplete?.({ ruleId: rule._id.toString(), ruleName: rule.name, stats });
|
|
209
235
|
return stats;
|
|
210
236
|
}
|
|
211
237
|
checkThrottle(rule, userId, throttleMap, config, stats) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-runner.service.js","sourceRoot":"","sources":["../../src/services/rule-runner.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rule-runner.service.js","sourceRoot":"","sources":["../../src/services/rule-runner.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Connection } from 'mongoose';
|
|
2
2
|
import type { Redis } from 'ioredis';
|
|
3
|
-
import { RuleTarget } from './rule.types';
|
|
3
|
+
import type { RuleTarget, RuleRunStats, PerRuleStats } from './rule.types';
|
|
4
4
|
export interface SendEmailParams {
|
|
5
5
|
identifierId: string;
|
|
6
6
|
contactId: string;
|
|
@@ -41,10 +41,45 @@ export interface EmailRuleEngineConfig {
|
|
|
41
41
|
sendTestEmail?: (to: string, subject: string, html: string, text: string) => Promise<void>;
|
|
42
42
|
};
|
|
43
43
|
platforms?: string[];
|
|
44
|
+
audiences?: string[];
|
|
44
45
|
logger?: LogAdapter;
|
|
45
46
|
options?: {
|
|
46
47
|
lockTTLMs?: number;
|
|
47
48
|
defaultMaxPerRun?: number;
|
|
49
|
+
sendWindow?: {
|
|
50
|
+
startHour: number;
|
|
51
|
+
endHour: number;
|
|
52
|
+
timezone: string;
|
|
53
|
+
};
|
|
54
|
+
delayBetweenSendsMs?: number;
|
|
55
|
+
jitterMs?: number;
|
|
56
|
+
};
|
|
57
|
+
hooks?: {
|
|
58
|
+
onRunStart?: (info: {
|
|
59
|
+
rulesCount: number;
|
|
60
|
+
triggeredBy: string;
|
|
61
|
+
}) => void;
|
|
62
|
+
onRuleStart?: (info: {
|
|
63
|
+
ruleId: string;
|
|
64
|
+
ruleName: string;
|
|
65
|
+
matchedCount: number;
|
|
66
|
+
}) => void;
|
|
67
|
+
onSend?: (info: {
|
|
68
|
+
ruleId: string;
|
|
69
|
+
ruleName: string;
|
|
70
|
+
email: string;
|
|
71
|
+
status: 'sent' | 'error';
|
|
72
|
+
}) => void;
|
|
73
|
+
onRuleComplete?: (info: {
|
|
74
|
+
ruleId: string;
|
|
75
|
+
ruleName: string;
|
|
76
|
+
stats: RuleRunStats;
|
|
77
|
+
}) => void;
|
|
78
|
+
onRunComplete?: (info: {
|
|
79
|
+
duration: number;
|
|
80
|
+
totalStats: RuleRunStats;
|
|
81
|
+
perRuleStats: PerRuleStats[];
|
|
82
|
+
}) => void;
|
|
48
83
|
};
|
|
49
84
|
}
|
|
50
85
|
//# sourceMappingURL=config.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.types.d.ts","sourceRoot":"","sources":["../../src/types/config.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"config.types.d.ts","sourceRoot":"","sources":["../../src/types/config.types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@astralibx/email-rule-engine",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "Rule-based email automation engine with MJML + Handlebars templates, throttling, and distributed locking",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|