@things-factory/operato-mms 6.2.101 → 6.2.102

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 (78) hide show
  1. package/package.json +5 -5
  2. package/dist-server/controllers/index.js +0 -1
  3. package/dist-server/controllers/index.js.map +0 -1
  4. package/dist-server/entities/index.js +0 -5
  5. package/dist-server/entities/index.js.map +0 -1
  6. package/dist-server/graphql/index.js +0 -11
  7. package/dist-server/graphql/index.js.map +0 -1
  8. package/dist-server/graphql/resolvers/index.js +0 -10
  9. package/dist-server/graphql/resolvers/index.js.map +0 -1
  10. package/dist-server/graphql/resolvers/interface-with-hub/add-release-order.js +0 -178
  11. package/dist-server/graphql/resolvers/interface-with-hub/add-release-order.js.map +0 -1
  12. package/dist-server/graphql/resolvers/interface-with-hub/auto-add-release-order.js +0 -181
  13. package/dist-server/graphql/resolvers/interface-with-hub/auto-add-release-order.js.map +0 -1
  14. package/dist-server/graphql/resolvers/interface-with-hub/auto-update-all-marketplace-product-variation-quantity.js +0 -149
  15. package/dist-server/graphql/resolvers/interface-with-hub/auto-update-all-marketplace-product-variation-quantity.js.map +0 -1
  16. package/dist-server/graphql/resolvers/interface-with-hub/generate-replenishment-order.js +0 -26
  17. package/dist-server/graphql/resolvers/interface-with-hub/generate-replenishment-order.js.map +0 -1
  18. package/dist-server/graphql/resolvers/interface-with-hub/index.js +0 -12
  19. package/dist-server/graphql/resolvers/interface-with-hub/index.js.map +0 -1
  20. package/dist-server/graphql/resolvers/interface-with-hub/warehouse-marketplace-products.js +0 -221
  21. package/dist-server/graphql/resolvers/interface-with-hub/warehouse-marketplace-products.js.map +0 -1
  22. package/dist-server/graphql/resolvers/shipping-provider/index.js +0 -6
  23. package/dist-server/graphql/resolvers/shipping-provider/index.js.map +0 -1
  24. package/dist-server/graphql/resolvers/shipping-provider/shipping-providers.js +0 -32
  25. package/dist-server/graphql/resolvers/shipping-provider/shipping-providers.js.map +0 -1
  26. package/dist-server/graphql/resolvers/warehouse-product/auto-link-warehouse-marketplace-product-variations.js +0 -67
  27. package/dist-server/graphql/resolvers/warehouse-product/auto-link-warehouse-marketplace-product-variations.js.map +0 -1
  28. package/dist-server/graphql/resolvers/warehouse-product/index.js +0 -6
  29. package/dist-server/graphql/resolvers/warehouse-product/index.js.map +0 -1
  30. package/dist-server/graphql/types/index.js +0 -11
  31. package/dist-server/graphql/types/index.js.map +0 -1
  32. package/dist-server/graphql/types/interface-with-hub/index.js +0 -29
  33. package/dist-server/graphql/types/interface-with-hub/index.js.map +0 -1
  34. package/dist-server/graphql/types/interface-with-hub/new-stock-replenishment.js +0 -32
  35. package/dist-server/graphql/types/interface-with-hub/new-stock-replenishment.js.map +0 -1
  36. package/dist-server/graphql/types/interface-with-hub/replenishment-order-product.js +0 -48
  37. package/dist-server/graphql/types/interface-with-hub/replenishment-order-product.js.map +0 -1
  38. package/dist-server/graphql/types/interface-with-hub/stock-replenishment-list.js +0 -14
  39. package/dist-server/graphql/types/interface-with-hub/stock-replenishment-list.js.map +0 -1
  40. package/dist-server/graphql/types/interface-with-hub/stock-replenishment.js +0 -45
  41. package/dist-server/graphql/types/interface-with-hub/stock-replenishment.js.map +0 -1
  42. package/dist-server/graphql/types/interface-with-hub/warehouse-inventory.js +0 -15
  43. package/dist-server/graphql/types/interface-with-hub/warehouse-inventory.js.map +0 -1
  44. package/dist-server/graphql/types/interface-with-hub/warehouse-marketplace-product-list.js +0 -12
  45. package/dist-server/graphql/types/interface-with-hub/warehouse-marketplace-product-list.js.map +0 -1
  46. package/dist-server/graphql/types/interface-with-hub/warehouse-marketplace-product.js +0 -18
  47. package/dist-server/graphql/types/interface-with-hub/warehouse-marketplace-product.js.map +0 -1
  48. package/dist-server/graphql/types/shipping-provider/index.js +0 -10
  49. package/dist-server/graphql/types/shipping-provider/index.js.map +0 -1
  50. package/dist-server/graphql/types/shipping-provider/shipping-provider-list.js +0 -11
  51. package/dist-server/graphql/types/shipping-provider/shipping-provider-list.js.map +0 -1
  52. package/dist-server/graphql/types/shipping-provider/shipping-provider.js +0 -11
  53. package/dist-server/graphql/types/shipping-provider/shipping-provider.js.map +0 -1
  54. package/dist-server/graphql/types/warehouse-product/index.js +0 -11
  55. package/dist-server/graphql/types/warehouse-product/index.js.map +0 -1
  56. package/dist-server/graphql/types/warehouse-product/warehouse-product.js +0 -13
  57. package/dist-server/graphql/types/warehouse-product/warehouse-product.js.map +0 -1
  58. package/dist-server/index.js +0 -8
  59. package/dist-server/index.js.map +0 -1
  60. package/dist-server/middlewares/index.js +0 -4
  61. package/dist-server/middlewares/index.js.map +0 -1
  62. package/dist-server/migrations/1599732967233-SeedCommonCode.js +0 -51
  63. package/dist-server/migrations/1599732967233-SeedCommonCode.js.map +0 -1
  64. package/dist-server/migrations/1608009991075-SeedUser.js +0 -50
  65. package/dist-server/migrations/1608009991075-SeedUser.js.map +0 -1
  66. package/dist-server/migrations/index.js +0 -12
  67. package/dist-server/migrations/index.js.map +0 -1
  68. package/dist-server/routers/etrax-router.js +0 -156
  69. package/dist-server/routers/etrax-router.js.map +0 -1
  70. package/dist-server/routers/shopify-pos-public-router.js +0 -107
  71. package/dist-server/routers/shopify-pos-public-router.js.map +0 -1
  72. package/dist-server/routes.js +0 -10
  73. package/dist-server/routes.js.map +0 -1
  74. package/dist-server/tsconfig.tsbuildinfo +0 -1
  75. package/dist-server/util/interface-helper.js +0 -51
  76. package/dist-server/util/interface-helper.js.map +0 -1
  77. package/dist-server/util/no-generator.js +0 -14
  78. package/dist-server/util/no-generator.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/migrations/index.ts"],"names":[],"mappings":";;;AAAA,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAEjB,QAAA,UAAU,GAAG,EAAE,CAAA;AAE1B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI;IAC1E,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAAE,OAAM;IAC3C,kBAAU,GAAG,kBAAU,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;AAClF,CAAC,CAAC,CAAA","sourcesContent":["const glob = require('glob')\nconst path = require('path')\n\nexport var migrations = []\n\nglob.sync(path.resolve(__dirname, '.', '**', '*.js')).forEach(function (file) {\n if (file.indexOf('index.js') !== -1) return\n migrations = migrations.concat(Object.values(require(path.resolve(file))) || [])\n})\n"]}
@@ -1,156 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.etraxRouter = void 0;
4
- const tslib_1 = require("tslib");
5
- const koa_router_1 = tslib_1.__importDefault(require("koa-router"));
6
- const biz_base_1 = require("@things-factory/biz-base");
7
- const integration_fulfillment_1 = require("@things-factory/integration-fulfillment");
8
- const integration_lmd_1 = require("@things-factory/integration-lmd");
9
- const integration_marketplace_1 = require("@things-factory/integration-marketplace");
10
- const marketplace_base_1 = require("@things-factory/marketplace-base");
11
- const shell_1 = require("@things-factory/shell");
12
- const debug = require('debug')('things-factory:jest.config');
13
- exports.etraxRouter = new koa_router_1.default();
14
- exports.etraxRouter.post(`/lmd/etrax/status_update`, async (context, next) => {
15
- const repo = (0, shell_1.getRepository)(integration_lmd_1.LastMileDelivery);
16
- const requestBody = context.request.body;
17
- debug('etrax_status_update/context: ', context);
18
- const bodyToken = requestBody.Token;
19
- const bodyTimestamp = requestBody.TimeStamp;
20
- const bodySourceID = requestBody.SourceID;
21
- const extOrderNo = requestBody.ExtOrderNo;
22
- const trackingNo = requestBody.TrackingNo;
23
- const status = requestBody.Status;
24
- const awbUrl = requestBody.AWBurl;
25
- const customerCode = bodySourceID;
26
- const lmd = await repo.findOne({
27
- where: { clientName: customerCode, platform: 'eTrax' }
28
- });
29
- debug(lmd);
30
- const secretKey = lmd.secretKey;
31
- if (customerCode === '' || secretKey === '') {
32
- //Cant find the correct record
33
- return;
34
- }
35
- const etrax = new integration_lmd_1.Etrax(customerCode);
36
- debug('RequestBody: ', requestBody);
37
- //Validate Token
38
- const validate = await etrax.validateToken(bodyToken, 'UPDATE_STATUS', bodyTimestamp);
39
- debug('IsAuthenticated: ', validate);
40
- if (!validate) {
41
- //Return unauthorized
42
- const resp = {
43
- Status: 'ERROR',
44
- Code: 302,
45
- Message: 'Validate failed',
46
- OrderNo: extOrderNo,
47
- ExtOrderNo: extOrderNo,
48
- TrackingNo: trackingNo
49
- };
50
- context.type = 'application/json';
51
- context.body = JSON.stringify(resp);
52
- return;
53
- }
54
- //TAS - Transporter Assignment Success
55
- if (status === 'TAS') {
56
- //Update DB if Validate Success
57
- const orderRepo = (0, shell_1.getRepository)(marketplace_base_1.MarketplaceOrder);
58
- const orderShippingRepo = (0, shell_1.getRepository)(marketplace_base_1.MarketplaceOrderShipping);
59
- let order = await orderRepo.findOne({
60
- where: { orderNo: extOrderNo },
61
- relations: [
62
- 'domain',
63
- 'marketplaceStore',
64
- 'marketplaceOrderItems',
65
- 'marketplaceOrderItems.marketplaceOrderShippingItems',
66
- 'marketplaceOrderItems.marketplaceOrderShippingItems.marketplaceOrderShipping',
67
- 'marketplaceOrderItems.marketplaceOrderShippingItems.marketplaceOrderShipping.fulfillmentCenter',
68
- 'marketplaceOrderItems.marketplaceProductVariation'
69
- ]
70
- });
71
- let orderItems = order.marketplaceOrderItems;
72
- const marketplaceStore = order.marketplaceStore;
73
- const marketplaceTransporter = await (0, shell_1.getRepository)(integration_marketplace_1.MarketplaceTransporter).findOne({
74
- where: { marketplaceStore: { id: marketplaceStore.id } },
75
- relations: ['pickupTransporter']
76
- });
77
- for (const orderItem of orderItems) {
78
- if (orderItem.marketplaceOrderShippingItems[0].marketplaceOrderShipping !== null) {
79
- const orderShippingItems = orderItem.marketplaceOrderShippingItems;
80
- const orderShipping = orderShippingItems[0].marketplaceOrderShipping;
81
- const fulfillmentCenter = orderShipping === null || orderShipping === void 0 ? void 0 : orderShipping.fulfillmentCenter;
82
- const centerId = fulfillmentCenter.centerId;
83
- const warehouseDomain = await (0, shell_1.getRepository)(shell_1.Domain).findOne({ where: { subdomain: centerId } });
84
- const customerBizplaces = await (0, biz_base_1.getCustomerBizplaces)(warehouseDomain);
85
- const customerBizplaceId = customerBizplaces.find(customerBizplace => customerBizplace.company.domain.id == (order === null || order === void 0 ? void 0 : order.domain.id)).id;
86
- let patch = {
87
- id: orderShipping.releaseOrderId,
88
- trackingNo: trackingNo,
89
- transporter: marketplaceTransporter === null || marketplaceTransporter === void 0 ? void 0 : marketplaceTransporter.pickupTransporter.name
90
- };
91
- integration_fulfillment_1.FulfillmentAPI.updateReleaseGoodDetails(fulfillmentCenter, {
92
- customerBizplaceId,
93
- releaseOrder: Object.assign({}, patch),
94
- shippingOrder: null
95
- });
96
- await orderShippingRepo.update({ id: orderShipping.id }, {
97
- trackingNo: trackingNo,
98
- airwayBill: awbUrl,
99
- updatedAt: new Date(),
100
- transporter: (marketplaceTransporter === null || marketplaceTransporter === void 0 ? void 0 : marketplaceTransporter.pickupTransporter.name) || orderShipping.transporter
101
- });
102
- }
103
- }
104
- // to-do update tracking no to every marketplaces
105
- if (marketplaceStore.platform === 'woocommerce' || marketplaceStore.platform === 'shopify') {
106
- const note = 'http://ets.sntglobal.com/?mod=tracking&action=index&orders=' + trackingNo;
107
- let orderInfo = await (0, shell_1.getRepository)(marketplace_base_1.MarketplaceOrder).findOne({
108
- where: {
109
- name: order.name
110
- },
111
- relations: ['marketplaceOrderItems', 'marketplaceOrderItems.marketplaceProductVariation']
112
- });
113
- const result = await integration_marketplace_1.StoreAPI.setStoreOrderStatusReadyToShip(marketplaceStore, {
114
- orderId: order.name,
115
- trackingUrl: note,
116
- trackingNo,
117
- order: orderInfo,
118
- note,
119
- transporter: marketplaceTransporter === null || marketplaceTransporter === void 0 ? void 0 : marketplaceTransporter.pickupTransporter.name
120
- });
121
- if (marketplaceStore.platform === 'woocommerce') {
122
- await integration_marketplace_1.StoreAPI.updateOrderStatus(marketplaceStore, {
123
- orderId: order.name,
124
- status: 'DELIVERED'
125
- });
126
- }
127
- }
128
- try {
129
- const updatedOrder = await integration_marketplace_1.StoreAPI.getStoreOrder(marketplaceStore, { orderId: order.name });
130
- order.status = updatedOrder.status;
131
- order.orderUpdatedAt = updatedOrder.orderUpdatedAt;
132
- order.trackingNo = updatedOrder.trackingNo;
133
- order.shippingProvider = updatedOrder.shippingProvider;
134
- await (0, shell_1.getRepository)(marketplace_base_1.MarketplaceOrder).save(order);
135
- for (let idx = 0; idx < order.marketplaceOrderItems.length; idx++) {
136
- let matchItem = updatedOrder.orderItems.find(i => i.variationId == order.marketplaceOrderItems[idx].marketplaceProductVariation.variationId);
137
- if (matchItem) {
138
- let targetMarketplaceOrderItem = Object.assign(Object.assign({}, order.marketplaceOrderItems[idx]), { shippingProvider: matchItem.shippingProvider, trackingCode: matchItem.trackingNo, status: matchItem.status });
139
- await (0, shell_1.getRepository)(marketplace_base_1.MarketplaceOrderItem).save(targetMarketplaceOrderItem);
140
- }
141
- }
142
- }
143
- catch (e) { }
144
- const resp = {
145
- Status: 'SUCCESS',
146
- Code: 200,
147
- Message: 'Updated',
148
- OrderNo: order.orderNo,
149
- ExtOrderNo: extOrderNo,
150
- TrackingNo: trackingNo
151
- };
152
- context.type = 'application/json';
153
- context.body = JSON.stringify(resp);
154
- }
155
- });
156
- //# sourceMappingURL=etrax-router.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"etrax-router.js","sourceRoot":"","sources":["../../server/routers/etrax-router.ts"],"names":[],"mappings":";;;;AAAA,oEAA+B;AAE/B,uDAAyE;AACzE,qFAA2F;AAC3F,qEAAyE;AACzE,qFAA4G;AAC5G,uEAKyC;AACzC,iDAA6D;AAE7D,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,4BAA4B,CAAC,CAAA;AAC/C,QAAA,WAAW,GAAG,IAAI,oBAAM,EAAE,CAAA;AAEvC,mBAAW,CAAC,IAAI,CAAC,0BAA0B,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;IACnE,MAAM,IAAI,GAAG,IAAA,qBAAa,EAAC,kCAAgB,CAAC,CAAA;IAC5C,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAA;IACxC,KAAK,CAAC,+BAA+B,EAAE,OAAO,CAAC,CAAA;IAE/C,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAA;IACnC,MAAM,aAAa,GAAG,WAAW,CAAC,SAAS,CAAA;IAC3C,MAAM,YAAY,GAAG,WAAW,CAAC,QAAQ,CAAA;IACzC,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAA;IACzC,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAA;IACzC,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAA;IACjC,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAA;IAEjC,MAAM,YAAY,GAAG,YAAY,CAAA;IACjC,MAAM,GAAG,GAAqB,MAAM,IAAI,CAAC,OAAO,CAAC;QAC/C,KAAK,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE;KACvD,CAAC,CAAA;IACF,KAAK,CAAC,GAAG,CAAC,CAAA;IAEV,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAA;IAE/B,IAAI,YAAY,KAAK,EAAE,IAAI,SAAS,KAAK,EAAE,EAAE;QAC3C,8BAA8B;QAC9B,OAAM;KACP;IAED,MAAM,KAAK,GAAG,IAAI,uBAAK,CAAC,YAAY,CAAC,CAAA;IACrC,KAAK,CAAC,eAAe,EAAE,WAAW,CAAC,CAAA;IACnC,gBAAgB;IAChB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,eAAe,EAAE,aAAa,CAAC,CAAA;IACrF,KAAK,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAA;IAEpC,IAAI,CAAC,QAAQ,EAAE;QACb,qBAAqB;QACrB,MAAM,IAAI,GAAG;YACX,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,GAAG;YACT,OAAO,EAAE,iBAAiB;YAC1B,OAAO,EAAE,UAAU;YACnB,UAAU,EAAE,UAAU;YACtB,UAAU,EAAE,UAAU;SACvB,CAAA;QACD,OAAO,CAAC,IAAI,GAAG,kBAAkB,CAAA;QACjC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QACnC,OAAM;KACP;IAED,sCAAsC;IACtC,IAAI,MAAM,KAAK,KAAK,EAAE;QACpB,+BAA+B;QAC/B,MAAM,SAAS,GAAG,IAAA,qBAAa,EAAC,mCAAgB,CAAC,CAAA;QACjD,MAAM,iBAAiB,GAAG,IAAA,qBAAa,EAAC,2CAAwB,CAAC,CAAA;QAEjE,IAAI,KAAK,GAAqB,MAAM,SAAS,CAAC,OAAO,CAAC;YACpD,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;YAC9B,SAAS,EAAE;gBACT,QAAQ;gBACR,kBAAkB;gBAClB,uBAAuB;gBACvB,qDAAqD;gBACrD,8EAA8E;gBAC9E,gGAAgG;gBAChG,mDAAmD;aACpD;SACF,CAAC,CAAA;QACF,IAAI,UAAU,GAA2B,KAAK,CAAC,qBAAqB,CAAA;QAEpE,MAAM,gBAAgB,GAAqB,KAAK,CAAC,gBAAgB,CAAA;QAEjE,MAAM,sBAAsB,GAA2B,MAAM,IAAA,qBAAa,EAAC,gDAAsB,CAAC,CAAC,OAAO,CAAC;YACzG,KAAK,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,EAAE,gBAAgB,CAAC,EAAE,EAAE,EAAE;YACxD,SAAS,EAAE,CAAC,mBAAmB,CAAC;SACjC,CAAC,CAAA;QAEF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;YAClC,IAAI,SAAS,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,wBAAwB,KAAK,IAAI,EAAE;gBAChF,MAAM,kBAAkB,GAAmC,SAAS,CAAC,6BAA6B,CAAA;gBAClG,MAAM,aAAa,GAA6B,kBAAkB,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAA;gBAC9F,MAAM,iBAAiB,GAAsB,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,iBAAiB,CAAA;gBAE7E,MAAM,QAAQ,GAAW,iBAAiB,CAAC,QAAQ,CAAA;gBACnD,MAAM,eAAe,GAAW,MAAM,IAAA,qBAAa,EAAC,cAAM,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAA;gBACvG,MAAM,iBAAiB,GAAe,MAAM,IAAA,+BAAoB,EAAC,eAAe,CAAC,CAAA;gBACjF,MAAM,kBAAkB,GAAW,iBAAiB,CAAC,IAAI,CACvD,gBAAgB,CAAC,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,KAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,CAAC,EAAE,CAAA,CAC3E,CAAC,EAAE,CAAA;gBAEJ,IAAI,KAAK,GAAG;oBACV,EAAE,EAAE,aAAa,CAAC,cAAc;oBAChC,UAAU,EAAE,UAAU;oBACtB,WAAW,EAAE,sBAAsB,aAAtB,sBAAsB,uBAAtB,sBAAsB,CAAE,iBAAiB,CAAC,IAAI;iBAC5D,CAAA;gBAED,wCAAc,CAAC,wBAAwB,CAAC,iBAAiB,EAAE;oBACzD,kBAAkB;oBAClB,YAAY,oBAAO,KAAK,CAAE;oBAC1B,aAAa,EAAE,IAAI;iBACpB,CAAC,CAAA;gBAEF,MAAM,iBAAiB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,aAAa,CAAC,EAAE,EAAE,EAAE;oBACvD,UAAU,EAAE,UAAU;oBACtB,UAAU,EAAE,MAAM;oBAClB,SAAS,EAAE,IAAI,IAAI,EAAE;oBACrB,WAAW,EAAE,CAAA,sBAAsB,aAAtB,sBAAsB,uBAAtB,sBAAsB,CAAE,iBAAiB,CAAC,IAAI,KAAI,aAAa,CAAC,WAAW;iBAClF,CAAC,CAAA;aACV;SACF;QAED,iDAAiD;QACjD,IAAI,gBAAgB,CAAC,QAAQ,KAAK,aAAa,IAAI,gBAAgB,CAAC,QAAQ,KAAK,SAAS,EAAE;YAC1F,MAAM,IAAI,GAAG,6DAA6D,GAAG,UAAU,CAAA;YACvF,IAAI,SAAS,GAAqB,MAAM,IAAA,qBAAa,EAAC,mCAAgB,CAAC,CAAC,OAAO,CAAC;gBAC9E,KAAK,EAAE;oBACL,IAAI,EAAE,KAAK,CAAC,IAAI;iBACjB;gBACD,SAAS,EAAE,CAAC,uBAAuB,EAAE,mDAAmD,CAAC;aAC1F,CAAC,CAAA;YACF,MAAM,MAAM,GAAG,MAAM,kCAAQ,CAAC,8BAA8B,CAAC,gBAAgB,EAAE;gBAC7E,OAAO,EAAE,KAAK,CAAC,IAAI;gBACnB,WAAW,EAAE,IAAI;gBACjB,UAAU;gBACV,KAAK,EAAE,SAAS;gBAChB,IAAI;gBACJ,WAAW,EAAE,sBAAsB,aAAtB,sBAAsB,uBAAtB,sBAAsB,CAAE,iBAAiB,CAAC,IAAI;aAC5D,CAAC,CAAA;YAEF,IAAI,gBAAgB,CAAC,QAAQ,KAAK,aAAa,EAAE;gBAC/C,MAAM,kCAAQ,CAAC,iBAAiB,CAAC,gBAAgB,EAAE;oBACjD,OAAO,EAAE,KAAK,CAAC,IAAI;oBACnB,MAAM,EAAE,WAAW;iBACpB,CAAC,CAAA;aACH;SACF;QAED,IAAI;YACF,MAAM,YAAY,GAAG,MAAM,kCAAQ,CAAC,aAAa,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;YAE5F,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAA;YAClC,KAAK,CAAC,cAAc,GAAG,YAAY,CAAC,cAAc,CAAA;YAClD,KAAK,CAAC,UAAU,GAAG,YAAY,CAAC,UAAU,CAAA;YAC1C,KAAK,CAAC,gBAAgB,GAAG,YAAY,CAAC,gBAAgB,CAAA;YACtD,MAAM,IAAA,qBAAa,EAAC,mCAAgB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAEjD,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,qBAAqB,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;gBACjE,IAAI,SAAS,GAAG,YAAY,CAAC,UAAU,CAAC,IAAI,CAC1C,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,KAAK,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,2BAA2B,CAAC,WAAW,CAC/F,CAAA;gBAED,IAAI,SAAS,EAAE;oBACb,IAAI,0BAA0B,mCACzB,KAAK,CAAC,qBAAqB,CAAC,GAAG,CAAC,KACnC,gBAAgB,EAAE,SAAS,CAAC,gBAAgB,EAC5C,YAAY,EAAE,SAAS,CAAC,UAAU,EAClC,MAAM,EAAE,SAAS,CAAC,MAAM,GACzB,CAAA;oBAED,MAAM,IAAA,qBAAa,EAAC,uCAAoB,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;iBAC3E;aACF;SACF;QAAC,OAAO,CAAC,EAAE,GAAE;QAEd,MAAM,IAAI,GAAG;YACX,MAAM,EAAE,SAAS;YACjB,IAAI,EAAE,GAAG;YACT,OAAO,EAAE,SAAS;YAClB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,UAAU,EAAE,UAAU;YACtB,UAAU,EAAE,UAAU;SACvB,CAAA;QACD,OAAO,CAAC,IAAI,GAAG,kBAAkB,CAAA;QACjC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;KACpC;AACH,CAAC,CAAC,CAAA","sourcesContent":["import Router from 'koa-router'\n\nimport { Bizplace, getCustomerBizplaces } from '@things-factory/biz-base'\nimport { FulfillmentAPI, FulfillmentCenter } from '@things-factory/integration-fulfillment'\nimport { Etrax, LastMileDelivery } from '@things-factory/integration-lmd'\nimport { MarketplaceStore, MarketplaceTransporter, StoreAPI } from '@things-factory/integration-marketplace'\nimport {\n MarketplaceOrder,\n MarketplaceOrderItem,\n MarketplaceOrderShipping,\n MarketplaceOrderShippingItem\n} from '@things-factory/marketplace-base'\nimport { Domain, getRepository } from '@things-factory/shell'\n\nconst debug = require('debug')('things-factory:jest.config')\nexport const etraxRouter = new Router()\n\netraxRouter.post(`/lmd/etrax/status_update`, async (context, next) => {\n const repo = getRepository(LastMileDelivery)\n const requestBody = context.request.body\n debug('etrax_status_update/context: ', context)\n\n const bodyToken = requestBody.Token\n const bodyTimestamp = requestBody.TimeStamp\n const bodySourceID = requestBody.SourceID\n const extOrderNo = requestBody.ExtOrderNo\n const trackingNo = requestBody.TrackingNo\n const status = requestBody.Status\n const awbUrl = requestBody.AWBurl\n\n const customerCode = bodySourceID\n const lmd: LastMileDelivery = await repo.findOne({\n where: { clientName: customerCode, platform: 'eTrax' }\n })\n debug(lmd)\n\n const secretKey = lmd.secretKey\n\n if (customerCode === '' || secretKey === '') {\n //Cant find the correct record\n return\n }\n\n const etrax = new Etrax(customerCode)\n debug('RequestBody: ', requestBody)\n //Validate Token\n const validate = await etrax.validateToken(bodyToken, 'UPDATE_STATUS', bodyTimestamp)\n debug('IsAuthenticated: ', validate)\n\n if (!validate) {\n //Return unauthorized\n const resp = {\n Status: 'ERROR',\n Code: 302,\n Message: 'Validate failed',\n OrderNo: extOrderNo,\n ExtOrderNo: extOrderNo,\n TrackingNo: trackingNo\n }\n context.type = 'application/json'\n context.body = JSON.stringify(resp)\n return\n }\n\n //TAS - Transporter Assignment Success\n if (status === 'TAS') {\n //Update DB if Validate Success\n const orderRepo = getRepository(MarketplaceOrder)\n const orderShippingRepo = getRepository(MarketplaceOrderShipping)\n\n let order: MarketplaceOrder = await orderRepo.findOne({\n where: { orderNo: extOrderNo },\n relations: [\n 'domain',\n 'marketplaceStore',\n 'marketplaceOrderItems',\n 'marketplaceOrderItems.marketplaceOrderShippingItems',\n 'marketplaceOrderItems.marketplaceOrderShippingItems.marketplaceOrderShipping',\n 'marketplaceOrderItems.marketplaceOrderShippingItems.marketplaceOrderShipping.fulfillmentCenter',\n 'marketplaceOrderItems.marketplaceProductVariation'\n ]\n })\n let orderItems: MarketplaceOrderItem[] = order.marketplaceOrderItems\n\n const marketplaceStore: MarketplaceStore = order.marketplaceStore\n\n const marketplaceTransporter: MarketplaceTransporter = await getRepository(MarketplaceTransporter).findOne({\n where: { marketplaceStore: { id: marketplaceStore.id } },\n relations: ['pickupTransporter']\n })\n\n for (const orderItem of orderItems) {\n if (orderItem.marketplaceOrderShippingItems[0].marketplaceOrderShipping !== null) {\n const orderShippingItems: MarketplaceOrderShippingItem[] = orderItem.marketplaceOrderShippingItems\n const orderShipping: MarketplaceOrderShipping = orderShippingItems[0].marketplaceOrderShipping\n const fulfillmentCenter: FulfillmentCenter = orderShipping?.fulfillmentCenter\n\n const centerId: string = fulfillmentCenter.centerId\n const warehouseDomain: Domain = await getRepository(Domain).findOne({ where: { subdomain: centerId } })\n const customerBizplaces: Bizplace[] = await getCustomerBizplaces(warehouseDomain)\n const customerBizplaceId: string = customerBizplaces.find(\n customerBizplace => customerBizplace.company.domain.id == order?.domain.id\n ).id\n\n let patch = {\n id: orderShipping.releaseOrderId,\n trackingNo: trackingNo,\n transporter: marketplaceTransporter?.pickupTransporter.name\n }\n\n FulfillmentAPI.updateReleaseGoodDetails(fulfillmentCenter, {\n customerBizplaceId,\n releaseOrder: { ...patch },\n shippingOrder: null\n })\n\n await orderShippingRepo.update({ id: orderShipping.id }, {\n trackingNo: trackingNo,\n airwayBill: awbUrl,\n updatedAt: new Date(),\n transporter: marketplaceTransporter?.pickupTransporter.name || orderShipping.transporter\n } as any)\n }\n }\n\n // to-do update tracking no to every marketplaces\n if (marketplaceStore.platform === 'woocommerce' || marketplaceStore.platform === 'shopify') {\n const note = 'http://ets.sntglobal.com/?mod=tracking&action=index&orders=' + trackingNo\n let orderInfo: MarketplaceOrder = await getRepository(MarketplaceOrder).findOne({\n where: {\n name: order.name\n },\n relations: ['marketplaceOrderItems', 'marketplaceOrderItems.marketplaceProductVariation']\n })\n const result = await StoreAPI.setStoreOrderStatusReadyToShip(marketplaceStore, {\n orderId: order.name,\n trackingUrl: note,\n trackingNo,\n order: orderInfo,\n note,\n transporter: marketplaceTransporter?.pickupTransporter.name\n })\n\n if (marketplaceStore.platform === 'woocommerce') {\n await StoreAPI.updateOrderStatus(marketplaceStore, {\n orderId: order.name,\n status: 'DELIVERED'\n })\n }\n }\n\n try {\n const updatedOrder = await StoreAPI.getStoreOrder(marketplaceStore, { orderId: order.name })\n\n order.status = updatedOrder.status\n order.orderUpdatedAt = updatedOrder.orderUpdatedAt\n order.trackingNo = updatedOrder.trackingNo\n order.shippingProvider = updatedOrder.shippingProvider\n await getRepository(MarketplaceOrder).save(order)\n\n for (let idx = 0; idx < order.marketplaceOrderItems.length; idx++) {\n let matchItem = updatedOrder.orderItems.find(\n i => i.variationId == order.marketplaceOrderItems[idx].marketplaceProductVariation.variationId\n )\n\n if (matchItem) {\n let targetMarketplaceOrderItem = {\n ...order.marketplaceOrderItems[idx],\n shippingProvider: matchItem.shippingProvider,\n trackingCode: matchItem.trackingNo,\n status: matchItem.status\n }\n\n await getRepository(MarketplaceOrderItem).save(targetMarketplaceOrderItem)\n }\n }\n } catch (e) {}\n\n const resp = {\n Status: 'SUCCESS',\n Code: 200,\n Message: 'Updated',\n OrderNo: order.orderNo,\n ExtOrderNo: extOrderNo,\n TrackingNo: trackingNo\n }\n context.type = 'application/json'\n context.body = JSON.stringify(resp)\n }\n})\n"]}
@@ -1,107 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.shopifyPosPublicRouter = void 0;
4
- const tslib_1 = require("tslib");
5
- const koa_router_1 = tslib_1.__importDefault(require("koa-router"));
6
- const biz_base_1 = require("@things-factory/biz-base");
7
- const env_1 = require("@things-factory/env");
8
- const integration_marketplace_1 = require("@things-factory/integration-marketplace");
9
- const marketplace_base_1 = require("@things-factory/marketplace-base");
10
- const product_base_1 = require("@things-factory/product-base");
11
- const shell_1 = require("@things-factory/shell");
12
- const warehouse_base_1 = require("@things-factory/warehouse-base");
13
- const shopifyConfig = env_1.config.get('marketplaceIntegrationShopify', {});
14
- const { apiKey, apiSecret } = shopifyConfig;
15
- exports.shopifyPosPublicRouter = new koa_router_1.default();
16
- exports.shopifyPosPublicRouter.post('/webhook-shopify/orders/create', async (context, next) => {
17
- const { request, t } = context;
18
- const hmac = request.get('x-shopify-hmac-sha256');
19
- const shopDomain = request.get('x-shopify-shop-domain');
20
- const shop = shopDomain.replace('.myshopify.com', '');
21
- const shopify = new integration_marketplace_1.Shopify({ apiKey, apiSecret, shop });
22
- const marketplaceStore = await (0, shell_1.getRepository)(integration_marketplace_1.MarketplaceStore).findOne({
23
- where: { storeId: shop, status: 'ACTIVE' },
24
- relations: ['domain']
25
- });
26
- if (!marketplaceStore) {
27
- context.status = 404;
28
- context.body = t('error.unable to find store account');
29
- return;
30
- }
31
- const webhookKey = marketplaceStore.webhookKey;
32
- const verifyMerchant = shopify.verifyWebhook(request, hmac, webhookKey);
33
- if (!verifyMerchant) {
34
- context.status = 404;
35
- context.body = t('error.unable to verify webhook origin');
36
- return;
37
- }
38
- const data = request.body;
39
- if (data.source_name === 'pos') {
40
- const domainCompany = await (0, shell_1.getRepository)(biz_base_1.Company).findOne({
41
- where: { domain: { id: marketplaceStore.domain.id } }
42
- });
43
- const bizplaces = await (0, shell_1.getRepository)(biz_base_1.Bizplace).find({
44
- where: { company: { id: domainCompany.id } },
45
- relations: ['domain']
46
- });
47
- const warehouseDomains = bizplaces.map((bizplace) => bizplace.domain);
48
- const selectedWarehouseDomain = warehouseDomains.filter(domain => domain.description === 'default' && domain.extType === 'warehouse');
49
- const refOrder = { id: data.id, name: data.order_number };
50
- const lineItems = data.line_items;
51
- for (var i = 0; i < lineItems.length; i++) {
52
- const variationId = lineItems[i].variant_id;
53
- var itemQty = lineItems[i].quantity;
54
- var itemUomValue = 0;
55
- const marketplaceProductVariation = await (0, shell_1.getRepository)(marketplace_base_1.MarketplaceProductVariation).findOne({
56
- where: {
57
- variationId,
58
- domain: { id: marketplaceStore.domain.id }
59
- }
60
- });
61
- const warehouseProduct = await (0, shell_1.getRepository)(product_base_1.Product).findOne({
62
- where: {
63
- sku: marketplaceProductVariation.sku
64
- },
65
- relations: ['bizplace']
66
- });
67
- const inventories = await (0, shell_1.getRepository)(warehouse_base_1.Inventory).find({
68
- where: {
69
- product: { id: warehouseProduct.id },
70
- domain: selectedWarehouseDomain[0],
71
- status: 'STORED'
72
- },
73
- relations: ['domain', 'bizplace', 'product', 'warehouse', 'location']
74
- });
75
- for (var j = 0; j < inventories.length; j++) {
76
- var inventory = inventories[j];
77
- if (inventory.qty >= itemQty) {
78
- itemUomValue = (inventory.uomValue / inventory.qty) * itemQty;
79
- inventory.qty -= itemQty;
80
- inventory.uomValue -= itemUomValue;
81
- await (0, warehouse_base_1.generateInventoryHistory)(inventory, refOrder, warehouse_base_1.INVENTORY_TRANSACTION_TYPE.SALES_ADJUSTMENT, -itemQty, -itemUomValue, null);
82
- if (inventory.qty === 0) {
83
- inventory.status = warehouse_base_1.INVENTORY_STATUS.TERMINATED;
84
- await (0, warehouse_base_1.generateInventoryHistory)(inventory, refOrder, warehouse_base_1.INVENTORY_STATUS.TERMINATED, 0, 0, null);
85
- }
86
- itemQty = 0;
87
- }
88
- else {
89
- itemQty -= inventory.qty;
90
- itemUomValue = (inventory.uomValue / inventory.qty) * itemQty;
91
- inventory.qty -= itemQty;
92
- inventory.uomValue -= itemUomValue;
93
- await (0, warehouse_base_1.generateInventoryHistory)(inventory, refOrder, warehouse_base_1.INVENTORY_TRANSACTION_TYPE.SALES_ADJUSTMENT, -itemQty, -itemUomValue, null);
94
- if (inventory.qty === 0) {
95
- inventory.status = warehouse_base_1.INVENTORY_STATUS.TERMINATED;
96
- await (0, warehouse_base_1.generateInventoryHistory)(inventory, refOrder, warehouse_base_1.INVENTORY_STATUS.TERMINATED, 0, 0, null);
97
- }
98
- }
99
- if (itemQty == 0) {
100
- break;
101
- }
102
- }
103
- }
104
- }
105
- context.status = 200;
106
- });
107
- //# sourceMappingURL=shopify-pos-public-router.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shopify-pos-public-router.js","sourceRoot":"","sources":["../../server/routers/shopify-pos-public-router.ts"],"names":[],"mappings":"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","sourcesContent":["import Router from 'koa-router'\n\nimport { Bizplace, Company } from '@things-factory/biz-base'\nimport { config } from '@things-factory/env'\nimport { MarketplaceStore, Shopify } from '@things-factory/integration-marketplace'\nimport { MarketplaceProductVariation } from '@things-factory/marketplace-base'\nimport { Product } from '@things-factory/product-base'\nimport { Domain, getRepository } from '@things-factory/shell'\nimport {\n generateInventoryHistory,\n Inventory,\n INVENTORY_STATUS,\n INVENTORY_TRANSACTION_TYPE\n} from '@things-factory/warehouse-base'\n\nconst shopifyConfig = config.get('marketplaceIntegrationShopify', {})\nconst { apiKey, apiSecret } = shopifyConfig\n\nexport const shopifyPosPublicRouter = new Router()\n\nshopifyPosPublicRouter.post('/webhook-shopify/orders/create', async (context, next) => {\n const { request, t } = context\n\n const hmac = request.get('x-shopify-hmac-sha256')\n const shopDomain = request.get('x-shopify-shop-domain')\n const shop = shopDomain.replace('.myshopify.com', '')\n const shopify = new Shopify({ apiKey, apiSecret, shop })\n\n const marketplaceStore: MarketplaceStore = await getRepository(MarketplaceStore).findOne({\n where: { storeId: shop, status: 'ACTIVE' },\n relations: ['domain']\n })\n if (!marketplaceStore) {\n context.status = 404\n context.body = t('error.unable to find store account')\n return\n }\n\n const webhookKey: string = marketplaceStore.webhookKey\n\n const verifyMerchant: boolean = shopify.verifyWebhook(request, hmac, webhookKey)\n if (!verifyMerchant) {\n context.status = 404\n context.body = t('error.unable to verify webhook origin')\n return\n }\n\n const data = request.body\n if (data.source_name === 'pos') {\n const domainCompany: Company = await getRepository(Company).findOne({\n where: { domain: { id: marketplaceStore.domain.id } }\n })\n\n const bizplaces: Bizplace[] = await getRepository(Bizplace).find({\n where: { company: { id: domainCompany.id } },\n relations: ['domain']\n })\n\n const warehouseDomains: Domain[] = bizplaces.map((bizplace: Bizplace) => bizplace.domain)\n\n const selectedWarehouseDomain: Domain[] = warehouseDomains.filter(\n domain => domain.description === 'default' && domain.extType === 'warehouse'\n )\n\n const refOrder: any = { id: data.id, name: data.order_number }\n\n const lineItems = data.line_items\n for (var i = 0; i < lineItems.length; i++) {\n const variationId: string = lineItems[i].variant_id\n var itemQty: number = lineItems[i].quantity\n var itemUomValue: number = 0\n\n const marketplaceProductVariation: MarketplaceProductVariation = await getRepository(\n MarketplaceProductVariation\n ).findOne({\n where: {\n variationId,\n domain: { id: marketplaceStore.domain.id }\n }\n })\n\n const warehouseProduct: Product = await getRepository(Product).findOne({\n where: {\n sku: marketplaceProductVariation.sku\n },\n relations: ['bizplace']\n })\n\n const inventories: Inventory[] = await getRepository(Inventory).find({\n where: {\n product: { id: warehouseProduct.id },\n domain: selectedWarehouseDomain[0],\n status: 'STORED'\n },\n relations: ['domain', 'bizplace', 'product', 'warehouse', 'location']\n })\n\n for (var j = 0; j < inventories.length; j++) {\n var inventory: Inventory = inventories[j]\n\n if (inventory.qty >= itemQty) {\n itemUomValue = (inventory.uomValue / inventory.qty) * itemQty\n inventory.qty -= itemQty\n inventory.uomValue -= itemUomValue\n\n await generateInventoryHistory(\n inventory,\n refOrder,\n INVENTORY_TRANSACTION_TYPE.SALES_ADJUSTMENT,\n -itemQty,\n -itemUomValue,\n null\n )\n\n if (inventory.qty === 0) {\n inventory.status = INVENTORY_STATUS.TERMINATED\n\n await generateInventoryHistory(inventory, refOrder, INVENTORY_STATUS.TERMINATED, 0, 0, null)\n }\n itemQty = 0\n } else {\n itemQty -= inventory.qty\n itemUomValue = (inventory.uomValue / inventory.qty) * itemQty\n inventory.qty -= itemQty\n inventory.uomValue -= itemUomValue\n\n await generateInventoryHistory(\n inventory,\n refOrder,\n INVENTORY_TRANSACTION_TYPE.SALES_ADJUSTMENT,\n -itemQty,\n -itemUomValue,\n null\n )\n\n if (inventory.qty === 0) {\n inventory.status = INVENTORY_STATUS.TERMINATED\n\n await generateInventoryHistory(inventory, refOrder, INVENTORY_STATUS.TERMINATED, 0, 0, null)\n }\n }\n\n if (itemQty == 0) {\n break\n }\n }\n }\n }\n\n context.status = 200\n})\n"]}
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const etrax_router_1 = require("./routers/etrax-router");
4
- const shopify_pos_public_router_1 = require("./routers/shopify-pos-public-router");
5
- process.on('bootstrap-module-global-public-route', (app, globalPublicRouter) => {
6
- globalPublicRouter.use(shopify_pos_public_router_1.shopifyPosPublicRouter.routes(), shopify_pos_public_router_1.shopifyPosPublicRouter.allowedMethods());
7
- globalPublicRouter.use(etrax_router_1.etraxRouter.routes(), etrax_router_1.etraxRouter.allowedMethods());
8
- });
9
- process.on('bootstrap-module-domain-private-route', (app, domainPrivateRouter) => { });
10
- //# sourceMappingURL=routes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../server/routes.ts"],"names":[],"mappings":";;AAAA,yDAAoD;AACpD,mFAA4E;AAE5E,OAAO,CAAC,EAAE,CAAC,sCAA6C,EAAE,CAAC,GAAG,EAAE,kBAAkB,EAAE,EAAE;IACpF,kBAAkB,CAAC,GAAG,CAAC,kDAAsB,CAAC,MAAM,EAAE,EAAE,kDAAsB,CAAC,cAAc,EAAE,CAAC,CAAA;IAChG,kBAAkB,CAAC,GAAG,CAAC,0BAAW,CAAC,MAAM,EAAE,EAAE,0BAAW,CAAC,cAAc,EAAE,CAAC,CAAA;AAC5E,CAAC,CAAC,CAAA;AAEF,OAAO,CAAC,EAAE,CAAC,uCAA8C,EAAE,CAAC,GAAG,EAAE,mBAAmB,EAAE,EAAE,GAAE,CAAC,CAAC,CAAA","sourcesContent":["import { etraxRouter } from './routers/etrax-router'\nimport { shopifyPosPublicRouter } from './routers/shopify-pos-public-router'\n\nprocess.on('bootstrap-module-global-public-route' as any, (app, globalPublicRouter) => {\n globalPublicRouter.use(shopifyPosPublicRouter.routes(), shopifyPosPublicRouter.allowedMethods())\n globalPublicRouter.use(etraxRouter.routes(), etraxRouter.allowedMethods())\n})\n\nprocess.on('bootstrap-module-domain-private-route' as any, (app, domainPrivateRouter) => {})\n"]}