@punchcommerce/punchcommerce-medusa-plugin 0.1.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 (29) hide show
  1. package/.medusa/server/src/admin/index.js +265 -0
  2. package/.medusa/server/src/admin/index.mjs +264 -0
  3. package/.medusa/server/src/api/admin/customers/[id]/punchcommerce-customer/route.js +35 -0
  4. package/.medusa/server/src/api/middlewares.js +52 -0
  5. package/.medusa/server/src/api/store/punchout/actions/parse-items.js +32 -0
  6. package/.medusa/server/src/api/store/punchout/actions/route.js +70 -0
  7. package/.medusa/server/src/api/store/punchout/basket/route.js +17 -0
  8. package/.medusa/server/src/modules/punchcommerce-client/index.js +13 -0
  9. package/.medusa/server/src/modules/punchcommerce-client/service.js +36 -0
  10. package/.medusa/server/src/modules/punchcommerce-client/transform.js +43 -0
  11. package/.medusa/server/src/modules/punchcommerce-client/types.js +3 -0
  12. package/.medusa/server/src/providers/punchcommerce-auth/index.js +10 -0
  13. package/.medusa/server/src/providers/punchcommerce-auth/service.js +69 -0
  14. package/.medusa/server/src/subscribers/customer-deleted.js +26 -0
  15. package/.medusa/server/src/workflows/build-background-search-basket.js +49 -0
  16. package/.medusa/server/src/workflows/build-punchout-basket.js +40 -0
  17. package/.medusa/server/src/workflows/delete-punchcommerce-customer.js +12 -0
  18. package/.medusa/server/src/workflows/lookup-product-handle.js +10 -0
  19. package/.medusa/server/src/workflows/restore-punchout-basket.js +33 -0
  20. package/.medusa/server/src/workflows/steps/get-punchout-cart.js +48 -0
  21. package/.medusa/server/src/workflows/steps/link-punchcommerce-auth-identity.js +86 -0
  22. package/.medusa/server/src/workflows/steps/lookup-product-handle-by-sku.js +21 -0
  23. package/.medusa/server/src/workflows/steps/lookup-punchcommerce-uid.js +16 -0
  24. package/.medusa/server/src/workflows/steps/lookup-variants-by-sku.js +25 -0
  25. package/.medusa/server/src/workflows/steps/search-products.js +42 -0
  26. package/.medusa/server/src/workflows/steps/unlink-punchcommerce-auth-identity.js +37 -0
  27. package/.medusa/server/src/workflows/upsert-punchcommerce-customer.js +10 -0
  28. package/README.md +513 -0
  29. package/package.json +72 -0
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = GET;
4
+ const restore_punchout_basket_1 = require("../../../../workflows/restore-punchout-basket");
5
+ const lookup_product_handle_1 = require("../../../../workflows/lookup-product-handle");
6
+ const build_background_search_basket_1 = require("../../../../workflows/build-background-search-basket");
7
+ const parse_items_1 = require("./parse-items");
8
+ const punchcommerce_client_1 = require("../../../../modules/punchcommerce-client");
9
+ const RESTORE_BASKET = "restore-basket";
10
+ const DETAIL = "detail";
11
+ const SEARCH = "search";
12
+ const BACKGROUND_SEARCH = "background-search";
13
+ async function GET(req, res) {
14
+ const customer_id = req.auth_context.actor_id;
15
+ const { cart_id, actions, items, ordernumber, keyword } = req.validatedQuery;
16
+ const notifications = [];
17
+ let response = { type: "default" };
18
+ for (const action of actions) {
19
+ if (action === RESTORE_BASKET) {
20
+ const parsedItems = (0, parse_items_1.parsePunchOutItems)(items);
21
+ const { result } = await (0, restore_punchout_basket_1.restorePunchOutBasketWorkflow)(req.scope).run({
22
+ input: { cart_id, items: parsedItems },
23
+ });
24
+ notifications.push(...result.notifications);
25
+ continue;
26
+ }
27
+ if (response.type !== "default") {
28
+ continue;
29
+ }
30
+ if (action === DETAIL) {
31
+ if (!ordernumber) {
32
+ notifications.push({
33
+ type: "warning",
34
+ message: "Produktnummer für 'detail' fehlt.",
35
+ });
36
+ continue;
37
+ }
38
+ const { result } = await (0, lookup_product_handle_1.lookupProductHandleWorkflow)(req.scope).run({
39
+ input: { sku: ordernumber },
40
+ });
41
+ if (result.handle) {
42
+ response = { type: "detail", product_handle: result.handle };
43
+ }
44
+ else {
45
+ notifications.push({
46
+ type: "warning",
47
+ message: `Produkt '${ordernumber}' nicht gefunden.`,
48
+ });
49
+ }
50
+ continue;
51
+ }
52
+ if (action === SEARCH) {
53
+ response = { type: "search", keyword: keyword ?? "" };
54
+ continue;
55
+ }
56
+ if (action === BACKGROUND_SEARCH) {
57
+ const { result } = await (0, build_background_search_basket_1.buildBackgroundSearchBasketWorkflow)(req.scope).run({
58
+ input: { cart_id, customer_id, keyword: keyword ?? "" },
59
+ });
60
+ const client = req.scope.resolve(punchcommerce_client_1.PUNCHCOMMERCE_CLIENT_MODULE);
61
+ response = {
62
+ type: "background_search",
63
+ basket: result.basket.basket,
64
+ punchoutUrl: client.getReturnUrl(result.sID),
65
+ };
66
+ }
67
+ }
68
+ res.status(200).json({ notifications, response });
69
+ }
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3B1bmNob3V0L2FjdGlvbnMvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFxQkEsa0JBcUVDO0FBdEZELDJGQUE2RjtBQUM3Rix1RkFBeUY7QUFDekYseUdBQTBHO0FBQzFHLCtDQUFrRDtBQUNsRCxtRkFBc0Y7QUFRdEYsTUFBTSxjQUFjLEdBQUcsZ0JBQWdCLENBQUE7QUFDdkMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFBO0FBQ3ZCLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQTtBQUN2QixNQUFNLGlCQUFpQixHQUFHLG1CQUFtQixDQUFBO0FBRXRDLEtBQUssVUFBVSxHQUFHLENBQ3ZCLEdBQStELEVBQy9ELEdBQW1CO0lBRW5CLE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFBO0lBQzdDLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLEdBQUcsR0FBRyxDQUFDLGNBQWMsQ0FBQTtJQUU1RSxNQUFNLGFBQWEsR0FBaUMsRUFBRSxDQUFBO0lBQ3RELElBQUksUUFBUSxHQUEyQixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQTtJQUUxRCxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzdCLElBQUksTUFBTSxLQUFLLGNBQWMsRUFBRSxDQUFDO1lBQzlCLE1BQU0sV0FBVyxHQUFHLElBQUEsZ0NBQWtCLEVBQUMsS0FBSyxDQUFDLENBQUE7WUFDN0MsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBQSx1REFBNkIsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO2dCQUNwRSxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRTthQUN2QyxDQUFDLENBQUE7WUFDRixhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1lBQzNDLFNBQVE7UUFDVixDQUFDO1FBRUQsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2hDLFNBQVE7UUFDVixDQUFDO1FBRUQsSUFBSSxNQUFNLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNqQixhQUFhLENBQUMsSUFBSSxDQUFDO29CQUNqQixJQUFJLEVBQUUsU0FBUztvQkFDZixPQUFPLEVBQUUsbUNBQW1DO2lCQUM3QyxDQUFDLENBQUE7Z0JBQ0YsU0FBUTtZQUNWLENBQUM7WUFDRCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFBLG1EQUEyQixFQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUM7Z0JBQ2xFLEtBQUssRUFBRSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUU7YUFDNUIsQ0FBQyxDQUFBO1lBQ0YsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2xCLFFBQVEsR0FBRyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQTtZQUM5RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sYUFBYSxDQUFDLElBQUksQ0FBQztvQkFDakIsSUFBSSxFQUFFLFNBQVM7b0JBQ2YsT0FBTyxFQUFFLFlBQVksV0FBVyxtQkFBbUI7aUJBQ3BELENBQUMsQ0FBQTtZQUNKLENBQUM7WUFDRCxTQUFRO1FBQ1YsQ0FBQztRQUVELElBQUksTUFBTSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ3RCLFFBQVEsR0FBRyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sSUFBSSxFQUFFLEVBQUUsQ0FBQTtZQUNyRCxTQUFRO1FBQ1YsQ0FBQztRQUVELElBQUksTUFBTSxLQUFLLGlCQUFpQixFQUFFLENBQUM7WUFDakMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBQSxvRUFBbUMsRUFDMUQsR0FBRyxDQUFDLEtBQUssQ0FDVixDQUFDLEdBQUcsQ0FBQztnQkFDSixLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxPQUFPLElBQUksRUFBRSxFQUFFO2FBQ3hELENBQUMsQ0FBQTtZQUNGLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUM5QixrREFBMkIsQ0FDNUIsQ0FBQTtZQUNELFFBQVEsR0FBRztnQkFDVCxJQUFJLEVBQUUsbUJBQW1CO2dCQUN6QixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNO2dCQUM1QixXQUFXLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO2FBQzdDLENBQUE7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUE7QUFDbkQsQ0FBQyJ9
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = GET;
4
+ const build_punchout_basket_1 = require("../../../../workflows/build-punchout-basket");
5
+ const punchcommerce_client_1 = require("../../../../modules/punchcommerce-client");
6
+ async function GET(req, res) {
7
+ const customer_id = req.auth_context.actor_id;
8
+ const { cart_id } = req.validatedQuery;
9
+ const { result } = await (0, build_punchout_basket_1.buildPunchOutBasketWorkflow)(req.scope).run({
10
+ input: { customer_id, cart_id },
11
+ });
12
+ const client = req.scope.resolve(punchcommerce_client_1.PUNCHCOMMERCE_CLIENT_MODULE);
13
+ res.status(200).json({
14
+ ...result.basket, punchoutUrl: client.getReturnUrl(result.sID),
15
+ });
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3B1bmNob3V0L2Jhc2tldC9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQU1BLGtCQWdCQztBQXJCRCx1RkFBeUY7QUFDekYsbUZBQXNGO0FBSS9FLEtBQUssVUFBVSxHQUFHLENBQ3JCLEdBQWlFLEVBQ2pFLEdBQW1CO0lBRW5CLE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFBO0lBQzdDLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxHQUFHLENBQUMsY0FBYyxDQUFBO0lBRXRDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUEsbURBQTJCLEVBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUNoRSxLQUFLLEVBQUUsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFO0tBQ2xDLENBQUMsQ0FBQTtJQUVGLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUE2QixrREFBMkIsQ0FBQyxDQUFBO0lBRXpGLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2pCLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO0tBQ2pFLENBQUMsQ0FBQTtBQUNOLENBQUMifQ==
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.PUNCHCOMMERCE_CLIENT_MODULE = void 0;
7
+ const utils_1 = require("@medusajs/framework/utils");
8
+ const service_1 = __importDefault(require("./service"));
9
+ exports.PUNCHCOMMERCE_CLIENT_MODULE = "PUNCHCOMMERCE_CLIENT_MODULE";
10
+ exports.default = (0, utils_1.Module)(exports.PUNCHCOMMERCE_CLIENT_MODULE, {
11
+ service: service_1.default,
12
+ });
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9wdW5jaGNvbW1lcmNlLWNsaWVudC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxxREFBa0Q7QUFDbEQsd0RBQWtEO0FBRXJDLFFBQUEsMkJBQTJCLEdBQUcsNkJBQTZCLENBQUE7QUFFeEUsa0JBQWUsSUFBQSxjQUFNLEVBQUMsbUNBQTJCLEVBQUU7SUFDakQsT0FBTyxFQUFFLGlCQUEwQjtDQUNwQyxDQUFDLENBQUEifQ==
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_PUNCHCOMMERCE_URL = exports.PUNCHCOMMERCE_GATEWAY_VERSION = void 0;
4
+ exports.PUNCHCOMMERCE_GATEWAY_VERSION = "v3";
5
+ exports.DEFAULT_PUNCHCOMMERCE_URL = "https://www.punchcommerce.de";
6
+ class PunchCommerceClientService {
7
+ constructor(_container, options) {
8
+ const url = options?.punchcommerceUrl ?? exports.DEFAULT_PUNCHCOMMERCE_URL;
9
+ this.baseUrl = url.replace(/\/+$/, "");
10
+ }
11
+ gatewayUrl(path, query) {
12
+ const url = `${this.baseUrl}/gateway/${exports.PUNCHCOMMERCE_GATEWAY_VERSION}${path}`;
13
+ if (!query) {
14
+ return url;
15
+ }
16
+ const search = new URLSearchParams(query).toString();
17
+ return search ? `${url}?${search}` : url;
18
+ }
19
+ getPunchCommerceUrl() {
20
+ return this.baseUrl;
21
+ }
22
+ getReturnUrl(sID) {
23
+ return this.gatewayUrl("/return", { sID });
24
+ }
25
+ async validateSession(sID, uID) {
26
+ const response = await fetch(this.gatewayUrl("/session/validate", { sID, uID }), {
27
+ method: "GET",
28
+ headers: {
29
+ "Content-Type": "application/json",
30
+ },
31
+ });
32
+ return { valid: response.ok, status: response.status };
33
+ }
34
+ }
35
+ exports.default = PunchCommerceClientService;
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL3B1bmNoY29tbWVyY2UtY2xpZW50L3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRWEsUUFBQSw2QkFBNkIsR0FBRyxJQUFJLENBQUE7QUFDcEMsUUFBQSx5QkFBeUIsR0FBRyw4QkFBOEIsQ0FBQTtBQU12RSxNQUFNLDBCQUEwQjtJQUc5QixZQUFZLFVBQW1CLEVBQUUsT0FBMEM7UUFDekUsTUFBTSxHQUFHLEdBQUcsT0FBTyxFQUFFLGdCQUFnQixJQUFJLGlDQUF5QixDQUFBO1FBQ2xFLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDeEMsQ0FBQztJQUVPLFVBQVUsQ0FBQyxJQUFZLEVBQUUsS0FBOEI7UUFDN0QsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxZQUFZLHFDQUE2QixHQUFHLElBQUksRUFBRSxDQUFBO1FBQzdFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE9BQU8sR0FBRyxDQUFBO1FBQ1osQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFBO1FBQ3BELE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFBO0lBQzFDLENBQUM7SUFFRCxtQkFBbUI7UUFDakIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFBO0lBQ3JCLENBQUM7SUFFRCxZQUFZLENBQUMsR0FBVztRQUN0QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQTtJQUM1QyxDQUFDO0lBRUQsS0FBSyxDQUFDLGVBQWUsQ0FBQyxHQUFXLEVBQUUsR0FBVztRQUM1QyxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FDMUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUNsRDtZQUNFLE1BQU0sRUFBRSxLQUFLO1lBQ2IsT0FBTyxFQUFFO2dCQUNQLGNBQWMsRUFBRSxrQkFBa0I7YUFDbkM7U0FDRixDQUNGLENBQUE7UUFFRCxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQTtJQUN4RCxDQUFDO0NBQ0Y7QUFFRCxrQkFBZSwwQkFBMEIsQ0FBQSJ9
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PRODUCT_NAME_MAX_LENGTH = void 0;
4
+ exports.toPunchOutPosition = toPunchOutPosition;
5
+ exports.PRODUCT_NAME_MAX_LENGTH = 39;
6
+ function toPunchOutPosition(source, currency) {
7
+ const taxRate = Number(source.tax_rate ?? 0);
8
+ const quantity = Number(source.quantity);
9
+ const unitPrice = Number(source.unit_price ?? 0);
10
+ const priceNet = source.subtotal !== undefined && source.subtotal !== null
11
+ ? Number(source.subtotal)
12
+ : unitPrice * quantity;
13
+ const priceGross = source.total !== undefined && source.total !== null
14
+ ? Number(source.total)
15
+ : priceNet;
16
+ const itemPrice = quantity > 0 ? priceNet / quantity : 0;
17
+ const productTitle = (source.product_title ?? "").slice(0, exports.PRODUCT_NAME_MAX_LENGTH);
18
+ return {
19
+ product_ordernumber: source.ordernumber,
20
+ product_name: productTitle,
21
+ quantity,
22
+ item_price: itemPrice,
23
+ price: priceGross,
24
+ price_net: priceNet,
25
+ tax_rate: taxRate,
26
+ type: "product",
27
+ product: {
28
+ id: source.product_id ?? "",
29
+ ordernumber: source.ordernumber,
30
+ brand_ordernumber: source.ordernumber,
31
+ title: source.product_title ?? "",
32
+ description: source.product_description ?? "",
33
+ image_url: source.thumbnail ?? null,
34
+ price: itemPrice,
35
+ currency,
36
+ tax_rate: taxRate,
37
+ packaging_unit: "Piece",
38
+ shipping_time: 0,
39
+ active: "true",
40
+ },
41
+ };
42
+ }
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvcHVuY2hjb21tZXJjZS1jbGllbnQvdHJhbnNmb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWlCQSxnREE2Q0M7QUE1RFksUUFBQSx1QkFBdUIsR0FBRyxFQUFFLENBQUE7QUFlekMsU0FBZ0Isa0JBQWtCLENBQ2hDLE1BQThCLEVBQzlCLFFBQWdCO0lBRWhCLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQzVDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDeEMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDaEQsTUFBTSxRQUFRLEdBQ1osTUFBTSxDQUFDLFFBQVEsS0FBSyxTQUFTLElBQUksTUFBTSxDQUFDLFFBQVEsS0FBSyxJQUFJO1FBQ3ZELENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUN6QixDQUFDLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQTtJQUMxQixNQUFNLFVBQVUsR0FDZCxNQUFNLENBQUMsS0FBSyxLQUFLLFNBQVMsSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLElBQUk7UUFDakQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxRQUFRLENBQUE7SUFDZCxNQUFNLFNBQVMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDeEQsTUFBTSxZQUFZLEdBQUcsQ0FBQyxNQUFNLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FDckQsQ0FBQyxFQUNELCtCQUF1QixDQUN4QixDQUFBO0lBRUQsT0FBTztRQUNMLG1CQUFtQixFQUFFLE1BQU0sQ0FBQyxXQUFXO1FBQ3ZDLFlBQVksRUFBRSxZQUFZO1FBQzFCLFFBQVE7UUFDUixVQUFVLEVBQUUsU0FBUztRQUNyQixLQUFLLEVBQUUsVUFBVTtRQUNqQixTQUFTLEVBQUUsUUFBUTtRQUNuQixRQUFRLEVBQUUsT0FBTztRQUNqQixJQUFJLEVBQUUsU0FBUztRQUNmLE9BQU8sRUFBRTtZQUNQLEVBQUUsRUFBRSxNQUFNLENBQUMsVUFBVSxJQUFJLEVBQUU7WUFDM0IsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO1lBQy9CLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxXQUFXO1lBQ3JDLEtBQUssRUFBRSxNQUFNLENBQUMsYUFBYSxJQUFJLEVBQUU7WUFDakMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxtQkFBbUIsSUFBSSxFQUFFO1lBQzdDLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUyxJQUFJLElBQUk7WUFDbkMsS0FBSyxFQUFFLFNBQVM7WUFDaEIsUUFBUTtZQUNSLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLGNBQWMsRUFBRSxPQUFPO1lBQ3ZCLGFBQWEsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sRUFBRSxNQUFNO1NBQ2Y7S0FDRixDQUFBO0FBQ0gsQ0FBQyJ9
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9wdW5jaGNvbW1lcmNlLWNsaWVudC90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PUNCHCOMMERCE_AUTH_PROVIDER_ID = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const service_1 = require("./service");
6
+ exports.PUNCHCOMMERCE_AUTH_PROVIDER_ID = "punchcommerce";
7
+ exports.default = (0, utils_1.ModuleProvider)(utils_1.Modules.AUTH, {
8
+ services: [service_1.PunchCommerceAuthProviderService],
9
+ });
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL3B1bmNoY29tbWVyY2UtYXV0aC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBbUU7QUFDbkUsdUNBQTREO0FBRS9DLFFBQUEsOEJBQThCLEdBQUcsZUFBZSxDQUFBO0FBRTdELGtCQUFlLElBQUEsc0JBQWMsRUFBQyxlQUFPLENBQUMsSUFBSSxFQUFFO0lBQzFDLFFBQVEsRUFBRSxDQUFDLDBDQUFnQyxDQUFDO0NBQzdDLENBQUMsQ0FBQSJ9
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.PunchCommerceAuthProviderService = void 0;
7
+ const utils_1 = require("@medusajs/framework/utils");
8
+ const zod_1 = require("zod");
9
+ const service_1 = __importDefault(require("../../modules/punchcommerce-client/service"));
10
+ const CredentialSchema = zod_1.z.object({
11
+ sID: zod_1.z.string().min(5),
12
+ uID: zod_1.z.string().min(1),
13
+ });
14
+ class PunchCommerceAuthProviderService extends utils_1.AbstractAuthModuleProvider {
15
+ constructor({ logger }, options) {
16
+ // @ts-ignore
17
+ super(...arguments);
18
+ this.logger_ = logger;
19
+ this.options_ = options;
20
+ this.client_ = new service_1.default(undefined, {
21
+ punchcommerceUrl: options.punchcommerceUrl,
22
+ });
23
+ }
24
+ async register() {
25
+ return {
26
+ success: false,
27
+ error: "Registration not supported.",
28
+ };
29
+ }
30
+ async authenticate(data, authIdentityProviderService) {
31
+ const result = CredentialSchema.safeParse(data.body);
32
+ if (!result.success) {
33
+ return {
34
+ success: false,
35
+ error: "Invalid credentials 'sID' und 'uID' parameters required.",
36
+ };
37
+ }
38
+ const { sID, uID } = result.data;
39
+ try {
40
+ let validation;
41
+ if (this.options_.disableSessionValidation) {
42
+ validation = { valid: true };
43
+ }
44
+ else {
45
+ validation = await this.client_.validateSession(sID, uID);
46
+ }
47
+ if (!validation.valid) {
48
+ return { success: false, error: "Invalid PunchOut-Session", };
49
+ }
50
+ }
51
+ catch (error) {
52
+ const message = error instanceof Error ? error.message : String(error);
53
+ this.logger_.error(`PunchOut-Session-Validation failed: ${message}`, error);
54
+ return { success: false, error: "PunchOut-Session could not be validated", };
55
+ }
56
+ try {
57
+ const authIdentity = await authIdentityProviderService.retrieve({ entity_id: uID });
58
+ return { success: true, authIdentity };
59
+ }
60
+ catch (error) {
61
+ return { success: false, error: "No PunchCommerce Identity found.", };
62
+ }
63
+ }
64
+ }
65
+ exports.PunchCommerceAuthProviderService = PunchCommerceAuthProviderService;
66
+ PunchCommerceAuthProviderService.identifier = "punchcommerce";
67
+ PunchCommerceAuthProviderService.DISPLAY_NAME = "PunchCommerce Authentication";
68
+ exports.default = PunchCommerceAuthProviderService;
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9wcm92aWRlcnMvcHVuY2hjb21tZXJjZS1hdXRoL3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEscURBQXNFO0FBT3RFLDZCQUF3QjtBQUN4Qix5RkFBbUY7QUFZbkYsTUFBTSxnQkFBZ0IsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO0lBQzlCLEdBQUcsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN0QixHQUFHLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Q0FDekIsQ0FBQyxDQUFDO0FBRUgsTUFBYSxnQ0FBaUMsU0FBUSxrQ0FBMEI7SUFRNUUsWUFDSSxFQUFFLE1BQU0sRUFBd0IsRUFDaEMsT0FBeUM7UUFFekMsYUFBYTtRQUNiLEtBQUssQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFBO1FBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFBO1FBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFBO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxpQkFBMEIsQ0FBQyxTQUFTLEVBQUU7WUFDckQsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLGdCQUFnQjtTQUM3QyxDQUFDLENBQUE7SUFDTixDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVE7UUFDVixPQUFPO1lBQ0gsT0FBTyxFQUFFLEtBQUs7WUFDZCxLQUFLLEVBQUUsNkJBQTZCO1NBQ3ZDLENBQUE7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLFlBQVksQ0FDZCxJQUF5QixFQUN6QiwyQkFBd0Q7UUFHeEQsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUVwRCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLE9BQU87Z0JBQ0gsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsS0FBSyxFQUFFLDBEQUEwRDthQUNwRSxDQUFBO1FBQ0wsQ0FBQztRQUVELE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQTtRQUVoQyxJQUFJLENBQUM7WUFDRCxJQUFJLFVBQW1DLENBQUE7WUFFdkMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLHdCQUF3QixFQUFFLENBQUM7Z0JBQ3pDLFVBQVUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQTtZQUNoQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFBO1lBQzdELENBQUM7WUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNwQixPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsMEJBQTBCLEdBQUcsQ0FBQTtZQUNqRSxDQUFDO1FBQ0wsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDYixNQUFNLE9BQU8sR0FBRyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7WUFFdEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsdUNBQXdDLE9BQVEsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFBO1lBRTdFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSx5Q0FBeUMsR0FBRyxDQUFBO1FBQ2hGLENBQUM7UUFDRCxJQUFJLENBQUM7WUFDRCxNQUFNLFlBQVksR0FBRyxNQUFNLDJCQUEyQixDQUFDLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFBO1lBRW5GLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxDQUFBO1FBQzFDLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2IsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGtDQUFrQyxHQUFHLENBQUE7UUFDekUsQ0FBQztJQUNMLENBQUM7O0FBdEVMLDRFQXVFQztBQXRFVSwyQ0FBVSxHQUFHLGVBQWUsQ0FBQTtBQUM1Qiw2Q0FBWSxHQUFHLDhCQUE4QixDQUFBO0FBdUV4RCxrQkFBZSxnQ0FBZ0MsQ0FBQSJ9
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.config = void 0;
4
+ exports.default = customerDeletedHandler;
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ const delete_punchcommerce_customer_1 = require("../workflows/delete-punchcommerce-customer");
7
+ async function customerDeletedHandler({ event: { data }, container, }) {
8
+ const logger = container.resolve("logger");
9
+ try {
10
+ await (0, delete_punchcommerce_customer_1.deletePunchCommerceCustomerWorkflow)(container).run({
11
+ input: { customer_id: data.id },
12
+ });
13
+ logger.info(`Removed punchcommerce_customer linked to deleted customer ${data.id}`);
14
+ }
15
+ catch (error) {
16
+ if (error?.type === utils_1.MedusaError.Types.NOT_FOUND) {
17
+ return;
18
+ }
19
+ const message = error instanceof Error ? error.message : String(error);
20
+ logger.error(`Failed to clean up punchcommerce_customer for deleted customer ${data.id}: ${message}`);
21
+ }
22
+ }
23
+ exports.config = {
24
+ event: "customer.deleted",
25
+ };
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItZGVsZXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zdWJzY3JpYmVycy9jdXN0b21lci1kZWxldGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLHlDQXNCQztBQXpCRCxxREFBdUQ7QUFDdkQsOEZBQWdHO0FBRWpGLEtBQUssVUFBVSxzQkFBc0IsQ0FBQyxFQUNuRCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFDZixTQUFTLEdBQ3NCO0lBQy9CLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUE7SUFFMUMsSUFBSSxDQUFDO1FBQ0gsTUFBTSxJQUFBLG1FQUFtQyxFQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUN2RCxLQUFLLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtTQUNoQyxDQUFDLENBQUE7UUFDRixNQUFNLENBQUMsSUFBSSxDQUNULDZEQUE2RCxJQUFJLENBQUMsRUFBRSxFQUFFLENBQ3ZFLENBQUE7SUFDSCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLElBQUssS0FBMkIsRUFBRSxJQUFJLEtBQUssbUJBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDdkUsT0FBTTtRQUNSLENBQUM7UUFDRCxNQUFNLE9BQU8sR0FBRyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDdEUsTUFBTSxDQUFDLEtBQUssQ0FDVixrRUFBa0UsSUFBSSxDQUFDLEVBQUUsS0FBSyxPQUFPLEVBQUUsQ0FDeEYsQ0FBQTtJQUNILENBQUM7QUFDSCxDQUFDO0FBRVksUUFBQSxNQUFNLEdBQXFCO0lBQ3RDLEtBQUssRUFBRSxrQkFBa0I7Q0FDMUIsQ0FBQSJ9
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildBackgroundSearchBasketWorkflow = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const get_punchout_cart_1 = require("./steps/get-punchout-cart");
6
+ const search_products_1 = require("./steps/search-products");
7
+ const transform_1 = require("../modules/punchcommerce-client/transform");
8
+ exports.buildBackgroundSearchBasketWorkflow = (0, workflows_sdk_1.createWorkflow)("build-background-search-basket", function (input) {
9
+ const loaded = (0, get_punchout_cart_1.getPunchOutCartStep)({
10
+ cart_id: input.cart_id,
11
+ customer_id: input.customer_id,
12
+ });
13
+ const searchInput = (0, workflows_sdk_1.transform)({ input, loaded }, ({ input, loaded }) => ({
14
+ keyword: input.keyword,
15
+ currency_code: loaded.cart.currency_code ?? "",
16
+ region_id: loaded.cart.region_id ?? null,
17
+ }));
18
+ const searchResult = (0, search_products_1.searchProductsStep)(searchInput);
19
+ const output = (0, workflows_sdk_1.transform)({ loaded, searchResult }, ({ loaded, searchResult }) => {
20
+ const currency = (loaded.cart.currency_code ?? "").toUpperCase();
21
+ const positions = searchResult.products.flatMap((product) => {
22
+ const variant = product.variants?.[0];
23
+ if (!variant?.sku) {
24
+ return [];
25
+ }
26
+ const amount = Number(variant.calculated_price?.calculated_amount ?? 0);
27
+ return [
28
+ (0, transform_1.toPunchOutPosition)({
29
+ ordernumber: variant.sku,
30
+ product_id: product.id,
31
+ product_title: product.title,
32
+ product_description: product.description,
33
+ thumbnail: product.thumbnail,
34
+ quantity: 1,
35
+ unit_price: amount,
36
+ subtotal: amount,
37
+ total: amount,
38
+ tax_rate: 0,
39
+ }, currency),
40
+ ];
41
+ });
42
+ return {
43
+ basket: { basket: positions },
44
+ sID: loaded.session_id,
45
+ };
46
+ });
47
+ return new workflows_sdk_1.WorkflowResponse(output);
48
+ });
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtYmFja2dyb3VuZC1zZWFyY2gtYmFza2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9idWlsZC1iYWNrZ3JvdW5kLXNlYXJjaC1iYXNrZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBSTBDO0FBQzFDLGlFQUErRDtBQUMvRCw2REFBNEQ7QUFDNUQseUVBQThFO0FBY2pFLFFBQUEsbUNBQW1DLEdBQUcsSUFBQSw4QkFBYyxFQUMvRCxnQ0FBZ0MsRUFDaEMsVUFBVSxLQUFZO0lBQ3BCLE1BQU0sTUFBTSxHQUFHLElBQUEsdUNBQW1CLEVBQUM7UUFDakMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1FBQ3RCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztLQUMvQixDQUFDLENBQUE7SUFFRixNQUFNLFdBQVcsR0FBRyxJQUFBLHlCQUFTLEVBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN2RSxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87UUFDdEIsYUFBYSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLEVBQUU7UUFDOUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUk7S0FDekMsQ0FBQyxDQUFDLENBQUE7SUFFSCxNQUFNLFlBQVksR0FBRyxJQUFBLG9DQUFrQixFQUFDLFdBQVcsQ0FBQyxDQUFBO0lBRXBELE1BQU0sTUFBTSxHQUFHLElBQUEseUJBQVMsRUFDdEIsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEVBQ3hCLENBQUMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEVBQVUsRUFBRTtRQUNuQyxNQUFNLFFBQVEsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBRWhFLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDMUQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ3JDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUM7Z0JBQ2xCLE9BQU8sRUFBRSxDQUFBO1lBQ1gsQ0FBQztZQUNELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsaUJBQWlCLElBQUksQ0FBQyxDQUFDLENBQUE7WUFDdkUsT0FBTztnQkFDTCxJQUFBLDhCQUFrQixFQUNoQjtvQkFDRSxXQUFXLEVBQUUsT0FBTyxDQUFDLEdBQUc7b0JBQ3hCLFVBQVUsRUFBRSxPQUFPLENBQUMsRUFBRTtvQkFDdEIsYUFBYSxFQUFFLE9BQU8sQ0FBQyxLQUFLO29CQUM1QixtQkFBbUIsRUFBRSxPQUFPLENBQUMsV0FBVztvQkFDeEMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTO29CQUM1QixRQUFRLEVBQUUsQ0FBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtvQkFDbEIsUUFBUSxFQUFFLE1BQU07b0JBQ2hCLEtBQUssRUFBRSxNQUFNO29CQUNiLFFBQVEsRUFBRSxDQUFDO2lCQUNaLEVBQ0QsUUFBUSxDQUNUO2FBQ0YsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFBO1FBRUYsT0FBTztZQUNMLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUU7WUFDN0IsR0FBRyxFQUFFLE1BQU0sQ0FBQyxVQUFVO1NBQ3ZCLENBQUE7SUFDSCxDQUFDLENBQ0YsQ0FBQTtJQUVELE9BQU8sSUFBSSxnQ0FBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUNyQyxDQUFDLENBQ0YsQ0FBQSJ9
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildPunchOutBasketWorkflow = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const transform_1 = require("../modules/punchcommerce-client/transform");
6
+ const get_punchout_cart_1 = require("./steps/get-punchout-cart");
7
+ exports.buildPunchOutBasketWorkflow = (0, workflows_sdk_1.createWorkflow)("build-punchout-basket", function (input) {
8
+ const loaded = (0, get_punchout_cart_1.getPunchOutCartStep)({
9
+ cart_id: input.cart_id,
10
+ customer_id: input.customer_id,
11
+ });
12
+ const output = (0, workflows_sdk_1.transform)({ loaded }, (data) => {
13
+ const cart = data.loaded.cart;
14
+ const currency = (cart.currency_code ?? "").toUpperCase();
15
+ const positions = (cart.items ?? []).map((item) => (0, transform_1.toPunchOutPosition)({
16
+ ordernumber: item.variant_sku ?? item.id,
17
+ product_id: item.product_id,
18
+ product_title: item.product_title ?? item.title,
19
+ product_description: item.product_description,
20
+ thumbnail: item.thumbnail,
21
+ quantity: Number(item.quantity),
22
+ unit_price: Number(item.unit_price),
23
+ subtotal: item.subtotal !== undefined && item.subtotal !== null
24
+ ? Number(item.subtotal)
25
+ : null,
26
+ total: item.total !== undefined && item.total !== null
27
+ ? Number(item.total)
28
+ : null,
29
+ tax_rate: item.tax_lines?.[0]?.rate !== undefined
30
+ ? Number(item.tax_lines[0].rate)
31
+ : null,
32
+ }, currency));
33
+ return {
34
+ basket: { basket: positions },
35
+ sID: data.loaded.session_id,
36
+ };
37
+ });
38
+ return new workflows_sdk_1.WorkflowResponse(output);
39
+ });
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtcHVuY2hvdXQtYmFza2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9idWlsZC1wdW5jaG91dC1iYXNrZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBSTBDO0FBSzFDLHlFQUE4RTtBQUM5RSxpRUFBK0Q7QUFZbEQsUUFBQSwyQkFBMkIsR0FBRyxJQUFBLDhCQUFjLEVBQ3ZELHVCQUF1QixFQUN2QixVQUFVLEtBQStCO0lBQ3ZDLE1BQU0sTUFBTSxHQUFHLElBQUEsdUNBQW1CLEVBQUM7UUFDakMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1FBQ3RCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztLQUMvQixDQUFDLENBQUE7SUFFRixNQUFNLE1BQU0sR0FBRyxJQUFBLHlCQUFTLEVBQ3RCLEVBQUUsTUFBTSxFQUFFLEVBQ1YsQ0FBQyxJQUFJLEVBQTZCLEVBQUU7UUFDbEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUE7UUFDN0IsTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBRXpELE1BQU0sU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQW1CLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDbEUsSUFBQSw4QkFBa0IsRUFDaEI7WUFDRSxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsRUFBRTtZQUN4QyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLEtBQUs7WUFDL0MsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLG1CQUFtQjtZQUM3QyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQy9CLFVBQVUsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUNuQyxRQUFRLEVBQ04sSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJO2dCQUNuRCxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7Z0JBQ3ZCLENBQUMsQ0FBQyxJQUFJO1lBQ1YsS0FBSyxFQUNILElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSTtnQkFDN0MsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO2dCQUNwQixDQUFDLENBQUMsSUFBSTtZQUNWLFFBQVEsRUFDTixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxLQUFLLFNBQVM7Z0JBQ3JDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ2hDLENBQUMsQ0FBQyxJQUFJO1NBQ1gsRUFDRCxRQUFRLENBQ1QsQ0FDRixDQUFBO1FBRUQsT0FBTztZQUNMLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUU7WUFDN0IsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVTtTQUM1QixDQUFBO0lBQ0gsQ0FBQyxDQUNGLENBQUE7SUFFRCxPQUFPLElBQUksZ0NBQWdCLENBQUMsTUFBTSxDQUFDLENBQUE7QUFDckMsQ0FBQyxDQUNGLENBQUEifQ==
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deletePunchCommerceCustomerWorkflow = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const lookup_punchcommerce_uid_1 = require("./steps/lookup-punchcommerce-uid");
6
+ const unlink_punchcommerce_auth_identity_1 = require("./steps/unlink-punchcommerce-auth-identity");
7
+ exports.deletePunchCommerceCustomerWorkflow = (0, workflows_sdk_1.createWorkflow)("delete-punchcommerce-customer", function (input) {
8
+ const { uid } = (0, lookup_punchcommerce_uid_1.lookupPunchCommerceUidStep)(input);
9
+ (0, unlink_punchcommerce_auth_identity_1.unlinkPunchCommerceAuthIdentityStep)({ uid });
10
+ return new workflows_sdk_1.WorkflowResponse({});
11
+ });
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLXB1bmNoY29tbWVyY2UtY3VzdG9tZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2RlbGV0ZS1wdW5jaGNvbW1lcmNlLWN1c3RvbWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUcwQztBQUMxQywrRUFBNkU7QUFDN0UsbUdBQWdHO0FBSW5GLFFBQUEsbUNBQW1DLEdBQUcsSUFBQSw4QkFBYyxFQUMvRCwrQkFBK0IsRUFDL0IsVUFBVSxLQUFvQjtJQUM1QixNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBQSxxREFBMEIsRUFBQyxLQUFLLENBQUMsQ0FBQTtJQUNqRCxJQUFBLHdFQUFtQyxFQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQTtJQUM1QyxPQUFPLElBQUksZ0NBQWdCLENBQUMsRUFBRSxDQUFDLENBQUE7QUFDakMsQ0FBQyxDQUNGLENBQUEifQ==
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.lookupProductHandleWorkflow = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const lookup_product_handle_by_sku_1 = require("./steps/lookup-product-handle-by-sku");
6
+ exports.lookupProductHandleWorkflow = (0, workflows_sdk_1.createWorkflow)("lookup-product-handle", function (input) {
7
+ const result = (0, lookup_product_handle_by_sku_1.lookupProductHandleBySkuStep)({ sku: input.sku });
8
+ return new workflows_sdk_1.WorkflowResponse(result);
9
+ });
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLXByb2R1Y3QtaGFuZGxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9sb29rdXAtcHJvZHVjdC1oYW5kbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBRzBDO0FBQzFDLHVGQUFtRjtBQU10RSxRQUFBLDJCQUEyQixHQUFHLElBQUEsOEJBQWMsRUFDdkQsdUJBQXVCLEVBQ3ZCLFVBQVUsS0FBWTtJQUNwQixNQUFNLE1BQU0sR0FBRyxJQUFBLDJEQUE0QixFQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFBO0lBQy9ELE9BQU8sSUFBSSxnQ0FBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUNyQyxDQUFDLENBQ0YsQ0FBQSJ9
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.restorePunchOutBasketWorkflow = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const core_flows_1 = require("@medusajs/medusa/core-flows");
6
+ const lookup_variants_by_sku_1 = require("./steps/lookup-variants-by-sku");
7
+ exports.restorePunchOutBasketWorkflow = (0, workflows_sdk_1.createWorkflow)("restore-punchout-basket", function (input) {
8
+ const skus = (0, workflows_sdk_1.transform)({ input }, ({ input }) => input.items.map((i) => i.sku));
9
+ const lookupResult = (0, lookup_variants_by_sku_1.lookupVariantsBySkuStep)({ skus });
10
+ const prepared = (0, workflows_sdk_1.transform)({ input, lookupResult }, ({ input, lookupResult }) => {
11
+ const lineItems = input.items
12
+ .filter((item) => item.sku in lookupResult.found && item.quantity > 0)
13
+ .map((item) => ({
14
+ variant_id: lookupResult.found[item.sku],
15
+ quantity: item.quantity,
16
+ }));
17
+ const notifications = lookupResult.missing.map((sku) => ({
18
+ type: "warning",
19
+ message: `Produkt '${sku}' wurde nicht gefunden und nicht in den Warenkorb übernommen.`,
20
+ }));
21
+ return { lineItems, notifications };
22
+ });
23
+ const addItemsInput = (0, workflows_sdk_1.transform)({ input, prepared }, ({ input, prepared }) => ({
24
+ cart_id: input.cart_id,
25
+ items: prepared.lineItems,
26
+ }));
27
+ (0, workflows_sdk_1.when)({ prepared }, ({ prepared }) => prepared.lineItems.length > 0).then(() => {
28
+ core_flows_1.addToCartWorkflow.runAsStep({ input: addItemsInput });
29
+ });
30
+ const output = (0, workflows_sdk_1.transform)({ prepared }, ({ prepared }) => ({ notifications: prepared.notifications }));
31
+ return new workflows_sdk_1.WorkflowResponse(output);
32
+ });
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdG9yZS1wdW5jaG91dC1iYXNrZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3Jlc3RvcmUtcHVuY2hvdXQtYmFza2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUFzRztBQUN0Ryw0REFBK0Q7QUFDL0QsMkVBQXdFO0FBWTNELFFBQUEsNkJBQTZCLEdBQUcsSUFBQSw4QkFBYyxFQUN2RCx5QkFBeUIsRUFDekIsVUFBVSxLQUFZO0lBQ2xCLE1BQU0sSUFBSSxHQUFHLElBQUEseUJBQVMsRUFBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQzVDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQ2hDLENBQUE7SUFFRCxNQUFNLFlBQVksR0FBRyxJQUFBLGdEQUF1QixFQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUV0RCxNQUFNLFFBQVEsR0FBRyxJQUFBLHlCQUFTLEVBQ3RCLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxFQUN2QixDQUFDLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUU7UUFDeEIsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLEtBQUs7YUFDeEIsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLFlBQVksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7YUFDckUsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ1osVUFBVSxFQUFFLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUN4QyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7U0FDMUIsQ0FBQyxDQUFDLENBQUE7UUFFUCxNQUFNLGFBQWEsR0FBaUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbkYsSUFBSSxFQUFFLFNBQWtCO1lBQ3hCLE9BQU8sRUFBRSxZQUFhLEdBQUksK0RBQStEO1NBQzVGLENBQUMsQ0FBQyxDQUFBO1FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsQ0FBQTtJQUN2QyxDQUFDLENBQ0osQ0FBQTtJQUVELE1BQU0sYUFBYSxHQUFHLElBQUEseUJBQVMsRUFDM0IsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQ25CLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdEIsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1FBQ3RCLEtBQUssRUFBRSxRQUFRLENBQUMsU0FBUztLQUM1QixDQUFDLENBQ0wsQ0FBQTtJQUVELElBQUEsb0JBQUksRUFBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNwRSxHQUFHLEVBQUU7UUFDRCw4QkFBaUIsQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQTtJQUN6RCxDQUFDLENBQ0osQ0FBQTtJQUVELE1BQU0sTUFBTSxHQUFHLElBQUEseUJBQVMsRUFDcEIsRUFBRSxRQUFRLEVBQUUsRUFDWixDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQ3hFLENBQUE7SUFFRCxPQUFPLElBQUksZ0NBQWdCLENBQUMsTUFBTSxDQUFDLENBQUE7QUFDdkMsQ0FBQyxDQUNKLENBQUEifQ==
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPunchOutCartStep = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ exports.getPunchOutCartStep = (0, workflows_sdk_1.createStep)("get-punchout-cart", async ({ cart_id, customer_id }, { container }) => {
7
+ const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
8
+ const { data: carts } = await query.graph({
9
+ entity: "cart",
10
+ fields: [
11
+ "id",
12
+ "customer_id",
13
+ "currency_code",
14
+ "region_id",
15
+ "completed_at",
16
+ "metadata",
17
+ "total",
18
+ "subtotal",
19
+ "items.id",
20
+ "items.title",
21
+ "items.product_id",
22
+ "items.product_title",
23
+ "items.product_description",
24
+ "items.product_handle",
25
+ "items.variant_id",
26
+ "items.variant_sku",
27
+ "items.variant_title",
28
+ "items.thumbnail",
29
+ "items.quantity",
30
+ "items.unit_price",
31
+ "items.subtotal",
32
+ "items.total",
33
+ "items.tax_total",
34
+ "items.tax_lines.rate",
35
+ ],
36
+ filters: { id: cart_id, customer_id: customer_id, completed_at: null },
37
+ });
38
+ const cart = carts[0];
39
+ if (!cart) {
40
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, "PunchOut-Cart not found.");
41
+ }
42
+ const sessionId = cart.metadata?.punchcommerce_session_id;
43
+ if (typeof sessionId !== "string" || sessionId.length === 0) {
44
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_ALLOWED, "Cart not does not belong to any PunchCommerce-Session.");
45
+ }
46
+ return new workflows_sdk_1.StepResponse({ cart, session_id: sessionId });
47
+ });
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXB1bmNob3V0LWNhcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0ZXBzL2dldC1wdW5jaG91dC1jYXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUE0RTtBQUM1RSxxREFHa0M7QUFhckIsUUFBQSxtQkFBbUIsR0FBRyxJQUFBLDBCQUFVLEVBQzNDLG1CQUFtQixFQUNuQixLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFTLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO0lBQ3ZELE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDaEUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDeEMsTUFBTSxFQUFFLE1BQU07UUFDZCxNQUFNLEVBQUU7WUFDTixJQUFJO1lBQ0osYUFBYTtZQUNiLGVBQWU7WUFDZixXQUFXO1lBQ1gsY0FBYztZQUNkLFVBQVU7WUFDVixPQUFPO1lBQ1AsVUFBVTtZQUNWLFVBQVU7WUFDVixhQUFhO1lBQ2Isa0JBQWtCO1lBQ2xCLHFCQUFxQjtZQUNyQiwyQkFBMkI7WUFDM0Isc0JBQXNCO1lBQ3RCLGtCQUFrQjtZQUNsQixtQkFBbUI7WUFDbkIscUJBQXFCO1lBQ3JCLGlCQUFpQjtZQUNqQixnQkFBZ0I7WUFDaEIsa0JBQWtCO1lBQ2xCLGdCQUFnQjtZQUNoQixhQUFhO1lBQ2IsaUJBQWlCO1lBQ2pCLHNCQUFzQjtTQUN2QjtRQUNELE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFO0tBQ3ZFLENBQUMsQ0FBQTtJQUVGLE1BQU0sSUFBSSxHQUFJLEtBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFFcEMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1YsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFDM0IsMEJBQTBCLENBQzNCLENBQUE7SUFDSCxDQUFDO0lBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSx3QkFBd0IsQ0FBQTtJQUN6RCxJQUFJLE9BQU8sU0FBUyxLQUFLLFFBQVEsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzVELE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQzdCLHdEQUF3RCxDQUN6RCxDQUFBO0lBQ0gsQ0FBQztJQUVELE9BQU8sSUFBSSw0QkFBWSxDQUFTLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFBO0FBQ2xFLENBQUMsQ0FDRixDQUFBIn0=
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.linkPunchCommerceAuthIdentityStep = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ const PROVIDER = "punchcommerce";
7
+ async function resolveIdentityScenario(authModule, customer_id, uid) {
8
+ const [existing] = await authModule.listProviderIdentities({ provider: PROVIDER, entity_id: uid }, { relations: ["auth_identity"] });
9
+ if (existing) {
10
+ const linkedCustomerId = existing.auth_identity?.app_metadata?.customer_id;
11
+ if (linkedCustomerId === customer_id)
12
+ return { kind: "noop" };
13
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.DUPLICATE_ERROR, "punchcommerce.customer.errors.uid_conflict");
14
+ }
15
+ const [authIdentity] = await authModule.listAuthIdentities({ app_metadata: { customer_id } }, { relations: ["provider_identities"] });
16
+ if (!authIdentity)
17
+ return { kind: "create_both" };
18
+ const pcProvider = authIdentity.provider_identities?.find((pi) => pi.provider === PROVIDER);
19
+ if (pcProvider) {
20
+ return {
21
+ kind: "update_provider",
22
+ providerIdentityId: pcProvider.id,
23
+ previousEntityId: pcProvider.entity_id,
24
+ };
25
+ }
26
+ return { kind: "create_provider", authIdentityId: authIdentity.id };
27
+ }
28
+ exports.linkPunchCommerceAuthIdentityStep = (0, workflows_sdk_1.createStep)("link-punchcommerce-auth-identity", async ({ customer_id, uid }, { container }) => {
29
+ const authModule = container.resolve(utils_1.Modules.AUTH);
30
+ const scenario = await resolveIdentityScenario(authModule, customer_id, uid);
31
+ switch (scenario.kind) {
32
+ case "noop":
33
+ return new workflows_sdk_1.StepResponse(undefined, { action: "noop" });
34
+ case "update_provider": {
35
+ await authModule.updateProviderIdentities({
36
+ id: scenario.providerIdentityId,
37
+ entity_id: uid,
38
+ });
39
+ return new workflows_sdk_1.StepResponse(undefined, {
40
+ action: "updated_provider",
41
+ provider_identity_id: scenario.providerIdentityId,
42
+ previous_entity_id: scenario.previousEntityId,
43
+ });
44
+ }
45
+ case "create_provider": {
46
+ const created = await authModule.createProviderIdentities({
47
+ provider: PROVIDER,
48
+ entity_id: uid,
49
+ auth_identity_id: scenario.authIdentityId,
50
+ });
51
+ return new workflows_sdk_1.StepResponse(undefined, {
52
+ action: "created_provider",
53
+ provider_identity_id: created.id,
54
+ });
55
+ }
56
+ case "create_both": {
57
+ const createdAuth = await authModule.createAuthIdentities({
58
+ app_metadata: { customer_id },
59
+ provider_identities: [{ provider: PROVIDER, entity_id: uid }],
60
+ });
61
+ return new workflows_sdk_1.StepResponse(undefined, {
62
+ action: "created_auth_and_provider",
63
+ auth_identity_id: createdAuth.id,
64
+ });
65
+ }
66
+ }
67
+ }, async (state, { container }) => {
68
+ if (!state || state.action === "noop")
69
+ return;
70
+ const authModule = container.resolve(utils_1.Modules.AUTH);
71
+ switch (state.action) {
72
+ case "created_auth_and_provider":
73
+ await authModule.deleteAuthIdentities([state.auth_identity_id]);
74
+ break;
75
+ case "created_provider":
76
+ await authModule.deleteProviderIdentities([state.provider_identity_id]);
77
+ break;
78
+ case "updated_provider":
79
+ await authModule.updateProviderIdentities({
80
+ id: state.provider_identity_id,
81
+ entity_id: state.previous_entity_id,
82
+ });
83
+ break;
84
+ }
85
+ });
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay1wdW5jaGNvbW1lcmNlLWF1dGgtaWRlbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0ZXBzL2xpbmstcHVuY2hjb21tZXJjZS1hdXRoLWlkZW50aXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUE0RTtBQUM1RSxxREFBZ0U7QUFHaEUsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFBO0FBbUJoQyxLQUFLLFVBQVUsdUJBQXVCLENBQ3BDLFVBQThCLEVBQzlCLFdBQW1CLEVBQ25CLEdBQVc7SUFFWCxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxVQUFVLENBQUMsc0JBQXNCLENBQ3hELEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEVBQ3RDLEVBQUUsU0FBUyxFQUFFLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FDakMsQ0FBQTtJQUVELElBQUksUUFBUSxFQUFFLENBQUM7UUFDYixNQUFNLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxhQUFhLEVBQUUsWUFBWSxFQUFFLFdBQWlDLENBQUE7UUFDaEcsSUFBSSxnQkFBZ0IsS0FBSyxXQUFXO1lBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQTtRQUM3RCxNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUNqQyw0Q0FBNEMsQ0FDN0MsQ0FBQTtJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsTUFBTSxVQUFVLENBQUMsa0JBQWtCLENBQ3hELEVBQUUsWUFBWSxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFDakMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQ3ZDLENBQUE7SUFFRCxJQUFJLENBQUMsWUFBWTtRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFF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