@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,326 @@
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
+ const notifications_types_1 = require("../notifications/types/notifications.types");
8
+ /**
9
+ * Brevo (formerly Sendinblue) Email Provider Tests
10
+ *
11
+ * Comprehensive tests for Brevo email operations:
12
+ * - Notification configuration with Brevo
13
+ * - Email sending with templates
14
+ * - Multi-recipient emails
15
+ * - Brevo-specific features (marketing + transactional)
16
+ */
17
+ const { notifications } = index_1.default;
18
+ // Start timing
19
+ const startTime = performance.now();
20
+ console.log(`[${new Date().toISOString()}] Starting Brevo email provider operations...`);
21
+ async function runBrevoTests() {
22
+ try {
23
+ // ==================== CREATE NOTIFICATION CONFIGURATION ====================
24
+ console.log('\n--- Creating Notification Configuration (Brevo) ---');
25
+ const createStart = performance.now();
26
+ // Create notification with Brevo email configuration
27
+ await notifications.create('ductape:rematch', {
28
+ name: 'Brevo Email Notifications',
29
+ tag: 'brevo-notifications',
30
+ description: 'Email notifications via Brevo (Sendinblue) API',
31
+ envs: [
32
+ {
33
+ slug: 'prd',
34
+ emails: {
35
+ provider: notifications_types_1.EmailProvider.BREVO,
36
+ brevo: {
37
+ apiKey: process.env.BREVO_API_KEY || 'xkeysib-your-brevo-api-key',
38
+ sender_email: process.env.BREVO_SENDER || 'noreply@company.com',
39
+ sender_name: process.env.BREVO_SENDER_NAME || 'Company Name',
40
+ },
41
+ },
42
+ },
43
+ {
44
+ slug: 'dev',
45
+ emails: {
46
+ provider: notifications_types_1.EmailProvider.BREVO,
47
+ brevo: {
48
+ apiKey: process.env.BREVO_DEV_API_KEY || 'xkeysib-your-dev-api-key',
49
+ sender_email: process.env.BREVO_DEV_SENDER || 'dev@company.com',
50
+ sender_name: process.env.BREVO_DEV_SENDER_NAME || 'Company Dev',
51
+ },
52
+ },
53
+ },
54
+ ],
55
+ });
56
+ console.log(`[TIMING] Create notification config: ${(performance.now() - createStart).toFixed(2)}ms`);
57
+ console.log('Brevo notification configuration created successfully');
58
+ // Create notification message templates
59
+ console.log('\n--- Creating Message Templates ---');
60
+ const templateStart = performance.now();
61
+ await notifications.messages.create('ductape:rematch', {
62
+ name: 'Event Invitation',
63
+ tag: 'brevo-notifications:event-invitation',
64
+ description: 'Event invitation email',
65
+ email: {
66
+ subject: "You're Invited: {{event_name}}",
67
+ template: `
68
+ <html>
69
+ <body style="font-family: 'Helvetica Neue', Arial, sans-serif; margin: 0; padding: 0; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);">
70
+ <div style="max-width: 600px; margin: 0 auto; padding: 40px 20px;">
71
+ <div style="background: white; border-radius: 20px; overflow: hidden; box-shadow: 0 10px 40px rgba(0,0,0,0.2);">
72
+ <div style="padding: 40px; text-align: center;">
73
+ <div style="font-size: 48px; margin-bottom: 20px;">🎉</div>
74
+ <h1 style="color: #333; margin: 0 0 10px; font-size: 28px;">You're Invited!</h1>
75
+ <h2 style="color: #667eea; margin: 0; font-weight: normal;">{{event_name}}</h2>
76
+ </div>
77
+
78
+ <div style="padding: 0 40px 40px;">
79
+ <p style="color: #666; font-size: 16px;">Dear {{recipient_name}},</p>
80
+ <p style="color: #666;">{{invitation_message}}</p>
81
+
82
+ <div style="background: #f8f9ff; border-radius: 12px; padding: 25px; margin: 25px 0;">
83
+ <div style="display: flex; align-items: center; margin-bottom: 15px;">
84
+ <span style="font-size: 24px; margin-right: 15px;">📅</span>
85
+ <div>
86
+ <div style="color: #999; font-size: 12px; text-transform: uppercase;">Date & Time</div>
87
+ <div style="color: #333; font-weight: bold;">{{event_date}} at {{event_time}}</div>
88
+ </div>
89
+ </div>
90
+ <div style="display: flex; align-items: center; margin-bottom: 15px;">
91
+ <span style="font-size: 24px; margin-right: 15px;">📍</span>
92
+ <div>
93
+ <div style="color: #999; font-size: 12px; text-transform: uppercase;">Location</div>
94
+ <div style="color: #333; font-weight: bold;">{{event_location}}</div>
95
+ </div>
96
+ </div>
97
+ <div style="display: flex; align-items: center;">
98
+ <span style="font-size: 24px; margin-right: 15px;">👔</span>
99
+ <div>
100
+ <div style="color: #999; font-size: 12px; text-transform: uppercase;">Dress Code</div>
101
+ <div style="color: #333; font-weight: bold;">{{dress_code}}</div>
102
+ </div>
103
+ </div>
104
+ </div>
105
+
106
+ <div style="text-align: center; margin: 30px 0;">
107
+ <a href="{{rsvp_yes_link}}" style="display: inline-block; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; padding: 16px 40px; text-decoration: none; border-radius: 30px; font-weight: bold; margin: 5px;">
108
+ Accept Invitation
109
+ </a>
110
+ <a href="{{rsvp_no_link}}" style="display: inline-block; background: #e9ecef; color: #666; padding: 16px 40px; text-decoration: none; border-radius: 30px; font-weight: bold; margin: 5px;">
111
+ Decline
112
+ </a>
113
+ </div>
114
+
115
+ <p style="color: #999; font-size: 13px; text-align: center;">
116
+ Please RSVP by {{rsvp_deadline}}
117
+ </p>
118
+ </div>
119
+ </div>
120
+ </div>
121
+ </body>
122
+ </html>
123
+ `,
124
+ },
125
+ });
126
+ await notifications.messages.create('ductape:rematch', {
127
+ name: 'Account Statement',
128
+ tag: 'brevo-notifications:account-statement',
129
+ description: 'Monthly account statement email',
130
+ email: {
131
+ subject: 'Your {{month}} Statement is Ready',
132
+ template: `
133
+ <html>
134
+ <body style="font-family: Arial, sans-serif; padding: 20px; background: #f5f5f5;">
135
+ <div style="max-width: 600px; margin: 0 auto; background: white; border-radius: 8px; overflow: hidden;">
136
+ <div style="background: #2c3e50; padding: 25px; text-align: center;">
137
+ <h1 style="color: white; margin: 0;">Account Statement</h1>
138
+ <p style="color: #bdc3c7; margin: 10px 0 0;">{{month}} {{year}}</p>
139
+ </div>
140
+
141
+ <div style="padding: 30px;">
142
+ <p style="font-size: 16px;">Hello {{customer_name}},</p>
143
+ <p>Your account statement for {{month}} is now available.</p>
144
+
145
+ <div style="background: #ecf0f1; border-radius: 8px; padding: 25px; margin: 20px 0;">
146
+ <h3 style="margin-top: 0; color: #2c3e50;">Account Summary</h3>
147
+ <table style="width: 100%;">
148
+ <tr>
149
+ <td style="padding: 8px 0; color: #7f8c8d;">Opening Balance:</td>
150
+ <td style="padding: 8px 0; text-align: right; font-weight: bold;">{{opening_balance}}</td>
151
+ </tr>
152
+ <tr>
153
+ <td style="padding: 8px 0; color: #27ae60;">Total Credits:</td>
154
+ <td style="padding: 8px 0; text-align: right; font-weight: bold; color: #27ae60;">+{{total_credits}}</td>
155
+ </tr>
156
+ <tr>
157
+ <td style="padding: 8px 0; color: #e74c3c;">Total Debits:</td>
158
+ <td style="padding: 8px 0; text-align: right; font-weight: bold; color: #e74c3c;">-{{total_debits}}</td>
159
+ </tr>
160
+ <tr style="border-top: 2px solid #bdc3c7;">
161
+ <td style="padding: 15px 0 8px; font-weight: bold; color: #2c3e50;">Closing Balance:</td>
162
+ <td style="padding: 15px 0 8px; text-align: right; font-weight: bold; font-size: 20px; color: #2c3e50;">{{closing_balance}}</td>
163
+ </tr>
164
+ </table>
165
+ </div>
166
+
167
+ <div style="text-align: center; margin: 25px 0;">
168
+ <a href="{{statement_pdf_link}}" style="display: inline-block; background: #3498db; color: white; padding: 15px 35px; text-decoration: none; border-radius: 5px; margin: 5px;">
169
+ Download PDF Statement
170
+ </a>
171
+ <a href="{{view_online_link}}" style="display: inline-block; background: #95a5a6; color: white; padding: 15px 35px; text-decoration: none; border-radius: 5px; margin: 5px;">
172
+ View Online
173
+ </a>
174
+ </div>
175
+ </div>
176
+ </div>
177
+ </body>
178
+ </html>
179
+ `,
180
+ },
181
+ });
182
+ await notifications.messages.create('ductape:rematch', {
183
+ name: 'Referral Bonus',
184
+ tag: 'brevo-notifications:referral-bonus',
185
+ description: 'Referral bonus notification',
186
+ email: {
187
+ subject: 'Congratulations! You Earned {{bonus_amount}}! 🎁',
188
+ template: `
189
+ <html>
190
+ <body style="font-family: Arial, sans-serif; padding: 20px; background: #f0f9ff;">
191
+ <div style="max-width: 600px; margin: 0 auto; background: white; border-radius: 12px; overflow: hidden; box-shadow: 0 4px 15px rgba(0,0,0,0.1);">
192
+ <div style="background: linear-gradient(135deg, #00b894 0%, #00cec9 100%); padding: 40px; text-align: center;">
193
+ <div style="font-size: 60px; margin-bottom: 15px;">🎁</div>
194
+ <h1 style="color: white; margin: 0; font-size: 24px;">You've Earned a Bonus!</h1>
195
+ </div>
196
+
197
+ <div style="padding: 30px; text-align: center;">
198
+ <p style="font-size: 18px; color: #333;">Congratulations, {{referrer_name}}!</p>
199
+ <p style="color: #666;">Your friend <strong>{{referred_name}}</strong> just signed up using your referral link!</p>
200
+
201
+ <div style="background: #e8f8f5; border-radius: 12px; padding: 25px; margin: 25px 0;">
202
+ <p style="color: #00b894; font-size: 14px; margin: 0;">YOUR REWARD</p>
203
+ <p style="font-size: 48px; font-weight: bold; color: #00b894; margin: 10px 0;">{{bonus_amount}}</p>
204
+ <p style="color: #666; margin: 0;">has been added to your account</p>
205
+ </div>
206
+
207
+ <p style="color: #666;">Keep sharing your referral link to earn more rewards!</p>
208
+
209
+ <div style="background: #f8f9fa; border-radius: 8px; padding: 15px; margin: 20px 0;">
210
+ <p style="color: #999; font-size: 12px; margin: 0 0 5px;">Your Referral Link</p>
211
+ <p style="font-family: monospace; color: #333; margin: 0; word-break: break-all;">{{referral_link}}</p>
212
+ </div>
213
+
214
+ <a href="{{share_link}}" style="display: inline-block; background: linear-gradient(135deg, #00b894 0%, #00cec9 100%); color: white; padding: 15px 40px; text-decoration: none; border-radius: 30px; font-weight: bold;">
215
+ Share & Earn More
216
+ </a>
217
+
218
+ <p style="color: #999; font-size: 13px; margin-top: 25px;">
219
+ Total earnings: {{total_referral_earnings}} | Successful referrals: {{total_referrals}}
220
+ </p>
221
+ </div>
222
+ </div>
223
+ </body>
224
+ </html>
225
+ `,
226
+ },
227
+ });
228
+ console.log(`[TIMING] Create message templates: ${(performance.now() - templateStart).toFixed(2)}ms`);
229
+ console.log('Message templates created successfully');
230
+ // ==================== SEND EMAILS ====================
231
+ console.log('\n--- Sending Event Invitation ---');
232
+ const invitationStart = performance.now();
233
+ const invitationResult = await notifications.email({
234
+ product: 'ductape:rematch',
235
+ env: 'prd',
236
+ notification: 'brevo-notifications:event-invitation',
237
+ input: {
238
+ recipients: ['guest@example.com'],
239
+ subject: {
240
+ event_name: 'Annual Tech Summit 2024',
241
+ },
242
+ template: {
243
+ recipient_name: 'Jennifer Taylor',
244
+ event_name: 'Annual Tech Summit 2024',
245
+ invitation_message: 'We are thrilled to invite you to our Annual Tech Summit, featuring industry leaders and cutting-edge innovations.',
246
+ event_date: 'January 15, 2025',
247
+ event_time: '9:00 AM PST',
248
+ event_location: 'Moscone Center, San Francisco, CA',
249
+ dress_code: 'Business Casual',
250
+ rsvp_yes_link: 'https://events.com/rsvp?yes=abc123',
251
+ rsvp_no_link: 'https://events.com/rsvp?no=abc123',
252
+ rsvp_deadline: 'January 5, 2025',
253
+ },
254
+ },
255
+ });
256
+ console.log(`[TIMING] Send event invitation: ${(performance.now() - invitationStart).toFixed(2)}ms`);
257
+ console.log('Event invitation result:', JSON.stringify(invitationResult, null, 2));
258
+ // Send account statement
259
+ console.log('\n--- Sending Account Statement ---');
260
+ const statementStart = performance.now();
261
+ const statementResult = await notifications.email({
262
+ product: 'ductape:rematch',
263
+ env: 'prd',
264
+ notification: 'brevo-notifications:account-statement',
265
+ input: {
266
+ recipients: ['account-holder@example.com'],
267
+ subject: {
268
+ month: 'December',
269
+ },
270
+ template: {
271
+ customer_name: 'Robert Chen',
272
+ month: 'December',
273
+ year: '2024',
274
+ opening_balance: '$5,432.10',
275
+ total_credits: '$3,200.00',
276
+ total_debits: '$1,876.50',
277
+ closing_balance: '$6,755.60',
278
+ statement_pdf_link: 'https://bank.com/statements/dec-2024.pdf',
279
+ view_online_link: 'https://bank.com/statements/dec-2024',
280
+ },
281
+ },
282
+ });
283
+ console.log(`[TIMING] Send account statement: ${(performance.now() - statementStart).toFixed(2)}ms`);
284
+ console.log('Account statement result:', JSON.stringify(statementResult, null, 2));
285
+ // Send referral bonus notification
286
+ console.log('\n--- Sending Referral Bonus Notification ---');
287
+ const referralStart = performance.now();
288
+ const referralResult = await notifications.email({
289
+ product: 'ductape:rematch',
290
+ env: 'prd',
291
+ notification: 'brevo-notifications:referral-bonus',
292
+ input: {
293
+ recipients: ['referrer@example.com'],
294
+ subject: {
295
+ bonus_amount: '$25.00',
296
+ },
297
+ template: {
298
+ referrer_name: 'Amanda',
299
+ referred_name: 'Chris Martinez',
300
+ bonus_amount: '$25.00',
301
+ referral_link: 'https://app.com/ref/amanda123',
302
+ share_link: 'https://app.com/share?ref=amanda123',
303
+ total_referral_earnings: '$175.00',
304
+ total_referrals: '7',
305
+ },
306
+ },
307
+ });
308
+ console.log(`[TIMING] Send referral bonus: ${(performance.now() - referralStart).toFixed(2)}ms`);
309
+ console.log('Referral bonus result:', JSON.stringify(referralResult, null, 2));
310
+ // ==================== FETCH CONFIGURATIONS ====================
311
+ console.log('\n--- Fetching Notification Configuration ---');
312
+ const fetchStart = performance.now();
313
+ const notificationConfig = await notifications.fetch('ductape:rematch', 'brevo-notifications');
314
+ console.log(`[TIMING] Fetch config: ${(performance.now() - fetchStart).toFixed(2)}ms`);
315
+ console.log('Brevo config:', JSON.stringify(notificationConfig, null, 2));
316
+ // ==================== SUMMARY ====================
317
+ const totalTime = performance.now() - startTime;
318
+ console.log(`\n[TIMING SUMMARY]`);
319
+ console.log(` Total time: ${totalTime.toFixed(2)}ms`);
320
+ }
321
+ catch (error) {
322
+ console.error('Error in Brevo email operations:', error);
323
+ }
324
+ }
325
+ runBrevoTests();
326
+ //# sourceMappingURL=test.email.brevo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.email.brevo.js","sourceRoot":"","sources":["../../src/test/test.email.brevo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};