@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,351 +0,0 @@
1
- /**
2
- * NATS Service - Central connection and subscription management
3
- * Allows connectors to register handlers for different NATS subjects
4
- */
5
-
6
- import { connect, NatsConnection, StringCodec, Subscription } from "nats";
7
- import { logger } from "../reporting-service";
8
-
9
- const sc = StringCodec();
10
-
11
- export interface NatsMessageHandler {
12
- /**
13
- * Handler function for NATS messages
14
- * - Return a value to reply (if msg has reply subject)
15
- * - Return void/undefined for pub-sub (no reply)
16
- */
17
- handle: (data: any, subject: string) => Promise<any | void>;
18
- }
19
-
20
- export interface NatsHandlerRegistration {
21
- /**
22
- * Subject pattern to subscribe to (supports wildcards: *, >)
23
- * Examples:
24
- * - "mm.14.epic01.labor-ticket.*" (single level wildcard)
25
- * - "mm.14.epic01.erp.>" (multi-level wildcard)
26
- */
27
- subject: string;
28
-
29
- /**
30
- * Handler for this subject
31
- */
32
- handler: NatsMessageHandler;
33
-
34
- /**
35
- * Optional description for logging/debugging
36
- */
37
- description?: string;
38
- }
39
-
40
- export interface NatsServiceConfig {
41
- /**
42
- * NATS server URLs
43
- */
44
- servers: string | string[];
45
-
46
- /**
47
- * Connection name (for monitoring)
48
- */
49
- name: string;
50
-
51
- /**
52
- * Location reference (for subject namespacing)
53
- */
54
- locationRef: string;
55
-
56
- /**
57
- * ERP type (epicor, infor, etc.)
58
- */
59
- erpType: string;
60
-
61
- /**
62
- * Enable/disable NATS
63
- */
64
- enabled: boolean;
65
-
66
- /**
67
- * Auto-reconnect settings
68
- */
69
- reconnect?: boolean;
70
- maxReconnectAttempts?: number;
71
- reconnectTimeWait?: number;
72
- }
73
-
74
- export class NatsService {
75
- private connection: NatsConnection | null = null;
76
- private subscriptions: Map<string, Subscription> = new Map();
77
- private config: NatsServiceConfig;
78
- private handlers: NatsHandlerRegistration[] = [];
79
- private statusPublishTimer: NodeJS.Timeout | null = null;
80
-
81
- constructor(config: NatsServiceConfig) {
82
- this.config = config;
83
- }
84
-
85
- /**
86
- * Register a handler for a specific subject pattern
87
- */
88
- registerHandler(registration: NatsHandlerRegistration): void {
89
- logger.info("Registering NATS handler", {
90
- subject: registration.subject,
91
- description: registration.description,
92
- });
93
- this.handlers.push(registration);
94
- }
95
-
96
- /**
97
- * Connect to NATS and start all registered handlers
98
- */
99
- async connect(): Promise<void> {
100
- if (!this.config.enabled) {
101
- logger.info("NATS is disabled, skipping connection");
102
- return;
103
- }
104
-
105
- try {
106
- logger.info("Connecting to NATS...", {
107
- servers: this.config.servers,
108
- name: this.config.name,
109
- });
110
-
111
- this.connection = await connect({
112
- servers: this.config.servers,
113
- name: this.config.name,
114
- reconnect: this.config.reconnect ?? true,
115
- maxReconnectAttempts: this.config.maxReconnectAttempts ?? -1,
116
- reconnectTimeWait: this.config.reconnectTimeWait ?? 2000,
117
- });
118
-
119
- logger.info("Connected to NATS", {
120
- server: this.connection.getServer(),
121
- clientId: this.connection.info?.client_id,
122
- });
123
-
124
- // Start all registered handlers
125
- for (const registration of this.handlers) {
126
- await this.startHandler(registration);
127
- }
128
-
129
- // Start automatic status publishing
130
- this.startStatusPublishing();
131
-
132
- // Monitor connection status
133
- this.monitorConnection();
134
-
135
- // Graceful shutdown
136
- this.setupShutdown();
137
- } catch (error) {
138
- logger.error("Failed to connect to NATS", { error });
139
- throw error;
140
- }
141
- }
142
-
143
- /**
144
- * Start a single handler (subscribe to its subject)
145
- */
146
- private async startHandler(registration: NatsHandlerRegistration): Promise<void> {
147
- if (!this.connection) {
148
- throw new Error("NATS connection not established");
149
- }
150
-
151
- const sub = this.connection.subscribe(registration.subject);
152
- this.subscriptions.set(registration.subject, sub);
153
-
154
- logger.info("Started NATS handler", {
155
- subject: registration.subject,
156
- description: registration.description,
157
- });
158
-
159
- // Process messages
160
- (async () => {
161
- for await (const msg of sub) {
162
- try {
163
- const data = sc.decode(msg.data);
164
-
165
- logger.info("Received NATS message", {
166
- subject: msg.subject,
167
- hasReply: !!msg.reply,
168
- });
169
-
170
- // Parse JSON if possible
171
- let parsedData: any;
172
- try {
173
- parsedData = JSON.parse(data);
174
- } catch {
175
- parsedData = data;
176
- }
177
-
178
- // Call handler
179
- const response = await registration.handler.handle(parsedData, msg.subject);
180
-
181
- // If there's a reply subject and handler returned something, reply
182
- if (msg.reply && response !== undefined) {
183
- const responseStr = JSON.stringify(response);
184
- msg.respond(sc.encode(responseStr));
185
- logger.info("Sent reply", { replySubject: msg.reply });
186
- }
187
- } catch (error) {
188
- logger.error("Error handling NATS message", {
189
- subject: msg.subject,
190
- error,
191
- });
192
-
193
- // Send error response if reply expected
194
- if (msg.reply) {
195
- const errorResponse = {
196
- status: "error",
197
- error: {
198
- message: error instanceof Error ? error.message : "Unknown error",
199
- code: "HANDLER_ERROR",
200
- },
201
- };
202
- msg.respond(sc.encode(JSON.stringify(errorResponse)));
203
- }
204
- }
205
- }
206
- })();
207
- }
208
-
209
- /**
210
- * Publish a message to a subject (for pub/sub)
211
- */
212
- async publish(subject: string, data: any): Promise<void> {
213
- if (!this.connection) {
214
- throw new Error("NATS connection not established");
215
- }
216
-
217
- const message = typeof data === "string" ? data : JSON.stringify(data);
218
- this.connection.publish(subject, sc.encode(message));
219
-
220
- logger.info("Published NATS message", { subject });
221
- }
222
-
223
- /**
224
- * Send a request and wait for reply (for request-reply)
225
- */
226
- async request(subject: string, data: any, timeoutMs: number = 30000): Promise<any> {
227
- if (!this.connection) {
228
- throw new Error("NATS connection not established");
229
- }
230
-
231
- const message = typeof data === "string" ? data : JSON.stringify(data);
232
- const response = await this.connection.request(
233
- subject,
234
- sc.encode(message),
235
- { timeout: timeoutMs }
236
- );
237
-
238
- const responseData = sc.decode(response.data);
239
-
240
- try {
241
- return JSON.parse(responseData);
242
- } catch {
243
- return responseData;
244
- }
245
- }
246
-
247
- /**
248
- * Check if connected to NATS
249
- */
250
- isConnected(): boolean {
251
- return this.connection !== null && !this.connection.isClosed();
252
- }
253
-
254
- /**
255
- * Start automatic status publishing (every 30 seconds)
256
- */
257
- private startStatusPublishing(): void {
258
- logger.info("Starting status publishing (every 30 seconds)");
259
-
260
- // Publish immediately on start
261
- this.publishStatus();
262
-
263
- // Then publish every 30 seconds
264
- this.statusPublishTimer = setInterval(() => {
265
- this.publishStatus();
266
- }, 30000);
267
- }
268
-
269
- /**
270
- * Publish connector status
271
- */
272
- private async publishStatus(): Promise<void> {
273
- try {
274
- const status = {
275
- timestamp: new Date().toISOString(),
276
- locationRef: this.config.locationRef,
277
- erpType: this.config.erpType,
278
- natsConnected: this.isConnected(),
279
- };
280
-
281
- await this.publish(
282
- `mm.14.${this.config.locationRef}.erp.status`,
283
- status
284
- );
285
-
286
- logger.debug("Published connector status");
287
- } catch (error) {
288
- logger.error("Failed to publish status", { error });
289
- }
290
- }
291
-
292
- /**
293
- * Monitor connection status
294
- */
295
- private monitorConnection(): void {
296
- if (!this.connection) return;
297
-
298
- (async () => {
299
- for await (const status of this.connection!.status()) {
300
- // Only log important events, skip pingTimer
301
- if (status.type !== "pingTimer") {
302
- logger.info("NATS connection status", {
303
- type: status.type,
304
- data: status.data,
305
- });
306
- }
307
- }
308
- })();
309
- }
310
-
311
- /**
312
- * Setup graceful shutdown
313
- */
314
- private setupShutdown(): void {
315
- const shutdown = async () => {
316
- logger.info("Shutting down NATS service...");
317
- await this.disconnect();
318
- process.exit(0);
319
- };
320
-
321
- process.on("SIGINT", shutdown);
322
- process.on("SIGTERM", shutdown);
323
- }
324
-
325
- /**
326
- * Disconnect from NATS
327
- */
328
- async disconnect(): Promise<void> {
329
- // Stop status publishing
330
- if (this.statusPublishTimer) {
331
- clearInterval(this.statusPublishTimer);
332
- this.statusPublishTimer = null;
333
- }
334
-
335
- // Close connection
336
- if (this.connection) {
337
- await this.connection.drain();
338
- this.connection = null;
339
- this.subscriptions.clear();
340
- logger.info("Disconnected from NATS");
341
- }
342
- }
343
-
344
- /**
345
- * Get the location reference
346
- */
347
- getLocationRef(): string {
348
- return this.config.locationRef;
349
- }
350
- }
351
-
@@ -1,96 +0,0 @@
1
- /**
2
- * Simple proof-of-concept NATS subscriber
3
- * Subscribes to mm.14.> and replies with "hello world"
4
- */
5
-
6
- import { connect, StringCodec } from "nats";
7
- import { logger } from "../../services/reporting-service";
8
-
9
- const sc = StringCodec();
10
-
11
- async function startTestSubscriber() {
12
- try {
13
- // Connect to NATS server
14
- const nc = await connect({
15
- servers: "nats://localhost:4222",
16
- name: "mm-erp-sdk-test-subscriber",
17
- });
18
-
19
- logger.info("Connected to NATS server", {
20
- server: nc.getServer(),
21
- clientId: nc.info?.client_id,
22
- });
23
-
24
- // Subscribe to all messages on mm.14.>
25
- const sub = nc.subscribe("mm.14.>");
26
-
27
- logger.info("Subscribed to mm.14.> - waiting for messages...");
28
-
29
- // Process incoming messages
30
- (async () => {
31
- for await (const msg of sub) {
32
- const data = sc.decode(msg.data);
33
-
34
- logger.info("📨 Received NATS message", {
35
- subject: msg.subject,
36
- data: data,
37
- reply: msg.reply,
38
- });
39
-
40
- console.log("\n=== NATS MESSAGE RECEIVED ===");
41
- console.log("Subject:", msg.subject);
42
- console.log("Data:", data);
43
- console.log("Reply subject:", msg.reply);
44
- console.log("============================\n");
45
-
46
- // Reply if there's a reply subject
47
- if (msg.reply) {
48
- const replyMessage = JSON.stringify({
49
- message: "hello world",
50
- timestamp: new Date().toISOString(),
51
- receivedSubject: msg.subject,
52
- receivedData: data,
53
- });
54
-
55
- msg.respond(sc.encode(replyMessage));
56
-
57
- logger.info("✅ Sent reply: hello world", {
58
- replySubject: msg.reply,
59
- });
60
-
61
- console.log("✅ Replied with: hello world\n");
62
- }
63
- }
64
- })();
65
-
66
- // Handle connection events
67
- (async () => {
68
- for await (const status of nc.status()) {
69
- logger.info("NATS connection status", {
70
- type: status.type,
71
- data: status.data,
72
- });
73
- console.log(`Connection status: ${status.type}`, status.data);
74
- }
75
- })();
76
-
77
- // Graceful shutdown
78
- const shutdown = async () => {
79
- logger.info("Shutting down NATS subscriber...");
80
- await nc.drain();
81
- process.exit(0);
82
- };
83
-
84
- process.on("SIGINT", shutdown);
85
- process.on("SIGTERM", shutdown);
86
-
87
- } catch (error) {
88
- logger.error("Failed to connect to NATS", { error });
89
- console.error("Error connecting to NATS:", error);
90
- process.exit(1);
91
- }
92
- }
93
-
94
- // Start the subscriber
95
- startTestSubscriber();
96
-
@@ -1,205 +0,0 @@
1
- /**
2
- * Error formatter utility for standardizing error messages across connectors
3
- * Extracts human-readable messages from various error types (axios, custom errors, etc.)
4
- */
5
-
6
- export interface FormattedError {
7
- message: string;
8
- code: string;
9
- httpStatus?: number;
10
- metadata?: Record<string, any>;
11
- }
12
-
13
- /**
14
- * Extract meaningful error message from various error types
15
- */
16
- export function formatError(error: any): FormattedError {
17
- if (!error) {
18
- return {
19
- message: 'Unknown error occurred',
20
- code: 'UNKNOWN_ERROR',
21
- };
22
- }
23
-
24
- // Handle axios errors FIRST (before checking for FormattedError)
25
- // because axios errors also have message and code properties
26
- if (error.isAxiosError || error.name === 'AxiosError') {
27
- return formatAxiosError(error);
28
- }
29
-
30
- // If it's already a FormattedError, return as-is
31
- // Check for httpStatus or metadata to distinguish from axios errors
32
- if (error.message && error.code && typeof error.message === 'string' && typeof error.code === 'string' && !error.config) {
33
- return error as FormattedError;
34
- }
35
-
36
- // Handle standard Error objects
37
- if (error instanceof Error) {
38
- return {
39
- message: error.message || 'An error occurred',
40
- code: 'ERROR',
41
- metadata: {
42
- name: error.name,
43
- },
44
- };
45
- }
46
-
47
- // Handle string errors
48
- if (typeof error === 'string') {
49
- return {
50
- message: error,
51
- code: 'ERROR',
52
- };
53
- }
54
-
55
- // Last resort: try to extract any useful info
56
- const message = error.message || error.toString?.() || 'Unknown error occurred';
57
- return {
58
- message: typeof message === 'string' ? message : JSON.stringify(message),
59
- code: error.code || 'UNKNOWN_ERROR',
60
- };
61
- }
62
-
63
- /**
64
- * Format axios-specific errors with detailed context
65
- */
66
- function formatAxiosError(error: any): FormattedError {
67
- const httpStatus = error.response?.status;
68
- const method = error.config?.method?.toUpperCase();
69
- const url = error.config?.url;
70
-
71
- // First check if connector already extracted the message
72
- let message = error._extractedMessage;
73
-
74
- // If not, try to extract from response data
75
- if (!message) {
76
- const extractedMessage = extractErrorMessage(error.response?.data);
77
- message = extractedMessage || error.response?.statusText || error.message || 'Request failed';
78
- }
79
-
80
- // Determine error code based on status
81
- const code = categorizeHttpError(httpStatus);
82
-
83
- const metadata: Record<string, any> = {
84
- method,
85
- url,
86
- };
87
-
88
- // Add additional context for specific error types
89
- if (httpStatus === 401 || httpStatus === 403) {
90
- metadata.hint = 'Check authentication credentials';
91
- } else if (httpStatus === 404) {
92
- metadata.hint = 'Resource not found - check endpoint URL';
93
- } else if (httpStatus && httpStatus >= 500) {
94
- metadata.hint = 'ERP system may be temporarily unavailable';
95
- }
96
-
97
- return {
98
- message,
99
- code,
100
- httpStatus,
101
- metadata,
102
- };
103
- }
104
-
105
- /**
106
- * Extract meaningful error message from response data
107
- * Handles various ERP-specific response formats
108
- */
109
- function extractErrorMessage(data: any): string | null {
110
- if (!data) return null;
111
-
112
- // Common error message fields across different ERPs
113
- const possibleFields = [
114
- 'ErrorMessage', // Epicor
115
- 'error.message', // Common REST format
116
- 'error', // Simple format
117
- 'Message', // .NET style
118
- 'message', // JavaScript style
119
- 'errorMessage', // Camel case
120
- 'error_message', // Snake case
121
- 'errors[0].message', // Array of errors
122
- 'title', // Problem details format
123
- 'detail', // Problem details format
124
- ];
125
-
126
- for (const field of possibleFields) {
127
- const value = getNestedValue(data, field);
128
- if (value && typeof value === 'string') {
129
- return value;
130
- }
131
- }
132
-
133
- // If data is a string, return it
134
- if (typeof data === 'string') {
135
- // Try to parse as JSON first
136
- try {
137
- const parsed = JSON.parse(data);
138
- return extractErrorMessage(parsed);
139
- } catch {
140
- return data;
141
- }
142
- }
143
-
144
- return null;
145
- }
146
-
147
- /**
148
- * Get nested value from object using dot notation
149
- */
150
- function getNestedValue(obj: any, path: string): any {
151
- const parts = path.split('.');
152
- let current = obj;
153
-
154
- for (const part of parts) {
155
- // Handle array notation like 'errors[0]'
156
- const arrayMatch = part.match(/(\w+)\[(\d+)\]/);
157
- if (arrayMatch) {
158
- const [, key, index] = arrayMatch;
159
- current = current?.[key]?.[parseInt(index, 10)];
160
- } else {
161
- current = current?.[part];
162
- }
163
-
164
- if (current === undefined || current === null) {
165
- return null;
166
- }
167
- }
168
-
169
- return current;
170
- }
171
-
172
- /**
173
- * Categorize HTTP errors into standard codes
174
- */
175
- function categorizeHttpError(status?: number): string {
176
- if (!status) return 'NETWORK_ERROR';
177
-
178
- if (status === 400) return 'VALIDATION_ERROR';
179
- if (status === 401) return 'AUTHENTICATION_ERROR';
180
- if (status === 403) return 'AUTHORIZATION_ERROR';
181
- if (status === 404) return 'NOT_FOUND';
182
- if (status === 409) return 'CONFLICT';
183
- if (status === 422) return 'VALIDATION_ERROR';
184
- if (status === 429) return 'RATE_LIMIT';
185
- if (status >= 500) return 'ERP_SERVER_ERROR';
186
- if (status >= 400) return 'CLIENT_ERROR';
187
-
188
- return 'HTTP_ERROR';
189
- }
190
-
191
- /**
192
- * Format error for logging (shorter, cleaner version)
193
- */
194
- export function formatErrorForLogging(error: any): string {
195
- const formatted = formatError(error);
196
-
197
- let message = `[${formatted.code}] ${formatted.message}`;
198
-
199
- if (formatted.httpStatus) {
200
- message = `[${formatted.httpStatus}] ${message}`;
201
- }
202
-
203
- return message;
204
- }
205
-