@machinemetrics/mm-erp-sdk 0.2.0-beta.2 → 0.3.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (361) hide show
  1. package/README.md +5 -0
  2. package/dist/index.d.ts +42 -43
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +48 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/knexfile.d.ts.map +1 -1
  7. package/dist/knexfile.js +19 -0
  8. package/dist/knexfile.js.map +1 -0
  9. package/dist/migrations/20241015162631_create_cache_table.d.ts +4 -0
  10. package/dist/migrations/20241015162631_create_cache_table.d.ts.map +1 -0
  11. package/dist/migrations/20241015162631_create_cache_table.js +11 -15
  12. package/dist/migrations/20241015162631_create_cache_table.js.map +1 -1
  13. package/dist/migrations/20241015162632_create_sdk_cache_table.d.ts +4 -0
  14. package/dist/migrations/20241015162632_create_sdk_cache_table.d.ts.map +1 -0
  15. package/dist/migrations/20241015162632_create_sdk_cache_table.js +11 -15
  16. package/dist/migrations/20241015162632_create_sdk_cache_table.js.map +1 -1
  17. package/dist/migrations/20250103162631_create_record_tracking_table.d.ts +4 -0
  18. package/dist/migrations/20250103162631_create_record_tracking_table.d.ts.map +1 -0
  19. package/dist/migrations/20250103162631_create_record_tracking_table.js +14 -15
  20. package/dist/migrations/20250103162631_create_record_tracking_table.js.map +1 -1
  21. package/dist/services/caching-service/batch-cache-manager.d.ts +1 -1
  22. package/dist/services/caching-service/batch-cache-manager.d.ts.map +1 -1
  23. package/dist/services/caching-service/batch-cache-manager.js +84 -0
  24. package/dist/services/caching-service/batch-cache-manager.js.map +1 -0
  25. package/dist/services/caching-service/hashed-cache-manager.d.ts +2 -2
  26. package/dist/services/caching-service/hashed-cache-manager.d.ts.map +1 -1
  27. package/dist/services/caching-service/hashed-cache-manager.js +223 -0
  28. package/dist/services/caching-service/hashed-cache-manager.js.map +1 -0
  29. package/dist/services/caching-service/index.d.ts +1 -1
  30. package/dist/services/caching-service/index.d.ts.map +1 -1
  31. package/dist/services/caching-service/index.js +2 -0
  32. package/dist/services/caching-service/index.js.map +1 -0
  33. package/dist/services/caching-service/record-tracking-manager.d.ts +1 -1
  34. package/dist/services/caching-service/record-tracking-manager.d.ts.map +1 -1
  35. package/dist/services/caching-service/record-tracking-manager.js +28 -0
  36. package/dist/services/caching-service/record-tracking-manager.js.map +1 -0
  37. package/dist/services/data-sync-service/configuration-manager.d.ts +1 -1
  38. package/dist/services/data-sync-service/configuration-manager.d.ts.map +1 -1
  39. package/dist/services/data-sync-service/configuration-manager.js +163 -0
  40. package/dist/services/data-sync-service/configuration-manager.js.map +1 -0
  41. package/dist/services/data-sync-service/data-sync-service.d.ts.map +1 -1
  42. package/dist/services/data-sync-service/data-sync-service.js +95 -0
  43. package/dist/services/data-sync-service/data-sync-service.js.map +1 -0
  44. package/dist/services/data-sync-service/index.d.ts +3 -3
  45. package/dist/services/data-sync-service/index.d.ts.map +1 -1
  46. package/dist/services/data-sync-service/index.js +10 -0
  47. package/dist/services/data-sync-service/index.js.map +1 -0
  48. package/dist/services/data-sync-service/jobs/clean-up-expired-cache.d.ts.map +1 -1
  49. package/dist/services/data-sync-service/jobs/clean-up-expired-cache.js +42 -40
  50. package/dist/services/data-sync-service/jobs/clean-up-expired-cache.js.map +1 -1
  51. package/dist/services/data-sync-service/jobs/from-erp.d.ts.map +1 -1
  52. package/dist/services/data-sync-service/jobs/from-erp.js +50 -37
  53. package/dist/services/data-sync-service/jobs/from-erp.js.map +1 -1
  54. package/dist/services/data-sync-service/jobs/retry-failed-labor-tickets.d.ts.map +1 -1
  55. package/dist/services/data-sync-service/jobs/retry-failed-labor-tickets.js +38 -36
  56. package/dist/services/data-sync-service/jobs/retry-failed-labor-tickets.js.map +1 -1
  57. package/dist/services/data-sync-service/jobs/run-migrations.d.ts.map +1 -1
  58. package/dist/services/data-sync-service/jobs/run-migrations.js +24 -22
  59. package/dist/services/data-sync-service/jobs/run-migrations.js.map +1 -1
  60. package/dist/services/data-sync-service/jobs/to-erp.d.ts.map +1 -1
  61. package/dist/services/data-sync-service/jobs/to-erp.js +49 -49
  62. package/dist/services/data-sync-service/jobs/to-erp.js.map +1 -1
  63. package/dist/services/erp-api-services/errors.d.ts +1 -1
  64. package/dist/services/erp-api-services/errors.d.ts.map +1 -1
  65. package/dist/services/erp-api-services/errors.js +83 -0
  66. package/dist/services/erp-api-services/errors.js.map +1 -0
  67. package/dist/services/erp-api-services/graphql/graphql-service.d.ts +2 -2
  68. package/dist/services/erp-api-services/graphql/graphql-service.d.ts.map +1 -1
  69. package/dist/services/erp-api-services/graphql/graphql-service.js +102 -0
  70. package/dist/services/erp-api-services/graphql/graphql-service.js.map +1 -0
  71. package/dist/services/erp-api-services/graphql/types.js +6 -0
  72. package/dist/services/erp-api-services/graphql/types.js.map +1 -0
  73. package/dist/services/erp-api-services/index.d.ts +8 -8
  74. package/dist/services/erp-api-services/index.d.ts.map +1 -1
  75. package/dist/services/erp-api-services/index.js +13 -0
  76. package/dist/services/erp-api-services/index.js.map +1 -0
  77. package/dist/services/erp-api-services/oauth-client.js +41 -0
  78. package/dist/services/erp-api-services/oauth-client.js.map +1 -0
  79. package/dist/services/erp-api-services/rest/get-query-params.js +23 -0
  80. package/dist/services/erp-api-services/rest/get-query-params.js.map +1 -0
  81. package/dist/services/erp-api-services/rest/rest-api-service.d.ts +2 -2
  82. package/dist/services/erp-api-services/rest/rest-api-service.d.ts.map +1 -1
  83. package/dist/services/erp-api-services/rest/rest-api-service.js +163 -0
  84. package/dist/services/erp-api-services/rest/rest-api-service.js.map +1 -0
  85. package/dist/services/erp-api-services/types.d.ts +2 -2
  86. package/dist/services/erp-api-services/types.d.ts.map +1 -1
  87. package/dist/services/erp-api-services/types.js +2 -0
  88. package/dist/services/erp-api-services/types.js.map +1 -0
  89. package/dist/services/mm-api-service/index.d.ts +6 -13
  90. package/dist/services/mm-api-service/index.d.ts.map +1 -1
  91. package/dist/services/mm-api-service/index.js +15 -0
  92. package/dist/services/mm-api-service/index.js.map +1 -0
  93. package/dist/services/mm-api-service/mm-api-service.d.ts +7 -13
  94. package/dist/services/mm-api-service/mm-api-service.d.ts.map +1 -1
  95. package/dist/services/mm-api-service/mm-api-service.js +519 -0
  96. package/dist/services/mm-api-service/mm-api-service.js.map +1 -0
  97. package/dist/services/mm-api-service/token-mgr.js +113 -0
  98. package/dist/services/mm-api-service/token-mgr.js.map +1 -0
  99. package/dist/services/mm-api-service/types/checkpoint.js +2 -0
  100. package/dist/services/mm-api-service/types/checkpoint.js.map +1 -0
  101. package/dist/services/mm-api-service/types/entity-transformer.d.ts +2 -2
  102. package/dist/services/mm-api-service/types/entity-transformer.d.ts.map +1 -1
  103. package/dist/services/mm-api-service/types/entity-transformer.js +186 -0
  104. package/dist/services/mm-api-service/types/entity-transformer.js.map +1 -0
  105. package/dist/services/mm-api-service/types/mm-response-interfaces.js +34 -0
  106. package/dist/services/mm-api-service/types/mm-response-interfaces.js.map +1 -0
  107. package/dist/services/mm-api-service/types/receive-types.d.ts +0 -3
  108. package/dist/services/mm-api-service/types/receive-types.d.ts.map +1 -1
  109. package/dist/services/mm-api-service/types/receive-types.js +55 -0
  110. package/dist/services/mm-api-service/types/receive-types.js.map +1 -0
  111. package/dist/services/mm-api-service/types/send-types.js +337 -0
  112. package/dist/services/mm-api-service/types/send-types.js.map +1 -0
  113. package/dist/services/psql-erp-service/configuration.js +2 -0
  114. package/dist/services/psql-erp-service/configuration.js.map +1 -0
  115. package/dist/services/psql-erp-service/index.d.ts +3 -3
  116. package/dist/services/psql-erp-service/index.d.ts.map +1 -1
  117. package/dist/services/psql-erp-service/index.js +10 -0
  118. package/dist/services/psql-erp-service/index.js.map +1 -0
  119. package/dist/services/psql-erp-service/internal/types/psql-types.js +5 -0
  120. package/dist/services/psql-erp-service/internal/types/psql-types.js.map +1 -0
  121. package/dist/services/psql-erp-service/psql-helpers.js +99 -0
  122. package/dist/services/psql-erp-service/psql-helpers.js.map +1 -0
  123. package/dist/services/psql-erp-service/psql-service.d.ts +2 -2
  124. package/dist/services/psql-erp-service/psql-service.d.ts.map +1 -1
  125. package/dist/services/psql-erp-service/psql-service.js +187 -0
  126. package/dist/services/psql-erp-service/psql-service.js.map +1 -0
  127. package/dist/services/reporting-service/index.d.ts +1 -1
  128. package/dist/services/reporting-service/index.d.ts.map +1 -1
  129. package/dist/services/reporting-service/index.js +5 -0
  130. package/dist/services/reporting-service/index.js.map +1 -0
  131. package/dist/services/reporting-service/logger.d.ts.map +1 -1
  132. package/dist/services/reporting-service/logger.js +221 -0
  133. package/dist/services/reporting-service/logger.js.map +1 -0
  134. package/dist/services/sql-server-erp-service/configuration.js +2 -0
  135. package/dist/services/sql-server-erp-service/configuration.js.map +1 -0
  136. package/dist/services/sql-server-erp-service/index.d.ts +3 -3
  137. package/dist/services/sql-server-erp-service/index.d.ts.map +1 -1
  138. package/dist/services/sql-server-erp-service/index.js +11 -0
  139. package/dist/services/sql-server-erp-service/index.js.map +1 -0
  140. package/dist/services/sql-server-erp-service/internal/sql-labor-ticket-operations.d.ts +2 -2
  141. package/dist/services/sql-server-erp-service/internal/sql-labor-ticket-operations.d.ts.map +1 -1
  142. package/dist/services/sql-server-erp-service/internal/sql-labor-ticket-operations.js +50 -0
  143. package/dist/services/sql-server-erp-service/internal/sql-labor-ticket-operations.js.map +1 -0
  144. package/dist/services/sql-server-erp-service/internal/sql-server-config.js +40 -0
  145. package/dist/services/sql-server-erp-service/internal/sql-server-config.js.map +1 -0
  146. package/dist/services/sql-server-erp-service/internal/sql-transaction-manager.js +36 -0
  147. package/dist/services/sql-server-erp-service/internal/sql-transaction-manager.js.map +1 -0
  148. package/dist/services/sql-server-erp-service/internal/types/sql-server-types.js +2 -0
  149. package/dist/services/sql-server-erp-service/internal/types/sql-server-types.js.map +1 -0
  150. package/dist/services/sql-server-erp-service/sql-server-helpers.d.ts +3 -3
  151. package/dist/services/sql-server-erp-service/sql-server-helpers.d.ts.map +1 -1
  152. package/dist/services/sql-server-erp-service/sql-server-helpers.js +66 -0
  153. package/dist/services/sql-server-erp-service/sql-server-helpers.js.map +1 -0
  154. package/dist/services/sql-server-erp-service/sql-server-service.d.ts +2 -2
  155. package/dist/services/sql-server-erp-service/sql-server-service.d.ts.map +1 -1
  156. package/dist/services/sql-server-erp-service/sql-server-service.js +154 -0
  157. package/dist/services/sql-server-erp-service/sql-server-service.js.map +1 -0
  158. package/dist/services/sql-server-erp-service/types/sql-input-param.js +2 -0
  159. package/dist/services/sql-server-erp-service/types/sql-input-param.js.map +1 -0
  160. package/dist/services/sqlite-service/index.d.ts +1 -1
  161. package/dist/services/sqlite-service/index.d.ts.map +1 -1
  162. package/dist/services/sqlite-service/index.js +2 -0
  163. package/dist/services/sqlite-service/index.js.map +1 -0
  164. package/dist/services/sqlite-service/sqlite-coordinator.js +60 -0
  165. package/dist/services/sqlite-service/sqlite-coordinator.js.map +1 -0
  166. package/dist/types/erp-connector.d.ts +9 -2
  167. package/dist/types/erp-connector.d.ts.map +1 -1
  168. package/dist/types/erp-connector.js +2 -0
  169. package/dist/types/erp-connector.js.map +1 -0
  170. package/dist/types/erp-types.js +13 -0
  171. package/dist/types/erp-types.js.map +1 -0
  172. package/dist/types/flattened-work-order.d.ts +99 -0
  173. package/dist/types/flattened-work-order.d.ts.map +1 -0
  174. package/dist/types/flattened-work-order.js +2 -0
  175. package/dist/types/flattened-work-order.js.map +1 -0
  176. package/dist/types/index.d.ts +3 -2
  177. package/dist/types/index.d.ts.map +1 -1
  178. package/dist/types/index.js +6 -0
  179. package/dist/types/index.js.map +1 -0
  180. package/dist/utils/application-initializer.js +55 -0
  181. package/dist/utils/application-initializer.js.map +1 -0
  182. package/dist/utils/cleanup-numbers.js +6 -0
  183. package/dist/utils/cleanup-numbers.js.map +1 -0
  184. package/dist/utils/connector-factory.d.ts +1 -1
  185. package/dist/utils/connector-factory.d.ts.map +1 -1
  186. package/dist/utils/connector-factory.js +34 -0
  187. package/dist/utils/connector-factory.js.map +1 -0
  188. package/dist/utils/connector-log/log-deduper.d.ts +1 -1
  189. package/dist/utils/connector-log/log-deduper.d.ts.map +1 -1
  190. package/dist/utils/connector-log/log-deduper.js +240 -0
  191. package/dist/utils/connector-log/log-deduper.js.map +1 -0
  192. package/dist/utils/connector-log/mm-connector-logger-example.d.ts +1 -0
  193. package/dist/utils/connector-log/mm-connector-logger-example.js +88 -0
  194. package/dist/utils/connector-log/mm-connector-logger-example.js.map +1 -0
  195. package/dist/utils/connector-log/mm-connector-logger.d.ts +1 -1
  196. package/dist/utils/connector-log/mm-connector-logger.d.ts.map +1 -1
  197. package/dist/utils/connector-log/mm-connector-logger.js +151 -0
  198. package/dist/utils/connector-log/mm-connector-logger.js.map +1 -0
  199. package/dist/utils/data-transformation.js +38 -0
  200. package/dist/utils/data-transformation.js.map +1 -0
  201. package/dist/utils/env.d.ts +8 -0
  202. package/dist/utils/env.d.ts.map +1 -0
  203. package/dist/utils/env.js +58 -0
  204. package/dist/utils/env.js.map +1 -0
  205. package/dist/utils/erp-timezone-utils.d.ts +20 -0
  206. package/dist/utils/erp-timezone-utils.d.ts.map +1 -0
  207. package/dist/utils/erp-timezone-utils.js +75 -0
  208. package/dist/utils/erp-timezone-utils.js.map +1 -0
  209. package/dist/utils/erp-type-from-entity.d.ts +1 -1
  210. package/dist/utils/erp-type-from-entity.d.ts.map +1 -1
  211. package/dist/utils/erp-type-from-entity.js +6 -0
  212. package/dist/utils/erp-type-from-entity.js.map +1 -0
  213. package/dist/utils/error-utils.js +21 -0
  214. package/dist/utils/error-utils.js.map +1 -0
  215. package/dist/utils/http-client.js +189 -0
  216. package/dist/utils/http-client.js.map +1 -0
  217. package/dist/utils/index.d.ts +34 -38
  218. package/dist/utils/index.d.ts.map +1 -1
  219. package/dist/utils/index.js +66 -0
  220. package/dist/utils/index.js.map +1 -0
  221. package/dist/utils/local-data-store/database-lock.js +68 -0
  222. package/dist/utils/local-data-store/database-lock.js.map +1 -0
  223. package/dist/utils/local-data-store/jobs-shared-data.d.ts +2 -0
  224. package/dist/utils/local-data-store/jobs-shared-data.d.ts.map +1 -1
  225. package/dist/utils/local-data-store/jobs-shared-data.js +118 -0
  226. package/dist/utils/local-data-store/jobs-shared-data.js.map +1 -0
  227. package/dist/utils/mm-labor-ticket-helpers.d.ts +4 -5
  228. package/dist/utils/mm-labor-ticket-helpers.d.ts.map +1 -1
  229. package/dist/utils/mm-labor-ticket-helpers.js +28 -0
  230. package/dist/utils/mm-labor-ticket-helpers.js.map +1 -0
  231. package/dist/utils/removeExtraneousFields.d.ts +1 -1
  232. package/dist/utils/removeExtraneousFields.d.ts.map +1 -1
  233. package/dist/utils/removeExtraneousFields.js +16 -0
  234. package/dist/utils/removeExtraneousFields.js.map +1 -0
  235. package/dist/utils/removeIdFieldFromPayload.d.ts +1 -1
  236. package/dist/utils/removeIdFieldFromPayload.d.ts.map +1 -1
  237. package/dist/utils/removeIdFieldFromPayload.js +16 -0
  238. package/dist/utils/removeIdFieldFromPayload.js.map +1 -0
  239. package/dist/utils/resource-group.d.ts +1 -1
  240. package/dist/utils/resource-group.d.ts.map +1 -1
  241. package/dist/utils/resource-group.js +59 -0
  242. package/dist/utils/resource-group.js.map +1 -0
  243. package/dist/utils/standard-process-drivers/error-processor.d.ts +3 -3
  244. package/dist/utils/standard-process-drivers/error-processor.d.ts.map +1 -1
  245. package/dist/utils/standard-process-drivers/error-processor.js +262 -0
  246. package/dist/utils/standard-process-drivers/error-processor.js.map +1 -0
  247. package/dist/utils/standard-process-drivers/index.d.ts +3 -3
  248. package/dist/utils/standard-process-drivers/index.d.ts.map +1 -1
  249. package/dist/utils/standard-process-drivers/index.js +4 -0
  250. package/dist/utils/standard-process-drivers/index.js.map +1 -0
  251. package/dist/utils/standard-process-drivers/labor-ticket-erp-synchronizer.d.ts +16 -1
  252. package/dist/utils/standard-process-drivers/labor-ticket-erp-synchronizer.d.ts.map +1 -1
  253. package/dist/utils/standard-process-drivers/labor-ticket-erp-synchronizer.js +299 -0
  254. package/dist/utils/standard-process-drivers/labor-ticket-erp-synchronizer.js.map +1 -0
  255. package/dist/utils/standard-process-drivers/mm-entity-processor.d.ts +11 -5
  256. package/dist/utils/standard-process-drivers/mm-entity-processor.d.ts.map +1 -1
  257. package/dist/utils/standard-process-drivers/mm-entity-processor.js +174 -0
  258. package/dist/utils/standard-process-drivers/mm-entity-processor.js.map +1 -0
  259. package/dist/utils/standard-process-drivers/standard-process-drivers.d.ts +12 -6
  260. package/dist/utils/standard-process-drivers/standard-process-drivers.d.ts.map +1 -1
  261. package/dist/utils/standard-process-drivers/standard-process-drivers.js +333 -0
  262. package/dist/utils/standard-process-drivers/standard-process-drivers.js.map +1 -0
  263. package/dist/utils/time-utils.d.ts.map +1 -1
  264. package/dist/utils/time-utils.js +103 -0
  265. package/dist/utils/time-utils.js.map +1 -0
  266. package/dist/utils/timezone.js +105 -0
  267. package/dist/utils/timezone.js.map +1 -0
  268. package/dist/utils/trimObjectValues.js +11 -0
  269. package/dist/utils/trimObjectValues.js.map +1 -0
  270. package/dist/utils/uniqueRows.js +35 -0
  271. package/dist/utils/uniqueRows.js.map +1 -0
  272. package/package.json +8 -10
  273. package/src/index.ts +42 -45
  274. package/src/knexfile.ts +1 -0
  275. package/src/services/caching-service/batch-cache-manager.ts +2 -2
  276. package/src/services/caching-service/hashed-cache-manager.ts +5 -5
  277. package/src/services/caching-service/index.ts +1 -1
  278. package/src/services/caching-service/record-tracking-manager.ts +2 -2
  279. package/src/services/data-sync-service/configuration-manager.ts +52 -39
  280. package/src/services/data-sync-service/data-sync-service.ts +10 -19
  281. package/src/services/data-sync-service/index.ts +3 -3
  282. package/src/services/data-sync-service/jobs/clean-up-expired-cache.ts +5 -4
  283. package/src/services/data-sync-service/jobs/from-erp.ts +12 -6
  284. package/src/services/data-sync-service/jobs/retry-failed-labor-tickets.ts +4 -3
  285. package/src/services/data-sync-service/jobs/run-migrations.ts +4 -3
  286. package/src/services/data-sync-service/jobs/to-erp.ts +5 -14
  287. package/src/services/erp-api-services/errors.ts +3 -3
  288. package/src/services/erp-api-services/graphql/graphql-service.ts +5 -5
  289. package/src/services/erp-api-services/index.ts +8 -8
  290. package/src/services/erp-api-services/rest/rest-api-service.ts +4 -4
  291. package/src/services/erp-api-services/types.ts +2 -2
  292. package/src/services/mm-api-service/index.ts +6 -14
  293. package/src/services/mm-api-service/mm-api-service.ts +13 -30
  294. package/src/services/mm-api-service/token-mgr.ts +4 -4
  295. package/src/services/mm-api-service/types/entity-transformer.ts +3 -3
  296. package/src/services/mm-api-service/types/receive-types.ts +0 -1
  297. package/src/services/psql-erp-service/index.ts +3 -3
  298. package/src/services/psql-erp-service/psql-service.ts +4 -4
  299. package/src/services/reporting-service/index.ts +1 -1
  300. package/src/services/reporting-service/logger.ts +116 -81
  301. package/src/services/sql-server-erp-service/index.ts +3 -3
  302. package/src/services/sql-server-erp-service/internal/sql-labor-ticket-operations.ts +2 -2
  303. package/src/services/sql-server-erp-service/internal/sql-transaction-manager.ts +1 -1
  304. package/src/services/sql-server-erp-service/sql-server-helpers.ts +6 -6
  305. package/src/services/sql-server-erp-service/sql-server-service.ts +4 -4
  306. package/src/services/sqlite-service/index.ts +1 -1
  307. package/src/services/sqlite-service/sqlite-coordinator.ts +2 -2
  308. package/src/types/erp-connector.ts +9 -2
  309. package/src/types/flattened-work-order.ts +108 -0
  310. package/src/types/index.ts +10 -2
  311. package/src/utils/application-initializer.ts +5 -5
  312. package/src/utils/connector-factory.ts +2 -2
  313. package/src/utils/connector-log/log-deduper.ts +2 -2
  314. package/src/utils/connector-log/mm-connector-logger.ts +3 -3
  315. package/src/utils/env.ts +75 -0
  316. package/src/utils/erp-timezone-utils.ts +99 -0
  317. package/src/utils/erp-type-from-entity.ts +1 -1
  318. package/src/utils/http-client.ts +5 -4
  319. package/src/utils/index.ts +38 -39
  320. package/src/utils/local-data-store/database-lock.ts +1 -1
  321. package/src/utils/local-data-store/jobs-shared-data.ts +2 -0
  322. package/src/utils/mm-labor-ticket-helpers.ts +12 -9
  323. package/src/utils/removeExtraneousFields.ts +1 -1
  324. package/src/utils/removeIdFieldFromPayload.ts +1 -1
  325. package/src/utils/resource-group.ts +2 -2
  326. package/src/utils/standard-process-drivers/error-processor.ts +5 -5
  327. package/src/utils/standard-process-drivers/index.ts +3 -3
  328. package/src/utils/standard-process-drivers/labor-ticket-erp-synchronizer.ts +225 -69
  329. package/src/utils/standard-process-drivers/mm-entity-processor.ts +14 -8
  330. package/src/utils/standard-process-drivers/standard-process-drivers.ts +39 -25
  331. package/src/utils/time-utils.ts +14 -3
  332. package/src/utils/timezone.ts +2 -2
  333. package/dist/config-CvA-mFWF.js +0 -418
  334. package/dist/config-CvA-mFWF.js.map +0 -1
  335. package/dist/connector-factory-BPm2GVVF.js +0 -30
  336. package/dist/connector-factory-BPm2GVVF.js.map +0 -1
  337. package/dist/hashed-cache-manager-B15NN8hK.js +0 -322
  338. package/dist/hashed-cache-manager-B15NN8hK.js.map +0 -1
  339. package/dist/index-D8qO1NyK.js +0 -192
  340. package/dist/index-D8qO1NyK.js.map +0 -1
  341. package/dist/knexfile-Bng2Ru9c.js +0 -20
  342. package/dist/knexfile-Bng2Ru9c.js.map +0 -1
  343. package/dist/logger-BWw0_z9q.js +0 -17557
  344. package/dist/logger-BWw0_z9q.js.map +0 -1
  345. package/dist/mm-erp-sdk.js +0 -4978
  346. package/dist/mm-erp-sdk.js.map +0 -1
  347. package/dist/services/data-sync-service/nats-labor-ticket-listener.d.ts +0 -30
  348. package/dist/services/data-sync-service/nats-labor-ticket-listener.d.ts.map +0 -1
  349. package/dist/services/mm-api-service/company-info.d.ts +0 -13
  350. package/dist/services/mm-api-service/company-info.d.ts.map +0 -1
  351. package/dist/services/nats-service/nats-service.d.ts +0 -114
  352. package/dist/services/nats-service/nats-service.d.ts.map +0 -1
  353. package/dist/services/nats-service/test-nats-subscriber.d.ts +0 -6
  354. package/dist/services/nats-service/test-nats-subscriber.d.ts.map +0 -1
  355. package/dist/utils/error-formatter.d.ts +0 -19
  356. package/dist/utils/error-formatter.d.ts.map +0 -1
  357. package/src/services/data-sync-service/nats-labor-ticket-listener.ts +0 -341
  358. package/src/services/mm-api-service/company-info.ts +0 -87
  359. package/src/services/nats-service/nats-service.ts +0 -351
  360. package/src/services/nats-service/test-nats-subscriber.ts +0 -96
  361. package/src/utils/error-formatter.ts +0 -205
@@ -1,10 +1,10 @@
1
- import { ERPObjType } from "../../types/erp-types";
2
- import { MMReceiveLaborTicket } from "./types/receive-types";
3
- import { MMTokenManager } from "./token-mgr";
4
- import * as MM_SEND_TYPES from "./types/send-types";
5
- import { HTTPClient } from "../../utils/http-client";
6
- import { Checkpoint } from "./types/checkpoint";
7
- import { MMApiBaseResponse, MMGraphQLResourceResponse, MMMachineGroupsResponse } from "./types/mm-response-interfaces";
1
+ import { ERPObjType } from "../../types/erp-types.js";
2
+ import { MMReceiveLaborTicket } from "./types/receive-types.js";
3
+ import { MMTokenManager } from "./token-mgr.js";
4
+ import * as MM_SEND_TYPES from "./types/send-types.js";
5
+ import { HTTPClient } from "../../utils/http-client.js";
6
+ import { Checkpoint } from "./types/checkpoint.js";
7
+ import { MMApiBaseResponse, MMGraphQLResourceResponse, MMMachineGroupsResponse } from "./types/mm-response-interfaces.js";
8
8
  /**
9
9
  * Class to manage interactions with the MM Mapping Service
10
10
  * Integrates an MM Token Manager to handle the API token.
@@ -160,12 +160,6 @@ export declare class MMApiClient {
160
160
  * @returns Promise with an array of labor ticket updates
161
161
  */
162
162
  fetchLaborTicketUpdates(query: Record<string, string>): Promise<MMReceiveLaborTicket[]>;
163
- /**
164
- * Fetch a single labor ticket by reference from the MM API
165
- * @param laborTicketRef The labor ticket reference to fetch
166
- * @returns Promise with the labor ticket data
167
- */
168
- fetchLaborTicketByRef(laborTicketRef: string): Promise<MMReceiveLaborTicket>;
169
163
  /**
170
164
  * Fetch a checkpoint for a specific system, table, and checkpoint type
171
165
  * @param checkpoint The checkpoint to fetch
@@ -1 +1 @@
1
- {"version":3,"file":"mm-api-service.d.ts","sourceRoot":"","sources":["../../../src/services/mm-api-service/mm-api-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mm-api-service.d.ts","sourceRoot":"","sources":["../../../src/services/mm-api-service/mm-api-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,519 @@
1
+ import logger from "../reporting-service/logger.js";
2
+ import { ERPObjType } from "../../types/erp-types.js";
3
+ import { MMReceiveLaborTicket } from "./types/receive-types.js";
4
+ import { MMTokenManager } from "./token-mgr.js";
5
+ import { HTTPClientFactory, } from "../../utils/http-client.js";
6
+ import { CoreConfiguration } from "../data-sync-service/configuration-manager.js";
7
+ import { ErrorHandler } from "../erp-api-services/errors.js";
8
+ const MAPPING = "MAPPING";
9
+ const CHECKPOINTS = "CHECKPOINTS";
10
+ const MACHINE_GROUPS = "MACHINE_GROUPS";
11
+ const GRAPHQL = "GRAPHQL";
12
+ var UrlBase;
13
+ (function (UrlBase) {
14
+ UrlBase["ErpApiSvcBase"] = "ErpApiSvcBase";
15
+ UrlBase["ApiBase"] = "ApiBase";
16
+ })(UrlBase || (UrlBase = {}));
17
+ /**
18
+ * Class to manage interactions with the MM Mapping Service
19
+ * Integrates an MM Token Manager to handle the API token.
20
+ */
21
+ export class MMApiClient {
22
+ tokenMgr;
23
+ api;
24
+ baseUrls;
25
+ resourceURLs = {
26
+ [ERPObjType.RESOURCES]: "/erp/v1/resources",
27
+ [ERPObjType.PARTS]: "/erp/v1/parts",
28
+ [ERPObjType.PART_OPERATION]: "/erp/v1/part-operations",
29
+ [ERPObjType.WORK_ORDERS]: "/erp/v1/production-orders",
30
+ [ERPObjType.WORK_ORDER_OPERATIONS]: "/erp/v1/production-order-operations",
31
+ [ERPObjType.PERSONS]: "/erp/v1/persons",
32
+ [ERPObjType.REASONS]: "/erp/v1/reasons",
33
+ [ERPObjType.LABOR_TICKETS]: "/erp/v1/labor-tickets",
34
+ [MAPPING]: "/erp/v1/mapping",
35
+ [CHECKPOINTS]: "/erp/v1/checkpoints",
36
+ [MACHINE_GROUPS]: "/machine-groups",
37
+ [GRAPHQL]: "/proxy/graphql",
38
+ };
39
+ constructor() {
40
+ this.tokenMgr = new MMTokenManager();
41
+ this.baseUrls = {
42
+ [UrlBase.ErpApiSvcBase]: CoreConfiguration.inst().mmERPSvcApiBaseUrl,
43
+ [UrlBase.ApiBase]: CoreConfiguration.inst().mmApiBaseUrl,
44
+ };
45
+ this.api = HTTPClientFactory.getInstance({
46
+ baseUrl: '',
47
+ retryAttempts: CoreConfiguration.inst().mmApiRetryAttempts,
48
+ });
49
+ }
50
+ //#region Private Methods
51
+ async executeWithAuthRetry(operation, options = {}) {
52
+ let token = options.token || (await this.tokenMgr.getToken());
53
+ try {
54
+ return await operation(token);
55
+ }
56
+ catch (error) {
57
+ // Type guard to check if error has status property
58
+ const hasStatus = (err) => {
59
+ return typeof err === "object" && err !== null && "status" in err;
60
+ };
61
+ // Check if this looks like an auth error - only retry on explicit auth status codes
62
+ const isAuthError = hasStatus(error) && (error.status === 401 || error.status === 403);
63
+ if (isAuthError && !options.token) {
64
+ // Only retry if we used cached token
65
+ logger.info("Retrying request with fresh token due to auth error");
66
+ this.tokenMgr.invalidateToken();
67
+ token = await this.tokenMgr.getToken();
68
+ return await operation(token); // Single retry
69
+ }
70
+ throw error; // Re-throw if not auth error or already retried
71
+ }
72
+ }
73
+ /**
74
+ * Fetch data from the MM API, with an auth retry mechanism
75
+ * Auth Retry Level (executeWithAuthRetry)
76
+ * - 401 (Unauthorized) and 403 (Forbidden) get special treatment
77
+ * - These trigger a token refresh and one retry attempt
78
+ * - If the retry still fails, the error is re-thrown
79
+ *
80
+ * HTTP Status Codes behavior:
81
+ * - 2xx - Success, returns normally
82
+ * - 4xx - Client errors, throws immediately
83
+ * - 5xx - Server errors, retries then throws
84
+ *
85
+ * Flags:
86
+ */
87
+ async getData(path, queryParams = {}, options = {}) {
88
+ try {
89
+ return await this.executeWithAuthRetry(async (token) => {
90
+ const baseUrl = options.baseUrl || UrlBase.ErpApiSvcBase;
91
+ const params = new URLSearchParams({
92
+ ...queryParams,
93
+ ...(baseUrl === UrlBase.ErpApiSvcBase ? { raw: "true" } : {}),
94
+ });
95
+ const url = params.size > 0 ? `${path}?${params.toString()}` : path;
96
+ const fullUrl = this.baseUrls[baseUrl] + url;
97
+ const result = await this.api.request({
98
+ url: fullUrl,
99
+ method: "GET",
100
+ headers: {
101
+ Authorization: `Bearer ${token}`,
102
+ ...options.headers,
103
+ },
104
+ });
105
+ // Always include HTTP status in the response
106
+ return {
107
+ ...result.data,
108
+ httpStatus: result.status,
109
+ };
110
+ }, options);
111
+ }
112
+ catch (error) {
113
+ ErrorHandler.handle(error);
114
+ }
115
+ }
116
+ /**
117
+ * Send data to the MM API, with an auth retry mechanism
118
+ * Auth Retry Level (executeWithAuthRetry)
119
+ * - 401 (Unauthorized) and 403 (Forbidden) get special treatment
120
+ * - These trigger a token refresh and one retry attempt
121
+ * - If the retry still fails, the error is re-thrown
122
+ *
123
+ * HTTP Status Codes behavior:
124
+ * - 2xx - Success, returns normally
125
+ * - 4xx - Client errors, throws immediately
126
+ * - 5xx - Server errors, retries then throws
127
+ *
128
+ * Flags:
129
+ * - 'raw' = true and 'dedupe' = true will be set for MM's ERP API url
130
+ */
131
+ async postData(path, data = {}, queryParams = {}, options = {}) {
132
+ try {
133
+ return await this.executeWithAuthRetry(async (token) => {
134
+ const baseUrl = options.baseUrl || UrlBase.ErpApiSvcBase;
135
+ const params = new URLSearchParams({
136
+ ...queryParams,
137
+ ...(baseUrl === UrlBase.ErpApiSvcBase
138
+ ? { dedupe: "true", raw: "true" }
139
+ : {}),
140
+ });
141
+ const url = params.size > 0 ? `${path}?${params.toString()}` : path;
142
+ const fullUrl = this.baseUrls[baseUrl] + url;
143
+ const request = {
144
+ url: fullUrl,
145
+ method: "POST",
146
+ data: JSON.stringify(data),
147
+ headers: {
148
+ Authorization: `Bearer ${token}`,
149
+ ...options.headers,
150
+ },
151
+ };
152
+ const result = await this.api.request(request);
153
+ // Always include HTTP status in the response
154
+ return {
155
+ ...result.data,
156
+ httpStatus: result.status,
157
+ };
158
+ }, options);
159
+ }
160
+ catch (error) {
161
+ ErrorHandler.handle(error);
162
+ }
163
+ }
164
+ /**
165
+ * Delete data from the MM API, with an auth retry mechanism
166
+ * Auth Retry Level (executeWithAuthRetry)
167
+ * - 401 (Unauthorized) and 403 (Forbidden) get special treatment
168
+ * - These trigger a token refresh and one retry attempt
169
+ * - If the retry still fails, the error is re-thrown
170
+ *
171
+ * HTTP Status Codes behavior:
172
+ * - 2xx - Success, returns normally
173
+ * - 4xx - Client errors, throws immediately
174
+ * - 5xx - Server errors, retries then throws
175
+ *
176
+ */
177
+ async deleteData(path, data = {}, options = {}) {
178
+ try {
179
+ return await this.executeWithAuthRetry(async (token) => {
180
+ const baseUrl = options.baseUrl || UrlBase.ErpApiSvcBase;
181
+ const params = new URLSearchParams({
182
+ ...(baseUrl === UrlBase.ErpApiSvcBase ? { raw: "true" } : {}),
183
+ });
184
+ const url = params.size > 0 ? `${path}?${params.toString()}` : path;
185
+ const fullUrl = this.baseUrls[baseUrl] + url;
186
+ const result = await this.api.request({
187
+ url: fullUrl,
188
+ method: "DELETE",
189
+ data,
190
+ headers: {
191
+ Authorization: `Bearer ${token}`,
192
+ ...options.headers,
193
+ },
194
+ });
195
+ // Always include HTTP status in the response
196
+ return {
197
+ ...result.data,
198
+ httpStatus: result.status,
199
+ };
200
+ }, options);
201
+ }
202
+ catch (error) {
203
+ ErrorHandler.handle(error);
204
+ }
205
+ }
206
+ /**
207
+ * Patch data to the MM API, with an auth retry mechanism
208
+ * Auth Retry Level (executeWithAuthRetry)
209
+ * - 401 (Unauthorized) and 403 (Forbidden) get special treatment
210
+ * - These trigger a token refresh and one retry attempt
211
+ * - If the retry still fails, the error is re-thrown
212
+ *
213
+ * HTTP Status Codes behavior:
214
+ * - 2xx - Success, returns normally
215
+ * - 4xx - Client errors, throws immediately
216
+ * - 5xx - Server errors, retries then throws
217
+ *
218
+ */
219
+ async patchData(path, data = {}, options = {}) {
220
+ try {
221
+ return await this.executeWithAuthRetry(async (token) => {
222
+ const baseUrl = options.baseUrl || UrlBase.ErpApiSvcBase;
223
+ const params = new URLSearchParams({
224
+ ...(baseUrl === UrlBase.ErpApiSvcBase ? { raw: "true" } : {}),
225
+ });
226
+ const url = params.size > 0 ? `${path}?${params.toString()}` : path;
227
+ const fullUrl = this.baseUrls[baseUrl] + url;
228
+ const request = {
229
+ url: fullUrl,
230
+ method: "PATCH",
231
+ data,
232
+ headers: {
233
+ Authorization: `Bearer ${token}`,
234
+ ...options.headers,
235
+ },
236
+ };
237
+ const result = await this.api.request(request);
238
+ // Always include HTTP status in the response
239
+ return {
240
+ ...result.data,
241
+ httpStatus: result.status,
242
+ };
243
+ }, options);
244
+ }
245
+ catch (error) {
246
+ ErrorHandler.handle(error);
247
+ }
248
+ }
249
+ async graphqlRequest(operationName, query) {
250
+ try {
251
+ return await this.postData(this.resourceURLs[GRAPHQL], { operationName, query }, {}, {
252
+ baseUrl: UrlBase.ApiBase,
253
+ token: CoreConfiguration.inst().mmApiAuthToken,
254
+ headers: { "Content-Type": "application/json" },
255
+ });
256
+ }
257
+ catch (error) {
258
+ ErrorHandler.handle(error);
259
+ }
260
+ }
261
+ /**
262
+ * Fetch a checkpoint for a specific system, table, and checkpoint type
263
+ * @param checkpoint The checkpoint to fetch
264
+ * @returns Promise with the checkpoint data
265
+ */
266
+ async fetchCheckpoint(checkpoint) {
267
+ const { system, table, checkpointType } = checkpoint;
268
+ return this.getData(this.resourceURLs[CHECKPOINTS], {
269
+ system,
270
+ table,
271
+ checkpointType,
272
+ });
273
+ }
274
+ //#endregion private methods
275
+ //#region Public Methods
276
+ /**
277
+ * Send resources to the MM API
278
+ * @param resources Array of resources to send
279
+ * @returns Promise with the API response
280
+ */
281
+ async sendResourcesToMM(resources) {
282
+ return await this.postData(this.resourceURLs[ERPObjType.RESOURCES], {
283
+ data: resources.map((resource) => resource.toRESTApiObject()),
284
+ });
285
+ }
286
+ /**
287
+ * Send parts to the MM API
288
+ * @param parts Array of parts to send
289
+ * @returns Promise with the API response
290
+ */
291
+ async sendPartsToMM(parts) {
292
+ return await this.postData(this.resourceURLs[ERPObjType.PARTS], {
293
+ data: parts.map((part) => part.toRESTApiObject()),
294
+ });
295
+ }
296
+ /**
297
+ * Send part operations to the MM API
298
+ * @param operations Array of part operations to send
299
+ * @returns Promise with the API response
300
+ */
301
+ async sendPartOperationsToMM(operations) {
302
+ return await this.postData(this.resourceURLs[ERPObjType.PART_OPERATION], {
303
+ data: operations.map((operation) => operation.toRESTApiObject()),
304
+ });
305
+ }
306
+ /**
307
+ * Send work orders to the MM API
308
+ * @param workOrders Array of work orders to send
309
+ * @returns Promise with the API response
310
+ */
311
+ async sendWorkOrdersToMM(workOrders) {
312
+ return await this.postData(this.resourceURLs[ERPObjType.WORK_ORDERS], {
313
+ data: workOrders.map((workOrder) => workOrder.toRESTApiObject()),
314
+ });
315
+ }
316
+ /**
317
+ * Send work order operations to the MM API
318
+ * @param workOrderOperations Array of work order operations to send
319
+ * @returns Promise with the API response
320
+ */
321
+ async sendWorkOrderOperationsToMM(workOrderOperations) {
322
+ return await this.postData(this.resourceURLs[ERPObjType.WORK_ORDER_OPERATIONS], {
323
+ data: workOrderOperations.map((operation) => operation.toRESTApiObject()),
324
+ });
325
+ }
326
+ /**
327
+ * Send persons to the MM API
328
+ * @param persons Array of persons to send
329
+ * @returns Promise with the API response
330
+ */
331
+ async sendPersonsToMM(persons) {
332
+ return await this.postData(this.resourceURLs[ERPObjType.PERSONS], {
333
+ data: persons.map((person) => person.toRESTApiObject()),
334
+ });
335
+ }
336
+ /**
337
+ * Send reasons to the MM API
338
+ * @param reasons Array of reasons to send
339
+ * @returns Promise with the API response
340
+ */
341
+ async sendReasonsToMM(reasons) {
342
+ return await this.postData(this.resourceURLs[ERPObjType.REASONS], {
343
+ data: reasons.map((reason) => reason.toRESTApiObject()),
344
+ });
345
+ }
346
+ /**
347
+ * Send labor tickets to the MM API
348
+ * @param laborTickets Array of labor tickets to send
349
+ * @returns Promise with the API response
350
+ */
351
+ async sendLaborTicketsToMM(laborTickets) {
352
+ return await this.postData(this.resourceURLs[ERPObjType.LABOR_TICKETS], {
353
+ data: laborTickets.map((ticket) => ticket.toRESTApiObject()),
354
+ });
355
+ }
356
+ /**
357
+ * Delete labor tickets from the MM API
358
+ * @param laborTickets Array of labor ticket records to delete
359
+ * @returns Promise with the API response
360
+ */
361
+ async deleteLaborTickets(laborTickets) {
362
+ logger.debug("deleteLaborTickets:", { laborTickets });
363
+ return await this.deleteData(this.resourceURLs[ERPObjType.LABOR_TICKETS], {
364
+ laborTickets,
365
+ });
366
+ }
367
+ /**
368
+ * Fetch transformed labor tickets from the MM API
369
+ * @returns Promise with the transformed labor tickets
370
+ */
371
+ async fetchTransformedLaborTickets() {
372
+ return await this.getData(`${this.resourceURLs[ERPObjType.LABOR_TICKETS]}/export`);
373
+ }
374
+ /**
375
+ * Fetch labor ticket updates from the MM API
376
+ * @param query Query parameters for filtering updates
377
+ * @returns Promise with an array of labor ticket updates
378
+ */
379
+ async fetchLaborTicketUpdates(query) {
380
+ const updates = (await this.getData(`${this.resourceURLs[ERPObjType.LABOR_TICKETS]}/export/updates`, query));
381
+ return updates.data.map((ticket) => new MMReceiveLaborTicket(ticket));
382
+ }
383
+ /**
384
+ * Fetch a checkpoint for a specific system, table, and checkpoint type
385
+ * @param checkpoint The checkpoint to fetch
386
+ * @returns Promise with the checkpoint data
387
+ */
388
+ async getCheckpoint(checkpoint) {
389
+ return await this.fetchCheckpoint(checkpoint);
390
+ }
391
+ /**
392
+ * Save a checkpoint to the MM API
393
+ * @param checkpoint The checkpoint to save
394
+ * @returns Promise with the API response
395
+ */
396
+ async saveCheckpoint(checkpoint) {
397
+ return await this.postData(this.resourceURLs[CHECKPOINTS], checkpoint);
398
+ }
399
+ /**
400
+ * Initialize a checkpoint for a specific system, table, and checkpoint type
401
+ * @param checkpoint The checkpoint to initialize
402
+ * @returns Promise with the checkpoint data
403
+ */
404
+ async initializeCheckpoint(checkpoint) {
405
+ const currentCheckpoint = await this.fetchCheckpoint(checkpoint);
406
+ logger.info("currentCheckpoint:", { currentCheckpoint });
407
+ logger.info("currentCheckpoint keys:", {
408
+ keys: Object.keys(currentCheckpoint || {}),
409
+ });
410
+ // Check if we have a meaningful checkpoint response
411
+ // The API returns either:
412
+ // - Empty: just { httpStatus: 200 }
413
+ // - With data: { timestamp: "2025-08-08T18:53:14.295Z", httpStatus: 200 }
414
+ const checkpointResponse = currentCheckpoint;
415
+ const hasCheckpointData = checkpointResponse && checkpointResponse.timestamp;
416
+ if (!hasCheckpointData) {
417
+ logger.info("No checkpoint data found, initializing checkpoint");
418
+ const saveCheckpoint = await this.saveCheckpoint(checkpoint);
419
+ logger.info("saveCheckpoint:", { saveCheckpoint });
420
+ }
421
+ else {
422
+ logger.info("Existing checkpoint found:", {
423
+ checkpointTimestamp: checkpointResponse.timestamp,
424
+ });
425
+ }
426
+ }
427
+ /**
428
+ * Send data to MM API based on the object type
429
+ * @param type The type of ERP object to send
430
+ * @param objects Array of objects to send
431
+ * @returns Promise with the API response including affected rows count
432
+ */
433
+ async sendDataToMMByType(type, objects) {
434
+ switch (type) {
435
+ case ERPObjType.PERSONS:
436
+ return await this.sendPersonsToMM(objects);
437
+ case ERPObjType.RESOURCES:
438
+ return await this.sendResourcesToMM(objects);
439
+ case ERPObjType.PARTS:
440
+ return await this.sendPartsToMM(objects);
441
+ case ERPObjType.PART_OPERATION:
442
+ return await this.sendPartOperationsToMM(objects);
443
+ case ERPObjType.WORK_ORDERS:
444
+ return await this.sendWorkOrdersToMM(objects);
445
+ case ERPObjType.WORK_ORDER_OPERATIONS:
446
+ return await this.sendWorkOrderOperationsToMM(objects);
447
+ case ERPObjType.REASONS:
448
+ return await this.sendReasonsToMM(objects);
449
+ case ERPObjType.LABOR_TICKETS:
450
+ return await this.sendLaborTicketsToMM(objects);
451
+ default:
452
+ throw new Error(`Unsupported type: ${ERPObjType[type]}`);
453
+ }
454
+ }
455
+ /**
456
+ * Update the labor ticket ERP ID by laborTicketRef
457
+ * @param laborTicketRef The MM API labor ticket unique ID
458
+ * @param erpObjectId The ERP labor ticket ID to update
459
+ * @returns The updated labor ticket
460
+ */
461
+ async updateLaborTicketIdByRef(laborTicketRef, laborTicketId) {
462
+ return await this.patchData(`${this.resourceURLs[ERPObjType.LABOR_TICKETS]}/${laborTicketRef}`, { laborTicketId });
463
+ }
464
+ /**
465
+ * Add failed labor ticket refs to the MM API
466
+ * @param failedTicketRefs The failed labor ticket references
467
+ * @returns The response from the MM API
468
+ */
469
+ async addFailedLaborTicketRefs(system, failedTicketRefs) {
470
+ return await this.postData(`${this.resourceURLs[ERPObjType.LABOR_TICKETS]}/failed`, { failedTicketRefs }, { system });
471
+ }
472
+ async fetchFailedLaborTickets(system) {
473
+ const failedTickets = (await this.getData(`${this.resourceURLs[ERPObjType.LABOR_TICKETS]}/failed`, { system }));
474
+ return failedTickets.erpLaborTickets.map((ticket) => new MMReceiveLaborTicket(ticket));
475
+ }
476
+ /**
477
+ * Send connector logs to the MM API
478
+ * @param logEntry Single log entry to send
479
+ * @returns Promise with the API response
480
+ */
481
+ async sendConnectorLog(logEntry) {
482
+ return await this.postData('/connector/logs', logEntry, {}, { baseUrl: UrlBase.ApiBase });
483
+ }
484
+ /**
485
+ * Send bulk connector logs to the MM API
486
+ * @param logs Array of log entries to send
487
+ * @returns Promise with the API response
488
+ */
489
+ async sendBulkConnectorLogs(logs) {
490
+ return await this.postData('/connector/logs', { logs }, {}, { baseUrl: UrlBase.ApiBase });
491
+ }
492
+ async deleteFailedLaborTicketIds(system, laborTicketRefs) {
493
+ return await this.postData(`${this.resourceURLs[ERPObjType.LABOR_TICKETS]}/failed/remove`, { laborTicketRefs }, { system });
494
+ }
495
+ /**
496
+ * Fetch machine groups from the MM API
497
+ * @returns Promise with the machine groups data
498
+ */
499
+ async fetchMachineGroups() {
500
+ return (await this.getData(this.resourceURLs[MACHINE_GROUPS], {}, { baseUrl: UrlBase.ApiBase }));
501
+ }
502
+ /**
503
+ * Fetch resources using GraphQL
504
+ * @returns Promise with the resources data
505
+ */
506
+ async fetchResourcesFromGraphQL() {
507
+ return (await this.graphqlRequest("getErpResources", "query getErpResources { machineResource: erpResources { machineRef machineGroupId resourceId }}"));
508
+ }
509
+ /**
510
+ * Cleanup all HTTP connections and resources
511
+ * Call this when the service is no longer needed
512
+ */
513
+ async destroy() {
514
+ await this.api.destroy();
515
+ // Note: MMTokenManager doesn't currently need explicit cleanup
516
+ // but if it ever acquires resources that need cleanup, add it here
517
+ }
518
+ }
519
+ //# sourceMappingURL=mm-api-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mm-api-service.js","sourceRoot":"","sources":["../../../src/services/mm-api-service/mm-api-service.ts"],"names":[],"mappings":"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"}