@virtocommerce/mcp-onx 0.0.1-alpha.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 (131) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +360 -0
  3. package/dist/adapter.d.ts +53 -0
  4. package/dist/adapter.d.ts.map +1 -0
  5. package/dist/adapter.js +205 -0
  6. package/dist/adapter.js.map +1 -0
  7. package/dist/index.d.ts +9 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +8 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/mappers/filter.mappers.d.ts +16 -0
  12. package/dist/mappers/filter.mappers.d.ts.map +1 -0
  13. package/dist/mappers/filter.mappers.js +209 -0
  14. package/dist/mappers/filter.mappers.js.map +1 -0
  15. package/dist/mappers/index.d.ts +2 -0
  16. package/dist/mappers/index.d.ts.map +1 -0
  17. package/dist/mappers/index.js +2 -0
  18. package/dist/mappers/index.js.map +1 -0
  19. package/dist/models/base.d.ts +133 -0
  20. package/dist/models/base.d.ts.map +1 -0
  21. package/dist/models/base.js +2 -0
  22. package/dist/models/base.js.map +1 -0
  23. package/dist/models/catalog.d.ts +180 -0
  24. package/dist/models/catalog.d.ts.map +1 -0
  25. package/dist/models/catalog.js +2 -0
  26. package/dist/models/catalog.js.map +1 -0
  27. package/dist/models/customer.d.ts +148 -0
  28. package/dist/models/customer.d.ts.map +1 -0
  29. package/dist/models/customer.js +2 -0
  30. package/dist/models/customer.js.map +1 -0
  31. package/dist/models/index.d.ts +10 -0
  32. package/dist/models/index.d.ts.map +1 -0
  33. package/dist/models/index.js +2 -0
  34. package/dist/models/index.js.map +1 -0
  35. package/dist/models/inventory.d.ts +34 -0
  36. package/dist/models/inventory.d.ts.map +1 -0
  37. package/dist/models/inventory.js +2 -0
  38. package/dist/models/inventory.js.map +1 -0
  39. package/dist/models/order.d.ts +158 -0
  40. package/dist/models/order.d.ts.map +1 -0
  41. package/dist/models/order.js +2 -0
  42. package/dist/models/order.js.map +1 -0
  43. package/dist/models/payment.d.ts +145 -0
  44. package/dist/models/payment.d.ts.map +1 -0
  45. package/dist/models/payment.js +2 -0
  46. package/dist/models/payment.js.map +1 -0
  47. package/dist/models/return.d.ts +31 -0
  48. package/dist/models/return.d.ts.map +1 -0
  49. package/dist/models/return.js +2 -0
  50. package/dist/models/return.js.map +1 -0
  51. package/dist/models/search.d.ts +143 -0
  52. package/dist/models/search.d.ts.map +1 -0
  53. package/dist/models/search.js +2 -0
  54. package/dist/models/search.js.map +1 -0
  55. package/dist/models/shipment.d.ts +70 -0
  56. package/dist/models/shipment.d.ts.map +1 -0
  57. package/dist/models/shipment.js +2 -0
  58. package/dist/models/shipment.js.map +1 -0
  59. package/dist/services/base.service.d.ts +10 -0
  60. package/dist/services/base.service.d.ts.map +1 -0
  61. package/dist/services/base.service.js +25 -0
  62. package/dist/services/base.service.js.map +1 -0
  63. package/dist/services/customer.service.d.ts +16 -0
  64. package/dist/services/customer.service.d.ts.map +1 -0
  65. package/dist/services/customer.service.js +78 -0
  66. package/dist/services/customer.service.js.map +1 -0
  67. package/dist/services/fulfillment.service.d.ts +17 -0
  68. package/dist/services/fulfillment.service.d.ts.map +1 -0
  69. package/dist/services/fulfillment.service.js +94 -0
  70. package/dist/services/fulfillment.service.js.map +1 -0
  71. package/dist/services/index.d.ts +7 -0
  72. package/dist/services/index.d.ts.map +1 -0
  73. package/dist/services/index.js +7 -0
  74. package/dist/services/index.js.map +1 -0
  75. package/dist/services/order.service.d.ts +22 -0
  76. package/dist/services/order.service.d.ts.map +1 -0
  77. package/dist/services/order.service.js +153 -0
  78. package/dist/services/order.service.js.map +1 -0
  79. package/dist/services/product.service.d.ts +25 -0
  80. package/dist/services/product.service.d.ts.map +1 -0
  81. package/dist/services/product.service.js +116 -0
  82. package/dist/services/product.service.js.map +1 -0
  83. package/dist/services/return.service.d.ts +17 -0
  84. package/dist/services/return.service.d.ts.map +1 -0
  85. package/dist/services/return.service.js +148 -0
  86. package/dist/services/return.service.js.map +1 -0
  87. package/dist/transformers/address.transformer.d.ts +11 -0
  88. package/dist/transformers/address.transformer.d.ts.map +1 -0
  89. package/dist/transformers/address.transformer.js +75 -0
  90. package/dist/transformers/address.transformer.js.map +1 -0
  91. package/dist/transformers/base.d.ts +14 -0
  92. package/dist/transformers/base.d.ts.map +1 -0
  93. package/dist/transformers/base.js +44 -0
  94. package/dist/transformers/base.js.map +1 -0
  95. package/dist/transformers/customer.transformer.d.ts +16 -0
  96. package/dist/transformers/customer.transformer.d.ts.map +1 -0
  97. package/dist/transformers/customer.transformer.js +84 -0
  98. package/dist/transformers/customer.transformer.js.map +1 -0
  99. package/dist/transformers/fulfillment.transformer.d.ts +13 -0
  100. package/dist/transformers/fulfillment.transformer.d.ts.map +1 -0
  101. package/dist/transformers/fulfillment.transformer.js +93 -0
  102. package/dist/transformers/fulfillment.transformer.js.map +1 -0
  103. package/dist/transformers/index.d.ts +8 -0
  104. package/dist/transformers/index.d.ts.map +1 -0
  105. package/dist/transformers/index.js +8 -0
  106. package/dist/transformers/index.js.map +1 -0
  107. package/dist/transformers/order.transformer.d.ts +26 -0
  108. package/dist/transformers/order.transformer.d.ts.map +1 -0
  109. package/dist/transformers/order.transformer.js +201 -0
  110. package/dist/transformers/order.transformer.js.map +1 -0
  111. package/dist/transformers/product.transformer.d.ts +19 -0
  112. package/dist/transformers/product.transformer.d.ts.map +1 -0
  113. package/dist/transformers/product.transformer.js +202 -0
  114. package/dist/transformers/product.transformer.js.map +1 -0
  115. package/dist/transformers/return.transformer.d.ts +12 -0
  116. package/dist/transformers/return.transformer.d.ts.map +1 -0
  117. package/dist/transformers/return.transformer.js +83 -0
  118. package/dist/transformers/return.transformer.js.map +1 -0
  119. package/dist/types.d.ts +135 -0
  120. package/dist/types.d.ts.map +1 -0
  121. package/dist/types.js +47 -0
  122. package/dist/types.js.map +1 -0
  123. package/dist/utils/api-client.d.ts +31 -0
  124. package/dist/utils/api-client.d.ts.map +1 -0
  125. package/dist/utils/api-client.js +226 -0
  126. package/dist/utils/api-client.js.map +1 -0
  127. package/dist/utils/type-guards.d.ts +9 -0
  128. package/dist/utils/type-guards.d.ts.map +1 -0
  129. package/dist/utils/type-guards.js +21 -0
  130. package/dist/utils/type-guards.js.map +1 -0
  131. package/package.json +60 -0
@@ -0,0 +1,44 @@
1
+ export class BaseTransformer {
2
+ tenantId;
3
+ constructor(tenantId = 'default-workspace') {
4
+ this.tenantId = tenantId;
5
+ }
6
+ setTenantId(tenantId) {
7
+ this.tenantId = tenantId;
8
+ }
9
+ now() {
10
+ return new Date().toISOString();
11
+ }
12
+ ensureArray(data) {
13
+ if (!data) {
14
+ return [];
15
+ }
16
+ return Array.isArray(data) ? data : [data];
17
+ }
18
+ valueOrUndefined(value) {
19
+ return value ?? undefined;
20
+ }
21
+ composeName(firstName, lastName) {
22
+ const parts = [firstName, lastName]
23
+ .filter((value) => Boolean(value && value.trim()))
24
+ .map((value) => value.trim());
25
+ return parts.length ? parts.join(' ') : undefined;
26
+ }
27
+ splitName(name) {
28
+ if (!name) {
29
+ return {};
30
+ }
31
+ const parts = name.trim().split(/\s+/);
32
+ if (!parts.length) {
33
+ return {};
34
+ }
35
+ if (parts.length === 1) {
36
+ return { firstName: parts[0] };
37
+ }
38
+ return {
39
+ firstName: parts.shift(),
40
+ lastName: parts.join(' '),
41
+ };
42
+ }
43
+ }
44
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/transformers/base.ts"],"names":[],"mappings":"AAIA,MAAM,OAAgB,eAAe;IACzB,QAAQ,CAAS;IAE3B,YAAY,WAAmB,mBAAmB;QAChD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,WAAW,CAAC,QAAgB;QAC1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAES,GAAG;QACX,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAClC,CAAC;IAES,WAAW,CAAI,IAAgC;QACvD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAES,gBAAgB,CAAI,KAA2B;QACvD,OAAO,KAAK,IAAI,SAAS,CAAC;IAC5B,CAAC;IAES,WAAW,CAAC,SAAyB,EAAE,QAAwB;QACvE,MAAM,KAAK,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC;aAChC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;aAClE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAEhC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACpD,CAAC;IAES,SAAS,CAAC,IAAoB;QACtC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAClB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,CAAC;QAED,OAAO;YACL,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE;YACxB,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;SAC1B,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,16 @@
1
+ import type { Customer } from '@virtocommerce/cof-mcp';
2
+ import type { YourFulfillmentCustomer } from '../types.js';
3
+ import type { CustomerOrder, Contact } from '../models/index.js';
4
+ import { BaseTransformer } from './base.js';
5
+ export declare class CustomerTransformer extends BaseTransformer {
6
+ private addressTransformer;
7
+ constructor(tenantId?: string);
8
+ setTenantId(tenantId: string): void;
9
+ fromContact(contact: Contact): Customer;
10
+ toMcpCustomer(customer: YourFulfillmentCustomer): Customer;
11
+ fromOrder(order: CustomerOrder): Customer;
12
+ toMcpCustomers(customers: YourFulfillmentCustomer[]): Customer[];
13
+ fromContacts(contacts: Contact[]): Customer[];
14
+ private extractCustomFields;
15
+ }
16
+ //# sourceMappingURL=customer.transformer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"customer.transformer.d.ts","sourceRoot":"","sources":["../../src/transformers/customer.transformer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAW,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAG5C,qBAAa,mBAAoB,SAAQ,eAAe;IACtD,OAAO,CAAC,kBAAkB,CAAqB;gBAEnC,QAAQ,GAAE,MAA4B;IAKzC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQ5C,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ;IAiCvC,aAAa,CAAC,QAAQ,EAAE,uBAAuB,GAAG,QAAQ;IAmB1D,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,QAAQ;IAsBzC,cAAc,CAAC,SAAS,EAAE,uBAAuB,EAAE,GAAG,QAAQ,EAAE;IAOhE,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,QAAQ,EAAE;IAO7C,OAAO,CAAC,mBAAmB;CAc5B"}
@@ -0,0 +1,84 @@
1
+ import { BaseTransformer } from './base.js';
2
+ import { AddressTransformer } from './address.transformer.js';
3
+ export class CustomerTransformer extends BaseTransformer {
4
+ addressTransformer;
5
+ constructor(tenantId = 'default-workspace') {
6
+ super(tenantId);
7
+ this.addressTransformer = new AddressTransformer(tenantId);
8
+ }
9
+ setTenantId(tenantId) {
10
+ super.setTenantId(tenantId);
11
+ this.addressTransformer.setTenantId(tenantId);
12
+ }
13
+ fromContact(contact) {
14
+ const primaryEmail = contact.emails?.[0];
15
+ const primaryPhone = contact.phones?.[0];
16
+ const addresses = this.addressTransformer.toCustomerAddresses(contact.addresses);
17
+ return {
18
+ id: contact.id ?? '',
19
+ externalId: contact.outerId,
20
+ firstName: contact.firstName ?? '',
21
+ lastName: contact.lastName ?? '',
22
+ email: primaryEmail,
23
+ phone: primaryPhone,
24
+ addresses,
25
+ tags: contact.groups,
26
+ createdAt: contact.createdDate ?? this.now(),
27
+ updatedAt: contact.modifiedDate ?? this.now(),
28
+ tenantId: this.tenantId,
29
+ status: contact.status ?? 'active',
30
+ type: 'customer',
31
+ customFields: this.extractCustomFields(contact),
32
+ };
33
+ }
34
+ toMcpCustomer(customer) {
35
+ return {
36
+ id: customer.id,
37
+ firstName: customer.first_name,
38
+ lastName: customer.last_name,
39
+ phone: customer.phone,
40
+ addresses: this.addressTransformer.toCustomerAddresses(customer.addresses),
41
+ tags: customer.tags,
42
+ createdAt: customer.created_at ?? this.now(),
43
+ updatedAt: customer.updated_at ?? this.now(),
44
+ tenantId: this.tenantId,
45
+ status: 'active',
46
+ type: 'customer',
47
+ };
48
+ }
49
+ fromOrder(order) {
50
+ return {
51
+ id: order.customerId ?? '',
52
+ firstName: '',
53
+ lastName: order.customerName ?? '',
54
+ email: undefined,
55
+ phone: undefined,
56
+ addresses: this.addressTransformer.toCustomerAddresses(order.addresses),
57
+ tags: [],
58
+ createdAt: order.createdDate ?? this.now(),
59
+ updatedAt: order.modifiedDate ?? this.now(),
60
+ tenantId: this.tenantId,
61
+ status: 'active',
62
+ type: 'customer',
63
+ };
64
+ }
65
+ toMcpCustomers(customers) {
66
+ return customers.map((customer) => this.toMcpCustomer(customer));
67
+ }
68
+ fromContacts(contacts) {
69
+ return contacts.map((contact) => this.fromContact(contact));
70
+ }
71
+ extractCustomFields(contact) {
72
+ if (!contact.dynamicProperties?.length) {
73
+ return undefined;
74
+ }
75
+ const fields = contact.dynamicProperties
76
+ .filter((prop) => prop.values?.length)
77
+ .map((prop) => ({
78
+ name: prop.name ?? '',
79
+ value: String(prop.values?.[0]?.value ?? ''),
80
+ }));
81
+ return fields.length ? fields : undefined;
82
+ }
83
+ }
84
+ //# sourceMappingURL=customer.transformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"customer.transformer.js","sourceRoot":"","sources":["../../src/transformers/customer.transformer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { Fulfillment, FulfillOrderInput } from '@virtocommerce/cof-mcp';
2
+ import type { Shipment, LineItem } from '../models/index.js';
3
+ import { BaseTransformer } from './base.js';
4
+ export declare class FulfillmentTransformer extends BaseTransformer {
5
+ private addressTransformer;
6
+ constructor(tenantId?: string);
7
+ setTenantId(tenantId: string): void;
8
+ fromShipment(shipment: Shipment): Fulfillment;
9
+ fromShipments(shipments: Shipment[]): Fulfillment[];
10
+ fromFulfillOrderInput(input: FulfillOrderInput, orderItems?: LineItem[], orderCurrency?: string): Shipment;
11
+ private mapShipmentStatus;
12
+ }
13
+ //# sourceMappingURL=fulfillment.transformer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fulfillment.transformer.d.ts","sourceRoot":"","sources":["../../src/transformers/fulfillment.transformer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,KAAK,EAAE,QAAQ,EAAgB,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAiB5C,qBAAa,sBAAuB,SAAQ,eAAe;IACzD,OAAO,CAAC,kBAAkB,CAAqB;gBAEnC,QAAQ,GAAE,MAA4B;IAKzC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQ5C,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,WAAW;IAkC7C,aAAa,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE;IAOnD,qBAAqB,CAAC,KAAK,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAE,QAAQ,EAAE,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,QAAQ;IAqC1G,OAAO,CAAC,iBAAiB;CAM1B"}
@@ -0,0 +1,93 @@
1
+ import { BaseTransformer } from './base.js';
2
+ import { AddressTransformer } from './address.transformer.js';
3
+ const SHIPMENT_STATUS_MAP = {
4
+ New: 'pending',
5
+ PickPack: 'processing',
6
+ ReadyToSend: 'ready_to_send',
7
+ Sent: 'shipped',
8
+ Cancelled: 'cancelled',
9
+ Shipped: 'shipped',
10
+ Delivered: 'delivered',
11
+ OnHold: 'on_hold',
12
+ PartiallyShipped: 'partially_shipped',
13
+ };
14
+ ;
15
+ export class FulfillmentTransformer extends BaseTransformer {
16
+ addressTransformer;
17
+ constructor(tenantId = 'default-workspace') {
18
+ super(tenantId);
19
+ this.addressTransformer = new AddressTransformer(tenantId);
20
+ }
21
+ setTenantId(tenantId) {
22
+ super.setTenantId(tenantId);
23
+ this.addressTransformer.setTenantId(tenantId);
24
+ }
25
+ fromShipment(shipment) {
26
+ const trackingNumbers = shipment.trackingNumber ? [shipment.trackingNumber] : [];
27
+ const lineItems = (shipment.items ?? []).map((item, index) => ({
28
+ id: item.id ?? item.lineItemId ?? `${shipment.id}-item-${index}`,
29
+ sku: item.lineItem?.sku ?? '',
30
+ quantity: item.quantity ?? 0,
31
+ name: item.lineItem?.name,
32
+ }));
33
+ return {
34
+ id: shipment.id ?? '',
35
+ externalId: shipment.outerId,
36
+ orderId: shipment.customerOrderId ?? shipment.customerOrder?.id ?? '',
37
+ status: this.mapShipmentStatus(shipment.status),
38
+ trackingNumbers,
39
+ lineItems,
40
+ locationId: shipment.fulfillmentCenterId,
41
+ shippingAddress: this.addressTransformer.toMcpAddress(shipment.deliveryAddress),
42
+ shippingCarrier: shipment.shippingMethod?.name ?? shipment.shipmentMethodCode,
43
+ shippingClass: shipment.shipmentMethodOption,
44
+ shippingCode: shipment.shipmentMethodCode,
45
+ shippingPrice: shipment.price,
46
+ shippingNote: shipment.comment,
47
+ expectedDeliveryDate: shipment.deliveryDate,
48
+ createdAt: shipment.createdDate ?? this.now(),
49
+ updatedAt: shipment.modifiedDate ?? this.now(),
50
+ tenantId: this.tenantId,
51
+ };
52
+ }
53
+ fromShipments(shipments) {
54
+ return shipments.map((shipment) => this.fromShipment(shipment));
55
+ }
56
+ fromFulfillOrderInput(input, orderItems, orderCurrency) {
57
+ const shipmentItems = [];
58
+ for (const inputItem of input.lineItems ?? []) {
59
+ const matchedLineItem = orderItems?.find((li) => li.sku === inputItem.sku);
60
+ if (matchedLineItem?.id) {
61
+ shipmentItems.push({
62
+ lineItemId: matchedLineItem.id,
63
+ quantity: inputItem.quantity ?? matchedLineItem.quantity ?? 0,
64
+ });
65
+ }
66
+ }
67
+ const commentParts = [input.giftNote, input.shippingNote].filter(Boolean);
68
+ const comment = commentParts.length > 0
69
+ ? commentParts.join('\n').slice(0, 2048)
70
+ : undefined;
71
+ return {
72
+ trackingNumber: input.trackingNumbers?.[0],
73
+ shipmentMethodCode: input.shippingCarrier,
74
+ shipmentMethodOption: input.shippingClass,
75
+ fulfillmentCenterId: input.locationId,
76
+ deliveryDate: input.expectedDeliveryDate,
77
+ deliveryAddress: input.shippingAddress
78
+ ? this.addressTransformer.toVirtoAddress(input.shippingAddress, 'Shipping')
79
+ : undefined,
80
+ items: shipmentItems,
81
+ comment,
82
+ currency: orderCurrency,
83
+ price: input.shippingPrice,
84
+ };
85
+ }
86
+ mapShipmentStatus(status) {
87
+ if (!status) {
88
+ return 'pending';
89
+ }
90
+ return SHIPMENT_STATUS_MAP[status] ?? status;
91
+ }
92
+ }
93
+ //# sourceMappingURL=fulfillment.transformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fulfillment.transformer.js","sourceRoot":"","sources":["../../src/transformers/fulfillment.transformer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export { BaseTransformer } from './base.js';
2
+ export { AddressTransformer } from './address.transformer.js';
3
+ export { CustomerTransformer } from './customer.transformer.js';
4
+ export { OrderTransformer } from './order.transformer.js';
5
+ export { FulfillmentTransformer } from './fulfillment.transformer.js';
6
+ export { ProductTransformer } from './product.transformer.js';
7
+ export { ReturnTransformer } from './return.transformer.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transformers/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,8 @@
1
+ export { BaseTransformer } from './base.js';
2
+ export { AddressTransformer } from './address.transformer.js';
3
+ export { CustomerTransformer } from './customer.transformer.js';
4
+ export { OrderTransformer } from './order.transformer.js';
5
+ export { FulfillmentTransformer } from './fulfillment.transformer.js';
6
+ export { ProductTransformer } from './product.transformer.js';
7
+ export { ReturnTransformer } from './return.transformer.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transformers/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { Order, CreateSalesOrderInput, UpdateOrderInput } from '@virtocommerce/cof-mcp';
2
+ import type { CustomerOrder, Contact } from '../models/index.js';
3
+ import { BaseTransformer } from './base.js';
4
+ export declare class OrderTransformer extends BaseTransformer {
5
+ private addressTransformer;
6
+ private customerTransformer;
7
+ private workspace?;
8
+ private catalogId?;
9
+ constructor(tenantId?: string, workspace?: string);
10
+ setTenantId(tenantId: string): void;
11
+ setWorkspace(workspace: string): void;
12
+ setCatalogId(catalogId: string): void;
13
+ toMcpOrder(order: CustomerOrder, contact?: Contact): Order;
14
+ toMcpOrders(orders: CustomerOrder[], customerMap?: Map<string, Contact>): Order[];
15
+ fromCreateSalesOrderInput(input: CreateSalesOrderInput, skuProductMap?: Map<string, {
16
+ id: string;
17
+ name: string;
18
+ }>): CustomerOrder;
19
+ applyUpdatesToOrder(order: CustomerOrder, updates: UpdateOrderInput['updates']): CustomerOrder;
20
+ private upsertAddress;
21
+ private toOrderLineItem;
22
+ private transformDynamicProperties;
23
+ private mapOrderStatus;
24
+ private reverseMapStatus;
25
+ }
26
+ //# sourceMappingURL=order.transformer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"order.transformer.d.ts","sourceRoot":"","sources":["../../src/transformers/order.transformer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,KAAK,EAIL,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,aAAa,EAA6C,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC5G,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAI5C,qBAAa,gBAAiB,SAAQ,eAAe;IACnD,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,mBAAmB,CAAsB;IACjD,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAC,CAAS;gBAEf,QAAQ,GAAE,MAA4B,EAAE,SAAS,CAAC,EAAE,MAAM;IAO7D,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAM5C,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIrC,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IASrC,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,KAAK;IAoC1D,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,KAAK,EAAE;IAUjF,yBAAyB,CACvB,KAAK,EAAE,qBAAqB,EAC5B,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,GACxD,aAAa;IAwEhB,mBAAmB,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC,GAAG,aAAa;IA4D9F,OAAO,CAAC,aAAa;IAmBrB,OAAO,CAAC,eAAe;IAkBvB,OAAO,CAAC,0BAA0B;IAoBlC,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,gBAAgB;CAGzB"}
@@ -0,0 +1,201 @@
1
+ import { STATUS_MAP, REVERSE_STATUS_MAP } from '../types.js';
2
+ import { BaseTransformer } from './base.js';
3
+ import { AddressTransformer } from './address.transformer.js';
4
+ import { CustomerTransformer } from './customer.transformer.js';
5
+ export class OrderTransformer extends BaseTransformer {
6
+ addressTransformer;
7
+ customerTransformer;
8
+ workspace;
9
+ catalogId;
10
+ constructor(tenantId = 'default-workspace', workspace) {
11
+ super(tenantId);
12
+ this.workspace = workspace;
13
+ this.addressTransformer = new AddressTransformer(tenantId);
14
+ this.customerTransformer = new CustomerTransformer(tenantId);
15
+ }
16
+ setTenantId(tenantId) {
17
+ super.setTenantId(tenantId);
18
+ this.addressTransformer.setTenantId(tenantId);
19
+ this.customerTransformer.setTenantId(tenantId);
20
+ }
21
+ setWorkspace(workspace) {
22
+ this.workspace = workspace;
23
+ }
24
+ setCatalogId(catalogId) {
25
+ this.catalogId = catalogId;
26
+ }
27
+ toMcpOrder(order, contact) {
28
+ const shippingAddress = order.shipments
29
+ ?.map((x) => x.deliveryAddress)
30
+ .find((x) => x);
31
+ const orderId = order.id ?? '';
32
+ const customer = contact
33
+ ? this.customerTransformer.fromContact(contact)
34
+ : this.customerTransformer.fromOrder(order);
35
+ return {
36
+ id: orderId,
37
+ externalId: order.outerId,
38
+ name: order.number ?? '',
39
+ status: this.mapOrderStatus(order.status ?? ''),
40
+ totalPrice: order.total,
41
+ currency: order.currency,
42
+ customer,
43
+ shippingAddress: this.addressTransformer.toMcpAddress(shippingAddress),
44
+ billingAddress: this.addressTransformer.toMcpAddress(order.addresses?.[0]),
45
+ lineItems: order.items?.map((item, index) => this.toOrderLineItem(orderId, item, index)) ?? [],
46
+ createdAt: order.createdDate ?? this.now(),
47
+ updatedAt: order.modifiedDate ?? this.now(),
48
+ tenantId: this.tenantId,
49
+ customFields: this.transformDynamicProperties(order.dynamicProperties),
50
+ orderNote: order.comment,
51
+ };
52
+ }
53
+ toMcpOrders(orders, customerMap) {
54
+ return orders.map((order) => {
55
+ const contact = order.customerId ? customerMap?.get(order.customerId) : undefined;
56
+ return this.toMcpOrder(order, contact);
57
+ });
58
+ }
59
+ fromCreateSalesOrderInput(input, skuProductMap) {
60
+ const order = input.order;
61
+ if (!order) {
62
+ return {};
63
+ }
64
+ const currency = order.currency ?? 'USD';
65
+ const addresses = [
66
+ order.shippingAddress
67
+ ? this.addressTransformer.toVirtoAddress(order.shippingAddress, 'Shipping')
68
+ : undefined,
69
+ order.billingAddress
70
+ ? this.addressTransformer.toVirtoAddress(order.billingAddress, 'Billing')
71
+ : undefined,
72
+ ].filter((a) => a !== undefined);
73
+ const items = order.lineItems?.map((item) => {
74
+ const resolved = skuProductMap?.get(item.sku);
75
+ return {
76
+ productId: resolved?.id,
77
+ sku: item.sku,
78
+ name: item.name ?? resolved?.name ?? item.sku,
79
+ quantity: item.quantity ?? 0,
80
+ price: item.unitPrice ?? 0,
81
+ placedPrice: item.unitPrice ?? 0,
82
+ currency,
83
+ catalogId: this.catalogId,
84
+ };
85
+ }) ?? [];
86
+ const shipments = order.shippingAddress
87
+ ? [
88
+ {
89
+ deliveryAddress: this.addressTransformer.toVirtoAddress(order.shippingAddress, 'Shipping'),
90
+ currency,
91
+ },
92
+ ]
93
+ : [];
94
+ const customerName = order.customer
95
+ ? [order.customer.firstName, order.customer.lastName].filter(Boolean).join(' ')
96
+ || order.customer.email
97
+ || order.customer.id
98
+ || order.customer.externalId
99
+ : undefined;
100
+ return {
101
+ outerId: order.externalId,
102
+ number: order.name ?? order.externalId ?? `ORD-${Date.now()}`,
103
+ status: order.status ? this.reverseMapStatus(order.status) : 'New',
104
+ currency,
105
+ total: order.totalPrice,
106
+ subTotal: order.subTotalPrice,
107
+ customerId: order.customer?.id ?? order.customer?.externalId,
108
+ customerName,
109
+ storeId: this.workspace,
110
+ comment: order.orderNote,
111
+ items,
112
+ addresses: addresses.length ? addresses : undefined,
113
+ shipments: shipments.length ? shipments : undefined,
114
+ };
115
+ }
116
+ applyUpdatesToOrder(order, updates) {
117
+ const updated = { ...order };
118
+ const status = this.valueOrUndefined(updates.status);
119
+ if (status) {
120
+ updated.status = this.reverseMapStatus(status);
121
+ }
122
+ const orderNote = this.valueOrUndefined(updates.orderNote);
123
+ if (orderNote !== undefined) {
124
+ updated.comment = orderNote.slice(0, 2048);
125
+ }
126
+ const shippingAddress = this.valueOrUndefined(updates.shippingAddress);
127
+ if (shippingAddress) {
128
+ const virtoShipping = this.addressTransformer.toVirtoAddress(shippingAddress, 'Shipping');
129
+ if (updated.shipments?.length) {
130
+ updated.shipments = updated.shipments.map((s, i) => i === 0 ? { ...s, deliveryAddress: virtoShipping } : s);
131
+ }
132
+ this.upsertAddress(updated, virtoShipping, 'Shipping');
133
+ }
134
+ const billingAddress = this.valueOrUndefined(updates.billingAddress);
135
+ if (billingAddress) {
136
+ const virtoBilling = this.addressTransformer.toVirtoAddress(billingAddress, 'Billing');
137
+ this.upsertAddress(updated, virtoBilling, 'Billing');
138
+ }
139
+ const lineItems = this.valueOrUndefined(updates.lineItems);
140
+ if (lineItems?.length) {
141
+ updated.items = (updated.items ?? []).map((item) => {
142
+ const patch = lineItems.find((li) => li.sku === item.sku);
143
+ if (!patch) {
144
+ return item;
145
+ }
146
+ return {
147
+ ...item,
148
+ quantity: patch.quantity ?? item.quantity,
149
+ price: patch.unitPrice ?? item.price,
150
+ placedPrice: patch.unitPrice ?? item.placedPrice,
151
+ name: patch.name ?? item.name,
152
+ };
153
+ });
154
+ }
155
+ return updated;
156
+ }
157
+ upsertAddress(order, address, type) {
158
+ if (!order.addresses) {
159
+ order.addresses = [];
160
+ }
161
+ const idx = order.addresses.findIndex((a) => a.addressType === type);
162
+ if (idx >= 0) {
163
+ order.addresses[idx] = address;
164
+ }
165
+ else {
166
+ order.addresses.push(address);
167
+ }
168
+ }
169
+ toOrderLineItem(orderId, item, index) {
170
+ const sku = item.sku ?? '';
171
+ const quantity = item.quantity ?? 0;
172
+ const price = item.price ?? 0;
173
+ return {
174
+ id: item.id ?? `${orderId}-${sku}-${index}`,
175
+ sku,
176
+ quantity,
177
+ unitPrice: price,
178
+ totalPrice: item.extendedPrice ?? price * quantity,
179
+ name: item.name ?? '',
180
+ };
181
+ }
182
+ transformDynamicProperties(properties) {
183
+ if (!properties?.length) {
184
+ return undefined;
185
+ }
186
+ const entries = properties
187
+ .filter((prop) => prop.values?.length)
188
+ .map((prop) => ({
189
+ name: prop.name ?? '',
190
+ value: String(prop.values?.[0]?.value ?? ''),
191
+ }));
192
+ return entries.length ? entries : undefined;
193
+ }
194
+ mapOrderStatus(status) {
195
+ return STATUS_MAP[status] ?? status;
196
+ }
197
+ reverseMapStatus(status) {
198
+ return REVERSE_STATUS_MAP[status] ?? status;
199
+ }
200
+ }
201
+ //# sourceMappingURL=order.transformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"order.transformer.js","sourceRoot":"","sources":["../../src/transformers/order.transformer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { Product, ProductVariant, InventoryItem } from '@virtocommerce/cof-mcp';
2
+ import type { CatalogProduct, InventoryInfo } from '../models/index.js';
3
+ import { BaseTransformer } from './base.js';
4
+ export declare class ProductTransformer extends BaseTransformer {
5
+ fromCatalogProduct(product: CatalogProduct): Product;
6
+ fromCatalogProducts(products: CatalogProduct[]): Product[];
7
+ fromCatalogProductVariant(variation: CatalogProduct, parentProduct?: CatalogProduct): ProductVariant;
8
+ fromCatalogProductVariants(products: CatalogProduct[]): ProductVariant[];
9
+ private extractSelectedOptions;
10
+ private extractWeight;
11
+ private extractDimensions;
12
+ fromInventoryInfo(info: InventoryInfo, sku: string): InventoryItem;
13
+ fromInventoryInfos(records: InventoryInfo[], skuMap: Map<string, string>): InventoryItem[];
14
+ private mapProductStatus;
15
+ private extractOptions;
16
+ private extractTags;
17
+ private extractCustomFields;
18
+ }
19
+ //# sourceMappingURL=product.transformer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"product.transformer.d.ts","sourceRoot":"","sources":["../../src/transformers/product.transformer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACrF,OAAO,KAAK,EAAE,cAAc,EAAmB,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACzF,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C,qBAAa,kBAAmB,SAAQ,eAAe;IAIrD,kBAAkB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO;IAoCpD,mBAAmB,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,OAAO,EAAE;IAO1D,yBAAyB,CAAC,SAAS,EAAE,cAAc,EAAE,aAAa,CAAC,EAAE,cAAc,GAAG,cAAc;IAwCpG,0BAA0B,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE;IAaxE,OAAO,CAAC,sBAAsB;IAqB9B,OAAO,CAAC,aAAa;IAuBrB,OAAO,CAAC,iBAAiB;IA6BzB,iBAAiB,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa;IAsBlE,kBAAkB,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,aAAa,EAAE;IAe1F,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,cAAc;IAkCtB,OAAO,CAAC,WAAW;IAsBnB,OAAO,CAAC,mBAAmB;CAiB5B"}