@unchainedshop/plugins 3.0.3 → 3.1.1
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.
- package/lib/accounts/google-oauth.d.ts +4 -0
- package/lib/accounts/google-oauth.d.ts.map +1 -0
- package/lib/accounts/google-oauth.js +145 -0
- package/lib/accounts/google-oauth.js.map +1 -0
- package/lib/accounts/linkedin-oauth.d.ts +4 -0
- package/lib/accounts/linkedin-oauth.d.ts.map +1 -0
- package/lib/accounts/linkedin-oauth.js +82 -0
- package/lib/accounts/linkedin-oauth.js.map +1 -0
- package/lib/events/aws-eventbridge.js +15 -11
- package/lib/events/aws-eventbridge.js.map +1 -1
- package/lib/files/gridfs/gridfs-adapter.d.ts +3 -0
- package/lib/files/gridfs/gridfs-adapter.d.ts.map +1 -0
- package/lib/files/gridfs/gridfs-adapter.js +97 -0
- package/lib/files/gridfs/gridfs-adapter.js.map +1 -0
- package/lib/files/gridfs/gridfs-webhook.d.ts +11 -0
- package/lib/files/gridfs/gridfs-webhook.d.ts.map +1 -0
- package/lib/files/gridfs/gridfs-webhook.js +84 -0
- package/lib/files/gridfs/gridfs-webhook.js.map +1 -0
- package/lib/files/minio/minio-adapter.d.ts +6 -0
- package/lib/files/minio/minio-adapter.d.ts.map +1 -0
- package/lib/files/minio/minio-adapter.js +181 -0
- package/lib/files/minio/minio-adapter.js.map +1 -0
- package/lib/files/minio/minio-webhook.d.ts +2 -0
- package/lib/files/minio/minio-webhook.d.ts.map +1 -0
- package/lib/files/minio/minio-webhook.js +33 -0
- package/lib/files/minio/minio-webhook.js.map +1 -0
- package/lib/payment/apple-iap/module/configureAppleTransactionsModule.d.ts +9 -0
- package/lib/payment/apple-iap/module/configureAppleTransactionsModule.d.ts.map +1 -0
- package/lib/payment/apple-iap/module/configureAppleTransactionsModule.js +17 -0
- package/lib/payment/apple-iap/module/configureAppleTransactionsModule.js.map +1 -0
- package/lib/payment/cryptopay/middleware.d.ts +2 -0
- package/lib/payment/cryptopay/middleware.d.ts.map +1 -0
- package/lib/payment/cryptopay/middleware.js +75 -0
- package/lib/payment/cryptopay/middleware.js.map +1 -0
- package/lib/payment/cryptopay/module/configureCryptopayModule.d.ts +25 -0
- package/lib/payment/cryptopay/module/configureCryptopayModule.d.ts.map +1 -0
- package/lib/payment/cryptopay/module/configureCryptopayModule.js +75 -0
- package/lib/payment/cryptopay/module/configureCryptopayModule.js.map +1 -0
- package/lib/payment/cryptopay/plugin.d.ts.map +1 -1
- package/lib/payment/cryptopay/plugin.js +40 -21
- package/lib/payment/cryptopay/plugin.js.map +1 -1
- package/lib/payment/datatrans-v2/middleware.d.ts +2 -0
- package/lib/payment/datatrans-v2/middleware.d.ts.map +1 -0
- package/lib/payment/datatrans-v2/middleware.js +68 -0
- package/lib/payment/datatrans-v2/middleware.js.map +1 -0
- package/lib/payment/payrexx/middleware.d.ts +2 -0
- package/lib/payment/payrexx/middleware.d.ts.map +1 -0
- package/lib/payment/payrexx/middleware.js +86 -0
- package/lib/payment/payrexx/middleware.js.map +1 -0
- package/lib/payment/postfinance-checkout/middleware.d.ts +2 -0
- package/lib/payment/postfinance-checkout/middleware.d.ts.map +1 -0
- package/lib/payment/postfinance-checkout/middleware.js +38 -0
- package/lib/payment/postfinance-checkout/middleware.js.map +1 -0
- package/lib/payment/saferpay/middleware.d.ts +2 -0
- package/lib/payment/saferpay/middleware.d.ts.map +1 -0
- package/lib/payment/saferpay/middleware.js +57 -0
- package/lib/payment/saferpay/middleware.js.map +1 -0
- package/lib/payment/saferpay/module/configureSaferpayTransactionsModule.d.ts +10 -0
- package/lib/payment/saferpay/module/configureSaferpayTransactionsModule.d.ts.map +1 -0
- package/lib/payment/saferpay/module/configureSaferpayTransactionsModule.js +24 -0
- package/lib/payment/saferpay/module/configureSaferpayTransactionsModule.js.map +1 -0
- package/lib/payment/stripe/middleware.d.ts +6 -0
- package/lib/payment/stripe/middleware.d.ts.map +1 -0
- package/lib/payment/stripe/middleware.js +114 -0
- package/lib/payment/stripe/middleware.js.map +1 -0
- package/lib/payment/stripe/stripe.js +1 -1
- package/lib/plugins-index.d.ts +48 -0
- package/lib/plugins-index.d.ts.map +1 -0
- package/lib/plugins-index.js +107 -0
- package/lib/plugins-index.js.map +1 -0
- package/lib/presets/all-fastify.d.ts.map +1 -1
- package/lib/presets/all-fastify.js +0 -14
- package/lib/presets/all-fastify.js.map +1 -1
- package/package.json +25 -21
- package/src/events/aws-eventbridge.ts +18 -16
- package/src/payment/cryptopay/plugin.ts +37 -29
- package/src/payment/stripe/stripe.ts +1 -1
- package/src/presets/all-fastify.ts +0 -15
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { useMiddlewareWithCurrentContext } from '@unchainedshop/api/express/index.js';
|
|
2
|
+
import express from 'express';
|
|
3
|
+
// Delivery
|
|
4
|
+
import './delivery/post.js';
|
|
5
|
+
import './delivery/pick-mup.js';
|
|
6
|
+
import './delivery/send-message.js';
|
|
7
|
+
import './delivery/stores.js';
|
|
8
|
+
// Payment
|
|
9
|
+
import './payment/invoice.js';
|
|
10
|
+
import './payment/invoice-prepaid.js';
|
|
11
|
+
import './payment/paypal-checkout.js';
|
|
12
|
+
import { datatransHandler } from './payment/datatrans-v2/index.js';
|
|
13
|
+
import { configureCryptopayModule, cryptopayHandler } from './payment/cryptopay/index.js';
|
|
14
|
+
import { appleIAPHandler, configureAppleTransactionsModule } from './payment/apple-iap/index.js';
|
|
15
|
+
import { stripeHandler } from './payment/stripe/index.js';
|
|
16
|
+
import { postfinanceCheckoutHandler } from './payment/postfinance-checkout/index.js';
|
|
17
|
+
import { configureSaferpayTransactionsModule, saferpayHandler } from './payment/saferpay/index.js';
|
|
18
|
+
import { payrexxHandler } from './payment/payrexx/index.js';
|
|
19
|
+
// Warehousing
|
|
20
|
+
import './warehousing/store.js';
|
|
21
|
+
import './warehousing/eth-minter.js';
|
|
22
|
+
// Pricing
|
|
23
|
+
import './pricing/free-payment.js';
|
|
24
|
+
import './pricing/free-delivery.js';
|
|
25
|
+
import './pricing/order-items.js';
|
|
26
|
+
import './pricing/order-discount.js';
|
|
27
|
+
import './pricing/order-delivery.js';
|
|
28
|
+
import './pricing/order-payment.js';
|
|
29
|
+
import './pricing/product-catalog-price.js';
|
|
30
|
+
import './pricing/product-price-rateconversion.js';
|
|
31
|
+
import './pricing/product-discount.js';
|
|
32
|
+
import './pricing/product-swiss-tax.js';
|
|
33
|
+
import './pricing/delivery-swiss-tax.js';
|
|
34
|
+
// Filter & Search
|
|
35
|
+
import './filters/strict-equal.js';
|
|
36
|
+
import './filters/local-search.js';
|
|
37
|
+
// Quotations
|
|
38
|
+
import './quotations/manual.js';
|
|
39
|
+
// Enrollments
|
|
40
|
+
import './enrollments/licensed.js';
|
|
41
|
+
// Event Queue
|
|
42
|
+
import './events/node-event-emitter.js';
|
|
43
|
+
// Workers
|
|
44
|
+
import './worker/bulk-import.js';
|
|
45
|
+
import './worker/zombie-killer.js';
|
|
46
|
+
import './worker/message.js';
|
|
47
|
+
import './worker/external.js';
|
|
48
|
+
import './worker/http-request.js';
|
|
49
|
+
import './worker/heartbeat.js';
|
|
50
|
+
import './worker/email.js';
|
|
51
|
+
import './worker/sms.js';
|
|
52
|
+
import './worker/push-notification.js';
|
|
53
|
+
import './worker/update-ecb-rates.js';
|
|
54
|
+
import './worker/error-notifications.js';
|
|
55
|
+
import './worker/update-coinbase-rates.js';
|
|
56
|
+
import { configureExportToken } from './worker/export-token.js';
|
|
57
|
+
import { configureGenerateOrderAutoscheduling } from './worker/enrollment-order-generator.js';
|
|
58
|
+
// Asset Management
|
|
59
|
+
import './files/gridfs/gridfs-adapter.js';
|
|
60
|
+
import { gridfsHandler } from './files/gridfs/gridfs-webhook.js';
|
|
61
|
+
import { configureGridFSFileUploadModule } from './files/gridfs/index.js';
|
|
62
|
+
import './accounts/google-oauth.js';
|
|
63
|
+
import './accounts/linkedin-oauth.js';
|
|
64
|
+
const { CRYPTOPAY_WEBHOOK_PATH = '/payment/cryptopay', STRIPE_WEBHOOK_PATH = '/payment/stripe', PAYREXX_WEBHOOK_PATH = '/payment/payrexx', PFCHECKOUT_WEBHOOK_PATH = '/payment/postfinance-checkout', DATATRANS_WEBHOOK_PATH = '/payment/datatrans/webhook', APPLE_IAP_WEBHOOK_PATH = '/payment/apple-iap',
|
|
65
|
+
// MINIO_PUT_SERVER_PATH = '/minio',
|
|
66
|
+
GRIDFS_PUT_SERVER_PATH = '/gridfs', SAFERPAY_WEBHOOK_PATH = '/payment/saferpay/webhook', } = process.env;
|
|
67
|
+
// import './files/minio/minio-adapter';
|
|
68
|
+
// import { minioHandler } from './files/minio/minio-webhook';
|
|
69
|
+
export const defaultModules = {
|
|
70
|
+
appleTransactions: {
|
|
71
|
+
configure: configureAppleTransactionsModule,
|
|
72
|
+
},
|
|
73
|
+
saferpayTransactions: {
|
|
74
|
+
configure: configureSaferpayTransactionsModule,
|
|
75
|
+
},
|
|
76
|
+
gridfsFileUploads: {
|
|
77
|
+
configure: configureGridFSFileUploadModule,
|
|
78
|
+
},
|
|
79
|
+
cryptopay: {
|
|
80
|
+
configure: configureCryptopayModule,
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
export const connectDefaultPluginsToExpress4 = (app, { unchainedAPI }) => {
|
|
84
|
+
useMiddlewareWithCurrentContext(app, GRIDFS_PUT_SERVER_PATH, gridfsHandler);
|
|
85
|
+
useMiddlewareWithCurrentContext(app, CRYPTOPAY_WEBHOOK_PATH, express.json(), cryptopayHandler);
|
|
86
|
+
useMiddlewareWithCurrentContext(app, STRIPE_WEBHOOK_PATH, express.raw({ type: 'application/json' }), stripeHandler);
|
|
87
|
+
useMiddlewareWithCurrentContext(app, PFCHECKOUT_WEBHOOK_PATH, express.json(), postfinanceCheckoutHandler);
|
|
88
|
+
useMiddlewareWithCurrentContext(app, DATATRANS_WEBHOOK_PATH, express.text({
|
|
89
|
+
type: 'application/json',
|
|
90
|
+
}), datatransHandler);
|
|
91
|
+
useMiddlewareWithCurrentContext(app, APPLE_IAP_WEBHOOK_PATH, express.json({
|
|
92
|
+
strict: false,
|
|
93
|
+
}), appleIAPHandler);
|
|
94
|
+
useMiddlewareWithCurrentContext(app, PAYREXX_WEBHOOK_PATH, express.json({ type: 'application/json' }), payrexxHandler);
|
|
95
|
+
useMiddlewareWithCurrentContext(app, SAFERPAY_WEBHOOK_PATH, saferpayHandler);
|
|
96
|
+
// useMiddlewareWithCurrentContext(
|
|
97
|
+
// app,
|
|
98
|
+
// MINIO_PUT_SERVER_PATH,
|
|
99
|
+
// express.json({
|
|
100
|
+
// strict: false,
|
|
101
|
+
// }),
|
|
102
|
+
// minioHandler
|
|
103
|
+
// );
|
|
104
|
+
configureExportToken(unchainedAPI);
|
|
105
|
+
configureGenerateOrderAutoscheduling();
|
|
106
|
+
};
|
|
107
|
+
//# sourceMappingURL=plugins-index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugins-index.js","sourceRoot":"","sources":["../src/plugins-index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"all-fastify.d.ts","sourceRoot":"","sources":["../../src/presets/all-fastify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;kCAsBjB,eAAe,oBAAoB;IAAE,YAAY,EAAE,aAAa,CAAA;CAAE;AAA3F,
|
|
1
|
+
{"version":3,"file":"all-fastify.d.ts","sourceRoot":"","sources":["../../src/presets/all-fastify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;kCAsBjB,eAAe,oBAAoB;IAAE,YAAY,EAAE,aAAa,CAAA;CAAE;AAA3F,wBAgDE"}
|
|
@@ -12,19 +12,6 @@ export default (fastify, { unchainedAPI }) => {
|
|
|
12
12
|
connectBaseToFastify(fastify);
|
|
13
13
|
connectCryptoToFastify(fastify, unchainedAPI);
|
|
14
14
|
fastify.register((s, opts, registered) => {
|
|
15
|
-
// Disable JSON parsing!
|
|
16
|
-
// fastify.addContentTypeParser(
|
|
17
|
-
// 'application/json',
|
|
18
|
-
// { parseAs: 'string', bodyLimit: 1024 * 1024 },
|
|
19
|
-
// function (req, body, done) {
|
|
20
|
-
// try {
|
|
21
|
-
// done(null, body);
|
|
22
|
-
// } catch (err) {
|
|
23
|
-
// err.statusCode = 400;
|
|
24
|
-
// done(err, undefined);
|
|
25
|
-
// }
|
|
26
|
-
// },
|
|
27
|
-
// );
|
|
28
15
|
s.addContentTypeParser('application/json', { parseAs: 'string', bodyLimit: 1024 * 1024 }, s.defaultTextParser);
|
|
29
16
|
s.route({
|
|
30
17
|
url: STRIPE_WEBHOOK_PATH,
|
|
@@ -58,7 +45,6 @@ export default (fastify, { unchainedAPI }) => {
|
|
|
58
45
|
method: 'GET',
|
|
59
46
|
handler: saferpayHandler,
|
|
60
47
|
});
|
|
61
|
-
// app.use(STRIPE_WEBHOOK_PATH, express.raw({ type: 'application/json' }), stripeHandler);
|
|
62
48
|
configureGenerateOrderAutoscheduling();
|
|
63
49
|
};
|
|
64
50
|
//# sourceMappingURL=all-fastify.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"all-fastify.js","sourceRoot":"","sources":["../../src/presets/all-fastify.ts"],"names":[],"mappings":"AAGA,OAAO,sBAAsB,MAAM,qBAAqB,CAAC;AACzD,OAAO,oBAAoB,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,0BAA0B,EAAE,MAAM,oDAAoD,CAAC;AAChG,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AACzE,OAAO,EAAE,oCAAoC,EAAE,MAAM,yCAAyC,CAAC;AAE/F,MAAM,EACJ,mBAAmB,GAAG,iBAAiB,EACvC,oBAAoB,GAAG,kBAAkB,EACzC,uBAAuB,GAAG,+BAA+B,EACzD,sBAAsB,GAAG,4BAA4B,EACrD,sBAAsB,GAAG,oBAAoB,EAC7C,qBAAqB,GAAG,2BAA2B,GACpD,GAAG,OAAO,CAAC,GAAG,CAAC;AAEhB,eAAe,CAAC,OAAwB,EAAE,EAAE,YAAY,EAAmC,EAAE,EAAE;IAC7F,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,sBAAsB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAE9C,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE;QACvC,
|
|
1
|
+
{"version":3,"file":"all-fastify.js","sourceRoot":"","sources":["../../src/presets/all-fastify.ts"],"names":[],"mappings":"AAGA,OAAO,sBAAsB,MAAM,qBAAqB,CAAC;AACzD,OAAO,oBAAoB,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,0BAA0B,EAAE,MAAM,oDAAoD,CAAC;AAChG,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AACzE,OAAO,EAAE,oCAAoC,EAAE,MAAM,yCAAyC,CAAC;AAE/F,MAAM,EACJ,mBAAmB,GAAG,iBAAiB,EACvC,oBAAoB,GAAG,kBAAkB,EACzC,uBAAuB,GAAG,+BAA+B,EACzD,sBAAsB,GAAG,4BAA4B,EACrD,sBAAsB,GAAG,oBAAoB,EAC7C,qBAAqB,GAAG,2BAA2B,GACpD,GAAG,OAAO,CAAC,GAAG,CAAC;AAEhB,eAAe,CAAC,OAAwB,EAAE,EAAE,YAAY,EAAmC,EAAE,EAAE;IAC7F,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,sBAAsB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAE9C,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE;QACvC,CAAC,CAAC,oBAAoB,CACpB,kBAAkB,EAClB,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,GAAG,IAAI,EAAE,EAC7C,CAAC,CAAC,iBAAiB,CACpB,CAAC;QACF,CAAC,CAAC,KAAK,CAAC;YACN,GAAG,EAAE,mBAAmB;YACxB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,aAAa;SACvB,CAAC,CAAC;QACH,CAAC,CAAC,KAAK,CAAC;YACN,GAAG,EAAE,sBAAsB;YAC3B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,gBAAgB;SAC1B,CAAC,CAAC;QACH,UAAU,EAAE,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,KAAK,CAAC;QACZ,GAAG,EAAE,uBAAuB;QAC5B,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,0BAA0B;KACpC,CAAC,CAAC;IAEH,OAAO,CAAC,KAAK,CAAC;QACZ,GAAG,EAAE,sBAAsB;QAC3B,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,eAAe;KACzB,CAAC,CAAC;IAEH,OAAO,CAAC,KAAK,CAAC;QACZ,GAAG,EAAE,oBAAoB;QACzB,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,cAAc;KACxB,CAAC,CAAC;IAEH,OAAO,CAAC,KAAK,CAAC;QACZ,GAAG,EAAE,qBAAqB;QAC1B,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,eAAe;KACzB,CAAC,CAAC;IAEH,oCAAoC,EAAE,CAAC;AACzC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unchainedshop/plugins",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.1.1",
|
|
4
4
|
"main": "lib/plugins-index.js",
|
|
5
5
|
"types": "lib/plugins-index.d.ts",
|
|
6
6
|
"exports": {
|
|
@@ -35,18 +35,18 @@
|
|
|
35
35
|
"homepage": "https://github.com/unchainedshop/unchained#readme",
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"@breejs/later": "^4.2.0",
|
|
38
|
-
"@unchainedshop/api": "^3.
|
|
39
|
-
"@unchainedshop/core-delivery": "^3.
|
|
40
|
-
"@unchainedshop/core-enrollments": "^3.
|
|
41
|
-
"@unchainedshop/core-orders": "^3.
|
|
42
|
-
"@unchainedshop/core-payment": "^3.
|
|
43
|
-
"@unchainedshop/core-products": "^3.
|
|
44
|
-
"@unchainedshop/core-warehousing": "^3.
|
|
45
|
-
"@unchainedshop/core-worker": "^3.
|
|
46
|
-
"@unchainedshop/events": "^3.
|
|
47
|
-
"@unchainedshop/file-upload": "^3.
|
|
48
|
-
"@unchainedshop/logger": "^3.
|
|
49
|
-
"@unchainedshop/utils": "^3.
|
|
38
|
+
"@unchainedshop/api": "^3.1.0",
|
|
39
|
+
"@unchainedshop/core-delivery": "^3.1.0",
|
|
40
|
+
"@unchainedshop/core-enrollments": "^3.1.0",
|
|
41
|
+
"@unchainedshop/core-orders": "^3.1.0",
|
|
42
|
+
"@unchainedshop/core-payment": "^3.1.0",
|
|
43
|
+
"@unchainedshop/core-products": "^3.1.0",
|
|
44
|
+
"@unchainedshop/core-warehousing": "^3.1.0",
|
|
45
|
+
"@unchainedshop/core-worker": "^3.1.0",
|
|
46
|
+
"@unchainedshop/events": "^3.1.0",
|
|
47
|
+
"@unchainedshop/file-upload": "^3.1.0",
|
|
48
|
+
"@unchainedshop/logger": "^3.1.0",
|
|
49
|
+
"@unchainedshop/utils": "^3.1.0",
|
|
50
50
|
"event-iterator": "^2.0.0",
|
|
51
51
|
"JSONStream": "^1.3.5"
|
|
52
52
|
},
|
|
@@ -54,8 +54,9 @@
|
|
|
54
54
|
"@aws-sdk/client-eventbridge": ">= 3.714 < 4",
|
|
55
55
|
"@paypal/checkout-server-sdk": "1.x",
|
|
56
56
|
"@redis/client": "1.x",
|
|
57
|
-
"bip32": "
|
|
57
|
+
"bip32": "^5.0.0-rc.0",
|
|
58
58
|
"bitcoinjs-lib": ">= 6.1 <7",
|
|
59
|
+
"bs58check": "^4.0.0",
|
|
59
60
|
"ethers": ">= 6.13 < 7",
|
|
60
61
|
"expiry-map": "2.x",
|
|
61
62
|
"express": "5.x",
|
|
@@ -88,6 +89,9 @@
|
|
|
88
89
|
"bitcoinjs-lib": {
|
|
89
90
|
"optional": true
|
|
90
91
|
},
|
|
92
|
+
"bs58check": {
|
|
93
|
+
"optional": true
|
|
94
|
+
},
|
|
91
95
|
"ethers": {
|
|
92
96
|
"optional": true
|
|
93
97
|
},
|
|
@@ -135,29 +139,29 @@
|
|
|
135
139
|
}
|
|
136
140
|
},
|
|
137
141
|
"devDependencies": {
|
|
138
|
-
"@aws-sdk/client-eventbridge": "^3.723.0",
|
|
139
142
|
"@breejs/later": "^4.2.0",
|
|
140
143
|
"@paypal/checkout-server-sdk": "^1.0.3",
|
|
141
144
|
"@redis/client": "^1.6.0",
|
|
142
145
|
"@types/express": "^5.0.0",
|
|
143
|
-
"@types/node": "^22.
|
|
144
|
-
"bip32": "^
|
|
146
|
+
"@types/node": "^22.13.4",
|
|
147
|
+
"bip32": "^5.0.0-rc.0",
|
|
145
148
|
"bitcoinjs-lib": "^6.1.7",
|
|
149
|
+
"bs58check": "^4.0.0",
|
|
146
150
|
"ethers": "^6.13.5",
|
|
147
151
|
"expiry-map": "^2.0.0",
|
|
148
152
|
"express": "^5.0.1",
|
|
149
153
|
"fastify": "^5.2.1",
|
|
150
154
|
"jest": "^29.7.0",
|
|
151
155
|
"mime-types": "^2.1.35",
|
|
152
|
-
"minio": "^8.0.
|
|
153
|
-
"nodemailer": "^6.
|
|
156
|
+
"minio": "^8.0.4",
|
|
157
|
+
"nodemailer": "^6.10.0",
|
|
154
158
|
"open": "^10.1.0",
|
|
155
159
|
"p-memoize": "^7.1.1",
|
|
156
160
|
"postfinancecheckout": "^4.5.0",
|
|
157
|
-
"stripe": "^17.
|
|
161
|
+
"stripe": "^17.6.0",
|
|
158
162
|
"tiny-secp256k1": "^2.2.3",
|
|
159
163
|
"ts-jest": "^29.2.5",
|
|
160
|
-
"twilio": "^5.4.
|
|
164
|
+
"twilio": "^5.4.4",
|
|
161
165
|
"typescript": "^5.7.3",
|
|
162
166
|
"web-push": "^3.6.7",
|
|
163
167
|
"xml-js": "^1.6.11"
|
|
@@ -1,24 +1,27 @@
|
|
|
1
1
|
import { EmitAdapter, setEmitAdapter } from '@unchainedshop/events';
|
|
2
|
-
import { EventBridgeClient, PutEventsCommand, PutEventsRequestEntry } from '@aws-sdk/client-eventbridge';
|
|
3
2
|
import { createLogger } from '@unchainedshop/logger';
|
|
4
3
|
|
|
5
4
|
const logger = createLogger('unchained:eventbridge');
|
|
6
5
|
|
|
7
|
-
const EventBridgeEventEmitter = ({ region, source, busName }): EmitAdapter => {
|
|
6
|
+
const EventBridgeEventEmitter = async ({ region, source, busName }): Promise<EmitAdapter> => {
|
|
7
|
+
// eslint-disable-next-line
|
|
8
|
+
// @ts-expect-error
|
|
9
|
+
const { EventBridgeClient, PutEventsCommand } = await import('@aws-sdk/client-eventbridge');
|
|
8
10
|
const ebClient = new EventBridgeClient({ region });
|
|
9
11
|
|
|
10
12
|
return {
|
|
11
13
|
publish: (eventName, payload) => {
|
|
12
|
-
const entry: PutEventsRequestEntry = {
|
|
13
|
-
Source: source,
|
|
14
|
-
DetailType: eventName,
|
|
15
|
-
EventBusName: busName,
|
|
16
|
-
Detail: JSON.stringify(payload),
|
|
17
|
-
};
|
|
18
14
|
ebClient
|
|
19
15
|
.send(
|
|
20
16
|
new PutEventsCommand({
|
|
21
|
-
Entries: [
|
|
17
|
+
Entries: [
|
|
18
|
+
{
|
|
19
|
+
Source: source,
|
|
20
|
+
DetailType: eventName,
|
|
21
|
+
EventBusName: busName,
|
|
22
|
+
Detail: JSON.stringify(payload),
|
|
23
|
+
},
|
|
24
|
+
],
|
|
22
25
|
}),
|
|
23
26
|
)
|
|
24
27
|
.catch((e) => {
|
|
@@ -33,11 +36,10 @@ const EventBridgeEventEmitter = ({ region, source, busName }): EmitAdapter => {
|
|
|
33
36
|
|
|
34
37
|
const { EVENT_BRIDGE_REGION, EVENT_BRIDGE_SOURCE, EVENT_BRIDGE_BUS_NAME } = process.env;
|
|
35
38
|
if (EVENT_BRIDGE_REGION && EVENT_BRIDGE_SOURCE && EVENT_BRIDGE_BUS_NAME) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
);
|
|
39
|
+
const eventBridgeAdapter = await EventBridgeEventEmitter({
|
|
40
|
+
source: EVENT_BRIDGE_SOURCE,
|
|
41
|
+
region: EVENT_BRIDGE_REGION,
|
|
42
|
+
busName: EVENT_BRIDGE_BUS_NAME,
|
|
43
|
+
});
|
|
44
|
+
setEmitAdapter(eventBridgeAdapter);
|
|
43
45
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ethers } from 'ethers';
|
|
2
2
|
import { BIP32Factory } from 'bip32';
|
|
3
|
+
import bs58check from 'bs58check';
|
|
3
4
|
import * as ecc from 'tiny-secp256k1';
|
|
4
5
|
import { networks, payments } from 'bitcoinjs-lib';
|
|
5
6
|
import { createLogger } from '@unchainedshop/logger';
|
|
@@ -14,13 +15,36 @@ import { CryptopayModule } from './module.js';
|
|
|
14
15
|
|
|
15
16
|
const logger = createLogger('unchained:core-payment:cryptopay');
|
|
16
17
|
|
|
17
|
-
const {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
18
|
+
const { CRYPTOPAY_SECRET, CRYPTOPAY_BTC_XPUB, CRYPTOPAY_ETH_XPUB } = process.env;
|
|
19
|
+
|
|
20
|
+
const resolvePath = (prefix) => {
|
|
21
|
+
if (prefix === 'x') return `m/44'/0'`;
|
|
22
|
+
if (prefix === 'y') return `m/49'/0'`;
|
|
23
|
+
if (prefix === 'z') return `m/84'/0'`;
|
|
24
|
+
if (prefix === 't') return `m/44'/1'`;
|
|
25
|
+
if (prefix === 'u') return `m/49'/1'`;
|
|
26
|
+
if (prefix === 'v') return `m/84'/1'`;
|
|
27
|
+
return `m`;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
const resolveNetwork = (prefix) => {
|
|
31
|
+
if (['x', 'y', 'z'].includes(prefix)) return networks.bitcoin;
|
|
32
|
+
return networks.testnet;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
function convertExtendedPublicKey(z) {
|
|
36
|
+
const derivationPath = resolvePath(z.slice(0, 1));
|
|
37
|
+
const network = resolveNetwork(z.slice(0, 1));
|
|
38
|
+
// https://github.com/satoshilabs/slips/blob/master/slip-0132.md
|
|
39
|
+
let data = bs58check.decode(z);
|
|
40
|
+
data = data.slice(4);
|
|
41
|
+
data = Buffer.concat([Buffer.from('0488b21e', 'hex'), data]);
|
|
42
|
+
return {
|
|
43
|
+
xpub: bs58check.encode(data),
|
|
44
|
+
network,
|
|
45
|
+
derivationPath,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
24
48
|
|
|
25
49
|
enum CryptopayCurrencies { // eslint-disable-line
|
|
26
50
|
BTC = 'BTC',
|
|
@@ -34,19 +58,6 @@ type CryptopayAddress = {
|
|
|
34
58
|
currencyConversionExpiryDate?: Date;
|
|
35
59
|
};
|
|
36
60
|
|
|
37
|
-
const getDerivationPath = (currency: CryptopayCurrencies, index: number): string => {
|
|
38
|
-
const address = `${(parseInt(CRYPTOPAY_DERIVATION_START, 10) || 0) + index}`;
|
|
39
|
-
if (currency === CryptopayCurrencies.ETH) {
|
|
40
|
-
const pathComponents = ethers.defaultPath.split('/');
|
|
41
|
-
pathComponents[pathComponents.length - 1] = address;
|
|
42
|
-
return pathComponents.join('/');
|
|
43
|
-
}
|
|
44
|
-
if (currency === CryptopayCurrencies.BTC) {
|
|
45
|
-
return `m/44'/0'/0'/0/${address}`;
|
|
46
|
-
}
|
|
47
|
-
return `0/${address}`;
|
|
48
|
-
};
|
|
49
|
-
|
|
50
61
|
const Cryptopay: IPaymentAdapter = {
|
|
51
62
|
...PaymentAdapter,
|
|
52
63
|
|
|
@@ -154,18 +165,17 @@ const Cryptopay: IPaymentAdapter = {
|
|
|
154
165
|
|
|
155
166
|
const cryptoAddresses: CryptopayAddress[] = [];
|
|
156
167
|
if (CRYPTOPAY_BTC_XPUB) {
|
|
157
|
-
const
|
|
168
|
+
const { xpub, network } = convertExtendedPublicKey(CRYPTOPAY_BTC_XPUB);
|
|
158
169
|
const bip32 = BIP32Factory(ecc);
|
|
159
|
-
const hardenedMaster = bip32.fromBase58(
|
|
170
|
+
const hardenedMaster = bip32.fromBase58(xpub, network);
|
|
160
171
|
const btcDerivationNumber = await modules.cryptopay.getNextDerivationNumber(
|
|
161
172
|
CryptopayCurrencies.BTC,
|
|
162
173
|
);
|
|
163
|
-
const
|
|
164
|
-
const child = hardenedMaster.derivePath(derivationPath);
|
|
174
|
+
const child = hardenedMaster.derivePath(`0/${btcDerivationNumber}`);
|
|
165
175
|
cryptoAddresses.push({
|
|
166
176
|
currency: CryptopayCurrencies.BTC,
|
|
167
|
-
address: payments.
|
|
168
|
-
pubkey: child.publicKey,
|
|
177
|
+
address: payments.p2wpkh({
|
|
178
|
+
pubkey: child.publicKey as Buffer,
|
|
169
179
|
network,
|
|
170
180
|
}).address,
|
|
171
181
|
});
|
|
@@ -179,11 +189,9 @@ const Cryptopay: IPaymentAdapter = {
|
|
|
179
189
|
const ethDerivationNumber = await modules.cryptopay.getNextDerivationNumber(
|
|
180
190
|
CryptopayCurrencies.ETH,
|
|
181
191
|
);
|
|
182
|
-
const derivationPath = getDerivationPath(CryptopayCurrencies.ETH, ethDerivationNumber);
|
|
183
|
-
const cleanedForHD = derivationPath.split('/').slice(-2).join('/');
|
|
184
192
|
cryptoAddresses.push({
|
|
185
193
|
currency: CryptopayCurrencies.ETH,
|
|
186
|
-
address: hardenedMaster.derivePath(
|
|
194
|
+
address: hardenedMaster.derivePath(`0/${ethDerivationNumber}`).address,
|
|
187
195
|
});
|
|
188
196
|
}
|
|
189
197
|
|
|
@@ -18,7 +18,7 @@ export const initStripeClient = async (): Promise<StripeType> => {
|
|
|
18
18
|
// @ts-ignore
|
|
19
19
|
const { default: Stripe } = await import('stripe');
|
|
20
20
|
stripe = new Stripe(STRIPE_SECRET, {
|
|
21
|
-
apiVersion: '
|
|
21
|
+
apiVersion: '2025-01-27.acacia',
|
|
22
22
|
});
|
|
23
23
|
return stripe;
|
|
24
24
|
};
|
|
@@ -26,19 +26,6 @@ export default (fastify: FastifyInstance, { unchainedAPI }: { unchainedAPI: Unch
|
|
|
26
26
|
connectCryptoToFastify(fastify, unchainedAPI);
|
|
27
27
|
|
|
28
28
|
fastify.register((s, opts, registered) => {
|
|
29
|
-
// Disable JSON parsing!
|
|
30
|
-
// fastify.addContentTypeParser(
|
|
31
|
-
// 'application/json',
|
|
32
|
-
// { parseAs: 'string', bodyLimit: 1024 * 1024 },
|
|
33
|
-
// function (req, body, done) {
|
|
34
|
-
// try {
|
|
35
|
-
// done(null, body);
|
|
36
|
-
// } catch (err) {
|
|
37
|
-
// err.statusCode = 400;
|
|
38
|
-
// done(err, undefined);
|
|
39
|
-
// }
|
|
40
|
-
// },
|
|
41
|
-
// );
|
|
42
29
|
s.addContentTypeParser(
|
|
43
30
|
'application/json',
|
|
44
31
|
{ parseAs: 'string', bodyLimit: 1024 * 1024 },
|
|
@@ -81,7 +68,5 @@ export default (fastify: FastifyInstance, { unchainedAPI }: { unchainedAPI: Unch
|
|
|
81
68
|
handler: saferpayHandler,
|
|
82
69
|
});
|
|
83
70
|
|
|
84
|
-
// app.use(STRIPE_WEBHOOK_PATH, express.raw({ type: 'application/json' }), stripeHandler);
|
|
85
|
-
|
|
86
71
|
configureGenerateOrderAutoscheduling();
|
|
87
72
|
};
|