@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,316 @@
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
+ * Postmark Email Provider Tests
9
+ *
10
+ * Comprehensive tests for Postmark email operations:
11
+ * - Notification configuration with Postmark
12
+ * - Transactional email sending
13
+ * - Multi-recipient emails
14
+ * - Postmark-specific features (message streams, templates)
15
+ */
16
+ const { notifications } = index_1.default;
17
+ // Start timing
18
+ const startTime = performance.now();
19
+ console.log(`[${new Date().toISOString()}] Starting Postmark email provider operations...`);
20
+ async function runPostmarkTests() {
21
+ try {
22
+ // ==================== CREATE NOTIFICATION CONFIGURATION ====================
23
+ console.log('\n--- Creating Notification Configuration (Postmark) ---');
24
+ const createStart = performance.now();
25
+ // Create notification with Postmark email configuration
26
+ await notifications.create('ductape:rematch', {
27
+ name: 'Postmark Email Notifications',
28
+ tag: 'postmark-notifications',
29
+ description: 'Email notifications via Postmark API',
30
+ envs: [
31
+ {
32
+ slug: 'prd',
33
+ emails: {
34
+ provider: 'postmark',
35
+ postmark: {
36
+ serverToken: process.env.POSTMARK_SERVER_TOKEN || 'your-postmark-server-token',
37
+ sender_email: process.env.POSTMARK_SENDER || 'noreply@company.com',
38
+ },
39
+ },
40
+ },
41
+ {
42
+ slug: 'dev',
43
+ emails: {
44
+ provider: 'postmark',
45
+ postmark: {
46
+ serverToken: process.env.POSTMARK_DEV_TOKEN || 'your-dev-server-token',
47
+ sender_email: process.env.POSTMARK_DEV_SENDER || 'dev@company.com',
48
+ },
49
+ },
50
+ },
51
+ ],
52
+ });
53
+ console.log(`[TIMING] Create notification config: ${(performance.now() - createStart).toFixed(2)}ms`);
54
+ console.log('Postmark notification configuration created successfully');
55
+ // Create notification message templates
56
+ console.log('\n--- Creating Message Templates ---');
57
+ const templateStart = performance.now();
58
+ await notifications.messages.create('ductape:rematch', {
59
+ name: 'Appointment Reminder',
60
+ tag: 'postmark-notifications:appointment',
61
+ description: 'Appointment reminder email',
62
+ email: {
63
+ subject: 'Reminder: Appointment on {{appointment_date}}',
64
+ template: `
65
+ <html>
66
+ <body style="font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; margin: 0; padding: 0; background: #f0f4f8;">
67
+ <div style="max-width: 600px; margin: 0 auto; padding: 20px;">
68
+ <div style="background: white; border-radius: 16px; overflow: hidden; box-shadow: 0 4px 12px rgba(0,0,0,0.1);">
69
+ <div style="background: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%); padding: 30px; text-align: center;">
70
+ <h1 style="color: white; margin: 0; font-weight: 600;">Appointment Reminder</h1>
71
+ </div>
72
+
73
+ <div style="padding: 30px;">
74
+ <p style="font-size: 16px; color: #374151;">Hi {{patient_name}},</p>
75
+ <p style="color: #6b7280;">This is a friendly reminder about your upcoming appointment.</p>
76
+
77
+ <div style="background: #f9fafb; border-radius: 12px; padding: 20px; margin: 20px 0;">
78
+ <table style="width: 100%;">
79
+ <tr>
80
+ <td style="padding: 10px 0; color: #6b7280;">
81
+ <strong>Date:</strong>
82
+ </td>
83
+ <td style="padding: 10px 0; color: #111827; text-align: right; font-weight: 500;">
84
+ {{appointment_date}}
85
+ </td>
86
+ </tr>
87
+ <tr>
88
+ <td style="padding: 10px 0; color: #6b7280;">
89
+ <strong>Time:</strong>
90
+ </td>
91
+ <td style="padding: 10px 0; color: #111827; text-align: right; font-weight: 500;">
92
+ {{appointment_time}}
93
+ </td>
94
+ </tr>
95
+ <tr>
96
+ <td style="padding: 10px 0; color: #6b7280;">
97
+ <strong>Provider:</strong>
98
+ </td>
99
+ <td style="padding: 10px 0; color: #111827; text-align: right; font-weight: 500;">
100
+ Dr. {{doctor_name}}
101
+ </td>
102
+ </tr>
103
+ <tr>
104
+ <td style="padding: 10px 0; color: #6b7280;">
105
+ <strong>Location:</strong>
106
+ </td>
107
+ <td style="padding: 10px 0; color: #111827; text-align: right; font-weight: 500;">
108
+ {{clinic_address}}
109
+ </td>
110
+ </tr>
111
+ </table>
112
+ </div>
113
+
114
+ <div style="text-align: center; margin: 25px 0;">
115
+ <a href="{{confirm_link}}" style="display: inline-block; background: #10b981; color: white; padding: 14px 32px; text-decoration: none; border-radius: 8px; font-weight: 600; margin: 5px;">
116
+ Confirm Appointment
117
+ </a>
118
+ <a href="{{reschedule_link}}" style="display: inline-block; background: #f59e0b; color: white; padding: 14px 32px; text-decoration: none; border-radius: 8px; font-weight: 600; margin: 5px;">
119
+ Reschedule
120
+ </a>
121
+ </div>
122
+
123
+ <p style="color: #9ca3af; font-size: 14px; text-align: center;">
124
+ Please arrive 15 minutes early for check-in.
125
+ </p>
126
+ </div>
127
+ </div>
128
+ </div>
129
+ </body>
130
+ </html>
131
+ `,
132
+ },
133
+ });
134
+ await notifications.messages.create('ductape:rematch', {
135
+ name: 'Subscription Renewal',
136
+ tag: 'postmark-notifications:subscription-renewal',
137
+ description: 'Subscription renewal notification',
138
+ email: {
139
+ subject: 'Your {{plan_name}} Subscription Renews Soon',
140
+ template: `
141
+ <html>
142
+ <body style="font-family: Arial, sans-serif; padding: 20px; background: #fafafa;">
143
+ <div style="max-width: 600px; margin: 0 auto; background: white; border-radius: 10px; overflow: hidden; box-shadow: 0 2px 8px rgba(0,0,0,0.08);">
144
+ <div style="background: #1a1a1a; padding: 30px; text-align: center;">
145
+ <h1 style="color: white; margin: 0;">Subscription Renewal</h1>
146
+ </div>
147
+
148
+ <div style="padding: 30px;">
149
+ <p style="font-size: 16px;">Hi {{customer_name}},</p>
150
+ <p>Your <strong>{{plan_name}}</strong> subscription is set to renew on <strong>{{renewal_date}}</strong>.</p>
151
+
152
+ <div style="background: #f8f8f8; border-radius: 8px; padding: 20px; margin: 20px 0;">
153
+ <h3 style="margin-top: 0;">Renewal Summary</h3>
154
+ <p><strong>Plan:</strong> {{plan_name}}</p>
155
+ <p><strong>Billing Period:</strong> {{billing_period}}</p>
156
+ <p><strong>Amount:</strong> {{renewal_amount}}</p>
157
+ <p><strong>Payment Method:</strong> Card ending in {{card_last4}}</p>
158
+ </div>
159
+
160
+ <p>No action is required. Your subscription will automatically renew.</p>
161
+
162
+ <div style="text-align: center; margin: 25px 0;">
163
+ <a href="{{manage_subscription_link}}" style="display: inline-block; background: #333; color: white; padding: 15px 40px; text-decoration: none; border-radius: 5px;">
164
+ Manage Subscription
165
+ </a>
166
+ </div>
167
+
168
+ <p style="color: #666; font-size: 13px;">
169
+ If you wish to cancel, please do so before {{cancellation_deadline}}.
170
+ </p>
171
+ </div>
172
+ </div>
173
+ </body>
174
+ </html>
175
+ `,
176
+ },
177
+ });
178
+ await notifications.messages.create('ductape:rematch', {
179
+ name: 'Feedback Request',
180
+ tag: 'postmark-notifications:feedback',
181
+ description: 'Customer feedback request email',
182
+ email: {
183
+ subject: 'How was your experience, {{customer_name}}?',
184
+ template: `
185
+ <html>
186
+ <body style="font-family: Arial, sans-serif; padding: 20px; background: #f5f5f5;">
187
+ <div style="max-width: 600px; margin: 0 auto; background: white; border-radius: 10px; overflow: hidden;">
188
+ <div style="padding: 30px; text-align: center;">
189
+ <h1 style="color: #333; margin-bottom: 10px;">We'd Love Your Feedback!</h1>
190
+ <p style="color: #666;">Your opinion matters to us.</p>
191
+ </div>
192
+
193
+ <div style="padding: 0 30px 30px;">
194
+ <p>Hi {{customer_name}},</p>
195
+ <p>Thank you for your recent {{interaction_type}} with us. We'd appreciate it if you could take a moment to share your experience.</p>
196
+
197
+ <div style="text-align: center; margin: 30px 0;">
198
+ <p style="color: #333; font-weight: bold;">How would you rate your experience?</p>
199
+ <div style="margin: 20px 0;">
200
+ <a href="{{rating_link_1}}" style="display: inline-block; font-size: 30px; text-decoration: none; margin: 0 5px;">1️⃣</a>
201
+ <a href="{{rating_link_2}}" style="display: inline-block; font-size: 30px; text-decoration: none; margin: 0 5px;">2️⃣</a>
202
+ <a href="{{rating_link_3}}" style="display: inline-block; font-size: 30px; text-decoration: none; margin: 0 5px;">3️⃣</a>
203
+ <a href="{{rating_link_4}}" style="display: inline-block; font-size: 30px; text-decoration: none; margin: 0 5px;">4️⃣</a>
204
+ <a href="{{rating_link_5}}" style="display: inline-block; font-size: 30px; text-decoration: none; margin: 0 5px;">5️⃣</a>
205
+ </div>
206
+ <p style="color: #999; font-size: 12px;">1 = Poor, 5 = Excellent</p>
207
+ </div>
208
+
209
+ <div style="text-align: center;">
210
+ <a href="{{detailed_feedback_link}}" style="display: inline-block; background: #007bff; color: white; padding: 15px 40px; text-decoration: none; border-radius: 5px;">
211
+ Leave Detailed Feedback
212
+ </a>
213
+ </div>
214
+ </div>
215
+ </div>
216
+ </body>
217
+ </html>
218
+ `,
219
+ },
220
+ });
221
+ console.log(`[TIMING] Create message templates: ${(performance.now() - templateStart).toFixed(2)}ms`);
222
+ console.log('Message templates created successfully');
223
+ // ==================== SEND EMAILS ====================
224
+ console.log('\n--- Sending Appointment Reminder ---');
225
+ const appointmentStart = performance.now();
226
+ const appointmentResult = await notifications.email({
227
+ product: 'ductape:rematch',
228
+ env: 'prd',
229
+ notification: 'postmark-notifications:appointment',
230
+ input: {
231
+ recipients: ['patient@example.com'],
232
+ subject: {
233
+ appointment_date: 'December 22, 2024',
234
+ },
235
+ template: {
236
+ patient_name: 'Emily Wilson',
237
+ appointment_date: 'December 22, 2024',
238
+ appointment_time: '2:30 PM',
239
+ doctor_name: 'Sarah Johnson',
240
+ clinic_address: '456 Medical Center Dr, Suite 200',
241
+ confirm_link: 'https://clinic.com/confirm?appt=12345',
242
+ reschedule_link: 'https://clinic.com/reschedule?appt=12345',
243
+ },
244
+ },
245
+ });
246
+ console.log(`[TIMING] Send appointment reminder: ${(performance.now() - appointmentStart).toFixed(2)}ms`);
247
+ console.log('Appointment reminder result:', JSON.stringify(appointmentResult, null, 2));
248
+ // Send subscription renewal
249
+ console.log('\n--- Sending Subscription Renewal ---');
250
+ const renewalStart = performance.now();
251
+ const renewalResult = await notifications.email({
252
+ product: 'ductape:rematch',
253
+ env: 'prd',
254
+ notification: 'postmark-notifications:subscription-renewal',
255
+ input: {
256
+ recipients: ['subscriber@example.com'],
257
+ subject: {
258
+ plan_name: 'Pro Plan',
259
+ },
260
+ template: {
261
+ customer_name: 'David Lee',
262
+ plan_name: 'Pro Plan',
263
+ renewal_date: 'January 1, 2025',
264
+ billing_period: 'Monthly',
265
+ renewal_amount: '$29.99',
266
+ card_last4: '4242',
267
+ manage_subscription_link: 'https://app.com/subscription',
268
+ cancellation_deadline: 'December 31, 2024',
269
+ },
270
+ },
271
+ });
272
+ console.log(`[TIMING] Send subscription renewal: ${(performance.now() - renewalStart).toFixed(2)}ms`);
273
+ console.log('Subscription renewal result:', JSON.stringify(renewalResult, null, 2));
274
+ // Send feedback request
275
+ console.log('\n--- Sending Feedback Request ---');
276
+ const feedbackStart = performance.now();
277
+ const feedbackResult = await notifications.email({
278
+ product: 'ductape:rematch',
279
+ env: 'prd',
280
+ notification: 'postmark-notifications:feedback',
281
+ input: {
282
+ recipients: ['customer@example.com'],
283
+ subject: {
284
+ customer_name: 'Alex',
285
+ },
286
+ template: {
287
+ customer_name: 'Alex',
288
+ interaction_type: 'purchase',
289
+ rating_link_1: 'https://feedback.com/rate/1',
290
+ rating_link_2: 'https://feedback.com/rate/2',
291
+ rating_link_3: 'https://feedback.com/rate/3',
292
+ rating_link_4: 'https://feedback.com/rate/4',
293
+ rating_link_5: 'https://feedback.com/rate/5',
294
+ detailed_feedback_link: 'https://feedback.com/detailed',
295
+ },
296
+ },
297
+ });
298
+ console.log(`[TIMING] Send feedback request: ${(performance.now() - feedbackStart).toFixed(2)}ms`);
299
+ console.log('Feedback request result:', JSON.stringify(feedbackResult, null, 2));
300
+ // ==================== FETCH CONFIGURATIONS ====================
301
+ console.log('\n--- Fetching Notification Configuration ---');
302
+ const fetchStart = performance.now();
303
+ const notificationConfig = await notifications.fetch('ductape:rematch', 'postmark-notifications');
304
+ console.log(`[TIMING] Fetch config: ${(performance.now() - fetchStart).toFixed(2)}ms`);
305
+ console.log('Postmark config:', JSON.stringify(notificationConfig, null, 2));
306
+ // ==================== SUMMARY ====================
307
+ const totalTime = performance.now() - startTime;
308
+ console.log(`\n[TIMING SUMMARY]`);
309
+ console.log(` Total time: ${totalTime.toFixed(2)}ms`);
310
+ }
311
+ catch (error) {
312
+ console.error('Error in Postmark email operations:', error);
313
+ }
314
+ }
315
+ runPostmarkTests();
316
+ //# sourceMappingURL=test.email.postmark.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.email.postmark.js","sourceRoot":"","sources":["../../src/test/test.email.postmark.ts"],"names":[],"mappings":";;;;;AAAA,oDAA8B;AAE9B;;;;;;;;GAQG;AAEH,MAAM,EAAE,aAAa,EAAE,GAAG,eAAO,CAAC;AAElC,eAAe;AACf,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;AACpC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,kDAAkD,CAAC,CAAC;AAE5F,KAAK,UAAU,gBAAgB;IAC7B,IAAI,CAAC;QACH,8EAA8E;QAE9E,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;QACxE,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAEtC,wDAAwD;QACxD,MAAM,aAAa,CAAC,MAAM,CAAC,iBAAiB,EAAE;YAC5C,IAAI,EAAE,8BAA8B;YACpC,GAAG,EAAE,wBAAwB;YAC7B,WAAW,EAAE,sCAAsC;YACnD,IAAI,EAAE;gBACJ;oBACE,IAAI,EAAE,KAAK;oBACX,MAAM,EAAE;wBACN,QAAQ,EAAE,UAAU;wBACpB,QAAQ,EAAE;4BACR,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,4BAA4B;4BAC9E,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,qBAAqB;yBACnE;qBACF;iBACF;gBACD;oBACE,IAAI,EAAE,KAAK;oBACX,MAAM,EAAE;wBACN,QAAQ,EAAE,UAAU;wBACpB,QAAQ,EAAE;4BACR,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,uBAAuB;4BACtE,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,iBAAiB;yBACnE;qBACF;iBACF;aACF;SACF,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtG,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;QAExE,wCAAwC;QACxC,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;QACpD,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAExC,MAAM,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE;YACrD,IAAI,EAAE,sBAAsB;YAC5B,GAAG,EAAE,oCAAoC;YACzC,WAAW,EAAE,4BAA4B;YACzC,KAAK,EAAE;gBACL,OAAO,EAAE,+CAA+C;gBACxD,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAmET;aACF;SACF,CAAC,CAAC;QAEH,MAAM,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE;YACrD,IAAI,EAAE,sBAAsB;YAC5B,GAAG,EAAE,6CAA6C;YAClD,WAAW,EAAE,mCAAmC;YAChD,KAAK,EAAE;gBACL,OAAO,EAAE,6CAA6C;gBACtD,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAmCT;aACF;SACF,CAAC,CAAC;QAEH,MAAM,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE;YACrD,IAAI,EAAE,kBAAkB;YACxB,GAAG,EAAE,iCAAiC;YACtC,WAAW,EAAE,iCAAiC;YAC9C,KAAK,EAAE;gBACL,OAAO,EAAE,6CAA6C;gBACtD,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAkCT;aACF;SACF,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtG,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QAEtD,wDAAwD;QAExD,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QACtD,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAE3C,MAAM,iBAAiB,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC;YAClD,OAAO,EAAE,iBAAiB;YAC1B,GAAG,EAAE,KAAK;YACV,YAAY,EAAE,oCAAoC;YAClD,KAAK,EAAE;gBACL,UAAU,EAAE,CAAC,qBAAqB,CAAC;gBACnC,OAAO,EAAE;oBACP,gBAAgB,EAAE,mBAAmB;iBACtC;gBACD,QAAQ,EAAE;oBACR,YAAY,EAAE,cAAc;oBAC5B,gBAAgB,EAAE,mBAAmB;oBACrC,gBAAgB,EAAE,SAAS;oBAC3B,WAAW,EAAE,eAAe;oBAC5B,cAAc,EAAE,kCAAkC;oBAClD,YAAY,EAAE,uCAAuC;oBACrD,eAAe,EAAE,0CAA0C;iBAC5D;aACF;SACF,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1G,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAExF,4BAA4B;QAC5B,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QACtD,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAEvC,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC;YAC9C,OAAO,EAAE,iBAAiB;YAC1B,GAAG,EAAE,KAAK;YACV,YAAY,EAAE,6CAA6C;YAC3D,KAAK,EAAE;gBACL,UAAU,EAAE,CAAC,wBAAwB,CAAC;gBACtC,OAAO,EAAE;oBACP,SAAS,EAAE,UAAU;iBACtB;gBACD,QAAQ,EAAE;oBACR,aAAa,EAAE,WAAW;oBAC1B,SAAS,EAAE,UAAU;oBACrB,YAAY,EAAE,iBAAiB;oBAC/B,cAAc,EAAE,SAAS;oBACzB,cAAc,EAAE,QAAQ;oBACxB,UAAU,EAAE,MAAM;oBAClB,wBAAwB,EAAE,8BAA8B;oBACxD,qBAAqB,EAAE,mBAAmB;iBAC3C;aACF;SACF,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtG,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAEpF,wBAAwB;QACxB,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAClD,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAExC,MAAM,cAAc,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC;YAC/C,OAAO,EAAE,iBAAiB;YAC1B,GAAG,EAAE,KAAK;YACV,YAAY,EAAE,iCAAiC;YAC/C,KAAK,EAAE;gBACL,UAAU,EAAE,CAAC,sBAAsB,CAAC;gBACpC,OAAO,EAAE;oBACP,aAAa,EAAE,MAAM;iBACtB;gBACD,QAAQ,EAAE;oBACR,aAAa,EAAE,MAAM;oBACrB,gBAAgB,EAAE,UAAU;oBAC5B,aAAa,EAAE,6BAA6B;oBAC5C,aAAa,EAAE,6BAA6B;oBAC5C,aAAa,EAAE,6BAA6B;oBAC5C,aAAa,EAAE,6BAA6B;oBAC5C,aAAa,EAAE,6BAA6B;oBAC5C,sBAAsB,EAAE,+BAA+B;iBACxD;aACF;SACF,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACnG,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAEjF,iEAAiE;QAEjE,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAC7D,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAErC,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,CAAC;QAClG,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACvF,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAE7E,oDAAoD;QAEpD,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,iBAAiB,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAEzD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1 @@
1
+ export {};