@things-factory/integration-marketplace 8.0.0-beta.9 → 8.0.2

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 (318) hide show
  1. package/dist-server/tsconfig.tsbuildinfo +1 -1
  2. package/package.json +14 -14
  3. package/server/controllers/index.ts +9 -0
  4. package/server/controllers/lazada/apis/cancel-store-order.ts +19 -0
  5. package/server/controllers/lazada/apis/create-store-product.ts +55 -0
  6. package/server/controllers/lazada/apis/delete-store-product.ts +16 -0
  7. package/server/controllers/lazada/apis/echo.ts +14 -0
  8. package/server/controllers/lazada/apis/get-store-logistics.ts +21 -0
  9. package/server/controllers/lazada/apis/get-store-order-document.ts +25 -0
  10. package/server/controllers/lazada/apis/get-store-order-item-transaction-details.ts +65 -0
  11. package/server/controllers/lazada/apis/get-store-order-items.ts +179 -0
  12. package/server/controllers/lazada/apis/get-store-order.ts +87 -0
  13. package/server/controllers/lazada/apis/get-store-orders.ts +127 -0
  14. package/server/controllers/lazada/apis/get-store-product-brands.ts +27 -0
  15. package/server/controllers/lazada/apis/get-store-product-categories.ts +14 -0
  16. package/server/controllers/lazada/apis/get-store-product-category-attributes.ts +16 -0
  17. package/server/controllers/lazada/apis/get-store-product.ts +42 -0
  18. package/server/controllers/lazada/apis/get-store-products.ts +84 -0
  19. package/server/controllers/lazada/apis/get-store-refund-orders.ts +52 -0
  20. package/server/controllers/lazada/apis/index.ts +24 -0
  21. package/server/controllers/lazada/apis/set-order-invoice-no.ts +24 -0
  22. package/server/controllers/lazada/apis/set-store-order-status-delivered.ts +17 -0
  23. package/server/controllers/lazada/apis/set-store-order-status-failed-delivery.ts +17 -0
  24. package/server/controllers/lazada/apis/set-store-order-status-packed-by-marketplace.ts +46 -0
  25. package/server/controllers/lazada/apis/set-store-order-status-ready-to-ship.ts +28 -0
  26. package/server/controllers/lazada/apis/update-store-product-stock.ts +29 -0
  27. package/server/controllers/lazada/apis/update-store-product-variation-stock.ts +29 -0
  28. package/server/controllers/lazada/apis/update-store-product.ts +51 -0
  29. package/server/controllers/lazada/client/index.ts +3 -0
  30. package/server/controllers/lazada/client/lazada.ts +142 -0
  31. package/server/controllers/lazada/client/signature.ts +67 -0
  32. package/server/controllers/lazada/client/types.ts +30 -0
  33. package/server/controllers/lazada/client/xml.ts +24 -0
  34. package/server/controllers/lazada/index.ts +8 -0
  35. package/server/controllers/lazada/platform-action.ts +35 -0
  36. package/server/controllers/magento/apis/create-order-comment.ts +32 -0
  37. package/server/controllers/magento/apis/create-order-refund.ts +20 -0
  38. package/server/controllers/magento/apis/create-order-ship.ts +43 -0
  39. package/server/controllers/magento/apis/echo.ts +14 -0
  40. package/server/controllers/magento/apis/get-store-order.ts +15 -0
  41. package/server/controllers/magento/apis/get-store-orders.ts +159 -0
  42. package/server/controllers/magento/apis/get-store-product-categories.ts +43 -0
  43. package/server/controllers/magento/apis/get-store-product-variations.ts +17 -0
  44. package/server/controllers/magento/apis/get-store-product.ts +44 -0
  45. package/server/controllers/magento/apis/get-store-products.ts +120 -0
  46. package/server/controllers/magento/apis/get-store-stock-item.ts +66 -0
  47. package/server/controllers/magento/apis/index.ts +16 -0
  48. package/server/controllers/magento/apis/update-order-status.ts +56 -0
  49. package/server/controllers/magento/apis/update-store-product-price.ts +24 -0
  50. package/server/controllers/magento/apis/update-store-product-stock.ts +42 -0
  51. package/server/controllers/magento/apis/update-store-product-variation-price.ts +24 -0
  52. package/server/controllers/magento/apis/update-store-product-variation-stock.ts +42 -0
  53. package/server/controllers/magento/index.ts +8 -0
  54. package/server/controllers/magento/magento.ts +202 -0
  55. package/server/controllers/magento/platform-action.ts +44 -0
  56. package/server/controllers/shopee/apis/accept-store-order-cancellation.ts +22 -0
  57. package/server/controllers/shopee/apis/cancel-store-order.ts +25 -0
  58. package/server/controllers/shopee/apis/create-store-product-variations.ts +33 -0
  59. package/server/controllers/shopee/apis/create-store-product.ts +57 -0
  60. package/server/controllers/shopee/apis/delete-store-product.ts +19 -0
  61. package/server/controllers/shopee/apis/echo.ts +14 -0
  62. package/server/controllers/shopee/apis/get-address.ts +32 -0
  63. package/server/controllers/shopee/apis/get-branch-list.ts +30 -0
  64. package/server/controllers/shopee/apis/get-logistics-param.ts +71 -0
  65. package/server/controllers/shopee/apis/get-store-logistics.ts +21 -0
  66. package/server/controllers/shopee/apis/get-store-order-document.ts +27 -0
  67. package/server/controllers/shopee/apis/get-store-order-items.ts +47 -0
  68. package/server/controllers/shopee/apis/get-store-order-payout-dates.ts +29 -0
  69. package/server/controllers/shopee/apis/get-store-order-transaction-details.ts +29 -0
  70. package/server/controllers/shopee/apis/get-store-order.ts +136 -0
  71. package/server/controllers/shopee/apis/get-store-orders.ts +39 -0
  72. package/server/controllers/shopee/apis/get-store-product-categories.ts +19 -0
  73. package/server/controllers/shopee/apis/get-store-product-category-attributes.ts +18 -0
  74. package/server/controllers/shopee/apis/get-store-product.ts +84 -0
  75. package/server/controllers/shopee/apis/get-store-products.ts +30 -0
  76. package/server/controllers/shopee/apis/get-store-refund-order-details.ts +41 -0
  77. package/server/controllers/shopee/apis/get-store-refund-orders.ts +47 -0
  78. package/server/controllers/shopee/apis/get-time-slot.ts +25 -0
  79. package/server/controllers/shopee/apis/index.ts +30 -0
  80. package/server/controllers/shopee/apis/init-logistics.ts +39 -0
  81. package/server/controllers/shopee/apis/reject-store-order-cancellation.ts +22 -0
  82. package/server/controllers/shopee/apis/split-order.ts +44 -0
  83. package/server/controllers/shopee/apis/update-store-product-stock.ts +24 -0
  84. package/server/controllers/shopee/apis/update-store-product-variation-stock.ts +21 -0
  85. package/server/controllers/shopee/apis/update-store-product.ts +85 -0
  86. package/server/controllers/shopee/apis2/create-shipping-document.ts +27 -0
  87. package/server/controllers/shopee/apis2/echo.ts +14 -0
  88. package/server/controllers/shopee/apis2/get-logistics-param.ts +66 -0
  89. package/server/controllers/shopee/apis2/get-shipping-document-result.ts +21 -0
  90. package/server/controllers/shopee/apis2/get-store-logistics.ts +23 -0
  91. package/server/controllers/shopee/apis2/get-store-order-by-batch.ts +97 -0
  92. package/server/controllers/shopee/apis2/get-store-order-document.ts +39 -0
  93. package/server/controllers/shopee/apis2/get-store-order-payout-dates.ts +33 -0
  94. package/server/controllers/shopee/apis2/get-store-order-transaction-details.ts +28 -0
  95. package/server/controllers/shopee/apis2/get-store-order.ts +93 -0
  96. package/server/controllers/shopee/apis2/get-store-orders.ts +40 -0
  97. package/server/controllers/shopee/apis2/get-store-product-variations.ts +17 -0
  98. package/server/controllers/shopee/apis2/get-store-product.ts +105 -0
  99. package/server/controllers/shopee/apis2/get-store-products.ts +28 -0
  100. package/server/controllers/shopee/apis2/get-store-refund-order-details.ts +39 -0
  101. package/server/controllers/shopee/apis2/get-store-refund-orders.ts +37 -0
  102. package/server/controllers/shopee/apis2/get-tracking-number.ts +17 -0
  103. package/server/controllers/shopee/apis2/index.ts +20 -0
  104. package/server/controllers/shopee/apis2/init-logistics.ts +39 -0
  105. package/server/controllers/shopee/apis2/update-store-product-stock.ts +26 -0
  106. package/server/controllers/shopee/apis2/update-store-product-variation-stock.ts +28 -0
  107. package/server/controllers/shopee/index.ts +16 -0
  108. package/server/controllers/shopee/platform-action.ts +58 -0
  109. package/server/controllers/shopee/refresh-access-token.ts +78 -0
  110. package/server/controllers/shopee/shopee.ts +191 -0
  111. package/server/controllers/shopify/apis/echo.ts +14 -0
  112. package/server/controllers/shopify/apis/get-airway-bill.ts +17 -0
  113. package/server/controllers/shopify/apis/get-inventory-level.ts +17 -0
  114. package/server/controllers/shopify/apis/get-store-order.ts +172 -0
  115. package/server/controllers/shopify/apis/get-store-orders.ts +290 -0
  116. package/server/controllers/shopify/apis/get-store-product-categories.ts +19 -0
  117. package/server/controllers/shopify/apis/get-store-product-category-attributes.ts +18 -0
  118. package/server/controllers/shopify/apis/get-store-product-variation-stock.ts +17 -0
  119. package/server/controllers/shopify/apis/get-store-products-count.ts +14 -0
  120. package/server/controllers/shopify/apis/get-store-products.ts +177 -0
  121. package/server/controllers/shopify/apis/index.ts +13 -0
  122. package/server/controllers/shopify/apis/set-store-order-status-ready-to-ship.ts +31 -0
  123. package/server/controllers/shopify/apis/update-order-status.ts +32 -0
  124. package/server/controllers/shopify/apis/update-store-product-price.ts +26 -0
  125. package/server/controllers/shopify/apis/update-store-product-stock.ts +20 -0
  126. package/server/controllers/shopify/apis/update-store-product-variation-price.ts +26 -0
  127. package/server/controllers/shopify/apis/update-store-product-variation-stock.ts +20 -0
  128. package/server/controllers/shopify/index.ts +8 -0
  129. package/server/controllers/shopify/platform-action.ts +43 -0
  130. package/server/controllers/shopify/shopify.ts +148 -0
  131. package/server/controllers/store-api/decorators.ts +44 -0
  132. package/server/controllers/store-api/index.ts +209 -0
  133. package/server/controllers/store-api/types.ts +0 -0
  134. package/server/controllers/tiktok/apis/echo.ts +14 -0
  135. package/server/controllers/tiktok/apis/get-store-order-document.ts +26 -0
  136. package/server/controllers/tiktok/apis/get-store-order-package.ts +46 -0
  137. package/server/controllers/tiktok/apis/get-store-order-packages.ts +43 -0
  138. package/server/controllers/tiktok/apis/get-store-order.ts +176 -0
  139. package/server/controllers/tiktok/apis/get-store-orders.ts +55 -0
  140. package/server/controllers/tiktok/apis/get-store-product-attributes.ts +29 -0
  141. package/server/controllers/tiktok/apis/get-store-product-categories.ts +27 -0
  142. package/server/controllers/tiktok/apis/get-store-product.ts +95 -0
  143. package/server/controllers/tiktok/apis/get-store-products.ts +45 -0
  144. package/server/controllers/tiktok/apis/index.ts +13 -0
  145. package/server/controllers/tiktok/apis/update-order-status.ts +24 -0
  146. package/server/controllers/tiktok/apis/update-store-product-variation-price.ts +24 -0
  147. package/server/controllers/tiktok/apis/update-store-product-variation-stock.ts +28 -0
  148. package/server/controllers/tiktok/client/index.ts +2 -0
  149. package/server/controllers/tiktok/client/signature.ts +78 -0
  150. package/server/controllers/tiktok/client/tiktok.ts +150 -0
  151. package/server/controllers/tiktok/client/types.ts +20 -0
  152. package/server/controllers/tiktok/index.ts +8 -0
  153. package/server/controllers/tiktok/platform-action.ts +72 -0
  154. package/server/controllers/woocommerce/apis/create-order-note.ts +17 -0
  155. package/server/controllers/woocommerce/apis/echo.ts +14 -0
  156. package/server/controllers/woocommerce/apis/get-customer-info.ts +18 -0
  157. package/server/controllers/woocommerce/apis/get-store-order.ts +116 -0
  158. package/server/controllers/woocommerce/apis/get-store-orders.ts +190 -0
  159. package/server/controllers/woocommerce/apis/get-store-product-categories.ts +18 -0
  160. package/server/controllers/woocommerce/apis/get-store-product-variations.ts +16 -0
  161. package/server/controllers/woocommerce/apis/get-store-products.ts +135 -0
  162. package/server/controllers/woocommerce/apis/index.ts +19 -0
  163. package/server/controllers/woocommerce/apis/set-store-order-status-ready-to-ship.ts +17 -0
  164. package/server/controllers/woocommerce/apis/update-order-status.ts +40 -0
  165. package/server/controllers/woocommerce/apis/update-product-attribute.ts +20 -0
  166. package/server/controllers/woocommerce/apis/update-store-product-price.ts +20 -0
  167. package/server/controllers/woocommerce/apis/update-store-product-stock.ts +17 -0
  168. package/server/controllers/woocommerce/apis/update-store-product-variant-price.ts +17 -0
  169. package/server/controllers/woocommerce/apis/update-store-product-variant-stock.ts +18 -0
  170. package/server/controllers/woocommerce/apis/update-store-product-variation-price.ts +20 -0
  171. package/server/controllers/woocommerce/apis/update-store-product-variation-stock.ts +20 -0
  172. package/server/controllers/woocommerce/index.ts +8 -0
  173. package/server/controllers/woocommerce/platform-action.ts +48 -0
  174. package/server/controllers/woocommerce/woocommerce.ts +104 -0
  175. package/server/controllers/zalora/apis/echo.ts +14 -0
  176. package/server/controllers/zalora/apis/get-airway-bill.ts +17 -0
  177. package/server/controllers/zalora/apis/get-store-order-items.ts +17 -0
  178. package/server/controllers/zalora/apis/get-store-order.ts +17 -0
  179. package/server/controllers/zalora/apis/get-store-orders.ts +21 -0
  180. package/server/controllers/zalora/apis/get-store-product-categories.ts +20 -0
  181. package/server/controllers/zalora/apis/get-store-product-category-attributes.ts +18 -0
  182. package/server/controllers/zalora/apis/get-store-products.ts +20 -0
  183. package/server/controllers/zalora/apis/index.ts +8 -0
  184. package/server/controllers/zalora/index.ts +8 -0
  185. package/server/controllers/zalora/platform-action.ts +18 -0
  186. package/server/controllers/zalora/zalora/index.ts +70 -0
  187. package/server/controllers/zalora/zalora/signature.ts +37 -0
  188. package/server/controllers/zalora/zalora/xml.ts +24 -0
  189. package/server/engine/connector/index.ts +3 -0
  190. package/server/engine/connector/lazada-connector.ts +49 -0
  191. package/server/engine/connector/marketplace-connector.ts +33 -0
  192. package/server/engine/connector/shopee-connector.ts +46 -0
  193. package/server/engine/index.ts +2 -0
  194. package/server/engine/task/index.ts +4 -0
  195. package/server/engine/task/lazada-get.ts +48 -0
  196. package/server/engine/task/lazada-post.ts +46 -0
  197. package/server/engine/task/marketplace-api.ts +72 -0
  198. package/server/engine/task/shopee-post.ts +51 -0
  199. package/server/entities/index.ts +8 -0
  200. package/server/entities/marketplace-distributor.ts +42 -0
  201. package/server/entities/marketplace-setting.ts +49 -0
  202. package/server/entities/marketplace-store.ts +100 -0
  203. package/server/entities/marketplace-transporter.ts +46 -0
  204. package/server/graphql/constants/index.ts +1 -0
  205. package/server/graphql/constants/store.ts +5 -0
  206. package/server/graphql/index.ts +9 -0
  207. package/server/graphql/resolvers/index.ts +6 -0
  208. package/server/graphql/resolvers/marketplace-distributor/create-marketplace-distributor.ts +15 -0
  209. package/server/graphql/resolvers/marketplace-distributor/delete-marketplace-distributor.ts +13 -0
  210. package/server/graphql/resolvers/marketplace-distributor/delete-marketplace-distributors.ts +18 -0
  211. package/server/graphql/resolvers/marketplace-distributor/index.ts +19 -0
  212. package/server/graphql/resolvers/marketplace-distributor/marketplace-distributor-query.ts +57 -0
  213. package/server/graphql/resolvers/marketplace-distributor/update-marketplace-distributor.ts +22 -0
  214. package/server/graphql/resolvers/marketplace-distributor/update-multiple-marketplace-distributor.ts +49 -0
  215. package/server/graphql/resolvers/marketplace-setting/create-marketplace-setting.ts +16 -0
  216. package/server/graphql/resolvers/marketplace-setting/delete-marketplace-setting.ts +13 -0
  217. package/server/graphql/resolvers/marketplace-setting/delete-marketplace-settings.ts +18 -0
  218. package/server/graphql/resolvers/marketplace-setting/index.ts +19 -0
  219. package/server/graphql/resolvers/marketplace-setting/marketplace-setting-query.ts +56 -0
  220. package/server/graphql/resolvers/marketplace-setting/update-marketplace-setting.ts +32 -0
  221. package/server/graphql/resolvers/marketplace-setting/update-multiple-marketplace-setting.ts +49 -0
  222. package/server/graphql/resolvers/marketplace-store/create-marketplace-store.ts +20 -0
  223. package/server/graphql/resolvers/marketplace-store/delete-marketplace-store.ts +21 -0
  224. package/server/graphql/resolvers/marketplace-store/delete-marketplace-stores.ts +26 -0
  225. package/server/graphql/resolvers/marketplace-store/index.ts +40 -0
  226. package/server/graphql/resolvers/marketplace-store/lazada/deactivate-lazada-store.ts +28 -0
  227. package/server/graphql/resolvers/marketplace-store/lazada/generate-lazada-access-token.ts +61 -0
  228. package/server/graphql/resolvers/marketplace-store/lazada/get-lazada-auth-url.ts +9 -0
  229. package/server/graphql/resolvers/marketplace-store/lazada/index.ts +12 -0
  230. package/server/graphql/resolvers/marketplace-store/magento/activate-magento-store.ts +82 -0
  231. package/server/graphql/resolvers/marketplace-store/magento/deactivate-magento-store.ts +27 -0
  232. package/server/graphql/resolvers/marketplace-store/magento/get-magento-auth-url.ts +12 -0
  233. package/server/graphql/resolvers/marketplace-store/magento/index.ts +12 -0
  234. package/server/graphql/resolvers/marketplace-store/marketplace-store.ts +14 -0
  235. package/server/graphql/resolvers/marketplace-store/marketplace-stores.ts +18 -0
  236. package/server/graphql/resolvers/marketplace-store/shopee/deactivate-shopee-store.ts +28 -0
  237. package/server/graphql/resolvers/marketplace-store/shopee/generate-shopee-access-token.ts +96 -0
  238. package/server/graphql/resolvers/marketplace-store/shopee/get-shopee-auth-url.ts +18 -0
  239. package/server/graphql/resolvers/marketplace-store/shopee/index.ts +13 -0
  240. package/server/graphql/resolvers/marketplace-store/shopify/deactivate-shopify-store.ts +29 -0
  241. package/server/graphql/resolvers/marketplace-store/shopify/get-shopify-auth-url.ts +26 -0
  242. package/server/graphql/resolvers/marketplace-store/shopify/index.ts +11 -0
  243. package/server/graphql/resolvers/marketplace-store/update-marketplace-store.ts +19 -0
  244. package/server/graphql/resolvers/marketplace-store/update-multiple-marketplace-store.ts +46 -0
  245. package/server/graphql/resolvers/marketplace-store/woocommerce/deactivate-woocommerce-store.ts +20 -0
  246. package/server/graphql/resolvers/marketplace-store/woocommerce/get-woocommerce-auth-url.ts +14 -0
  247. package/server/graphql/resolvers/marketplace-store/woocommerce/index.ts +10 -0
  248. package/server/graphql/resolvers/marketplace-store/zalora/deactivate-zalora-store.ts +28 -0
  249. package/server/graphql/resolvers/marketplace-store/zalora/generate-zalora-access-token.ts +55 -0
  250. package/server/graphql/resolvers/marketplace-store/zalora/index.ts +9 -0
  251. package/server/graphql/resolvers/marketplace-transporter/create-marketplace-transporter.ts +21 -0
  252. package/server/graphql/resolvers/marketplace-transporter/delete-marketplace-transporter.ts +13 -0
  253. package/server/graphql/resolvers/marketplace-transporter/delete-marketplace-transporters.ts +18 -0
  254. package/server/graphql/resolvers/marketplace-transporter/index.ts +19 -0
  255. package/server/graphql/resolvers/marketplace-transporter/marketplace-transporter-query.ts +60 -0
  256. package/server/graphql/resolvers/marketplace-transporter/update-marketplace-transporter.ts +25 -0
  257. package/server/graphql/resolvers/marketplace-transporter/update-multiple-marketplace-transporter.ts +49 -0
  258. package/server/graphql/resolvers/store-order/accept-store-order-cancellation.ts +9 -0
  259. package/server/graphql/resolvers/store-order/cancel-store-order.ts +8 -0
  260. package/server/graphql/resolvers/store-order/get-store-order-document.ts +8 -0
  261. package/server/graphql/resolvers/store-order/get-store-order-items.ts +8 -0
  262. package/server/graphql/resolvers/store-order/get-store-order.ts +8 -0
  263. package/server/graphql/resolvers/store-order/get-store-orders.ts +13 -0
  264. package/server/graphql/resolvers/store-order/index.ts +23 -0
  265. package/server/graphql/resolvers/store-order/reject-store-order-cancellation.ts +9 -0
  266. package/server/graphql/resolvers/store-order/set-store-order-status-packed-by-marketplace.ts +9 -0
  267. package/server/graphql/resolvers/store-order/set-store-order-status-ready-to-ship.ts +10 -0
  268. package/server/graphql/resolvers/store-product/create-store-product-variations.ts +9 -0
  269. package/server/graphql/resolvers/store-product/create-store-product.ts +8 -0
  270. package/server/graphql/resolvers/store-product/delete-store-product.ts +8 -0
  271. package/server/graphql/resolvers/store-product/get-store-product-brands.ts +14 -0
  272. package/server/graphql/resolvers/store-product/get-store-product-categories.ts +8 -0
  273. package/server/graphql/resolvers/store-product/get-store-product-category-attributes.ts +11 -0
  274. package/server/graphql/resolvers/store-product/get-store-product.ts +8 -0
  275. package/server/graphql/resolvers/store-product/get-store-products.ts +13 -0
  276. package/server/graphql/resolvers/store-product/index.ts +25 -0
  277. package/server/graphql/resolvers/store-product/update-store-product.ts +8 -0
  278. package/server/graphql/types/index.ts +6 -0
  279. package/server/graphql/types/marketplace-distributor/index.ts +26 -0
  280. package/server/graphql/types/marketplace-distributor/marketplace-distributor-list.ts +8 -0
  281. package/server/graphql/types/marketplace-distributor/marketplace-distributor-patch.ts +11 -0
  282. package/server/graphql/types/marketplace-distributor/marketplace-distributor.ts +16 -0
  283. package/server/graphql/types/marketplace-distributor/new-marketplace-distributor.ts +9 -0
  284. package/server/graphql/types/marketplace-setting/index.ts +22 -0
  285. package/server/graphql/types/marketplace-setting/marketplace-setting-list.ts +8 -0
  286. package/server/graphql/types/marketplace-setting/marketplace-setting-patch.ts +12 -0
  287. package/server/graphql/types/marketplace-setting/marketplace-setting.ts +17 -0
  288. package/server/graphql/types/marketplace-setting/new-marketplace-setting.ts +11 -0
  289. package/server/graphql/types/marketplace-store/index.ts +38 -0
  290. package/server/graphql/types/marketplace-store/marketplace-store-list.ts +8 -0
  291. package/server/graphql/types/marketplace-store/marketplace-store-patch.ts +21 -0
  292. package/server/graphql/types/marketplace-store/marketplace-store.ts +28 -0
  293. package/server/graphql/types/marketplace-store/new-marketplace-store.ts +19 -0
  294. package/server/graphql/types/marketplace-transporter/index.ts +24 -0
  295. package/server/graphql/types/marketplace-transporter/marketplace-transporter-list.ts +8 -0
  296. package/server/graphql/types/marketplace-transporter/marketplace-transporter-patch.ts +13 -0
  297. package/server/graphql/types/marketplace-transporter/marketplace-transporter.ts +17 -0
  298. package/server/graphql/types/marketplace-transporter/new-marketplace-transporter.ts +11 -0
  299. package/server/graphql/types/store-order/index.ts +23 -0
  300. package/server/graphql/types/store-order/new-store-order.ts +8 -0
  301. package/server/graphql/types/store-order/store-order-list.ts +8 -0
  302. package/server/graphql/types/store-order/store-order-patch.ts +10 -0
  303. package/server/graphql/types/store-order/store-order.ts +14 -0
  304. package/server/graphql/types/store-product/index.ts +23 -0
  305. package/server/graphql/types/store-product/new-store-product.ts +8 -0
  306. package/server/graphql/types/store-product/store-product-list.ts +8 -0
  307. package/server/graphql/types/store-product/store-product-patch.ts +10 -0
  308. package/server/graphql/types/store-product/store-product.ts +14 -0
  309. package/server/index.ts +9 -0
  310. package/server/migrations/index.ts +9 -0
  311. package/server/routers/magento-private-router.ts +192 -0
  312. package/server/routers/magento-public-router.ts +38 -0
  313. package/server/routers/shopify-install-private-router.ts +95 -0
  314. package/server/routers/shopify-install-public-router.ts +241 -0
  315. package/server/routers/shopify-private-router.ts +78 -0
  316. package/server/routers/shopify-public-router.ts +182 -0
  317. package/server/routers/woocommerce-router.ts +70 -0
  318. package/server/routes.ts +21 -0
@@ -0,0 +1,19 @@
1
+ /* https://open.shopee.com/documents?module=2&type=1&id=373 */
2
+
3
+ export function getStoreProductCategories() {
4
+ return {
5
+ path: '/item/categories/get',
6
+ denormalize(req) {
7
+ var { pagination } = req || {}
8
+ var { page = 0, limit = 100 } = pagination || {}
9
+
10
+ return {
11
+ pagination_entries_per_page: limit,
12
+ pagination_offset: page
13
+ }
14
+ },
15
+ normalize(res) {
16
+ return res.categories
17
+ }
18
+ }
19
+ }
@@ -0,0 +1,18 @@
1
+ /* https://open.shopee.com/documents?module=2&type=1&id=372 */
2
+
3
+ export function getStoreProductCategoryAttributes() {
4
+ return {
5
+ path: '/item/attributes/get',
6
+ denormalize(req) {
7
+ var { categoryId, isCrossBorder = true } = req
8
+
9
+ return {
10
+ category_id: categoryId,
11
+ is_cb: isCrossBorder
12
+ }
13
+ },
14
+ normalize(res) {
15
+ return res.attributes
16
+ }
17
+ }
18
+ }
@@ -0,0 +1,17 @@
1
+ export function getStoreProductVariationStock() {
2
+ return {
3
+ path: '/variants/{variantId}.json',
4
+ method: 'get',
5
+ denormalize(req) {
6
+ let { variantId } = req
7
+ return {
8
+ resource: {
9
+ variantId
10
+ }
11
+ }
12
+ },
13
+ normalize(res) {
14
+ return res?.variant?.inventory_quantity
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,14 @@
1
+ /* https://shopify.dev/docs/admin-api/rest/reference/products/product?api[version]=2020-01#index-2020-01 */
2
+
3
+ export function getStoreProductsCount() {
4
+ return {
5
+ method: 'get',
6
+ path: '/products/count.json',
7
+ denormalize(req) {
8
+ return {}
9
+ },
10
+ async normalize(res, { store }) {
11
+ return res.count
12
+ }
13
+ }
14
+ }
@@ -0,0 +1,177 @@
1
+ /* https://shopify.dev/docs/admin-api/rest/reference/products/product?api[version]=2020-07#index-2020-07 */
2
+
3
+ import { URL } from 'url'
4
+
5
+ import { StoreAPI } from '../../store-api'
6
+
7
+ export function getStoreProducts() {
8
+ return {
9
+ method: 'get',
10
+ path: '/products.json',
11
+ denormalize(req) {
12
+ var { pagination, pageInfo, fromUpdatedDate, toUpdatedDate } = req || {}
13
+ var { page, limit } = pagination || { page: 0, limit: 100 }
14
+
15
+ var payload: any = {
16
+ limit: limit
17
+ }
18
+
19
+ if (fromUpdatedDate && toUpdatedDate) {
20
+ payload.updated_at_max = toUpdatedDate
21
+ payload.updated_at_min = fromUpdatedDate
22
+ }
23
+
24
+ if (pageInfo) payload.page_info = pageInfo
25
+
26
+ return { payload }
27
+ },
28
+ async normalize(res, { store }) {
29
+ // return res.products
30
+ const linkParams = res.link
31
+ let page_info: string
32
+
33
+ if (linkParams) {
34
+ const url = extractLinkParams(linkParams)
35
+ var urlParams = new URL(url)
36
+ page_info = urlParams.searchParams.get('page_info')
37
+ }
38
+
39
+ let results: any[] = []
40
+ let totalProducts = await StoreAPI.getStoreProductsCount(store, res)
41
+
42
+ for (var i = 0; i < res.products.length; i++) {
43
+ const product: any = res.products[i]
44
+ const productVariations: any[] = product.variants
45
+
46
+ const inventoryIds: string[] = productVariations.map(productVariation => productVariation.inventory_item_id)
47
+ const inventoryItemIds: string = inventoryIds.join()
48
+
49
+ const inventoryLevels: any = await StoreAPI.getInventoryLevel(store, {
50
+ inventoryItemIds
51
+ })
52
+
53
+ for (var j = 0; j < productVariations.length; j++) {
54
+ let locationIds: any = []
55
+ const productVariation: any = productVariations[j]
56
+ const productInventoryItemId = productVariation.inventory_item_id
57
+ for (var k = 0; k < inventoryLevels.inventory_levels.length; k++) {
58
+ const inventoryLevel: any = inventoryLevels.inventory_levels[k]
59
+ const inventoryItemId = inventoryLevel.inventory_item_id
60
+
61
+ if (inventoryItemId == productInventoryItemId) {
62
+ const locationId: any = {
63
+ location_id: inventoryLevel.location_id,
64
+ available: inventoryLevel.available === null ? 0 : inventoryLevel.available
65
+ }
66
+ locationIds.push(locationId)
67
+ }
68
+ }
69
+ productVariation.location_id = JSON.stringify(locationIds)
70
+ }
71
+
72
+ const result = {
73
+ itemId: product.id,
74
+ name: product.title,
75
+ type: product.product_type,
76
+ description: product.body_html,
77
+ marketplaceStatus: product.status,
78
+ hasVariation: true,
79
+ categoryId: product?.collection_id ? product.collection_id : null,
80
+ attributes: [],
81
+ sellercraftAttributes: [
82
+ {
83
+ native_attribute_id: 'description',
84
+ attribute_key: 'description',
85
+ display_name: 'Description',
86
+ values: [product.body_html],
87
+ data_type: 'RICH_TEXT'
88
+ }
89
+ ],
90
+ images: product?.images?.map(image => {
91
+ return image.src
92
+ }) || [],
93
+ variations: productVariations.map(variant => {
94
+ return {
95
+ variationId: variant.id,
96
+ variationSku: variant.sku,
97
+ channelSku: variant.sku,
98
+ name: variant.title == 'Default Title' ? product.title : variant.title,
99
+ qty: variant.inventory_quantity,
100
+ inventoryPolicy: variant.inventory_policy,
101
+ inventoryItemId: variant.inventory_item_id,
102
+ locationId: variant.location_id,
103
+ extraMetadata: {
104
+ inventoryItemId: variant.inventory_item_id,
105
+ locationId: variant.location_id,
106
+ },
107
+ primaryUnit: variant.weight_unit,
108
+ primaryUnitValue: variant.weight,
109
+ costPrice: variant.price,
110
+ sellPrice: variant.compare_at_price || variant.price,
111
+ attributes: [
112
+ {
113
+ attributeId: variant.option1,
114
+ name: variant.option1
115
+ },
116
+ {
117
+ attributeId: variant.option2,
118
+ name: variant.option2
119
+ },
120
+ {
121
+ attributeId: variant.option3,
122
+ name: variant.option3
123
+ }
124
+ ],
125
+ sellercraftAttributes: product?.options.map(option => {
126
+ return {
127
+ native_attribute_id: option.name,
128
+ attribute_key: option.name,
129
+ display_name: option.name,
130
+ values: [variant[`option${option.position}`]]
131
+ }
132
+ }) || [],
133
+ weight: variant.grams,
134
+ presentmentPrices: variant?.presentment_prices
135
+ ? variant.presentment_prices.map(presentmentPrice => {
136
+ return {
137
+ currency: presentmentPrice.price?.currency_code
138
+ ? presentmentPrice.price.currency_code
139
+ : presentmentPrice.compare_at_price.currency_code,
140
+ costPrice: presentmentPrice.compare_at_price?.amount
141
+ ? presentmentPrice.compare_at_price.amount
142
+ : presentmentPrice.price.amount,
143
+ sellPrice: presentmentPrice.price?.amount
144
+ ? presentmentPrice.price.amount
145
+ : presentmentPrice.compare_at_price.amount
146
+ }
147
+ })
148
+ : {
149
+ currency: null,
150
+ costPrice: variant.price,
151
+ sellPrice: variant.compare_at_price
152
+ }
153
+ }
154
+ })
155
+ }
156
+
157
+ results.push({ ...result })
158
+ }
159
+
160
+ return { results, total: totalProducts, page_info }
161
+ }
162
+ }
163
+ }
164
+
165
+ function extractLinkParams(link) {
166
+ let nextLink = link
167
+
168
+ // If there's a previous link, remove the first part of the string entirely
169
+ if (nextLink.indexOf(`rel="previous"`) > -1) {
170
+ nextLink = nextLink.substr(nextLink.indexOf(',') + 2, nextLink.length)
171
+ }
172
+
173
+ // Parse the remaining string for the actual link
174
+ nextLink = nextLink.substr(1, nextLink.indexOf('>') - 1)
175
+
176
+ return nextLink
177
+ }
@@ -0,0 +1,13 @@
1
+ export * from './echo'
2
+ export * from './get-store-products'
3
+ export * from './get-store-products-count'
4
+ export * from './get-store-orders'
5
+ export * from './get-inventory-level'
6
+ export * from './update-store-product-variation-stock'
7
+ export * from './update-order-status'
8
+ export * from './set-store-order-status-ready-to-ship'
9
+ export * from './get-store-order'
10
+ export * from './update-store-product-variation-price'
11
+ export * from './update-store-product-price'
12
+ export * from './update-store-product-stock'
13
+ export * from './get-store-product-variation-stock'
@@ -0,0 +1,31 @@
1
+ /* https://shopify.dev/api/admin-rest/2021-10/resources/fulfillment#[post]/admin/api/2021-10/fulfillments.json */
2
+
3
+ export function setStoreOrderStatusReadyToShip() {
4
+ return {
5
+ method: 'post',
6
+ path: '/orders/{orderId}/fulfillments.json',
7
+ denormalize(req) {
8
+ const { orderId, trackingUrl, trackingNo, orderItemId, order, transporter } = req || {}
9
+
10
+ let locationId = JSON.parse(order.marketplaceOrderItems[0].marketplaceProductVariation.locationId)[0].location_id
11
+
12
+ return {
13
+ payload: {
14
+ fulfillment: {
15
+ location_id: locationId,
16
+ tracking_number: trackingNo,
17
+ tracking_urls: [trackingUrl],
18
+ notify_customer: true,
19
+ tracking_company: transporter
20
+ }
21
+ },
22
+ resource: {
23
+ orderId
24
+ }
25
+ }
26
+ },
27
+ normalize(res) {
28
+ return res
29
+ }
30
+ }
31
+ }
@@ -0,0 +1,32 @@
1
+ /* https://shopify.dev/api/admin-rest/2021-10/resources/fulfillment#[post]/admin/api/2021-10/fulfillments.json */
2
+
3
+ export function updateOrderStatus() {
4
+ return {
5
+ method: 'post',
6
+ path: '/orders/{orderId}/fulfillments.json',
7
+ denormalize(req) {
8
+ const { orderId, trackingNo, locations, carrier, status } = req || {}
9
+
10
+ if (status != 'READY_TO_SHIP') {
11
+ throw new Error('Shopify cannot create fulfillment, order status is not READY_TO_SHIP')
12
+ }
13
+
14
+ return {
15
+ payload: {
16
+ fulfillment: {
17
+ location_id: locations[0],
18
+ tracking_number: trackingNo,
19
+ notify_customer: true,
20
+ tracking_company: carrier
21
+ }
22
+ },
23
+ resource: {
24
+ orderId
25
+ }
26
+ }
27
+ },
28
+ normalize(res) {
29
+ return res
30
+ }
31
+ }
32
+ }
@@ -0,0 +1,26 @@
1
+ /*https://shopify.dev/api/admin-rest/2021-10/resources/product-variant#put-variants-variant-id */
2
+
3
+ export function updateStoreProductPrice() {
4
+ return {
5
+ path: '/variants/{variantId}.json',
6
+ method: 'put',
7
+ denormalize(req) {
8
+ let { costPrice, sellPrice, variationId } = req
9
+
10
+ return {
11
+ payload: {
12
+ variant: {
13
+ price: costPrice,
14
+ compare_at_price: sellPrice
15
+ }
16
+ },
17
+ resource: {
18
+ variantId: variationId
19
+ }
20
+ }
21
+ },
22
+ normalize(res) {
23
+ return res
24
+ }
25
+ }
26
+ }
@@ -0,0 +1,20 @@
1
+ export function updateStoreProductStock() {
2
+ return {
3
+ method: 'post',
4
+ path: '/inventory_levels/adjust.json',
5
+ denormalize(req) {
6
+ const { inventoryItemId, locationId: location_id, qty } = (Array.isArray(req) ? req[0] : req) || {}
7
+
8
+ return {
9
+ payload: {
10
+ inventory_item_id: parseInt(inventoryItemId),
11
+ location_id,
12
+ available_adjustment: parseInt(qty)
13
+ }
14
+ }
15
+ },
16
+ normalize(res) {
17
+ return res
18
+ }
19
+ }
20
+ }
@@ -0,0 +1,26 @@
1
+ /*https://shopify.dev/api/admin-rest/2021-10/resources/product-variant#put-variants-variant-id */
2
+
3
+ export function updateStoreProductVariationPrice() {
4
+ return {
5
+ path: '/variants/{variantId}.json',
6
+ method: 'put',
7
+ denormalize(req) {
8
+ let { costPrice, sellPrice, variationId } = req
9
+
10
+ return {
11
+ payload: {
12
+ variant: {
13
+ price: costPrice,
14
+ compare_at_price: sellPrice
15
+ }
16
+ },
17
+ resource: {
18
+ variantId: variationId
19
+ }
20
+ }
21
+ },
22
+ normalize(res) {
23
+ return res
24
+ }
25
+ }
26
+ }
@@ -0,0 +1,20 @@
1
+ export function updateStoreProductVariationStock() {
2
+ return {
3
+ method: 'post',
4
+ path: '/inventory_levels/adjust.json',
5
+ denormalize(req) {
6
+ const { inventoryItemId, locationId: location_id, qty } = (Array.isArray(req) ? req[0] : req) || {}
7
+
8
+ return {
9
+ payload: {
10
+ inventory_item_id: parseInt(inventoryItemId),
11
+ location_id,
12
+ available_adjustment: parseInt(qty)
13
+ }
14
+ }
15
+ },
16
+ normalize(res) {
17
+ return res
18
+ }
19
+ }
20
+ }
@@ -0,0 +1,8 @@
1
+ export * from './shopify'
2
+
3
+ import { StoreAPI } from '../store-api'
4
+
5
+ import { action } from './platform-action'
6
+ import * as APIS from './apis'
7
+
8
+ StoreAPI.registerPlatform('shopify', action, APIS)
@@ -0,0 +1,43 @@
1
+ import { Shopify } from './shopify'
2
+
3
+ import { config } from '@things-factory/env'
4
+ const shopifyConfig = config.get('marketplaceIntegrationShopify', {})
5
+ const { apiKey, apiSecret } = shopifyConfig
6
+
7
+ function substitute(path, obj) {
8
+ var props = []
9
+ var re = /{([^}]+)}/g
10
+ var text
11
+
12
+ while ((text = re.exec(path))) {
13
+ props.push(text[1])
14
+ }
15
+
16
+ var result = path
17
+ props.forEach(prop => {
18
+ let value = obj[prop.trim()]
19
+ result = result.replace(`{${prop}}`, value === undefined ? '' : value)
20
+ })
21
+
22
+ return result
23
+ }
24
+
25
+ export const action = async ({ store, method = 'get', path, request }) => {
26
+ const client = new Shopify({
27
+ shop: store.storeId,
28
+ apiKey,
29
+ apiSecret,
30
+ accessToken: store.accessToken
31
+ })
32
+
33
+ const { resource = {}, payload = {} } = request
34
+
35
+ path = substitute(path, resource)
36
+
37
+ var response = await client[method](path, payload)
38
+ if (response.errors) {
39
+ throw response
40
+ }
41
+
42
+ return response
43
+ }
@@ -0,0 +1,148 @@
1
+ import fetch from 'node-fetch'
2
+ import crypto from 'crypto'
3
+ import { URLSearchParams } from 'url'
4
+
5
+ import { createPayloadLog } from '@things-factory/integration-base'
6
+
7
+ const debug = require('debug')('things-factory:integration-marketplace:shopify')
8
+
9
+ export type ShopifyConfig = {
10
+ apiKey: string
11
+ apiSecret: string
12
+ shop: string
13
+ accessToken?: string
14
+ }
15
+
16
+ export class Shopify {
17
+ private config: ShopifyConfig
18
+
19
+ constructor(config: ShopifyConfig) {
20
+ this.config = {
21
+ ...config
22
+ }
23
+ }
24
+
25
+ makeVerificationTokenForNonce() {
26
+ return crypto.randomBytes(16).toString('hex')
27
+ }
28
+
29
+ buildAuthURL(redirectUrl, nonce) {
30
+ // regarding accessMode refer to https://shopify.dev/tutorials/authenticate-with-oauth#step-2-ask-for-permission
31
+ // and https://community.shopify.com/c/API-Announcements/Shopify-now-offers-two-types-of-API-access-tokens/td-p/315398
32
+ // so, accessMode should be 'offline'
33
+ // var accessMode = 'per-user'
34
+
35
+ // TODO make scopes properly
36
+ var scopes = 'read_products,write_orders,read_customers,read_inventory,write_inventory'
37
+
38
+ var { shop, apiKey } = this.config
39
+
40
+ // return `https://${shop}.myshopify.com/admin/oauth/authorize?client_id=${apiKey}&scope=${scopes}&redirect_uri=${redirectUrl}&state=${nonce}&grant_options[]=${accessMode}`
41
+ return `https://${shop}.myshopify.com/admin/oauth/authorize?client_id=${apiKey}&scope=${scopes}&redirect_uri=${redirectUrl}&state=${nonce}`
42
+ }
43
+
44
+ isValidSignature(query) {
45
+ const { apiSecret } = this.config
46
+ const { hmac, ...params } = query
47
+
48
+ const queryParams = new URLSearchParams(params).toString()
49
+
50
+ return hmac === crypto.createHmac('sha256', apiSecret).update(queryParams).digest('hex')
51
+ }
52
+
53
+ verifyWebhook(request, hmac: string, webhookKey) {
54
+ return hmac === crypto.createHmac('sha256', webhookKey).update(request.rawBody.toString()).digest('base64')
55
+ }
56
+
57
+ async get(path: string, data: any) {
58
+ const { shop, accessToken } = this.config
59
+
60
+ const qs = new URLSearchParams(data).toString()
61
+
62
+ const endpoint = `https://${shop}.myshopify.com/admin/api/2020-01${path}${qs ? '?' + qs : ''}`
63
+ debug('endpoint', endpoint)
64
+
65
+ const response = await fetch(endpoint, {
66
+ headers: {
67
+ 'Content-Type': 'application/json',
68
+ 'X-Shopify-Access-Token': accessToken
69
+ }
70
+ })
71
+
72
+ const callLimit = response.headers.get('x-shopify-shop-api-call-limit')
73
+ debug('call-limit', callLimit)
74
+
75
+ const retryAfter = response.headers.get('retry-after')
76
+
77
+ const link = response.headers.get('link')
78
+ var result = await response.json()
79
+ result.link = link
80
+
81
+ // try {
82
+ // createPayloadLog(shop, path, qs || '', result, {
83
+ // state: { domain: null }
84
+ // })
85
+ // } catch (e) {}
86
+ debug('response result', result)
87
+
88
+ return result
89
+ }
90
+
91
+ async post(path: string, data: any = {}) {
92
+ const { shop, accessToken } = this.config
93
+
94
+ debug('data', data)
95
+
96
+ const jsondata = JSON.stringify(data)
97
+
98
+ const endpoint = `https://${shop}.myshopify.com/admin/api/2020-01${path}`
99
+
100
+ const response = await fetch(endpoint, {
101
+ method: 'post',
102
+ headers: {
103
+ 'Content-Type': 'application/json',
104
+ 'X-Shopify-Access-Token': accessToken
105
+ },
106
+ body: jsondata
107
+ })
108
+
109
+ const result = await response.json()
110
+ // try {
111
+ // createPayloadLog(shop, path, jsondata, result, {
112
+ // state: { domain: null }
113
+ // })
114
+ // } catch (e) {}
115
+ debug('response result', result)
116
+
117
+ return result
118
+ }
119
+
120
+ async put(path: string, data: any = {}) {
121
+ const { shop, accessToken } = this.config
122
+
123
+ debug('data', data)
124
+
125
+ const jsondata = JSON.stringify(data)
126
+
127
+ const endpoint = `https://${shop}.myshopify.com/admin/api/2020-01${path}`
128
+
129
+ const response = await fetch(endpoint, {
130
+ method: 'put',
131
+ headers: {
132
+ 'Content-Type': 'application/json',
133
+ 'X-Shopify-Access-Token': accessToken
134
+ },
135
+ body: jsondata
136
+ })
137
+
138
+ const result = await response.json()
139
+ // try {
140
+ // createPayloadLog(shop, path, jsondata, result, {
141
+ // state: { domain: null }
142
+ // })
143
+ // } catch (e) {}
144
+ debug('response result', result)
145
+
146
+ return result
147
+ }
148
+ }
@@ -0,0 +1,44 @@
1
+ import Debug from 'debug'
2
+ const debug = Debug('things-factory:integration-marketplace:store-api-decorator')
3
+
4
+ import { MarketplaceStore } from '../../entities'
5
+
6
+ const NOOP = v => v
7
+
8
+ export const api = (target: Object, property: string, descriptor: TypedPropertyDescriptor<any>): any => {
9
+ const method = descriptor.value
10
+
11
+ descriptor.value = async function (store: MarketplaceStore, request) {
12
+ const StoreAPI = this
13
+
14
+ var { platform } = store
15
+
16
+ var { action: platformAction, apis } = StoreAPI.getPlatform(platform)
17
+
18
+ var m = apis[method.name]
19
+ if (!m) {
20
+ throw Error(`Marketplace Platform '${platform}' doesn't have API ${method.name}`)
21
+ }
22
+
23
+ var {
24
+ path,
25
+ method: httpMethod = 'post',
26
+ denormalize = NOOP,
27
+ normalize = NOOP,
28
+ action = platformAction
29
+ } = m.apply(this, [request])
30
+
31
+ var denormalized = await denormalize(request || {}, { store })
32
+ debug('request', denormalized)
33
+
34
+ var response = await action.apply(this, [
35
+ { store, method: httpMethod, path, request: denormalized, platformAction }
36
+ ])
37
+
38
+ debug('response', response)
39
+
40
+ return await normalize(response, { store })
41
+ }
42
+
43
+ return descriptor
44
+ }