@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,365 @@
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
+ * SendGrid Email Provider Tests
9
+ *
10
+ * Comprehensive tests for SendGrid email operations:
11
+ * - Notification configuration with SendGrid
12
+ * - Email sending with templates
13
+ * - Multi-recipient emails
14
+ * - Dynamic templates
15
+ * - SendGrid-specific features (categories, tracking)
16
+ */
17
+ const { notifications } = index_1.default;
18
+ // Start timing
19
+ const startTime = performance.now();
20
+ console.log(`[${new Date().toISOString()}] Starting SendGrid email provider operations...`);
21
+ async function runSendGridTests() {
22
+ try {
23
+ // ==================== CREATE NOTIFICATION CONFIGURATION ====================
24
+ console.log('\n--- Creating Notification Configuration (SendGrid) ---');
25
+ const createStart = performance.now();
26
+ // Create notification with SendGrid email configuration
27
+ await notifications.create('ductape:rematch', {
28
+ name: 'SendGrid Email Notifications',
29
+ tag: 'sendgrid-notifications',
30
+ description: 'Email notifications via SendGrid API',
31
+ envs: [
32
+ {
33
+ slug: 'prd',
34
+ emails: {
35
+ provider: 'sendgrid',
36
+ sendgrid: {
37
+ apiKey: process.env.SENDGRID_API_KEY || 'SG.your-sendgrid-api-key',
38
+ sender_email: process.env.SENDGRID_SENDER || 'noreply@company.com',
39
+ },
40
+ },
41
+ },
42
+ {
43
+ slug: 'dev',
44
+ emails: {
45
+ provider: 'sendgrid',
46
+ sendgrid: {
47
+ apiKey: process.env.SENDGRID_DEV_API_KEY || 'SG.your-dev-api-key',
48
+ sender_email: process.env.SENDGRID_DEV_SENDER || 'dev@company.com',
49
+ },
50
+ },
51
+ },
52
+ ],
53
+ });
54
+ console.log(`[TIMING] Create notification config: ${(performance.now() - createStart).toFixed(2)}ms`);
55
+ console.log('SendGrid notification configuration created successfully');
56
+ // Create notification message templates
57
+ console.log('\n--- Creating Message Templates ---');
58
+ const templateStart = performance.now();
59
+ await notifications.messages.create('ductape:rematch', {
60
+ name: 'Marketing Newsletter',
61
+ tag: 'sendgrid-notifications:newsletter',
62
+ description: 'Monthly marketing newsletter',
63
+ email: {
64
+ subject: '{{month}} Newsletter - {{company_name}}',
65
+ template: `
66
+ <html>
67
+ <body style="font-family: 'Helvetica Neue', Arial, sans-serif; max-width: 600px; margin: 0 auto; padding: 20px;">
68
+ <header style="text-align: center; padding: 20px 0; border-bottom: 2px solid #4A90E2;">
69
+ <h1 style="color: #4A90E2; margin: 0;">{{company_name}}</h1>
70
+ <p style="color: #666;">{{month}} Newsletter</p>
71
+ </header>
72
+
73
+ <section style="padding: 30px 0;">
74
+ <h2>Hi {{subscriber_name}},</h2>
75
+ <p>{{intro_message}}</p>
76
+
77
+ <h3>This Month's Highlights</h3>
78
+ {{#highlights}}
79
+ <div style="background: #f9f9f9; padding: 15px; margin: 10px 0; border-radius: 8px;">
80
+ <h4 style="color: #4A90E2; margin-top: 0;">{{title}}</h4>
81
+ <p>{{description}}</p>
82
+ <a href="{{link}}" style="color: #4A90E2;">Read More</a>
83
+ </div>
84
+ {{/highlights}}
85
+ </section>
86
+
87
+ <footer style="text-align: center; padding: 20px 0; border-top: 1px solid #eee; color: #999;">
88
+ <p>You're receiving this because you subscribed to {{company_name}} updates.</p>
89
+ <a href="{{unsubscribe_link}}" style="color: #999;">Unsubscribe</a>
90
+ </footer>
91
+ </body>
92
+ </html>
93
+ `,
94
+ },
95
+ });
96
+ await notifications.messages.create('ductape:rematch', {
97
+ name: 'Account Verification',
98
+ tag: 'sendgrid-notifications:verification',
99
+ description: 'Email verification for new accounts',
100
+ email: {
101
+ subject: 'Verify Your Email - {{company_name}}',
102
+ template: `
103
+ <html>
104
+ <body style="font-family: Arial, sans-serif; padding: 40px; background-color: #f4f4f4;">
105
+ <div style="max-width: 500px; margin: 0 auto; background: white; border-radius: 10px; padding: 40px; box-shadow: 0 2px 10px rgba(0,0,0,0.1);">
106
+ <div style="text-align: center;">
107
+ <h1 style="color: #28a745;">Verify Your Email</h1>
108
+ <p style="color: #666; font-size: 16px;">Hi {{user_name}},</p>
109
+ <p style="color: #666;">Please verify your email address to complete your registration.</p>
110
+
111
+ <div style="margin: 30px 0;">
112
+ <span style="font-size: 32px; font-weight: bold; letter-spacing: 8px; color: #333;">{{verification_code}}</span>
113
+ </div>
114
+
115
+ <p style="color: #999; font-size: 14px;">Or click the button below:</p>
116
+
117
+ <a href="{{verification_link}}" style="display: inline-block; background-color: #28a745; color: white; padding: 15px 40px; text-decoration: none; border-radius: 5px; font-weight: bold;">
118
+ Verify Email
119
+ </a>
120
+
121
+ <p style="color: #999; font-size: 12px; margin-top: 30px;">
122
+ This code expires in {{expiry_minutes}} minutes.
123
+ </p>
124
+ </div>
125
+ </div>
126
+ </body>
127
+ </html>
128
+ `,
129
+ },
130
+ });
131
+ await notifications.messages.create('ductape:rematch', {
132
+ name: 'Invoice Email',
133
+ tag: 'sendgrid-notifications:invoice',
134
+ description: 'Invoice email with payment details',
135
+ email: {
136
+ subject: 'Invoice #{{invoice_number}} from {{company_name}}',
137
+ template: `
138
+ <html>
139
+ <body style="font-family: Arial, sans-serif; padding: 20px;">
140
+ <div style="max-width: 600px; margin: 0 auto;">
141
+ <div style="display: flex; justify-content: space-between; align-items: center; border-bottom: 2px solid #333; padding-bottom: 20px;">
142
+ <h1 style="margin: 0;">INVOICE</h1>
143
+ <div style="text-align: right;">
144
+ <strong>{{company_name}}</strong><br/>
145
+ {{company_address}}<br/>
146
+ {{company_email}}
147
+ </div>
148
+ </div>
149
+
150
+ <div style="margin: 30px 0;">
151
+ <p><strong>Invoice #:</strong> {{invoice_number}}</p>
152
+ <p><strong>Date:</strong> {{invoice_date}}</p>
153
+ <p><strong>Due Date:</strong> {{due_date}}</p>
154
+ </div>
155
+
156
+ <div style="margin: 30px 0;">
157
+ <strong>Bill To:</strong><br/>
158
+ {{customer_name}}<br/>
159
+ {{customer_address}}<br/>
160
+ {{customer_email}}
161
+ </div>
162
+
163
+ <table style="width: 100%; border-collapse: collapse; margin: 30px 0;">
164
+ <thead>
165
+ <tr style="background-color: #333; color: white;">
166
+ <th style="padding: 12px; text-align: left;">Description</th>
167
+ <th style="padding: 12px; text-align: right;">Qty</th>
168
+ <th style="padding: 12px; text-align: right;">Rate</th>
169
+ <th style="padding: 12px; text-align: right;">Amount</th>
170
+ </tr>
171
+ </thead>
172
+ <tbody>
173
+ {{#line_items}}
174
+ <tr style="border-bottom: 1px solid #eee;">
175
+ <td style="padding: 12px;">{{description}}</td>
176
+ <td style="padding: 12px; text-align: right;">{{quantity}}</td>
177
+ <td style="padding: 12px; text-align: right;">{{rate}}</td>
178
+ <td style="padding: 12px; text-align: right;">{{amount}}</td>
179
+ </tr>
180
+ {{/line_items}}
181
+ </tbody>
182
+ <tfoot>
183
+ <tr style="font-weight: bold;">
184
+ <td colspan="3" style="padding: 12px; text-align: right;">Total:</td>
185
+ <td style="padding: 12px; text-align: right;">{{total}}</td>
186
+ </tr>
187
+ </tfoot>
188
+ </table>
189
+
190
+ <div style="text-align: center; margin: 30px 0;">
191
+ <a href="{{payment_link}}" style="display: inline-block; background-color: #007bff; color: white; padding: 15px 40px; text-decoration: none; border-radius: 5px;">
192
+ Pay Now
193
+ </a>
194
+ </div>
195
+ </div>
196
+ </body>
197
+ </html>
198
+ `,
199
+ },
200
+ });
201
+ console.log(`[TIMING] Create message templates: ${(performance.now() - templateStart).toFixed(2)}ms`);
202
+ console.log('Message templates created successfully');
203
+ // ==================== SEND EMAILS ====================
204
+ console.log('\n--- Sending Newsletter Email ---');
205
+ const newsletterStart = performance.now();
206
+ const newsletterResult = await notifications.email({
207
+ product: 'ductape:rematch',
208
+ env: 'prd',
209
+ notification: 'sendgrid-notifications:newsletter',
210
+ input: {
211
+ recipients: ['subscriber1@example.com', 'subscriber2@example.com'],
212
+ subject: {
213
+ month: 'December',
214
+ company_name: 'TechCorp',
215
+ },
216
+ template: {
217
+ company_name: 'TechCorp',
218
+ month: 'December',
219
+ subscriber_name: 'Valued Subscriber',
220
+ intro_message: 'Here are the latest updates from TechCorp!',
221
+ highlights: [
222
+ {
223
+ title: 'New Product Launch',
224
+ description: 'Introducing our latest innovation in AI technology.',
225
+ link: 'https://techcorp.com/new-product',
226
+ },
227
+ {
228
+ title: 'Holiday Sale',
229
+ description: 'Get 30% off all products this holiday season.',
230
+ link: 'https://techcorp.com/sale',
231
+ },
232
+ ],
233
+ unsubscribe_link: 'https://techcorp.com/unsubscribe?token=abc',
234
+ },
235
+ },
236
+ });
237
+ console.log(`[TIMING] Send newsletter: ${(performance.now() - newsletterStart).toFixed(2)}ms`);
238
+ console.log('Newsletter result:', JSON.stringify(newsletterResult, null, 2));
239
+ // Send verification email
240
+ console.log('\n--- Sending Verification Email ---');
241
+ const verifyStart = performance.now();
242
+ const verifyResult = await notifications.email({
243
+ product: 'ductape:rematch',
244
+ env: 'prd',
245
+ notification: 'sendgrid-notifications:verification',
246
+ input: {
247
+ recipients: ['newuser@example.com'],
248
+ subject: {
249
+ company_name: 'TechCorp',
250
+ },
251
+ template: {
252
+ company_name: 'TechCorp',
253
+ user_name: 'Alice Smith',
254
+ verification_code: '847293',
255
+ verification_link: 'https://techcorp.com/verify?token=xyz123',
256
+ expiry_minutes: '30',
257
+ },
258
+ },
259
+ });
260
+ console.log(`[TIMING] Send verification: ${(performance.now() - verifyStart).toFixed(2)}ms`);
261
+ console.log('Verification result:', JSON.stringify(verifyResult, null, 2));
262
+ // Send invoice email
263
+ console.log('\n--- Sending Invoice Email ---');
264
+ const invoiceStart = performance.now();
265
+ const invoiceResult = await notifications.email({
266
+ product: 'ductape:rematch',
267
+ env: 'prd',
268
+ notification: 'sendgrid-notifications:invoice',
269
+ input: {
270
+ recipients: ['customer@example.com', 'billing@example.com'],
271
+ subject: {
272
+ invoice_number: 'INV-2024-001',
273
+ company_name: 'TechCorp',
274
+ },
275
+ template: {
276
+ company_name: 'TechCorp',
277
+ company_address: '123 Tech Street, San Francisco, CA 94105',
278
+ company_email: 'billing@techcorp.com',
279
+ invoice_number: 'INV-2024-001',
280
+ invoice_date: new Date().toLocaleDateString(),
281
+ due_date: new Date(Date.now() + 30 * 24 * 60 * 60 * 1000).toLocaleDateString(),
282
+ customer_name: 'Acme Corporation',
283
+ customer_address: '456 Business Ave, New York, NY 10001',
284
+ customer_email: 'accounts@acme.com',
285
+ line_items: [
286
+ { description: 'Software License - Enterprise', quantity: 5, rate: '$500.00', amount: '$2,500.00' },
287
+ { description: 'Support Package - Premium', quantity: 1, rate: '$1,200.00', amount: '$1,200.00' },
288
+ { description: 'Training Sessions', quantity: 3, rate: '$300.00', amount: '$900.00' },
289
+ ],
290
+ total: '$4,600.00',
291
+ payment_link: 'https://techcorp.com/pay/INV-2024-001',
292
+ },
293
+ },
294
+ });
295
+ console.log(`[TIMING] Send invoice: ${(performance.now() - invoiceStart).toFixed(2)}ms`);
296
+ console.log('Invoice result:', JSON.stringify(invoiceResult, null, 2));
297
+ // ==================== MULTI-CHANNEL NOTIFICATION ====================
298
+ console.log('\n--- Multi-Channel Notification with SendGrid ---');
299
+ const multiStart = performance.now();
300
+ const multiResult = await notifications.send({
301
+ product: 'ductape:rematch',
302
+ env: 'prd',
303
+ notification: 'sendgrid-notifications:verification',
304
+ email: {
305
+ recipients: ['user@example.com'],
306
+ subject: {
307
+ company_name: 'TechCorp',
308
+ },
309
+ template: {
310
+ company_name: 'TechCorp',
311
+ user_name: 'Test User',
312
+ verification_code: '123456',
313
+ verification_link: 'https://techcorp.com/verify',
314
+ expiry_minutes: '15',
315
+ },
316
+ },
317
+ });
318
+ console.log(`[TIMING] Multi-channel: ${(performance.now() - multiStart).toFixed(2)}ms`);
319
+ console.log('Multi-channel result:', JSON.stringify(multiResult, null, 2));
320
+ // ==================== SCHEDULED EMAIL ====================
321
+ console.log('\n--- Scheduling Email ---');
322
+ const scheduleStart = performance.now();
323
+ const scheduledResult = await notifications.dispatch({
324
+ product: 'ductape:rematch',
325
+ env: 'prd',
326
+ notification: 'sendgrid-notifications:newsletter',
327
+ email: {
328
+ recipients: ['scheduled@example.com'],
329
+ subject: {
330
+ month: 'January',
331
+ company_name: 'TechCorp',
332
+ },
333
+ template: {
334
+ company_name: 'TechCorp',
335
+ month: 'January',
336
+ subscriber_name: 'Future Subscriber',
337
+ intro_message: 'Happy New Year from TechCorp!',
338
+ highlights: [],
339
+ unsubscribe_link: 'https://techcorp.com/unsubscribe',
340
+ },
341
+ },
342
+ schedule: {
343
+ start_at: Date.now() + 86400000, // 24 hours from now
344
+ },
345
+ retries: 3,
346
+ });
347
+ console.log(`[TIMING] Schedule email: ${(performance.now() - scheduleStart).toFixed(2)}ms`);
348
+ console.log('Scheduled result:', JSON.stringify(scheduledResult, null, 2));
349
+ // ==================== FETCH CONFIGURATIONS ====================
350
+ console.log('\n--- Fetching Notification Configuration ---');
351
+ const fetchStart = performance.now();
352
+ const notificationConfig = await notifications.fetch('ductape:rematch', 'sendgrid-notifications');
353
+ console.log(`[TIMING] Fetch config: ${(performance.now() - fetchStart).toFixed(2)}ms`);
354
+ console.log('SendGrid config:', JSON.stringify(notificationConfig, null, 2));
355
+ // ==================== SUMMARY ====================
356
+ const totalTime = performance.now() - startTime;
357
+ console.log(`\n[TIMING SUMMARY]`);
358
+ console.log(` Total time: ${totalTime.toFixed(2)}ms`);
359
+ }
360
+ catch (error) {
361
+ console.error('Error in SendGrid email operations:', error);
362
+ }
363
+ }
364
+ runSendGridTests();
365
+ //# sourceMappingURL=test.email.sendgrid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.email.sendgrid.js","sourceRoot":"","sources":["../../src/test/test.email.sendgrid.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};