@feedmepos/mf-order-setting 0.0.2 → 0.0.6

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 (372) hide show
  1. package/.env.dev +13 -0
  2. package/.env.example +11 -0
  3. package/.env.prod +12 -0
  4. package/.eslintrc.cjs +15 -0
  5. package/.nvmrc +1 -0
  6. package/.prettierrc.json +8 -0
  7. package/.vscode/extensions.json +8 -0
  8. package/README.md +31 -0
  9. package/dist/KioskSettingView-BTDNtWJ1.js +4 -0
  10. package/{app-gcisgtft.js → dist/app-XcwzVa60.js} +7363 -7390
  11. package/dist/app.js +6 -0
  12. package/dist/frontend/mf-order/src/app.d.ts +4 -0
  13. package/dist/frontend/mf-order/src/router/routes.d.ts +3 -0
  14. package/dist/frontend/mf-order/src/views/order-settings/sms/SmsSetting.vue.d.ts +2 -0
  15. package/dist/frontend/mf-order/tsconfig.app.tsbuildinfo +1 -0
  16. package/env.d.ts +95 -0
  17. package/index.html +16 -0
  18. package/package.json +5 -4
  19. package/postcss.config.js +6 -0
  20. package/public/favicon.ico +0 -0
  21. package/src/App.vue +19 -0
  22. package/src/Entry.vue +42 -0
  23. package/src/api/auth/index.ts +20 -0
  24. package/src/api/delivery/index.ts +15 -0
  25. package/src/api/index.ts +171 -0
  26. package/src/api/kiosk/index.ts +22 -0
  27. package/src/api/menu/index.ts +13 -0
  28. package/src/api/order/index.ts +15 -0
  29. package/src/api/order-setting/index.ts +25 -0
  30. package/src/api/public-setting/index.ts +11 -0
  31. package/src/api/remoteOrder/index.ts +142 -0
  32. package/src/api/restaurant-setting/index.ts +55 -0
  33. package/src/api/table-setting/index.ts +30 -0
  34. package/src/app.ts +7 -0
  35. package/src/assets/base.css +6 -0
  36. package/src/assets/images/no-data.svg +35 -0
  37. package/src/assets/logo.svg +1 -0
  38. package/src/assets/main.css +1 -0
  39. package/src/components/GoogleMap.vue +216 -0
  40. package/src/components/RestaurantSelection.vue +34 -0
  41. package/src/components/index.ts +7 -0
  42. package/src/components/snackbar.ts +44 -0
  43. package/src/components/type.ts +103 -0
  44. package/src/composables/index.ts +7 -0
  45. package/src/composables/loading/index.ts +51 -0
  46. package/src/composables/search.ts +18 -0
  47. package/src/helpers/currency.ts +6 -0
  48. package/src/helpers/date.ts +29 -0
  49. package/src/helpers/iteration.ts +87 -0
  50. package/src/helpers/map.ts +92 -0
  51. package/src/helpers/menu.ts +166 -0
  52. package/src/helpers/number.ts +25 -0
  53. package/src/helpers/object.ts +12 -0
  54. package/src/helpers/profile.ts +52 -0
  55. package/src/i18n.ts +43 -0
  56. package/src/index.d.ts +3 -0
  57. package/src/main.ts +77 -0
  58. package/src/modules/kiosk/interface.ts +16 -0
  59. package/src/modules/order-setting/interface.ts +4 -0
  60. package/src/modules/order-setting/kiosk/interface.ts +52 -0
  61. package/src/plugins/google-maps.ts +28 -0
  62. package/src/router/index.ts +10 -0
  63. package/src/router/routes.ts +43 -0
  64. package/src/stores/app/index.ts +58 -0
  65. package/src/stores/iframe/index.ts +23 -0
  66. package/src/stores/kiosk/index.ts +40 -0
  67. package/src/stores/kiosk/mapper.ts +25 -0
  68. package/src/stores/menu/menu.ts +258 -0
  69. package/src/stores/order-setting/index.ts +61 -0
  70. package/src/stores/order-setting/mapper.ts +104 -0
  71. package/src/stores/restaurant/index.ts +138 -0
  72. package/src/stores/table-settings.ts +160 -0
  73. package/src/stores/type.ts +65 -0
  74. package/src/utils/constants/route.ts +15 -0
  75. package/src/utils/number.ts +16 -0
  76. package/src/utils/object.ts +15 -0
  77. package/src/views/all-orders/ActionMenuCell.vue +92 -0
  78. package/src/views/all-orders/FilterRestaurant.vue +71 -0
  79. package/src/views/all-orders/FilterStatus.vue +121 -0
  80. package/src/views/all-orders/FilterStatusMenu.vue +44 -0
  81. package/src/views/all-orders/Orders.vue +524 -0
  82. package/src/views/all-orders/ReflowOrder.vue +105 -0
  83. package/src/views/all-orders/UpdateDeliveryOrderDialog.vue +313 -0
  84. package/src/views/all-orders/order.ts +584 -0
  85. package/src/views/feedme-express/FeedMeExpress.vue +139 -0
  86. package/src/views/feedme-express/FeedMeExpressSummary.vue +62 -0
  87. package/src/views/kiosk/KioskSummary.vue +74 -0
  88. package/src/views/kiosk/KioskView.vue +140 -0
  89. package/src/views/kiosk/devices/KioskDeviceCard.vue +105 -0
  90. package/src/views/kiosk/devices/KioskDeviceDetail.vue +28 -0
  91. package/src/views/kiosk/devices/KioskDevicesView.vue +27 -0
  92. package/src/views/kiosk/devices/KioskOtpDialog.vue +15 -0
  93. package/src/views/kiosk/devices/KioskUnbindConfirm.vue +28 -0
  94. package/src/views/kiosk/settings/KioskDineInSection.vue +86 -0
  95. package/src/views/kiosk/settings/KioskDisplayStandSection.vue +98 -0
  96. package/src/views/kiosk/settings/KioskPickAtCounterSection.vue +25 -0
  97. package/src/views/kiosk/settings/KioskSettingView.vue +61 -0
  98. package/src/views/kiosk/settings/KioskTakeawaySection.vue +39 -0
  99. package/src/views/order-settings/OrderSettingsView.vue +52 -0
  100. package/src/views/order-settings/components/RestaurantSelector.vue +77 -0
  101. package/src/views/order-settings/delivery/DeliverySetting.vue +799 -0
  102. package/src/views/order-settings/delivery/LocalDelivery.vue +0 -0
  103. package/src/views/order-settings/delivery/components/ManualIntegratedDeliverySetting.vue +167 -0
  104. package/src/views/order-settings/delivery/delivery.data.ts +75 -0
  105. package/src/views/order-settings/delivery/delivery.ts +41 -0
  106. package/src/views/order-settings/delivery/inhouse/CurrencyInput.vue +47 -0
  107. package/src/views/order-settings/delivery/inhouse/DeliveryCustomTime.vue +235 -0
  108. package/src/views/order-settings/delivery/inhouse/DeliveryOrder.vue +236 -0
  109. package/src/views/order-settings/delivery/inhouse/DeliveryTime.vue +143 -0
  110. package/src/views/order-settings/delivery/inhouse/InHouseDelivery.vue +186 -0
  111. package/src/views/order-settings/delivery/inhouse/TimePicker.vue +76 -0
  112. package/src/views/order-settings/delivery/inhouse/ZoneDialog.vue +143 -0
  113. package/src/views/order-settings/delivery/integrated-delivery/FeedmeDelivery.vue +244 -0
  114. package/src/views/order-settings/delivery/integrated-delivery/FoodpandaCampaignDialog.vue +110 -0
  115. package/src/views/order-settings/delivery/integrated-delivery/FoodpandaSetting.vue +261 -0
  116. package/src/views/order-settings/delivery/integrated-delivery/GrabfoodSetting.vue +128 -0
  117. package/src/views/order-settings/delivery/integrated-delivery/IntegratedDelivery.vue +272 -0
  118. package/src/views/order-settings/delivery/integrated-delivery/ShopeefoodSetting.vue +135 -0
  119. package/src/views/order-settings/delivery/integrated.data.interface.ts +0 -0
  120. package/src/views/order-settings/dinein/DineInSetting.vue +128 -0
  121. package/src/views/order-settings/dinein/OfflinePaymentTypeDialog.vue +51 -0
  122. package/src/views/order-settings/dinein/OfflinePaymentTypeDialogContent.vue +44 -0
  123. package/src/views/order-settings/dinein/PaymentType.vue +172 -0
  124. package/src/views/order-settings/pickup/AddressInput.vue +48 -0
  125. package/src/views/order-settings/pickup/CustomPayment.vue +84 -0
  126. package/src/views/order-settings/pickup/PaymentSidesheet.vue +167 -0
  127. package/src/views/order-settings/pickup/PickUpPointDialog.vue +125 -0
  128. package/src/views/order-settings/pickup/PickUpPointDialogContent.vue +95 -0
  129. package/src/views/order-settings/pickup/PickUpSetting.vue +233 -0
  130. package/src/views/order-settings/pickup/PickUpSettingDialog.vue +148 -0
  131. package/src/views/order-settings/pickup/PickUpSideSheet.vue +15 -0
  132. package/src/views/order-settings/pickup/Preorder.vue +139 -0
  133. package/src/views/order-settings/servicecharge/RateInput.vue +34 -0
  134. package/src/views/order-settings/servicecharge/ServiceChargeRule.vue +453 -0
  135. package/src/views/order-settings/servicecharge/ServiceChargeSetting.vue +233 -0
  136. package/src/views/order-settings/sms/SmsSetting.vue +162 -0
  137. package/tailwind.config.js +20 -0
  138. package/tsconfig.app.json +25 -0
  139. package/tsconfig.json +18 -0
  140. package/tsconfig.node.json +16 -0
  141. package/vite.config.ts +60 -0
  142. package/KioskSettingView-BRJpaAwI.js +0 -4
  143. package/app.js +0 -5
  144. package/frontend/mf-order/src/app.d.ts +0 -2
  145. package/frontend/mf-order/tsconfig.app.tsbuildinfo +0 -1
  146. package/style.css +0 -1
  147. package/{common → dist/common}/booking/index.d.ts +0 -0
  148. package/{common → dist/common}/config/bank/index.d.ts +0 -0
  149. package/{common → dist/common}/config/bank/malaysia.d.ts +0 -0
  150. package/{common → dist/common}/config/bank/singapore.d.ts +0 -0
  151. package/{common → dist/common}/config/index.d.ts +0 -0
  152. package/{common → dist/common}/convertor/index.d.ts +0 -0
  153. package/{common → dist/common}/index.d.ts +0 -0
  154. package/{common → dist/common}/number/index.d.ts +0 -0
  155. package/{common → dist/common}/sms/index.d.ts +0 -0
  156. package/{common → dist/common}/util/index.d.ts +0 -0
  157. package/{favicon.ico → dist/favicon.ico} +0 -0
  158. package/{frontend → dist/frontend}/mf-order/src/App.vue.d.ts +0 -0
  159. package/{frontend/mf-order/src/views/all-orders/Orders.vue.d.ts → dist/frontend/mf-order/src/Entry.vue.d.ts} +0 -0
  160. package/{frontend → dist/frontend}/mf-order/src/api/auth/index.d.ts +0 -0
  161. package/{frontend → dist/frontend}/mf-order/src/api/delivery/index.d.ts +0 -0
  162. package/{frontend → dist/frontend}/mf-order/src/api/index.d.ts +0 -0
  163. package/{frontend → dist/frontend}/mf-order/src/api/kiosk/index.d.ts +0 -0
  164. package/{frontend → dist/frontend}/mf-order/src/api/menu/index.d.ts +0 -0
  165. package/{frontend → dist/frontend}/mf-order/src/api/order/index.d.ts +0 -0
  166. package/{frontend → dist/frontend}/mf-order/src/api/order-setting/index.d.ts +0 -0
  167. package/{frontend → dist/frontend}/mf-order/src/api/public-setting/index.d.ts +0 -0
  168. package/{frontend → dist/frontend}/mf-order/src/api/remoteOrder/index.d.ts +0 -0
  169. package/{frontend → dist/frontend}/mf-order/src/api/restaurant-setting/index.d.ts +0 -0
  170. package/{frontend → dist/frontend}/mf-order/src/api/table-setting/index.d.ts +0 -0
  171. package/{frontend → dist/frontend}/mf-order/src/components/GoogleMap.vue.d.ts +0 -0
  172. package/{frontend → dist/frontend}/mf-order/src/components/RestaurantSelection.vue.d.ts +0 -0
  173. package/{frontend → dist/frontend}/mf-order/src/components/index.d.ts +0 -0
  174. package/{frontend → dist/frontend}/mf-order/src/components/snackbar.d.ts +0 -0
  175. package/{frontend → dist/frontend}/mf-order/src/components/type.d.ts +0 -0
  176. package/{frontend → dist/frontend}/mf-order/src/composables/index.d.ts +0 -0
  177. package/{frontend → dist/frontend}/mf-order/src/composables/loading/index.d.ts +0 -0
  178. package/{frontend → dist/frontend}/mf-order/src/composables/search.d.ts +0 -0
  179. package/{frontend → dist/frontend}/mf-order/src/helpers/currency.d.ts +0 -0
  180. package/{frontend → dist/frontend}/mf-order/src/helpers/date.d.ts +0 -0
  181. package/{frontend → dist/frontend}/mf-order/src/helpers/iteration.d.ts +0 -0
  182. package/{frontend → dist/frontend}/mf-order/src/helpers/map.d.ts +0 -0
  183. package/{frontend → dist/frontend}/mf-order/src/helpers/menu.d.ts +0 -0
  184. package/{frontend → dist/frontend}/mf-order/src/helpers/number.d.ts +0 -0
  185. package/{frontend → dist/frontend}/mf-order/src/helpers/object.d.ts +0 -0
  186. package/{frontend → dist/frontend}/mf-order/src/helpers/profile.d.ts +0 -0
  187. package/{frontend → dist/frontend}/mf-order/src/i18n.d.ts +0 -0
  188. package/{frontend → dist/frontend}/mf-order/src/main.d.ts +0 -0
  189. package/{frontend → dist/frontend}/mf-order/src/modules/kiosk/interface.d.ts +0 -0
  190. package/{frontend → dist/frontend}/mf-order/src/modules/order-setting/interface.d.ts +0 -0
  191. package/{frontend → dist/frontend}/mf-order/src/modules/order-setting/kiosk/interface.d.ts +0 -0
  192. package/{frontend → dist/frontend}/mf-order/src/plugins/google-maps.d.ts +0 -0
  193. package/{frontend → dist/frontend}/mf-order/src/router/index.d.ts +0 -0
  194. package/{frontend → dist/frontend}/mf-order/src/stores/app/index.d.ts +0 -0
  195. package/{frontend → dist/frontend}/mf-order/src/stores/iframe/index.d.ts +0 -0
  196. package/{frontend → dist/frontend}/mf-order/src/stores/kiosk/index.d.ts +0 -0
  197. package/{frontend → dist/frontend}/mf-order/src/stores/kiosk/mapper.d.ts +0 -0
  198. package/{frontend → dist/frontend}/mf-order/src/stores/menu/menu.d.ts +0 -0
  199. package/{frontend → dist/frontend}/mf-order/src/stores/order-setting/index.d.ts +0 -0
  200. package/{frontend → dist/frontend}/mf-order/src/stores/order-setting/mapper.d.ts +0 -0
  201. package/{frontend → dist/frontend}/mf-order/src/stores/restaurant/index.d.ts +0 -0
  202. package/{frontend → dist/frontend}/mf-order/src/stores/table-settings.d.ts +0 -0
  203. package/{frontend → dist/frontend}/mf-order/src/stores/type.d.ts +0 -0
  204. package/{frontend → dist/frontend}/mf-order/src/utils/constants/route.d.ts +0 -0
  205. package/{frontend → dist/frontend}/mf-order/src/utils/number.d.ts +0 -0
  206. package/{frontend → dist/frontend}/mf-order/src/utils/object.d.ts +0 -0
  207. package/{frontend → dist/frontend}/mf-order/src/views/all-orders/ActionMenuCell.vue.d.ts +0 -0
  208. package/{frontend → dist/frontend}/mf-order/src/views/all-orders/FilterRestaurant.vue.d.ts +0 -0
  209. package/{frontend → dist/frontend}/mf-order/src/views/all-orders/FilterStatus.vue.d.ts +0 -0
  210. package/{frontend → dist/frontend}/mf-order/src/views/all-orders/FilterStatusMenu.vue.d.ts +0 -0
  211. package/{frontend/mf-order/src/views/feedme-express/FeedMeExpress.vue.d.ts → dist/frontend/mf-order/src/views/all-orders/Orders.vue.d.ts} +0 -0
  212. package/{frontend → dist/frontend}/mf-order/src/views/all-orders/ReflowOrder.vue.d.ts +0 -0
  213. package/{frontend → dist/frontend}/mf-order/src/views/all-orders/UpdateDeliveryOrderDialog.vue.d.ts +0 -0
  214. package/{frontend → dist/frontend}/mf-order/src/views/all-orders/order.d.ts +2 -2
  215. package/{frontend/mf-order/src/views/kiosk/KioskView.vue.d.ts → dist/frontend/mf-order/src/views/feedme-express/FeedMeExpress.vue.d.ts} +0 -0
  216. package/{frontend → dist/frontend}/mf-order/src/views/feedme-express/FeedMeExpressSummary.vue.d.ts +0 -0
  217. package/{frontend → dist/frontend}/mf-order/src/views/kiosk/KioskSummary.vue.d.ts +0 -0
  218. package/{frontend/mf-order/src/views/order-settings/OrderSettingsView.vue.d.ts → dist/frontend/mf-order/src/views/kiosk/KioskView.vue.d.ts} +0 -0
  219. package/{frontend → dist/frontend}/mf-order/src/views/kiosk/devices/KioskDeviceCard.vue.d.ts +0 -0
  220. package/{frontend → dist/frontend}/mf-order/src/views/kiosk/devices/KioskDeviceDetail.vue.d.ts +0 -0
  221. package/{frontend → dist/frontend}/mf-order/src/views/kiosk/devices/KioskDevicesView.vue.d.ts +0 -0
  222. package/{frontend → dist/frontend}/mf-order/src/views/kiosk/devices/KioskOtpDialog.vue.d.ts +0 -0
  223. package/{frontend → dist/frontend}/mf-order/src/views/kiosk/devices/KioskUnbindConfirm.vue.d.ts +0 -0
  224. package/{frontend → dist/frontend}/mf-order/src/views/kiosk/settings/KioskDineInSection.vue.d.ts +0 -0
  225. package/{frontend → dist/frontend}/mf-order/src/views/kiosk/settings/KioskDisplayStandSection.vue.d.ts +0 -0
  226. package/{frontend → dist/frontend}/mf-order/src/views/kiosk/settings/KioskPickAtCounterSection.vue.d.ts +0 -0
  227. package/{frontend → dist/frontend}/mf-order/src/views/kiosk/settings/KioskSettingView.vue.d.ts +0 -0
  228. package/{frontend → dist/frontend}/mf-order/src/views/kiosk/settings/KioskTakeawaySection.vue.d.ts +0 -0
  229. package/{frontend/mf-order/src/views/order-settings/delivery/LocalDelivery.vue.d.ts → dist/frontend/mf-order/src/views/order-settings/OrderSettingsView.vue.d.ts} +0 -0
  230. package/{frontend → dist/frontend}/mf-order/src/views/order-settings/components/RestaurantSelector.vue.d.ts +0 -0
  231. package/{frontend → dist/frontend}/mf-order/src/views/order-settings/delivery/DeliverySetting.vue.d.ts +0 -0
  232. package/{frontend/mf-order/src/views/order-settings/dinein/DineInSetting.vue.d.ts → dist/frontend/mf-order/src/views/order-settings/delivery/LocalDelivery.vue.d.ts} +0 -0
  233. package/{frontend → dist/frontend}/mf-order/src/views/order-settings/delivery/components/ManualIntegratedDeliverySetting.vue.d.ts +0 -0
  234. package/{frontend → dist/frontend}/mf-order/src/views/order-settings/delivery/delivery.d.ts +0 -0
  235. package/{frontend → dist/frontend}/mf-order/src/views/order-settings/delivery/delivery.data.d.ts +0 -0
  236. package/{frontend → dist/frontend}/mf-order/src/views/order-settings/delivery/inhouse/CurrencyInput.vue.d.ts +0 -0
  237. package/{frontend → dist/frontend}/mf-order/src/views/order-settings/delivery/inhouse/DeliveryCustomTime.vue.d.ts +0 -0
  238. package/{frontend → dist/frontend}/mf-order/src/views/order-settings/delivery/inhouse/DeliveryOrder.vue.d.ts +0 -0
  239. package/{frontend → dist/frontend}/mf-order/src/views/order-settings/delivery/inhouse/DeliveryTime.vue.d.ts +0 -0
  240. package/{frontend → dist/frontend}/mf-order/src/views/order-settings/delivery/inhouse/InHouseDelivery.vue.d.ts +0 -0
  241. package/{frontend → dist/frontend}/mf-order/src/views/order-settings/delivery/inhouse/TimePicker.vue.d.ts +0 -0
  242. package/{frontend → dist/frontend}/mf-order/src/views/order-settings/delivery/inhouse/ZoneDialog.vue.d.ts +0 -0
  243. package/{frontend → dist/frontend}/mf-order/src/views/order-settings/delivery/integrated-delivery/FeedmeDelivery.vue.d.ts +0 -0
  244. package/{frontend → dist/frontend}/mf-order/src/views/order-settings/delivery/integrated-delivery/FoodpandaCampaignDialog.vue.d.ts +0 -0
  245. package/{frontend → dist/frontend}/mf-order/src/views/order-settings/delivery/integrated-delivery/FoodpandaSetting.vue.d.ts +0 -0
  246. package/{frontend → dist/frontend}/mf-order/src/views/order-settings/delivery/integrated-delivery/GrabfoodSetting.vue.d.ts +0 -0
  247. package/{frontend → dist/frontend}/mf-order/src/views/order-settings/delivery/integrated-delivery/IntegratedDelivery.vue.d.ts +0 -0
  248. package/{frontend → dist/frontend}/mf-order/src/views/order-settings/delivery/integrated-delivery/ShopeefoodSetting.vue.d.ts +0 -0
  249. package/{frontend → dist/frontend}/mf-order/src/views/order-settings/delivery/integrated.data.interface.d.ts +0 -0
  250. package/{frontend/mf-order/src/views/order-settings/pickup/PickUpSideSheet.vue.d.ts → dist/frontend/mf-order/src/views/order-settings/dinein/DineInSetting.vue.d.ts} +0 -0
  251. package/{frontend → dist/frontend}/mf-order/src/views/order-settings/dinein/OfflinePaymentTypeDialog.vue.d.ts +0 -0
  252. package/{frontend → dist/frontend}/mf-order/src/views/order-settings/dinein/OfflinePaymentTypeDialogContent.vue.d.ts +0 -0
  253. package/{frontend → dist/frontend}/mf-order/src/views/order-settings/dinein/PaymentType.vue.d.ts +0 -0
  254. package/{frontend → dist/frontend}/mf-order/src/views/order-settings/pickup/AddressInput.vue.d.ts +0 -0
  255. package/{frontend → dist/frontend}/mf-order/src/views/order-settings/pickup/CustomPayment.vue.d.ts +0 -0
  256. package/{frontend → dist/frontend}/mf-order/src/views/order-settings/pickup/PaymentSidesheet.vue.d.ts +0 -0
  257. package/{frontend → dist/frontend}/mf-order/src/views/order-settings/pickup/PickUpPointDialog.vue.d.ts +0 -0
  258. package/{frontend → dist/frontend}/mf-order/src/views/order-settings/pickup/PickUpPointDialogContent.vue.d.ts +0 -0
  259. package/{frontend → dist/frontend}/mf-order/src/views/order-settings/pickup/PickUpSetting.vue.d.ts +0 -0
  260. package/{frontend → dist/frontend}/mf-order/src/views/order-settings/pickup/PickUpSettingDialog.vue.d.ts +0 -0
  261. package/{frontend/mf-order/src/views/order-settings/servicecharge/ServiceChargeSetting.vue.d.ts → dist/frontend/mf-order/src/views/order-settings/pickup/PickUpSideSheet.vue.d.ts} +0 -0
  262. package/{frontend → dist/frontend}/mf-order/src/views/order-settings/pickup/Preorder.vue.d.ts +0 -0
  263. package/{frontend → dist/frontend}/mf-order/src/views/order-settings/servicecharge/RateInput.vue.d.ts +0 -0
  264. package/{frontend → dist/frontend}/mf-order/src/views/order-settings/servicecharge/ServiceChargeRule.vue.d.ts +0 -0
  265. package/{frontend/mf-order/src/views/order-settings/sms/SmsSetting.vue.d.ts → dist/frontend/mf-order/src/views/order-settings/servicecharge/ServiceChargeSetting.vue.d.ts} +0 -0
  266. package/{package → dist/package}/entity/booking/booking.do.d.ts +0 -0
  267. package/{package → dist/package}/entity/booking/booking.dto.d.ts +0 -0
  268. package/{package → dist/package}/entity/booking/booking.enum.d.ts +0 -0
  269. package/{package → dist/package}/entity/business/business.dto.d.ts +0 -0
  270. package/{package → dist/package}/entity/clickup/clickup.dto.d.ts +0 -0
  271. package/{package → dist/package}/entity/cursor/cursor.dto.d.ts +0 -0
  272. package/{package → dist/package}/entity/delivery/delivery.do.d.ts +0 -0
  273. package/{package → dist/package}/entity/delivery/delivery.dto.d.ts +28 -28
  274. package/{package → dist/package}/entity/delivery/delivery.enum.d.ts +0 -0
  275. package/{package → dist/package}/entity/delivery/gateway/grab.dto.d.ts +0 -0
  276. package/{package → dist/package}/entity/delivery/gateway/grab.enum.d.ts +0 -0
  277. package/{package → dist/package}/entity/delivery/gateway/kosmo.dto.d.ts +0 -0
  278. package/{package → dist/package}/entity/delivery/gateway/kosmo.enum.d.ts +0 -0
  279. package/{package → dist/package}/entity/delivery/gateway/manual.dto.d.ts +0 -0
  280. package/{package → dist/package}/entity/delivery/gateway/manual.enum.d.ts +0 -0
  281. package/{package → dist/package}/entity/delivery/gateway/pandago.dto.d.ts +2 -2
  282. package/{package → dist/package}/entity/delivery/gateway/pandago.enum.d.ts +0 -0
  283. package/{package → dist/package}/entity/delivery/linked-delivery.do.d.ts +0 -0
  284. package/{package → dist/package}/entity/food-court/food-court.do.d.ts +0 -0
  285. package/{package → dist/package}/entity/food-court/food-court.dto.d.ts +0 -0
  286. package/{package → dist/package}/entity/food-court/food-court.enum.d.ts +0 -0
  287. package/{package → dist/package}/entity/food-court/order.do.d.ts +0 -0
  288. package/{package → dist/package}/entity/food-court/order.dto.d.ts +0 -0
  289. package/{package → dist/package}/entity/general/dateTime.dto.d.ts +0 -0
  290. package/{package → dist/package}/entity/general/number.dto.d.ts +0 -0
  291. package/{package → dist/package}/entity/general/search.dto.d.ts +0 -0
  292. package/{package → dist/package}/entity/incoming-order/incoming-order-to-bill.dto.d.ts +0 -0
  293. package/{package → dist/package}/entity/incoming-order/incoming-order.do.d.ts +0 -0
  294. package/{package → dist/package}/entity/incoming-order/incoming-order.dto.d.ts +0 -0
  295. package/{package → dist/package}/entity/incoming-order/incoming-order.enum.d.ts +0 -0
  296. package/{package → dist/package}/entity/index.d.ts +0 -0
  297. package/{package → dist/package}/entity/kiosk/kiosk.do.d.ts +0 -0
  298. package/{package → dist/package}/entity/kiosk/kiosk.dto.d.ts +0 -0
  299. package/{package → dist/package}/entity/kiosk/marketing/marketing.dto.d.ts +0 -0
  300. package/{package → dist/package}/entity/kiosk/scanner/scanner.do.d.ts +0 -0
  301. package/{package → dist/package}/entity/kiosk/scanner/scanner.dto.d.ts +0 -0
  302. package/{package → dist/package}/entity/kiosk/scanner/scanner.enum.d.ts +0 -0
  303. package/{package → dist/package}/entity/marketing/marketing.dto.d.ts +0 -0
  304. package/{package → dist/package}/entity/member/member.dto.d.ts +0 -0
  305. package/{package → dist/package}/entity/money/money.enum.d.ts +0 -0
  306. package/{package → dist/package}/entity/order/dine-in/dine-in.do.d.ts +0 -0
  307. package/{package → dist/package}/entity/order/dine-in/dine-in.dto.d.ts +0 -0
  308. package/{package → dist/package}/entity/order/dine-in/qr.do.d.ts +0 -0
  309. package/{package → dist/package}/entity/order/dine-in/reservation.do.d.ts +0 -0
  310. package/{package → dist/package}/entity/order/dine-in/reservation.dto.d.ts +0 -0
  311. package/{package → dist/package}/entity/order/effects/effect.dto.d.ts +0 -0
  312. package/{package → dist/package}/entity/order/effects/effect.enum.d.ts +0 -0
  313. package/{package → dist/package}/entity/order/menu/menu.dto.d.ts +0 -0
  314. package/{package → dist/package}/entity/order/order-item/order-item.dto.d.ts +0 -0
  315. package/{package → dist/package}/entity/order/order.do.d.ts +0 -0
  316. package/{package → dist/package}/entity/order/order.dto.d.ts +4 -4
  317. package/{package → dist/package}/entity/order/order.enum.d.ts +0 -0
  318. package/{package → dist/package}/entity/order/payment/payment.dto.d.ts +0 -0
  319. package/{package → dist/package}/entity/order/pickup/pickup.do.d.ts +0 -0
  320. package/{package → dist/package}/entity/order/pickup/pickup.dto.d.ts +0 -0
  321. package/{package → dist/package}/entity/order/timeslot/timeslot.dto.d.ts +0 -0
  322. package/{package → dist/package}/entity/order/timeslot/timeslot.enum.d.ts +0 -0
  323. package/{package → dist/package}/entity/order-platform/base-integration.do.d.ts +0 -0
  324. package/{package → dist/package}/entity/order-platform/foodpanda/foodpanda-menu.dto.d.ts +48 -48
  325. package/{package → dist/package}/entity/order-platform/foodpanda/foodpanda-order.do.d.ts +16 -16
  326. package/{package → dist/package}/entity/order-platform/foodpanda/foodpanda-order.dto.d.ts +6 -6
  327. package/{package → dist/package}/entity/order-platform/foodpanda/foodpanda-settings.do.d.ts +0 -0
  328. package/{package → dist/package}/entity/order-platform/foodpanda/foodpanda-settings.dto.d.ts +0 -0
  329. package/{package → dist/package}/entity/order-platform/foodpanda/foodpanda.enum.d.ts +0 -0
  330. package/{package → dist/package}/entity/order-platform/grabfood/grabfood-menu.do.d.ts +0 -0
  331. package/{package → dist/package}/entity/order-platform/grabfood/grabfood-order.do.d.ts +0 -0
  332. package/{package → dist/package}/entity/order-platform/grabfood/grabfood-settings.do.d.ts +0 -0
  333. package/{package → dist/package}/entity/order-platform/grabfood/grabfood.dto.d.ts +0 -0
  334. package/{package → dist/package}/entity/order-platform/grabfood/grabfood.enum.d.ts +0 -0
  335. package/{package → dist/package}/entity/order-platform/menu.dto.d.ts +0 -0
  336. package/{package → dist/package}/entity/order-platform/order-platform.dto.d.ts +0 -0
  337. package/{package → dist/package}/entity/order-platform/order-platform.enum.d.ts +0 -0
  338. package/{package → dist/package}/entity/order-platform/shopeefood/shopeefood-menu.do.d.ts +0 -0
  339. package/{package → dist/package}/entity/order-platform/shopeefood/shopeefood-order.do.d.ts +20 -20
  340. /package/{package → dist/package}/entity/order-platform/shopeefood/shopeefood-order.dto.d.ts +0 -0
  341. /package/{package → dist/package}/entity/order-platform/shopeefood/shopeefood-settings.do.d.ts +0 -0
  342. /package/{package → dist/package}/entity/order-platform/shopeefood/shopeefood-settings.dto.d.ts +0 -0
  343. /package/{package → dist/package}/entity/order-platform/shopeefood/shopeefood.enum.d.ts +0 -0
  344. /package/{package → dist/package}/entity/order-setting/customization/color.do.d.ts +0 -0
  345. /package/{package → dist/package}/entity/order-setting/customization/color.dto.d.ts +0 -0
  346. /package/{package → dist/package}/entity/order-setting/kiosk/kiosk.do.d.ts +0 -0
  347. /package/{package → dist/package}/entity/order-setting/kiosk/kiosk.dto.d.ts +0 -0
  348. /package/{package → dist/package}/entity/order-setting/order-setting.do.d.ts +0 -0
  349. /package/{package → dist/package}/entity/order-setting/order-setting.dto.d.ts +0 -0
  350. /package/{package → dist/package}/entity/order-setting/queue/queue.do.d.ts +0 -0
  351. /package/{package → dist/package}/entity/order-setting/queue/queue.dto.d.ts +0 -0
  352. /package/{package → dist/package}/entity/order-setting/reservation/reservation.do.d.ts +0 -0
  353. /package/{package → dist/package}/entity/order-setting/reservation/reservation.dto.d.ts +0 -0
  354. /package/{package → dist/package}/entity/order-setting/sequence/sequence.do.d.ts +0 -0
  355. /package/{package → dist/package}/entity/order-setting/sequence/sequence.dto.d.ts +0 -0
  356. /package/{package → dist/package}/entity/order-setting/sms/sms.do.d.ts +0 -0
  357. /package/{package → dist/package}/entity/order-setting/sms/sms.dto.d.ts +0 -0
  358. /package/{package → dist/package}/entity/order-setting/sms/sms.enum.d.ts +0 -0
  359. /package/{package → dist/package}/entity/order-setting/upselling/upselling.do.d.ts +0 -0
  360. /package/{package → dist/package}/entity/order-setting/upselling/upselling.dto.d.ts +0 -0
  361. /package/{package → dist/package}/entity/order-setting/v3/v3.do.d.ts +0 -0
  362. /package/{package → dist/package}/entity/order-setting/v3/v3.dto.d.ts +0 -0
  363. /package/{package → dist/package}/entity/pagination/pagination.dto.d.ts +0 -0
  364. /package/{package → dist/package}/entity/payment/payment.enum.d.ts +0 -0
  365. /package/{package → dist/package}/entity/printer/printer.do.d.ts +0 -0
  366. /package/{package → dist/package}/entity/queue/queue.do.d.ts +0 -0
  367. /package/{package → dist/package}/entity/queue/queue.dto.d.ts +0 -0
  368. /package/{package → dist/package}/entity/queue/queue.enum.d.ts +0 -0
  369. /package/{package → dist/package}/entity/restaurant/restaurant.dto.d.ts +0 -0
  370. /package/{package → dist/package}/entity/user/user.do.d.ts +0 -0
  371. /package/{package → dist/package}/entity/websocket/websocket.dto.d.ts +0 -0
  372. /package/{package → dist/package}/entity/websocket/websocket.enum.d.ts +0 -0
package/env.d.ts ADDED
@@ -0,0 +1,95 @@
1
+ /// <reference types="vite/client" />
2
+
3
+ interface ImportMeta {
4
+ readonly env: ImportMetaEnv
5
+ }
6
+
7
+ interface ImportMetaEnv {
8
+ VITE_AUTH_CLIENT_ID: string
9
+ VITE_GOOGLE_MAP_API_KEY: string
10
+ VITE_FIREBASE_API_KEY: string;
11
+ VITE_FIREBASE_AUTH_DOMAIN: string;
12
+ VITE_FIREBASE_DATABASE_URL: string;
13
+ VITE_FIREBASE_PROJECT_ID: string;
14
+ VITE_FIREBASE_STORAGE_BUCKET: string;
15
+ VITE_FIREBASE_MESSAGING_SENDER_ID: string;
16
+ VITE_FIREBASE_APP_ID: string;
17
+ VITE_FIREBASE_MEASUREMENT_ID: string;
18
+ VITE_DEBUG_MODE: string;
19
+ }
20
+
21
+ declare module '*.vue' {
22
+ import type { DefineComponent } from 'vue'
23
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types
24
+ const component: DefineComponent<{}, {}, any>
25
+ export default component
26
+ }
27
+
28
+ // vite define
29
+ declare const devInfo: {
30
+ mode: 'production' | 'development'
31
+ }
32
+
33
+ declare const appApi: {
34
+ googleMap: string
35
+ firebase: {
36
+ apiKey: string
37
+ authDomain: string
38
+ databaseURL: string
39
+ projectId: string
40
+ storageBucket: string
41
+ messagingSenderId: string
42
+ appId: string
43
+ measurementId: string
44
+ }
45
+ assetBucketUrl: string
46
+ imageBucketUrl: string
47
+ aiSettings: {
48
+ remy: {
49
+ enable: boolean
50
+ }
51
+ }
52
+ r2: {
53
+ endPoint: string
54
+ bucketName: string
55
+ accessKeyId: string
56
+ secretAccessKey: string
57
+ } | null
58
+ gtm: {
59
+ id: string
60
+ serverUrl: string
61
+ serverMeasurementId: string
62
+ env: string
63
+ debug: boolean
64
+ }
65
+ feedMeClientId: string
66
+ }
67
+ declare const appEndpoint: {
68
+ customerApp: string
69
+ customerV3App: string
70
+ dealer: string
71
+ portalV1: string
72
+ marketingPortal: string
73
+ inventoryPortal: string
74
+ report: string
75
+ licensePortal: string
76
+ tableMapping: string | undefined
77
+ templateBuilder: string | undefined
78
+ mainBackend: string | undefined
79
+ menuV4Backend: string | undefined
80
+ smsBackend: string | undefined
81
+ linkedDeliveryBackend: string | undefined
82
+ foodMarketHubBackend: string | undefined
83
+ foodpandaBackend: string | undefined
84
+ grabfoodBackend: string | undefined
85
+ shopeefoodBackend: string | undefined
86
+ mallIntegrationBackend: string | undefined
87
+ cubeJsBackend: string | undefined
88
+ marketingV2Backend: string | undefined
89
+ hrBackend: string | undefined
90
+ inventoryBackend: string | undefined
91
+ paymentBackend: string | undefined
92
+ remy: string
93
+ eInvoiceBackend: string | undefined
94
+ mdmPortal: string
95
+ }
package/index.html ADDED
@@ -0,0 +1,16 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="UTF-8">
6
+ <link rel="icon" href="/favicon.ico">
7
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
8
+ <title>Vite App</title>
9
+ </head>
10
+
11
+ <body>
12
+ <div id="app"></div>
13
+ <script type="module" src="/src/main.ts"></script>
14
+ </body>
15
+
16
+ </html>
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@feedmepos/mf-order-setting",
3
- "version": "0.0.2",
3
+ "version": "0.0.6",
4
4
  "type": "module",
5
- "module": "./app.js",
5
+ "module": "./dist/app.js",
6
6
  "license": "UNLICENSED",
7
7
  "exports": {
8
8
  ".": {
9
- "import": "./app.js"
9
+ "import": "./dist/app.js"
10
10
  }
11
11
  },
12
12
  "scripts": {
@@ -17,7 +17,7 @@
17
17
  "build:mf": "vite build --mode fmmf",
18
18
  "build:dts": "NODE_OPTIONS=--max-old-space-size=16384 vue-tsc --declaration --emitDeclarationOnly -p tsconfig.app.json --outDir ./dist",
19
19
  "publish-npm": "yarn build && yarn npm publish --no-git-checks",
20
- "build-only": "yarn build:mf && yarn build:dts && cp ./package.json ./dist/package.json",
20
+ "build-only": "dotenv -e .env.dev -- yarn build:mf && yarn build:dts",
21
21
  "build:dev": "cross-env NODE_ENV=dev vite build --mode dev",
22
22
  "build:prod": "vite build --mode prod",
23
23
  "type-check": "set NODE_OPTIONS=--max-old-space-size=16384 && vue-tsc --noEmit -p tsconfig.app.json --composite false",
@@ -47,6 +47,7 @@
47
47
  "vue-router": "^4.2.5"
48
48
  },
49
49
  "devDependencies": {
50
+ "dotenv-cli": "^7.4.2",
50
51
  "@babel/types": "^7.24.7",
51
52
  "@rushstack/eslint-patch": "^1.3.3",
52
53
  "@tsconfig/node18": "^18.2.2",
@@ -0,0 +1,6 @@
1
+ export default {
2
+ plugins: {
3
+ tailwindcss: {},
4
+ autoprefixer: {}
5
+ }
6
+ }
Binary file
package/src/App.vue ADDED
@@ -0,0 +1,19 @@
1
+ <script setup lang="ts">
2
+ import { onMounted } from 'vue'
3
+ import { setGoogleMap } from './helpers/map'
4
+ import { Loader } from 'google-maps'
5
+
6
+ onMounted(async () => {
7
+ const loader = new Loader(import.meta.env.VITE_GOOGLE_MAP_API_KEY, {
8
+ libraries: ['places']
9
+ })
10
+ const map = await loader.load()
11
+ setGoogleMap(map)
12
+ })
13
+ </script>
14
+
15
+ <template>
16
+ <div class="flex-1 overflow-auto">
17
+ <RouterView />
18
+ </div>
19
+ </template>
package/src/Entry.vue ADDED
@@ -0,0 +1,42 @@
1
+ <script setup lang="ts">
2
+ import { FmNavBar } from '@feedmepos/mf-common'
3
+ import { computed } from 'vue'
4
+ import { useRoute } from 'vue-router'
5
+ import { onMounted } from 'vue'
6
+ import { setGoogleMap } from './helpers/map'
7
+ import { Loader } from 'google-maps'
8
+ import { useIframeStore } from '@/stores/iframe'
9
+ import App from './App.vue'
10
+
11
+ const route = useRoute()
12
+ const showHeader = computed(() => route.query.showHeader !== 'false')
13
+ const { state } = useIframeStore()
14
+
15
+ onMounted(async () => {
16
+ if (state.isIframe) {
17
+ parent.postMessage({ event: 'ready' }, '*')
18
+ }
19
+
20
+ const loader = new Loader(import.meta.env.VITE_GOOGLE_MAP_API_KEY, {
21
+ libraries: ['places']
22
+ })
23
+
24
+ const map = await loader.load()
25
+ setGoogleMap(map)
26
+ })
27
+ </script>
28
+
29
+ <template>
30
+ <div style="height: 100dvh; width: 100dvw" class="flex flex-col overflow-hidden">
31
+ <div v-if="!state.isIframe" style="height: 64px">
32
+ <FmNavBar />
33
+ </div>
34
+ <App/>
35
+ </div>
36
+ </template>
37
+
38
+ <style>
39
+ .app-container {
40
+ display: none;
41
+ }
42
+ </style>
@@ -0,0 +1,20 @@
1
+ import { authInstance } from "..";
2
+
3
+ async function getCustomToken(token: string) {
4
+ const reponse = await authInstance({
5
+ customIdToken: token,
6
+ }).post(`/token`, { token });
7
+ return reponse.data;
8
+ }
9
+
10
+ async function getIdToken(customToken: string) {
11
+ const reponse = await authInstance({
12
+ customIdToken: customToken,
13
+ }).post(`/token/idtoken`, { customToken: customToken });
14
+ return reponse.data;
15
+ }
16
+
17
+ export const AuthApi = {
18
+ getCustomToken,
19
+ getIdToken,
20
+ }
@@ -0,0 +1,15 @@
1
+
2
+ import type { DeliveryCancelDto, FdtoDeliveryManualWebhook, OrderPortalDto } from '@entity';
3
+ import { baseClientInstance, getData } from '..';
4
+
5
+ export const deliveryApi = {
6
+ async updateManualOrder(payload: FdtoDeliveryManualWebhook): Promise<OrderPortalDto> {
7
+ return getData(await baseClientInstance().post('/deliveries/update-manual-status', payload));
8
+ },
9
+ async cancelDeliveryOrder(payload: DeliveryCancelDto): Promise<OrderPortalDto> {
10
+ return getData(await baseClientInstance().post('/deliveries/cancel-delivery', payload));
11
+ },
12
+ async refetchDeliveryOrder(orderId: string): Promise<OrderPortalDto> {
13
+ return getData(await baseClientInstance().post(`/deliveries/${orderId}/refresh`));
14
+ }
15
+ };
@@ -0,0 +1,171 @@
1
+ import axios, { AxiosError, type AxiosInstance, type AxiosResponse } from 'axios'
2
+ import { F_COUNTRY } from '@feedmepos/core/entity'
3
+ import { useCoreStore } from '@feedmepos/mf-common'
4
+
5
+ export const defaultCountry = F_COUNTRY.enum.MY
6
+ type ApiVariant = 'portal' | 'auth' | 'localhost';
7
+
8
+ interface ApiUrl {
9
+ portalBackendUrl: string
10
+ websocketBackendUrl: string
11
+ linkedDeliveryBackend: string
12
+ menuBackendUrl: string;
13
+ smsBackendUrl: string;
14
+ accountBackendUrl: string;
15
+ }
16
+
17
+ let apiUrl: ApiUrl | null = null
18
+
19
+ export const SvcConfig = {
20
+ getIdToken(): string | null {
21
+ const idToken = useCoreStore().sessionUser.value?.token
22
+ return idToken ?? null
23
+ },
24
+ getBusinessId(): string | null {
25
+ return useCoreStore().currentBusiness.value?._id ?? null;
26
+ },
27
+ getRestaurantId(): string | null {
28
+ return useCoreStore().currentRestaurant.value?._id ?? null
29
+ },
30
+ setRestaurantId(restaurantId: string | null): void {
31
+ const coreStore = useCoreStore()
32
+ if (restaurantId) {
33
+ const restaurant = coreStore.restaurants.value.find((r) => r._id === restaurantId)
34
+ if (restaurant) {
35
+ coreStore.changeRestaurant(restaurant)
36
+ } else {
37
+ console.warn(`Restaurant with ID ${restaurantId} not found.`)
38
+ }
39
+ } else {
40
+ coreStore.changeRestaurant(undefined)
41
+ }
42
+ },
43
+ setBackendUrl() {
44
+ const _country = useCoreStore().currentCountry.value || defaultCountry
45
+ apiUrl = generateBackendUrl(_country)
46
+ },
47
+ getBackendUrl(): ApiUrl {
48
+ const _country = useCoreStore().currentCountry.value || defaultCountry
49
+ return apiUrl || generateBackendUrl(_country)
50
+ }
51
+ }
52
+
53
+ function generateBackendUrl(country: F_COUNTRY): ApiUrl {
54
+ const { namespace } = useCoreStore()
55
+ const isDev = namespace.value === "dev"
56
+ const area = country !== F_COUNTRY.enum.MY ? `.${country.toLowerCase()}` : '';
57
+ const domain = `${isDev ? '-dev' : ''}${area}.feedmeapi.com`;
58
+ const portalBackendUrl = `https://portal-v2${domain}`;
59
+ const accountBackendUrl = `https://account${domain}`;
60
+ return {
61
+ portalBackendUrl,
62
+ websocketBackendUrl: `wss://94ilf9iqc0.execute-api.ap-southeast-1.amazonaws.com/${isDev ? 'dev' : 'prod'}`,
63
+ linkedDeliveryBackend: `${portalBackendUrl}/linked-deliveries`,
64
+ menuBackendUrl: `${portalBackendUrl}/menu-v4`,
65
+ smsBackendUrl: `https://sms${domain}`,
66
+ accountBackendUrl
67
+ }
68
+ };
69
+
70
+ // eslint-disable-next-line @typescript-eslint/ban-types
71
+ interface SvcMasterCompanyResponse<T = {}> {
72
+ status: string
73
+ success: boolean
74
+ data: T
75
+ error: SvsMasterCompanyError
76
+ }
77
+
78
+ interface SvsMasterCompanyError {
79
+ message: string
80
+ code: string
81
+ }
82
+
83
+ class ApiError extends Error {
84
+ constructor(message?: string) {
85
+ super(message)
86
+ this.name = 'ApiError'
87
+ Object.setPrototypeOf(this, new.target.prototype)
88
+ }
89
+ }
90
+
91
+ export class SvcCompanyApiError extends ApiError {
92
+ constructor(message: string) {
93
+ super(message)
94
+ this.name = 'SvcCompanyApiError'
95
+ this.message = message
96
+ }
97
+ }
98
+
99
+ function getBaseUrl(variant: ApiVariant, port?: string): string {
100
+ switch (variant) {
101
+ case 'portal':
102
+ return SvcConfig.getBackendUrl().portalBackendUrl;
103
+ case 'auth':
104
+ return SvcConfig.getBackendUrl().accountBackendUrl;
105
+ case 'localhost':
106
+ return `http://localhost${port ? `:${port}` : ''}`;
107
+ }
108
+ }
109
+
110
+ export const baseClientInstance = (
111
+ path = '',
112
+ variant: ApiVariant = 'portal',
113
+ config?: { noIdRequired?: boolean, url?: string, customIdToken?: string },
114
+ port?: string,
115
+ ): AxiosInstance => {
116
+ const url = config?.url ?? getBaseUrl(variant, port)
117
+ const idToken = SvcConfig.getIdToken();
118
+ if (idToken || config?.noIdRequired || config?.customIdToken) {
119
+ const client = axios.create({
120
+ baseURL: `${url}${path}`,
121
+ headers: {
122
+ Authorization: `Bearer ${config?.customIdToken || idToken}`
123
+ }
124
+ })
125
+ client.interceptors.response.use(
126
+ (response: AxiosResponse<SvcMasterCompanyResponse>) => response,
127
+ async (error): Promise<unknown> => {
128
+ if (error instanceof AxiosError) {
129
+ const data = error.response?.data
130
+ const errMsg = data?.message || data?.error || `${error.message}` || `${error}`
131
+ return Promise.reject(new SvcCompanyApiError(errMsg))
132
+ }
133
+ return Promise.reject(error)
134
+ }
135
+ )
136
+ return client
137
+ } else {
138
+ throw new Error('Unauthorized request')
139
+ }
140
+ }
141
+
142
+ export const authInstance = (config?: { noIdRequired?: boolean, url?: string, customIdToken?: string },): AxiosInstance => {
143
+ return baseClientInstance('/', 'auth', config);
144
+ };
145
+
146
+ export const restaurantClientInstance = (prefix?: string): AxiosInstance => {
147
+ const restaurantId = SvcConfig.getRestaurantId();
148
+ const restaurantPath = `${prefix ?? ''}/restaurants/${restaurantId}`;
149
+ if (restaurantId) {
150
+ return baseClientInstance(restaurantPath);
151
+ } else {
152
+ throw new Error('Invalid restaurant');
153
+ }
154
+ }
155
+
156
+ export const menuClientInstance = (): AxiosInstance => {
157
+ const businessId = SvcConfig.getBusinessId();
158
+ if (!businessId) throw new Error('Invalid business ID');
159
+ const { menuBackendUrl } = SvcConfig.getBackendUrl();
160
+ const url = `${menuBackendUrl}/businesses/${businessId}/menu-v4`;
161
+ return baseClientInstance('', 'portal', { url });
162
+ };
163
+
164
+ export const smsBackendClientInstance = (): AxiosInstance => {
165
+ const { smsBackendUrl } = SvcConfig.getBackendUrl();
166
+ return baseClientInstance('', 'portal', { url: smsBackendUrl });
167
+ };
168
+
169
+ export function getData<T>(response: AxiosResponse<T>): T {
170
+ return response.data
171
+ }
@@ -0,0 +1,22 @@
1
+ import { getData, restaurantClientInstance } from '@/api';
2
+ import { KioskOtpDto, KioskDeviceDto } from '@entity';
3
+
4
+ async function requestOtp() : Promise<KioskOtpDto>{
5
+ const result = await restaurantClientInstance().get('/kiosk/otp');
6
+ return getData<KioskOtpDto>(result);
7
+ }
8
+
9
+ async function getDevices(): Promise<KioskDeviceDto[]>{
10
+ const result = await restaurantClientInstance().get('/kiosk/devices');
11
+ return getData<KioskDeviceDto[]>(result);
12
+ }
13
+
14
+ async function unbind(machineId: string): Promise<void>{
15
+ await restaurantClientInstance().delete(`/kiosk/unbind/${machineId}`);
16
+ }
17
+
18
+ export const KioskApi = {
19
+ requestOtp,
20
+ getDevices,
21
+ unbind
22
+ };
@@ -0,0 +1,13 @@
1
+ import { getData, menuClientInstance } from '..';
2
+ import { FdoMenuV4 } from '@feedmepos/menu/entity';
3
+
4
+
5
+ interface MenuV4Doc extends FdoMenuV4{
6
+ _rev: string
7
+ }
8
+
9
+ export const menuApi = {
10
+ async readMenu(): Promise<MenuV4Doc> {
11
+ return getData(await menuClientInstance().get(''));
12
+ },
13
+ };
@@ -0,0 +1,15 @@
1
+ import type { OrderPortalDto, OrderQueryDto, OrderRefundDto } from '@entity';
2
+ import { baseClientInstance, getData } from '..';
3
+ import type { FdtoDeliveryManualWebhook } from '@feedmepos/ordering/package/entity';
4
+
5
+ export const orderApi = {
6
+ async read(dto: OrderQueryDto): Promise<OrderPortalDto[]> {
7
+ return getData(await baseClientInstance().post('/orders', dto));
8
+ },
9
+ async refund(dto: OrderRefundDto): Promise<OrderPortalDto> {
10
+ return getData(await baseClientInstance().post('/orders/refund', dto));
11
+ },
12
+ async updateManualOrder(payload: FdtoDeliveryManualWebhook): Promise<OrderPortalDto> {
13
+ return getData(await baseClientInstance().post('/deliveries/update-manual-status', payload));
14
+ },
15
+ };
@@ -0,0 +1,25 @@
1
+ import { getData, restaurantClientInstance, smsBackendClientInstance, SvcConfig } from '@/api';
2
+ import { OrderSettingsDto, OrderSettingUpdateDto } from '@entity';
3
+
4
+ async function getOrderSetting() : Promise<OrderSettingsDto>{
5
+ const result = await restaurantClientInstance().get('/order-settings');
6
+ return getData<OrderSettingsDto>(result);
7
+ }
8
+
9
+ async function updateOrderSetting(payload: OrderSettingUpdateDto): Promise<OrderSettingsDto>{
10
+ const result = await restaurantClientInstance().put('/order-settings', payload);
11
+ return getData<OrderSettingsDto>(result);
12
+ }
13
+
14
+ export const OrderSettingApi = {
15
+ getOrderSetting,
16
+ updateOrderSetting,
17
+ };
18
+
19
+ async function read() {
20
+ return getData(await smsBackendClientInstance().get(`balance/${SvcConfig.getBusinessId()}`));
21
+ }
22
+
23
+ export const smsApi = {
24
+ read,
25
+ };
@@ -0,0 +1,11 @@
1
+ import type { FdoPublicSetting } from '@feedmepos/core/entity';
2
+ import { baseClientInstance, getData } from '..';
3
+
4
+ export const publicSettingApi = {
5
+ async read(): Promise<FdoPublicSetting> {
6
+ return getData(await baseClientInstance().get('/public-setting'));
7
+ },
8
+ async update(dto: FdoPublicSetting): Promise<FdoPublicSetting> {
9
+ return getData(await baseClientInstance().put('/public-setting', dto));
10
+ },
11
+ };
@@ -0,0 +1,142 @@
1
+ import type { AxiosInstance } from 'axios';
2
+ import { baseClientInstance, getData, SvcConfig } from '..';
3
+ import type { DeliveryCompany, LinkedDeliveryDoc } from '../../views/order-settings/delivery/delivery';
4
+ import { FdoFoodpandaSettings, FdoLinkedDelivery, FdoRestaurant, FdoRestaurantFeedmeDelivery, FdoRestaurantInHouseDelivery, FdoShopeeFoodOrder } from '@feedmepos/core/entity';
5
+ import type { FdoFoodpandaOrderOutput, FdoGrabfoodOrderOutput, FdoGrabfoodSettings, FdoShopeeFoodOrderOutput, FdoShopeeFoodSettings, FdtoGetOrderReq } from '@entity';
6
+
7
+ type DeliveryCompanyUrl = 'foodpanda' | 'grabfood' | 'shopeefood'
8
+
9
+ const deliveryClientInstance = (
10
+ deliveryCompany: DeliveryCompanyUrl
11
+ ): AxiosInstance => {
12
+ const path = `/${deliveryCompany}`;
13
+ return baseClientInstance(path, 'portal');
14
+ };
15
+
16
+ const linkedDeliveryClientInstance = () => {
17
+ const restaurantId = SvcConfig.getRestaurantId();
18
+ if (!restaurantId) throw new Error('Invalid restaurant ID');
19
+ const { linkedDeliveryBackend } = SvcConfig.getBackendUrl();
20
+ const url = `${linkedDeliveryBackend}/restaurants/${restaurantId}/linked-deliveries`;
21
+ return baseClientInstance('', 'portal', { url });
22
+ };
23
+
24
+
25
+ export const remoteOrderApi = {
26
+ async readLinkedDeliveryCompanies(): Promise<LinkedDeliveryDoc[]> {
27
+ return getData(await linkedDeliveryClientInstance().get(''));
28
+ },
29
+ async readLocalDeliveryCompanies(): Promise<DeliveryCompany[]> {
30
+ return getData(await baseClientInstance().get('/deliveries'));
31
+ },
32
+ async createDeliveryCompany(delivery: FdoLinkedDelivery): Promise<LinkedDeliveryDoc> {
33
+ return getData(await linkedDeliveryClientInstance().post('', delivery));
34
+ },
35
+ async updateDeliveryCompany(delivery: LinkedDeliveryDoc): Promise<LinkedDeliveryDoc> {
36
+ return getData(await linkedDeliveryClientInstance().put(`/${delivery._id}`, delivery));
37
+ },
38
+ async deleteDeliveryCompany(delivery: LinkedDeliveryDoc): Promise<LinkedDeliveryDoc> {
39
+ return getData(await linkedDeliveryClientInstance().delete(`/${delivery._id}`));
40
+ },
41
+ integratedDelivery: {
42
+ async updateInhouse(restaurantId: string, dto: FdoRestaurantInHouseDelivery): Promise<FdoRestaurant> {
43
+ return getData(await baseClientInstance().put(`/restaurants/${restaurantId}/in-house-delivery`, dto));
44
+ },
45
+ async updateFeedme(restaurantId: string, dto: FdoRestaurantFeedmeDelivery): Promise<FdoRestaurant> {
46
+ return getData(await baseClientInstance().put(`/restaurants/${restaurantId}/feedme-delivery`, dto));
47
+ },
48
+ async readFoodpanda(restaurantId: string): Promise<FdoFoodpandaSettings | null> {
49
+ return getData(await deliveryClientInstance('foodpanda').get(`/setting/${restaurantId}`));
50
+ },
51
+ async readFoodpandaOrders(req: FdtoGetOrderReq): Promise<FdoFoodpandaOrderOutput[]> {
52
+ return getData(await deliveryClientInstance('foodpanda').get('/order', { params: req }));
53
+ },
54
+ async reflowFoodpandaOrders(orderId: string): Promise<FdoFoodpandaOrderOutput> {
55
+ return getData(await deliveryClientInstance('foodpanda').put(`/order/reflow/${orderId}`));
56
+ },
57
+ async rejectFoodpandaOrders(orderId: string): Promise<FdoFoodpandaOrderOutput> {
58
+ return getData(await deliveryClientInstance('foodpanda').put(`/order/void/${orderId}`));
59
+ },
60
+ async updateFoodpanda(restaurantId: string, dto: FdoFoodpandaSettings): Promise<FdoFoodpandaSettings> {
61
+ return getData(await deliveryClientInstance('foodpanda').put(`/setting/${restaurantId}`, {
62
+ _id: restaurantId,
63
+ ...dto,
64
+ }));
65
+ },
66
+ async syncFoodpandaMenu(restaurantId: string): Promise<FdoFoodpandaSettings> {
67
+ return getData(await deliveryClientInstance('foodpanda').put(`/menu-sync/${restaurantId}`));
68
+ },
69
+ async readGrabfood(restaurantId: string): Promise<FdoGrabfoodSettings | null> {
70
+ return getData(await deliveryClientInstance('grabfood').get(`/setting/${restaurantId}`));
71
+ },
72
+ async readGrabfoodOrders(req: FdtoGetOrderReq): Promise<FdoGrabfoodOrderOutput[]> {
73
+ return getData(await deliveryClientInstance('grabfood').get('/order', { params: req }));
74
+ },
75
+ async reflowGrabfoodOrders(orderId: string): Promise<FdoGrabfoodOrderOutput> {
76
+ return getData(await deliveryClientInstance('grabfood').put(`/order/reflow/${orderId}`));
77
+ },
78
+ async rejectGrabfoodOrders(orderId: string): Promise<FdoGrabfoodOrderOutput> {
79
+ return getData(await deliveryClientInstance('grabfood').put(`/order/void/${orderId}`));
80
+ },
81
+
82
+ async updateGrabfood(restaurantId: string, dto: FdoGrabfoodSettings): Promise<FdoRestaurant> {
83
+ return getData(await deliveryClientInstance('grabfood').put(`/setting/${restaurantId}`, {
84
+ _id: restaurantId,
85
+ ...dto,
86
+ }));
87
+ },
88
+ async syncGrabfoodMenu(merchantId: string): Promise<FdoGrabfoodSettings> {
89
+ return getData(await deliveryClientInstance('grabfood').get(`/menu-sync/${merchantId}`));
90
+ },
91
+
92
+ async readShopeefood(restaurantId: string): Promise<FdoShopeeFoodSettings | null> {
93
+ return getData(await deliveryClientInstance('shopeefood').get(`/setting/${restaurantId}`));
94
+ },
95
+ async readShopeefoodOrders(req: FdtoGetOrderReq): Promise<(FdoShopeeFoodOrderOutput & FdoShopeeFoodOrder)[]> {
96
+ return getData(await deliveryClientInstance('shopeefood').get('/order', { params: req }));
97
+ },
98
+ async reflowShopeefoodOrders(orderId: string): Promise<FdoShopeeFoodOrderOutput> {
99
+ return getData(await deliveryClientInstance('shopeefood').put(`/order/reflow/${orderId}`));
100
+ },
101
+ async rejectShopeefoodOrders(orderId: string): Promise<FdoShopeeFoodOrderOutput> {
102
+ return getData(await deliveryClientInstance('shopeefood').put(`/order/void/${orderId}`));
103
+ },
104
+ async updateShopeefood(restaurantId: string, dto: FdoShopeeFoodSettings): Promise<FdoRestaurant> {
105
+ return getData(await deliveryClientInstance('shopeefood').put(`/setting/${restaurantId}`, {
106
+ _id: restaurantId,
107
+ ...dto,
108
+ }));
109
+ },
110
+ async syncShopeefoodMenu(storeId: string): Promise<FdoShopeeFoodSettings> {
111
+ return getData(await deliveryClientInstance('shopeefood').get(`/menu-sync/${storeId}`));
112
+ },
113
+ async flowTestOrder(
114
+ restaurantId: string,
115
+ platform: DeliveryCompanyUrl
116
+ ): Promise<void> {
117
+ return getData(
118
+ await deliveryClientInstance(platform).put(`/test-order/${restaurantId}`)
119
+ );
120
+ },
121
+ async cancelTestOrder(
122
+ restaurantId: string,
123
+ platform: DeliveryCompanyUrl
124
+ ): Promise<void> {
125
+ return getData(
126
+ await deliveryClientInstance(platform).put(
127
+ `/test-order/cancel/${restaurantId}`,
128
+ )
129
+ );
130
+ },
131
+ async reflowFpOrderNotInDb(payload: { restaurantId: string; slot: string }): Promise<void> {
132
+ return getData(
133
+ await deliveryClientInstance('foodpanda').put('/order/reconcile', payload)
134
+ );
135
+ },
136
+ async reflowGfOrderNotInDb(payload: { restaurantId: string; slot: string; date: string }): Promise<void> {
137
+ return getData(
138
+ await deliveryClientInstance('grabfood').put('/order/reconcile', payload)
139
+ );
140
+ }
141
+ },
142
+ };