medusa-plugin-veeqo 0.1.3

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 (58) hide show
  1. package/.medusa/server/medusa-config.js +29 -0
  2. package/.medusa/server/src/admin/index.js +686 -0
  3. package/.medusa/server/src/admin/index.mjs +685 -0
  4. package/.medusa/server/src/api/admin/veeqo/customers/[customerId]/sync/route.js +19 -0
  5. package/.medusa/server/src/api/admin/veeqo/customers/sync/route.js +16 -0
  6. package/.medusa/server/src/api/admin/veeqo/orders/[orderId]/sync/route.js +19 -0
  7. package/.medusa/server/src/api/admin/veeqo/orders/shipment-sync/route.js +30 -0
  8. package/.medusa/server/src/api/admin/veeqo/orders/sync/route.js +16 -0
  9. package/.medusa/server/src/api/admin/veeqo/products/[productId]/sync/route.js +19 -0
  10. package/.medusa/server/src/api/admin/veeqo/products/sync/route.js +14 -0
  11. package/.medusa/server/src/api/admin/veeqo/sales-channels/[salesChannelId]/sync/route.js +19 -0
  12. package/.medusa/server/src/api/admin/veeqo/sales-channels/sync/route.js +14 -0
  13. package/.medusa/server/src/api/admin/veeqo/shipments/[id]/tracking-events/route.js +20 -0
  14. package/.medusa/server/src/api/admin/veeqo/shipping-options/[shippingOptionId]/sync/route.js +19 -0
  15. package/.medusa/server/src/api/admin/veeqo/shipping-options/sync/route.js +14 -0
  16. package/.medusa/server/src/api/admin/veeqo/stock-locations/[stockLocationId]/sync/route.js +19 -0
  17. package/.medusa/server/src/api/admin/veeqo/stock-locations/sync/route.js +14 -0
  18. package/.medusa/server/src/api/middlewares.js +39 -0
  19. package/.medusa/server/src/api/validators.js +23 -0
  20. package/.medusa/server/src/jobs/veeqo-order-sync.js +34 -0
  21. package/.medusa/server/src/links/customer-veeqo-customer.js +18 -0
  22. package/.medusa/server/src/links/fulfillment-veeqo-shipment.js +18 -0
  23. package/.medusa/server/src/links/order-veeqo-order.js +18 -0
  24. package/.medusa/server/src/links/product-variant-veeqo-sellable.js +18 -0
  25. package/.medusa/server/src/links/product-veeqo-product.js +18 -0
  26. package/.medusa/server/src/links/sales-channel-veeqo-channel.js +18 -0
  27. package/.medusa/server/src/links/shipping-option-veeqo-delivery-method.js +18 -0
  28. package/.medusa/server/src/links/stock-location-veeqo-warehouse.js +18 -0
  29. package/.medusa/server/src/links/veeqo-channel-sales-channel.js +15 -0
  30. package/.medusa/server/src/links/veeqo-customer-customer.js +15 -0
  31. package/.medusa/server/src/links/veeqo-delivery-method.js +15 -0
  32. package/.medusa/server/src/links/veeqo-order-order.js +15 -0
  33. package/.medusa/server/src/links/veeqo-product-product.js +15 -0
  34. package/.medusa/server/src/links/veeqo-sellable-product-variant.js +15 -0
  35. package/.medusa/server/src/links/veeqo-shipment-fulfillment.js +15 -0
  36. package/.medusa/server/src/links/veeqo-warehouse-stock-location.js +15 -0
  37. package/.medusa/server/src/modules/veeqo/index.js +10 -0
  38. package/.medusa/server/src/modules/veeqo/migrations/Migration20260411222036.js +76 -0
  39. package/.medusa/server/src/modules/veeqo/models/veeqo-channel.js +10 -0
  40. package/.medusa/server/src/modules/veeqo/models/veeqo-customer.js +14 -0
  41. package/.medusa/server/src/modules/veeqo/models/veeqo-delivery-method.js +10 -0
  42. package/.medusa/server/src/modules/veeqo/models/veeqo-order.js +26 -0
  43. package/.medusa/server/src/modules/veeqo/models/veeqo-product.js +10 -0
  44. package/.medusa/server/src/modules/veeqo/models/veeqo-sellable.js +10 -0
  45. package/.medusa/server/src/modules/veeqo/models/veeqo-shipment.js +20 -0
  46. package/.medusa/server/src/modules/veeqo/models/veeqo-warehouse.js +10 -0
  47. package/.medusa/server/src/modules/veeqo/service.js +566 -0
  48. package/.medusa/server/src/modules/veeqo/types.js +3 -0
  49. package/.medusa/server/src/subscribers/veeqo-dispatcher.js +12 -0
  50. package/.medusa/server/src/workflows/channel.js +137 -0
  51. package/.medusa/server/src/workflows/customer.js +112 -0
  52. package/.medusa/server/src/workflows/delivery-method.js +116 -0
  53. package/.medusa/server/src/workflows/order.js +327 -0
  54. package/.medusa/server/src/workflows/product.js +163 -0
  55. package/.medusa/server/src/workflows/shipments.js +155 -0
  56. package/.medusa/server/src/workflows/warehouse.js +133 -0
  57. package/README.md +70 -0
  58. package/package.json +83 -0
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deleteChannelInVeeqoWorkflow = exports.findAndDeleteChannelInVeeqoStep = exports.syncChannelToVeeqoWorkflow = exports.addOrUpdateChannelInVeeqoStep = exports.updateSalesChannelInVeeqoWorkflow = exports.updateChannelInVeeqoStep = exports.addSalesChannelToVeeqoWorkflow = exports.addChannelToVeeqoStep = exports.getVeeqoChannelWorkflow = exports.fetchChannelFromVeeqoStep = exports.getSalesChannelDetailsStep = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ const mapSalesChannelToVeeqoChannelInput = (sales_channel) => {
7
+ if (sales_channel.name === undefined || sales_channel.name === null) {
8
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Sales channel ${sales_channel.id} is missing required field for Veeqo channel input: name`);
9
+ }
10
+ return {
11
+ name: sales_channel.name?.replace(/[^a-zA-Z0-9 ]/g, ''), // veeqo api rejects if name has special characters
12
+ type_code: 'direct',
13
+ ...(sales_channel.default_warehouse_id && {
14
+ default_warehouse_id: sales_channel.default_warehouse_id
15
+ })
16
+ };
17
+ };
18
+ exports.getSalesChannelDetailsStep = (0, workflows_sdk_1.createStep)('get-sales-channel-details-step', async (sales_channel_id, { container }) => {
19
+ const query = container.resolve('query');
20
+ const { data: sales_channels } = await query.graph({
21
+ entity: 'sales_channel',
22
+ fields: ['id', 'name', 'type_code', 'veeqo_channel.veeqo_channel_id'],
23
+ filters: { id: sales_channel_id }
24
+ });
25
+ // get linked stock location ids for sales channel
26
+ const { data: links } = await query.graph({
27
+ entity: 'sales_channel_location',
28
+ fields: ['stock_location_id'],
29
+ filters: { sales_channel_id }
30
+ });
31
+ // get veeqo warehouse id for first linked stock location, if exists
32
+ let defaultVeeqoWarehouseId;
33
+ if (links.length > 0) {
34
+ const stock_location_id = links[0].stock_location_id;
35
+ const { data: stockLocations } = await query.graph({
36
+ entity: 'stock_location',
37
+ fields: ['id', 'veeqo_warehouse.veeqo_warehouse_id'],
38
+ filters: { id: stock_location_id }
39
+ });
40
+ defaultVeeqoWarehouseId = stockLocations[0]?.veeqo_warehouse?.veeqo_warehouse_id;
41
+ }
42
+ const sales_channel = {
43
+ ...sales_channels[0],
44
+ ...(defaultVeeqoWarehouseId !== undefined && {
45
+ default_warehouse_id: defaultVeeqoWarehouseId
46
+ })
47
+ };
48
+ if (!sales_channel) {
49
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Sales channel with id ${sales_channel_id} not found`);
50
+ }
51
+ return new workflows_sdk_1.StepResponse(sales_channel);
52
+ });
53
+ // GET --------------------------------------------------------------
54
+ exports.fetchChannelFromVeeqoStep = (0, workflows_sdk_1.createStep)('fetch-channel-from-veeqo-step', async (sales_channel_id, { container }) => {
55
+ const query = container.resolve('query');
56
+ const { data: [veeqo_channel] } = await query.graph({
57
+ entity: 'veeqo_channel',
58
+ fields: ['veeqo_channel_id'],
59
+ filters: { sales_channel_id }
60
+ });
61
+ const veeqoChannelId = veeqo_channel?.veeqo_channel_id;
62
+ if (!veeqoChannelId) {
63
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `No linked Veeqo channel found for sales channel ${sales_channel_id}`);
64
+ }
65
+ const veeqoService = container.resolve('veeqo');
66
+ const veeqoChannel = (await veeqoService.fetchChannel(veeqoChannelId));
67
+ return new workflows_sdk_1.StepResponse(veeqoChannel);
68
+ });
69
+ exports.getVeeqoChannelWorkflow = (0, workflows_sdk_1.createWorkflow)('get-veeqo-channel-workflow', (sales_channel_id) => {
70
+ const veeqoChannel = (0, exports.fetchChannelFromVeeqoStep)(sales_channel_id);
71
+ return new workflows_sdk_1.WorkflowResponse(veeqoChannel);
72
+ });
73
+ // ADD -----------------------------------------------------------
74
+ exports.addChannelToVeeqoStep = (0, workflows_sdk_1.createStep)('add-channel-to-veeqo-step', async (sales_channel, { container }) => {
75
+ if (sales_channel.veeqo_channel?.veeqo_channel_id) {
76
+ return new workflows_sdk_1.StepResponse(void 0);
77
+ }
78
+ const veeqoChannelInput = mapSalesChannelToVeeqoChannelInput(sales_channel);
79
+ const veeqoService = container.resolve('veeqo');
80
+ const veeqoChannel = await veeqoService.addChannel(sales_channel.id, veeqoChannelInput);
81
+ if (!veeqoChannel) {
82
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, `Unable to create channel in Veeqo for sales channel ${sales_channel.id}`);
83
+ }
84
+ return new workflows_sdk_1.StepResponse(veeqoChannel);
85
+ });
86
+ exports.addSalesChannelToVeeqoWorkflow = (0, workflows_sdk_1.createWorkflow)('add-sales-channel-to-veeqo-workflow', (sales_channel) => {
87
+ (0, exports.addChannelToVeeqoStep)(sales_channel);
88
+ return new workflows_sdk_1.WorkflowResponse(void 0);
89
+ });
90
+ // UPDATE -----------------------------------------------------------
91
+ exports.updateChannelInVeeqoStep = (0, workflows_sdk_1.createStep)('update-channel-in-veeqo-step', async (sales_channel, { container }) => {
92
+ if (!sales_channel.veeqo_channel?.veeqo_channel_id) {
93
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `No linked Veeqo channel found for sales channel ${sales_channel.id}`);
94
+ }
95
+ const veeqoChannelInput = mapSalesChannelToVeeqoChannelInput(sales_channel);
96
+ const veeqoService = container.resolve('veeqo');
97
+ const veeqoChannel = await veeqoService.updateChannel(sales_channel.veeqo_channel.veeqo_channel_id, veeqoChannelInput);
98
+ if (!veeqoChannel) {
99
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, `Unable to update channel in Veeqo for sales channel ${sales_channel.id}`);
100
+ }
101
+ return new workflows_sdk_1.StepResponse(veeqoChannel);
102
+ });
103
+ exports.updateSalesChannelInVeeqoWorkflow = (0, workflows_sdk_1.createWorkflow)('update-sales-channel-in-veeqo-workflow', (sales_channel) => {
104
+ const veeqoChannel = (0, exports.updateChannelInVeeqoStep)(sales_channel);
105
+ return new workflows_sdk_1.WorkflowResponse(veeqoChannel);
106
+ });
107
+ // SYNC -------------------------------------------------------------
108
+ exports.addOrUpdateChannelInVeeqoStep = (0, workflows_sdk_1.createStep)('add-or-update-channel-in-veeqo-step', async (sales_channel, { container }) => {
109
+ const veeqoService = container.resolve('veeqo');
110
+ const veeqoChannelId = sales_channel.veeqo_channel?.veeqo_channel_id;
111
+ if (!veeqoChannelId) {
112
+ const veeqoChannelInput = mapSalesChannelToVeeqoChannelInput(sales_channel);
113
+ const veeqoChannel = await veeqoService.addChannel(sales_channel.id, veeqoChannelInput);
114
+ return new workflows_sdk_1.StepResponse(veeqoChannel);
115
+ }
116
+ else {
117
+ const veeqoChannelInput = mapSalesChannelToVeeqoChannelInput(sales_channel);
118
+ const veeqoChannel = await veeqoService.updateChannel(veeqoChannelId, veeqoChannelInput);
119
+ return new workflows_sdk_1.StepResponse(veeqoChannel);
120
+ }
121
+ });
122
+ exports.syncChannelToVeeqoWorkflow = (0, workflows_sdk_1.createWorkflow)('sync-channel-in-veeqo-workflow', (sales_channel_id) => {
123
+ const salesChannel = (0, exports.getSalesChannelDetailsStep)(sales_channel_id);
124
+ const veeqoChannel = (0, exports.addOrUpdateChannelInVeeqoStep)(salesChannel);
125
+ return new workflows_sdk_1.WorkflowResponse(veeqoChannel);
126
+ });
127
+ // DELETE -----------------------------------------------------------
128
+ exports.findAndDeleteChannelInVeeqoStep = (0, workflows_sdk_1.createStep)('find-and-delete-channel-in-veeqo-step', async (sales_channel_id, { container }) => {
129
+ const veeqoService = container.resolve('veeqo');
130
+ await veeqoService.deleteChannel(sales_channel_id);
131
+ return new workflows_sdk_1.StepResponse(void 0);
132
+ });
133
+ exports.deleteChannelInVeeqoWorkflow = (0, workflows_sdk_1.createWorkflow)('delete-channel-in-veeqo-workflow', (sales_channel_id) => {
134
+ const result = (0, exports.findAndDeleteChannelInVeeqoStep)(sales_channel_id);
135
+ return new workflows_sdk_1.WorkflowResponse(result);
136
+ });
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvY2hhbm5lbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFLMEM7QUFDMUMscURBQXVEO0FBUXZELE1BQU0sa0NBQWtDLEdBQUcsQ0FDMUMsYUFBK0MsRUFDM0IsRUFBRTtJQUN0QixJQUFJLGFBQWEsQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLGFBQWEsQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDckUsTUFBTSxJQUFJLG1CQUFXLENBQ3BCLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsaUJBQWlCLGFBQWEsQ0FBQyxFQUFFLDBEQUEwRCxDQUMzRixDQUFBO0lBQ0YsQ0FBQztJQUNELE9BQU87UUFDTixJQUFJLEVBQUUsYUFBYSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDLEVBQUUsbURBQW1EO1FBQzVHLFNBQVMsRUFBRSxRQUFRO1FBQ25CLEdBQUcsQ0FBQyxhQUFhLENBQUMsb0JBQW9CLElBQUk7WUFDekMsb0JBQW9CLEVBQUUsYUFBYSxDQUFDLG9CQUFvQjtTQUN4RCxDQUFDO0tBQ0YsQ0FBQTtBQUNGLENBQUMsQ0FBQTtBQUVZLFFBQUEsMEJBQTBCLEdBQUcsSUFBQSwwQkFBVSxFQUNuRCxnQ0FBZ0MsRUFDaEMsS0FBSyxFQUFFLGdCQUF3QixFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUNqRCxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3hDLE1BQU0sRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ2xELE1BQU0sRUFBRSxlQUFlO1FBQ3ZCLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLGdDQUFn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
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deleteCustomerFromVeeqoWorkflow = exports.findAndDeleteCustomerFromVeeqoStep = exports.syncCustomerToVeeqoWorkflow = exports.addOrUpdateCustomerInVeeqoStep = exports.updateCustomerInVeeqoWorkflow = exports.updateCustomerInVeeqoStep = exports.addCustomerToVeeqoWorkflow = exports.addCustomerToVeeqoStep = exports.getVeeqoCustomerWorkflow = exports.fetchCustomerFromVeeqoStep = exports.getCustomerDetailsStep = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ const mapCustomerToVeeqoCustomerInput = (customer) => {
7
+ if (customer.email === undefined || customer.email === null) {
8
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Customer ${customer.id} is missing required field for Veeqo customer input: email`);
9
+ }
10
+ return {
11
+ email: customer.email,
12
+ notes: customer.id, // store the Medusa customer ID in the notes field to link the records
13
+ ...(customer.phone !== undefined && customer.phone !== null ? { phone: customer.phone } : {})
14
+ };
15
+ };
16
+ exports.getCustomerDetailsStep = (0, workflows_sdk_1.createStep)('get-customer-details-step', async (customer_id, { container }) => {
17
+ const query = container.resolve('query');
18
+ const { data: customers } = await query.graph({
19
+ entity: 'customer',
20
+ fields: ['id', 'email', 'phone', 'veeqo_customer.veeqo_customer_id'],
21
+ filters: { id: customer_id }
22
+ });
23
+ const customer = customers[0];
24
+ if (!customer) {
25
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Customer with id ${customer_id} not found`);
26
+ }
27
+ return new workflows_sdk_1.StepResponse(customer);
28
+ });
29
+ // GET --------------------------------------------------------------
30
+ exports.fetchCustomerFromVeeqoStep = (0, workflows_sdk_1.createStep)('fetch-customer-from-veeqo-step', async (customer_id, { container }) => {
31
+ const query = container.resolve('query');
32
+ const { data: [veeqo_customer] } = await query.graph({
33
+ entity: 'veeqo_customer',
34
+ fields: ['veeqo_customer_id'],
35
+ filters: { customer_id }
36
+ });
37
+ const veeqoCustomerId = veeqo_customer?.veeqo_customer_id;
38
+ if (!veeqoCustomerId) {
39
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `No linked Veeqo customer found for customer ${customer_id}`);
40
+ }
41
+ const veeqoService = container.resolve('veeqo');
42
+ const veeqoCustomer = (await veeqoService.fetchCustomer(veeqoCustomerId));
43
+ return new workflows_sdk_1.StepResponse(veeqoCustomer);
44
+ });
45
+ exports.getVeeqoCustomerWorkflow = (0, workflows_sdk_1.createWorkflow)('get-veeqo-customer-workflow', (customer_id) => {
46
+ const veeqoCustomer = (0, exports.fetchCustomerFromVeeqoStep)(customer_id);
47
+ return new workflows_sdk_1.WorkflowResponse(veeqoCustomer);
48
+ });
49
+ // ADD -----------------------------------------------------------
50
+ exports.addCustomerToVeeqoStep = (0, workflows_sdk_1.createStep)('add-customer-to-veeqo-step', async (customer, { container }) => {
51
+ if (customer.veeqo_customer?.veeqo_customer_id) {
52
+ return new workflows_sdk_1.StepResponse(void 0);
53
+ }
54
+ const veeqoCustomerInput = mapCustomerToVeeqoCustomerInput(customer);
55
+ const veeqoService = container.resolve('veeqo');
56
+ const veeqoCustomer = await veeqoService.addCustomer(customer.id, veeqoCustomerInput);
57
+ return new workflows_sdk_1.StepResponse(veeqoCustomer);
58
+ });
59
+ exports.addCustomerToVeeqoWorkflow = (0, workflows_sdk_1.createWorkflow)('add-customer-to-veeqo-workflow', (customer_id) => {
60
+ const customer = (0, exports.getCustomerDetailsStep)(customer_id);
61
+ const veeqoCustomer = (0, exports.addCustomerToVeeqoStep)(customer);
62
+ return new workflows_sdk_1.WorkflowResponse(veeqoCustomer);
63
+ });
64
+ // UPDATE -----------------------------------------------------------
65
+ exports.updateCustomerInVeeqoStep = (0, workflows_sdk_1.createStep)('update-customer-in-veeqo-step', async (customer, { container }) => {
66
+ const veeqoCustomerId = customer.veeqo_customer?.veeqo_customer_id;
67
+ if (!veeqoCustomerId) {
68
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `No linked Veeqo customer found for customer ${customer.id}`);
69
+ }
70
+ const veeqoCustomerInput = mapCustomerToVeeqoCustomerInput(customer);
71
+ const veeqoService = container.resolve('veeqo');
72
+ const veeqoCustomer = await veeqoService.updateCustomer(veeqoCustomerId, veeqoCustomerInput);
73
+ return new workflows_sdk_1.StepResponse(veeqoCustomer);
74
+ });
75
+ exports.updateCustomerInVeeqoWorkflow = (0, workflows_sdk_1.createWorkflow)('update-customer-in-veeqo-workflow', (customer_id) => {
76
+ const customer = (0, exports.getCustomerDetailsStep)(customer_id);
77
+ const veeqoCustomer = (0, exports.updateCustomerInVeeqoStep)(customer);
78
+ return new workflows_sdk_1.WorkflowResponse(veeqoCustomer);
79
+ });
80
+ // SYNC -------------------------------------------------------------
81
+ exports.addOrUpdateCustomerInVeeqoStep = (0, workflows_sdk_1.createStep)('add-or-update-customer-in-veeqo-step', async (customer, { container }) => {
82
+ const veeqoService = container.resolve('veeqo');
83
+ const veeqoCustomerId = customer.veeqo_customer?.veeqo_customer_id;
84
+ if (!veeqoCustomerId) {
85
+ const veeqoCustomerInput = mapCustomerToVeeqoCustomerInput(customer);
86
+ const veeqoService = container.resolve('veeqo');
87
+ const veeqoCustomer = await veeqoService.addCustomer(customer.id, veeqoCustomerInput);
88
+ return new workflows_sdk_1.StepResponse(veeqoCustomer);
89
+ }
90
+ else {
91
+ const veeqoCustomerInput = mapCustomerToVeeqoCustomerInput(customer);
92
+ const veeqoService = container.resolve('veeqo');
93
+ const veeqoCustomer = await veeqoService.updateCustomer(veeqoCustomerId, veeqoCustomerInput);
94
+ return new workflows_sdk_1.StepResponse(veeqoCustomer);
95
+ }
96
+ });
97
+ exports.syncCustomerToVeeqoWorkflow = (0, workflows_sdk_1.createWorkflow)('sync-customer-to-veeqo-workflow', (customer_id) => {
98
+ const customer = (0, exports.getCustomerDetailsStep)(customer_id);
99
+ const veeqoCustomer = (0, exports.addOrUpdateCustomerInVeeqoStep)(customer);
100
+ return new workflows_sdk_1.WorkflowResponse(veeqoCustomer);
101
+ });
102
+ // DELETE -----------------------------------------------------------
103
+ exports.findAndDeleteCustomerFromVeeqoStep = (0, workflows_sdk_1.createStep)('find-and-delete-customer-from-veeqo-step', async (customer_id, { container }) => {
104
+ const veeqoService = container.resolve('veeqo');
105
+ await veeqoService.deleteCustomer(customer_id);
106
+ return new workflows_sdk_1.StepResponse(void 0);
107
+ });
108
+ exports.deleteCustomerFromVeeqoWorkflow = (0, workflows_sdk_1.createWorkflow)('delete-customer-from-veeqo-workflow', (customer_id) => {
109
+ const result = (0, exports.findAndDeleteCustomerFromVeeqoStep)(customer_id);
110
+ return new workflows_sdk_1.WorkflowResponse(result);
111
+ });
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2N1c3RvbWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUswQztBQUMxQyxxREFBdUQ7QUFRdkQsTUFBTSwrQkFBK0IsR0FBRyxDQUN2QyxRQUF1QyxFQUNsQixFQUFFO0lBQ3ZCLElBQUksUUFBUSxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksUUFBUSxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUM3RCxNQUFNLElBQUksbUJBQVcsQ0FDcEIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixZQUFZLFFBQVEsQ0FBQyxFQUFFLDREQUE0RCxDQUNuRixDQUFBO0lBQ0YsQ0FBQztJQUNELE9BQU87UUFDTixLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUs7UUFDckIsS0FBSyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsc0VBQXNFO1FBQzFGLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxLQUFLLFNBQVMsSUFBSSxRQUFRLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7S0FDN0YsQ0FBQTtBQUNGLENBQUMsQ0FBQTtBQUVZLFFBQUEsc0JBQXNCLEdBQUcsSUFBQSwwQkFBVSxFQUMvQywyQkFBMkIsRUFDM0IsS0FBSyxFQUFFLFdBQW1CLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO0lBQzVDLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDeEMsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDN0MsTUFBTSxFQUFFLFVBQVU7UUFDbEIsTUFBTSxFQUFFLENBQUMs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
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deleteDeliveryMethodFromVeeqoWorkflow = exports.findAndDeleteDeliveryMethodFromVeeqoStep = exports.syncDeliveryMethodToVeeqoWorkflow = exports.addOrUpdateDeliveryMethodInVeeqoStep = exports.updateDeliveryMethodInVeeqoWorkflow = exports.updateDeliveryMethodInVeeqoStep = exports.addDeliveryMethodToVeeqoWorkflow = exports.addDeliveryMethodToVeeqoStep = exports.getVeeqoDeliveryMethodWorkflow = exports.fetchDeliveryMethodFromVeeqoStep = exports.getShippingOptionDetailsStep = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ const mapShippingOptionToVeeqoDeliveryMethodInput = (shipping_option) => {
7
+ const requiredFields = {
8
+ name: shipping_option.name?.replace(/[^a-zA-Z0-9 ]/g, ''),
9
+ cost: shipping_option.prices?.[0]?.amount
10
+ };
11
+ const missingFields = Object.entries(requiredFields)
12
+ .filter(([, value]) => value === undefined || value === null)
13
+ .map(([field]) => field);
14
+ if (missingFields.length) {
15
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Shipping option ${shipping_option.id} is missing required fields for Veeqo delivery method input: ${missingFields.join(', ')}`);
16
+ }
17
+ return {
18
+ name: requiredFields.name,
19
+ cost: requiredFields.cost
20
+ };
21
+ };
22
+ exports.getShippingOptionDetailsStep = (0, workflows_sdk_1.createStep)('get-shipping-option-details-step', async (shipping_option_id, { container }) => {
23
+ const query = container.resolve('query');
24
+ const { data: shipping_options } = await query.graph({
25
+ entity: 'shipping_option',
26
+ fields: ['id', 'name', 'prices.amount', 'veeqo_delivery_method.veeqo_delivery_method_id'],
27
+ filters: { id: shipping_option_id }
28
+ });
29
+ const shipping_option = shipping_options[0];
30
+ if (!shipping_option) {
31
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Shipping option with id ${shipping_option_id} not found`);
32
+ }
33
+ return new workflows_sdk_1.StepResponse(shipping_option);
34
+ });
35
+ // GET --------------------------------------------------------------
36
+ exports.fetchDeliveryMethodFromVeeqoStep = (0, workflows_sdk_1.createStep)('fetch-delivery-method-from-veeqo-step', async (shipping_option_id, { container }) => {
37
+ const query = container.resolve('query');
38
+ const { data: [veeqo_delivery_method] } = await query.graph({
39
+ entity: 'veeqo_delivery_method',
40
+ fields: ['veeqo_delivery_method_id'],
41
+ filters: { shipping_option_id }
42
+ });
43
+ const veeqoDeliveryMethodId = veeqo_delivery_method?.veeqo_delivery_method_id;
44
+ if (!veeqoDeliveryMethodId) {
45
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `No linked Veeqo delivery method found for shipping option ${shipping_option_id}`);
46
+ }
47
+ const veeqoService = container.resolve('veeqo');
48
+ const veeqoDeliveryMethod = (await veeqoService.fetchDeliveryMethod(veeqoDeliveryMethodId));
49
+ return new workflows_sdk_1.StepResponse(veeqoDeliveryMethod);
50
+ });
51
+ exports.getVeeqoDeliveryMethodWorkflow = (0, workflows_sdk_1.createWorkflow)('get-veeqo-delivery-method-workflow', (shipping_option_id) => {
52
+ const veeqoDeliveryMethod = (0, exports.fetchDeliveryMethodFromVeeqoStep)(shipping_option_id);
53
+ return new workflows_sdk_1.WorkflowResponse(veeqoDeliveryMethod);
54
+ });
55
+ // ADD --------------------------------------------------------------
56
+ exports.addDeliveryMethodToVeeqoStep = (0, workflows_sdk_1.createStep)('add-delivery-method-to-veeqo-step', async (shipping_option, { container }) => {
57
+ if (shipping_option.veeqo_delivery_method?.veeqo_delivery_method_id) {
58
+ return new workflows_sdk_1.StepResponse(void 0);
59
+ }
60
+ const veeqoDeliveryMethodInput = mapShippingOptionToVeeqoDeliveryMethodInput(shipping_option);
61
+ const veeqoService = container.resolve('veeqo');
62
+ const veeqoDeliveryMethod = await veeqoService.addDeliveryMethod(shipping_option.id, veeqoDeliveryMethodInput);
63
+ return new workflows_sdk_1.StepResponse(veeqoDeliveryMethod);
64
+ });
65
+ exports.addDeliveryMethodToVeeqoWorkflow = (0, workflows_sdk_1.createWorkflow)('add-delivery-method-to-veeqo-workflow', (shipping_option_id) => {
66
+ const shippingOption = (0, exports.getShippingOptionDetailsStep)(shipping_option_id);
67
+ const veeqoDeliveryMethod = (0, exports.addDeliveryMethodToVeeqoStep)(shippingOption);
68
+ return new workflows_sdk_1.WorkflowResponse(veeqoDeliveryMethod);
69
+ });
70
+ // UPDATE -----------------------------------------------------------
71
+ exports.updateDeliveryMethodInVeeqoStep = (0, workflows_sdk_1.createStep)('update-delivery-method-in-veeqo-step', async (shipping_option, { container }) => {
72
+ const veeqoDeliveryMethodId = shipping_option.veeqo_delivery_method?.veeqo_delivery_method_id;
73
+ if (!veeqoDeliveryMethodId) {
74
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `No linked Veeqo delivery method found for shipping option ${shipping_option.id}`);
75
+ }
76
+ const veeqoDeliveryMethodInput = mapShippingOptionToVeeqoDeliveryMethodInput(shipping_option);
77
+ const veeqoService = container.resolve('veeqo');
78
+ const veeqoDeliveryMethod = await veeqoService.updateDeliveryMethod(veeqoDeliveryMethodId, veeqoDeliveryMethodInput);
79
+ return new workflows_sdk_1.StepResponse(veeqoDeliveryMethod);
80
+ });
81
+ exports.updateDeliveryMethodInVeeqoWorkflow = (0, workflows_sdk_1.createWorkflow)('update-delivery-method-in-veeqo-workflow', (shipping_option_id) => {
82
+ const shippingOption = (0, exports.getShippingOptionDetailsStep)(shipping_option_id);
83
+ const veeqoDeliveryMethod = (0, exports.updateDeliveryMethodInVeeqoStep)(shippingOption);
84
+ return new workflows_sdk_1.WorkflowResponse(veeqoDeliveryMethod);
85
+ });
86
+ // SYNC -------------------------------------------------------------
87
+ exports.addOrUpdateDeliveryMethodInVeeqoStep = (0, workflows_sdk_1.createStep)('add-or-update-delivery-method-in-veeqo-step', async (shipping_option, { container }) => {
88
+ const veeqoDeliveryMethodId = shipping_option.veeqo_delivery_method?.veeqo_delivery_method_id;
89
+ const veeqoService = container.resolve('veeqo');
90
+ if (!veeqoDeliveryMethodId) {
91
+ const veeqoDeliveryMethodInput = mapShippingOptionToVeeqoDeliveryMethodInput(shipping_option);
92
+ const veeqoDeliveryMethod = await veeqoService.addDeliveryMethod(shipping_option.id, veeqoDeliveryMethodInput);
93
+ return new workflows_sdk_1.StepResponse(veeqoDeliveryMethod);
94
+ }
95
+ else {
96
+ const veeqoDeliveryMethodInput = mapShippingOptionToVeeqoDeliveryMethodInput(shipping_option);
97
+ const veeqoDeliveryMethod = await veeqoService.updateDeliveryMethod(veeqoDeliveryMethodId, veeqoDeliveryMethodInput);
98
+ return new workflows_sdk_1.StepResponse(veeqoDeliveryMethod);
99
+ }
100
+ });
101
+ exports.syncDeliveryMethodToVeeqoWorkflow = (0, workflows_sdk_1.createWorkflow)('sync-delivery-method-to-veeqo-workflow', (shipping_option_id) => {
102
+ const shippingOption = (0, exports.getShippingOptionDetailsStep)(shipping_option_id);
103
+ const veeqoDeliveryMethod = (0, exports.addOrUpdateDeliveryMethodInVeeqoStep)(shippingOption);
104
+ return new workflows_sdk_1.WorkflowResponse(veeqoDeliveryMethod);
105
+ });
106
+ // DELETE -----------------------------------------------------------
107
+ exports.findAndDeleteDeliveryMethodFromVeeqoStep = (0, workflows_sdk_1.createStep)('find-and-delete-delivery-method-from-veeqo-step', async (shipping_option_id, { container }) => {
108
+ const veeqoService = container.resolve('veeqo');
109
+ await veeqoService.deleteDeliveryMethod(shipping_option_id);
110
+ return new workflows_sdk_1.StepResponse(void 0);
111
+ });
112
+ exports.deleteDeliveryMethodFromVeeqoWorkflow = (0, workflows_sdk_1.createWorkflow)('delete-delivery-method-from-veeqo-workflow', (shipping_option_id) => {
113
+ const result = (0, exports.findAndDeleteDeliveryMethodFromVeeqoStep)(shipping_option_id);
114
+ return new workflows_sdk_1.WorkflowResponse(result);
115
+ });
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsaXZlcnktbWV0aG9kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9kZWxpdmVyeS1tZXRob2QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBSzBDO0FBQzFDLHFEQUF1RDtBQVF2RCxNQUFNLDJDQUEyQyxHQUFHLENBQ25ELGVBQTBELEVBQy9CLEVBQUU7SUFDN0IsTUFBTSxjQUFjLEdBQUc7UUFDdEIsSUFBSSxFQUFFLGVBQWUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQztRQUN6RCxJQUFJLEVBQUUsZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU07S0FDekMsQ0FBQTtJQUNELE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDO1NBQ2xELE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDO1NBQzVELEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3pCLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzFCLE1BQU0sSUFBSSxtQkFBVyxDQUNwQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLG1CQUFtQixlQUFlLENBQUMsRUFBRSxnRUFBZ0UsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUMvSCxDQUFBO0lBQ0YsQ0FBQztJQUNELE9BQU87UUFDTixJQUFJLEVBQUUsY0FBYyxDQUFDLElBQUs7UUFDMUIsSUFBSSxFQUFFLGNBQWMsQ0FBQyxJQUFLO0tBQzFCLENBQUE7QUFDRixDQUFDLENBQUE7QUFFWSxRQUFBLDRCQUE0QixHQUFHLElBQUEsMEJBQVUsRUFD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