@machinemetrics/mm-erp-sdk 0.1.9 → 0.2.0-beta.1

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 (339) hide show
  1. package/README.md +0 -5
  2. package/dist/config-CvA-mFWF.js +418 -0
  3. package/dist/config-CvA-mFWF.js.map +1 -0
  4. package/dist/connector-factory-BPm2GVVF.js +30 -0
  5. package/dist/connector-factory-BPm2GVVF.js.map +1 -0
  6. package/dist/hashed-cache-manager-B15NN8hK.js +322 -0
  7. package/dist/hashed-cache-manager-B15NN8hK.js.map +1 -0
  8. package/dist/index-D8qO1NyK.js +192 -0
  9. package/dist/index-D8qO1NyK.js.map +1 -0
  10. package/dist/index.d.ts +43 -42
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/knexfile-Bng2Ru9c.js +20 -0
  13. package/dist/knexfile-Bng2Ru9c.js.map +1 -0
  14. package/dist/knexfile.d.ts.map +1 -1
  15. package/dist/logger-BWw0_z9q.js +17557 -0
  16. package/dist/logger-BWw0_z9q.js.map +1 -0
  17. package/dist/migrations/20241015162631_create_cache_table.js +15 -11
  18. package/dist/migrations/20241015162631_create_cache_table.js.map +1 -1
  19. package/dist/migrations/20241015162632_create_sdk_cache_table.js +15 -11
  20. package/dist/migrations/20241015162632_create_sdk_cache_table.js.map +1 -1
  21. package/dist/migrations/20250103162631_create_record_tracking_table.js +15 -14
  22. package/dist/migrations/20250103162631_create_record_tracking_table.js.map +1 -1
  23. package/dist/mm-erp-sdk.js +4978 -0
  24. package/dist/mm-erp-sdk.js.map +1 -0
  25. package/dist/services/caching-service/batch-cache-manager.d.ts +1 -1
  26. package/dist/services/caching-service/batch-cache-manager.d.ts.map +1 -1
  27. package/dist/services/caching-service/hashed-cache-manager.d.ts +2 -2
  28. package/dist/services/caching-service/hashed-cache-manager.d.ts.map +1 -1
  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/record-tracking-manager.d.ts +1 -1
  32. package/dist/services/caching-service/record-tracking-manager.d.ts.map +1 -1
  33. package/dist/services/data-sync-service/configuration-manager.d.ts +1 -1
  34. package/dist/services/data-sync-service/configuration-manager.d.ts.map +1 -1
  35. package/dist/services/data-sync-service/data-sync-service.d.ts.map +1 -1
  36. package/dist/services/data-sync-service/index.d.ts +3 -3
  37. package/dist/services/data-sync-service/index.d.ts.map +1 -1
  38. package/dist/services/data-sync-service/jobs/clean-up-expired-cache.js +39 -40
  39. package/dist/services/data-sync-service/jobs/clean-up-expired-cache.js.map +1 -1
  40. package/dist/services/data-sync-service/jobs/from-erp.d.ts.map +1 -1
  41. package/dist/services/data-sync-service/jobs/from-erp.js +36 -48
  42. package/dist/services/data-sync-service/jobs/from-erp.js.map +1 -1
  43. package/dist/services/data-sync-service/jobs/retry-failed-labor-tickets.js +35 -36
  44. package/dist/services/data-sync-service/jobs/retry-failed-labor-tickets.js.map +1 -1
  45. package/dist/services/data-sync-service/jobs/run-migrations.js +21 -22
  46. package/dist/services/data-sync-service/jobs/run-migrations.js.map +1 -1
  47. package/dist/services/data-sync-service/jobs/to-erp.d.ts.map +1 -1
  48. package/dist/services/data-sync-service/jobs/to-erp.js +45 -48
  49. package/dist/services/data-sync-service/jobs/to-erp.js.map +1 -1
  50. package/dist/services/data-sync-service/nats-labor-ticket-listener.d.ts +30 -0
  51. package/dist/services/data-sync-service/nats-labor-ticket-listener.d.ts.map +1 -0
  52. package/dist/services/erp-api-services/errors.d.ts +1 -1
  53. package/dist/services/erp-api-services/errors.d.ts.map +1 -1
  54. package/dist/services/erp-api-services/graphql/graphql-service.d.ts +2 -2
  55. package/dist/services/erp-api-services/graphql/graphql-service.d.ts.map +1 -1
  56. package/dist/services/erp-api-services/index.d.ts +8 -8
  57. package/dist/services/erp-api-services/index.d.ts.map +1 -1
  58. package/dist/services/erp-api-services/rest/rest-api-service.d.ts +2 -2
  59. package/dist/services/erp-api-services/rest/rest-api-service.d.ts.map +1 -1
  60. package/dist/services/erp-api-services/types.d.ts +2 -2
  61. package/dist/services/erp-api-services/types.d.ts.map +1 -1
  62. package/dist/services/mm-api-service/company-info.d.ts +13 -0
  63. package/dist/services/mm-api-service/company-info.d.ts.map +1 -0
  64. package/dist/services/mm-api-service/index.d.ts +13 -6
  65. package/dist/services/mm-api-service/index.d.ts.map +1 -1
  66. package/dist/services/mm-api-service/mm-api-service.d.ts +13 -7
  67. package/dist/services/mm-api-service/mm-api-service.d.ts.map +1 -1
  68. package/dist/services/mm-api-service/types/entity-transformer.d.ts +2 -2
  69. package/dist/services/mm-api-service/types/entity-transformer.d.ts.map +1 -1
  70. package/dist/services/mm-api-service/types/receive-types.d.ts +3 -0
  71. package/dist/services/mm-api-service/types/receive-types.d.ts.map +1 -1
  72. package/dist/services/nats-service/nats-service.d.ts +114 -0
  73. package/dist/services/nats-service/nats-service.d.ts.map +1 -0
  74. package/dist/services/nats-service/test-nats-subscriber.d.ts +6 -0
  75. package/dist/services/nats-service/test-nats-subscriber.d.ts.map +1 -0
  76. package/dist/services/psql-erp-service/index.d.ts +3 -3
  77. package/dist/services/psql-erp-service/index.d.ts.map +1 -1
  78. package/dist/services/psql-erp-service/psql-service.d.ts +2 -2
  79. package/dist/services/psql-erp-service/psql-service.d.ts.map +1 -1
  80. package/dist/services/reporting-service/index.d.ts +1 -1
  81. package/dist/services/reporting-service/index.d.ts.map +1 -1
  82. package/dist/services/reporting-service/logger.d.ts.map +1 -1
  83. package/dist/services/sql-server-erp-service/index.d.ts +3 -3
  84. package/dist/services/sql-server-erp-service/index.d.ts.map +1 -1
  85. package/dist/services/sql-server-erp-service/internal/sql-labor-ticket-operations.d.ts +2 -2
  86. package/dist/services/sql-server-erp-service/internal/sql-labor-ticket-operations.d.ts.map +1 -1
  87. package/dist/services/sql-server-erp-service/sql-server-helpers.d.ts +3 -3
  88. package/dist/services/sql-server-erp-service/sql-server-helpers.d.ts.map +1 -1
  89. package/dist/services/sql-server-erp-service/sql-server-service.d.ts +2 -2
  90. package/dist/services/sql-server-erp-service/sql-server-service.d.ts.map +1 -1
  91. package/dist/services/sqlite-service/index.d.ts +1 -1
  92. package/dist/services/sqlite-service/index.d.ts.map +1 -1
  93. package/dist/types/erp-connector.d.ts +1 -1
  94. package/dist/types/erp-connector.d.ts.map +1 -1
  95. package/dist/types/index.d.ts +2 -2
  96. package/dist/types/index.d.ts.map +1 -1
  97. package/dist/utils/connector-factory.d.ts +1 -1
  98. package/dist/utils/connector-factory.d.ts.map +1 -1
  99. package/dist/utils/connector-log/log-deduper.d.ts +1 -1
  100. package/dist/utils/connector-log/log-deduper.d.ts.map +1 -1
  101. package/dist/utils/connector-log/mm-connector-logger-example.d.ts +0 -1
  102. package/dist/utils/connector-log/mm-connector-logger.d.ts +1 -1
  103. package/dist/utils/connector-log/mm-connector-logger.d.ts.map +1 -1
  104. package/dist/utils/erp-type-from-entity.d.ts +1 -1
  105. package/dist/utils/erp-type-from-entity.d.ts.map +1 -1
  106. package/dist/utils/error-formatter.d.ts +19 -0
  107. package/dist/utils/error-formatter.d.ts.map +1 -0
  108. package/dist/utils/index.d.ts +38 -33
  109. package/dist/utils/index.d.ts.map +1 -1
  110. package/dist/utils/mm-labor-ticket-helpers.d.ts +1 -1
  111. package/dist/utils/mm-labor-ticket-helpers.d.ts.map +1 -1
  112. package/dist/utils/removeExtraneousFields.d.ts +1 -1
  113. package/dist/utils/removeExtraneousFields.d.ts.map +1 -1
  114. package/dist/utils/removeIdFieldFromPayload.d.ts +1 -1
  115. package/dist/utils/removeIdFieldFromPayload.d.ts.map +1 -1
  116. package/dist/utils/resource-group.d.ts +1 -1
  117. package/dist/utils/resource-group.d.ts.map +1 -1
  118. package/dist/utils/standard-process-drivers/error-processor.d.ts +3 -3
  119. package/dist/utils/standard-process-drivers/error-processor.d.ts.map +1 -1
  120. package/dist/utils/standard-process-drivers/index.d.ts +3 -3
  121. package/dist/utils/standard-process-drivers/index.d.ts.map +1 -1
  122. package/dist/utils/standard-process-drivers/labor-ticket-erp-synchronizer.d.ts +1 -1
  123. package/dist/utils/standard-process-drivers/labor-ticket-erp-synchronizer.d.ts.map +1 -1
  124. package/dist/utils/standard-process-drivers/mm-entity-processor.d.ts +4 -4
  125. package/dist/utils/standard-process-drivers/mm-entity-processor.d.ts.map +1 -1
  126. package/dist/utils/standard-process-drivers/standard-process-drivers.d.ts +4 -4
  127. package/dist/utils/standard-process-drivers/standard-process-drivers.d.ts.map +1 -1
  128. package/package.json +10 -6
  129. package/src/index.ts +45 -42
  130. package/src/knexfile.ts +0 -1
  131. package/src/services/caching-service/batch-cache-manager.ts +2 -2
  132. package/src/services/caching-service/hashed-cache-manager.ts +5 -5
  133. package/src/services/caching-service/index.ts +1 -1
  134. package/src/services/caching-service/record-tracking-manager.ts +2 -2
  135. package/src/services/data-sync-service/configuration-manager.ts +2 -2
  136. package/src/services/data-sync-service/data-sync-service.ts +19 -10
  137. package/src/services/data-sync-service/index.ts +3 -3
  138. package/src/services/data-sync-service/jobs/clean-up-expired-cache.ts +3 -3
  139. package/src/services/data-sync-service/jobs/from-erp.ts +5 -10
  140. package/src/services/data-sync-service/jobs/retry-failed-labor-tickets.ts +2 -2
  141. package/src/services/data-sync-service/jobs/run-migrations.ts +2 -2
  142. package/src/services/data-sync-service/jobs/to-erp.ts +7 -3
  143. package/src/services/data-sync-service/nats-labor-ticket-listener.ts +341 -0
  144. package/src/services/erp-api-services/errors.ts +3 -3
  145. package/src/services/erp-api-services/graphql/graphql-service.ts +5 -5
  146. package/src/services/erp-api-services/index.ts +8 -8
  147. package/src/services/erp-api-services/rest/rest-api-service.ts +4 -4
  148. package/src/services/erp-api-services/types.ts +2 -2
  149. package/src/services/mm-api-service/company-info.ts +87 -0
  150. package/src/services/mm-api-service/index.ts +14 -6
  151. package/src/services/mm-api-service/mm-api-service.ts +29 -12
  152. package/src/services/mm-api-service/token-mgr.ts +4 -4
  153. package/src/services/mm-api-service/types/entity-transformer.ts +3 -3
  154. package/src/services/mm-api-service/types/receive-types.ts +1 -0
  155. package/src/services/nats-service/nats-service.ts +351 -0
  156. package/src/services/nats-service/test-nats-subscriber.ts +96 -0
  157. package/src/services/psql-erp-service/index.ts +3 -3
  158. package/src/services/psql-erp-service/psql-service.ts +4 -4
  159. package/src/services/reporting-service/index.ts +1 -1
  160. package/src/services/reporting-service/logger.ts +81 -111
  161. package/src/services/sql-server-erp-service/index.ts +3 -3
  162. package/src/services/sql-server-erp-service/internal/sql-labor-ticket-operations.ts +2 -2
  163. package/src/services/sql-server-erp-service/internal/sql-transaction-manager.ts +1 -1
  164. package/src/services/sql-server-erp-service/sql-server-helpers.ts +6 -6
  165. package/src/services/sql-server-erp-service/sql-server-service.ts +4 -4
  166. package/src/services/sqlite-service/index.ts +1 -1
  167. package/src/services/sqlite-service/sqlite-coordinator.ts +2 -2
  168. package/src/types/erp-connector.ts +1 -1
  169. package/src/types/index.ts +2 -2
  170. package/src/utils/application-initializer.ts +5 -5
  171. package/src/utils/connector-factory.ts +2 -2
  172. package/src/utils/connector-log/log-deduper.ts +2 -2
  173. package/src/utils/connector-log/mm-connector-logger.ts +3 -3
  174. package/src/utils/erp-type-from-entity.ts +1 -1
  175. package/src/utils/error-formatter.ts +205 -0
  176. package/src/utils/http-client.ts +3 -2
  177. package/src/utils/index.ts +39 -33
  178. package/src/utils/local-data-store/database-lock.ts +1 -1
  179. package/src/utils/mm-labor-ticket-helpers.ts +2 -2
  180. package/src/utils/removeExtraneousFields.ts +1 -1
  181. package/src/utils/removeIdFieldFromPayload.ts +1 -1
  182. package/src/utils/resource-group.ts +2 -2
  183. package/src/utils/standard-process-drivers/error-processor.ts +5 -5
  184. package/src/utils/standard-process-drivers/index.ts +3 -3
  185. package/src/utils/standard-process-drivers/labor-ticket-erp-synchronizer.ts +6 -6
  186. package/src/utils/standard-process-drivers/mm-entity-processor.ts +7 -7
  187. package/src/utils/standard-process-drivers/standard-process-drivers.ts +6 -6
  188. package/src/utils/time-utils.ts +3 -3
  189. package/src/utils/timezone.ts +2 -2
  190. package/dist/index.js +0 -48
  191. package/dist/index.js.map +0 -1
  192. package/dist/knexfile.js +0 -19
  193. package/dist/knexfile.js.map +0 -1
  194. package/dist/migrations/20241015162631_create_cache_table.d.ts +0 -4
  195. package/dist/migrations/20241015162631_create_cache_table.d.ts.map +0 -1
  196. package/dist/migrations/20241015162632_create_sdk_cache_table.d.ts +0 -4
  197. package/dist/migrations/20241015162632_create_sdk_cache_table.d.ts.map +0 -1
  198. package/dist/migrations/20250103162631_create_record_tracking_table.d.ts +0 -4
  199. package/dist/migrations/20250103162631_create_record_tracking_table.d.ts.map +0 -1
  200. package/dist/services/caching-service/batch-cache-manager.js +0 -84
  201. package/dist/services/caching-service/batch-cache-manager.js.map +0 -1
  202. package/dist/services/caching-service/hashed-cache-manager.js +0 -223
  203. package/dist/services/caching-service/hashed-cache-manager.js.map +0 -1
  204. package/dist/services/caching-service/index.js +0 -2
  205. package/dist/services/caching-service/index.js.map +0 -1
  206. package/dist/services/caching-service/record-tracking-manager.js +0 -28
  207. package/dist/services/caching-service/record-tracking-manager.js.map +0 -1
  208. package/dist/services/data-sync-service/configuration-manager.js +0 -163
  209. package/dist/services/data-sync-service/configuration-manager.js.map +0 -1
  210. package/dist/services/data-sync-service/data-sync-service.js +0 -95
  211. package/dist/services/data-sync-service/data-sync-service.js.map +0 -1
  212. package/dist/services/data-sync-service/index.js +0 -10
  213. package/dist/services/data-sync-service/index.js.map +0 -1
  214. package/dist/services/erp-api-services/errors.js +0 -83
  215. package/dist/services/erp-api-services/errors.js.map +0 -1
  216. package/dist/services/erp-api-services/graphql/graphql-service.js +0 -102
  217. package/dist/services/erp-api-services/graphql/graphql-service.js.map +0 -1
  218. package/dist/services/erp-api-services/graphql/types.js +0 -6
  219. package/dist/services/erp-api-services/graphql/types.js.map +0 -1
  220. package/dist/services/erp-api-services/index.js +0 -13
  221. package/dist/services/erp-api-services/index.js.map +0 -1
  222. package/dist/services/erp-api-services/oauth-client.js +0 -41
  223. package/dist/services/erp-api-services/oauth-client.js.map +0 -1
  224. package/dist/services/erp-api-services/rest/get-query-params.js +0 -23
  225. package/dist/services/erp-api-services/rest/get-query-params.js.map +0 -1
  226. package/dist/services/erp-api-services/rest/rest-api-service.js +0 -163
  227. package/dist/services/erp-api-services/rest/rest-api-service.js.map +0 -1
  228. package/dist/services/erp-api-services/types.js +0 -2
  229. package/dist/services/erp-api-services/types.js.map +0 -1
  230. package/dist/services/mm-api-service/index.js +0 -15
  231. package/dist/services/mm-api-service/index.js.map +0 -1
  232. package/dist/services/mm-api-service/mm-api-service.js +0 -519
  233. package/dist/services/mm-api-service/mm-api-service.js.map +0 -1
  234. package/dist/services/mm-api-service/token-mgr.js +0 -113
  235. package/dist/services/mm-api-service/token-mgr.js.map +0 -1
  236. package/dist/services/mm-api-service/types/checkpoint.js +0 -2
  237. package/dist/services/mm-api-service/types/checkpoint.js.map +0 -1
  238. package/dist/services/mm-api-service/types/entity-transformer.js +0 -186
  239. package/dist/services/mm-api-service/types/entity-transformer.js.map +0 -1
  240. package/dist/services/mm-api-service/types/mm-response-interfaces.js +0 -34
  241. package/dist/services/mm-api-service/types/mm-response-interfaces.js.map +0 -1
  242. package/dist/services/mm-api-service/types/receive-types.js +0 -55
  243. package/dist/services/mm-api-service/types/receive-types.js.map +0 -1
  244. package/dist/services/mm-api-service/types/send-types.js +0 -337
  245. package/dist/services/mm-api-service/types/send-types.js.map +0 -1
  246. package/dist/services/psql-erp-service/configuration.js +0 -2
  247. package/dist/services/psql-erp-service/configuration.js.map +0 -1
  248. package/dist/services/psql-erp-service/index.js +0 -10
  249. package/dist/services/psql-erp-service/index.js.map +0 -1
  250. package/dist/services/psql-erp-service/internal/types/psql-types.js +0 -5
  251. package/dist/services/psql-erp-service/internal/types/psql-types.js.map +0 -1
  252. package/dist/services/psql-erp-service/psql-helpers.js +0 -99
  253. package/dist/services/psql-erp-service/psql-helpers.js.map +0 -1
  254. package/dist/services/psql-erp-service/psql-service.js +0 -187
  255. package/dist/services/psql-erp-service/psql-service.js.map +0 -1
  256. package/dist/services/reporting-service/index.js +0 -5
  257. package/dist/services/reporting-service/index.js.map +0 -1
  258. package/dist/services/reporting-service/logger.js +0 -217
  259. package/dist/services/reporting-service/logger.js.map +0 -1
  260. package/dist/services/sql-server-erp-service/configuration.js +0 -2
  261. package/dist/services/sql-server-erp-service/configuration.js.map +0 -1
  262. package/dist/services/sql-server-erp-service/index.js +0 -11
  263. package/dist/services/sql-server-erp-service/index.js.map +0 -1
  264. package/dist/services/sql-server-erp-service/internal/sql-labor-ticket-operations.js +0 -50
  265. package/dist/services/sql-server-erp-service/internal/sql-labor-ticket-operations.js.map +0 -1
  266. package/dist/services/sql-server-erp-service/internal/sql-server-config.js +0 -40
  267. package/dist/services/sql-server-erp-service/internal/sql-server-config.js.map +0 -1
  268. package/dist/services/sql-server-erp-service/internal/sql-transaction-manager.js +0 -36
  269. package/dist/services/sql-server-erp-service/internal/sql-transaction-manager.js.map +0 -1
  270. package/dist/services/sql-server-erp-service/internal/types/sql-server-types.js +0 -2
  271. package/dist/services/sql-server-erp-service/internal/types/sql-server-types.js.map +0 -1
  272. package/dist/services/sql-server-erp-service/sql-server-helpers.js +0 -66
  273. package/dist/services/sql-server-erp-service/sql-server-helpers.js.map +0 -1
  274. package/dist/services/sql-server-erp-service/sql-server-service.js +0 -154
  275. package/dist/services/sql-server-erp-service/sql-server-service.js.map +0 -1
  276. package/dist/services/sql-server-erp-service/types/sql-input-param.js +0 -2
  277. package/dist/services/sql-server-erp-service/types/sql-input-param.js.map +0 -1
  278. package/dist/services/sqlite-service/index.js +0 -2
  279. package/dist/services/sqlite-service/index.js.map +0 -1
  280. package/dist/services/sqlite-service/sqlite-coordinator.js +0 -60
  281. package/dist/services/sqlite-service/sqlite-coordinator.js.map +0 -1
  282. package/dist/types/erp-connector.js +0 -2
  283. package/dist/types/erp-connector.js.map +0 -1
  284. package/dist/types/erp-types.js +0 -13
  285. package/dist/types/erp-types.js.map +0 -1
  286. package/dist/types/index.js +0 -6
  287. package/dist/types/index.js.map +0 -1
  288. package/dist/utils/application-initializer.js +0 -55
  289. package/dist/utils/application-initializer.js.map +0 -1
  290. package/dist/utils/cleanup-numbers.js +0 -6
  291. package/dist/utils/cleanup-numbers.js.map +0 -1
  292. package/dist/utils/connector-factory.js +0 -34
  293. package/dist/utils/connector-factory.js.map +0 -1
  294. package/dist/utils/connector-log/log-deduper.js +0 -240
  295. package/dist/utils/connector-log/log-deduper.js.map +0 -1
  296. package/dist/utils/connector-log/mm-connector-logger-example.js +0 -88
  297. package/dist/utils/connector-log/mm-connector-logger-example.js.map +0 -1
  298. package/dist/utils/connector-log/mm-connector-logger.js +0 -151
  299. package/dist/utils/connector-log/mm-connector-logger.js.map +0 -1
  300. package/dist/utils/data-transformation.js +0 -38
  301. package/dist/utils/data-transformation.js.map +0 -1
  302. package/dist/utils/erp-type-from-entity.js +0 -6
  303. package/dist/utils/erp-type-from-entity.js.map +0 -1
  304. package/dist/utils/error-utils.js +0 -21
  305. package/dist/utils/error-utils.js.map +0 -1
  306. package/dist/utils/http-client.js +0 -186
  307. package/dist/utils/http-client.js.map +0 -1
  308. package/dist/utils/index.js +0 -65
  309. package/dist/utils/index.js.map +0 -1
  310. package/dist/utils/local-data-store/database-lock.js +0 -68
  311. package/dist/utils/local-data-store/database-lock.js.map +0 -1
  312. package/dist/utils/local-data-store/jobs-shared-data.js +0 -116
  313. package/dist/utils/local-data-store/jobs-shared-data.js.map +0 -1
  314. package/dist/utils/mm-labor-ticket-helpers.js +0 -23
  315. package/dist/utils/mm-labor-ticket-helpers.js.map +0 -1
  316. package/dist/utils/removeExtraneousFields.js +0 -16
  317. package/dist/utils/removeExtraneousFields.js.map +0 -1
  318. package/dist/utils/removeIdFieldFromPayload.js +0 -16
  319. package/dist/utils/removeIdFieldFromPayload.js.map +0 -1
  320. package/dist/utils/resource-group.js +0 -59
  321. package/dist/utils/resource-group.js.map +0 -1
  322. package/dist/utils/standard-process-drivers/error-processor.js +0 -262
  323. package/dist/utils/standard-process-drivers/error-processor.js.map +0 -1
  324. package/dist/utils/standard-process-drivers/index.js +0 -4
  325. package/dist/utils/standard-process-drivers/index.js.map +0 -1
  326. package/dist/utils/standard-process-drivers/labor-ticket-erp-synchronizer.js +0 -164
  327. package/dist/utils/standard-process-drivers/labor-ticket-erp-synchronizer.js.map +0 -1
  328. package/dist/utils/standard-process-drivers/mm-entity-processor.js +0 -168
  329. package/dist/utils/standard-process-drivers/mm-entity-processor.js.map +0 -1
  330. package/dist/utils/standard-process-drivers/standard-process-drivers.js +0 -324
  331. package/dist/utils/standard-process-drivers/standard-process-drivers.js.map +0 -1
  332. package/dist/utils/time-utils.js +0 -96
  333. package/dist/utils/time-utils.js.map +0 -1
  334. package/dist/utils/timezone.js +0 -105
  335. package/dist/utils/timezone.js.map +0 -1
  336. package/dist/utils/trimObjectValues.js +0 -11
  337. package/dist/utils/trimObjectValues.js.map +0 -1
  338. package/dist/utils/uniqueRows.js +0 -35
  339. package/dist/utils/uniqueRows.js.map +0 -1
@@ -1,240 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"log-deduper.js","sourceRoot":"","sources":["../../../src/utils/connector-log/log-deduper.ts"],"names":[],"mappings":"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"}
@@ -1,88 +0,0 @@
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
@@ -1 +0,0 @@
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,151 +0,0 @@
1
- import { MMApiClient } from '../../services/mm-api-service/mm-api-service.js';
2
- import logger from '../../services/reporting-service/logger.js';
3
- /**
4
- * dedupeKey - key used to deduplicate log entries when a LogDeduper is injected into the MMConnectorLogger
5
- *
6
- * A recommended practice is to use a meaningful unique identifier for this log entry type.
7
- * Examples: SyncFromERPCompleted
8
- * SyncFromERPError:HTTPError
9
- */
10
- export class LogEntry {
11
- level;
12
- message;
13
- dedupeKey;
14
- eventTime;
15
- constructor(params) {
16
- this.level = params.level;
17
- this.message = params.message;
18
- this.dedupeKey = params.dedupeKey;
19
- this.eventTime = Date.now();
20
- }
21
- }
22
- /**
23
- * Helper function to check if a value is a LogResponse
24
- */
25
- function isLogResponse(value) {
26
- if (value === null || typeof value !== 'object')
27
- return false;
28
- const v = value;
29
- if (typeof v.message !== 'string')
30
- return false;
31
- if ('processed' in v && typeof v.processed !== 'number')
32
- return false;
33
- return true;
34
- }
35
- /**
36
- * MM Connector Logger for sending progress and error updates to the MM cloud
37
- *
38
- * This class provides helper methods to send individual logs to the
39
- * MM connector logging API, providing support for validation, retries, and error handling
40
- * according to the API specification.
41
- *
42
- * By injecting a LogDeduper, the log entries are deduplicated across jobs over a specified time window
43
- */
44
- export class MMConnectorLogger {
45
- MAX_MSG_LEN = 2000;
46
- mmApiClient;
47
- deduper;
48
- source;
49
- constructor(source, deduper) {
50
- if (source.length < 1 || source.length > 64) {
51
- throw new Error('source must be 1-64 characters');
52
- }
53
- this.mmApiClient = new MMApiClient();
54
- this.deduper = deduper;
55
- this.source = source;
56
- }
57
- // Deduplication helpers are delegated to injected FileLogDeduper
58
- /**
59
- * Send a single log entry to the MM cloud with deduplication.
60
- *
61
- * The deduplication is handled by the injected LogDeduper.
62
- * If no deduper is injected, the log entry is sent without deduplication.
63
- *
64
- * The standard deduper, FileLogDeduper, stores the deduplication state in a file,
65
- * allowing deduplication across jobs,
66
- *
67
- * @param logEntry - The log entry to send
68
- * @returns Promise resolving to the API response or null if suppressed
69
- * @throws HTTPError if the request fails or Error if the log entry is invalid
70
- */
71
- async sendLog(logEntry) {
72
- this.validateLogEntry(logEntry);
73
- const now = Date.now();
74
- let messageToSend = logEntry.message;
75
- if (this.deduper) {
76
- const decision = await this.deduper.decide(logEntry, now);
77
- if (decision === null)
78
- return null; // suppressed
79
- messageToSend = decision;
80
- }
81
- try {
82
- const logEntryToSend = {
83
- source: this.source,
84
- level: logEntry.level,
85
- message: messageToSend
86
- };
87
- const response = await this.mmApiClient.sendConnectorLog(logEntryToSend);
88
- if (this.deduper) {
89
- await this.deduper.onSuccess(logEntry, now);
90
- }
91
- if (!isLogResponse(response)) {
92
- logger.warn('Unexpected success response format from MM API for connector log', { response });
93
- return { message: 'Unexpected success response format when sending log' };
94
- }
95
- return { message: response.message };
96
- }
97
- catch (error) {
98
- logger.error('Failed to send log to MM cloud', {
99
- level: logEntry.level,
100
- error: error instanceof Error ? error.message : 'Unknown error'
101
- });
102
- throw error;
103
- }
104
- }
105
- /**
106
- * @throws Error if validation fails
107
- */
108
- validateLogEntry(logEntry) {
109
- const allowedLevels = ['info', 'warn', 'error'];
110
- if (!logEntry.level || !allowedLevels.includes(logEntry.level)) {
111
- throw new Error(`level must be one of: ${allowedLevels.join(', ')}`);
112
- }
113
- if (!logEntry.message || typeof logEntry.message !== 'string') {
114
- throw new Error('message is required and must be a string');
115
- }
116
- // Truncate message to MAX_MSG_LEN characters
117
- logEntry.message = logEntry.message.slice(0, this.MAX_MSG_LEN);
118
- if (!logEntry.dedupeKey || typeof logEntry.dedupeKey !== 'string') {
119
- throw new Error('dedupeKey is required and must be a string');
120
- }
121
- if (logEntry.dedupeKey.trim().length < 1) {
122
- throw new Error('dedupeKey must be a non-empty string');
123
- }
124
- }
125
- /**
126
- * Retry all failed transmissions silently
127
- * This method attempts to retry all messages that failed to transmit
128
- * and removes them from the failed list if successful, else leaves them for the client to retry
129
- *
130
- * Expected usage is by a client to call this as part of its own retry mechanism
131
- */
132
- async retryFailedTransmissions() {
133
- if (!this.deduper || !this.deduper.retryFailedTransmissions) {
134
- return;
135
- }
136
- await this.deduper.retryFailedTransmissions(async (entry, message) => {
137
- await this.mmApiClient.sendConnectorLog({
138
- source: this.source,
139
- level: entry.level,
140
- message
141
- });
142
- });
143
- }
144
- /**
145
- * Clean up resources
146
- */
147
- async destroy() {
148
- await this.mmApiClient.destroy();
149
- }
150
- }
151
- //# sourceMappingURL=mm-connector-logger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mm-connector-logger.js","sourceRoot":"","sources":["../../../src/utils/connector-log/mm-connector-logger.ts"],"names":[],"mappings":"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"}
@@ -1,38 +0,0 @@
1
- /**
2
- * Add a new field to the data from an external source by matching on the same field name
3
- * @param data The data to add the new field to
4
- * @param externalSource The external source to get the new field from
5
- * @param externalSourceFieldName The field in both data and external source to match on
6
- * @param newFieldName The name of the new field to add
7
- * @param defaultValue The default value to use if there is no match
8
- */
9
- export const addNewFieldFromExternalSource = (data, externalSource, externalSourceFieldName, newFieldName, defaultValue = "-") => {
10
- return data.map((current) => {
11
- const cacheEntry = externalSource.find((existing) => existing[externalSourceFieldName] === current[externalSourceFieldName]);
12
- const newFieldValue = cacheEntry?.[newFieldName] || defaultValue;
13
- return {
14
- ...current,
15
- [newFieldName]: newFieldValue,
16
- };
17
- });
18
- };
19
- /**
20
- * Add a new field to the data from an external source by matching on different field names
21
- * @param data The data to add the new field to
22
- * @param externalSource The external source to get the new field from
23
- * @param lookupField The field in the external source to match on
24
- * @param currentField The field in the current data to match on
25
- * @param newFieldName The name of the new field to add
26
- * @param defaultValue The default value to use if there is no match
27
- */
28
- export const addNewFieldFromLookupField = (data, externalSource, lookupField, currentField, newFieldName, defaultValue = "-") => {
29
- return data.map((current) => {
30
- const cacheEntry = externalSource.find((existing) => existing[lookupField] === current[currentField]);
31
- const newFieldValue = cacheEntry?.[currentField] || defaultValue;
32
- return {
33
- ...current,
34
- [newFieldName]: newFieldValue,
35
- };
36
- });
37
- };
38
- //# sourceMappingURL=data-transformation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"data-transformation.js","sourceRoot":"","sources":["../../src/utils/data-transformation.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAC3C,IAA8B,EAC9B,cAAwC,EACxC,uBAA+B,EAC/B,YAAoB,EACpB,eAAuB,GAAG,EACA,EAAE;IAC5B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QAC1B,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CACpC,CAAC,QAAQ,EAAE,EAAE,CACX,QAAQ,CAAC,uBAAuB,CAAC,KAAK,OAAO,CAAC,uBAAuB,CAAC,CACzE,CAAC;QACF,MAAM,aAAa,GAAG,UAAU,EAAE,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC;QAEjE,OAAO;YACL,GAAG,OAAO;YACV,CAAC,YAAY,CAAC,EAAE,aAAa;SAC9B,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,IAA8B,EAC9B,cAAwC,EACxC,WAAmB,EACnB,YAAoB,EACpB,YAAoB,EACpB,eAAuB,GAAG,EACA,EAAE;IAC5B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QAC1B,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CACpC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,OAAO,CAAC,YAAY,CAAC,CAC9D,CAAC;QACF,MAAM,aAAa,GAAG,UAAU,EAAE,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC;QAEjE,OAAO;YACL,GAAG,OAAO;YACV,CAAC,YAAY,CAAC,EAAE,aAAa;SAC9B,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -1,6 +0,0 @@
1
- export function getERPAPITypeFromEntity(entity, entityMap) {
2
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
3
- const entry = Object.entries(entityMap).find(([_, value]) => value.entity === entity);
4
- return entry ? Number(entry[0]) : undefined;
5
- }
6
- //# sourceMappingURL=erp-type-from-entity.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"erp-type-from-entity.js","sourceRoot":"","sources":["../../src/utils/erp-type-from-entity.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,uBAAuB,CACrC,MAAc,EACd,SAAiD;IAEjD,6DAA6D;IAC7D,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAC1C,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CACxC,CAAC;IACF,OAAO,KAAK,CAAC,CAAC,CAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9D,CAAC"}
@@ -1,21 +0,0 @@
1
- /** A utility to get the type of an error, particularly
2
- * useful for the purpose of error deduplication
3
- *
4
- * Note: prefers 'code' over 'name' in the expectation that this better
5
- * represents the error type
6
- */
7
- const isNonEmptyString = (v) => typeof v === 'string' && v.trim().length > 0;
8
- export function getErrorType(error) {
9
- if (error && typeof error === 'object') {
10
- const o = error;
11
- if (isNonEmptyString(o.code))
12
- return o.code;
13
- if (isNonEmptyString(o.name))
14
- return o.name;
15
- const ctorName = o.constructor?.name;
16
- if (isNonEmptyString(ctorName) && ctorName !== 'Object')
17
- return ctorName;
18
- }
19
- return 'Error';
20
- }
21
- //# sourceMappingURL=error-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"error-utils.js","sourceRoot":"","sources":["../../src/utils/error-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,gBAAgB,GAAG,CAAC,CAAU,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAEnG,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,KAA6E,CAAC;QACxF,IAAI,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC,IAAI,CAAC;QAC5C,IAAI,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC,IAAI,CAAC;QAC5C,MAAM,QAAQ,GAAG,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC;QACrC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,IAAI,QAAQ,KAAK,QAAQ;YAAE,OAAO,QAAQ,CAAC;IAC3E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}