@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,275 @@
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
+ * Twilio SMS Provider Tests
9
+ *
10
+ * Comprehensive tests for Twilio SMS operations:
11
+ * - Notification configuration with Twilio
12
+ * - SMS sending with templates
13
+ * - Multi-recipient SMS
14
+ * - Twilio-specific features (messaging services, alphanumeric sender IDs)
15
+ */
16
+ const { notifications } = index_1.default;
17
+ // Start timing
18
+ const startTime = performance.now();
19
+ console.log(`[${new Date().toISOString()}] Starting Twilio SMS provider operations...`);
20
+ async function runTwilioTests() {
21
+ try {
22
+ // ==================== CREATE NOTIFICATION CONFIGURATION ====================
23
+ console.log('\n--- Creating Notification Configuration (Twilio SMS) ---');
24
+ const createStart = performance.now();
25
+ // Create notification with Twilio SMS configuration
26
+ await notifications.create('ductape:rematch', {
27
+ name: 'Twilio SMS Notifications',
28
+ tag: 'twilio-sms',
29
+ description: 'SMS notifications via Twilio API',
30
+ envs: [
31
+ {
32
+ slug: 'prd',
33
+ sms: {
34
+ provider: 'twilio',
35
+ accountSid: process.env.TWILIO_ACCOUNT_SID || 'AC-your-account-sid',
36
+ authToken: process.env.TWILIO_AUTH_TOKEN || 'your-auth-token',
37
+ sender: process.env.TWILIO_PHONE_NUMBER || '+15551234567',
38
+ },
39
+ },
40
+ {
41
+ slug: 'dev',
42
+ sms: {
43
+ provider: 'twilio',
44
+ accountSid: process.env.TWILIO_DEV_ACCOUNT_SID || 'AC-your-test-account-sid',
45
+ authToken: process.env.TWILIO_DEV_AUTH_TOKEN || 'your-test-auth-token',
46
+ sender: process.env.TWILIO_DEV_PHONE_NUMBER || '+15559876543',
47
+ },
48
+ },
49
+ ],
50
+ });
51
+ console.log(`[TIMING] Create notification config: ${(performance.now() - createStart).toFixed(2)}ms`);
52
+ console.log('Twilio SMS notification configuration created successfully');
53
+ // Create notification message templates
54
+ console.log('\n--- Creating SMS Templates ---');
55
+ const templateStart = performance.now();
56
+ await notifications.messages.create('ductape:rematch', {
57
+ name: 'Verification Code',
58
+ tag: 'twilio-sms:verification',
59
+ description: 'SMS verification code',
60
+ sms: 'Your {{company_name}} verification code is: {{code}}. This code expires in {{expiry_minutes}} minutes. Do not share this code with anyone.',
61
+ });
62
+ await notifications.messages.create('ductape:rematch', {
63
+ name: 'Order Status',
64
+ tag: 'twilio-sms:order-status',
65
+ description: 'Order status update SMS',
66
+ sms: '{{company_name}}: Your order #{{order_id}} is now {{status}}. {{additional_info}} Track: {{tracking_url}}',
67
+ });
68
+ await notifications.messages.create('ductape:rematch', {
69
+ name: 'Appointment Reminder',
70
+ tag: 'twilio-sms:appointment-reminder',
71
+ description: 'Appointment reminder SMS',
72
+ sms: 'Reminder: You have an appointment with {{provider_name}} on {{date}} at {{time}}. Location: {{location}}. Reply YES to confirm or call {{phone}} to reschedule.',
73
+ });
74
+ await notifications.messages.create('ductape:rematch', {
75
+ name: 'Payment Alert',
76
+ tag: 'twilio-sms:payment-alert',
77
+ description: 'Payment notification SMS',
78
+ sms: '{{bank_name}} Alert: {{transaction_type}} of {{amount}} on your account ending {{account_last4}} at {{merchant}}. Balance: {{balance}}. If unauthorized, call {{support_number}}.',
79
+ });
80
+ await notifications.messages.create('ductape:rematch', {
81
+ name: 'Delivery Update',
82
+ tag: 'twilio-sms:delivery-update',
83
+ description: 'Delivery status SMS',
84
+ sms: '{{company_name}}: Your package is {{status}}! Estimated delivery: {{eta}}. Driver: {{driver_name}}. Track live: {{live_tracking_url}}',
85
+ });
86
+ console.log(`[TIMING] Create SMS templates: ${(performance.now() - templateStart).toFixed(2)}ms`);
87
+ console.log('SMS templates created successfully');
88
+ // ==================== SEND SMS ====================
89
+ console.log('\n--- Sending Verification Code SMS ---');
90
+ const verifyStart = performance.now();
91
+ const verifyResult = await notifications.sms({
92
+ product: 'ductape:rematch',
93
+ env: 'prd',
94
+ notification: 'twilio-sms:verification',
95
+ input: {
96
+ recipients: ['+14155551234'],
97
+ body: {
98
+ company_name: 'SecureApp',
99
+ code: '847293',
100
+ expiry_minutes: '10',
101
+ },
102
+ },
103
+ });
104
+ console.log(`[TIMING] Send verification SMS: ${(performance.now() - verifyStart).toFixed(2)}ms`);
105
+ console.log('Verification SMS result:', JSON.stringify(verifyResult, null, 2));
106
+ // Send order status SMS
107
+ console.log('\n--- Sending Order Status SMS ---');
108
+ const orderStart = performance.now();
109
+ const orderResult = await notifications.sms({
110
+ product: 'ductape:rematch',
111
+ env: 'prd',
112
+ notification: 'twilio-sms:order-status',
113
+ input: {
114
+ recipients: ['+14155559876'],
115
+ body: {
116
+ company_name: 'ShopFast',
117
+ order_id: 'ORD-78901',
118
+ status: 'shipped',
119
+ additional_info: 'Expected delivery: Dec 25.',
120
+ tracking_url: 'shop.co/t/78901',
121
+ },
122
+ },
123
+ });
124
+ console.log(`[TIMING] Send order status SMS: ${(performance.now() - orderStart).toFixed(2)}ms`);
125
+ console.log('Order status SMS result:', JSON.stringify(orderResult, null, 2));
126
+ // Send appointment reminder SMS
127
+ console.log('\n--- Sending Appointment Reminder SMS ---');
128
+ const appointmentStart = performance.now();
129
+ const appointmentResult = await notifications.sms({
130
+ product: 'ductape:rematch',
131
+ env: 'prd',
132
+ notification: 'twilio-sms:appointment-reminder',
133
+ input: {
134
+ recipients: ['+14155554321'],
135
+ body: {
136
+ provider_name: 'Dr. Smith',
137
+ date: 'Dec 22',
138
+ time: '2:30 PM',
139
+ location: '456 Medical Dr',
140
+ phone: '555-0123',
141
+ },
142
+ },
143
+ });
144
+ console.log(`[TIMING] Send appointment SMS: ${(performance.now() - appointmentStart).toFixed(2)}ms`);
145
+ console.log('Appointment SMS result:', JSON.stringify(appointmentResult, null, 2));
146
+ // Send payment alert SMS
147
+ console.log('\n--- Sending Payment Alert SMS ---');
148
+ const paymentStart = performance.now();
149
+ const paymentResult = await notifications.sms({
150
+ product: 'ductape:rematch',
151
+ env: 'prd',
152
+ notification: 'twilio-sms:payment-alert',
153
+ input: {
154
+ recipients: ['+14155556789'],
155
+ body: {
156
+ bank_name: 'SecureBank',
157
+ transaction_type: 'Purchase',
158
+ amount: '$89.99',
159
+ account_last4: '4567',
160
+ merchant: 'Amazon',
161
+ balance: '$1,234.56',
162
+ support_number: '1-800-555-0199',
163
+ },
164
+ },
165
+ });
166
+ console.log(`[TIMING] Send payment alert SMS: ${(performance.now() - paymentStart).toFixed(2)}ms`);
167
+ console.log('Payment alert SMS result:', JSON.stringify(paymentResult, null, 2));
168
+ // Send delivery update SMS
169
+ console.log('\n--- Sending Delivery Update SMS ---');
170
+ const deliveryStart = performance.now();
171
+ const deliveryResult = await notifications.sms({
172
+ product: 'ductape:rematch',
173
+ env: 'prd',
174
+ notification: 'twilio-sms:delivery-update',
175
+ input: {
176
+ recipients: ['+14155551111'],
177
+ body: {
178
+ company_name: 'QuickDeliver',
179
+ status: 'out for delivery',
180
+ eta: '2:00 PM - 4:00 PM',
181
+ driver_name: 'John',
182
+ live_tracking_url: 'qd.co/live/abc123',
183
+ },
184
+ },
185
+ });
186
+ console.log(`[TIMING] Send delivery SMS: ${(performance.now() - deliveryStart).toFixed(2)}ms`);
187
+ console.log('Delivery SMS result:', JSON.stringify(deliveryResult, null, 2));
188
+ // ==================== MULTI-RECIPIENT SMS ====================
189
+ console.log('\n--- Sending Multi-Recipient SMS ---');
190
+ const multiStart = performance.now();
191
+ const multiResult = await notifications.sms({
192
+ product: 'ductape:rematch',
193
+ env: 'prd',
194
+ notification: 'twilio-sms:order-status',
195
+ input: {
196
+ recipients: ['+14155551111', '+14155552222', '+14155553333'],
197
+ body: {
198
+ company_name: 'BulkShop',
199
+ order_id: 'BULK-001',
200
+ status: 'ready for pickup',
201
+ additional_info: 'Available until 8 PM.',
202
+ tracking_url: 'bulk.co/pickup/001',
203
+ },
204
+ },
205
+ });
206
+ console.log(`[TIMING] Send multi-recipient SMS: ${(performance.now() - multiStart).toFixed(2)}ms`);
207
+ console.log('Multi-recipient SMS result:', JSON.stringify(multiResult, null, 2));
208
+ // ==================== MULTI-CHANNEL WITH SMS ====================
209
+ console.log('\n--- Multi-Channel Notification with SMS ---');
210
+ const channelStart = performance.now();
211
+ const channelResult = await notifications.send({
212
+ product: 'ductape:rematch',
213
+ env: 'prd',
214
+ notification: 'twilio-sms:verification',
215
+ sms: {
216
+ recipients: ['+14155559999'],
217
+ body: {
218
+ company_name: 'MultiChannel App',
219
+ code: '123456',
220
+ expiry_minutes: '5',
221
+ },
222
+ },
223
+ });
224
+ console.log(`[TIMING] Multi-channel notification: ${(performance.now() - channelStart).toFixed(2)}ms`);
225
+ console.log('Multi-channel result:', JSON.stringify(channelResult, null, 2));
226
+ // ==================== SCHEDULED SMS ====================
227
+ console.log('\n--- Scheduling SMS ---');
228
+ const scheduleStart = performance.now();
229
+ const scheduledResult = await notifications.dispatch({
230
+ product: 'ductape:rematch',
231
+ env: 'prd',
232
+ notification: 'twilio-sms:appointment-reminder',
233
+ sms: {
234
+ recipients: ['+14155558888'],
235
+ body: {
236
+ provider_name: 'Dr. Johnson',
237
+ date: 'Dec 24',
238
+ time: '10:00 AM',
239
+ location: '789 Health Blvd',
240
+ phone: '555-0456',
241
+ },
242
+ },
243
+ schedule: {
244
+ start_at: Date.now() + 86400000, // 24 hours from now
245
+ },
246
+ retries: 2,
247
+ });
248
+ console.log(`[TIMING] Schedule SMS: ${(performance.now() - scheduleStart).toFixed(2)}ms`);
249
+ console.log('Scheduled SMS result:', JSON.stringify(scheduledResult, null, 2));
250
+ // ==================== FETCH CONFIGURATIONS ====================
251
+ console.log('\n--- Fetching Notification Configuration ---');
252
+ const fetchStart = performance.now();
253
+ const notificationConfig = await notifications.fetch('ductape:rematch', 'twilio-sms');
254
+ console.log(`[TIMING] Fetch config: ${(performance.now() - fetchStart).toFixed(2)}ms`);
255
+ console.log('Twilio SMS config:', JSON.stringify(notificationConfig, null, 2));
256
+ // List SMS templates
257
+ console.log('\n--- Listing SMS Templates ---');
258
+ const listMsgStart = performance.now();
259
+ const messages = await notifications.messages.list('ductape:rematch', 'twilio-sms');
260
+ console.log(`[TIMING] List SMS templates: ${(performance.now() - listMsgStart).toFixed(2)}ms`);
261
+ console.log('SMS templates:', messages.map(m => ({
262
+ tag: m.tag,
263
+ name: m.name,
264
+ })));
265
+ // ==================== SUMMARY ====================
266
+ const totalTime = performance.now() - startTime;
267
+ console.log(`\n[TIMING SUMMARY]`);
268
+ console.log(` Total time: ${totalTime.toFixed(2)}ms`);
269
+ }
270
+ catch (error) {
271
+ console.error('Error in Twilio SMS operations:', error);
272
+ }
273
+ }
274
+ runTwilioTests();
275
+ //# sourceMappingURL=test.sms.twilio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.sms.twilio.js","sourceRoot":"","sources":["../../src/test/test.sms.twilio.ts"],"names":[],"mappings":"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"}