@unchainedshop/plugins 1.2.5 → 1.2.6

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 (286) hide show
  1. package/lib/delivery/pick-mup.d.ts +1 -0
  2. package/lib/delivery/pick-mup.js +98 -0
  3. package/lib/delivery/pick-mup.js.map +1 -0
  4. package/lib/delivery/post.d.ts +1 -0
  5. package/lib/delivery/post.js +23 -0
  6. package/lib/delivery/post.js.map +1 -0
  7. package/lib/delivery/send-message.d.ts +1 -0
  8. package/lib/delivery/send-message.js +41 -0
  9. package/lib/delivery/send-message.js.map +1 -0
  10. package/lib/delivery/stores.d.ts +1 -0
  11. package/lib/delivery/stores.js +39 -0
  12. package/lib/delivery/stores.js.map +1 -0
  13. package/lib/enrollments/licensed.d.ts +1 -0
  14. package/lib/enrollments/licensed.js +40 -0
  15. package/lib/enrollments/licensed.js.map +1 -0
  16. package/lib/events/node-event-emitter.d.ts +1 -0
  17. package/lib/events/node-event-emitter.js +16 -0
  18. package/lib/events/node-event-emitter.js.map +1 -0
  19. package/lib/events/redis.d.ts +1 -0
  20. package/lib/events/redis.js +24 -0
  21. package/lib/events/redis.js.map +1 -0
  22. package/lib/files/gridfs/gridfs-adapter.d.ts +2 -0
  23. package/lib/files/gridfs/gridfs-adapter.js +106 -0
  24. package/lib/files/gridfs/gridfs-adapter.js.map +1 -0
  25. package/lib/files/gridfs/gridfs-webhook.d.ts +2 -0
  26. package/lib/files/gridfs/gridfs-webhook.js +55 -0
  27. package/lib/files/gridfs/gridfs-webhook.js.map +1 -0
  28. package/lib/files/gridfs/index.d.ts +8 -0
  29. package/lib/files/gridfs/index.js +21 -0
  30. package/lib/files/gridfs/index.js.map +1 -0
  31. package/lib/files/gridfs/promisePipe.d.ts +2 -0
  32. package/lib/files/gridfs/promisePipe.js +21 -0
  33. package/lib/files/gridfs/promisePipe.js.map +1 -0
  34. package/lib/files/gridfs/sign.d.ts +2 -0
  35. package/lib/files/gridfs/sign.js +12 -0
  36. package/lib/files/gridfs/sign.js.map +1 -0
  37. package/lib/files/minio/minio-adapter.d.ts +4 -0
  38. package/lib/files/minio/minio-adapter.js +165 -0
  39. package/lib/files/minio/minio-adapter.js.map +1 -0
  40. package/lib/files/minio/minio-webhook.d.ts +2 -0
  41. package/lib/files/minio/minio-webhook.js +47 -0
  42. package/lib/files/minio/minio-webhook.js.map +1 -0
  43. package/lib/filters/local-search.d.ts +3 -0
  44. package/lib/filters/local-search.js +84 -0
  45. package/lib/filters/local-search.js.map +1 -0
  46. package/lib/filters/strict-equal.d.ts +1 -0
  47. package/lib/filters/strict-equal.js +25 -0
  48. package/lib/filters/strict-equal.js.map +1 -0
  49. package/lib/payment/apple-iap/adapter.d.ts +2 -0
  50. package/lib/payment/apple-iap/adapter.js +286 -0
  51. package/lib/payment/apple-iap/adapter.js.map +1 -0
  52. package/lib/payment/apple-iap/db/AppleTransactionsCollection.d.ts +7 -0
  53. package/lib/payment/apple-iap/db/AppleTransactionsCollection.js +5 -0
  54. package/lib/payment/apple-iap/db/AppleTransactionsCollection.js.map +1 -0
  55. package/lib/payment/apple-iap/index.d.ts +3 -0
  56. package/lib/payment/apple-iap/index.js +4 -0
  57. package/lib/payment/apple-iap/index.js.map +1 -0
  58. package/lib/payment/apple-iap/module/configureAppleTransactionsModule.d.ts +9 -0
  59. package/lib/payment/apple-iap/module/configureAppleTransactionsModule.js +18 -0
  60. package/lib/payment/apple-iap/module/configureAppleTransactionsModule.js.map +1 -0
  61. package/lib/payment/bity/adapter.d.ts +2 -0
  62. package/lib/payment/bity/adapter.js +318 -0
  63. package/lib/payment/bity/adapter.js.map +1 -0
  64. package/lib/payment/bity/db/BityCredentialsCollection.d.ts +11 -0
  65. package/lib/payment/bity/db/BityCredentialsCollection.js +5 -0
  66. package/lib/payment/bity/db/BityCredentialsCollection.js.map +1 -0
  67. package/lib/payment/bity/index.d.ts +3 -0
  68. package/lib/payment/bity/index.js +4 -0
  69. package/lib/payment/bity/index.js.map +1 -0
  70. package/lib/payment/bity/module/configureBityModule.d.ts +11 -0
  71. package/lib/payment/bity/module/configureBityModule.js +33 -0
  72. package/lib/payment/bity/module/configureBityModule.js.map +1 -0
  73. package/lib/payment/braintree.d.ts +1 -0
  74. package/lib/payment/braintree.js +129 -0
  75. package/lib/payment/braintree.js.map +1 -0
  76. package/lib/payment/cryptopay.d.ts +2 -0
  77. package/lib/payment/cryptopay.js +161 -0
  78. package/lib/payment/cryptopay.js.map +1 -0
  79. package/lib/payment/datatrans-v2/api/authorize.d.ts +2 -0
  80. package/lib/payment/datatrans-v2/api/authorize.js +12 -0
  81. package/lib/payment/datatrans-v2/api/authorize.js.map +1 -0
  82. package/lib/payment/datatrans-v2/api/authorizeAuthenticated.d.ts +2 -0
  83. package/lib/payment/datatrans-v2/api/authorizeAuthenticated.js +11 -0
  84. package/lib/payment/datatrans-v2/api/authorizeAuthenticated.js.map +1 -0
  85. package/lib/payment/datatrans-v2/api/cancel.d.ts +2 -0
  86. package/lib/payment/datatrans-v2/api/cancel.js +10 -0
  87. package/lib/payment/datatrans-v2/api/cancel.js.map +1 -0
  88. package/lib/payment/datatrans-v2/api/index.d.ts +19 -0
  89. package/lib/payment/datatrans-v2/api/index.js +24 -0
  90. package/lib/payment/datatrans-v2/api/index.js.map +1 -0
  91. package/lib/payment/datatrans-v2/api/init.d.ts +2 -0
  92. package/lib/payment/datatrans-v2/api/init.js +31 -0
  93. package/lib/payment/datatrans-v2/api/init.js.map +1 -0
  94. package/lib/payment/datatrans-v2/api/makeFetcher.d.ts +2 -0
  95. package/lib/payment/datatrans-v2/api/makeFetcher.js +41 -0
  96. package/lib/payment/datatrans-v2/api/makeFetcher.js.map +1 -0
  97. package/lib/payment/datatrans-v2/api/secureFields.d.ts +2 -0
  98. package/lib/payment/datatrans-v2/api/secureFields.js +14 -0
  99. package/lib/payment/datatrans-v2/api/secureFields.js.map +1 -0
  100. package/lib/payment/datatrans-v2/api/settle.d.ts +2 -0
  101. package/lib/payment/datatrans-v2/api/settle.js +10 -0
  102. package/lib/payment/datatrans-v2/api/settle.js.map +1 -0
  103. package/lib/payment/datatrans-v2/api/status.d.ts +2 -0
  104. package/lib/payment/datatrans-v2/api/status.js +7 -0
  105. package/lib/payment/datatrans-v2/api/status.js.map +1 -0
  106. package/lib/payment/datatrans-v2/api/validate.d.ts +2 -0
  107. package/lib/payment/datatrans-v2/api/validate.js +10 -0
  108. package/lib/payment/datatrans-v2/api/validate.js.map +1 -0
  109. package/lib/payment/datatrans-v2/generateSignature.d.ts +10 -0
  110. package/lib/payment/datatrans-v2/generateSignature.js +19 -0
  111. package/lib/payment/datatrans-v2/generateSignature.js.map +1 -0
  112. package/lib/payment/datatrans-v2/getPaths.d.ts +9 -0
  113. package/lib/payment/datatrans-v2/getPaths.js +9 -0
  114. package/lib/payment/datatrans-v2/getPaths.js.map +1 -0
  115. package/lib/payment/datatrans-v2/index.d.ts +2 -0
  116. package/lib/payment/datatrans-v2/index.js +385 -0
  117. package/lib/payment/datatrans-v2/index.js.map +1 -0
  118. package/lib/payment/datatrans-v2/middleware.d.ts +2 -0
  119. package/lib/payment/datatrans-v2/middleware.js +113 -0
  120. package/lib/payment/datatrans-v2/middleware.js.map +1 -0
  121. package/lib/payment/datatrans-v2/parseRegistrationData.d.ts +11 -0
  122. package/lib/payment/datatrans-v2/parseRegistrationData.js +26 -0
  123. package/lib/payment/datatrans-v2/parseRegistrationData.js.map +1 -0
  124. package/lib/payment/datatrans-v2/roundedAmountFromOrder.d.ts +7 -0
  125. package/lib/payment/datatrans-v2/roundedAmountFromOrder.js +10 -0
  126. package/lib/payment/datatrans-v2/roundedAmountFromOrder.js.map +1 -0
  127. package/lib/payment/datatrans-v2/splitProperties.d.ts +8 -0
  128. package/lib/payment/datatrans-v2/splitProperties.js +58 -0
  129. package/lib/payment/datatrans-v2/splitProperties.js.map +1 -0
  130. package/lib/payment/invoice-prepaid.d.ts +1 -0
  131. package/lib/payment/invoice-prepaid.js +30 -0
  132. package/lib/payment/invoice-prepaid.js.map +1 -0
  133. package/lib/payment/invoice.d.ts +1 -0
  134. package/lib/payment/invoice.js +27 -0
  135. package/lib/payment/invoice.js.map +1 -0
  136. package/lib/payment/paypal-checkout.d.ts +1 -0
  137. package/lib/payment/paypal-checkout.js +82 -0
  138. package/lib/payment/paypal-checkout.js.map +1 -0
  139. package/lib/payment/postfinance-checkout/api.d.ts +11 -0
  140. package/lib/payment/postfinance-checkout/api.js +109 -0
  141. package/lib/payment/postfinance-checkout/api.js.map +1 -0
  142. package/lib/payment/postfinance-checkout/index.d.ts +2 -0
  143. package/lib/payment/postfinance-checkout/index.js +187 -0
  144. package/lib/payment/postfinance-checkout/index.js.map +1 -0
  145. package/lib/payment/postfinance-checkout/middleware.d.ts +2 -0
  146. package/lib/payment/postfinance-checkout/middleware.js +44 -0
  147. package/lib/payment/postfinance-checkout/middleware.js.map +1 -0
  148. package/lib/payment/postfinance-checkout/types.d.ts +23 -0
  149. package/lib/payment/postfinance-checkout/types.js +12 -0
  150. package/lib/payment/postfinance-checkout/types.js.map +1 -0
  151. package/lib/payment/postfinance-checkout/utils.d.ts +4 -0
  152. package/lib/payment/postfinance-checkout/utils.js +20 -0
  153. package/lib/payment/postfinance-checkout/utils.js.map +1 -0
  154. package/lib/payment/stripe.d.ts +2 -0
  155. package/lib/payment/stripe.js +217 -0
  156. package/lib/payment/stripe.js.map +1 -0
  157. package/lib/payment/worldline-saferpay/index.d.ts +1 -0
  158. package/lib/payment/worldline-saferpay/index.js +112 -0
  159. package/lib/payment/worldline-saferpay/index.js.map +1 -0
  160. package/lib/payment/worldline-saferpay/worldline-saferpay-client/api/SaferpayClient.d.ts +14 -0
  161. package/lib/payment/worldline-saferpay/worldline-saferpay-client/api/SaferpayClient.js +29 -0
  162. package/lib/payment/worldline-saferpay/worldline-saferpay-client/api/SaferpayClient.js.map +1 -0
  163. package/lib/payment/worldline-saferpay/worldline-saferpay-client/api/SaferpayConnection.d.ts +9 -0
  164. package/lib/payment/worldline-saferpay/worldline-saferpay-client/api/SaferpayConnection.js +28 -0
  165. package/lib/payment/worldline-saferpay/worldline-saferpay-client/api/SaferpayConnection.js.map +1 -0
  166. package/lib/payment/worldline-saferpay/worldline-saferpay-client/index.d.ts +4 -0
  167. package/lib/payment/worldline-saferpay/worldline-saferpay-client/index.js +2 -0
  168. package/lib/payment/worldline-saferpay/worldline-saferpay-client/index.js.map +1 -0
  169. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/PaymentMethods.d.ts +1 -0
  170. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/PaymentMethods.js +2 -0
  171. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/PaymentMethods.js.map +1 -0
  172. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/PaymentPageAssert.d.ts +73 -0
  173. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/PaymentPageAssert.js +2 -0
  174. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/PaymentPageAssert.js.map +1 -0
  175. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/PaymentPageInitialize.d.ts +53 -0
  176. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/PaymentPageInitialize.js +2 -0
  177. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/PaymentPageInitialize.js.map +1 -0
  178. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/Request.d.ts +13 -0
  179. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/Request.js +2 -0
  180. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/Request.js.map +1 -0
  181. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/Response.d.ts +9 -0
  182. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/Response.js +2 -0
  183. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/Response.js.map +1 -0
  184. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/Transaction.d.ts +5 -0
  185. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/Transaction.js +2 -0
  186. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/Transaction.js.map +1 -0
  187. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/TransactionCancel.d.ts +13 -0
  188. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/TransactionCancel.js +2 -0
  189. package/lib/payment/worldline-saferpay/worldline-saferpay-client/models/TransactionCancel.js.map +1 -0
  190. package/lib/pricing/delivery-swiss-tax.d.ts +15 -0
  191. package/lib/pricing/delivery-swiss-tax.js +98 -0
  192. package/lib/pricing/delivery-swiss-tax.js.map +1 -0
  193. package/lib/pricing/discount-100-off.d.ts +1 -0
  194. package/lib/pricing/discount-100-off.js +34 -0
  195. package/lib/pricing/discount-100-off.js.map +1 -0
  196. package/lib/pricing/discount-half-price-manual.d.ts +1 -0
  197. package/lib/pricing/discount-half-price-manual.js +34 -0
  198. package/lib/pricing/discount-half-price-manual.js.map +1 -0
  199. package/lib/pricing/discount-half-price.d.ts +1 -0
  200. package/lib/pricing/discount-half-price.js +37 -0
  201. package/lib/pricing/discount-half-price.js.map +1 -0
  202. package/lib/pricing/free-delivery.d.ts +2 -0
  203. package/lib/pricing/free-delivery.js +26 -0
  204. package/lib/pricing/free-delivery.js.map +1 -0
  205. package/lib/pricing/free-payment.d.ts +2 -0
  206. package/lib/pricing/free-payment.js +26 -0
  207. package/lib/pricing/free-payment.js.map +1 -0
  208. package/lib/pricing/order-delivery.d.ts +1 -0
  209. package/lib/pricing/order-delivery.js +33 -0
  210. package/lib/pricing/order-delivery.js.map +1 -0
  211. package/lib/pricing/order-discount.d.ts +1 -0
  212. package/lib/pricing/order-discount.js +110 -0
  213. package/lib/pricing/order-discount.js.map +1 -0
  214. package/lib/pricing/order-items-discount.d.ts +1 -0
  215. package/lib/pricing/order-items-discount.js +88 -0
  216. package/lib/pricing/order-items-discount.js.map +1 -0
  217. package/lib/pricing/order-items.d.ts +1 -0
  218. package/lib/pricing/order-items.js +44 -0
  219. package/lib/pricing/order-items.js.map +1 -0
  220. package/lib/pricing/order-payment.d.ts +1 -0
  221. package/lib/pricing/order-payment.js +33 -0
  222. package/lib/pricing/order-payment.js.map +1 -0
  223. package/lib/pricing/product-catalog-price.d.ts +1 -0
  224. package/lib/pricing/product-catalog-price.js +37 -0
  225. package/lib/pricing/product-catalog-price.js.map +1 -0
  226. package/lib/pricing/product-discount.d.ts +1 -0
  227. package/lib/pricing/product-discount.js +55 -0
  228. package/lib/pricing/product-discount.js.map +1 -0
  229. package/lib/pricing/product-price-ECB-interbank-exchange.d.ts +1 -0
  230. package/lib/pricing/product-price-ECB-interbank-exchange.js +90 -0
  231. package/lib/pricing/product-price-ECB-interbank-exchange.js.map +1 -0
  232. package/lib/pricing/product-price-coinbase-exchange.d.ts +1 -0
  233. package/lib/pricing/product-price-coinbase-exchange.js +60 -0
  234. package/lib/pricing/product-price-coinbase-exchange.js.map +1 -0
  235. package/lib/pricing/product-price-cryptopay.d.ts +2 -0
  236. package/lib/pricing/product-price-cryptopay.js +23 -0
  237. package/lib/pricing/product-price-cryptopay.js.map +1 -0
  238. package/lib/pricing/product-price-rateconversion.d.ts +1 -0
  239. package/lib/pricing/product-price-rateconversion.js +51 -0
  240. package/lib/pricing/product-price-rateconversion.js.map +1 -0
  241. package/lib/pricing/product-price-round.d.ts +11 -0
  242. package/lib/pricing/product-price-round.js +54 -0
  243. package/lib/pricing/product-price-round.js.map +1 -0
  244. package/lib/pricing/product-swiss-tax.d.ts +13 -0
  245. package/lib/pricing/product-swiss-tax.js +102 -0
  246. package/lib/pricing/product-swiss-tax.js.map +1 -0
  247. package/lib/pricing/utils/cache.d.ts +9 -0
  248. package/lib/pricing/utils/cache.js +28 -0
  249. package/lib/pricing/utils/cache.js.map +1 -0
  250. package/lib/quotations/manual.d.ts +1 -0
  251. package/lib/quotations/manual.js +21 -0
  252. package/lib/quotations/manual.js.map +1 -0
  253. package/lib/warehousing/google-sheets.d.ts +1 -0
  254. package/lib/warehousing/google-sheets.js +153 -0
  255. package/lib/warehousing/google-sheets.js.map +1 -0
  256. package/lib/warehousing/store.d.ts +1 -0
  257. package/lib/warehousing/store.js +33 -0
  258. package/lib/warehousing/store.js.map +1 -0
  259. package/lib/worker/BulkImportWorker.d.ts +2 -0
  260. package/lib/worker/BulkImportWorker.js +91 -0
  261. package/lib/worker/BulkImportWorker.js.map +1 -0
  262. package/lib/worker/GenerateOrderWorker.d.ts +1 -0
  263. package/lib/worker/GenerateOrderWorker.js +110 -0
  264. package/lib/worker/GenerateOrderWorker.js.map +1 -0
  265. package/lib/worker/MessageWorker.d.ts +10 -0
  266. package/lib/worker/MessageWorker.js +45 -0
  267. package/lib/worker/MessageWorker.js.map +1 -0
  268. package/lib/worker/ZombieKillerWorker.d.ts +7 -0
  269. package/lib/worker/ZombieKillerWorker.js +88 -0
  270. package/lib/worker/ZombieKillerWorker.js.map +1 -0
  271. package/lib/worker/email.d.ts +1 -0
  272. package/lib/worker/email.js +97 -0
  273. package/lib/worker/email.js.map +1 -0
  274. package/lib/worker/external.d.ts +2 -0
  275. package/lib/worker/external.js +13 -0
  276. package/lib/worker/external.js.map +1 -0
  277. package/lib/worker/heartbeat.d.ts +1 -0
  278. package/lib/worker/heartbeat.js +32 -0
  279. package/lib/worker/heartbeat.js.map +1 -0
  280. package/lib/worker/http-request.d.ts +8 -0
  281. package/lib/worker/http-request.js +61 -0
  282. package/lib/worker/http-request.js.map +1 -0
  283. package/lib/worker/sms.d.ts +1 -0
  284. package/lib/worker/sms.js +69 -0
  285. package/lib/worker/sms.js.map +1 -0
  286. package/package.json +3 -1
@@ -0,0 +1,45 @@
1
+ import { MessagingDirector } from '@unchainedshop/core-messaging';
2
+ import { WorkerAdapter, WorkerDirector } from '@unchainedshop/core-worker';
3
+ import { createLogger } from '@unchainedshop/logger';
4
+ export const messagingLogger = createLogger('unchained:core-messaging');
5
+ export const MessageWorker = {
6
+ ...WorkerAdapter,
7
+ key: 'shop.unchained.worker-plugin.message',
8
+ label: 'Send Message by combining payload with a template and start concrete jobs',
9
+ version: '1.0',
10
+ type: 'MESSAGE',
11
+ doWork: async ({ template, ...payload }, requestContext, workId) => {
12
+ try {
13
+ const templateResolver = MessagingDirector.getTemplate(template);
14
+ const workConfigurations = await templateResolver({
15
+ template,
16
+ ...payload,
17
+ }, requestContext);
18
+ if (workConfigurations.length > 0) {
19
+ const forked = await Promise.all(workConfigurations.map(async (workConfiguration) => {
20
+ const work = await requestContext.modules.worker.addWork({
21
+ ...workConfiguration,
22
+ originalWorkId: workId,
23
+ }, requestContext.userId);
24
+ delete work.input;
25
+ return work;
26
+ }));
27
+ return { success: true, result: { forked } };
28
+ }
29
+ return { success: true, result: { info: 'Skipped Message' } };
30
+ }
31
+ catch (err) {
32
+ messagingLogger.warn(err.stack);
33
+ return {
34
+ success: false,
35
+ error: {
36
+ name: err.name,
37
+ message: err.message,
38
+ stack: err.stack,
39
+ },
40
+ };
41
+ }
42
+ },
43
+ };
44
+ WorkerDirector.registerAdapter(MessageWorker);
45
+ //# sourceMappingURL=MessageWorker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageWorker.js","sourceRoot":"","sources":["../../src/worker/MessageWorker.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,CAAC,MAAM,eAAe,GAAG,YAAY,CAAC,0BAA0B,CAAC,CAAC;AAExE,MAAM,CAAC,MAAM,aAAa,GAGtB;IACF,GAAG,aAAa;IAEhB,GAAG,EAAE,sCAAsC;IAC3C,KAAK,EAAE,2EAA2E;IAClF,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,SAAS;IAEf,MAAM,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE;QACjE,IAAI;YACF,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAEjE,MAAM,kBAAkB,GAAG,MAAM,gBAAgB,CAC/C;gBACE,QAAQ;gBACR,GAAG,OAAO;aACX,EACD,cAAc,CACf,CAAC;YAEF,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;gBACjC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,iBAAsB,EAAE,EAAE;oBACtD,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CACtD;wBACE,GAAG,iBAAiB;wBACpB,cAAc,EAAE,MAAM;qBACvB,EACD,cAAc,CAAC,MAAM,CACtB,CAAC;oBACF,OAAO,IAAI,CAAC,KAAK,CAAC;oBAClB,OAAO,IAAI,CAAC;gBACd,CAAC,CAAC,CACH,CAAC;gBACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC;aAC9C;YACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,CAAC;SAC/D;QAAC,OAAO,GAAG,EAAE;YACZ,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAChC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,KAAK,EAAE,GAAG,CAAC,KAAK;iBACjB;aACF,CAAC;SACH;IACH,CAAC;CACF,CAAC;AAEF,cAAc,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { IWorkerAdapter } from '@unchainedshop/types/worker';
2
+ export declare const ZombieKillerWorker: IWorkerAdapter<never, {
3
+ deletedProductMediaCount: number;
4
+ deletedAssortmentMediaCount: number;
5
+ deletedFilesCount: number;
6
+ }>;
7
+ export default ZombieKillerWorker;
@@ -0,0 +1,88 @@
1
+ import { WorkerDirector } from '@unchainedshop/core-worker';
2
+ import { createLogger } from '@unchainedshop/logger';
3
+ import { BaseAdapter } from '@unchainedshop/utils';
4
+ const logger = createLogger('unchained:platform:zombie-killer');
5
+ const findId = { projection: { _id: 1 } };
6
+ const findFileId = { projection: { mediaId: 1 } };
7
+ const mapId = (a) => a._id;
8
+ export const ZombieKillerWorker = {
9
+ ...BaseAdapter,
10
+ key: 'shop.unchained.worker-plugin.zombie-killer',
11
+ label: 'Zombie Killer',
12
+ version: '1.0',
13
+ type: 'ZOMBIE_KILLER',
14
+ doWork: async (_, unchainedAPI) => {
15
+ const { modules, services } = unchainedAPI;
16
+ try {
17
+ const error = false;
18
+ // Remove unreferenced product media objects
19
+ const products = await modules.products.findProducts({}, findId);
20
+ const deletedProductMediaCount = await modules.products.media.deleteMediaFiles({
21
+ excludedProdcutIds: products.map(mapId),
22
+ });
23
+ // Remove unreferenced assortment media objects
24
+ const assortments = await modules.assortments.findAssortments({}, findId);
25
+ const deletedAssortmentMediaCount = await modules.assortments.media.deleteMediaFiles({
26
+ excludedAssortmentIds: assortments.map(mapId),
27
+ });
28
+ // Remove unreferenced files
29
+ const fileIdsToRemove = [];
30
+ const productMedia = await modules.products.media.findProductMedias({}, findFileId);
31
+ const assortmentMedia = await modules.assortments.media.findAssortmentMedias({}, findFileId);
32
+ const filesWithProductId = await modules.files.findFilesByMetaData({
33
+ meta: {
34
+ productId: { $exists: true },
35
+ },
36
+ });
37
+ const filesWithAssortmentId = await modules.files.findFilesByMetaData({
38
+ meta: {
39
+ assortmentId: { $exists: true },
40
+ },
41
+ });
42
+ filesWithProductId
43
+ .concat(filesWithAssortmentId)
44
+ .filter((file) => {
45
+ const fileInProductMedia = productMedia.some((media) => media.mediaId === file._id);
46
+ const fileInAssortmentMedia = assortmentMedia.some((media) => media.mediaId === file._id);
47
+ return !fileInProductMedia && !fileInAssortmentMedia;
48
+ })
49
+ .forEach((m) => fileIdsToRemove.push(m._id));
50
+ const deletedFilesCount = fileIdsToRemove.length > 0
51
+ ? await services.files.removeFiles({
52
+ fileIds: fileIdsToRemove,
53
+ }, unchainedAPI)
54
+ : 0;
55
+ // Return delete count
56
+ const result = {
57
+ deletedProductMediaCount,
58
+ deletedAssortmentMediaCount,
59
+ deletedFilesCount,
60
+ };
61
+ if (error) {
62
+ return {
63
+ success: false,
64
+ result,
65
+ error,
66
+ };
67
+ }
68
+ return {
69
+ success: true,
70
+ result,
71
+ };
72
+ }
73
+ catch (err) {
74
+ logger.error(err.message, err);
75
+ return {
76
+ success: false,
77
+ error: {
78
+ name: err.name,
79
+ message: err.message,
80
+ stack: err.stack,
81
+ },
82
+ };
83
+ }
84
+ },
85
+ };
86
+ export default ZombieKillerWorker;
87
+ WorkerDirector.registerAdapter(ZombieKillerWorker);
88
+ //# sourceMappingURL=ZombieKillerWorker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ZombieKillerWorker.js","sourceRoot":"","sources":["../../src/worker/ZombieKillerWorker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,97 @@
1
+ import { WorkerDirector, WorkerAdapter } from '@unchainedshop/core-worker';
2
+ import { createLogger } from '@unchainedshop/logger';
3
+ import fs from 'fs';
4
+ import path from 'path';
5
+ import os from 'os';
6
+ import open from 'open';
7
+ import nodemailer from 'nodemailer';
8
+ const logger = createLogger('unchained:plugins:worker:email');
9
+ const checkEmailInterceptionEnabled = () => {
10
+ return process.env.NODE_ENV !== 'production' && !process.env.UNCHAINED_DISABLE_EMAIL_INTERCEPTION;
11
+ };
12
+ function writeFile(filename, data, done) {
13
+ fs.mkdtemp(path.join(os.tmpdir(), 'email-'), (err1, folder) => {
14
+ if (err1)
15
+ return done(err1);
16
+ const temporaryFolderPath = `${folder}/${filename}`;
17
+ return fs.writeFile(temporaryFolderPath, data, (err2) => {
18
+ if (err2)
19
+ return done(err2);
20
+ return done(null, temporaryFolderPath);
21
+ });
22
+ });
23
+ }
24
+ const openInBrowser = (options) => {
25
+ const filename = `${Date.now()}.html`;
26
+ const content = `
27
+ <b>From:&nbsp</b>${options.from}<br/>
28
+ <b>To:&nbsp;</b>${options.to}<br/>
29
+ <b>Cc:&nbsp;</b>${options.cc}<br/>
30
+ <b>Bcc:&nbsp;</b>${options.bcc}<br/>
31
+ <b>Reply-To:&nbsp;</b>${options.replyTo}<br/>
32
+ <br/>
33
+ <b>subject:&nbsp;</b>${options.subject}<br/>
34
+ <b>attachments:&nbsp;</b>${(options.attachments || [])
35
+ .map(({ filename: attachmentFilename, path: attachmentPath }) => {
36
+ const absoluteFilePath = path.join(process.cwd(), attachmentPath);
37
+ return `<a href="${absoluteFilePath}">${attachmentFilename}</a>`;
38
+ })
39
+ .join(',&nbsp;')}<br/>
40
+ <hr/>
41
+ ${(options.html || options.text).replace(/(\r\n|\n|\r)/gm, '<br/>')}
42
+ `;
43
+ writeFile(filename, content, (err, filePath) => {
44
+ if (err) {
45
+ logger.error(err);
46
+ return;
47
+ }
48
+ logger.verbose('unchained:platform -> Mailman detected an outgoing email');
49
+ open(filePath);
50
+ });
51
+ };
52
+ const EmailWorkerPlugin = {
53
+ ...WorkerAdapter,
54
+ key: 'shop.unchained.worker-plugin.email',
55
+ label: 'Send a Mail through Meteor Mailer',
56
+ version: '1.0',
57
+ type: 'EMAIL',
58
+ doWork: async ({ from, to, subject, ...rest }) => {
59
+ logger.debug(`${EmailWorkerPlugin.key} -> doWork: ${from} -> ${to} (${subject})`);
60
+ if (!to) {
61
+ return {
62
+ success: false,
63
+ error: {
64
+ name: 'RECIPIENT_REQUIRED',
65
+ message: 'EMAIL requires a to',
66
+ },
67
+ };
68
+ }
69
+ try {
70
+ const sendMailOptions = {
71
+ from,
72
+ to,
73
+ subject,
74
+ ...rest,
75
+ };
76
+ if (checkEmailInterceptionEnabled()) {
77
+ openInBrowser(sendMailOptions);
78
+ return { success: true, result: { intercepted: true } };
79
+ }
80
+ const transporter = nodemailer.createTransport(process.env.MAIL_URL);
81
+ const result = await transporter.sendMail(sendMailOptions);
82
+ return { success: true, result };
83
+ }
84
+ catch (err) {
85
+ return {
86
+ success: false,
87
+ error: {
88
+ name: err.name,
89
+ message: err.message,
90
+ stack: err.stack,
91
+ },
92
+ };
93
+ }
94
+ },
95
+ };
96
+ WorkerDirector.registerAdapter(EmailWorkerPlugin);
97
+ //# sourceMappingURL=email.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email.js","sourceRoot":"","sources":["../../src/worker/email.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { IWorkerAdapter } from '@unchainedshop/types/worker';
2
+ export declare const ExternalWorkerPlugin: IWorkerAdapter<void, void>;
@@ -0,0 +1,13 @@
1
+ import { WorkerDirector, WorkerAdapter } from '@unchainedshop/core-worker';
2
+ export const ExternalWorkerPlugin = {
3
+ ...WorkerAdapter,
4
+ key: 'shop.unchained.worker-plugin.external',
5
+ label: 'External plugin as a placeholder for workers who interact with the system only via GraphQL',
6
+ version: '1.0',
7
+ type: 'EXTERNAL',
8
+ async doWork() {
9
+ throw new Error('Cannot do work for external workers');
10
+ },
11
+ };
12
+ WorkerDirector.registerAdapter(ExternalWorkerPlugin);
13
+ //# sourceMappingURL=external.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external.js","sourceRoot":"","sources":["../../src/worker/external.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3E,MAAM,CAAC,MAAM,oBAAoB,GAA+B;IAC9D,GAAG,aAAa;IAEhB,GAAG,EAAE,uCAAuC;IAC5C,KAAK,EAAE,4FAA4F;IACnG,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,UAAU;IAEhB,KAAK,CAAC,MAAM;QACV,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;CACF,CAAC;AAEF,cAAc,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,32 @@
1
+ import { WorkerDirector, WorkerAdapter } from '@unchainedshop/core-worker';
2
+ const wait = async (time) => {
3
+ return new Promise((resolve) => {
4
+ setTimeout(() => {
5
+ resolve(true);
6
+ }, time);
7
+ });
8
+ };
9
+ const Heartbeat = {
10
+ ...WorkerAdapter,
11
+ key: 'shop.unchained.worker-plugin.heartbeat',
12
+ label: 'Heartbeat plugin to check if workers are working',
13
+ version: '1.0',
14
+ type: 'HEARTBEAT',
15
+ doWork: async (input) => {
16
+ if (input?.wait) {
17
+ await wait(input.wait);
18
+ }
19
+ if (input?.fails) {
20
+ return {
21
+ success: false,
22
+ result: input,
23
+ };
24
+ }
25
+ return {
26
+ success: true,
27
+ result: input,
28
+ };
29
+ },
30
+ };
31
+ WorkerDirector.registerAdapter(Heartbeat);
32
+ //# sourceMappingURL=heartbeat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../../src/worker/heartbeat.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3E,MAAM,IAAI,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;IAClC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,UAAU,CAAC,GAAG,EAAE;YACd,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AASF,MAAM,SAAS,GAAgC;IAC7C,GAAG,aAAa;IAEhB,GAAG,EAAE,wCAAwC;IAC7C,KAAK,EAAE,kDAAkD;IACzD,OAAO,EAAE,KAAK;IAEd,IAAI,EAAE,WAAW;IAEjB,MAAM,EAAE,KAAK,EAAE,KAAU,EAAiD,EAAE;QAC1E,IAAI,KAAK,EAAE,IAAI,EAAE;YACf,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SACxB;QACD,IAAI,KAAK,EAAE,KAAK,EAAE;YAChB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,KAAK;aACd,CAAC;SACH;QACD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,KAAK;SACd,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,cAAc,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { IWorkerAdapter } from '@unchainedshop/types/worker';
2
+ declare const HttpRequestWorkerPlugin: IWorkerAdapter<{
3
+ url?: string;
4
+ data?: any;
5
+ headers?: any;
6
+ method: 'POST' | 'GET';
7
+ }, any>;
8
+ export default HttpRequestWorkerPlugin;
@@ -0,0 +1,61 @@
1
+ import fetch from 'isomorphic-unfetch';
2
+ import { WorkerDirector, WorkerAdapter } from '@unchainedshop/core-worker';
3
+ import { log, LogLevel } from '@unchainedshop/logger';
4
+ const postFetch = async (url, { data, headers }) => {
5
+ return fetch(url, {
6
+ method: 'POST',
7
+ body: JSON.stringify(data),
8
+ headers: { 'Content-Type': 'application/json', ...headers },
9
+ });
10
+ };
11
+ const nonPostFetch = async (url, { headers, method = 'GET' }) => {
12
+ return fetch(url, {
13
+ method,
14
+ headers,
15
+ });
16
+ };
17
+ const HttpRequestWorkerPlugin = {
18
+ ...WorkerAdapter,
19
+ key: 'shop.unchained.worker-plugin.http-request',
20
+ label: 'Request a resource via http request. 200 = success',
21
+ version: '1.0',
22
+ type: 'HTTP_REQUEST',
23
+ async doWork({ url, data = {}, headers, method = 'POST' } = { method: 'POST' }) {
24
+ log(`${this.key} -> doWork: ${method} ${url} ${data}`, {
25
+ level: LogLevel.Debug,
26
+ });
27
+ if (!url) {
28
+ return {
29
+ success: false,
30
+ error: {
31
+ name: 'URL_REQUIRED',
32
+ message: 'HTTP_REQUEST requires an url',
33
+ },
34
+ };
35
+ }
36
+ try {
37
+ const normalizedFetch = method.toUpperCase() === 'POST' ? postFetch : nonPostFetch;
38
+ const res = await normalizedFetch(url, { data, headers, method });
39
+ const contentType = res.headers.get('content-type');
40
+ const isJson = contentType && contentType.includes('application/json');
41
+ const result = isJson ? await res.json() : { text: await res.text() };
42
+ if (res.status === 200 && res.ok) {
43
+ return { success: true, result };
44
+ }
45
+ return { success: false, result };
46
+ }
47
+ catch (err) {
48
+ return {
49
+ success: false,
50
+ error: {
51
+ name: err.name,
52
+ message: err.message,
53
+ stack: err.stack,
54
+ },
55
+ };
56
+ }
57
+ },
58
+ };
59
+ WorkerDirector.registerAdapter(HttpRequestWorkerPlugin);
60
+ export default HttpRequestWorkerPlugin;
61
+ //# sourceMappingURL=http-request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-request.js","sourceRoot":"","sources":["../../src/worker/http-request.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,oBAAoB,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,MAAM,SAAS,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;IACjD,OAAO,KAAK,CAAC,GAAG,EAAE;QAChB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QAC1B,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,OAAO,EAAE;KAC5D,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,EAAE,EAAE,EAAE;IAC9D,OAAO,KAAK,CAAC,GAAG,EAAE;QAChB,MAAM;QACN,OAAO;KACR,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,uBAAuB,GAGzB;IACF,GAAG,aAAa;IAEhB,GAAG,EAAE,2CAA2C;IAChD,KAAK,EAAE,oDAAoD;IAC3D,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,cAAc;IAEpB,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,IAAI,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE;QAC5E,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,eAAe,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE;YACrD,KAAK,EAAE,QAAQ,CAAC,KAAK;SACtB,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,EAAE;YACR,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,cAAc;oBACpB,OAAO,EAAE,8BAA8B;iBACxC;aACF,CAAC;SACH;QAED,IAAI;YACF,MAAM,eAAe,GAAG,MAAM,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC;YACnF,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAElE,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,WAAW,IAAI,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;YAEvE,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;YAEtE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,EAAE,EAAE;gBAChC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;aAClC;YACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;SACnC;QAAC,OAAO,GAAG,EAAE;YACZ,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,KAAK,EAAE,GAAG,CAAC,KAAK;iBACjB;aACF,CAAC;SACH;IACH,CAAC;CACF,CAAC;AAEF,cAAc,CAAC,eAAe,CAAC,uBAAuB,CAAC,CAAC;AAExD,eAAe,uBAAuB,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,69 @@
1
+ import { WorkerDirector, WorkerAdapter } from '@unchainedshop/core-worker';
2
+ import { createLogger } from '@unchainedshop/logger';
3
+ import Twilio from 'twilio';
4
+ const { TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN, TWILIO_SMS_FROM } = process.env;
5
+ const logger = createLogger('unchained:plugins:worker:sms');
6
+ const SmsWorkerPlugin = {
7
+ ...WorkerAdapter,
8
+ key: 'shop.unchained.worker-plugin.sms',
9
+ label: 'Send a SMS through Twilio',
10
+ version: '1.0',
11
+ type: 'SMS',
12
+ doWork: async ({ from, to, text }) => {
13
+ logger.debug(`${SmsWorkerPlugin.key} -> doWork: ${from} -> ${to}`);
14
+ if (!TWILIO_SMS_FROM && !from) {
15
+ return {
16
+ success: false,
17
+ error: {
18
+ name: 'SENDER_REQUIRED',
19
+ message: 'SMS requires a from, TWILIO_SMS_FROM not set',
20
+ },
21
+ };
22
+ }
23
+ if (!to) {
24
+ return {
25
+ success: false,
26
+ error: {
27
+ name: 'RECIPIENT_REQUIRED',
28
+ message: 'SMS requires a to',
29
+ },
30
+ };
31
+ }
32
+ try {
33
+ const client = Twilio(TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN);
34
+ const { sid, errorMessage } = await client.messages.create({
35
+ body: text,
36
+ from: from || TWILIO_SMS_FROM,
37
+ to,
38
+ });
39
+ if (errorMessage) {
40
+ return {
41
+ success: false,
42
+ error: {
43
+ name: 'TWILIO_ERROR',
44
+ message: errorMessage.toString(),
45
+ },
46
+ };
47
+ }
48
+ return {
49
+ success: true,
50
+ result: {
51
+ sid,
52
+ },
53
+ error: null,
54
+ };
55
+ }
56
+ catch (err) {
57
+ return {
58
+ success: false,
59
+ error: {
60
+ name: err.name,
61
+ message: err.message,
62
+ stack: err.stack,
63
+ },
64
+ };
65
+ }
66
+ },
67
+ };
68
+ WorkerDirector.registerAdapter(SmsWorkerPlugin);
69
+ //# sourceMappingURL=sms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sms.js","sourceRoot":"","sources":["../../src/worker/sms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;AAE/E,MAAM,MAAM,GAAG,YAAY,CAAC,8BAA8B,CAAC,CAAC;AAE5D,MAAM,eAAe,GAOjB;IACF,GAAG,aAAa;IAEhB,GAAG,EAAE,kCAAkC;IACvC,KAAK,EAAE,2BAA2B;IAClC,OAAO,EAAE,KAAK;IAEd,IAAI,EAAE,KAAK;IAEX,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACnC,MAAM,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,GAAG,eAAe,IAAI,OAAO,EAAE,EAAE,CAAC,CAAC;QAEnE,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,EAAE;YAC7B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,iBAAiB;oBACvB,OAAO,EAAE,8CAA8C;iBACxD;aACF,CAAC;SACH;QAED,IAAI,CAAC,EAAE,EAAE;YACP,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,oBAAoB;oBAC1B,OAAO,EAAE,mBAAmB;iBAC7B;aACF,CAAC;SACH;QAED,IAAI;YACF,MAAM,MAAM,GAAG,MAAM,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;YAC7D,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACzD,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,IAAI,IAAI,eAAe;gBAC7B,EAAE;aACH,CAAC,CAAC;YACH,IAAI,YAAY,EAAE;gBAChB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE;wBACL,IAAI,EAAE,cAAc;wBACpB,OAAO,EAAE,YAAY,CAAC,QAAQ,EAAE;qBACjC;iBACF,CAAC;aACH;YACD,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE;oBACN,GAAG;iBACJ;gBACD,KAAK,EAAE,IAAI;aACZ,CAAC;SACH;QAAC,OAAO,GAAG,EAAE;YACZ,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,KAAK,EAAE,GAAG,CAAC,KAAK;iBACjB;aACF,CAAC;SACH;IACH,CAAC;CACF,CAAC;AAEF,cAAc,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,9 @@
1
1
  {
2
2
  "name": "@unchainedshop/plugins",
3
- "version": "1.2.5",
3
+ "version": "1.2.6",
4
+ "main": "lib/plugins-index.js",
4
5
  "exports": {
6
+ ".": "./lib/plugins-index.js",
5
7
  "./*": "./lib/*"
6
8
  },
7
9
  "type": "module",