@hartl-services/medusa-base 2.4.0 → 2.5.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.
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = void 0;
4
+ const checkout_1 = require("@hartl-services/medusa-food-supplements-contracts/schemas/checkout");
5
+ const check_cart_completion_1 = require("../../../../../workflows/hooks/check-cart-completion");
6
+ const wire_response_1 = require("../../../../wire-response");
7
+ const POST = async (req, res) => {
8
+ await (0, check_cart_completion_1.checkCartCompletion)(req.scope, req.params.id);
9
+ res.json((0, wire_response_1.toWireResponse)(checkout_1.StoreCartCompletionCheckResponseSchema, {
10
+ cart_id: req.params.id,
11
+ ready: true,
12
+ }));
13
+ };
14
+ exports.POST = POST;
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2NhcnRzL1tpZF0vY29tcGxldGlvbi1jaGVjay9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxpR0FBMkg7QUFHM0gsZ0dBQTBGO0FBQzFGLDZEQUEwRDtBQUVuRCxNQUFNLElBQUksR0FBRyxLQUFLLEVBQ3ZCLEdBQWtCLEVBQ2xCLEdBQXFELEVBQ3JELEVBQUU7SUFDRixNQUFNLElBQUEsMkNBQW1CLEVBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ25ELEdBQUcsQ0FBQyxJQUFJLENBQ04sSUFBQSw4QkFBYyxFQUFDLGlEQUFzQyxFQUFFO1FBQ3JELE9BQU8sRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDdEIsS0FBSyxFQUFFLElBQUk7S0FDWixDQUFDLENBQ0gsQ0FBQTtBQUNILENBQUMsQ0FBQTtBQVhZLFFBQUEsSUFBSSxRQVdoQiJ9
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkCartCompletion = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const complete_cart_fields_1 = require("./complete-cart-fields");
6
+ const complete_cart_participants_1 = require("./complete-cart-participants");
7
+ const refunded_cart_payment_1 = require("./refunded-cart-payment");
8
+ /**
9
+ * Runs the checks complete-cart's `validate` hook runs (refunded payment,
10
+ * every plugin's validate participant) without completing the cart. Stripe
11
+ * captures on confirmation, so a Storefront asks this right before it
12
+ * confirms a payment instead of learning about a refusal after the money was
13
+ * taken (which Medusa then refunds). Throws the same errors; writes nothing.
14
+ */
15
+ const checkCartCompletion = async (container, cartId) => {
16
+ const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
17
+ const { data: [cart], } = await query.graph({
18
+ entity: "cart",
19
+ fields: (0, complete_cart_fields_1.loadCompleteCartFields)(),
20
+ filters: { id: cartId },
21
+ });
22
+ if (!cart) {
23
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Cart with id: ${cartId} was not found`);
24
+ }
25
+ if (cart.completed_at) {
26
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_ALLOWED, "Dieser Warenkorb wurde bereits abgeschlossen.");
27
+ }
28
+ (0, refunded_cart_payment_1.assertCartPaymentNotRefunded)(cart);
29
+ await (0, complete_cart_participants_1.runCompleteCartValidateParticipants)({ input: { id: cartId }, cart }, { container, context: {}, eventGroupId: undefined });
30
+ };
31
+ exports.checkCartCompletion = checkCartCompletion;
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stY2FydC1jb21wbGV0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9ob29rcy9jaGVjay1jYXJ0LWNvbXBsZXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EscURBR2tDO0FBRWxDLGlFQUErRDtBQUMvRCw2RUFBa0Y7QUFDbEYsbUVBQXNFO0FBRXRFOzs7Ozs7R0FNRztBQUNJLE1BQU0sbUJBQW1CLEdBQUcsS0FBSyxFQUN0QyxTQUEwQixFQUMxQixNQUFjLEVBQ0MsRUFBRTtJQUNqQixNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2hFLE1BQU0sRUFDSixJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FDYixHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztRQUNwQixNQUFNLEVBQUUsTUFBTTtRQUNkLE1BQU0sRUFBRSxJQUFBLDZDQUFzQixHQUFFO1FBQ2hDLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUU7S0FDeEIsQ0FBQyxDQUFBO0lBRUYsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1YsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFDM0IsaUJBQWlCLE1BQU0sZ0JBQWdCLENBQ3hDLENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFDN0IsK0NBQStDLENBQ2hELENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBQSxvREFBNEIsRUFBQyxJQUFJLENBQUMsQ0FBQTtJQUNsQyxNQUFNLElBQUEsZ0VBQW1DLEVBQ3ZDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksRUFFekIsRUFDSixFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsQ0FDcEQsQ0FBQTtBQUNILENBQUMsQ0FBQTtBQWxDWSxRQUFBLG1CQUFtQix1QkFrQy9CIn0=
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.loadCompleteCartFields = void 0;
4
+ const node_module_1 = require("node:module");
5
+ const node_path_1 = require("node:path");
6
+ const utils_1 = require("@medusajs/framework/utils");
7
+ let cachedFields;
8
+ /**
9
+ * The fields complete-cart loads its cart with (Medusa 2.19.0
10
+ * `completeCartFields`, core-flows dist/cart/utils/fields.js), so the
11
+ * completion check hands the validate participants exactly the cart shape
12
+ * the completion does. core-flows does not export it, so it is read from the
13
+ * core-flows copy `@medusajs/medusa` itself uses. A Medusa upgrade that moves
14
+ * the file fails here loudly instead of checking a different cart shape.
15
+ */
16
+ const loadCompleteCartFields = () => {
17
+ if (cachedFields) {
18
+ return cachedFields;
19
+ }
20
+ const coreFlowsEntry = (0, node_module_1.createRequire)(require.resolve("@medusajs/medusa/core-flows")).resolve("@medusajs/core-flows");
21
+ const { completeCartFields } = require((0, node_path_1.join)((0, node_path_1.dirname)(coreFlowsEntry), "cart", "utils", "fields.js"));
22
+ if (!Array.isArray(completeCartFields) ||
23
+ !completeCartFields.every((field) => typeof field === "string")) {
24
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, "Medusa's complete-cart field list could not be read.");
25
+ }
26
+ cachedFields = completeCartFields;
27
+ return cachedFields;
28
+ };
29
+ exports.loadCompleteCartFields = loadCompleteCartFields;
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGxldGUtY2FydC1maWVsZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2hvb2tzL2NvbXBsZXRlLWNhcnQtZmllbGRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUEyQztBQUMzQyx5Q0FBeUM7QUFFekMscURBQXVEO0FBRXZELElBQUksWUFBa0MsQ0FBQTtBQUV0Qzs7Ozs7OztHQU9HO0FBQ0ksTUFBTSxzQkFBc0IsR0FBRyxHQUFhLEVBQUU7SUFDbkQsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqQixPQUFPLFlBQVksQ0FBQTtJQUNyQixDQUFDO0lBRUQsTUFBTSxjQUFjLEdBQUcsSUFBQSwyQkFBYSxFQUNsQyxPQUFPLENBQUMsT0FBTyxDQUFDLDZCQUE2QixDQUFDLENBQy9DLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQUE7SUFDakMsTUFBTSxFQUFFLGtCQUFrQixFQUFFLEdBQUcsT0FBTyxDQUNwQyxJQUFBLGdCQUFJLEVBQUMsSUFBQSxtQkFBTyxFQUFDLGNBQWMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQ3hCLENBQUE7SUFFckMsSUFDRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUM7UUFDbEMsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxFQUMvRCxDQUFDO1FBQ0QsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUNsQyxzREFBc0QsQ0FDdkQsQ0FBQTtJQUNILENBQUM7SUFFRCxZQUFZLEdBQUcsa0JBQThCLENBQUE7SUFDN0MsT0FBTyxZQUFZLENBQUE7QUFDckIsQ0FBQyxDQUFBO0FBeEJZLFFBQUEsc0JBQXNCLDBCQXdCbEMifQ==
@@ -172,4 +172,4 @@ const compensateCompleteCartOrderCreatedParticipants = async (compensation, cont
172
172
  }
173
173
  };
174
174
  exports.compensateCompleteCartOrderCreatedParticipants = compensateCompleteCartOrderCreatedParticipants;
175
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGxldGUtY2FydC1wYXJ0aWNpcGFudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2hvb2tzL2NvbXBsZXRlLWNhcnQtcGFydGljaXBhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLHFEQUtrQztBQUNsQyxxRUFBZ0Y7QUFRaEYseUdBSXdEO0FBbUJ4RCxNQUFNLGVBQWUsR0FBRyxDQUN0QixJQUEwQixFQUMxQixTQUEwQixFQUMxQixPQUFnRCxFQUNoQixFQUFFLENBQ2xDLE9BQU87SUFDTCxDQUFDLENBQUMsSUFBQSxvRUFBOEIsRUFBQyxPQUFPLEVBQUUsSUFBSSxDQUFDO0lBQy9DLENBQUMsQ0FBQyxJQUFBLGtFQUE0QixFQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQTtBQUVuRCxNQUFNLFFBQVEsR0FBRyxDQUFDLFNBQTBCLEVBQUUsT0FBZSxFQUFRLEVBQUU7SUFDckUsSUFBSSxDQUFDO1FBQ0gsU0FBUzthQUNOLE9BQU8sQ0FDTixpQ0FBeUIsQ0FBQyxNQUFNLENBQ2pDO2FBQ0EsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ25CLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCwwREFBMEQ7SUFDNUQsQ0FBQztBQUNILENBQUMsQ0FBQTtBQWdCRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLEVBQzdCLFVBQWtCLEVBQ2xCLGFBQXFCLEVBQ3JCLFNBQTBCLEVBQzFCLE9BQWdDLEVBQ2pCLEVBQUU7SUFDakIsTUFBTSxRQUFRLEdBQ1osOEJBR0QsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDekIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2QsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFDM0IsYUFBYSxVQUFVLHNCQUFzQixDQUM5QyxDQUFBO0lBQ0gsQ0FBQztJ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
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGxldGUtY2FydC1wYXJ0aWNpcGFudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2hvb2tzL2NvbXBsZXRlLWNhcnQtcGFydGljaXBhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLHFEQUtrQztBQUNsQyxxRUFBZ0Y7QUFRaEYseUdBSXdEO0FBNEJ4RCxNQUFNLGVBQWUsR0FBRyxDQUN0QixJQUEwQixFQUMxQixTQUEwQixFQUMxQixPQUFnRCxFQUNoQixFQUFFLENBQ2xDLE9BQU87SUFDTCxDQUFDLENBQUMsSUFBQSxvRUFBOEIsRUFBQyxPQUFPLEVBQUUsSUFBSSxDQUFDO0lBQy9DLENBQUMsQ0FBQyxJQUFBLGtFQUE0QixFQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQTtBQUVuRCxNQUFNLFFBQVEsR0FBRyxDQUFDLFNBQTBCLEVBQUUsT0FBZSxFQUFRLEVBQUU7SUFDckUsSUFBSSxDQUFDO1FBQ0gsU0FBUzthQUNOLE9BQU8sQ0FDTixpQ0FBeUIsQ0FBQyxNQUFNLENBQ2pDO2FBQ0EsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ25CLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCwwREFBMEQ7SUFDNUQsQ0FBQztBQUNILENBQUMsQ0FBQTtBQWdCRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLEVBQzdCLFVBQWtCLEVBQ2xCLGFBQXFCLEVBQ3JCLFNBQTBCLEVBQzFCLE9BQWdDLEVBQ2pCLEVBQUU7SUFDakIsTUFBTSxRQUFRLEdBQ1osOEJBR0QsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDekIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2QsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFDM0IsYUFBYSxVQUFVLHNCQUFzQixDQUM5QyxDQUFBO0lBQ0gsQ0FBQztJ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
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const core_flows_1 = require("@medusajs/medusa/core-flows");
4
4
  const complete_cart_participants_1 = require("./complete-cart-participants");
5
+ const refunded_cart_payment_1 = require("./refunded-cart-payment");
5
6
  /**
6
7
  * The ONLY registrations of these two hooks in the whole shop. Medusa 2.19.0
7
8
  * throws "Cannot define multiple hook handlers" for a second handler
@@ -9,9 +10,12 @@ const complete_cart_participants_1 = require("./complete-cart-participants");
9
10
  * `completeCartHooks()` on their module service instead and the base runs
10
11
  * their workflows. The cart path never reads feature toggles.
11
12
  */
12
- core_flows_1.completeCartWorkflow.hooks.validate((input, context) => (0, complete_cart_participants_1.runCompleteCartValidateParticipants)(input, context));
13
+ core_flows_1.completeCartWorkflow.hooks.validate(async (input, context) => {
14
+ (0, refunded_cart_payment_1.assertCartPaymentNotRefunded)(input.cart);
15
+ return await (0, complete_cart_participants_1.runCompleteCartValidateParticipants)(input, context);
16
+ });
13
17
  // Medusa 2.19.0 creates this hook internally but omits it from complete cart's
14
18
  // public declaration. Keep the cast isolated to this version-specific edge.
15
19
  const { orderCreated } = core_flows_1.completeCartWorkflow.hooks;
16
20
  orderCreated((input, context) => (0, complete_cart_participants_1.runCompleteCartOrderCreatedParticipants)(input, context), complete_cart_participants_1.compensateCompleteCartOrderCreatedParticipants);
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGxldGUtY2FydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvaG9va3MvY29tcGxldGUtY2FydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLDREQUFrRTtBQUdsRSw2RUFNcUM7QUFFckM7Ozs7OztHQU1HO0FBRUgsaUNBQW9CLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUNyRCxJQUFBLGdFQUFtQyxFQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FDcEQsQ0FBQTtBQWFELCtFQUErRTtBQUMvRSw0RUFBNEU7QUFDNUUsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLGlDQUFvQixDQUFDLEtBRTdDLENBQUE7QUFFRCxZQUFZLENBQ1YsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFBLG9FQUF1QyxFQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsRUFDM0UsMkVBQThDLENBQy9DLENBQUEifQ==
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGxldGUtY2FydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvaG9va3MvY29tcGxldGUtY2FydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLDREQUFrRTtBQUdsRSw2RUFNcUM7QUFDckMsbUVBQXNFO0FBRXRFOzs7Ozs7R0FNRztBQUVILGlDQUFvQixDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUMzRCxJQUFBLG9EQUE0QixFQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUN4QyxPQUFPLE1BQU0sSUFBQSxnRUFBbUMsRUFBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUE7QUFDbEUsQ0FBQyxDQUFDLENBQUE7QUFhRiwrRUFBK0U7QUFDL0UsNEVBQTRFO0FBQzVFLE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxpQ0FBb0IsQ0FBQyxLQUU3QyxDQUFBO0FBRUQsWUFBWSxDQUNWLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBQSxvRUFBdUMsRUFBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEVBQzNFLDJFQUE4QyxDQUMvQyxDQUFBIn0=
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.assertCartPaymentNotRefunded = exports.REFUNDED_CART_PAYMENT_MESSAGE = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ exports.REFUNDED_CART_PAYMENT_MESSAGE = "Die Zahlung für diesen Warenkorb wurde bereits erstattet. Bitte bestelle erneut.";
6
+ /**
7
+ * Refuses to complete a cart whose payment was already refunded. A completion
8
+ * that fails after the provider captured (Stripe with `capture: true` captures
9
+ * on confirmation) makes Medusa 2.19.0 refund the payment
10
+ * (`compensate-payment-if-needed`) and then fail to recreate the session,
11
+ * because a succeeded PaymentIntent cannot be cancelled. The cart stays open
12
+ * with the captured session, and a later completion would authorize that
13
+ * refunded payment again and place an order nobody paid for. Storefronts
14
+ * replace such a cart; this check is the backstop for every caller.
15
+ */
16
+ const assertCartPaymentNotRefunded = (cart) => {
17
+ const refundedAmount = cart.payment_collection?.refunded_amount;
18
+ if (refundedAmount != null && utils_1.MathBN.gt(refundedAmount, 0)) {
19
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_ALLOWED, exports.REFUNDED_CART_PAYMENT_MESSAGE);
20
+ }
21
+ };
22
+ exports.assertCartPaymentNotRefunded = assertCartPaymentNotRefunded;
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmdW5kZWQtY2FydC1wYXltZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9ob29rcy9yZWZ1bmRlZC1jYXJ0LXBheW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EscURBQStEO0FBRWxELFFBQUEsNkJBQTZCLEdBQ3hDLGtGQUFrRixDQUFBO0FBUXBGOzs7Ozs7Ozs7R0FTRztBQUNJLE1BQU0sNEJBQTRCLEdBQUcsQ0FBQyxJQUFxQixFQUFRLEVBQUU7SUFDMUUsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLGVBQWUsQ0FBQTtJQUUvRCxJQUFJLGNBQWMsSUFBSSxJQUFJLElBQUksY0FBTSxDQUFDLEVBQUUsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMzRCxNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUM3QixxQ0FBNkIsQ0FDOUIsQ0FBQTtJQUNILENBQUM7QUFDSCxDQUFDLENBQUE7QUFUWSxRQUFBLDRCQUE0QixnQ0FTeEMifQ==
package/README.md CHANGED
@@ -665,6 +665,25 @@ Affiliate 100 (`affiliate-validate-complete-cart`,
665
665
  instead of silently leaving partial state.
666
666
  - The base never swallows a participant error and never reads toggles here.
667
667
 
668
+ **Refunded payment.** Before any `validate` participant, the base refuses a
669
+ cart whose payment collection already has a refund (`NOT_ALLOWED`, "Die
670
+ Zahlung für diesen Warenkorb wurde bereits erstattet. Bitte bestelle
671
+ erneut."). With Stripe's `capture: true` a completion failing after the
672
+ confirmation makes Medusa 2.19.0 refund the payment and keep the cart open
673
+ with the captured session (the succeeded PaymentIntent cannot be cancelled);
674
+ completing that cart later would place an order on the refunded payment. A
675
+ storefront replaces such a cart with a fresh one.
676
+
677
+ **Completion check.** `POST /store/carts/:id/completion-check` (contracts
678
+ `paths/checkout`, `types/checkout-store`) runs the same checks without
679
+ completing: it loads the cart with Medusa's own complete-cart field list,
680
+ refuses a completed or refunded cart and runs every `validate` participant.
681
+ It answers `{ cart_id, ready: true }` or the error the completion would
682
+ answer with, and writes nothing. Stripe captures on confirmation, so a
683
+ Storefront calls it right before confirming a payment. Plugins that guard
684
+ `/store/carts/:id/complete` with a middleware register it for this route too
685
+ (the affiliate plugin's registered-email gate does).
686
+
668
687
 
669
688
  ## Sentry logger wrapper
670
689
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hartl-services/medusa-base",
3
- "version": "2.4.0",
3
+ "version": "2.5.0",
4
4
  "description": "Base plugin for Hartl Services Medusa shops: per-plugin feature toggles with a generic Admin settings page, a Store endpoint for storefronts, enforcement helpers, the complete-cart hook composition, the root redirect, cart-promotion link repair, the built-in E-Mail, Documents and S3 file storage modules, config helpers with the turnkey food-shop preset, and the Sentry logger wrapper and instrumentation.",
5
5
  "license": "MIT",
6
6
  "files": [
@@ -88,7 +88,7 @@
88
88
  "mime-types": "3.0.1",
89
89
  "nodemailer": "6.10.1",
90
90
  "ulid": "^2.4.0",
91
- "@hartl-services/medusa-food-supplements-contracts": "^0.24.0"
91
+ "@hartl-services/medusa-food-supplements-contracts": "^0.25.0"
92
92
  },
93
93
  "devDependencies": {
94
94
  "@medusajs/admin-sdk": "2.19.0",