@webbers/pay-payments-medusa 2.2.40 → 2.2.41
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/.medusa/server/package.json +1 -1
- package/.medusa/server/src/admin/index.js +1 -1
- package/.medusa/server/src/admin/index.mjs +1 -1
- package/.medusa/server/src/api/store/carts/[id]/duplicate/route.d.ts.map +1 -1
- package/.medusa/server/src/api/store/carts/[id]/duplicate/route.js +27 -7
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webbers/pay-payments-medusa",
|
|
3
3
|
"displayName": "Medusa v2 Pay. Plugin",
|
|
4
|
-
"version": "2.2.
|
|
4
|
+
"version": "2.2.41",
|
|
5
5
|
"description": "The Pay.nl payment provider plugin for Medusa v2",
|
|
6
6
|
"author": "Webbers B.V. <development@webbers.com>",
|
|
7
7
|
"license": "MIT",
|
|
@@ -58,7 +58,7 @@ const sdk = new Medusa__default.default({
|
|
|
58
58
|
}
|
|
59
59
|
});
|
|
60
60
|
const displayName = "Medusa v2 Pay. Plugin";
|
|
61
|
-
const version = "2.2.
|
|
61
|
+
const version = "2.2.41";
|
|
62
62
|
function getSortedPaymentMethods(data) {
|
|
63
63
|
const { checkoutOptions, checkoutSequence } = data;
|
|
64
64
|
const { primary } = checkoutSequence.default;
|
|
@@ -55,7 +55,7 @@ const sdk = new Medusa({
|
|
|
55
55
|
}
|
|
56
56
|
});
|
|
57
57
|
const displayName = "Medusa v2 Pay. Plugin";
|
|
58
|
-
const version = "2.2.
|
|
58
|
+
const version = "2.2.41";
|
|
59
59
|
function getSortedPaymentMethods(data) {
|
|
60
60
|
const { checkoutOptions, checkoutSequence } = data;
|
|
61
61
|
const { primary } = checkoutSequence.default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../../src/api/store/carts/[id]/duplicate/route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAE,cAAc,EAAC,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../../src/api/store/carts/[id]/duplicate/route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAE,cAAc,EAAC,MAAM,0BAA0B,CAAA;AAUtE,eAAO,MAAM,GAAG,GAAU,KAAK,aAAa,EAAE,KAAK,cAAc,kBAuChE,CAAA"}
|
|
@@ -4,14 +4,34 @@ exports.GET = void 0;
|
|
|
4
4
|
const utils_1 = require("@medusajs/framework/utils");
|
|
5
5
|
const duplicate_cart_1 = require("../../../../../workflows/cart/duplicate-cart");
|
|
6
6
|
const helpers_1 = require("@medusajs/medusa/api/store/carts/helpers");
|
|
7
|
+
const POLL_INTERVAL_MS = 1_000;
|
|
8
|
+
const MAX_WAIT_MS = 20_000;
|
|
9
|
+
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
7
10
|
const GET = async (req, res) => {
|
|
8
11
|
const we = req.scope.resolve(utils_1.Modules.WORKFLOW_ENGINE);
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
const transactionId = "cart-duplicate-" + req.params.id;
|
|
13
|
+
const runDuplicate = async () => {
|
|
14
|
+
const { result } = await we.run(duplicate_cart_1.duplicateCartWorkflowId, {
|
|
15
|
+
input: { id: req.params.id },
|
|
16
|
+
transactionId,
|
|
17
|
+
});
|
|
18
|
+
return result;
|
|
19
|
+
};
|
|
20
|
+
let newCartId = await runDuplicate();
|
|
21
|
+
// Two concurrent callers (e.g. Pay.nl exchange + return URL) hit this
|
|
22
|
+
// endpoint with the same source cart id. The workflow engine de-duplicates
|
|
23
|
+
// on transactionId, so the losing caller gets an empty result while the
|
|
24
|
+
// winning workflow is still running. Poll until the winning transaction
|
|
25
|
+
// completes — re-running with the same transactionId returns its cached
|
|
26
|
+
// result, so both callers walk away with the same duplicated cart id
|
|
27
|
+
// (no orphan carts).
|
|
28
|
+
// A linear 2s poll choosen based on real world examples of this workflow.
|
|
29
|
+
// Timeout of retry is 20 seconds.
|
|
30
|
+
const deadline = Date.now() + MAX_WAIT_MS;
|
|
31
|
+
while (!newCartId && Date.now() < deadline) {
|
|
32
|
+
await sleep(POLL_INTERVAL_MS);
|
|
33
|
+
newCartId = await runDuplicate();
|
|
34
|
+
}
|
|
15
35
|
if (!newCartId) {
|
|
16
36
|
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Duplicate cart workflow for cart "${req.params.id}" did not return a cart ID`);
|
|
17
37
|
}
|
|
@@ -19,4 +39,4 @@ const GET = async (req, res) => {
|
|
|
19
39
|
res.status(200).json({ cart });
|
|
20
40
|
};
|
|
21
41
|
exports.GET = GET;
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2NhcnRzL1tpZF0vZHVwbGljYXRlL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUE4RDtBQUM5RCxpRkFBb0Y7QUFDcEYsc0VBQW9FO0FBRXBFLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFBO0FBQzlCLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQTtBQUUxQixNQUFNLEtBQUssR0FBRyxDQUFDLEVBQVUsRUFBRSxFQUFFLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUV4RSxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsR0FBa0IsRUFBRSxHQUFtQixFQUFFLEVBQUU7SUFDbkUsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBTyxDQUFDLGVBQWUsQ0FBQyxDQUFBO0lBQ3JELE1BQU0sYUFBYSxHQUFHLGlCQUFpQixHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFBO0lBRXZELE1BQU0sWUFBWSxHQUFHLEtBQUssSUFBaUMsRUFBRTtRQUMzRCxNQUFNLEVBQUMsTUFBTSxFQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLHdDQUF1QixFQUFFO1lBQ3JELEtBQUssRUFBRSxFQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBQztZQUMxQixhQUFhO1NBQ2QsQ0FBQyxDQUFBO1FBQ0YsT0FBTyxNQUFNLENBQUE7SUFDZixDQUFDLENBQUE7SUFFRCxJQUFJLFNBQVMsR0FBRyxNQUFNLFlBQVksRUFBRSxDQUFBO0lBRXBDLHNFQUFzRTtJQUN0RSwyRUFBMkU7SUFDM0Usd0VBQXdFO0lBQ3hFLHdFQUF3RTtJQUN4RSx3RUFBd0U7SUFDeEUscUVBQXFFO0lBQ3JFLHFCQUFxQjtJQUNyQiwwRUFBMEU7SUFDMUUsa0NBQWtDO0lBQ2xDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxXQUFXLENBQUE7SUFDekMsT0FBTyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsUUFBUSxFQUFFLENBQUM7UUFDM0MsTUFBTSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtRQUM3QixTQUFTLEdBQUcsTUFBTSxZQUFZLEVBQUUsQ0FBQTtJQUNsQyxDQUFDO0lBRUQsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2YsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIscUNBQXFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSw0QkFBNEIsQ0FDL0UsQ0FBQTtJQUNILENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxNQUFNLElBQUEscUJBQVcsRUFBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBRTVFLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQTtBQUM5QixDQUFDLENBQUE7QUF2Q1ksUUFBQSxHQUFHLE9BdUNmIn0=
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webbers/pay-payments-medusa",
|
|
3
3
|
"displayName": "Medusa v2 Pay. Plugin",
|
|
4
|
-
"version": "2.2.
|
|
4
|
+
"version": "2.2.41",
|
|
5
5
|
"description": "The Pay.nl payment provider plugin for Medusa v2",
|
|
6
6
|
"author": "Webbers B.V. <development@webbers.com>",
|
|
7
7
|
"license": "MIT",
|