@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,55 @@
1
+ import logger from "../services/reporting-service/logger.js";
2
+ import { CoreConfiguration } from "../services/data-sync-service/configuration-manager.js";
3
+ import { SQLiteCoordinator } from "../services/sqlite-service/index.js";
4
+ import { getTimezoneOffsetAndPersist } from "./time-utils.js";
5
+ import knex from "knex";
6
+ import config from "../knexfile.js";
7
+ /**
8
+ * Utility class to handle application initialization tasks
9
+ */
10
+ export class ApplicationInitializer {
11
+ /**
12
+ * Performs all necessary application initialization tasks
13
+ * This should be called before starting any services or jobs
14
+ */
15
+ static async initialize() {
16
+ try {
17
+ logger.info("\n================================INITIALIZING APPLICATION================================\n");
18
+ // Load and validate core configuration
19
+ const coreConfig = CoreConfiguration.inst();
20
+ logger.info("Core Configuration loaded:", coreConfig.toSafeLogObject());
21
+ // Perform database startup checks
22
+ logger.info("Performing database startup checks...");
23
+ await SQLiteCoordinator.performStartupCheck();
24
+ logger.info("Database startup checks completed successfully");
25
+ // Run database migrations to ensure all tables exist
26
+ logger.info("Running database migrations...");
27
+ await ApplicationInitializer.runMigrations();
28
+ logger.info("Database migrations completed successfully");
29
+ // Required for most connectors
30
+ await getTimezoneOffsetAndPersist();
31
+ logger.info("\n================================APPLICATION INITIALIZATION COMPLETED================================\n");
32
+ }
33
+ catch (error) {
34
+ logger.error("Critical initialization failure. Exiting.", error);
35
+ process.exitCode = 1;
36
+ }
37
+ }
38
+ /**
39
+ * Runs database migrations to ensure all required tables exist
40
+ */
41
+ static async runMigrations() {
42
+ const db = knex(config.local);
43
+ try {
44
+ await db.migrate.latest();
45
+ }
46
+ catch (error) {
47
+ logger.error("Error running migrations:", error);
48
+ throw error;
49
+ }
50
+ finally {
51
+ await db.destroy();
52
+ }
53
+ }
54
+ }
55
+ //# sourceMappingURL=application-initializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"application-initializer.js","sourceRoot":"","sources":["../../src/utils/application-initializer.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,yCAAyC,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wDAAwD,CAAC;AAC3F,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,MAAM,MAAM,gBAAgB,CAAC;AAEpC;;GAEG;AACH,MAAM,OAAO,sBAAsB;IACjC;;;OAGG;IACI,MAAM,CAAC,KAAK,CAAC,UAAU;QAC5B,IAAI,CAAC;YACH,MAAM,CAAC,IAAI,CACT,8FAA8F,CAC/F,CAAC;YAEF,uCAAuC;YACvC,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,EAAE,CAAC;YAC5C,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE,UAAU,CAAC,eAAe,EAAE,CAAC,CAAC;YAExE,kCAAkC;YAClC,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;YACrD,MAAM,iBAAiB,CAAC,mBAAmB,EAAE,CAAC;YAC9C,MAAM,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;YAE9D,qDAAqD;YACrD,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;YAC9C,MAAM,sBAAsB,CAAC,aAAa,EAAE,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;YAE1D,+BAA+B;YAC/B,MAAM,2BAA2B,EAAE,CAAC;YAEpC,MAAM,CAAC,IAAI,CACT,0GAA0G,CAC3G,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAC;YACjE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,KAAK,CAAC,aAAa;QAChC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;YACjD,MAAM,KAAK,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ export const cleanupNumbers = (data) => {
2
+ // eslint-disable-next-line no-useless-escape
3
+ data = data.toString().replace(/[^0-9\.]+/g, "");
4
+ return data;
5
+ };
6
+ //# sourceMappingURL=cleanup-numbers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleanup-numbers.js","sourceRoot":"","sources":["../../src/utils/cleanup-numbers.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,EAAE;IAC7C,6CAA6C;IAC7C,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IACjD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { IERPConnector } from "../types/erp-connector";
1
+ import { IERPConnector } from "../types/erp-connector.js";
2
2
  /**
3
3
  * Helper function to dynamically import and create connector instance from a file path
4
4
  * @param connectorPath - The file path to the connector module
@@ -1 +1 @@
1
- {"version":3,"file":"connector-factory.d.ts","sourceRoot":"","sources":["../../src/utils/connector-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAIvD;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,GAClC,eAAe,MAAM,KACpB,OAAO,CAAC,aAAa,CAiCvB,CAAC"}
1
+ {"version":3,"file":"connector-factory.d.ts","sourceRoot":"","sources":["../../src/utils/connector-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAI1D;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,GAClC,eAAe,MAAM,KACpB,OAAO,CAAC,aAAa,CAiCvB,CAAC"}
@@ -0,0 +1,34 @@
1
+ import logger from "../services/reporting-service/logger.js";
2
+ import { pathToFileURL } from "url";
3
+ /**
4
+ * Helper function to dynamically import and create connector instance from a file path
5
+ * @param connectorPath - The file path to the connector module
6
+ * @returns A new instance of the IERPConnector
7
+ */
8
+ export const createConnectorFromPath = async (connectorPath) => {
9
+ try {
10
+ // Some detailed debug logging to help with troubleshooting multi-platform connector paths
11
+ const pathParts = connectorPath.split('/');
12
+ const filename = pathParts[pathParts.length - 1];
13
+ logger.debug("createConnectorFromPath:", {
14
+ connectorPath,
15
+ pathParts,
16
+ filename,
17
+ finalImport: pathToFileURL(connectorPath).href,
18
+ });
19
+ const connectorModule = await import(pathToFileURL(connectorPath).href);
20
+ // Get the default export or named export
21
+ const ConnectorClass = connectorModule.default ||
22
+ connectorModule[Object.keys(connectorModule)[0]];
23
+ if (!ConnectorClass) {
24
+ throw new Error(`No connector class found in module: ${connectorPath}`);
25
+ }
26
+ // Create new instance of the connector
27
+ return new ConnectorClass();
28
+ }
29
+ catch (error) {
30
+ logger.error(`Failed to create connector instance from path: ${connectorPath}`, { error });
31
+ throw error;
32
+ }
33
+ };
34
+ //# sourceMappingURL=connector-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connector-factory.js","sourceRoot":"","sources":["../../src/utils/connector-factory.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,yCAAyC,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,EAC1C,aAAqB,EACG,EAAE;IAC1B,IAAI,CAAC;QACH,0FAA0F;QAC1F,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAEjD,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE;YACvC,aAAa;YACb,SAAS;YACT,QAAQ;YACR,WAAW,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC,IAAI;SAC/C,CAAC,CAAC;QAEH,MAAM,eAAe,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC;QAExE,yCAAyC;QACzC,MAAM,cAAc,GAClB,eAAe,CAAC,OAAO;YACvB,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEnD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,uCAAuC,aAAa,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,uCAAuC;QACvC,OAAO,IAAI,cAAc,EAAE,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CACV,kDAAkD,aAAa,EAAE,EACjE,EAAE,KAAK,EAAE,CACV,CAAC;QACF,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { LogEntry } from './mm-connector-logger';
1
+ import type { LogEntry } from './mm-connector-logger.js';
2
2
  /**
3
3
  * Implement a custom LogDeduper or use the provided FileLogDeduper
4
4
  */
@@ -1 +1 @@
1
- {"version":3,"file":"log-deduper.d.ts","sourceRoot":"","sources":["../../../src/utils/connector-log/log-deduper.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,uBAAuB,CAAC;AAEtE;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7D,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,wBAAwB,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrG;AAkBD;;;GAGG;AACH,qBAAa,cAAe,YAAW,UAAU;IAC/C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,aAAa,CAAS;IAE9B,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAO;IAC/C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAQ;IAC7C,OAAO,CAAC,QAAQ,CAAC,gCAAgC,CAAO;IACxD,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAA+C;IAEvF;;;;;;;OAOG;gBACS,EACV,aAA4C,EAC5C,aAA4C,EAC5C,UAAsC,EACtC,oBAA4D,EAC7D,GAAG;QACF,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,oBAAoB,CAAC,EAAE,MAAM,CAAC;KAC1B;IAWN;;;;MAIE;IACI,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA8D5D,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBtD,wBAAwB,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAyCxG,OAAO,CAAC,qBAAqB;IAU7B,OAAO,CAAC,SAAS;IAUjB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,aAAa;YAUP,QAAQ;IA2BtB;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAW5B"}
1
+ {"version":3,"file":"log-deduper.d.ts","sourceRoot":"","sources":["../../../src/utils/connector-log/log-deduper.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,0BAA0B,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7D,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,wBAAwB,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrG;AAkBD;;;GAGG;AACH,qBAAa,cAAe,YAAW,UAAU;IAC/C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,aAAa,CAAS;IAE9B,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAO;IAC/C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAQ;IAC7C,OAAO,CAAC,QAAQ,CAAC,gCAAgC,CAAO;IACxD,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAA+C;IAEvF;;;;;;;OAOG;gBACS,EACV,aAA4C,EAC5C,aAA4C,EAC5C,UAAsC,EACtC,oBAA4D,EAC7D,GAAG;QACF,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,oBAAoB,CAAC,EAAE,MAAM,CAAC;KAC1B;IAWN;;;;MAIE;IACI,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA8D5D,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBtD,wBAAwB,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAyCxG,OAAO,CAAC,qBAAqB;IAU7B,OAAO,CAAC,SAAS;IAUjB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,aAAa;YAUP,QAAQ;IA2BtB;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAW5B"}
@@ -0,0 +1,240 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import logger from '../../services/reporting-service/logger.js';
4
+ /**
5
+ * FileLogDeduper implements the LogDeduper interface to deduplicate
6
+ * logs by storing them in a file; this allows deduping across jobs.
7
+ */
8
+ export class FileLogDeduper {
9
+ storeFilePath;
10
+ windowMs;
11
+ ttlMs;
12
+ sweepIntervalMs;
13
+ lastSweepTsMs;
14
+ DEFAULT_WINDOW_TEN_MINS = 600;
15
+ DEFAULT_TTL_ONE_HOUR = 3600;
16
+ DEFAULT_SWEEP_INTERVAL_FIVE_MINS = 300;
17
+ DEFAULT_STORE_FILE_PATH = path.join('/tmp', 'log-deduplication.json');
18
+ /**
19
+ * Ctor.
20
+ * @param storeFilePath: The path to the file where the deduplication store is stored; recommended is to use the default
21
+ * @param windowSeconds: Suppression window. Duplicates within this period are suppressed.
22
+ * @param ttlSeconds: Eviction TTL. Store entries for keys inactive beyond this are removed. Enforced to be ≥ windowSeconds.
23
+ * @param sweepIntervalSeconds: Efficiency parameter. How often (min interval) to run opportunistic eviction; retry always sweeps
24
+ * The sweep is lazy, used only when the store is accessed
25
+ */
26
+ constructor({ storeFilePath = this.DEFAULT_STORE_FILE_PATH, windowSeconds = this.DEFAULT_WINDOW_TEN_MINS, ttlSeconds = this.DEFAULT_TTL_ONE_HOUR, sweepIntervalSeconds = this.DEFAULT_SWEEP_INTERVAL_FIVE_MINS } = {}) {
27
+ this.storeFilePath = storeFilePath;
28
+ this.windowMs = Math.max(1, windowSeconds) * 1000;
29
+ this.ttlMs = Math.max(this.windowMs, Math.max(1, ttlSeconds) * 1000);
30
+ this.sweepIntervalMs = Math.max(1, sweepIntervalSeconds) * 1000;
31
+ this.lastSweepTsMs = 0;
32
+ this.ensureStoreFileExists();
33
+ }
34
+ /**
35
+ * Deduplication gating function
36
+ * Returns the formatted message to send, or null to suppress
37
+ * Decision is based on the dedupeKey and the time of the entry
38
+ */
39
+ async decide(entry, now) {
40
+ if (!entry.dedupeKey || typeof entry.dedupeKey !== 'string' || entry.dedupeKey.trim().length === 0) {
41
+ throw new Error('dedupeKey is required and must be a non-empty string');
42
+ }
43
+ const key = entry.dedupeKey;
44
+ return this.withLock(async () => {
45
+ const store = this.readStore();
46
+ // Opportunistic eviction gated by sweep interval
47
+ if (now - this.lastSweepTsMs >= this.sweepIntervalMs) {
48
+ this.evictExpiredInStore(store, now);
49
+ this.lastSweepTsMs = now;
50
+ this.writeStore(store);
51
+ }
52
+ const existing = store[key];
53
+ if (existing) {
54
+ const withinWindow = existing.lastTransmitted > 0 && (existing.lastTransmitted + this.windowMs) > now;
55
+ if (withinWindow) {
56
+ // Suppress and increment count
57
+ store[key] = {
58
+ ...existing,
59
+ suppressedCount: existing.suppressedCount + 1,
60
+ firstUnsentEventTs: existing.suppressedCount === 0 ? (entry.eventTime ?? now) : existing.firstUnsentEventTs,
61
+ lastEventTs: entry.eventTime ?? now,
62
+ level: entry.level,
63
+ message: entry.message
64
+ };
65
+ this.writeStore(store);
66
+ return null;
67
+ }
68
+ // Outside window: allow, include timestamp and prior suppression count
69
+ const messageToSend = this.formatMessage(entry.message, entry.eventTime ?? now, existing.suppressedCount, existing.firstUnsentEventTs);
70
+ store[key] = {
71
+ ...existing,
72
+ suppressedCount: 0,
73
+ firstUnsentEventTs: 0,
74
+ lastEventTs: entry.eventTime ?? now,
75
+ level: entry.level,
76
+ message: entry.message
77
+ };
78
+ this.writeStore(store);
79
+ return messageToSend;
80
+ }
81
+ // New entry: allow, timestamp, no suppression count
82
+ const messageToSend = this.formatMessage(entry.message, entry.eventTime ?? now, 0);
83
+ store[key] = {
84
+ lastTransmitted: 0,
85
+ suppressedCount: 0,
86
+ firstUnsentEventTs: entry.eventTime ?? now,
87
+ lastEventTs: entry.eventTime ?? now,
88
+ level: entry.level,
89
+ message: entry.message
90
+ };
91
+ this.writeStore(store);
92
+ return messageToSend;
93
+ });
94
+ }
95
+ async onSuccess(entry, now) {
96
+ if (!entry.dedupeKey || typeof entry.dedupeKey !== 'string' || entry.dedupeKey.trim().length === 0) {
97
+ throw new Error('dedupeKey is required and must be a non-empty string');
98
+ }
99
+ const key = entry.dedupeKey;
100
+ await this.withLock(async () => {
101
+ const store = this.readStore();
102
+ const existing = store[key];
103
+ if (existing) {
104
+ store[key] = {
105
+ ...existing,
106
+ lastTransmitted: now,
107
+ firstUnsentEventTs: 0,
108
+ suppressedCount: 0
109
+ };
110
+ this.writeStore(store);
111
+ }
112
+ });
113
+ }
114
+ async retryFailedTransmissions(send) {
115
+ // Best-effort retry: first sweep expired entries, then iterate over entries with lastTransmitted === 0
116
+ const now = Date.now();
117
+ const entries = await this.withLock(async () => {
118
+ const store = this.readStore();
119
+ // Always sweep on retry
120
+ this.evictExpiredInStore(store, now);
121
+ this.lastSweepTsMs = now;
122
+ this.writeStore(store);
123
+ return Object.entries(store)
124
+ .filter(([, rec]) => rec.lastTransmitted === 0)
125
+ .map(([key, rec]) => ({ key, rec }));
126
+ });
127
+ for (const { key, rec } of entries) {
128
+ try {
129
+ const message = this.formatMessage(rec.message, rec.lastEventTs, rec.suppressedCount, rec.firstUnsentEventTs);
130
+ await send({ level: rec.level, message: rec.message, dedupeKey: key, eventTime: rec.lastEventTs }, message);
131
+ // Mark success
132
+ await this.withLock(async () => {
133
+ const store = this.readStore();
134
+ const current = store[key];
135
+ if (current) {
136
+ store[key] = {
137
+ ...current,
138
+ lastTransmitted: Date.now(),
139
+ suppressedCount: 0
140
+ };
141
+ this.writeStore(store);
142
+ }
143
+ });
144
+ }
145
+ catch (err) {
146
+ // Leave entry for future retries; do not throw
147
+ logger.error('Failed to retry failed transmission', { key, rec, error: err });
148
+ return;
149
+ }
150
+ }
151
+ }
152
+ // --- Internals ---
153
+ ensureStoreFileExists() {
154
+ try {
155
+ if (!fs.existsSync(this.storeFilePath)) {
156
+ fs.writeFileSync(this.storeFilePath, JSON.stringify({}), 'utf-8');
157
+ }
158
+ }
159
+ catch {
160
+ // ignore
161
+ }
162
+ }
163
+ readStore() {
164
+ try {
165
+ if (!fs.existsSync(this.storeFilePath))
166
+ return {};
167
+ const content = fs.readFileSync(this.storeFilePath, 'utf-8');
168
+ return content ? JSON.parse(content) : {};
169
+ }
170
+ catch {
171
+ return {};
172
+ }
173
+ }
174
+ writeStore(store) {
175
+ try {
176
+ fs.writeFileSync(this.storeFilePath, JSON.stringify(store, null, 2), 'utf-8');
177
+ }
178
+ catch {
179
+ // ignore
180
+ }
181
+ }
182
+ formatMessage(message, eventTs, suppressedCount, firstUnsentEventTs) {
183
+ const timestamp = new Date(eventTs).toISOString();
184
+ const base = `${timestamp} | ${message}`;
185
+ if (suppressedCount > 0) {
186
+ const since = firstUnsentEventTs && firstUnsentEventTs > 0 ? ` since ${new Date(firstUnsentEventTs).toISOString()}` : '';
187
+ return `${base} (${suppressedCount} suppressed${since})`;
188
+ }
189
+ return base;
190
+ }
191
+ async withLock(fn) {
192
+ const lockPath = `${this.storeFilePath}.lock`;
193
+ const start = Date.now();
194
+ // Try to acquire the lock with retries (best effort)
195
+ // Avoid infinite waits; cap at ~3 seconds
196
+ while (true) {
197
+ try {
198
+ const fd = fs.openSync(lockPath, 'wx');
199
+ try {
200
+ const result = await fn();
201
+ return result;
202
+ }
203
+ finally {
204
+ try {
205
+ fs.closeSync(fd);
206
+ }
207
+ catch { /* ignore */ }
208
+ try {
209
+ fs.unlinkSync(lockPath);
210
+ }
211
+ catch { /* ignore */ }
212
+ }
213
+ }
214
+ catch {
215
+ // Lock exists
216
+ if (Date.now() - start > 3000) {
217
+ // Timed out; proceed without lock to avoid deadlock
218
+ return await fn();
219
+ }
220
+ await new Promise(resolve => setTimeout(resolve, 50));
221
+ }
222
+ }
223
+ }
224
+ /**
225
+ * Evict expired entries from the store based on the TTL and the key's last transmitted time
226
+ */
227
+ evictExpiredInStore(store, now) {
228
+ const keys = Object.keys(store);
229
+ if (keys.length === 0)
230
+ return;
231
+ for (const key of keys) {
232
+ const rec = store[key];
233
+ const referenceTs = rec.lastTransmitted > 0 ? rec.lastTransmitted : rec.lastEventTs;
234
+ if (now - referenceTs > this.ttlMs) {
235
+ delete store[key];
236
+ }
237
+ }
238
+ }
239
+ }
240
+ //# sourceMappingURL=log-deduper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-deduper.js","sourceRoot":"","sources":["../../../src/utils/connector-log/log-deduper.ts"],"names":[],"mappings":"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"}
@@ -1 +1,2 @@
1
+ export {};
1
2
  //# sourceMappingURL=mm-connector-logger-example.d.ts.map
@@ -0,0 +1,88 @@
1
+ // import { FileLogDeduper } from './log-deduper';
2
+ // import { MMConnectorLogger, LogEntry } from './mm-connector-logger';
3
+ // import { HTTPError } from '../http-client';
4
+ // import { getErrorType } from '../error-utils';
5
+ // /**
6
+ // * Example usage of the MM Connector Logger with deduplication
7
+ // *
8
+ // * This example demonstrates how to use the MMConnectorLogger class to send
9
+ // * progress updates and error logs to the MM cloud. Deduplication is configured
10
+ // * via environment variables and applied consistently to all log messages.
11
+ // */
12
+ export {};
13
+ // async function exampleUsage() {
14
+ // // Initialize logger with source identifier and deduplication settings
15
+ // const logger = new MMConnectorLogger('proshop', new FileLogDeduper({
16
+ // windowSeconds: 300, // 5 minute deduplication window
17
+ // ttlSeconds: 3600, // 1 hour TTL for store cleanup
18
+ // sweepIntervalSeconds: 600 // 10 minute sweep interval
19
+ // }));
20
+ // try {
21
+ // // Sends initial sync start message
22
+ // await logger.sendLog(new LogEntry({
23
+ // level: 'info',
24
+ // dedupeKey: 'SyncStart',
25
+ // message: 'Starting sync process'
26
+ // }));
27
+ // // Simulates some work with progress updates
28
+ // for (let i = 1; i <= 3; i++) {
29
+ // await logger.sendLog(new LogEntry({
30
+ // level: 'info',
31
+ // dedupeKey: 'SyncProgress',
32
+ // message: `Processing batch ${i}/3`
33
+ // }));
34
+ // await new Promise(resolve => setTimeout(resolve, 100)); // Simulate work
35
+ // }
36
+ // // Sends completion message
37
+ // await logger.sendLog(new LogEntry({
38
+ // level: 'info',
39
+ // dedupeKey: 'SyncComplete',
40
+ // message: 'Sync process completed successfully'
41
+ // }));
42
+ // // Demonstrates error logging with error type extraction
43
+ // try {
44
+ // throw new Error('Simulated database connection failure');
45
+ // } catch (error) {
46
+ // const errorType = getErrorType(error);
47
+ // await logger.sendLog(new LogEntry({
48
+ // level: 'error',
49
+ // dedupeKey: `DatabaseError_${errorType}`,
50
+ // message: `Database operation failed: ${error instanceof Error ? error.message : 'Unknown error'}`
51
+ // }));
52
+ // }
53
+ // // Demonstrates getErrorType with different error types
54
+ // const httpError = new HTTPError('Bad Request', 400, 'INVALID_REQUEST');
55
+ // const errorTypeFromCode = getErrorType(httpError); // Returns 'INVALID_REQUEST'
56
+ // const typeError = new TypeError('Cannot read property of undefined');
57
+ // const errorTypeFromName = getErrorType(typeError); // Returns 'TypeError'
58
+ // await logger.sendLog(new LogEntry({
59
+ // level: 'error',
60
+ // dedupeKey: `HTTPError_${errorTypeFromCode}`,
61
+ // message: `HTTP request failed with code: ${errorTypeFromCode}`
62
+ // }));
63
+ // await logger.sendLog(new LogEntry({
64
+ // level: 'error',
65
+ // dedupeKey: `TypeError_${errorTypeFromName}`,
66
+ // message: `Type error occurred: ${errorTypeFromName}`
67
+ // }));
68
+ // // Demonstrate deduplication - this message will be suppressed if sent within 5 minutes
69
+ // await logger.sendLog(new LogEntry({
70
+ // level: 'warn',
71
+ // dedupeKey: 'RateLimit',
72
+ // message: 'API rate limit approaching'
73
+ // }));
74
+ // await logger.sendLog(new LogEntry({
75
+ // level: 'warn',
76
+ // dedupeKey: 'RateLimit',
77
+ // message: 'API rate limit approaching'
78
+ // })); // This will be deduplicated
79
+ // // Retry any failed transmissions
80
+ // await logger.retryFailedTransmissions();
81
+ // } catch (error) {
82
+ // console.error('Failed to send logs:', error);
83
+ // } finally {
84
+ // // Clean up resources
85
+ // await logger.destroy();
86
+ // }
87
+ // }
88
+ //# sourceMappingURL=mm-connector-logger-example.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mm-connector-logger-example.js","sourceRoot":"","sources":["../../../src/utils/connector-log/mm-connector-logger-example.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,uEAAuE;AACvE,8CAA8C;AAC9C,iDAAiD;AACjD,MAAM;AACN,iEAAiE;AACjE,MAAM;AACN,8EAA8E;AAC9E,kFAAkF;AAClF,6EAA6E;AAC7E,MAAM;;AAEN,kCAAkC;AAClC,2EAA2E;AAC3E,0EAA0E;AAC1E,8DAA8D;AAC9D,6DAA6D;AAC7D,6DAA6D;AAC7D,SAAS;AAET,UAAU;AACV,0CAA0C;AAC1C,0CAA0C;AAC1C,uBAAuB;AACvB,gCAAgC;AAChC,yCAAyC;AACzC,WAAW;AAEX,mDAAmD;AACnD,qCAAqC;AACrC,4CAA4C;AAC5C,yBAAyB;AACzB,qCAAqC;AACrC,6CAA6C;AAC7C,aAAa;AACb,iFAAiF;AACjF,QAAQ;AAER,kCAAkC;AAClC,0CAA0C;AAC1C,uBAAuB;AACvB,mCAAmC;AACnC,uDAAuD;AACvD,WAAW;AAEX,+DAA+D;AAC/D,YAAY;AACZ,kEAAkE;AAClE,wBAAwB;AACxB,+CAA+C;AAC/C,4CAA4C;AAC5C,0BAA0B;AAC1B,mDAAmD;AACnD,4GAA4G;AAC5G,aAAa;AACb,QAAQ;AAER,8DAA8D;AAC9D,8EAA8E;AAC9E,sFAAsF;AAEtF,4EAA4E;AAC5E,gFAAgF;AAEhF,0CAA0C;AAC1C,wBAAwB;AACxB,qDAAqD;AACrD,uEAAuE;AACvE,WAAW;AACX,0CAA0C;AAC1C,wBAAwB;AACxB,qDAAqD;AACrD,6DAA6D;AAC7D,WAAW;AAEX,8FAA8F;AAC9F,0CAA0C;AAC1C,uBAAuB;AACvB,gCAAgC;AAChC,8CAA8C;AAC9C,WAAW;AACX,0CAA0C;AAC1C,uBAAuB;AACvB,gCAAgC;AAChC,8CAA8C;AAC9C,wCAAwC;AAExC,wCAAwC;AACxC,+CAA+C;AAE/C,sBAAsB;AACtB,oDAAoD;AACpD,gBAAgB;AAChB,4BAA4B;AAC5B,8BAA8B;AAC9B,MAAM;AACN,IAAI"}
@@ -1,4 +1,4 @@
1
- import type { LogDeduper } from './log-deduper';
1
+ import type { LogDeduper } from './log-deduper.js';
2
2
  export type LogLevelString = 'info' | 'warn' | 'error';
3
3
  /**
4
4
  * dedupeKey - key used to deduplicate log entries when a LogDeduper is injected into the MMConnectorLogger
@@ -1 +1 @@
1
- {"version":3,"file":"mm-connector-logger.d.ts","sourceRoot":"","sources":["../../../src/utils/connector-log/mm-connector-logger.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEvD;;;;;;GAMG;AACH,qBAAa,QAAQ;IACnB,KAAK,EAAE,cAAc,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;gBAEN,MAAM,EAAE;QAAE,KAAK,EAAE,cAAc,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAC;CAMjF;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAaD;;;;;;;;GAQG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;IAEpC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAa;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU;IAYhD;;;;;;;;;;;;OAYG;IACG,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAsC9D;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAsBxB;;;;;;OAMG;IACG,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;IAa/C;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
1
+ {"version":3,"file":"mm-connector-logger.d.ts","sourceRoot":"","sources":["../../../src/utils/connector-log/mm-connector-logger.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEvD;;;;;;GAMG;AACH,qBAAa,QAAQ;IACnB,KAAK,EAAE,cAAc,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;gBAEN,MAAM,EAAE;QAAE,KAAK,EAAE,cAAc,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAC;CAMjF;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAaD;;;;;;;;GAQG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;IAEpC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAa;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU;IAYhD;;;;;;;;;;;;OAYG;IACG,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAsC9D;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAsBxB;;;;;;OAMG;IACG,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;IAa/C;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}