@unchainedshop/plugins 1.1.5 → 1.2.0

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 (89) hide show
  1. package/jest.config.js +5 -0
  2. package/lib/files/gridfs/gridfs-adapter.js +1 -1
  3. package/lib/files/gridfs/gridfs-adapter.js.map +1 -1
  4. package/lib/files/gridfs/gridfs-webhook.d.ts +2 -1
  5. package/lib/files/gridfs/gridfs-webhook.js +5 -4
  6. package/lib/files/gridfs/gridfs-webhook.js.map +1 -1
  7. package/lib/files/gridfs/index.d.ts +3 -3
  8. package/lib/files/gridfs/index.js.map +1 -1
  9. package/lib/files/gridfs/promisePipe.d.ts +1 -1
  10. package/lib/files/gridfs/promisePipe.js.map +1 -1
  11. package/lib/files/gridfs/sign.d.ts +1 -1
  12. package/lib/files/gridfs/sign.js.map +1 -1
  13. package/lib/files/minio/minio-adapter.js +1 -1
  14. package/lib/files/minio/minio-adapter.js.map +1 -1
  15. package/lib/files/minio/minio-webhook.d.ts +2 -1
  16. package/lib/files/minio/minio-webhook.js +30 -28
  17. package/lib/files/minio/minio-webhook.js.map +1 -1
  18. package/lib/payment/apple-iap/adapter.d.ts +2 -1
  19. package/lib/payment/apple-iap/adapter.js +94 -92
  20. package/lib/payment/apple-iap/adapter.js.map +1 -1
  21. package/lib/payment/apple-iap/index.d.ts +2 -1
  22. package/lib/payment/apple-iap/index.js +2 -1
  23. package/lib/payment/apple-iap/index.js.map +1 -1
  24. package/lib/payment/bity/adapter.d.ts +2 -1
  25. package/lib/payment/bity/adapter.js +50 -48
  26. package/lib/payment/bity/adapter.js.map +1 -1
  27. package/lib/payment/bity/index.d.ts +2 -1
  28. package/lib/payment/bity/index.js +2 -1
  29. package/lib/payment/bity/index.js.map +1 -1
  30. package/lib/payment/braintree.js +2 -2
  31. package/lib/payment/braintree.js.map +1 -1
  32. package/lib/payment/cryptopay.d.ts +2 -1
  33. package/lib/payment/cryptopay.js +60 -58
  34. package/lib/payment/cryptopay.js.map +1 -1
  35. package/lib/payment/datatrans-v2/index.d.ts +2 -1
  36. package/lib/payment/datatrans-v2/index.js +2 -1
  37. package/lib/payment/datatrans-v2/index.js.map +1 -1
  38. package/lib/payment/datatrans-v2/middleware.d.ts +2 -1
  39. package/lib/payment/datatrans-v2/middleware.js +99 -97
  40. package/lib/payment/datatrans-v2/middleware.js.map +1 -1
  41. package/lib/payment/paypal-checkout.js +1 -1
  42. package/lib/payment/paypal-checkout.js.map +1 -1
  43. package/lib/payment/postfinance-checkout/index.d.ts +2 -1
  44. package/lib/payment/postfinance-checkout/index.js +2 -1
  45. package/lib/payment/postfinance-checkout/index.js.map +1 -1
  46. package/lib/payment/postfinance-checkout/middleware.d.ts +2 -1
  47. package/lib/payment/postfinance-checkout/middleware.js +36 -34
  48. package/lib/payment/postfinance-checkout/middleware.js.map +1 -1
  49. package/lib/payment/stripe.d.ts +2 -1
  50. package/lib/payment/stripe.js +63 -60
  51. package/lib/payment/stripe.js.map +1 -1
  52. package/lib/payment/worldline-saferpay/worldline-saferpay-client/index.d.ts +3 -3
  53. package/lib/pricing/product-price-ECB-interbank-exchange.js +1 -1
  54. package/lib/pricing/product-price-ECB-interbank-exchange.js.map +1 -1
  55. package/lib/pricing/product-price-cryptopay.d.ts +2 -1
  56. package/lib/pricing/product-price-cryptopay.js +20 -18
  57. package/lib/pricing/product-price-cryptopay.js.map +1 -1
  58. package/lib/worker/ZombieKillerWorker.js.map +1 -1
  59. package/lib/worker/email.js +1 -0
  60. package/lib/worker/email.js.map +1 -1
  61. package/package.json +30 -24
  62. package/src/files/gridfs/gridfs-adapter.ts +1 -1
  63. package/src/files/gridfs/gridfs-webhook.ts +62 -0
  64. package/src/files/gridfs/{index.js → index.ts} +0 -0
  65. package/src/files/gridfs/{promisePipe.js → promisePipe.ts} +0 -0
  66. package/src/files/gridfs/{sign.js → sign.ts} +0 -0
  67. package/src/files/minio/minio-adapter.ts +1 -1
  68. package/src/files/minio/minio-webhook.js +33 -30
  69. package/src/payment/apple-iap/adapter.ts +113 -110
  70. package/src/payment/apple-iap/index.ts +2 -1
  71. package/src/payment/bity/adapter.ts +53 -51
  72. package/src/payment/bity/index.ts +2 -1
  73. package/src/payment/braintree.ts +2 -2
  74. package/src/payment/cryptopay.ts +69 -67
  75. package/src/payment/datatrans-v2/index.ts +3 -1
  76. package/src/payment/datatrans-v2/middleware.ts +129 -123
  77. package/src/payment/paypal-checkout.ts +1 -1
  78. package/src/payment/postfinance-checkout/index.ts +3 -1
  79. package/src/payment/postfinance-checkout/middleware.ts +42 -40
  80. package/src/payment/stripe.ts +82 -74
  81. package/src/payment/worldline-saferpay/worldline-saferpay-client/index.ts +3 -3
  82. package/src/pricing/product-discount.ts +1 -1
  83. package/src/pricing/product-price-ECB-interbank-exchange.ts +1 -1
  84. package/src/pricing/product-price-cryptopay.ts +20 -18
  85. package/src/worker/ZombieKillerWorker.ts +5 -5
  86. package/src/worker/email.ts +1 -0
  87. package/tsconfig.json +26 -5
  88. package/src/files/gridfs/gridfs-webhook.js +0 -60
  89. package/tsconfig.build.json +0 -26
@@ -1,5 +1,6 @@
1
1
  import fetch from 'isomorphic-unfetch';
2
2
  import { ProductPricingDirector, ProductPricingAdapter } from '@unchainedshop/core-products';
3
+ import xmlJs from 'xml-js';
3
4
  import Cache from './utils/cache';
4
5
  const CACHE_PERIOD = 60 * 60 * 24; // 1 day
5
6
  const SUPPORTED_CURRENCIES = [
@@ -37,7 +38,6 @@ const SUPPORTED_CURRENCIES = [
37
38
  'ZAR',
38
39
  ];
39
40
  const cache = new Cache(CACHE_PERIOD);
40
- const xmlJs = require('xml-js'); // eslint-disable-line
41
41
  const getEURexchangeRateForCurrency = async (currency) => {
42
42
  const response = cache.get(currency, () => fetch(`https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml`, {
43
43
  method: 'GET',
@@ -1 +1 @@
1
- {"version":3,"file":"product-price-ECB-interbank-exchange.js","sourceRoot":"","sources":["../../src/pricing/product-price-ECB-interbank-exchange.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"product-price-ECB-interbank-exchange.js","sourceRoot":"","sources":["../../src/pricing/product-price-ECB-interbank-exchange.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,oBAAoB,CAAC;AACvC,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC7F,OAAO,KAAK,MAAM,QAAQ,CAAC;AAE3B,OAAO,KAAK,MAAM,eAAe,CAAC;AAElC,MAAM,YAAY,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,QAAQ;AAE3C,MAAM,oBAAoB,GAAG;IAC3B,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;CACN,CAAC;AAEF,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AAEtC,MAAM,6BAA6B,GAAG,KAAK,EAAE,QAAQ,EAAE,EAAE;IACvD,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,CACxC,KAAK,CAAC,+DAA+D,EAAE;QACrE,MAAM,EAAE,KAAK;KACd,CAAC;SACC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;SACzB,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;SAChD,IAAI,CACH,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ;SACzB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC;QAClD,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,CAC/F,CACJ,CAAC;IACF,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,gCAAgC,GAA2B;IAC/D,GAAG,qBAAqB;IAExB,GAAG,EAAE,qDAAqD;IAC1D,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,6CAA6C;IACpD,UAAU,EAAE,CAAC;IAEb,cAAc,EAAE,CAAC,OAAO,EAAE,EAAE;QAC1B,OAAO,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;QAClB,MAAM,cAAc,GAAG,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE7D,OAAO;YACL,GAAG,cAAc;YAEjB,SAAS,EAAE,KAAK,IAAI,EAAE;gBACpB,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;gBACzE,MAAM,EAAE,WAAW,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC,gBAAgB,CAAC;gBACrD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE;oBAC5D,OAAO;oBACP,QAAQ,EAAE,KAAK;oBACf,QAAQ;iBACT,CAAC,CAAC;gBACH,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM;oBAAE,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC;gBAE7F,MAAM,QAAQ,GAAG,MAAM,6BAA6B,CAAC,QAAQ,CAAC,CAAC;gBAC/D,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC;gBACxD,cAAc,CAAC,WAAW,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;gBACvE,cAAc,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC;oBACnC,MAAM,EAAE,eAAe,GAAG,QAAQ;oBAClC,SAAS,EAAE,QAAQ,CAAC,SAAS;oBAC7B,UAAU,EAAE,QAAQ,CAAC,UAAU;oBAC/B,IAAI,EAAE,EAAE,OAAO,EAAE,gCAAgC,CAAC,GAAG,EAAE;iBACxD,CAAC,CAAC;gBAEH,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC;YACpC,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,sBAAsB,CAAC,eAAe,CAAC,gCAAgC,CAAC,CAAC"}
@@ -1 +1,2 @@
1
- export {};
1
+ declare const _default: (app: any) => void;
2
+ export default _default;
@@ -1,21 +1,23 @@
1
1
  import bodyParser from 'body-parser';
2
2
  import { useMiddlewareWithCurrentContext } from '@unchainedshop/api';
3
- const { CRYPTOPAY_SECRET, CRYPTOPAY_PRICING_WEBHOOK_PATH = '/graphql/cryptopay-pricing' } = process.env;
4
- useMiddlewareWithCurrentContext(CRYPTOPAY_PRICING_WEBHOOK_PATH, bodyParser.json());
5
- useMiddlewareWithCurrentContext(CRYPTOPAY_PRICING_WEBHOOK_PATH, async (request, response) => {
6
- const resolvedContext = request.unchainedContext;
7
- const { baseCurrency, token, rate, timestamp, secret } = request.body;
8
- if (secret !== CRYPTOPAY_SECRET) {
9
- response.end(JSON.stringify({ success: false }));
10
- return;
11
- }
12
- const rateData = {
13
- baseCurrency,
14
- quoteCurrency: token,
15
- rate,
16
- timestamp,
17
- };
18
- const success = await resolvedContext.modules.products.prices.rates.updateRate(rateData);
19
- response.end(JSON.stringify({ success }));
20
- });
3
+ const { CRYPTOPAY_SECRET, CRYPTOPAY_PRICING_WEBHOOK_PATH = '/payment/cryptopay-pricing' } = process.env;
4
+ export default (app) => {
5
+ useMiddlewareWithCurrentContext(app, CRYPTOPAY_PRICING_WEBHOOK_PATH, bodyParser.json());
6
+ useMiddlewareWithCurrentContext(app, CRYPTOPAY_PRICING_WEBHOOK_PATH, async (request, response) => {
7
+ const resolvedContext = request.unchainedContext;
8
+ const { baseCurrency, token, rate, timestamp, secret } = request.body;
9
+ if (secret !== CRYPTOPAY_SECRET) {
10
+ response.end(JSON.stringify({ success: false }));
11
+ return;
12
+ }
13
+ const rateData = {
14
+ baseCurrency,
15
+ quoteCurrency: token,
16
+ rate,
17
+ timestamp,
18
+ };
19
+ const success = await resolvedContext.modules.products.prices.rates.updateRate(rateData);
20
+ response.end(JSON.stringify({ success }));
21
+ });
22
+ };
21
23
  //# sourceMappingURL=product-price-cryptopay.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"product-price-cryptopay.js","sourceRoot":"","sources":["../../src/pricing/product-price-cryptopay.ts"],"names":[],"mappings":"AAEA,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AAErE,MAAM,EAAE,gBAAgB,EAAE,8BAA8B,GAAG,4BAA4B,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;AAExG,+BAA+B,CAAC,8BAA8B,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;AAEnF,+BAA+B,CAAC,8BAA8B,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE;IAC1F,MAAM,eAAe,GAAG,OAAO,CAAC,gBAA2B,CAAC;IAC5D,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IACtE,IAAI,MAAM,KAAK,gBAAgB,EAAE;QAC/B,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACjD,OAAO;KACR;IACD,MAAM,QAAQ,GAAqB;QACjC,YAAY;QACZ,aAAa,EAAE,KAAK;QACpB,IAAI;QACJ,SAAS;KACV,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACzF,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"product-price-cryptopay.js","sourceRoot":"","sources":["../../src/pricing/product-price-cryptopay.ts"],"names":[],"mappings":"AAEA,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AAErE,MAAM,EAAE,gBAAgB,EAAE,8BAA8B,GAAG,4BAA4B,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;AAExG,eAAe,CAAC,GAAG,EAAE,EAAE;IACrB,+BAA+B,CAAC,GAAG,EAAE,8BAA8B,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IAExF,+BAA+B,CAAC,GAAG,EAAE,8BAA8B,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE;QAC/F,MAAM,eAAe,GAAG,OAAO,CAAC,gBAA2B,CAAC;QAC5D,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QACtE,IAAI,MAAM,KAAK,gBAAgB,EAAE;YAC/B,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YACjD,OAAO;SACR;QACD,MAAM,QAAQ,GAAqB;YACjC,YAAY;YACZ,aAAa,EAAE,KAAK;YACpB,IAAI;YACJ,SAAS;SACV,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACzF,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ZombieKillerWorker.js","sourceRoot":"","sources":["../../src/worker/ZombieKillerWorker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ZombieKillerWorker.js","sourceRoot":"","sources":["../../src/worker/ZombieKillerWorker.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import fs from 'fs';
4
4
  import path from 'path';
5
5
  import os from 'os';
6
6
  import open from 'open';
7
+ import nodemailer from 'nodemailer';
7
8
  const logger = createLogger('unchained:plugins:worker:email');
8
9
  const checkEmailInterceptionEnabled = () => {
9
10
  return process.env.NODE_ENV !== 'production' && !process.env.UNCHAINED_DISABLE_EMAIL_INTERCEPTION;
@@ -1 +1 @@
1
- {"version":3,"file":"email.js","sourceRoot":"","sources":["../../src/worker/email.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"email.js","sourceRoot":"","sources":["../../src/worker/email.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,14 +1,16 @@
1
1
  {
2
2
  "name": "@unchainedshop/plugins",
3
- "version": "1.1.5",
4
- "main": "lib/index.js",
5
- "types": "lib/index.d.ts",
3
+ "version": "1.2.0",
4
+ "exports": {
5
+ "./*": "./lib/*"
6
+ },
6
7
  "type": "module",
7
8
  "scripts": {
9
+ "prepublishOnly": "npm install && npm run build || :",
8
10
  "clean": "rm -rf lib",
9
- "build": "npm run clean && tsc -p tsconfig.build.json",
10
- "watch": "tsc -p tsconfig.build.json --watch",
11
- "link:core": "npm link @unchainedshop/types"
11
+ "build": "npm run clean && tsc",
12
+ "watch": "tsc -w",
13
+ "test": "jest --watch"
12
14
  },
13
15
  "repository": {
14
16
  "type": "git",
@@ -26,36 +28,40 @@
26
28
  },
27
29
  "homepage": "https://github.com/unchainedshop/unchained#readme",
28
30
  "devDependencies": {
29
- "@unchainedshop/api": "^1.1.4",
31
+ "@types/node": "^16.11.44",
32
+ "@unchainedshop/api": "^1.1.9",
30
33
  "@unchainedshop/client-oauth2": "^4.3.3",
31
- "@unchainedshop/core-delivery": "^1.1.4",
32
- "@unchainedshop/core-enrollments": "^1.1.4",
33
- "@unchainedshop/core-filters": "^1.1.3",
34
- "@unchainedshop/core-messaging": "^1.1.4",
35
- "@unchainedshop/core-orders": "^1.1.4",
36
- "@unchainedshop/core-payment": "^1.1.5",
37
- "@unchainedshop/core-products": "^1.1.3",
38
- "@unchainedshop/core-quotations": "^1.1.4",
39
- "@unchainedshop/core-warehousing": "^1.1.4",
40
- "@unchainedshop/core-worker": "^1.1.4",
41
- "@unchainedshop/events": "^1.1.5",
42
- "@unchainedshop/file-upload": "^1.1.5",
43
- "@unchainedshop/logger": "1.1.3",
44
- "@unchainedshop/types": "^1.1.2",
45
- "@unchainedshop/utils": "^1.1.4",
46
- "JSONStream": "^1.3.5",
34
+ "@unchainedshop/core-delivery": "^1.1.9",
35
+ "@unchainedshop/core-enrollments": "^1.1.9",
36
+ "@unchainedshop/core-filters": "^1.1.9",
37
+ "@unchainedshop/core-messaging": "^1.1.9",
38
+ "@unchainedshop/core-orders": "^1.1.9",
39
+ "@unchainedshop/core-payment": "^1.1.9",
40
+ "@unchainedshop/core-products": "^1.1.9",
41
+ "@unchainedshop/core-quotations": "^1.1.9",
42
+ "@unchainedshop/core-warehousing": "^1.1.9",
43
+ "@unchainedshop/core-worker": "^1.1.9",
44
+ "@unchainedshop/events": "^1.1.9",
45
+ "@unchainedshop/file-upload": "^1.1.9",
46
+ "@unchainedshop/logger": "^1.1.9",
47
+ "@unchainedshop/types": "^1.1.9",
48
+ "@unchainedshop/utils": "^1.1.9",
47
49
  "bluebird": "^3.7.2",
48
50
  "body-parser": "^1.20.0",
49
51
  "event-iterator": "^2.0.0",
52
+ "jest": "^28.1.2",
53
+ "JSONStream": "^1.3.5",
50
54
  "minio": "^7.0.28",
51
55
  "moment": "^2.29.3",
52
56
  "mongodb": "^4.7.0",
53
- "node-sheets": "^1.2.0",
57
+ "node-sheets": "^1.1.9",
54
58
  "nodemailer": "^6.7.5",
55
59
  "open": "^8.4.0",
56
60
  "redis": "^4.1.0",
57
61
  "request": "^2.88.2",
62
+ "ts-jest": "^28.0.5",
58
63
  "typescript": "^4.7.4",
64
+ "xml-js": "^1.6.11",
59
65
  "xml2js": "0.4.23"
60
66
  }
61
67
  }
@@ -5,9 +5,9 @@ import http, { OutgoingHttpHeaders } from 'http';
5
5
  import mimeType from 'mime-types';
6
6
  import { URL } from 'url';
7
7
  import { Readable } from 'stream';
8
+ import buildHashedFilename from '@unchainedshop/file-upload/buildHashedFilename';
8
9
  import sign from './sign';
9
10
  import promisePipe from './promisePipe';
10
- import buildHashedFilename from '@unchainedshop/file-upload/lib/buildHashedFilename';
11
11
 
12
12
  const { UNCHAINED_PUT_URL_EXPIRY, ROOT_URL } = process.env;
13
13
 
@@ -0,0 +1,62 @@
1
+ import { useMiddlewareWithCurrentContext } from '@unchainedshop/api';
2
+ import { log, LogLevel } from '@unchainedshop/logger';
3
+ import buildHashedFilename from '@unchainedshop/file-upload/buildHashedFilename';
4
+ import sign from './sign';
5
+ import promisePipe from './promisePipe';
6
+
7
+ const { ROOT_URL } = process.env;
8
+
9
+ /*
10
+ curl -vvv -X PUT -T /Users/pozylon/Downloads/grafik.png http://localhost:4010/gridfs/user-avatars/hans.png?e=1653059591506&s=df8626a1c9b9006249d7f1928fd530579fed57216f1bdcb83c28a8322cdc90b1
11
+ */
12
+
13
+ export default (app) =>
14
+ useMiddlewareWithCurrentContext(app, '/gridfs', async (req, res) => {
15
+ try {
16
+ const { services, modules } = req.unchainedContext;
17
+ const url = new URL(req.url, ROOT_URL);
18
+ const [, directoryName, fileName] = url.pathname.split('/');
19
+
20
+ if (req.method === 'PUT') {
21
+ const { s: signature, e: expiryTimestamp } = req.query;
22
+ const expiryDate = new Date(parseInt(expiryTimestamp, 10));
23
+ const fileId = buildHashedFilename(directoryName, fileName, expiryDate);
24
+ if (sign(directoryName, fileId, expiryDate.getTime()) === signature) {
25
+ const file = await modules.files.findFile({ fileId });
26
+ if (file.expires === null) {
27
+ res.writeHead(503);
28
+ res.end('File already linked');
29
+ return;
30
+ }
31
+ const writeStream = await modules.gridfsFileUploads.createWriteStream(
32
+ directoryName,
33
+ fileId,
34
+ fileName,
35
+ );
36
+ res.writeHead(200);
37
+ const { length } = await promisePipe(req, writeStream);
38
+ await services.files.linkFile({ fileId, size: length }, req.unchainedContext);
39
+ res.end();
40
+ return;
41
+ }
42
+ res.writeHead(403);
43
+ res.end();
44
+ return;
45
+ }
46
+ if (req.method === 'GET') {
47
+ const fileId = fileName;
48
+ const readStream = await modules.gridfsFileUploads.createReadStream(directoryName, fileId);
49
+ res.writeHead(200);
50
+ await promisePipe(readStream, res);
51
+ res.end();
52
+ return;
53
+ }
54
+ res.writeHead(404);
55
+ res.end();
56
+ return;
57
+ } catch (e) {
58
+ log(e.message, { level: LogLevel.Error });
59
+ res.writeHead(503);
60
+ res.end(JSON.stringify(e));
61
+ }
62
+ });
File without changes
File without changes
@@ -8,7 +8,7 @@ import mimeType from 'mime-types';
8
8
  import Minio from 'minio';
9
9
  import { Readable } from 'stream';
10
10
  import { URL } from 'url';
11
- import buildHashedFilename from '@unchainedshop/file-upload/lib/buildHashedFilename';
11
+ import buildHashedFilename from '@unchainedshop/file-upload/buildHashedFilename';
12
12
 
13
13
  const {
14
14
  MINIO_ACCESS_KEY,
@@ -9,39 +9,42 @@ const isAuthorized = ({ authorization = '' }) => {
9
9
  return type === 'Bearer' && token === MINIO_WEBHOOK_AUTH_TOKEN;
10
10
  };
11
11
 
12
- useMiddlewareWithCurrentContext(
13
- '/minio/',
14
- bodyParser.json({
15
- strict: false,
16
- }),
17
- );
12
+ export default (app) => {
13
+ useMiddlewareWithCurrentContext(
14
+ app,
15
+ '/minio/',
16
+ bodyParser.json({
17
+ strict: false,
18
+ }),
19
+ );
18
20
 
19
- useMiddlewareWithCurrentContext('/minio/', async (req, res) => {
20
- try {
21
- if (req.method === 'POST' && req.body) {
22
- const { headers } = req;
23
- const { Records = [], EventName } = req.body;
24
- if (EventName === 's3:ObjectCreated:Put' && isAuthorized(headers)) {
25
- const [{ s3 }] = Records;
26
- const { object } = s3;
27
- const { size, contentType: type } = object;
28
- const [fileId] = object.key.split('.');
29
- const { services } = req.unchainedContext;
30
- await services.files.linkFile({ fileId, type, size }, req.unchainedContext);
31
- res.writeHead(200);
32
- res.end();
33
- return;
21
+ useMiddlewareWithCurrentContext(app, '/minio/', async (req, res) => {
22
+ try {
23
+ if (req.method === 'POST' && req.body) {
24
+ const { headers } = req;
25
+ const { Records = [], EventName } = req.body;
26
+ if (EventName === 's3:ObjectCreated:Put' && isAuthorized(headers)) {
27
+ const [{ s3 }] = Records;
28
+ const { object } = s3;
29
+ const { size, contentType: type } = object;
30
+ const [fileId] = object.key.split('.');
31
+ const { services } = req.unchainedContext;
32
+ await services.files.linkFile({ fileId, type, size }, req.unchainedContext);
33
+ res.writeHead(200);
34
+ res.end();
35
+ return;
36
+ }
34
37
  }
38
+ res.writeHead(404);
39
+ res.end();
40
+ return;
41
+ } catch (e) {
42
+ log(e.message, { level: LogLevel.Error });
43
+ res.writeHead(503);
44
+ res.end(JSON.stringify(e));
35
45
  }
36
- res.writeHead(404);
37
- res.end();
38
- return;
39
- } catch (e) {
40
- log(e.message, { level: LogLevel.Error });
41
- res.writeHead(503);
42
- res.end(JSON.stringify(e));
43
- }
44
- });
46
+ });
47
+ };
45
48
 
46
49
  /*
47
50
 
@@ -13,7 +13,7 @@ const logger = createLogger('unchained:core-payment:iap');
13
13
  const {
14
14
  APPLE_IAP_SHARED_SECRET,
15
15
  APPLE_IAP_ENVIRONMENT = 'sandbox',
16
- APPLE_IAP_WEBHOOK_PATH = '/graphql/apple-iap',
16
+ APPLE_IAP_WEBHOOK_PATH = '/payment/apple-iap',
17
17
  } = process.env;
18
18
 
19
19
  // https://developer.apple.com/documentation/storekit/in-app_purchase/validating_receipts_with_the_app_store
@@ -88,44 +88,89 @@ const fixPeriods = async (
88
88
  );
89
89
  };
90
90
 
91
- useMiddlewareWithCurrentContext(
92
- APPLE_IAP_WEBHOOK_PATH,
93
- bodyParser.json({
94
- strict: false,
95
- }),
96
- );
97
-
98
- useMiddlewareWithCurrentContext(APPLE_IAP_WEBHOOK_PATH, async (req, res) => {
99
- if (req.method === 'POST') {
100
- try {
101
- const resolvedContext = req.unchainedContext as Context;
102
- const { modules, services } = resolvedContext;
103
- const responseBody = req.body || {};
104
- if (responseBody.password !== APPLE_IAP_SHARED_SECRET) {
105
- throw new Error('shared secret not valid');
106
- }
91
+ export default (app) => {
92
+ useMiddlewareWithCurrentContext(
93
+ app,
94
+ APPLE_IAP_WEBHOOK_PATH,
95
+ bodyParser.json({
96
+ strict: false,
97
+ }),
98
+ );
107
99
 
108
- const transactions = responseBody?.unified_receipt?.latest_receipt_info; // eslint-disable-line
109
- const latestTransaction = transactions[0];
100
+ useMiddlewareWithCurrentContext(app, APPLE_IAP_WEBHOOK_PATH, async (req, res) => {
101
+ if (req.method === 'POST') {
102
+ try {
103
+ const resolvedContext = req.unchainedContext as Context;
104
+ const { modules, services } = resolvedContext;
105
+ const responseBody = req.body || {};
106
+ if (responseBody.password !== APPLE_IAP_SHARED_SECRET) {
107
+ throw new Error('shared secret not valid');
108
+ }
110
109
 
111
- if (responseBody.notification_type === AppleNotificationTypes.INITIAL_BUY) {
112
- // Find the cart to checkout
113
- const orderPayment = await modules.orders.payments.findOrderPaymentByContextData({
114
- context: {
115
- 'meta.transactionIdentifier': latestTransaction.transaction_id,
116
- },
117
- });
110
+ const transactions = responseBody?.unified_receipt?.latest_receipt_info; // eslint-disable-line
111
+ const latestTransaction = transactions[0];
118
112
 
119
- if (!orderPayment) throw new Error('Could not find any matching order payment');
120
- const order = await modules.orders.findOrder({
121
- orderId: orderPayment.orderId,
122
- });
113
+ if (responseBody.notification_type === AppleNotificationTypes.INITIAL_BUY) {
114
+ // Find the cart to checkout
115
+ const orderPayment = await modules.orders.payments.findOrderPaymentByContextData({
116
+ context: {
117
+ 'meta.transactionIdentifier': latestTransaction.transaction_id,
118
+ },
119
+ });
120
+
121
+ if (!orderPayment) throw new Error('Could not find any matching order payment');
122
+ const order = await modules.orders.findOrder({
123
+ orderId: orderPayment.orderId,
124
+ });
125
+
126
+ if (modules.orders.isCart(order)) {
127
+ // checkout if is cart, else just ignore because the cart is already checked out
128
+ // through submission of the receipt with GraphQL
129
+ const checkedOut = await modules.orders.checkout(
130
+ order._id,
131
+ {
132
+ paymentContext: {
133
+ receiptData: responseBody?.unified_receipt?.latest_receipt, // eslint-disable-line
134
+ },
135
+ },
136
+ resolvedContext,
137
+ );
138
+ const orderId = checkedOut._id;
139
+ const enrollment = await modules.enrollments.findEnrollment({
140
+ orderId,
141
+ });
142
+ await fixPeriods(
143
+ {
144
+ transactionId: latestTransaction.original_transaction_id,
145
+ transactions,
146
+ enrollmentId: enrollment._id,
147
+ orderId,
148
+ },
149
+ resolvedContext,
150
+ );
123
151
 
124
- if (modules.orders.isCart(order)) {
125
- // checkout if is cart, else just ignore because the cart is already checked out
126
- // through submission of the receipt with GraphQL
127
- const checkedOut = await modules.orders.checkout(
128
- order._id,
152
+ logger.info(`Apple IAP Webhook: Confirmed checkout for order ${checkedOut.orderNumber}`, {
153
+ orderId: checkedOut._id,
154
+ });
155
+ }
156
+ } else {
157
+ // Just store payment credentials, use the enrollments paymentProvider reference and
158
+ // let the job do the rest
159
+ const originalOrderPayment = await modules.orders.payments.findOrderPaymentByContextData({
160
+ context: {
161
+ 'meta.transactionIdentifier': latestTransaction.original_transaction_id,
162
+ },
163
+ });
164
+ if (!originalOrderPayment) throw new Error('Could not find any matching order payment');
165
+ const originalOrder = await modules.orders.findOrder({
166
+ orderId: originalOrderPayment.orderId,
167
+ });
168
+ const enrollment = await modules.enrollments.findEnrollment({
169
+ orderId: originalOrder._id,
170
+ });
171
+
172
+ await services.payment.registerPaymentCredentials(
173
+ enrollment.payment.paymentProviderId,
129
174
  {
130
175
  transactionContext: {
131
176
  receiptData: responseBody?.unified_receipt?.latest_receipt, // eslint-disable-line
@@ -133,97 +178,55 @@ useMiddlewareWithCurrentContext(APPLE_IAP_WEBHOOK_PATH, async (req, res) => {
133
178
  },
134
179
  resolvedContext,
135
180
  );
136
- const orderId = checkedOut._id;
137
- const enrollment = await modules.enrollments.findEnrollment({
138
- orderId,
139
- });
181
+
140
182
  await fixPeriods(
141
183
  {
142
184
  transactionId: latestTransaction.original_transaction_id,
143
185
  transactions,
144
186
  enrollmentId: enrollment._id,
145
- orderId,
187
+ orderId: originalOrder._id,
146
188
  },
147
189
  resolvedContext,
148
190
  );
149
191
 
150
- logger.info(`Apple IAP Webhook: Confirmed checkout for order ${checkedOut.orderNumber}`, {
151
- orderId: checkedOut._id,
152
- });
153
- }
154
- } else {
155
- // Just store payment credentials, use the enrollments paymentProvider reference and
156
- // let the job do the rest
157
- const originalOrderPayment = await modules.orders.payments.findOrderPaymentByContextData({
158
- context: {
159
- 'meta.transactionIdentifier': latestTransaction.original_transaction_id,
160
- },
161
- });
162
- if (!originalOrderPayment) throw new Error('Could not find any matching order payment');
163
- const originalOrder = await modules.orders.findOrder({
164
- orderId: originalOrderPayment.orderId,
165
- });
166
- const enrollment = await modules.enrollments.findEnrollment({
167
- orderId: originalOrder._id,
168
- });
169
-
170
- await services.payment.registerPaymentCredentials(
171
- enrollment.payment.paymentProviderId,
172
- {
173
- transactionContext: {
174
- receiptData: responseBody?.unified_receipt?.latest_receipt, // eslint-disable-line
175
- },
176
- },
177
- resolvedContext,
178
- );
179
-
180
- await fixPeriods(
181
- {
182
- transactionId: latestTransaction.original_transaction_id,
183
- transactions,
184
- enrollmentId: enrollment._id,
185
- orderId: originalOrder._id,
186
- },
187
- resolvedContext,
188
- );
189
-
190
- logger.info(
191
- `Apple IAP Webhook: Processed notification for ${latestTransaction.original_transaction_id} and type ${responseBody.notification_type}`,
192
- );
192
+ logger.info(
193
+ `Apple IAP Webhook: Processed notification for ${latestTransaction.original_transaction_id} and type ${responseBody.notification_type}`,
194
+ );
193
195
 
194
- if (responseBody.notification_type === AppleNotificationTypes.DID_RECOVER) {
195
- if (
196
- enrollment.status !== EnrollmentStatus.TERMINATED &&
197
- responseBody.auto_renew_status === 'false'
198
- ) {
199
- await modules.enrollments.terminateEnrollment(enrollment, {}, resolvedContext);
196
+ if (responseBody.notification_type === AppleNotificationTypes.DID_RECOVER) {
197
+ if (
198
+ enrollment.status !== EnrollmentStatus.TERMINATED &&
199
+ responseBody.auto_renew_status === 'false'
200
+ ) {
201
+ await modules.enrollments.terminateEnrollment(enrollment, {}, resolvedContext);
202
+ }
200
203
  }
201
- }
202
204
 
203
- if (responseBody.notification_type === AppleNotificationTypes.DID_CHANGE_RENEWAL_STATUS) {
204
- if (
205
- enrollment.status !== EnrollmentStatus.TERMINATED &&
206
- responseBody.auto_renew_status === 'false'
207
- ) {
208
- await modules.enrollments.terminateEnrollment(enrollment, {}, resolvedContext);
205
+ if (responseBody.notification_type === AppleNotificationTypes.DID_CHANGE_RENEWAL_STATUS) {
206
+ if (
207
+ enrollment.status !== EnrollmentStatus.TERMINATED &&
208
+ responseBody.auto_renew_status === 'false'
209
+ ) {
210
+ await modules.enrollments.terminateEnrollment(enrollment, {}, resolvedContext);
211
+ }
209
212
  }
213
+ logger.info(`Apple IAP Webhook: Updated enrollment from Apple`);
210
214
  }
211
- logger.info(`Apple IAP Webhook: Updated enrollment from Apple`);
212
- }
213
215
 
214
- res.writeHead(200);
215
- res.end();
216
- return;
217
- } catch (e) {
218
- logger.warn(`Apple IAP Webhook: ${e.message}`, e);
219
- res.writeHead(503);
220
- res.end(JSON.stringify(e));
221
- return;
216
+ res.writeHead(200);
217
+ res.end();
218
+ return;
219
+ } catch (e) {
220
+ logger.warn(`Apple IAP Webhook: ${e.message}`, e);
221
+ res.writeHead(503);
222
+ res.end(JSON.stringify(e));
223
+ return;
224
+ }
222
225
  }
223
- }
224
- res.writeHead(404);
225
- res.end();
226
- });
226
+ res.writeHead(404);
227
+ res.end();
228
+ });
229
+ };
227
230
 
228
231
  const AppleIAP: IPaymentAdapter = {
229
232
  ...PaymentAdapter,