@ductape/sdk 0.0.4-v59 → 0.0.4-v60

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.
Files changed (251) hide show
  1. package/dist/agents/agents.service.d.ts +8 -2
  2. package/dist/agents/agents.service.js +5 -0
  3. package/dist/agents/agents.service.js.map +1 -1
  4. package/dist/agents/types/agents.types.d.ts +2 -0
  5. package/dist/agents/types/agents.types.js.map +1 -1
  6. package/dist/agents/vector-store-adapter.js +5 -5
  7. package/dist/agents/vector-store-adapter.js.map +1 -1
  8. package/dist/api/services/appApi.service.d.ts +3 -3
  9. package/dist/api/services/appApi.service.js.map +1 -1
  10. package/dist/api/services/productsApi.service.d.ts +1 -1
  11. package/dist/api/services/productsApi.service.js +20 -13
  12. package/dist/api/services/productsApi.service.js.map +1 -1
  13. package/dist/api/services/secretsApi.service.d.ts +12 -0
  14. package/dist/api/services/secretsApi.service.js +30 -2
  15. package/dist/api/services/secretsApi.service.js.map +1 -1
  16. package/dist/api/services/workspaceApi.service.d.ts +8 -0
  17. package/dist/api/services/workspaceApi.service.js +20 -0
  18. package/dist/api/services/workspaceApi.service.js.map +1 -1
  19. package/dist/api/urls.d.ts +2 -0
  20. package/dist/api/urls.js +10 -15
  21. package/dist/api/urls.js.map +1 -1
  22. package/dist/api/utils/auth.utils.d.ts +1 -3
  23. package/dist/api/utils/auth.utils.js.map +1 -1
  24. package/dist/apps/utils/oauth-manager.js +27 -3
  25. package/dist/apps/utils/oauth-manager.js.map +1 -1
  26. package/dist/brokers/brokers.service.d.ts +8 -0
  27. package/dist/brokers/brokers.service.js +50 -4
  28. package/dist/brokers/brokers.service.js.map +1 -1
  29. package/dist/brokers/types/index.d.ts +26 -0
  30. package/dist/brokers/utils/providers/kafka.service.d.ts +7 -0
  31. package/dist/brokers/utils/providers/kafka.service.js +102 -23
  32. package/dist/brokers/utils/providers/kafka.service.js.map +1 -1
  33. package/dist/brokers/utils/providers/rabbitmq.service.d.ts +2 -1
  34. package/dist/brokers/utils/providers/rabbitmq.service.js +99 -15
  35. package/dist/brokers/utils/providers/rabbitmq.service.js.map +1 -1
  36. package/dist/database/adapters/cassandra.adapter.d.ts +1 -0
  37. package/dist/database/adapters/cassandra.adapter.js +100 -44
  38. package/dist/database/adapters/cassandra.adapter.js.map +1 -1
  39. package/dist/database/adapters/dynamodb.adapter.d.ts +1 -0
  40. package/dist/database/adapters/dynamodb.adapter.js +89 -20
  41. package/dist/database/adapters/dynamodb.adapter.js.map +1 -1
  42. package/dist/database/adapters/mongodb.adapter.d.ts +1 -0
  43. package/dist/database/adapters/mongodb.adapter.js +123 -45
  44. package/dist/database/adapters/mongodb.adapter.js.map +1 -1
  45. package/dist/database/adapters/mysql.adapter.d.ts +1 -0
  46. package/dist/database/adapters/mysql.adapter.js +125 -48
  47. package/dist/database/adapters/mysql.adapter.js.map +1 -1
  48. package/dist/database/adapters/postgresql.adapter.d.ts +5 -0
  49. package/dist/database/adapters/postgresql.adapter.js +151 -50
  50. package/dist/database/adapters/postgresql.adapter.js.map +1 -1
  51. package/dist/database/databases.service.d.ts +15 -1
  52. package/dist/database/databases.service.js +143 -2
  53. package/dist/database/databases.service.js.map +1 -1
  54. package/dist/database/operators/aggregation-builder.d.ts +11 -8
  55. package/dist/database/operators/aggregation-builder.js +184 -89
  56. package/dist/database/operators/aggregation-builder.js.map +1 -1
  57. package/dist/database/operators/query-builder.d.ts +23 -19
  58. package/dist/database/operators/query-builder.js +77 -45
  59. package/dist/database/operators/query-builder.js.map +1 -1
  60. package/dist/database/types/aggregation.interface.d.ts +21 -15
  61. package/dist/database/types/query.interface.d.ts +27 -21
  62. package/dist/database/types/write.interface.d.ts +20 -12
  63. package/dist/graph/adapters/arangodb.adapter.js +61 -22
  64. package/dist/graph/adapters/arangodb.adapter.js.map +1 -1
  65. package/dist/graph/adapters/memgraph.adapter.js +22 -16
  66. package/dist/graph/adapters/memgraph.adapter.js.map +1 -1
  67. package/dist/graph/adapters/neo4j.adapter.js +51 -21
  68. package/dist/graph/adapters/neo4j.adapter.js.map +1 -1
  69. package/dist/graph/adapters/neptune.adapter.js +32 -16
  70. package/dist/graph/adapters/neptune.adapter.js.map +1 -1
  71. package/dist/graph/graphs.service.d.ts +24 -2
  72. package/dist/graph/graphs.service.js +238 -28
  73. package/dist/graph/graphs.service.js.map +1 -1
  74. package/dist/graph/types/connection.interface.d.ts +8 -0
  75. package/dist/graph/types/query.interface.d.ts +21 -14
  76. package/dist/index.d.ts +367 -20
  77. package/dist/index.js +510 -48
  78. package/dist/index.js.map +1 -1
  79. package/dist/inputs/inputs.service.d.ts +1 -1
  80. package/dist/notifications/notifications.service.d.ts +7 -2
  81. package/dist/notifications/notifications.service.js +2 -0
  82. package/dist/notifications/notifications.service.js.map +1 -1
  83. package/dist/processor/services/processor.service.d.ts +5 -1
  84. package/dist/processor/services/processor.service.js +35 -2
  85. package/dist/processor/services/processor.service.js.map +1 -1
  86. package/dist/products/services/products.service.d.ts +76 -2
  87. package/dist/products/services/products.service.js +984 -27
  88. package/dist/products/services/products.service.js.map +1 -1
  89. package/dist/products/validators/joi-validators/create.productAgent.validator.js +52 -4
  90. package/dist/products/validators/joi-validators/create.productAgent.validator.js.map +1 -1
  91. package/dist/products/validators/joi-validators/create.productGraph.validator.js +2 -0
  92. package/dist/products/validators/joi-validators/create.productGraph.validator.js.map +1 -1
  93. package/dist/products/validators/joi-validators/create.productMessageBrokers.validator.js +1 -7
  94. package/dist/products/validators/joi-validators/create.productMessageBrokers.validator.js.map +1 -1
  95. package/dist/products/validators/joi-validators/create.productVector.validator.js +4 -4
  96. package/dist/products/validators/joi-validators/create.productVector.validator.js.map +1 -1
  97. package/dist/products/validators/joi-validators/update.productGraph.validator.js +2 -0
  98. package/dist/products/validators/joi-validators/update.productGraph.validator.js.map +1 -1
  99. package/dist/resilience/fallback.service.d.ts +4 -1
  100. package/dist/resilience/fallback.service.js +8 -10
  101. package/dist/resilience/fallback.service.js.map +1 -1
  102. package/dist/resilience/healthcheck.service.d.ts +6 -1
  103. package/dist/resilience/healthcheck.service.js +9 -0
  104. package/dist/resilience/healthcheck.service.js.map +1 -1
  105. package/dist/resilience/quota.service.d.ts +4 -1
  106. package/dist/resilience/quota.service.js +2 -0
  107. package/dist/resilience/quota.service.js.map +1 -1
  108. package/dist/resilience/resilience.service.d.ts +4 -1
  109. package/dist/resilience/resilience.service.js.map +1 -1
  110. package/dist/secrets/secrets.service.d.ts +11 -1
  111. package/dist/secrets/secrets.service.js +109 -10
  112. package/dist/secrets/secrets.service.js.map +1 -1
  113. package/dist/storage/storage.service.d.ts +4 -1
  114. package/dist/storage/storage.service.js +6 -1
  115. package/dist/storage/storage.service.js.map +1 -1
  116. package/dist/test/index.js +1 -3
  117. package/dist/test/index.js.map +1 -1
  118. package/dist/test/test.broker.kafka.d.ts +1 -0
  119. package/dist/test/test.broker.kafka.js +172 -0
  120. package/dist/test/test.broker.kafka.js.map +1 -0
  121. package/dist/test/test.broker.nats.d.ts +1 -0
  122. package/dist/test/test.broker.nats.js +193 -0
  123. package/dist/test/test.broker.nats.js.map +1 -0
  124. package/dist/test/test.broker.pubsub.d.ts +1 -0
  125. package/dist/test/test.broker.pubsub.js +171 -0
  126. package/dist/test/test.broker.pubsub.js.map +1 -0
  127. package/dist/test/test.broker.rabbitmq.d.ts +1 -0
  128. package/dist/test/test.broker.rabbitmq.js +164 -0
  129. package/dist/test/test.broker.rabbitmq.js.map +1 -0
  130. package/dist/test/test.broker.redis.d.ts +1 -0
  131. package/dist/test/test.broker.redis.js +168 -0
  132. package/dist/test/test.broker.redis.js.map +1 -0
  133. package/dist/test/test.broker.sqs.d.ts +1 -0
  134. package/dist/test/test.broker.sqs.js +158 -0
  135. package/dist/test/test.broker.sqs.js.map +1 -0
  136. package/dist/test/test.caches.d.ts +1 -0
  137. package/dist/test/test.caches.js +231 -0
  138. package/dist/test/test.caches.js.map +1 -0
  139. package/dist/test/test.database.dynamo.d.ts +1 -0
  140. package/dist/test/test.database.dynamo.js +265 -0
  141. package/dist/test/test.database.dynamo.js.map +1 -0
  142. package/dist/test/test.database.js +2 -2
  143. package/dist/test/test.database.js.map +1 -1
  144. package/dist/test/test.database.mongo.d.ts +1 -0
  145. package/dist/test/test.database.mongo.js +371 -0
  146. package/dist/test/test.database.mongo.js.map +1 -0
  147. package/dist/test/test.database.mysql.d.ts +1 -0
  148. package/dist/test/test.database.mysql.js +415 -0
  149. package/dist/test/test.database.mysql.js.map +1 -0
  150. package/dist/test/test.database.postgres.d.ts +1 -0
  151. package/dist/test/test.database.postgres.js +412 -0
  152. package/dist/test/test.database.postgres.js.map +1 -0
  153. package/dist/test/test.email.brevo.d.ts +1 -0
  154. package/dist/test/test.email.brevo.js +326 -0
  155. package/dist/test/test.email.brevo.js.map +1 -0
  156. package/dist/test/test.email.mailgun.d.ts +1 -0
  157. package/dist/test/test.email.mailgun.js +352 -0
  158. package/dist/test/test.email.mailgun.js.map +1 -0
  159. package/dist/test/test.email.postmark.d.ts +1 -0
  160. package/dist/test/test.email.postmark.js +316 -0
  161. package/dist/test/test.email.postmark.js.map +1 -0
  162. package/dist/test/test.email.sendgrid.d.ts +1 -0
  163. package/dist/test/test.email.sendgrid.js +365 -0
  164. package/dist/test/test.email.sendgrid.js.map +1 -0
  165. package/dist/test/test.email.smtp.d.ts +1 -0
  166. package/dist/test/test.email.smtp.js +323 -0
  167. package/dist/test/test.email.smtp.js.map +1 -0
  168. package/dist/test/test.graph.arangodb.d.ts +1 -0
  169. package/dist/test/test.graph.arangodb.js +358 -0
  170. package/dist/test/test.graph.arangodb.js.map +1 -0
  171. package/dist/test/test.graph.memgraph.d.ts +1 -0
  172. package/dist/test/test.graph.memgraph.js +320 -0
  173. package/dist/test/test.graph.memgraph.js.map +1 -0
  174. package/dist/test/test.graph.neo4j.d.ts +1 -0
  175. package/dist/test/test.graph.neo4j.js +218 -0
  176. package/dist/test/test.graph.neo4j.js.map +1 -0
  177. package/dist/test/test.graph.neptune.d.ts +1 -0
  178. package/dist/test/test.graph.neptune.js +331 -0
  179. package/dist/test/test.graph.neptune.js.map +1 -0
  180. package/dist/test/test.notifications.d.ts +1 -0
  181. package/dist/test/test.notifications.js +198 -0
  182. package/dist/test/test.notifications.js.map +1 -0
  183. package/dist/test/test.push.expo.d.ts +1 -0
  184. package/dist/test/test.push.expo.js +442 -0
  185. package/dist/test/test.push.expo.js.map +1 -0
  186. package/dist/test/test.push.firebase.d.ts +1 -0
  187. package/dist/test/test.push.firebase.js +409 -0
  188. package/dist/test/test.push.firebase.js.map +1 -0
  189. package/dist/test/test.session.d.ts +1 -0
  190. package/dist/test/test.session.js +299 -0
  191. package/dist/test/test.session.js.map +1 -0
  192. package/dist/test/test.sms.nexmo.d.ts +1 -0
  193. package/dist/test/test.sms.nexmo.js +278 -0
  194. package/dist/test/test.sms.nexmo.js.map +1 -0
  195. package/dist/test/test.sms.twilio.d.ts +1 -0
  196. package/dist/test/test.sms.twilio.js +275 -0
  197. package/dist/test/test.sms.twilio.js.map +1 -0
  198. package/dist/test/test.storage.js +169 -299
  199. package/dist/test/test.storage.js.map +1 -1
  200. package/dist/test/test.vector.pinecone.d.ts +1 -0
  201. package/dist/test/test.vector.pinecone.js +238 -0
  202. package/dist/test/test.vector.pinecone.js.map +1 -0
  203. package/dist/test/test.vector.qdrant.d.ts +1 -0
  204. package/dist/test/test.vector.qdrant.js +307 -0
  205. package/dist/test/test.vector.qdrant.js.map +1 -0
  206. package/dist/test/test.vector.weaviate.d.ts +1 -0
  207. package/dist/test/test.vector.weaviate.js +325 -0
  208. package/dist/test/test.vector.weaviate.js.map +1 -0
  209. package/dist/types/appBuilder.types.d.ts +6 -2
  210. package/dist/types/enums.d.ts +2 -0
  211. package/dist/types/enums.js +2 -0
  212. package/dist/types/enums.js.map +1 -1
  213. package/dist/types/index.types.d.ts +2 -4
  214. package/dist/types/index.types.js +0 -1
  215. package/dist/types/index.types.js.map +1 -1
  216. package/dist/types/processor.types.d.ts +18 -0
  217. package/dist/types/productsBuilder.types.d.ts +19 -15
  218. package/dist/types/productsBuilder.types.js.map +1 -1
  219. package/dist/types/requests.types.d.ts +2 -0
  220. package/dist/utils/index.js +23 -4
  221. package/dist/utils/index.js.map +1 -1
  222. package/dist/vector/adapters/base.adapter.d.ts +1 -1
  223. package/dist/vector/adapters/memory.adapter.d.ts +1 -1
  224. package/dist/vector/adapters/memory.adapter.js +1 -1
  225. package/dist/vector/adapters/memory.adapter.js.map +1 -1
  226. package/dist/vector/adapters/pinecone.adapter.d.ts +1 -1
  227. package/dist/vector/adapters/pinecone.adapter.js +1 -1
  228. package/dist/vector/adapters/pinecone.adapter.js.map +1 -1
  229. package/dist/vector/adapters/qdrant.adapter.d.ts +1 -1
  230. package/dist/vector/adapters/qdrant.adapter.js +1 -1
  231. package/dist/vector/adapters/qdrant.adapter.js.map +1 -1
  232. package/dist/vector/adapters/weaviate.adapter.d.ts +1 -1
  233. package/dist/vector/adapters/weaviate.adapter.js +1 -1
  234. package/dist/vector/adapters/weaviate.adapter.js.map +1 -1
  235. package/dist/vector/index.d.ts +2 -2
  236. package/dist/vector/index.js +2 -2
  237. package/dist/vector/utils/vector-error.js +0 -1
  238. package/dist/vector/utils/vector-error.js.map +1 -1
  239. package/dist/vector/vector-database.service.d.ts +9 -6
  240. package/dist/vector/vector-database.service.js +7 -6
  241. package/dist/vector/vector-database.service.js.map +1 -1
  242. package/dist/vector/vector.service.d.ts +3 -3
  243. package/dist/vector/vector.service.js +12 -9
  244. package/dist/vector/vector.service.js.map +1 -1
  245. package/dist/workflows/workflow-executor.d.ts +4 -1
  246. package/dist/workflows/workflow-executor.js +10 -2
  247. package/dist/workflows/workflow-executor.js.map +1 -1
  248. package/dist/workflows/workflows.service.d.ts +8 -2
  249. package/dist/workflows/workflows.service.js +66 -41
  250. package/dist/workflows/workflows.service.js.map +1 -1
  251. package/package.json +29 -4
@@ -0,0 +1,352 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const index_1 = __importDefault(require("./index"));
7
+ /**
8
+ * Mailgun Email Provider Tests
9
+ *
10
+ * Comprehensive tests for Mailgun email operations:
11
+ * - Notification configuration with Mailgun
12
+ * - Email sending with templates
13
+ * - Multi-recipient emails
14
+ * - Mailgun-specific features (regions, domains, tracking)
15
+ */
16
+ const { notifications } = index_1.default;
17
+ // Start timing
18
+ const startTime = performance.now();
19
+ console.log(`[${new Date().toISOString()}] Starting Mailgun email provider operations...`);
20
+ async function runMailgunTests() {
21
+ try {
22
+ // ==================== CREATE NOTIFICATION CONFIGURATION ====================
23
+ console.log('\n--- Creating Notification Configuration (Mailgun) ---');
24
+ const createStart = performance.now();
25
+ // Create notification with Mailgun email configuration
26
+ await notifications.create('ductape:rematch', {
27
+ name: 'Mailgun Email Notifications',
28
+ tag: 'mailgun-notifications',
29
+ description: 'Email notifications via Mailgun API',
30
+ envs: [
31
+ {
32
+ slug: 'prd',
33
+ emails: {
34
+ provider: 'mailgun',
35
+ mailgun: {
36
+ apiKey: process.env.MAILGUN_API_KEY || 'key-your-mailgun-api-key',
37
+ domain: process.env.MAILGUN_DOMAIN || 'mg.company.com',
38
+ sender_email: process.env.MAILGUN_SENDER || 'noreply@mg.company.com',
39
+ region: 'us',
40
+ },
41
+ },
42
+ },
43
+ {
44
+ slug: 'dev',
45
+ emails: {
46
+ provider: 'mailgun',
47
+ mailgun: {
48
+ apiKey: process.env.MAILGUN_DEV_API_KEY || 'key-your-dev-api-key',
49
+ domain: process.env.MAILGUN_DEV_DOMAIN || 'sandbox.mailgun.org',
50
+ sender_email: process.env.MAILGUN_DEV_SENDER || 'dev@sandbox.mailgun.org',
51
+ region: 'us',
52
+ },
53
+ },
54
+ },
55
+ {
56
+ slug: 'eu',
57
+ emails: {
58
+ provider: 'mailgun',
59
+ mailgun: {
60
+ apiKey: process.env.MAILGUN_EU_API_KEY || 'key-your-eu-api-key',
61
+ domain: process.env.MAILGUN_EU_DOMAIN || 'mg.eu.company.com',
62
+ sender_email: process.env.MAILGUN_EU_SENDER || 'noreply@mg.eu.company.com',
63
+ region: 'eu',
64
+ },
65
+ },
66
+ },
67
+ ],
68
+ });
69
+ console.log(`[TIMING] Create notification config: ${(performance.now() - createStart).toFixed(2)}ms`);
70
+ console.log('Mailgun notification configuration created successfully');
71
+ // Create notification message templates
72
+ console.log('\n--- Creating Message Templates ---');
73
+ const templateStart = performance.now();
74
+ await notifications.messages.create('ductape:rematch', {
75
+ name: 'Transactional Alert',
76
+ tag: 'mailgun-notifications:transaction-alert',
77
+ description: 'Transaction alert email',
78
+ email: {
79
+ subject: 'Transaction Alert: {{transaction_type}} of {{amount}}',
80
+ template: `
81
+ <html>
82
+ <body style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; margin: 0; padding: 0; background-color: #f5f5f5;">
83
+ <div style="max-width: 600px; margin: 0 auto; padding: 20px;">
84
+ <div style="background: white; border-radius: 12px; overflow: hidden; box-shadow: 0 2px 8px rgba(0,0,0,0.1);">
85
+ <div style="background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); padding: 30px; text-align: center;">
86
+ <h1 style="color: white; margin: 0; font-size: 24px;">Transaction Alert</h1>
87
+ </div>
88
+
89
+ <div style="padding: 30px;">
90
+ <p style="color: #333; font-size: 16px;">Hello {{customer_name}},</p>
91
+
92
+ <div style="background: #f8f9fa; border-radius: 8px; padding: 20px; margin: 20px 0;">
93
+ <table style="width: 100%;">
94
+ <tr>
95
+ <td style="color: #666; padding: 8px 0;">Type:</td>
96
+ <td style="color: #333; font-weight: bold; text-align: right;">{{transaction_type}}</td>
97
+ </tr>
98
+ <tr>
99
+ <td style="color: #666; padding: 8px 0;">Amount:</td>
100
+ <td style="color: #333; font-weight: bold; text-align: right; font-size: 20px;">{{amount}}</td>
101
+ </tr>
102
+ <tr>
103
+ <td style="color: #666; padding: 8px 0;">Date:</td>
104
+ <td style="color: #333; text-align: right;">{{transaction_date}}</td>
105
+ </tr>
106
+ <tr>
107
+ <td style="color: #666; padding: 8px 0;">Reference:</td>
108
+ <td style="color: #333; text-align: right; font-family: monospace;">{{reference_id}}</td>
109
+ </tr>
110
+ <tr>
111
+ <td style="color: #666; padding: 8px 0;">Account:</td>
112
+ <td style="color: #333; text-align: right;">****{{account_last4}}</td>
113
+ </tr>
114
+ </table>
115
+ </div>
116
+
117
+ <p style="color: #666; font-size: 14px;">
118
+ If you didn't authorize this transaction, please contact us immediately.
119
+ </p>
120
+
121
+ <div style="text-align: center; margin-top: 30px;">
122
+ <a href="{{dispute_link}}" style="display: inline-block; background-color: #dc3545; color: white; padding: 12px 30px; text-decoration: none; border-radius: 6px; font-weight: bold;">
123
+ Report Unauthorized Activity
124
+ </a>
125
+ </div>
126
+ </div>
127
+ </div>
128
+ </div>
129
+ </body>
130
+ </html>
131
+ `,
132
+ },
133
+ });
134
+ await notifications.messages.create('ductape:rematch', {
135
+ name: 'Shipping Notification',
136
+ tag: 'mailgun-notifications:shipping',
137
+ description: 'Shipping update notification',
138
+ email: {
139
+ subject: 'Your Order Has Shipped! - {{order_id}}',
140
+ template: `
141
+ <html>
142
+ <body style="font-family: Arial, sans-serif; padding: 20px; background-color: #eef2f7;">
143
+ <div style="max-width: 600px; margin: 0 auto; background: white; border-radius: 10px; overflow: hidden;">
144
+ <div style="background: #28a745; padding: 25px; text-align: center;">
145
+ <h1 style="color: white; margin: 0;">Your Order Is On Its Way!</h1>
146
+ </div>
147
+
148
+ <div style="padding: 30px;">
149
+ <p>Hi {{customer_name}},</p>
150
+ <p>Great news! Your order <strong>{{order_id}}</strong> has been shipped.</p>
151
+
152
+ <div style="background: #f8f9fa; padding: 20px; border-radius: 8px; margin: 20px 0;">
153
+ <h3 style="margin-top: 0; color: #333;">Shipment Details</h3>
154
+ <p><strong>Carrier:</strong> {{carrier}}</p>
155
+ <p><strong>Tracking Number:</strong> <code>{{tracking_number}}</code></p>
156
+ <p><strong>Estimated Delivery:</strong> {{estimated_delivery}}</p>
157
+ </div>
158
+
159
+ <div style="text-align: center;">
160
+ <a href="{{tracking_url}}" style="display: inline-block; background-color: #007bff; color: white; padding: 15px 40px; text-decoration: none; border-radius: 5px; font-weight: bold;">
161
+ Track Your Package
162
+ </a>
163
+ </div>
164
+
165
+ <h3 style="margin-top: 30px;">Shipping Address</h3>
166
+ <div style="background: #f8f9fa; padding: 15px; border-radius: 8px;">
167
+ {{shipping_address}}
168
+ </div>
169
+ </div>
170
+ </div>
171
+ </body>
172
+ </html>
173
+ `,
174
+ },
175
+ });
176
+ await notifications.messages.create('ductape:rematch', {
177
+ name: 'Security Alert',
178
+ tag: 'mailgun-notifications:security-alert',
179
+ description: 'Security alert for suspicious activity',
180
+ email: {
181
+ subject: 'Security Alert: {{alert_type}} - Action Required',
182
+ template: `
183
+ <html>
184
+ <body style="font-family: Arial, sans-serif; padding: 20px; background-color: #1a1a2e;">
185
+ <div style="max-width: 600px; margin: 0 auto; background: white; border-radius: 10px; overflow: hidden;">
186
+ <div style="background: #dc3545; padding: 25px; text-align: center;">
187
+ <h1 style="color: white; margin: 0;">Security Alert</h1>
188
+ </div>
189
+
190
+ <div style="padding: 30px;">
191
+ <p style="font-size: 16px; color: #333;">Hello {{user_name}},</p>
192
+ <p style="color: #666;">We detected {{alert_type}} on your account:</p>
193
+
194
+ <div style="background: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0;">
195
+ <strong>Alert Details:</strong>
196
+ <ul style="margin: 10px 0; padding-left: 20px;">
197
+ <li><strong>Time:</strong> {{alert_time}}</li>
198
+ <li><strong>Location:</strong> {{location}}</li>
199
+ <li><strong>IP Address:</strong> {{ip_address}}</li>
200
+ <li><strong>Device:</strong> {{device_info}}</li>
201
+ </ul>
202
+ </div>
203
+
204
+ <p style="color: #333;">If this was you, you can safely ignore this email.</p>
205
+ <p style="color: #333;">If you don't recognize this activity:</p>
206
+
207
+ <div style="text-align: center; margin: 25px 0;">
208
+ <a href="{{secure_account_link}}" style="display: inline-block; background-color: #dc3545; color: white; padding: 15px 40px; text-decoration: none; border-radius: 5px; font-weight: bold; margin: 5px;">
209
+ Secure My Account
210
+ </a>
211
+ <a href="{{change_password_link}}" style="display: inline-block; background-color: #6c757d; color: white; padding: 15px 40px; text-decoration: none; border-radius: 5px; font-weight: bold; margin: 5px;">
212
+ Change Password
213
+ </a>
214
+ </div>
215
+ </div>
216
+ </div>
217
+ </body>
218
+ </html>
219
+ `,
220
+ },
221
+ });
222
+ console.log(`[TIMING] Create message templates: ${(performance.now() - templateStart).toFixed(2)}ms`);
223
+ console.log('Message templates created successfully');
224
+ // ==================== SEND EMAILS ====================
225
+ console.log('\n--- Sending Transaction Alert ---');
226
+ const transactionStart = performance.now();
227
+ const transactionResult = await notifications.email({
228
+ product: 'ductape:rematch',
229
+ env: 'prd',
230
+ notification: 'mailgun-notifications:transaction-alert',
231
+ input: {
232
+ recipients: ['customer@example.com'],
233
+ subject: {
234
+ transaction_type: 'Withdrawal',
235
+ amount: '$500.00',
236
+ },
237
+ template: {
238
+ customer_name: 'John Smith',
239
+ transaction_type: 'Withdrawal',
240
+ amount: '$500.00',
241
+ transaction_date: new Date().toLocaleString(),
242
+ reference_id: 'TXN-20241220-001',
243
+ account_last4: '4567',
244
+ dispute_link: 'https://bank.com/dispute?ref=TXN-20241220-001',
245
+ },
246
+ },
247
+ });
248
+ console.log(`[TIMING] Send transaction alert: ${(performance.now() - transactionStart).toFixed(2)}ms`);
249
+ console.log('Transaction alert result:', JSON.stringify(transactionResult, null, 2));
250
+ // Send shipping notification
251
+ console.log('\n--- Sending Shipping Notification ---');
252
+ const shippingStart = performance.now();
253
+ const shippingResult = await notifications.email({
254
+ product: 'ductape:rematch',
255
+ env: 'prd',
256
+ notification: 'mailgun-notifications:shipping',
257
+ input: {
258
+ recipients: ['buyer@example.com'],
259
+ subject: {
260
+ order_id: 'ORD-78901',
261
+ },
262
+ template: {
263
+ customer_name: 'Sarah Johnson',
264
+ order_id: 'ORD-78901',
265
+ carrier: 'FedEx',
266
+ tracking_number: '1Z999AA10123456784',
267
+ estimated_delivery: 'December 25, 2024',
268
+ tracking_url: 'https://fedex.com/track/1Z999AA10123456784',
269
+ shipping_address: '123 Main Street<br/>Apt 4B<br/>New York, NY 10001',
270
+ },
271
+ },
272
+ });
273
+ console.log(`[TIMING] Send shipping notification: ${(performance.now() - shippingStart).toFixed(2)}ms`);
274
+ console.log('Shipping notification result:', JSON.stringify(shippingResult, null, 2));
275
+ // Send security alert
276
+ console.log('\n--- Sending Security Alert ---');
277
+ const securityStart = performance.now();
278
+ const securityResult = await notifications.email({
279
+ product: 'ductape:rematch',
280
+ env: 'prd',
281
+ notification: 'mailgun-notifications:security-alert',
282
+ input: {
283
+ recipients: ['user@example.com'],
284
+ subject: {
285
+ alert_type: 'New Login',
286
+ },
287
+ template: {
288
+ user_name: 'Michael Chen',
289
+ alert_type: 'a new login',
290
+ alert_time: new Date().toLocaleString(),
291
+ location: 'Tokyo, Japan',
292
+ ip_address: '103.45.67.89',
293
+ device_info: 'Chrome on Windows 11',
294
+ secure_account_link: 'https://secure.company.com/lock',
295
+ change_password_link: 'https://secure.company.com/password',
296
+ },
297
+ },
298
+ });
299
+ console.log(`[TIMING] Send security alert: ${(performance.now() - securityStart).toFixed(2)}ms`);
300
+ console.log('Security alert result:', JSON.stringify(securityResult, null, 2));
301
+ // ==================== EU REGION EMAIL ====================
302
+ console.log('\n--- Sending Email via EU Region ---');
303
+ const euStart = performance.now();
304
+ const euResult = await notifications.email({
305
+ product: 'ductape:rematch',
306
+ env: 'eu',
307
+ notification: 'mailgun-notifications:transaction-alert',
308
+ input: {
309
+ recipients: ['eu-customer@example.com'],
310
+ subject: {
311
+ transaction_type: 'Deposit',
312
+ amount: '€250.00',
313
+ },
314
+ template: {
315
+ customer_name: 'Hans Mueller',
316
+ transaction_type: 'Deposit',
317
+ amount: '€250.00',
318
+ transaction_date: new Date().toLocaleString('de-DE'),
319
+ reference_id: 'EU-TXN-20241220-001',
320
+ account_last4: '9876',
321
+ dispute_link: 'https://eu.bank.com/dispute',
322
+ },
323
+ },
324
+ });
325
+ console.log(`[TIMING] Send EU email: ${(performance.now() - euStart).toFixed(2)}ms`);
326
+ console.log('EU email result:', JSON.stringify(euResult, null, 2));
327
+ // ==================== FETCH CONFIGURATIONS ====================
328
+ console.log('\n--- Fetching Notification Configuration ---');
329
+ const fetchStart = performance.now();
330
+ const notificationConfig = await notifications.fetch('ductape:rematch', 'mailgun-notifications');
331
+ console.log(`[TIMING] Fetch config: ${(performance.now() - fetchStart).toFixed(2)}ms`);
332
+ console.log('Mailgun config:', JSON.stringify(notificationConfig, null, 2));
333
+ // List message templates
334
+ console.log('\n--- Listing Message Templates ---');
335
+ const listMsgStart = performance.now();
336
+ const messages = await notifications.messages.list('ductape:rematch', 'mailgun-notifications');
337
+ console.log(`[TIMING] List message templates: ${(performance.now() - listMsgStart).toFixed(2)}ms`);
338
+ console.log('Message templates:', messages.map(m => ({
339
+ tag: m.tag,
340
+ name: m.name,
341
+ })));
342
+ // ==================== SUMMARY ====================
343
+ const totalTime = performance.now() - startTime;
344
+ console.log(`\n[TIMING SUMMARY]`);
345
+ console.log(` Total time: ${totalTime.toFixed(2)}ms`);
346
+ }
347
+ catch (error) {
348
+ console.error('Error in Mailgun email operations:', error);
349
+ }
350
+ }
351
+ runMailgunTests();
352
+ //# sourceMappingURL=test.email.mailgun.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.email.mailgun.js","sourceRoot":"","sources":["../../src/test/test.email.mailgun.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};