@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"labor-ticket-erp-synchronizer.js","sourceRoot":"","sources":["../../../src/utils/standard-process-drivers/labor-ticket-erp-synchronizer.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,19 @@
1
- import { ERPObjType } from "../../types/erp-types";
2
- import { BatchCacheManager } from "../../services/caching-service/batch-cache-manager";
3
- import { IToRESTApiObject } from "../../services/mm-api-service";
4
- import { WriteEntitiesToMMResult } from "./standard-process-drivers";
1
+ import { ERPObjType } from "../../types/erp-types.js";
2
+ import { BatchCacheManager } from "../../services/caching-service/batch-cache-manager.js";
3
+ import { IToRESTApiObject } from "../../services/mm-api-service/index.js";
4
+ import { WriteEntitiesToMMResult } from "./standard-process-drivers.js";
5
5
  /**
6
6
  * Handles processing of entities to the MachineMetrics API
7
7
  */
8
8
  export declare class MMEntityProcessor {
9
9
  /**
10
- * Writes entities to MM API with deduplication and caching
10
+ * Writes entities to MM API with deduplication and caching.
11
+ *
12
+ * IMPORTANT: All datetime fields on `mmRecords` MUST already be expressed as
13
+ * ISO-8601 UTC strings (either trailing `Z` or an explicit offset). The SDK
14
+ * does not apply timezone conversion on this path. It forwards values directly
15
+ * to MachineMetrics and only reserializes them for validation. Connector code
16
+ * is responsible for converting local ERP times to UTC before invoking this API.
11
17
  */
12
18
  static writeEntities(entityType: ERPObjType, mmRecords: IToRESTApiObject[], batchCacheManager: BatchCacheManager | null): Promise<WriteEntitiesToMMResult>;
13
19
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"mm-entity-processor.d.ts","sourceRoot":"","sources":["../../../src/utils/standard-process-drivers/mm-entity-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oDAAoD,CAAC;AACvF,OAAO,EACL,gBAAgB,EAcjB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EACL,uBAAuB,EAExB,MAAM,4BAA4B,CAAC;AAGpC;;GAEG;AACH,qBAAa,iBAAiB;IAC5B;;OAEG;WACU,aAAa,CACxB,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,gBAAgB,EAAE,EAC7B,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,GAC1C,OAAO,CAAC,uBAAuB,CAAC;IAiCnC;;;;;OAKG;mBACkB,iBAAiB;IA+BtC;;OAEG;mBACkB,UAAU;IAsC/B;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAgC/B;;;;;;;OAOG;mBACkB,eAAe;CAuErC"}
1
+ {"version":3,"file":"mm-entity-processor.d.ts","sourceRoot":"","sources":["../../../src/utils/standard-process-drivers/mm-entity-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uDAAuD,CAAC;AAC1F,OAAO,EACL,gBAAgB,EAcjB,MAAM,wCAAwC,CAAC;AAGhD,OAAO,EACL,uBAAuB,EAExB,MAAM,+BAA+B,CAAC;AAGvC;;GAEG;AACH,qBAAa,iBAAiB;IAC5B;;;;;;;;OAQG;WACU,aAAa,CACxB,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,gBAAgB,EAAE,EAC7B,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,GAC1C,OAAO,CAAC,uBAAuB,CAAC;IAiCnC;;;;;OAKG;mBACkB,iBAAiB;IA+BtC;;OAEG;mBACkB,UAAU;IAsC/B;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAgC/B;;;;;;;OAOG;mBACkB,eAAe;CAuErC"}
@@ -0,0 +1,174 @@
1
+ import { ERPObjType } from "../../types/erp-types.js";
2
+ import { MMApiClient } from "../../services/mm-api-service/mm-api-service.js";
3
+ import { MMBatchValidationError, } from "./standard-process-drivers.js";
4
+ import { ErrorProcessor } from "./error-processor.js";
5
+ /**
6
+ * Handles processing of entities to the MachineMetrics API
7
+ */
8
+ export class MMEntityProcessor {
9
+ /**
10
+ * Writes entities to MM API with deduplication and caching.
11
+ *
12
+ * IMPORTANT: All datetime fields on `mmRecords` MUST already be expressed as
13
+ * ISO-8601 UTC strings (either trailing `Z` or an explicit offset). The SDK
14
+ * does not apply timezone conversion on this path. It forwards values directly
15
+ * to MachineMetrics and only reserializes them for validation. Connector code
16
+ * is responsible for converting local ERP times to UTC before invoking this API.
17
+ */
18
+ static async writeEntities(entityType, mmRecords, batchCacheManager) {
19
+ const { toProcess, result } = await this._prepareAndDedupe(entityType, mmRecords, batchCacheManager);
20
+ if (toProcess.length === 0) {
21
+ result.message =
22
+ "All records were deduplicated locally - no records sent to MM API";
23
+ return result;
24
+ }
25
+ let mmApiResponse;
26
+ try {
27
+ mmApiResponse = await this._sendToAPI(entityType, toProcess);
28
+ }
29
+ catch (exception) {
30
+ this._handleException(exception, entityType, result);
31
+ }
32
+ return await this._handleResponse(mmApiResponse, entityType, toProcess, result, batchCacheManager);
33
+ }
34
+ // ============================================================================
35
+ // PRIVATE HELPER METHODS
36
+ // ============================================================================
37
+ /**
38
+ * Deduplicates records against cache
39
+ * Returns the records to process and the result object
40
+ * If the batchCacheManager is provided, the records are deduplicated against the cache
41
+ * If the batchCacheManager is not provided, the records are not deduplicated
42
+ */
43
+ static async _prepareAndDedupe(entityType, mmRecords, batchCacheManager) {
44
+ let toProcess = [];
45
+ const result = {
46
+ message: "",
47
+ upsertedEntities: 0,
48
+ localDedupeCount: 0,
49
+ apiDedupeCount: 0,
50
+ };
51
+ if (batchCacheManager) {
52
+ const { nonDuplicates, duplicates } = (await batchCacheManager.dedupeBatch(entityType, mmRecords));
53
+ toProcess = nonDuplicates;
54
+ result.localDedupeCount = duplicates.length;
55
+ }
56
+ else {
57
+ toProcess = mmRecords;
58
+ }
59
+ return { toProcess, result };
60
+ }
61
+ /**
62
+ * Sends records to MM API
63
+ */
64
+ static async _sendToAPI(entityType, toProcess) {
65
+ const mmApiClient = new MMApiClient();
66
+ switch (entityType) {
67
+ case ERPObjType.PERSONS:
68
+ return await mmApiClient.sendPersonsToMM(toProcess);
69
+ case ERPObjType.RESOURCES:
70
+ return await mmApiClient.sendResourcesToMM(toProcess);
71
+ case ERPObjType.PARTS:
72
+ return await mmApiClient.sendPartsToMM(toProcess);
73
+ case ERPObjType.PART_OPERATION:
74
+ return await mmApiClient.sendPartOperationsToMM(toProcess);
75
+ case ERPObjType.WORK_ORDERS:
76
+ return await mmApiClient.sendWorkOrdersToMM(toProcess);
77
+ case ERPObjType.WORK_ORDER_OPERATIONS:
78
+ return await mmApiClient.sendWorkOrderOperationsToMM(toProcess);
79
+ case ERPObjType.LABOR_TICKETS:
80
+ return await mmApiClient.sendLaborTicketsToMM(toProcess);
81
+ case ERPObjType.REASONS:
82
+ return await mmApiClient.sendReasonsToMM(toProcess);
83
+ default:
84
+ throw new Error(`Unknown entity type: ${entityType}`);
85
+ }
86
+ }
87
+ /**
88
+ * Handles exceptions from API calls, converting structured 500 errors to MMBatchValidationError
89
+ * @throws MMBatchValidationError for structured 500 errors
90
+ * @throws The original exception for all other errors
91
+ */
92
+ static _handleException(exception, entityType, result) {
93
+ // Handle structured 500 errors that may be appropriate for partial failure
94
+ const structuredCompleteErrorSet = ErrorProcessor.extractErrorDetailsFrom500Exception(exception, entityType);
95
+ if (structuredCompleteErrorSet) {
96
+ const ex = exception;
97
+ const data = ex?.data;
98
+ const errorMessage = typeof data?.error === "string"
99
+ ? data.error
100
+ : "All entities failed to import";
101
+ throw new MMBatchValidationError({
102
+ message: errorMessage,
103
+ upsertedEntities: 0,
104
+ localDedupeCount: result.localDedupeCount,
105
+ apiDedupeCount: 0,
106
+ errorCount: structuredCompleteErrorSet.errorCount,
107
+ httpStatus: exception.status,
108
+ batchErrors: structuredCompleteErrorSet.batchErrors,
109
+ });
110
+ }
111
+ // For all other exceptions, re-throw as-is
112
+ throw exception;
113
+ }
114
+ /**
115
+ * Handles the MM API response based on HTTP status code, caching successful records
116
+ * and throwing exceptions for partial failures
117
+ *
118
+ * @returns The final result for success cases
119
+ * @throws MMBatchValidationError for partial success cases
120
+ * @throws Error for unknown status codes
121
+ */
122
+ static async _handleResponse(mmApiResponse, entityType, toProcess, result, batchCacheManager) {
123
+ if (mmApiResponse.httpStatus === 200) {
124
+ // Complete success - cache all records
125
+ if (batchCacheManager) {
126
+ await batchCacheManager.storeBatch(entityType, toProcess);
127
+ }
128
+ if (entityType === ERPObjType.LABOR_TICKETS) {
129
+ const success = mmApiResponse;
130
+ result.message = success.message || "Entities processed successfully";
131
+ result.upsertedEntities =
132
+ (success.updated || 0) + (success.inserted || 0);
133
+ }
134
+ else {
135
+ const success = mmApiResponse;
136
+ result.message = success.message || "Entities processed successfully";
137
+ result.upsertedEntities = success.affectedRows || 0;
138
+ }
139
+ result.apiDedupeCount = toProcess.length - result.upsertedEntities;
140
+ return result;
141
+ }
142
+ else if (mmApiResponse.httpStatus === 207) {
143
+ // Partial success - cache only successful records before throwing exception
144
+ const partialResponse = mmApiResponse;
145
+ const { errorCount, batchErrors } = ErrorProcessor.extractErrorDetails(partialResponse, entityType);
146
+ if (batchCacheManager) {
147
+ await ErrorProcessor.cacheSuccessfulRecordsOnPartialFailure(entityType, toProcess, batchErrors, batchCacheManager);
148
+ }
149
+ let upsertedEntities = 0;
150
+ if (entityType === ERPObjType.LABOR_TICKETS) {
151
+ const partial = partialResponse;
152
+ upsertedEntities =
153
+ (partial.data.updated || 0) + (partial.data.inserted || 0);
154
+ }
155
+ else {
156
+ const partial = partialResponse;
157
+ upsertedEntities = partial.data.affectedRows || 0;
158
+ }
159
+ throw new MMBatchValidationError({
160
+ message: partialResponse.message || "Entities processed with partial failures",
161
+ upsertedEntities: upsertedEntities,
162
+ localDedupeCount: result.localDedupeCount,
163
+ apiDedupeCount: toProcess.length - upsertedEntities - errorCount,
164
+ errorCount: errorCount,
165
+ httpStatus: mmApiResponse.httpStatus,
166
+ batchErrors: batchErrors,
167
+ });
168
+ }
169
+ else {
170
+ throw new Error(`writeEntitiesToMM: Unknown HTTP status code: ${mmApiResponse.httpStatus}. An exception was expected.`);
171
+ }
172
+ }
173
+ }
174
+ //# sourceMappingURL=mm-entity-processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mm-entity-processor.js","sourceRoot":"","sources":["../../../src/utils/standard-process-drivers/mm-entity-processor.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
- import { ERPObjType } from "../../types/erp-types";
2
- import { IERPLaborTicketHandler } from "../../types/erp-connector";
3
- import { BatchCacheManager } from "../../services/caching-service/batch-cache-manager";
4
- import { IToRESTApiObject, MMSendWorkOrderBatch } from "../../services/mm-api-service";
1
+ import { ERPObjType } from "../../types/erp-types.js";
2
+ import { IERPLaborTicketHandler } from "../../types/erp-connector.js";
3
+ import type { FlattenedWorkOrderRow } from "../../types/flattened-work-order.js";
4
+ import { BatchCacheManager } from "../../services/caching-service/batch-cache-manager.js";
5
+ import { IToRESTApiObject, MMSendWorkOrderBatch } from "../../services/mm-api-service/index.js";
5
6
  /**
6
7
  * The result of writing entities to the MachineMetrics API on complete success.
7
8
  */
@@ -162,14 +163,19 @@ export declare class StandardProcessDrivers {
162
163
  * parts, part operations, work orders, and work order operations, then process them in the correct order
163
164
  * to maintain referential integrity.
164
165
  *
165
- * @param flattenedData Array of flattened rows containing both work order and operation data (camelCase fields)
166
+ * Timezone expectation: all datetime fields provided in `flattenedData` MUST already be expressed
167
+ * as ISO-8601 UTC strings (trailing `Z` or explicit offset). The SDK does not attempt to infer or
168
+ * convert local ERP timestamps on this path; it simply validates and forwards the values to MM.
169
+ * Connector implementations should convert ERP-local times to UTC before invoking this method.
170
+ *
171
+ * @param flattenedData Array of flattened rows containing both work order and operation data (see `FlattenedWorkOrderRow`)
166
172
  * @param batchCacheManager The batch cache manager instance; pass in null if caching is not desired
167
173
  *
168
174
  * @returns Combined results from all entity processing with detailed logging information
169
175
  * @throws MMBatchValidationError on partial success or complete failure with structured error details
170
176
  * @throws Error on other underlying issues (network, authentication, etc.)
171
177
  */
172
- static syncWorkOrderBatchFromFlattened(flattenedData: any[], batchCacheManager: BatchCacheManager | null): Promise<{
178
+ static syncWorkOrderBatchFromFlattened(flattenedData: ReadonlyArray<FlattenedWorkOrderRow>, batchCacheManager: BatchCacheManager | null): Promise<{
173
179
  parts: WriteEntitiesToMMResult;
174
180
  partOperations: WriteEntitiesToMMResult;
175
181
  workOrders: WriteEntitiesToMMResult;
@@ -1 +1 @@
1
- {"version":3,"file":"standard-process-drivers.d.ts","sourceRoot":"","sources":["../../../src/utils/standard-process-drivers/standard-process-drivers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oDAAoD,CAAC;AACvF,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EAKrB,MAAM,+BAA+B,CAAC;AAIvC;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,SAAgB,gBAAgB,EAAE,MAAM,CAAC;IACzC,SAAgB,gBAAgB,EAAE,MAAM,CAAC;IACzC,SAAgB,cAAc,EAAE,MAAM,CAAC;IACvC,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,WAAW,EAAE,KAAK,CAAC;QACjC,OAAO,EAAE,MAAM,CAAC;QAChB,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;KACtC,CAAC,CAAC;gBAES,OAAO,EAAE;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,gBAAgB,EAAE,MAAM,CAAC;QACzB,gBAAgB,EAAE,MAAM,CAAC;QACzB,cAAc,EAAE,MAAM,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,KAAK,CAAC;YACjB,OAAO,EAAE,MAAM,CAAC;YAChB,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;SACtC,CAAC,CAAC;KACJ;CAUF;AAED;;;;GAIG;AACH,qBAAa,sBAAsB;IACjC;;;;;;;;OAQG;WACU,qBAAqB,CAChC,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,sBAAsB,GAChC,OAAO,CAAC,IAAI,CAAC;IAIhB;;;;;;OAMG;WACU,uBAAuB,CAClC,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,sBAAsB,GAChC,OAAO,CAAC,IAAI,CAAC;IAIhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwEG;WACU,iBAAiB,CAC5B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,gBAAgB,EAAE,EAC7B,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,GAC1C,OAAO,CAAC,uBAAuB,CAAC;IAQnC;;;;;;;;;;;;;;;OAeG;WACU,uBAAuB,CAClC,cAAc,EAAE,oBAAoB,EACpC,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,GAC1C,OAAO,CAAC;QACT,KAAK,EAAE,uBAAuB,CAAC;QAC/B,cAAc,EAAE,uBAAuB,CAAC;QACxC,UAAU,EAAE,uBAAuB,CAAC;QACpC,mBAAmB,EAAE,uBAAuB,CAAC;KAC9C,CAAC;IAuCF;;;;;;;;;;;;;;OAcG;WACU,+BAA+B,CAC1C,aAAa,EAAE,GAAG,EAAE,EACpB,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,GAC1C,OAAO,CAAC;QACT,KAAK,EAAE,uBAAuB,CAAC;QAC/B,cAAc,EAAE,uBAAuB,CAAC;QACxC,UAAU,EAAE,uBAAuB,CAAC;QACpC,mBAAmB,EAAE,uBAAuB,CAAC;KAC9C,CAAC;CAkMH"}
1
+ {"version":3,"file":"standard-process-drivers.d.ts","sourceRoot":"","sources":["../../../src/utils/standard-process-drivers/standard-process-drivers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,uDAAuD,CAAC;AAC1F,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EAKrB,MAAM,wCAAwC,CAAC;AAIhD;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,SAAgB,gBAAgB,EAAE,MAAM,CAAC;IACzC,SAAgB,gBAAgB,EAAE,MAAM,CAAC;IACzC,SAAgB,cAAc,EAAE,MAAM,CAAC;IACvC,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,WAAW,EAAE,KAAK,CAAC;QACjC,OAAO,EAAE,MAAM,CAAC;QAChB,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;KACtC,CAAC,CAAC;gBAES,OAAO,EAAE;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,gBAAgB,EAAE,MAAM,CAAC;QACzB,gBAAgB,EAAE,MAAM,CAAC;QACzB,cAAc,EAAE,MAAM,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,KAAK,CAAC;YACjB,OAAO,EAAE,MAAM,CAAC;YAChB,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;SACtC,CAAC,CAAC;KACJ;CAUF;AAED;;;;GAIG;AACH,qBAAa,sBAAsB;IACjC;;;;;;;;OAQG;WACU,qBAAqB,CAChC,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,sBAAsB,GAChC,OAAO,CAAC,IAAI,CAAC;IAIhB;;;;;;OAMG;WACU,uBAAuB,CAClC,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,sBAAsB,GAChC,OAAO,CAAC,IAAI,CAAC;IAIhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwEG;WACU,iBAAiB,CAC5B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,gBAAgB,EAAE,EAC7B,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,GAC1C,OAAO,CAAC,uBAAuB,CAAC;IAQnC;;;;;;;;;;;;;;;OAeG;WACU,uBAAuB,CAClC,cAAc,EAAE,oBAAoB,EACpC,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,GAC1C,OAAO,CAAC;QACT,KAAK,EAAE,uBAAuB,CAAC;QAC/B,cAAc,EAAE,uBAAuB,CAAC;QACxC,UAAU,EAAE,uBAAuB,CAAC;QACpC,mBAAmB,EAAE,uBAAuB,CAAC;KAC9C,CAAC;IAuCF;;;;;;;;;;;;;;;;;;;OAmBG;WACU,+BAA+B,CAC1C,aAAa,EAAE,aAAa,CAAC,qBAAqB,CAAC,EACnD,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,GAC1C,OAAO,CAAC;QACT,KAAK,EAAE,uBAAuB,CAAC;QAC/B,cAAc,EAAE,uBAAuB,CAAC;QACxC,UAAU,EAAE,uBAAuB,CAAC;QACpC,mBAAmB,EAAE,uBAAuB,CAAC;KAC9C,CAAC;CA0MH"}
@@ -0,0 +1,333 @@
1
+ import { ERPObjType } from "../../types/erp-types.js";
2
+ import { MMSendPart, MMSendPartOperation, MMSendWorkOrder, MMSendWorkOrderOperation, } from "../../services/mm-api-service/index.js";
3
+ import { LaborTicketERPSynchronizer } from "./labor-ticket-erp-synchronizer.js";
4
+ import { MMEntityProcessor } from "./mm-entity-processor.js";
5
+ export class MMBatchValidationError extends Error {
6
+ upsertedEntities;
7
+ localDedupeCount;
8
+ apiDedupeCount;
9
+ errorCount;
10
+ httpStatus;
11
+ batchErrors;
12
+ constructor(options) {
13
+ super(options.message);
14
+ this.name = "MMBatchValidationError";
15
+ this.upsertedEntities = options.upsertedEntities;
16
+ this.localDedupeCount = options.localDedupeCount;
17
+ this.apiDedupeCount = options.apiDedupeCount;
18
+ this.errorCount = options.errorCount;
19
+ this.httpStatus = options.httpStatus;
20
+ this.batchErrors = options.batchErrors;
21
+ }
22
+ }
23
+ /**
24
+ * A collection of standardized process drivers that orchestrate various synchronization
25
+ * and integration processes between systems. Use of these drivers is optional,
26
+ * and useful as a reference implementation for how to implement the various processes.
27
+ */
28
+ export class StandardProcessDrivers {
29
+ /**
30
+ * Synchronizes updated labor tickets from MachineMetrics to an ERP system:
31
+ *
32
+ * Initializes a checkpoint that tracks the last time labor tickets were synced,
33
+ * fetches labor tickets from MM and converts them to the company timezone,
34
+ * creates or updates the labor ticket in the ERP via connector-specific implementations,
35
+ * updates the labor ticket id in MM on newly created labor tickets,
36
+ * and saves the checkpoint
37
+ */
38
+ static async syncLaborTicketsToERP(connectorType, connector) {
39
+ return LaborTicketERPSynchronizer.syncToERP(connectorType, connector);
40
+ }
41
+ /**
42
+ * Retries labor tickets that have failed to be created or updated in the ERP during the sync:
43
+ *
44
+ * Fetches failed labor tickets from MM, processes them, and updates the labor ticket id in MM.
45
+ * If the labor ticket is successfully created or updated, it is added to the list of successful labor ticket ids,
46
+ * which are then deleted from the list of failed labor ticket ids.
47
+ */
48
+ static async retryFailedLaborTickets(connectorType, connector) {
49
+ return LaborTicketERPSynchronizer.retryFailed(connectorType, connector);
50
+ }
51
+ /**
52
+ * Writes a batch of records to MM for a specific entity type by:
53
+ * 1. Deduplicating against cached records (localDedupeCount)
54
+ * 2. Sending non-duplicate records to the MM API (apiDedupeCount)
55
+ * 3. Storing successful records in cache
56
+ *
57
+ * An example usage pattern including comprehensive error handling:
58
+ * ```
59
+ * try {
60
+ * const result = await StandardProcessDrivers.writeEntitiesToMM(
61
+ * 'WorkOrders',
62
+ * workOrderRecords,
63
+ * batchCacheManager
64
+ * );
65
+ *
66
+ * // HTTP 200 - Complete success
67
+ * console.log(`✅ Success: ${result.message}`);
68
+ * console.log(`📊 Metrics: ${result.upsertedEntities} upserted, ${result.localDedupeCount} locally deduplicated, ${result.apiDedupeCount} API deduplicated`);
69
+ *
70
+ * } catch (error) {
71
+ * if (error instanceof MMBatchValidationError) {
72
+ * // HTTP 207 - Partial success with some batches failing due to validation errors
73
+ * // HTTP 500 - A specific type representing complete failure due to validation issues;
74
+ * // other 500 types represent failure due to other issues and are not converted to MMBatchValidationError
75
+ * // Note: Each batch error contains ALL entities from the failing batch, not necessarily just the failed ones
76
+ *
77
+ * console.log(`⚠️ Batch processing completed with errors (HTTP ${error.httpStatus})`);
78
+ * console.log(`📊 Metrics: ${error.upsertedEntities} upserted, ${error.localDedupeCount} locally deduplicated, ${error.apiDedupeCount} API deduplicated`);
79
+ * console.log(`❌ Error count: ${error.errorCount}`);
80
+ *
81
+ * // Process specific batch errors for retry or logging
82
+ * error.batchErrors.forEach((batchError, index) => {
83
+ * console.log(`Batch ${index + 1} error: ${batchError.message}`);
84
+ * console.log(`All entities in failing batch:`, batchError.affectedEntities);
85
+ *
86
+ * // Example: Queue entire failing batch for retry (contains both successful and failed entities)
87
+ * await queueForRetry(batchError.affectedEntities);
88
+ * });
89
+ *
90
+ * // Decide whether to continue or halt based on httpStatus
91
+ * if (error.httpStatus === 207) {
92
+ * // Partial success - some batches processed successfully, others failed
93
+ * console.log('⚠️ Continuing with partial success');
94
+ * } else if (error.httpStatus === 500) {
95
+ * // Complete failure - all batches failed due to validation issues
96
+ * console.log('🛑 Complete failure - no records processed');
97
+ * throw error; // Re-throw if complete failure should halt the process
98
+ * }
99
+ *
100
+ * } else {
101
+ * // Other underlying errors (network issues, authentication, etc.)
102
+ * console.error('🚨 Unexpected error during MM API call:', error);
103
+ *
104
+ * // Example: Check for specific error types
105
+ * if (error.message?.includes('authentication')) {
106
+ * console.error('🔐 Authentication issue - check MM API credentials');
107
+ * } else if (error.message?.includes('network') || error.code === 'ECONNREFUSED') {
108
+ * console.error('🌐 Network connectivity issue - check MM API endpoint');
109
+ * }
110
+ *
111
+ * throw error; // Re-throw for upstream handling
112
+ * }
113
+ * }
114
+ * ```
115
+ *
116
+ * @param entityType The type of entity being processed
117
+ * @param mmRecords The records to process
118
+ * @param batchCacheManager The batch cache manager instance; pass in null if caching is not desired
119
+ *
120
+ * @returns WriteEntitiesToMMResult on complete success (HTTP 200)
121
+ * @throws MMBatchValidationError on partial success (HTTP 207) or complete failure (HTTP 500) with structured error details
122
+ * @throws Error on other underlying issues (network, authentication, etc.)
123
+ */
124
+ static async writeEntitiesToMM(entityType, mmRecords, batchCacheManager) {
125
+ return MMEntityProcessor.writeEntities(entityType, mmRecords, batchCacheManager);
126
+ }
127
+ /**
128
+ * Writes a batch of Work Order related entities to MM maintaining referential integrity by:
129
+ * 1. Processing parts first (base entities)
130
+ * 2. Processing part operations (depends on parts)
131
+ * 3. Processing work orders (depends on parts)
132
+ * 4. Processing work order operations (depends on work orders and part operations)
133
+ *
134
+ * This ensures all foreign key constraints are satisfied and prevents referential integrity errors.
135
+ *
136
+ * @param workOrderBatch The batch containing all related entities
137
+ * @param batchCacheManager The batch cache manager instance; pass in null if caching is not desired
138
+ *
139
+ * @returns Combined results from all entity processing
140
+ * @throws MMBatchValidationError on partial success or complete failure with structured error details
141
+ * @throws Error on other underlying issues (network, authentication, etc.)
142
+ */
143
+ static async writeWorkOrderBatchToMM(workOrderBatch, batchCacheManager) {
144
+ // Process entities in order to maintain referential integrity
145
+ // 1. Parts first (no dependencies)
146
+ const partsResult = await MMEntityProcessor.writeEntities(ERPObjType.PARTS, workOrderBatch.parts, batchCacheManager);
147
+ // 2. Part Operations (depends on parts)
148
+ const partOperationsResult = await MMEntityProcessor.writeEntities(ERPObjType.PART_OPERATION, workOrderBatch.partOperations, batchCacheManager);
149
+ // 3. Work Orders (depends on parts)
150
+ const workOrdersResult = await MMEntityProcessor.writeEntities(ERPObjType.WORK_ORDERS, workOrderBatch.workOrders, batchCacheManager);
151
+ // 4. Work Order Operations (depends on work orders and part operations)
152
+ const workOrderOperationsResult = await MMEntityProcessor.writeEntities(ERPObjType.WORK_ORDER_OPERATIONS, workOrderBatch.workOrderOperations, batchCacheManager);
153
+ return {
154
+ parts: partsResult,
155
+ partOperations: partOperationsResult,
156
+ workOrders: workOrdersResult,
157
+ workOrderOperations: workOrderOperationsResult,
158
+ };
159
+ }
160
+ /**
161
+ * Processes flattened work order data and syncs it to MM maintaining referential integrity.
162
+ *
163
+ * This method expects flattened data where each row contains both work order and operation information
164
+ * with camelCase field names matching the GraphQL schema. It will automatically extract and deduplicate
165
+ * parts, part operations, work orders, and work order operations, then process them in the correct order
166
+ * to maintain referential integrity.
167
+ *
168
+ * Timezone expectation: all datetime fields provided in `flattenedData` MUST already be expressed
169
+ * as ISO-8601 UTC strings (trailing `Z` or explicit offset). The SDK does not attempt to infer or
170
+ * convert local ERP timestamps on this path; it simply validates and forwards the values to MM.
171
+ * Connector implementations should convert ERP-local times to UTC before invoking this method.
172
+ *
173
+ * @param flattenedData Array of flattened rows containing both work order and operation data (see `FlattenedWorkOrderRow`)
174
+ * @param batchCacheManager The batch cache manager instance; pass in null if caching is not desired
175
+ *
176
+ * @returns Combined results from all entity processing with detailed logging information
177
+ * @throws MMBatchValidationError on partial success or complete failure with structured error details
178
+ * @throws Error on other underlying issues (network, authentication, etc.)
179
+ */
180
+ static async syncWorkOrderBatchFromFlattened(flattenedData, batchCacheManager) {
181
+ if (!flattenedData || flattenedData.length === 0) {
182
+ throw new Error("No flattened work order data provided");
183
+ }
184
+ const toStringOrFallback = (value, fallback = "") => (value === undefined || value === null ? fallback : String(value));
185
+ // Process the flattened data - each row contains both work order and operation info
186
+ const uniqueParts = new Map();
187
+ const uniquePartOperations = new Map();
188
+ const uniqueWorkOrders = new Map();
189
+ const workOrderOperations = [];
190
+ // Process each flattened row to extract entities
191
+ for (const row of flattenedData) {
192
+ // Extract unique parts
193
+ const partKey = `${row.partNumber}|${row.partRevision}|${row.method}`;
194
+ if (!uniqueParts.has(partKey)) {
195
+ uniqueParts.set(partKey, {
196
+ partNumber: row.partNumber, // → partNumber
197
+ partRevision: row.partRevision, // → partRevision
198
+ method: row.method, // → method
199
+ });
200
+ }
201
+ // Extract unique part operations
202
+ const partOpKey = `${row.partNumber}|${row.partRevision}|${row.method}|${row.sequenceNumber}`;
203
+ if (!uniquePartOperations.has(partOpKey)) {
204
+ uniquePartOperations.set(partOpKey, {
205
+ partNumber: row.partNumber, // → partNumber
206
+ partRevision: row.partRevision, // → partRevision
207
+ method: row.method, // → method
208
+ sequenceNumber: row.sequenceNumber, // → sequenceNumber
209
+ resourceId: row.resourceId, // → resourceId
210
+ cycleTimeMs: row.cycleTimeMs, // → cycleTimeMs
211
+ setupTimeMs: row.setupTimeMs, // → setupTimeMs
212
+ operationDescription: row.operationDescription, // → description
213
+ quantityPerPart: row.quantityPerPart ?? 1, // → quantityPerPart
214
+ });
215
+ }
216
+ // Extract unique work orders
217
+ const workOrderKey = row.workOrderId;
218
+ if (!uniqueWorkOrders.has(workOrderKey)) {
219
+ uniqueWorkOrders.set(workOrderKey, {
220
+ workOrderId: row.workOrderId, // → workOrderId
221
+ lot: row.lot, // → lot
222
+ split: row.split, // → split
223
+ sub: row.sub, // → sub
224
+ status: row.status, // → status
225
+ dueDate: row.dueDate, // → dueDate
226
+ description: row.description, // → description
227
+ scheduledStartDate: row.scheduledStartDate, // → scheduledStartDate
228
+ scheduledEndDate: row.scheduledEndDate, // → scheduledEndDate
229
+ closedDate: row.closedDate, // → closedDate
230
+ quantityRequired: row.quantityRequired, // → quantityRequired
231
+ partNumber: row.partNumber, // → partNumber
232
+ partRevision: row.partRevision, // → partRevision
233
+ method: row.method, // → method
234
+ });
235
+ }
236
+ // Add each work order operation (these are not deduplicated since each operation is unique)
237
+ workOrderOperations.push({
238
+ workOrderId: row.workOrderId, // → workOrderId
239
+ lot: row.lot, // → lot
240
+ split: row.split, // → split
241
+ sub: row.sub, // → sub
242
+ sequenceNumber: row.sequenceNumber, // → sequenceNumber
243
+ resourceId: row.resourceId, // → resourceId
244
+ startQuantity: row.startQuantity, // → startQuantity
245
+ finishQuantity: row.finishQuantity, // → finishQuantity
246
+ expectedRejectRate: row.expectedRejectRate, // → expectedRejectRate
247
+ scheduledStartDate: row.opScheduledStartDate, // → scheduledStartDate
248
+ scheduledFinishDate: row.opScheduledFinishDate, // → scheduledFinishDate
249
+ closedDate: row.opClosedDate, // → closedDate
250
+ cycleTimeMs: row.cycleTimeMs, // → cycleTimeMs
251
+ setupTimeMs: row.setupTimeMs, // → setupTimeMs
252
+ productionburdenRateHourly: row.productionburdenRateHourly, // → productionburdenRateHourly
253
+ setupburdenRatehourly: row.setupburdenRatehourly, // → setupburdenRatehourly
254
+ operationType: row.operationType, // → operationType
255
+ quantityPerPart: row.quantityPerPart, // → quantityPerPart
256
+ status: row.opStatus || row.status, // → status
257
+ });
258
+ }
259
+ // Transform all the data directly to MM entities
260
+ const parts = Array.from(uniqueParts.values()).map((item) => new MMSendPart(toStringOrFallback(item.partNumber), // partNumber
261
+ toStringOrFallback(item.partRevision), // partRevision
262
+ item.method || "Standard" // method
263
+ ));
264
+ const partOperations = Array.from(uniquePartOperations.values()).map((item) => new MMSendPartOperation(toStringOrFallback(item.partNumber), // partNumber
265
+ toStringOrFallback(item.partRevision), // partRevision
266
+ item.method || "Standard", // method
267
+ item.sequenceNumber?.toString() || "", // sequenceNumber
268
+ item.resourceId?.toString() || "", // resourceId
269
+ item.cycleTimeMs || 0, // cycleTimeMs
270
+ item.setupTimeMs || 0, // setupTimeMs
271
+ item.operationDescription || "", // description
272
+ item.quantityPerPart || 1 // quantityPerPart
273
+ ));
274
+ const transformedWorkOrders = Array.from(uniqueWorkOrders.values()).map((item) => new MMSendWorkOrder(item.workOrderId?.toString() || "", // workOrderId
275
+ toStringOrFallback(item.lot), // lot
276
+ toStringOrFallback(item.split), // split
277
+ toStringOrFallback(item.sub), // sub
278
+ item.status || "Open", // status
279
+ // Datetimes are assumed to already be UTC (or include an explicit offset).
280
+ // We reserialize via Date solely to validate the ISO format before sending to MM.
281
+ item.dueDate ? new Date(item.dueDate).toISOString() : null, // dueDate
282
+ item.description || "", // description
283
+ item.scheduledStartDate
284
+ ? new Date(item.scheduledStartDate).toISOString()
285
+ : null, // scheduledStartDate
286
+ item.scheduledEndDate
287
+ ? new Date(item.scheduledEndDate).toISOString()
288
+ : null, // scheduledEndDate
289
+ item.closedDate ? new Date(item.closedDate).toISOString() : null, // closedDate
290
+ item.quantityRequired || 0, // quantityRequired
291
+ toStringOrFallback(item.partNumber), // partNumber
292
+ toStringOrFallback(item.partRevision), // partRevision
293
+ item.method || "Standard" // method
294
+ ));
295
+ const transformedWorkOrderOperations = workOrderOperations.map((item) => new MMSendWorkOrderOperation(item.workOrderId?.toString() || "", // workOrderId
296
+ toStringOrFallback(item.lot), // lot
297
+ toStringOrFallback(item.split), // split
298
+ toStringOrFallback(item.sub), // sub
299
+ item.sequenceNumber?.toString() || "", // sequenceNumber
300
+ item.resourceId?.toString() || "", // resourceId
301
+ item.startQuantity || 0, // startQuantity
302
+ item.finishQuantity || 0, // finishQuantity
303
+ item.expectedRejectRate || 0, // expectedRejectRate
304
+ // Same UTC expectation as above; reserialize to ensure valid ISO.
305
+ item.scheduledStartDate
306
+ ? new Date(item.scheduledStartDate).toISOString()
307
+ : null, // scheduledStartDate
308
+ item.scheduledFinishDate
309
+ ? new Date(item.scheduledFinishDate).toISOString()
310
+ : null, // scheduledFinishDate
311
+ item.closedDate ? new Date(item.closedDate).toISOString() : null, // closedDate
312
+ item.cycleTimeMs || 0, // cycleTimeMs
313
+ item.setupTimeMs || 0, // setupTimeMs
314
+ parseFloat(toStringOrFallback(item.productionburdenRateHourly, "0")), // productionburdenRateHourly
315
+ parseFloat(toStringOrFallback(item.setupburdenRatehourly, "0")), // setupburdenRatehourly
316
+ item.operationType || "Production", // operationType
317
+ item.quantityPerPart || 1, // quantityPerPart
318
+ item.status || "Open" // status
319
+ ));
320
+ // Send each entity type individually in the correct order for referential integrity
321
+ const partsResult = await MMEntityProcessor.writeEntities(ERPObjType.PARTS, parts, batchCacheManager);
322
+ const partOperationsResult = await MMEntityProcessor.writeEntities(ERPObjType.PART_OPERATION, partOperations, batchCacheManager);
323
+ const workOrdersResult = await MMEntityProcessor.writeEntities(ERPObjType.WORK_ORDERS, transformedWorkOrders, batchCacheManager);
324
+ const workOrderOperationsResult = await MMEntityProcessor.writeEntities(ERPObjType.WORK_ORDER_OPERATIONS, transformedWorkOrderOperations, batchCacheManager);
325
+ return {
326
+ parts: partsResult,
327
+ partOperations: partOperationsResult,
328
+ workOrders: workOrdersResult,
329
+ workOrderOperations: workOrderOperationsResult,
330
+ };
331
+ }
332
+ }
333
+ //# sourceMappingURL=standard-process-drivers.js.map