@things-factory/integration-sellercraft 9.0.0-beta.8 → 9.0.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/dist-server/controllers/sellercraft/apis/add-inbound-order.js +5 -2
- package/dist-server/controllers/sellercraft/apis/add-inbound-order.js.map +1 -1
- package/dist-server/controllers/sellercraft/apis/echo.js +3 -3
- package/dist-server/controllers/sellercraft/apis/echo.js.map +1 -1
- package/dist-server/controllers/sellercraft/sellercraft.d.ts +1 -1
- package/dist-server/controllers/sellercraft/sellercraft.js +3 -1
- package/dist-server/controllers/sellercraft/sellercraft.js.map +1 -1
- package/dist-server/controllers/sellercraft-api/decorators.js +2 -2
- package/dist-server/controllers/sellercraft-api/decorators.js.map +1 -1
- package/dist-server/controllers/sellercraft-api/index.js +1 -1
- package/dist-server/controllers/sellercraft-api/index.js.map +1 -1
- package/dist-server/controllers/sellercraft-channel-integration/apis/echo.js +3 -3
- package/dist-server/controllers/sellercraft-channel-integration/apis/echo.js.map +1 -1
- package/dist-server/controllers/sellercraft-channel-integration/apis/ingest-channel-order-package.js +1 -1
- package/dist-server/controllers/sellercraft-channel-integration/apis/ingest-channel-order-package.js.map +1 -1
- package/dist-server/controllers/sellercraft-channel-integration/apis/ingest-channel-order.js +5 -5
- package/dist-server/controllers/sellercraft-channel-integration/apis/ingest-channel-order.js.map +1 -1
- package/dist-server/controllers/sellercraft-channel-integration/apis/ingest-channel-product.js +23 -19
- package/dist-server/controllers/sellercraft-channel-integration/apis/ingest-channel-product.js.map +1 -1
- package/dist-server/controllers/sellercraft-channel-integration/sellercraft-channel-integration.d.ts +1 -1
- package/dist-server/controllers/sellercraft-channel-integration/sellercraft-channel-integration.js +4 -3
- package/dist-server/controllers/sellercraft-channel-integration/sellercraft-channel-integration.js.map +1 -1
- package/dist-server/controllers/sellercraft-channel-integration-api/index.js +1 -1
- package/dist-server/controllers/sellercraft-channel-integration-api/index.js.map +1 -1
- package/dist-server/routers/sellercraft-router.js +21 -23
- package/dist-server/routers/sellercraft-router.js.map +1 -1
- package/dist-server/service/marketplace-channel/marketplace-channel-order-mutation.js +22 -21
- package/dist-server/service/marketplace-channel/marketplace-channel-order-mutation.js.map +1 -1
- package/dist-server/service/marketplace-channel/marketplace-channel-product-mutation.js +9 -11
- package/dist-server/service/marketplace-channel/marketplace-channel-product-mutation.js.map +1 -1
- package/dist-server/service/sellercraft/sellercraft-mutation.js +33 -7
- package/dist-server/service/sellercraft/sellercraft-mutation.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/dist-server/utils/tokencraft-util.js +12 -11
- package/dist-server/utils/tokencraft-util.js.map +1 -1
- package/package.json +14 -14
@@ -22,7 +22,7 @@ function addInboundOrder() {
|
|
22
22
|
sellercraftOP.purchase_order_quantity = orderProduct.purchaseOrderQty;
|
23
23
|
sellercraftOP.received_quantity = orderProduct.receivedQty;
|
24
24
|
sellercraftOP.batch_number = orderProduct.batchId;
|
25
|
-
sellercraftOP.expiry_time =
|
25
|
+
sellercraftOP.expiry_time = orderProduct?.expiryTime ? orderProduct.expiryTime : 0;
|
26
26
|
sellercraftOP.force_create_product = forceCreateProduct;
|
27
27
|
sellercraftOP.product_name = orderProduct.productName;
|
28
28
|
sellercraftOP.gtin = orderProduct.gtin;
|
@@ -35,7 +35,10 @@ function addInboundOrder() {
|
|
35
35
|
return sellercraftOP;
|
36
36
|
});
|
37
37
|
return {
|
38
|
-
payload:
|
38
|
+
payload: {
|
39
|
+
...orderInformation,
|
40
|
+
products
|
41
|
+
}
|
39
42
|
};
|
40
43
|
},
|
41
44
|
normalize(res) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"add-inbound-order.js","sourceRoot":"","sources":["../../../../server/controllers/sellercraft/apis/add-inbound-order.ts"],"names":[],"mappings":";AAAA,gGAAgG;;AAEhG,0CA+CC;AA/CD,SAAgB,eAAe;IAC7B,OAAO;QACL,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,kBAAkB;QACxB,WAAW,CAAC,GAAG;YACb,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,EAAE,GAAG,GAAG,CAAA;YAE/F,IAAI,gBAAgB,GAAQ,EAAE,CAAA;YAC9B,gBAAgB,CAAC,UAAU,GAAG,SAAS,CAAA;YACvC,gBAAgB,CAAC,UAAU,GAAG,SAAS,CAAA;YACvC,gBAAgB,CAAC,YAAY,GAAG,WAAW,CAAA;YAC3C,gBAAgB,CAAC,YAAY,GAAG,WAAW,CAAA;YAC3C,gBAAgB,CAAC,iBAAiB,GAAG,eAAe,CAAA;YAEpD,IAAI,QAAQ,GAAU,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;gBACtD,MAAM,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,GAAG,YAAY,CAAA;gBAC7D,IAAI,aAAa,GAAQ,EAAE,CAAA;gBAC3B,aAAa,CAAC,GAAG,GAAG,YAAY,CAAC,GAAG,CAAA;gBACpC,aAAa,CAAC,eAAe,GAAG,YAAY,CAAC,GAAG,CAAA;gBAChD,aAAa,CAAC,uBAAuB,GAAG,YAAY,CAAC,gBAAgB,CAAA;gBACrE,aAAa,CAAC,iBAAiB,GAAG,YAAY,CAAC,WAAW,CAAA;gBAC1D,aAAa,CAAC,YAAY,GAAG,YAAY,CAAC,OAAO,CAAA;gBACjD,aAAa,CAAC,WAAW,GAAG,
|
1
|
+
{"version":3,"file":"add-inbound-order.js","sourceRoot":"","sources":["../../../../server/controllers/sellercraft/apis/add-inbound-order.ts"],"names":[],"mappings":";AAAA,gGAAgG;;AAEhG,0CA+CC;AA/CD,SAAgB,eAAe;IAC7B,OAAO;QACL,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,kBAAkB;QACxB,WAAW,CAAC,GAAG;YACb,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,EAAE,GAAG,GAAG,CAAA;YAE/F,IAAI,gBAAgB,GAAQ,EAAE,CAAA;YAC9B,gBAAgB,CAAC,UAAU,GAAG,SAAS,CAAA;YACvC,gBAAgB,CAAC,UAAU,GAAG,SAAS,CAAA;YACvC,gBAAgB,CAAC,YAAY,GAAG,WAAW,CAAA;YAC3C,gBAAgB,CAAC,YAAY,GAAG,WAAW,CAAA;YAC3C,gBAAgB,CAAC,iBAAiB,GAAG,eAAe,CAAA;YAEpD,IAAI,QAAQ,GAAU,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;gBACtD,MAAM,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,GAAG,YAAY,CAAA;gBAC7D,IAAI,aAAa,GAAQ,EAAE,CAAA;gBAC3B,aAAa,CAAC,GAAG,GAAG,YAAY,CAAC,GAAG,CAAA;gBACpC,aAAa,CAAC,eAAe,GAAG,YAAY,CAAC,GAAG,CAAA;gBAChD,aAAa,CAAC,uBAAuB,GAAG,YAAY,CAAC,gBAAgB,CAAA;gBACrE,aAAa,CAAC,iBAAiB,GAAG,YAAY,CAAC,WAAW,CAAA;gBAC1D,aAAa,CAAC,YAAY,GAAG,YAAY,CAAC,OAAO,CAAA;gBACjD,aAAa,CAAC,WAAW,GAAG,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;gBAClF,aAAa,CAAC,oBAAoB,GAAG,kBAAkB,CAAA;gBACvD,aAAa,CAAC,YAAY,GAAG,YAAY,CAAC,WAAW,CAAA;gBACrD,aAAa,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAA;gBACtC,aAAa,CAAC,iBAAiB,GAAG,YAAY,CAAC,MAAM,CAAA;gBACrD,aAAa,CAAC,kBAAkB,GAAG;oBACjC,SAAS,EAAE,gBAAgB,CAAC,MAAM;oBAClC,QAAQ,EAAE,gBAAgB,CAAC,KAAK;oBAChC,SAAS,EAAE,gBAAgB,CAAC,MAAM;iBACnC,CAAA;gBAED,OAAO,aAAa,CAAA;YACtB,CAAC,CAAC,CAAA;YAEF,OAAO;gBACL,OAAO,EAAE;oBACP,GAAG,gBAAgB;oBACnB,QAAQ;iBACT;aACF,CAAA;QACH,CAAC;QACD,SAAS,CAAC,GAAG;YACX,OAAO,GAAG,CAAA;QACZ,CAAC;KACF,CAAA;AACH,CAAC","sourcesContent":["/* https://docs.sellercraft.co/docs/api-integrations/b3A6MTY3OTk0Mjg-register-product-inbound */\n\nexport function addInboundOrder() {\n return {\n method: 'post',\n path: '/product/inbound',\n denormalize(req) {\n const { accountId, inboundId, inboundTime, inboundType, purchaseOrderId, sellercraftOPs } = req\n\n let orderInformation: any = {}\n orderInformation.account_id = accountId\n orderInformation.inbound_id = inboundId\n orderInformation.inbound_time = inboundTime\n orderInformation.inbound_type = inboundType\n orderInformation.purchase_order_id = purchaseOrderId\n\n let products: any[] = sellercraftOPs.map(orderProduct => {\n const { packageDimension, forceCreateProduct } = orderProduct\n let sellercraftOP: any = {}\n sellercraftOP.sku = orderProduct.sku\n sellercraftOP.unit_of_measure = orderProduct.uom\n sellercraftOP.purchase_order_quantity = orderProduct.purchaseOrderQty\n sellercraftOP.received_quantity = orderProduct.receivedQty\n sellercraftOP.batch_number = orderProduct.batchId\n sellercraftOP.expiry_time = orderProduct?.expiryTime ? orderProduct.expiryTime : 0\n sellercraftOP.force_create_product = forceCreateProduct\n sellercraftOP.product_name = orderProduct.productName\n sellercraftOP.gtin = orderProduct.gtin\n sellercraftOP.package_weight_gm = orderProduct.weight\n sellercraftOP.package_dimensions = {\n length_mm: packageDimension.length,\n width_mm: packageDimension.width,\n height_mm: packageDimension.height\n }\n\n return sellercraftOP\n })\n\n return {\n payload: {\n ...orderInformation,\n products\n }\n }\n },\n normalize(res) {\n return res\n }\n }\n}\n"]}
|
@@ -5,13 +5,13 @@ function echo() {
|
|
5
5
|
return {
|
6
6
|
path: '/echo',
|
7
7
|
denormalize(req) {
|
8
|
-
return
|
8
|
+
return { ...req };
|
9
9
|
},
|
10
10
|
normalize(res) {
|
11
|
-
return
|
11
|
+
return { ...res };
|
12
12
|
},
|
13
13
|
action({ store, method, path, request, platformAction }) {
|
14
|
-
return
|
14
|
+
return { ...request };
|
15
15
|
}
|
16
16
|
};
|
17
17
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"echo.js","sourceRoot":"","sources":["../../../../server/controllers/sellercraft/apis/echo.ts"],"names":[],"mappings":";;AAAA,oBAaC;AAbD,SAAgB,IAAI;IAClB,OAAO;QACL,IAAI,EAAE,OAAO;QACb,WAAW,CAAC,GAAG;YACb,
|
1
|
+
{"version":3,"file":"echo.js","sourceRoot":"","sources":["../../../../server/controllers/sellercraft/apis/echo.ts"],"names":[],"mappings":";;AAAA,oBAaC;AAbD,SAAgB,IAAI;IAClB,OAAO;QACL,IAAI,EAAE,OAAO;QACb,WAAW,CAAC,GAAG;YACb,OAAO,EAAE,GAAG,GAAG,EAAE,CAAA;QACnB,CAAC;QACD,SAAS,CAAC,GAAG;YACX,OAAO,EAAE,GAAG,GAAG,EAAE,CAAA;QACnB,CAAC;QACD,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE;YACrD,OAAO,EAAE,GAAG,OAAO,EAAE,CAAA;QACvB,CAAC;KACF,CAAA;AACH,CAAC","sourcesContent":["export function echo() {\n return {\n path: '/echo',\n denormalize(req) {\n return { ...req }\n },\n normalize(res) {\n return { ...res }\n },\n action({ store, method, path, request, platformAction }) {\n return { ...request }\n }\n }\n}\n"]}
|
@@ -5,7 +5,7 @@ export declare class Sellercraft {
|
|
5
5
|
private config;
|
6
6
|
constructor(config: SellercraftConfig);
|
7
7
|
getBaseUrl(): string;
|
8
|
-
generateRequestId():
|
8
|
+
generateRequestId(): string;
|
9
9
|
post(path: string, data?: any): Promise<any>;
|
10
10
|
put(path: string, data?: any): Promise<any>;
|
11
11
|
get(path: string, data?: any): Promise<any>;
|
@@ -7,7 +7,9 @@ const uuid_1 = require("uuid");
|
|
7
7
|
const debug = require('debug')('things-factory:integration-sellercraft:sellercraft');
|
8
8
|
class Sellercraft {
|
9
9
|
constructor(config) {
|
10
|
-
this.config =
|
10
|
+
this.config = {
|
11
|
+
...config
|
12
|
+
};
|
11
13
|
}
|
12
14
|
getBaseUrl() {
|
13
15
|
return `https://open.sellercraft.co/v1`;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"sellercraft.js","sourceRoot":"","sources":["../../../server/controllers/sellercraft/sellercraft.ts"],"names":[],"mappings":";;;;AAAA,oEAA8B;AAC9B,+BAAmC;AAEnC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,oDAAoD,CAAC,CAAA;AAMpF,MAAa,WAAW;IAGtB,YAAY,MAAyB;QACnC,IAAI,CAAC,MAAM,
|
1
|
+
{"version":3,"file":"sellercraft.js","sourceRoot":"","sources":["../../../server/controllers/sellercraft/sellercraft.ts"],"names":[],"mappings":"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","sourcesContent":["import fetch from 'node-fetch'\nimport { v4 as uuidv4 } from 'uuid'\n\nconst debug = require('debug')('things-factory:integration-sellercraft:sellercraft')\n\nexport type SellercraftConfig = {\n apiKey: string\n}\n\nexport class Sellercraft {\n private config: SellercraftConfig\n\n constructor(config: SellercraftConfig) {\n this.config = {\n ...config\n }\n }\n\n getBaseUrl() {\n return `https://open.sellercraft.co/v1`\n }\n\n generateRequestId() {\n return uuidv4()\n }\n\n async post(path: string, data: any = {}) {\n const { apiKey } = this.config\n\n debug('data', data)\n\n const jsondata = JSON.stringify(data)\n const requestId: string = this.generateRequestId()\n const fullPath: string = `${this.getBaseUrl()}${path}`\n\n const response: any = await fetch(fullPath, {\n method: 'post',\n headers: {\n 'Content-Type': 'application/json',\n request_id: requestId,\n 'x-api-key': apiKey\n },\n body: jsondata\n })\n\n if (response.ok) {\n return await response.json()\n } else {\n const result = await response.text()\n throw new Error(`(${response.status}) ${result}`)\n }\n }\n\n async put(path: string, data: any = {}) {\n const { apiKey } = this.config\n\n const jsondata = JSON.stringify(data)\n const requestId: string = this.generateRequestId()\n const fullPath: string = `${this.getBaseUrl()}${path}`\n debug('data', data)\n\n const response: any = await fetch(fullPath, {\n method: 'put',\n headers: {\n 'Content-Type': 'application/json',\n request_id: requestId,\n 'x-api-key': apiKey\n },\n body: jsondata\n })\n\n if (response.ok) {\n return await response.json()\n } else {\n const result = await response.text()\n throw new Error(`(${response.status}) ${result}`)\n }\n }\n\n async get(path: string, data: any = {}) {\n const { apiKey } = this.config\n\n const qs = Object.entries(data)\n .map(([k, v]) => `${k}=${encodeURIComponent(String(v))}`)\n .join('&')\n\n const fullPath: string = `${this.getBaseUrl()}${path}`\n const endpoint = `${fullPath}${qs ? '?' + qs : ''}`\n debug('endpoint', endpoint)\n\n const requestId: string = this.generateRequestId()\n\n const response: any = await fetch(endpoint, {\n method: 'get',\n headers: {\n 'Content-Type': 'application/json',\n request_id: requestId,\n 'x-api-key': apiKey\n }\n })\n\n if (response.ok) {\n return await response.json()\n } else {\n const result = await response.text()\n throw new Error(`(${response.status}) ${result}`)\n }\n }\n}\n"]}
|
@@ -23,12 +23,12 @@ const api = (target, property, descriptor) => {
|
|
23
23
|
var response = await action.apply(this, [
|
24
24
|
{ store, method: httpMethod, path, request: denormalized, platformAction }
|
25
25
|
]);
|
26
|
-
(0, integration_base_1.createPayloadLog)(store.accountId, path, denormalized, response, request
|
26
|
+
(0, integration_base_1.createPayloadLog)(store.accountId, path, denormalized, response, request?.context);
|
27
27
|
debug('response', response);
|
28
28
|
return await normalize(response, { store });
|
29
29
|
}
|
30
30
|
catch (error) {
|
31
|
-
(0, integration_base_1.createPayloadLog)(store.accountId, path, denormalized, error, request
|
31
|
+
(0, integration_base_1.createPayloadLog)(store.accountId, path, denormalized, error, request?.context);
|
32
32
|
throw error;
|
33
33
|
}
|
34
34
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../../server/controllers/sellercraft-api/decorators.ts"],"names":[],"mappings":";;;;AAAA,0DAAyB;AACzB,MAAM,KAAK,GAAG,IAAA,eAAK,EAAC,4DAA4D,CAAC,CAAA;AAGjF,uEAAmE;AAEnE,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAEZ,MAAM,GAAG,GAAG,CAAC,MAAc,EAAE,QAAgB,EAAE,UAAwC,EAAO,EAAE;IACrG,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAA;IAE/B,UAAU,CAAC,KAAK,GAAG,KAAK,WAAW,KAAkB,EAAE,OAAO;QAC5D,MAAM,cAAc,GAAG,IAAI,CAAA;QAE3B,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAA;QAExB,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;QAE3E,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACzB,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,KAAK,CAAC,gCAAgC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;QAC5D,CAAC;QAED,IAAI,EACF,IAAI,EACJ,MAAM,EAAE,UAAU,GAAG,MAAM,EAC3B,WAAW,GAAG,IAAI,EAClB,SAAS,GAAG,IAAI,EAChB,MAAM,GAAG,cAAc,EACxB,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;QAE5B,IAAI,YAAY,GAAG,MAAM,WAAW,CAAC,OAAO,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;QAC9D,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;QAE9B,IAAI,CAAC;YACH,IAAI,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;gBACtC,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE;aAC3E,CAAC,CAAA;YAEF,IAAA,mCAAgB,EAAC,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,
|
1
|
+
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../../server/controllers/sellercraft-api/decorators.ts"],"names":[],"mappings":";;;;AAAA,0DAAyB;AACzB,MAAM,KAAK,GAAG,IAAA,eAAK,EAAC,4DAA4D,CAAC,CAAA;AAGjF,uEAAmE;AAEnE,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAEZ,MAAM,GAAG,GAAG,CAAC,MAAc,EAAE,QAAgB,EAAE,UAAwC,EAAO,EAAE;IACrG,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAA;IAE/B,UAAU,CAAC,KAAK,GAAG,KAAK,WAAW,KAAkB,EAAE,OAAO;QAC5D,MAAM,cAAc,GAAG,IAAI,CAAA;QAE3B,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAA;QAExB,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;QAE3E,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACzB,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,KAAK,CAAC,gCAAgC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;QAC5D,CAAC;QAED,IAAI,EACF,IAAI,EACJ,MAAM,EAAE,UAAU,GAAG,MAAM,EAC3B,WAAW,GAAG,IAAI,EAClB,SAAS,GAAG,IAAI,EAChB,MAAM,GAAG,cAAc,EACxB,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;QAE5B,IAAI,YAAY,GAAG,MAAM,WAAW,CAAC,OAAO,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;QAC9D,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;QAE9B,IAAI,CAAC;YACH,IAAI,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;gBACtC,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE;aAC3E,CAAC,CAAA;YAEF,IAAA,mCAAgB,EAAC,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;YAEjF,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;YAE3B,OAAO,MAAM,SAAS,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;QAC7C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAA,mCAAgB,EAAC,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;YAC9E,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC,CAAA;IAED,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA;AA3CY,QAAA,GAAG,OA2Cf","sourcesContent":["import Debug from 'debug'\nconst debug = Debug('things-factory:integration-marketplace:store-api-decorator')\n\nimport { Sellercraft } from '../../service'\nimport { createPayloadLog } from '@things-factory/integration-base'\n\nconst NOOP = v => v\n\nexport const api = (target: Object, property: string, descriptor: TypedPropertyDescriptor<any>): any => {\n const method = descriptor.value\n\n descriptor.value = async function (store: Sellercraft, request) {\n const SellercraftAPI = this\n\n var { platform } = store\n\n var { action: platformAction, apis } = SellercraftAPI.getPlatform(platform)\n\n var m = apis[method.name]\n if (!m) {\n throw Error(`Sellercraft doesn't have API ${method.name}`)\n }\n\n var {\n path,\n method: httpMethod = 'post',\n denormalize = NOOP,\n normalize = NOOP,\n action = platformAction\n } = m.apply(this, [request])\n\n var denormalized = await denormalize(request || {}, { store })\n debug('request', denormalized)\n\n try {\n var response = await action.apply(this, [\n { store, method: httpMethod, path, request: denormalized, platformAction }\n ])\n\n createPayloadLog(store.accountId, path, denormalized, response, request?.context)\n\n debug('response', response)\n\n return await normalize(response, { store })\n } catch (error) {\n createPayloadLog(store.accountId, path, denormalized, error, request?.context)\n throw error\n }\n }\n\n return descriptor\n}\n"]}
|
@@ -6,6 +6,7 @@ const shell_1 = require("@things-factory/shell");
|
|
6
6
|
const service_1 = require("../../service");
|
7
7
|
const decorators_1 = require("./decorators");
|
8
8
|
class SellercraftAPI {
|
9
|
+
static { this.platforms = {}; }
|
9
10
|
static registerPlatform(name, action, apis) {
|
10
11
|
SellercraftAPI.platforms[name] = {
|
11
12
|
action,
|
@@ -32,7 +33,6 @@ class SellercraftAPI {
|
|
32
33
|
static updateProduct(sellercraft, req) { }
|
33
34
|
}
|
34
35
|
exports.SellercraftAPI = SellercraftAPI;
|
35
|
-
SellercraftAPI.platforms = {};
|
36
36
|
tslib_1.__decorate([
|
37
37
|
decorators_1.api,
|
38
38
|
tslib_1.__metadata("design:type", Function),
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/controllers/sellercraft-api/index.ts"],"names":[],"mappings":";;;;AAAA,iDAAqD;AAErD,2CAA2C;AAC3C,6CAAkC;AAElC,MAAa,cAAc;
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/controllers/sellercraft-api/index.ts"],"names":[],"mappings":";;;;AAAA,iDAAqD;AAErD,2CAA2C;AAC3C,6CAAkC;AAElC,MAAa,cAAc;aAClB,cAAS,GAAG,EAAE,CAAA;IAErB,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI;QACxC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG;YAC/B,MAAM;YACN,IAAI;SACL,CAAA;IACH,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,IAAI;QACrB,OAAO,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IACvC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;QAC5B,MAAM,UAAU,GAAG,IAAA,qBAAa,EAAC,qBAAW,CAAC,CAAA;QAC7C,OAAO,MAAM,UAAU,CAAC,OAAO,CAAC;YAC9B,KAAK,EAAE,EAAE,EAAE,EAAE;YACb,SAAS,EAAE,CAAC,QAAQ,CAAC;SACtB,CAAC,CAAA;IACJ,CAAC;IAGM,AAAP,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAQ,CAAC;IAG9B,AAAP,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,GAAG,IAAQ,CAAC;IAGzC,AAAP,MAAM,CAAC,kBAAkB,CAAC,WAAW,EAAE,GAAG,IAAQ,CAAC;IAG5C,AAAP,MAAM,CAAC,qBAAqB,CAAC,WAAW,EAAE,GAAG,IAAQ,CAAC;IAG/C,AAAP,MAAM,CAAC,qBAAqB,CAAC,WAAW,EAAE,GAAG,IAAQ,CAAC;IAG/C,AAAP,MAAM,CAAC,oBAAoB,CAAC,WAAW,EAAE,GAAG,IAAQ,CAAC;IAG9C,AAAP,MAAM,CAAC,sBAAsB,CAAC,WAAW,EAAE,GAAG,IAAQ,CAAC;IAGhD,AAAP,MAAM,CAAC,aAAa,CAAC,WAAW,EAAE,GAAG,IAAQ,CAAC;;AA5ChD,wCA6CC;AAtBQ;IADN,gBAAG;;;;gCACiC;AAG9B;IADN,gBAAG;;;;2CAC4C;AAGzC;IADN,gBAAG;;;;8CAC+C;AAG5C;IADN,gBAAG;;;;iDACkD;AAG/C;IADN,gBAAG;;;;iDACkD;AAG/C;IADN,gBAAG;;;;gDACiD;AAG9C;IADN,gBAAG;;;;kDACmD;AAGhD;IADN,gBAAG;;;;yCAC0C","sourcesContent":["import { getRepository } from '@things-factory/shell'\n\nimport { Sellercraft } from '../../service'\nimport { api } from './decorators'\n\nexport class SellercraftAPI {\n static platforms = {}\n\n static registerPlatform(name, action, apis) {\n SellercraftAPI.platforms[name] = {\n action,\n apis\n }\n }\n\n static getPlatform(name) {\n return SellercraftAPI.platforms[name]\n }\n\n static async getSellercraft(id) {\n const repository = getRepository(Sellercraft)\n return await repository.findOne({\n where: { id },\n relations: ['domain']\n })\n }\n\n @api\n static echo(sellercraft, req): any {}\n\n @api\n static addInboundOrder(sellercraft, req): any {}\n\n @api\n static fetchOrderDocument(sellercraft, req): any {}\n\n @api\n static initiateOrderDocument(sellercraft, req): any {}\n\n @api\n static initiateOrderShipment(sellercraft, req): any {}\n\n @api\n static packMarketplaceOrder(sellercraft, req): any {}\n\n @api\n static updateMarketplaceOrder(sellercraft, req): any {}\n\n @api\n static updateProduct(sellercraft, req): any {}\n}\n"]}
|
@@ -5,13 +5,13 @@ function echo() {
|
|
5
5
|
return {
|
6
6
|
path: '/echo',
|
7
7
|
denormalize(req) {
|
8
|
-
return
|
8
|
+
return { ...req };
|
9
9
|
},
|
10
10
|
normalize(res) {
|
11
|
-
return
|
11
|
+
return { ...res };
|
12
12
|
},
|
13
13
|
action({ store, method, path, request, platformAction }) {
|
14
|
-
return
|
14
|
+
return { ...request };
|
15
15
|
}
|
16
16
|
};
|
17
17
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"echo.js","sourceRoot":"","sources":["../../../../server/controllers/sellercraft-channel-integration/apis/echo.ts"],"names":[],"mappings":";;AAAA,oBAaC;AAbD,SAAgB,IAAI;IAClB,OAAO;QACL,IAAI,EAAE,OAAO;QACb,WAAW,CAAC,GAAG;YACb,
|
1
|
+
{"version":3,"file":"echo.js","sourceRoot":"","sources":["../../../../server/controllers/sellercraft-channel-integration/apis/echo.ts"],"names":[],"mappings":";;AAAA,oBAaC;AAbD,SAAgB,IAAI;IAClB,OAAO;QACL,IAAI,EAAE,OAAO;QACb,WAAW,CAAC,GAAG;YACb,OAAO,EAAE,GAAG,GAAG,EAAE,CAAA;QACnB,CAAC;QACD,SAAS,CAAC,GAAG;YACX,OAAO,EAAE,GAAG,GAAG,EAAE,CAAA;QACnB,CAAC;QACD,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE;YACrD,OAAO,EAAE,GAAG,OAAO,EAAE,CAAA;QACvB,CAAC;KACF,CAAA;AACH,CAAC","sourcesContent":["export function echo() {\n return {\n path: '/echo',\n denormalize(req) {\n return { ...req }\n },\n normalize(res) {\n return { ...res }\n },\n action({ store, method, path, request, platformAction }) {\n return { ...request }\n }\n }\n}\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ingest-channel-order-package.js","sourceRoot":"","sources":["../../../../server/controllers/sellercraft-channel-integration/apis/ingest-channel-order-package.ts"],"names":[],"mappings":";AAAA,oGAAoG;;AAEpG,8DA2DC;AA3DD,SAAgB,yBAAyB;IACvC,OAAO;QACL,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,+BAA+B;QACrC,WAAW,CAAC,GAAG;YACb,IAAI,EACF,aAAa,EAAE,eAAe,EAC9B,aAAa,EAAE,eAAe,EAC9B,eAAe,EAAE,iBAAiB,EAClC,oBAAoB,EAAE,sBAAsB,EAC5C,iBAAiB,EAAE,mBAAmB,EACtC,aAAa,EAAE,cAAc,EAC7B,OAAO,EACP,SAAS,EACT,eAAe,EAAE,iBAAiB,EAClC,YAAY,EAAE,cAAc,EAC7B,GAAG,GAAG,CAAA;YAEP,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBAC5B,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;gBAEvE,OAAO;oBACL,eAAe;oBACf,SAAS;oBACT,IAAI;iBACL,CAAA;YACH,CAAC,CAAC,CAAA;YAEF,OAAO,GAAG;gBACR,gBAAgB,EAAE,OAAO,CAAC,cAAc;gBACxC,IAAI,EAAE,OAAO,CAAC,IAAI;aACnB,CAAA;YAED,iBAAiB,GAAG;gBAClB,gBAAgB,EAAE,iBAAiB,CAAC,cAAc;gBAClD,IAAI,EAAE,iBAAiB,CAAC,IAAI;aAC7B,CAAA;YAED,IAAI,eAAe,GAAQ;gBACzB,eAAe;gBACf,eAAe;gBACf,iBAAiB,EAAE,iBAAiB,CAAC,QAAQ,EAAE;gBAC/C,sBAAsB;gBACtB,mBAAmB;gBACnB,cAAc;gBACd,OAAO;gBACP,SAAS;gBACT,iBAAiB;gBACjB,cAAc;aACf,CAAA;YAED,OAAO;gBACL,OAAO,
|
1
|
+
{"version":3,"file":"ingest-channel-order-package.js","sourceRoot":"","sources":["../../../../server/controllers/sellercraft-channel-integration/apis/ingest-channel-order-package.ts"],"names":[],"mappings":";AAAA,oGAAoG;;AAEpG,8DA2DC;AA3DD,SAAgB,yBAAyB;IACvC,OAAO;QACL,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,+BAA+B;QACrC,WAAW,CAAC,GAAG;YACb,IAAI,EACF,aAAa,EAAE,eAAe,EAC9B,aAAa,EAAE,eAAe,EAC9B,eAAe,EAAE,iBAAiB,EAClC,oBAAoB,EAAE,sBAAsB,EAC5C,iBAAiB,EAAE,mBAAmB,EACtC,aAAa,EAAE,cAAc,EAC7B,OAAO,EACP,SAAS,EACT,eAAe,EAAE,iBAAiB,EAClC,YAAY,EAAE,cAAc,EAC7B,GAAG,GAAG,CAAA;YAEP,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBAC5B,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;gBAEvE,OAAO;oBACL,eAAe;oBACf,SAAS;oBACT,IAAI;iBACL,CAAA;YACH,CAAC,CAAC,CAAA;YAEF,OAAO,GAAG;gBACR,gBAAgB,EAAE,OAAO,CAAC,cAAc;gBACxC,IAAI,EAAE,OAAO,CAAC,IAAI;aACnB,CAAA;YAED,iBAAiB,GAAG;gBAClB,gBAAgB,EAAE,iBAAiB,CAAC,cAAc;gBAClD,IAAI,EAAE,iBAAiB,CAAC,IAAI;aAC7B,CAAA;YAED,IAAI,eAAe,GAAQ;gBACzB,eAAe;gBACf,eAAe;gBACf,iBAAiB,EAAE,iBAAiB,CAAC,QAAQ,EAAE;gBAC/C,sBAAsB;gBACtB,mBAAmB;gBACnB,cAAc;gBACd,OAAO;gBACP,SAAS;gBACT,iBAAiB;gBACjB,cAAc;aACf,CAAA;YAED,OAAO;gBACL,OAAO,EAAE,EAAE,GAAG,eAAe,EAAE;aAChC,CAAA;QACH,CAAC;QACD,SAAS,CAAC,GAAG;YACX,OAAO,GAAG,CAAA;QACZ,CAAC;KACF,CAAA;AACH,CAAC","sourcesContent":["/* https://docs.sellercraft.co/docs/api-integrations/b3A6MjQzODUxMTQ-ingest-channel-order-package */\n\nexport function ingestChannelOrderPackage() {\n return {\n method: 'post',\n path: '/channel/ingest/order/package',\n denormalize(req) {\n let {\n channelShopId: channel_shop_id,\n nativeOrderId: native_order_id,\n nativePackageId: native_package_id,\n shippingTrackingCode: shipping_tracking_code,\n shippingTypeValue: shipping_type_value,\n warehouseCode: warehouse_code,\n shipper,\n documents,\n shipperLastMile: shipper_last_mile,\n orderItemIds: order_item_ids\n } = req\n\n documents = documents.map(e => {\n const { fileTypeValue: file_type_value, mimeType: mime_type, file } = e\n\n return {\n file_type_value,\n mime_type,\n file\n }\n })\n\n shipper = {\n is_cod_supported: shipper.isCodSupported,\n name: shipper.name\n }\n\n shipper_last_mile = {\n is_cod_supported: shipper_last_mile.isCodSupported,\n name: shipper_last_mile.name\n }\n\n let newOrderPackage: any = {\n channel_shop_id,\n native_order_id,\n native_package_id: native_package_id.toString(),\n shipping_tracking_code,\n shipping_type_value,\n warehouse_code,\n shipper,\n documents,\n shipper_last_mile,\n order_item_ids\n }\n\n return {\n payload: { ...newOrderPackage }\n }\n },\n normalize(res) {\n return res\n }\n }\n}\n"]}
|
package/dist-server/controllers/sellercraft-channel-integration/apis/ingest-channel-order.js
CHANGED
@@ -14,7 +14,7 @@ function ingestChannelOrder() {
|
|
14
14
|
organisation_id: order.organisationId,
|
15
15
|
channel_shop_id: order.channelShopId,
|
16
16
|
native_order_id: order.id.toString(),
|
17
|
-
native_order_display_id: order
|
17
|
+
native_order_display_id: order?.sellercraftDisplayOrderNo,
|
18
18
|
ordered_at_date: new Date(order.createdAt).toISOString().slice(0, -5) + 'Z',
|
19
19
|
ordered_at_time: new Date(order.createdAt).toISOString().slice(0, -5) + 'Z',
|
20
20
|
updated_at_date: new Date(order.updatedAt).toISOString().slice(0, -5) + 'Z',
|
@@ -28,7 +28,7 @@ function ingestChannelOrder() {
|
|
28
28
|
amount_nett: parseFloat(charge.nettAmount) || 0
|
29
29
|
};
|
30
30
|
}),
|
31
|
-
address_shipping:
|
31
|
+
address_shipping: order?.shipAddress1 ? {
|
32
32
|
first_name: order.shipFirstName,
|
33
33
|
last_name: order.shipLastName,
|
34
34
|
line_1: order.shipAddress1,
|
@@ -65,7 +65,7 @@ function ingestChannelOrder() {
|
|
65
65
|
ordered_at_time: new Date(order.createdAt).toISOString().slice(0, -5) + 'Z',
|
66
66
|
updated_at_date: new Date(order.updatedAt).toISOString().slice(0, -5) + 'Z',
|
67
67
|
updated_at_time: new Date(order.updatedAt).toISOString().slice(0, -5) + 'Z',
|
68
|
-
sla_expires_at:
|
68
|
+
sla_expires_at: orderItem?.slaExpiresAt ? new Date(orderItem.slaExpiresAt).toISOString() : null,
|
69
69
|
charges: orderItem.charges.map(charge => {
|
70
70
|
return {
|
71
71
|
charge_type_value: charge.name,
|
@@ -76,8 +76,8 @@ function ingestChannelOrder() {
|
|
76
76
|
order_status_value: constants_1.ORDER_STATUS[`${order.status}`]
|
77
77
|
};
|
78
78
|
}),
|
79
|
-
seller_logistics: order
|
80
|
-
shipping_type:
|
79
|
+
seller_logistics: order?.isSOF,
|
80
|
+
shipping_type: order?.shipAddress1 ? 'DROP_SHIPPING' : 'SELF_PICKUP'
|
81
81
|
};
|
82
82
|
});
|
83
83
|
return {
|
package/dist-server/controllers/sellercraft-channel-integration/apis/ingest-channel-order.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ingest-channel-order.js","sourceRoot":"","sources":["../../../../server/controllers/sellercraft-channel-integration/apis/ingest-channel-order.ts"],"names":[],"mappings":";AAAA,4FAA4F;;AAI5F,gDAuFC;AAzFD,kDAAiD;AAEjD,SAAgB,kBAAkB;IAChC,OAAO;QACL,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,uBAAuB;QAC7B,WAAW,CAAC,GAAG;YACb,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAA;YAEtB,IAAI,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBACjC,OAAO;oBACL,eAAe,EAAE,KAAK,CAAC,cAAc;oBACrC,eAAe,EAAE,KAAK,CAAC,aAAa;oBACpC,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE;oBACpC,uBAAuB,EAAE,KAAK,
|
1
|
+
{"version":3,"file":"ingest-channel-order.js","sourceRoot":"","sources":["../../../../server/controllers/sellercraft-channel-integration/apis/ingest-channel-order.ts"],"names":[],"mappings":"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","sourcesContent":["/* https://docs.sellercraft.co/docs/api-integrations/b3A6MjQzODQ4OTg-ingest-channel-order */\n\nimport { ORDER_STATUS } from '../../../constants'\n\nexport function ingestChannelOrder() {\n return {\n method: 'post',\n path: '/channel/ingest/order',\n denormalize(req) {\n const { orders } = req\n\n let newOrders = orders.map(order => {\n return {\n organisation_id: order.organisationId,\n channel_shop_id: order.channelShopId,\n native_order_id: order.id.toString(),\n native_order_display_id: order?.sellercraftDisplayOrderNo,\n ordered_at_date: new Date(order.createdAt).toISOString().slice(0, -5) + 'Z',\n ordered_at_time: new Date(order.createdAt).toISOString().slice(0, -5) + 'Z',\n updated_at_date: new Date(order.updatedAt).toISOString().slice(0, -5) + 'Z',\n updated_at_time: new Date(order.updatedAt).toISOString().slice(0, -5) + 'Z',\n customer_first_name: order.custFirstName,\n customer_last_name: order.custLastName,\n charges: order.charges.map(charge => {\n return {\n charge_type_value: charge.name,\n amount_gross: parseFloat(charge.grossAmount) || 0,\n amount_nett: parseFloat(charge.nettAmount) || 0\n }\n }),\n address_shipping: order?.shipAddress1 ? {\n first_name: order.shipFirstName,\n last_name: order.shipLastName,\n line_1: order.shipAddress1,\n line_2: order.shipAddress2,\n line_3: order.shipAddress3,\n line_4: order.shipAddress4,\n line_5: order.shipAddress5,\n city: order.shipCity,\n postal_code: order.shipPostalCode,\n country: order.shipCountry,\n phone_1: order.shipPhone1,\n phone_2: order.shipPhone2\n } : null,\n address_billing: {\n first_name: order.billFirstName,\n last_name: order.billLastName,\n line_1: order.billAddress1,\n line_2: order.billAddress2,\n line_3: order.billAddress3,\n line_4: order.billAddress4,\n line_5: order.billAddress5,\n city: order.billCity,\n postal_code: order.billPostalCode,\n country: order.billCountry,\n phone_1: order.billPhone1,\n phone_2: order.billPhone2\n },\n order_items: order.mappedOrderItems.map(orderItem => {\n return {\n native_item_id: orderItem.id.toString(),\n native_variant_id: orderItem.variationId.toString(),\n currency_code: orderItem.currency,\n ordered_at_date: new Date(order.createdAt).toISOString().slice(0, -5) + 'Z',\n ordered_at_time: new Date(order.createdAt).toISOString().slice(0, -5) + 'Z',\n updated_at_date: new Date(order.updatedAt).toISOString().slice(0, -5) + 'Z',\n updated_at_time: new Date(order.updatedAt).toISOString().slice(0, -5) + 'Z',\n sla_expires_at: orderItem?.slaExpiresAt ? new Date(orderItem.slaExpiresAt).toISOString() : null,\n charges: orderItem.charges.map(charge => {\n return {\n charge_type_value: charge.name,\n amount_gross: parseFloat(charge.grossAmount) || 0,\n amount_nett: parseFloat(charge.nettAmount) || 0\n }\n }),\n order_status_value: ORDER_STATUS[`${order.status}`]\n }\n }),\n seller_logistics: order?.isSOF,\n shipping_type: order?.shipAddress1 ? 'DROP_SHIPPING' : 'SELF_PICKUP'\n }\n })\n\n return {\n payload: [...newOrders]\n }\n },\n normalize(res) {\n return res\n }\n }\n}\n"]}
|
package/dist-server/controllers/sellercraft-channel-integration/apis/ingest-channel-product.js
CHANGED
@@ -9,7 +9,6 @@ function ingestChannelProduct() {
|
|
9
9
|
denormalize(req) {
|
10
10
|
const { products } = req;
|
11
11
|
let newProducts = products.map(product => {
|
12
|
-
var _a, _b;
|
13
12
|
let productVariations = product.variations.map(variant => {
|
14
13
|
return {
|
15
14
|
seller_sku: variant.variationSku,
|
@@ -18,31 +17,33 @@ function ingestChannelProduct() {
|
|
18
17
|
is_enabled: variant.isEnabled || true,
|
19
18
|
is_sellable: variant.isSellable || true,
|
20
19
|
is_deleted: false, // default
|
21
|
-
variant_attributes:
|
22
|
-
? variant
|
23
|
-
|
24
|
-
|
20
|
+
variant_attributes: variant?.attributes
|
21
|
+
? variant?.attributes.map(attribute => {
|
22
|
+
return {
|
23
|
+
...attribute,
|
24
|
+
native_attribute_id: attribute?.native_attribute_id?.toString()
|
25
|
+
};
|
25
26
|
})
|
26
27
|
: [],
|
27
|
-
stock_locked:
|
28
|
-
native_stock_reported:
|
28
|
+
stock_locked: variant?.stockLocked ? variant.stockLocked : 0,
|
29
|
+
native_stock_reported: variant?.stockReported ? variant.stockReported : 0,
|
29
30
|
price_full: variant.fullPrice || 0,
|
30
31
|
price_discounted: variant.priceDiscounted || variant.fullPrice || 0,
|
31
|
-
inventory_products:
|
32
|
+
inventory_products: variant?.inventoryProducts
|
32
33
|
? variant.inventoryProducts.map(inventoryProduct => {
|
33
34
|
return {
|
34
35
|
quantity: inventoryProduct.qty || 0,
|
35
36
|
name: inventoryProduct.name,
|
36
37
|
inventory_sku: inventoryProduct.sku,
|
37
|
-
product_versions:
|
38
|
+
product_versions: inventoryProduct?.productVersions
|
38
39
|
? inventoryProduct.productVersions.map(productVersion => {
|
39
40
|
return {
|
40
41
|
label: productVersion.label,
|
41
42
|
package_content: productVersion.packageContent,
|
42
|
-
package_length_mm:
|
43
|
-
package_width_mm:
|
44
|
-
package_height_mm:
|
45
|
-
package_weight_gram:
|
43
|
+
package_length_mm: productVersion?.packageLengthMM ? productVersion.packageLengthMM : 0,
|
44
|
+
package_width_mm: productVersion?.packageWidthMM ? productVersion.packageWidthMM : 0,
|
45
|
+
package_height_mm: productVersion?.packageHeightMM ? productVersion.packageHeightMM : 0,
|
46
|
+
package_weight_gram: productVersion?.packageWeightGram
|
46
47
|
? productVersion.packageWeightGram
|
47
48
|
: 0,
|
48
49
|
stock_available: productVersion.qty || 0
|
@@ -52,7 +53,7 @@ function ingestChannelProduct() {
|
|
52
53
|
};
|
53
54
|
})
|
54
55
|
: [],
|
55
|
-
extra_metadata: variant
|
56
|
+
extra_metadata: variant?.extraMetadata
|
56
57
|
};
|
57
58
|
});
|
58
59
|
return {
|
@@ -66,14 +67,17 @@ function ingestChannelProduct() {
|
|
66
67
|
brand: product.brand || '',
|
67
68
|
is_verified: product.isVerified || true,
|
68
69
|
flexible_attributes: product.channelCode == 'WCM' || product.channelCode == 'MGT' || product.channelCode == 'SPF' ? true : false, // add channels that do not support category_attributes ingestion
|
69
|
-
images:
|
70
|
+
images: product?.images?.map(image => {
|
70
71
|
return {
|
71
72
|
file_url: image.url
|
72
73
|
};
|
73
|
-
})
|
74
|
-
product_attributes:
|
75
|
-
return
|
76
|
-
|
74
|
+
}) || [],
|
75
|
+
product_attributes: product?.attributes?.map(attribute => {
|
76
|
+
return {
|
77
|
+
...attribute,
|
78
|
+
native_attribute_id: attribute.native_attribute_id.toString()
|
79
|
+
};
|
80
|
+
}) || [],
|
77
81
|
variants: productVariations,
|
78
82
|
has_all_variants: product.channelCode == 'MGT' ? false : true
|
79
83
|
};
|
package/dist-server/controllers/sellercraft-channel-integration/apis/ingest-channel-product.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ingest-channel-product.js","sourceRoot":"","sources":["../../../../server/controllers/sellercraft-channel-integration/apis/ingest-channel-product.ts"],"names":[],"mappings":";AAAA,+FAA+F;;AAE/F,oDA8FC;AA9FD,SAAgB,oBAAoB;IAClC,OAAO;QACL,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,yBAAyB;QAC/B,WAAW,CAAC,GAAG;YACb,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAA;YAExB,IAAI,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE
|
1
|
+
{"version":3,"file":"ingest-channel-product.js","sourceRoot":"","sources":["../../../../server/controllers/sellercraft-channel-integration/apis/ingest-channel-product.ts"],"names":[],"mappings":"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","sourcesContent":["/* https://docs.sellercraft.co/docs/api-integrations/b3A6MTY4NjQxODU-initiate-order-shipment */\n\nexport function ingestChannelProduct() {\n return {\n method: 'post',\n path: '/channel/ingest/product',\n denormalize(req) {\n const { products } = req\n\n let newProducts = products.map(product => {\n let productVariations: any[] = product.variations.map(variant => {\n return {\n seller_sku: variant.variationSku,\n native_variant_id: variant.variationId.toString(),\n label: variant.name,\n is_enabled: variant.isEnabled || true,\n is_sellable: variant.isSellable || true,\n is_deleted: false, // default\n variant_attributes: variant?.attributes\n ? variant?.attributes.map(attribute => {\n return {\n ...attribute,\n native_attribute_id: attribute?.native_attribute_id?.toString()\n }\n })\n : [],\n stock_locked: variant?.stockLocked ? variant.stockLocked : 0,\n native_stock_reported: variant?.stockReported ? variant.stockReported : 0,\n price_full: variant.fullPrice || 0,\n price_discounted: variant.priceDiscounted || variant.fullPrice || 0,\n inventory_products: variant?.inventoryProducts\n ? variant.inventoryProducts.map(inventoryProduct => {\n return {\n quantity: inventoryProduct.qty || 0,\n name: inventoryProduct.name,\n inventory_sku: inventoryProduct.sku,\n product_versions: inventoryProduct?.productVersions\n ? inventoryProduct.productVersions.map(productVersion => {\n return {\n label: productVersion.label,\n package_content: productVersion.packageContent,\n package_length_mm: productVersion?.packageLengthMM ? productVersion.packageLengthMM : 0,\n package_width_mm: productVersion?.packageWidthMM ? productVersion.packageWidthMM : 0,\n package_height_mm: productVersion?.packageHeightMM ? productVersion.packageHeightMM : 0,\n package_weight_gram: productVersion?.packageWeightGram\n ? productVersion.packageWeightGram\n : 0,\n stock_available: productVersion.qty || 0\n }\n })\n : []\n }\n })\n : [],\n extra_metadata: variant?.extraMetadata\n }\n })\n\n return {\n organisation_id: product.organisationId,\n channel_shop_id: product.channelShopId,\n channel_code: product.channelCode,\n channel_country: product.channelCountry,\n native_category_id: product.categoryId.toString(),\n native_product_id: product.productId.toString(),\n label: product.name,\n brand: product.brand || '',\n is_verified: product.isVerified || true,\n flexible_attributes:\n product.channelCode == 'WCM' || product.channelCode == 'MGT' || product.channelCode == 'SPF' ? true : false, // add channels that do not support category_attributes ingestion\n images:\n product?.images?.map(image => {\n return {\n file_url: image.url\n }\n }) || [],\n product_attributes:\n product?.attributes?.map(attribute => {\n return {\n ...attribute,\n native_attribute_id: attribute.native_attribute_id.toString()\n }\n }) || [],\n variants: productVariations,\n has_all_variants: product.channelCode == 'MGT' ? false : true\n }\n })\n\n return {\n payload: [...newProducts]\n }\n },\n normalize(res) {\n return res\n }\n }\n}\n"]}
|
package/dist-server/controllers/sellercraft-channel-integration/sellercraft-channel-integration.d.ts
CHANGED
@@ -5,7 +5,7 @@ export declare class SellercraftChannelIntegration {
|
|
5
5
|
private config;
|
6
6
|
constructor(config: SellercraftConfig);
|
7
7
|
getBaseUrl(): string;
|
8
|
-
generateRequestId():
|
8
|
+
generateRequestId(): string;
|
9
9
|
post(path: string, data?: any): Promise<any>;
|
10
10
|
put(path: string, data?: any): Promise<any>;
|
11
11
|
get(path: string, data?: any): Promise<any>;
|
package/dist-server/controllers/sellercraft-channel-integration/sellercraft-channel-integration.js
CHANGED
@@ -8,7 +8,9 @@ const integration_base_1 = require("@things-factory/integration-base");
|
|
8
8
|
const debug = require('debug')('things-factory:integration-sellercraft:sellercraft');
|
9
9
|
class SellercraftChannelIntegration {
|
10
10
|
constructor(config) {
|
11
|
-
this.config =
|
11
|
+
this.config = {
|
12
|
+
...config
|
13
|
+
};
|
12
14
|
}
|
13
15
|
getBaseUrl() {
|
14
16
|
return `https://open.sellercraft.co/v1`;
|
@@ -17,7 +19,6 @@ class SellercraftChannelIntegration {
|
|
17
19
|
return (0, uuid_1.v4)();
|
18
20
|
}
|
19
21
|
async post(path, data = {}) {
|
20
|
-
var _a;
|
21
22
|
const { apiKey } = this.config;
|
22
23
|
debug('data', data);
|
23
24
|
const jsondata = JSON.stringify(data);
|
@@ -34,7 +35,7 @@ class SellercraftChannelIntegration {
|
|
34
35
|
});
|
35
36
|
const result = await response.json();
|
36
37
|
try {
|
37
|
-
(0, integration_base_1.createPayloadLog)(
|
38
|
+
(0, integration_base_1.createPayloadLog)(JSON.parse(jsondata)[0]?.channel_shop_id || requestId, fullPath, jsondata, result, {
|
38
39
|
state: { domain: null }
|
39
40
|
});
|
40
41
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"sellercraft-channel-integration.js","sourceRoot":"","sources":["../../../server/controllers/sellercraft-channel-integration/sellercraft-channel-integration.ts"],"names":[],"mappings":";;;;AAAA,oEAA8B;AAC9B,+BAAmC;AACnC,uEAAmE;AAEnE,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,oDAAoD,CAAC,CAAA;AAMpF,MAAa,6BAA6B;IAGxC,YAAY,MAAyB;QACnC,IAAI,CAAC,MAAM,
|
1
|
+
{"version":3,"file":"sellercraft-channel-integration.js","sourceRoot":"","sources":["../../../server/controllers/sellercraft-channel-integration/sellercraft-channel-integration.ts"],"names":[],"mappings":";;;;AAAA,oEAA8B;AAC9B,+BAAmC;AACnC,uEAAmE;AAEnE,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,oDAAoD,CAAC,CAAA;AAMpF,MAAa,6BAA6B;IAGxC,YAAY,MAAyB;QACnC,IAAI,CAAC,MAAM,GAAG;YACZ,GAAG,MAAM;SACV,CAAA;IACH,CAAC;IAED,UAAU;QACR,OAAO,gCAAgC,CAAA;IACzC,CAAC;IAED,iBAAiB;QACf,OAAO,IAAA,SAAM,GAAE,CAAA;IACjB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,OAAY,EAAE;QACrC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAA;QAE9B,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAEnB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QACrC,MAAM,SAAS,GAAW,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAClD,MAAM,QAAQ,GAAW,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,EAAE,CAAA;QAEtD,MAAM,QAAQ,GAAQ,MAAM,IAAA,oBAAK,EAAC,QAAQ,EAAE;YAC1C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,UAAU,EAAE,SAAS;gBACrB,WAAW,EAAE,MAAM;aACpB;YACD,IAAI,EAAE,QAAQ;SACf,CAAC,CAAA;QAEF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;QACpC,IAAI,CAAC;YACH,IAAA,mCAAgB,EAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,eAAe,IAAI,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE;gBAClG,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;aACxB,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC;QACd,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;YAChB,OAAO,MAAM,CAAA;QACf,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;QAC1D,CAAC;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAY,EAAE,OAAY,EAAE;QACpC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAA;QAE9B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QACrC,MAAM,SAAS,GAAW,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAClD,MAAM,QAAQ,GAAW,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,EAAE,CAAA;QACtD,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAEnB,MAAM,QAAQ,GAAQ,MAAM,IAAA,oBAAK,EAAC,QAAQ,EAAE;YAC1C,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,UAAU,EAAE,SAAS;gBACrB,WAAW,EAAE,MAAM;aACpB;YACD,IAAI,EAAE,QAAQ;SACf,CAAC,CAAA;QAEF,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;YAChB,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;QAC9B,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;YACpC,MAAM,IAAI,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAA;QAC3D,CAAC;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAY,EAAE,OAAY,EAAE;QACpC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAA;QAE9B,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;aAC5B,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aACxD,IAAI,CAAC,GAAG,CAAC,CAAA;QAEZ,MAAM,QAAQ,GAAW,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,EAAE,CAAA;QACtD,MAAM,QAAQ,GAAG,GAAG,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;QACnD,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAE3B,MAAM,SAAS,GAAW,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAElD,MAAM,QAAQ,GAAQ,MAAM,IAAA,oBAAK,EAAC,QAAQ,EAAE;YAC1C,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,UAAU,EAAE,SAAS;gBACrB,WAAW,EAAE,MAAM;aACpB;SACF,CAAC,CAAA;QAEF,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;YAChB,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;QAC9B,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;YACpC,MAAM,IAAI,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAA;QAC3D,CAAC;IACH,CAAC;CACF;AAxGD,sEAwGC","sourcesContent":["import fetch from 'node-fetch'\nimport { v4 as uuidv4 } from 'uuid'\nimport { createPayloadLog } from '@things-factory/integration-base'\n\nconst debug = require('debug')('things-factory:integration-sellercraft:sellercraft')\n\nexport type SellercraftConfig = {\n apiKey: string\n}\n\nexport class SellercraftChannelIntegration {\n private config: SellercraftConfig\n\n constructor(config: SellercraftConfig) {\n this.config = {\n ...config\n }\n }\n\n getBaseUrl() {\n return `https://open.sellercraft.co/v1`\n }\n\n generateRequestId() {\n return uuidv4()\n }\n\n async post(path: string, data: any = {}) {\n const { apiKey } = this.config\n\n debug('data', data)\n\n const jsondata = JSON.stringify(data)\n const requestId: string = this.generateRequestId()\n const fullPath: string = `${this.getBaseUrl()}${path}`\n\n const response: any = await fetch(fullPath, {\n method: 'post',\n headers: {\n 'Content-Type': 'application/json',\n request_id: requestId,\n 'X-Api-Key': apiKey\n },\n body: jsondata\n })\n\n const result = await response.json()\n try {\n createPayloadLog(JSON.parse(jsondata)[0]?.channel_shop_id || requestId, fullPath, jsondata, result, {\n state: { domain: null }\n })\n } catch (e) {}\n if (response.ok) {\n return result\n } else {\n throw new Error(`(${response.status}) ${result.detail}`)\n }\n }\n\n async put(path: string, data: any = {}) {\n const { apiKey } = this.config\n\n const jsondata = JSON.stringify(data)\n const requestId: string = this.generateRequestId()\n const fullPath: string = `${this.getBaseUrl()}${path}`\n debug('data', data)\n\n const response: any = await fetch(fullPath, {\n method: 'put',\n headers: {\n 'Content-Type': 'application/json',\n request_id: requestId,\n 'x-api-key': apiKey\n },\n body: jsondata\n })\n\n if (response.ok) {\n return await response.json()\n } else {\n const result = await response.json()\n throw new Error(`(${response.status}) ${result.message}`)\n }\n }\n\n async get(path: string, data: any = {}) {\n const { apiKey } = this.config\n\n const qs = Object.entries(data)\n .map(([k, v]) => `${k}=${encodeURIComponent(String(v))}`)\n .join('&')\n\n const fullPath: string = `${this.getBaseUrl()}${path}`\n const endpoint = `${fullPath}${qs ? '?' + qs : ''}`\n debug('endpoint', endpoint)\n\n const requestId: string = this.generateRequestId()\n\n const response: any = await fetch(endpoint, {\n method: 'get',\n headers: {\n 'Content-Type': 'application/json',\n request_id: requestId,\n 'x-api-key': apiKey\n }\n })\n\n if (response.ok) {\n return await response.json()\n } else {\n const result = await response.json()\n throw new Error(`(${response.status}) ${result.message}`)\n }\n }\n}\n"]}
|
@@ -6,6 +6,7 @@ const shell_1 = require("@things-factory/shell");
|
|
6
6
|
const service_1 = require("../../service");
|
7
7
|
const decorators_1 = require("./decorators");
|
8
8
|
class SellercraftChannelIntegrationAPI {
|
9
|
+
static { this.platforms = {}; }
|
9
10
|
static registerPlatform(name, action, apis) {
|
10
11
|
SellercraftChannelIntegrationAPI.platforms[name] = {
|
11
12
|
action,
|
@@ -30,7 +31,6 @@ class SellercraftChannelIntegrationAPI {
|
|
30
31
|
static ingestChannelProduct(sellercraft, req) { }
|
31
32
|
}
|
32
33
|
exports.SellercraftChannelIntegrationAPI = SellercraftChannelIntegrationAPI;
|
33
|
-
SellercraftChannelIntegrationAPI.platforms = {};
|
34
34
|
tslib_1.__decorate([
|
35
35
|
decorators_1.api,
|
36
36
|
tslib_1.__metadata("design:type", Function),
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/controllers/sellercraft-channel-integration-api/index.ts"],"names":[],"mappings":";;;;AAAA,iDAAqD;AAErD,2CAA2C;AAC3C,6CAAkC;AAElC,MAAa,gCAAgC;
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/controllers/sellercraft-channel-integration-api/index.ts"],"names":[],"mappings":";;;;AAAA,iDAAqD;AAErD,2CAA2C;AAC3C,6CAAkC;AAElC,MAAa,gCAAgC;aACpC,cAAS,GAAG,EAAE,CAAA;IAErB,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI;QACxC,gCAAgC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG;YACjD,MAAM;YACN,IAAI;SACL,CAAA;IACH,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,IAAI;QACrB,OAAO,gCAAgC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IACzD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;QAC5B,MAAM,UAAU,GAAG,IAAA,qBAAa,EAAC,qBAAW,CAAC,CAAA;QAC7C,OAAO,MAAM,UAAU,CAAC,OAAO,CAAC;YAC9B,KAAK,EAAE,EAAE,EAAE,EAAE;YACb,SAAS,EAAE,CAAC,QAAQ,CAAC;SACtB,CAAC,CAAA;IACJ,CAAC;IAGM,AAAP,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAQ,CAAC;IAG9B,AAAP,MAAM,CAAC,uBAAuB,CAAC,WAAW,EAAE,GAAG,IAAQ,CAAC;IAGjD,AAAP,MAAM,CAAC,+BAA+B,CAAC,WAAW,EAAE,GAAG,IAAQ,CAAC;IAGzD,AAAP,MAAM,CAAC,yBAAyB,CAAC,WAAW,EAAE,GAAG,IAAQ,CAAC;IAGnD,AAAP,MAAM,CAAC,kBAAkB,CAAC,WAAW,EAAE,GAAG,IAAQ,CAAC;IAG5C,AAAP,MAAM,CAAC,oBAAoB,CAAC,WAAW,EAAE,GAAG,IAAQ,CAAC;;AAtCvD,4EAuCC;AAhBQ;IADN,gBAAG;;;;kDACiC;AAG9B;IADN,gBAAG;;;;qEACoD;AAGjD;IADN,gBAAG;;;;6EAC4D;AAGzD;IADN,gBAAG;;;;uEACsD;AAGnD;IADN,gBAAG;;;;gEAC+C;AAG5C;IADN,gBAAG;;;;kEACiD","sourcesContent":["import { getRepository } from '@things-factory/shell'\n\nimport { Sellercraft } from '../../service'\nimport { api } from './decorators'\n\nexport class SellercraftChannelIntegrationAPI {\n static platforms = {}\n\n static registerPlatform(name, action, apis) {\n SellercraftChannelIntegrationAPI.platforms[name] = {\n action,\n apis\n }\n }\n\n static getPlatform(name) {\n return SellercraftChannelIntegrationAPI.platforms[name]\n }\n\n static async getSellercraft(id) {\n const repository = getRepository(Sellercraft)\n return await repository.findOne({\n where: { id },\n relations: ['domain']\n })\n }\n\n @api\n static echo(sellercraft, req): any {}\n\n @api\n static ingestChannelCategories(sellercraft, req): any {}\n\n @api\n static ingestChannelCategoryAttributes(sellercraft, req): any {}\n\n @api\n static ingestChannelOrderPackage(sellercraft, req): any {}\n\n @api\n static ingestChannelOrder(sellercraft, req): any {}\n\n @api\n static ingestChannelProduct(sellercraft, req): any {}\n}\n"]}
|