@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.
- package/LICENSE +22 -0
- package/README.md +360 -0
- package/dist/adapter.d.ts +53 -0
- package/dist/adapter.d.ts.map +1 -0
- package/dist/adapter.js +205 -0
- package/dist/adapter.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/mappers/filter.mappers.d.ts +16 -0
- package/dist/mappers/filter.mappers.d.ts.map +1 -0
- package/dist/mappers/filter.mappers.js +209 -0
- package/dist/mappers/filter.mappers.js.map +1 -0
- package/dist/mappers/index.d.ts +2 -0
- package/dist/mappers/index.d.ts.map +1 -0
- package/dist/mappers/index.js +2 -0
- package/dist/mappers/index.js.map +1 -0
- package/dist/models/base.d.ts +133 -0
- package/dist/models/base.d.ts.map +1 -0
- package/dist/models/base.js +2 -0
- package/dist/models/base.js.map +1 -0
- package/dist/models/catalog.d.ts +180 -0
- package/dist/models/catalog.d.ts.map +1 -0
- package/dist/models/catalog.js +2 -0
- package/dist/models/catalog.js.map +1 -0
- package/dist/models/customer.d.ts +148 -0
- package/dist/models/customer.d.ts.map +1 -0
- package/dist/models/customer.js +2 -0
- package/dist/models/customer.js.map +1 -0
- package/dist/models/index.d.ts +10 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/index.js +2 -0
- package/dist/models/index.js.map +1 -0
- package/dist/models/inventory.d.ts +34 -0
- package/dist/models/inventory.d.ts.map +1 -0
- package/dist/models/inventory.js +2 -0
- package/dist/models/inventory.js.map +1 -0
- package/dist/models/order.d.ts +158 -0
- package/dist/models/order.d.ts.map +1 -0
- package/dist/models/order.js +2 -0
- package/dist/models/order.js.map +1 -0
- package/dist/models/payment.d.ts +145 -0
- package/dist/models/payment.d.ts.map +1 -0
- package/dist/models/payment.js +2 -0
- package/dist/models/payment.js.map +1 -0
- package/dist/models/return.d.ts +31 -0
- package/dist/models/return.d.ts.map +1 -0
- package/dist/models/return.js +2 -0
- package/dist/models/return.js.map +1 -0
- package/dist/models/search.d.ts +143 -0
- package/dist/models/search.d.ts.map +1 -0
- package/dist/models/search.js +2 -0
- package/dist/models/search.js.map +1 -0
- package/dist/models/shipment.d.ts +70 -0
- package/dist/models/shipment.d.ts.map +1 -0
- package/dist/models/shipment.js +2 -0
- package/dist/models/shipment.js.map +1 -0
- package/dist/services/base.service.d.ts +10 -0
- package/dist/services/base.service.d.ts.map +1 -0
- package/dist/services/base.service.js +25 -0
- package/dist/services/base.service.js.map +1 -0
- package/dist/services/customer.service.d.ts +16 -0
- package/dist/services/customer.service.d.ts.map +1 -0
- package/dist/services/customer.service.js +78 -0
- package/dist/services/customer.service.js.map +1 -0
- package/dist/services/fulfillment.service.d.ts +17 -0
- package/dist/services/fulfillment.service.d.ts.map +1 -0
- package/dist/services/fulfillment.service.js +94 -0
- package/dist/services/fulfillment.service.js.map +1 -0
- package/dist/services/index.d.ts +7 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +7 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/order.service.d.ts +22 -0
- package/dist/services/order.service.d.ts.map +1 -0
- package/dist/services/order.service.js +153 -0
- package/dist/services/order.service.js.map +1 -0
- package/dist/services/product.service.d.ts +25 -0
- package/dist/services/product.service.d.ts.map +1 -0
- package/dist/services/product.service.js +116 -0
- package/dist/services/product.service.js.map +1 -0
- package/dist/services/return.service.d.ts +17 -0
- package/dist/services/return.service.d.ts.map +1 -0
- package/dist/services/return.service.js +148 -0
- package/dist/services/return.service.js.map +1 -0
- package/dist/transformers/address.transformer.d.ts +11 -0
- package/dist/transformers/address.transformer.d.ts.map +1 -0
- package/dist/transformers/address.transformer.js +75 -0
- package/dist/transformers/address.transformer.js.map +1 -0
- package/dist/transformers/base.d.ts +14 -0
- package/dist/transformers/base.d.ts.map +1 -0
- package/dist/transformers/base.js +44 -0
- package/dist/transformers/base.js.map +1 -0
- package/dist/transformers/customer.transformer.d.ts +16 -0
- package/dist/transformers/customer.transformer.d.ts.map +1 -0
- package/dist/transformers/customer.transformer.js +84 -0
- package/dist/transformers/customer.transformer.js.map +1 -0
- package/dist/transformers/fulfillment.transformer.d.ts +13 -0
- package/dist/transformers/fulfillment.transformer.d.ts.map +1 -0
- package/dist/transformers/fulfillment.transformer.js +93 -0
- package/dist/transformers/fulfillment.transformer.js.map +1 -0
- package/dist/transformers/index.d.ts +8 -0
- package/dist/transformers/index.d.ts.map +1 -0
- package/dist/transformers/index.js +8 -0
- package/dist/transformers/index.js.map +1 -0
- package/dist/transformers/order.transformer.d.ts +26 -0
- package/dist/transformers/order.transformer.d.ts.map +1 -0
- package/dist/transformers/order.transformer.js +201 -0
- package/dist/transformers/order.transformer.js.map +1 -0
- package/dist/transformers/product.transformer.d.ts +19 -0
- package/dist/transformers/product.transformer.d.ts.map +1 -0
- package/dist/transformers/product.transformer.js +202 -0
- package/dist/transformers/product.transformer.js.map +1 -0
- package/dist/transformers/return.transformer.d.ts +12 -0
- package/dist/transformers/return.transformer.d.ts.map +1 -0
- package/dist/transformers/return.transformer.js +83 -0
- package/dist/transformers/return.transformer.js.map +1 -0
- package/dist/types.d.ts +135 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +47 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/api-client.d.ts +31 -0
- package/dist/utils/api-client.d.ts.map +1 -0
- package/dist/utils/api-client.js +226 -0
- package/dist/utils/api-client.js.map +1 -0
- package/dist/utils/type-guards.d.ts +9 -0
- package/dist/utils/type-guards.d.ts.map +1 -0
- package/dist/utils/type-guards.js +21 -0
- package/dist/utils/type-guards.js.map +1 -0
- 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":"AAOA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,MAAM,OAAO,mBAAoB,SAAQ,eAAe;IAC9C,kBAAkB,CAAqB;IAE/C,YAAY,WAAmB,mBAAmB;QAChD,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,IAAI,CAAC,kBAAkB,GAAG,IAAI,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC7D,CAAC;IAEQ,WAAW,CAAC,QAAgB;QACnC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC5B,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IAKD,WAAW,CAAC,OAAgB;QAE1B,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;QAGzC,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;QAGzC,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAC3D,OAAO,CAAC,SAAkC,CAC3C,CAAC;QAEF,OAAO;YACL,EAAE,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE;YACpB,UAAU,EAAE,OAAO,CAAC,OAAO;YAC3B,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;YAClC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE;YAChC,KAAK,EAAE,YAAY;YACnB,KAAK,EAAE,YAAY;YACnB,SAAS;YACT,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,SAAS,EAAE,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,EAAE;YAC5C,SAAS,EAAE,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,GAAG,EAAE;YAC7C,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,QAAQ;YAClC,IAAI,EAAE,UAAU;YAChB,YAAY,EAAE,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;SAChD,CAAC;IACJ,CAAC;IAKD,aAAa,CAAC,QAAiC;QAC7C,OAAO;YACL,EAAE,EAAE,QAAQ,CAAC,EAAE;YACf,SAAS,EAAE,QAAQ,CAAC,UAAU;YAC9B,QAAQ,EAAE,QAAQ,CAAC,SAAS;YAC5B,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,QAAQ,CAAC,SAAgB,CAAC;YACjF,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,SAAS,EAAE,QAAQ,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE;YAC5C,SAAS,EAAE,QAAQ,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE;YAC5C,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,UAAU;SACjB,CAAC;IACJ,CAAC;IAKD,SAAS,CAAC,KAAoB;QAC5B,OAAO;YACL,EAAE,EAAE,KAAK,CAAC,UAAU,IAAI,EAAE;YAC1B,SAAS,EAAE,EAAE;YACb,QAAQ,EAAE,KAAK,CAAC,YAAY,IAAI,EAAE;YAClC,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,SAAS;YAChB,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CACpD,KAAK,CAAC,SAAkC,CACzC;YACD,IAAI,EAAE,EAAE;YACR,SAAS,EAAE,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,EAAE;YAC1C,SAAS,EAAE,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,GAAG,EAAE;YAC3C,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,UAAU;SACjB,CAAC;IACJ,CAAC;IAKD,cAAc,CAAC,SAAoC;QACjD,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnE,CAAC;IAKD,YAAY,CAAC,QAAmB;QAC9B,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9D,CAAC;IAKO,mBAAmB,CAAC,OAAgB;QAC1C,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,MAAM,EAAE,CAAC;YACvC,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,iBAAiB;aACrC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;aACrC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACd,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;YACrB,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;SAC7C,CAAC,CAAC,CAAC;QAEN,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5C,CAAC;CACF"}
|
|
@@ -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"}
|