@machinemetrics/mm-erp-sdk 0.2.0-beta.0 → 0.2.0-beta.2
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.
- package/README.md +0 -5
- package/dist/config-CvA-mFWF.js +418 -0
- package/dist/config-CvA-mFWF.js.map +1 -0
- package/dist/connector-factory-BPm2GVVF.js +30 -0
- package/dist/connector-factory-BPm2GVVF.js.map +1 -0
- package/dist/hashed-cache-manager-B15NN8hK.js +322 -0
- package/dist/hashed-cache-manager-B15NN8hK.js.map +1 -0
- package/dist/index-D8qO1NyK.js +192 -0
- package/dist/index-D8qO1NyK.js.map +1 -0
- package/dist/index.d.ts +43 -42
- package/dist/index.d.ts.map +1 -1
- package/dist/knexfile-Bng2Ru9c.js +20 -0
- package/dist/knexfile-Bng2Ru9c.js.map +1 -0
- package/dist/knexfile.d.ts.map +1 -1
- package/dist/logger-BWw0_z9q.js +17557 -0
- package/dist/logger-BWw0_z9q.js.map +1 -0
- package/dist/migrations/20241015162631_create_cache_table.js +15 -11
- package/dist/migrations/20241015162631_create_cache_table.js.map +1 -1
- package/dist/migrations/20241015162632_create_sdk_cache_table.js +15 -11
- package/dist/migrations/20241015162632_create_sdk_cache_table.js.map +1 -1
- package/dist/migrations/20250103162631_create_record_tracking_table.js +15 -14
- package/dist/migrations/20250103162631_create_record_tracking_table.js.map +1 -1
- package/dist/mm-erp-sdk.js +4978 -0
- package/dist/mm-erp-sdk.js.map +1 -0
- package/dist/services/caching-service/batch-cache-manager.d.ts +1 -1
- package/dist/services/caching-service/batch-cache-manager.d.ts.map +1 -1
- package/dist/services/caching-service/hashed-cache-manager.d.ts +2 -2
- package/dist/services/caching-service/hashed-cache-manager.d.ts.map +1 -1
- package/dist/services/caching-service/index.d.ts +1 -1
- package/dist/services/caching-service/index.d.ts.map +1 -1
- package/dist/services/caching-service/record-tracking-manager.d.ts +1 -1
- package/dist/services/caching-service/record-tracking-manager.d.ts.map +1 -1
- package/dist/services/data-sync-service/configuration-manager.d.ts +1 -1
- package/dist/services/data-sync-service/configuration-manager.d.ts.map +1 -1
- package/dist/services/data-sync-service/data-sync-service.d.ts.map +1 -1
- package/dist/services/data-sync-service/index.d.ts +3 -3
- package/dist/services/data-sync-service/index.d.ts.map +1 -1
- package/dist/services/data-sync-service/jobs/clean-up-expired-cache.d.ts.map +1 -1
- package/dist/services/data-sync-service/jobs/clean-up-expired-cache.js +40 -42
- package/dist/services/data-sync-service/jobs/clean-up-expired-cache.js.map +1 -1
- package/dist/services/data-sync-service/jobs/from-erp.d.ts.map +1 -1
- package/dist/services/data-sync-service/jobs/from-erp.js +37 -50
- package/dist/services/data-sync-service/jobs/from-erp.js.map +1 -1
- package/dist/services/data-sync-service/jobs/retry-failed-labor-tickets.d.ts.map +1 -1
- package/dist/services/data-sync-service/jobs/retry-failed-labor-tickets.js +36 -38
- package/dist/services/data-sync-service/jobs/retry-failed-labor-tickets.js.map +1 -1
- package/dist/services/data-sync-service/jobs/run-migrations.d.ts.map +1 -1
- package/dist/services/data-sync-service/jobs/run-migrations.js +22 -24
- package/dist/services/data-sync-service/jobs/run-migrations.js.map +1 -1
- package/dist/services/data-sync-service/jobs/to-erp.d.ts.map +1 -1
- package/dist/services/data-sync-service/jobs/to-erp.js +49 -49
- package/dist/services/data-sync-service/jobs/to-erp.js.map +1 -1
- package/dist/services/data-sync-service/nats-labor-ticket-listener.d.ts +30 -0
- package/dist/services/data-sync-service/nats-labor-ticket-listener.d.ts.map +1 -0
- package/dist/services/erp-api-services/errors.d.ts +1 -1
- package/dist/services/erp-api-services/errors.d.ts.map +1 -1
- package/dist/services/erp-api-services/graphql/graphql-service.d.ts +2 -2
- package/dist/services/erp-api-services/graphql/graphql-service.d.ts.map +1 -1
- package/dist/services/erp-api-services/index.d.ts +8 -8
- package/dist/services/erp-api-services/index.d.ts.map +1 -1
- package/dist/services/erp-api-services/rest/rest-api-service.d.ts +2 -2
- package/dist/services/erp-api-services/rest/rest-api-service.d.ts.map +1 -1
- package/dist/services/erp-api-services/types.d.ts +2 -2
- package/dist/services/erp-api-services/types.d.ts.map +1 -1
- package/dist/services/mm-api-service/company-info.d.ts +13 -0
- package/dist/services/mm-api-service/company-info.d.ts.map +1 -0
- package/dist/services/mm-api-service/index.d.ts +13 -6
- package/dist/services/mm-api-service/index.d.ts.map +1 -1
- package/dist/services/mm-api-service/mm-api-service.d.ts +13 -7
- package/dist/services/mm-api-service/mm-api-service.d.ts.map +1 -1
- package/dist/services/mm-api-service/types/entity-transformer.d.ts +2 -2
- package/dist/services/mm-api-service/types/entity-transformer.d.ts.map +1 -1
- package/dist/services/mm-api-service/types/receive-types.d.ts +3 -0
- package/dist/services/mm-api-service/types/receive-types.d.ts.map +1 -1
- package/dist/services/nats-service/nats-service.d.ts +114 -0
- package/dist/services/nats-service/nats-service.d.ts.map +1 -0
- package/dist/services/nats-service/test-nats-subscriber.d.ts +6 -0
- package/dist/services/nats-service/test-nats-subscriber.d.ts.map +1 -0
- package/dist/services/psql-erp-service/index.d.ts +3 -3
- package/dist/services/psql-erp-service/index.d.ts.map +1 -1
- package/dist/services/psql-erp-service/psql-service.d.ts +2 -2
- package/dist/services/psql-erp-service/psql-service.d.ts.map +1 -1
- package/dist/services/reporting-service/index.d.ts +1 -1
- package/dist/services/reporting-service/index.d.ts.map +1 -1
- package/dist/services/reporting-service/logger.d.ts.map +1 -1
- package/dist/services/sql-server-erp-service/index.d.ts +3 -3
- package/dist/services/sql-server-erp-service/index.d.ts.map +1 -1
- package/dist/services/sql-server-erp-service/internal/sql-labor-ticket-operations.d.ts +2 -2
- package/dist/services/sql-server-erp-service/internal/sql-labor-ticket-operations.d.ts.map +1 -1
- package/dist/services/sql-server-erp-service/sql-server-helpers.d.ts +3 -3
- package/dist/services/sql-server-erp-service/sql-server-helpers.d.ts.map +1 -1
- package/dist/services/sql-server-erp-service/sql-server-service.d.ts +2 -2
- package/dist/services/sql-server-erp-service/sql-server-service.d.ts.map +1 -1
- package/dist/services/sqlite-service/index.d.ts +1 -1
- package/dist/services/sqlite-service/index.d.ts.map +1 -1
- package/dist/types/erp-connector.d.ts +2 -9
- package/dist/types/erp-connector.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/connector-factory.d.ts +1 -1
- package/dist/utils/connector-factory.d.ts.map +1 -1
- package/dist/utils/connector-log/log-deduper.d.ts +1 -1
- package/dist/utils/connector-log/log-deduper.d.ts.map +1 -1
- package/dist/utils/connector-log/mm-connector-logger-example.d.ts +0 -1
- package/dist/utils/connector-log/mm-connector-logger.d.ts +1 -1
- package/dist/utils/connector-log/mm-connector-logger.d.ts.map +1 -1
- package/dist/utils/erp-type-from-entity.d.ts +1 -1
- package/dist/utils/erp-type-from-entity.d.ts.map +1 -1
- package/dist/utils/error-formatter.d.ts +19 -0
- package/dist/utils/error-formatter.d.ts.map +1 -0
- package/dist/utils/index.d.ts +38 -34
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/local-data-store/jobs-shared-data.d.ts +0 -2
- package/dist/utils/local-data-store/jobs-shared-data.d.ts.map +1 -1
- package/dist/utils/mm-labor-ticket-helpers.d.ts +5 -4
- package/dist/utils/mm-labor-ticket-helpers.d.ts.map +1 -1
- package/dist/utils/removeExtraneousFields.d.ts +1 -1
- package/dist/utils/removeExtraneousFields.d.ts.map +1 -1
- package/dist/utils/removeIdFieldFromPayload.d.ts +1 -1
- package/dist/utils/removeIdFieldFromPayload.d.ts.map +1 -1
- package/dist/utils/resource-group.d.ts +1 -1
- package/dist/utils/resource-group.d.ts.map +1 -1
- package/dist/utils/standard-process-drivers/error-processor.d.ts +3 -3
- package/dist/utils/standard-process-drivers/error-processor.d.ts.map +1 -1
- package/dist/utils/standard-process-drivers/index.d.ts +3 -3
- package/dist/utils/standard-process-drivers/index.d.ts.map +1 -1
- package/dist/utils/standard-process-drivers/labor-ticket-erp-synchronizer.d.ts +1 -1
- package/dist/utils/standard-process-drivers/labor-ticket-erp-synchronizer.d.ts.map +1 -1
- package/dist/utils/standard-process-drivers/mm-entity-processor.d.ts +5 -11
- package/dist/utils/standard-process-drivers/mm-entity-processor.d.ts.map +1 -1
- package/dist/utils/standard-process-drivers/standard-process-drivers.d.ts +6 -12
- package/dist/utils/standard-process-drivers/standard-process-drivers.d.ts.map +1 -1
- package/dist/utils/time-utils.d.ts.map +1 -1
- package/package.json +10 -8
- package/src/index.ts +45 -42
- package/src/knexfile.ts +0 -1
- package/src/services/caching-service/batch-cache-manager.ts +2 -2
- package/src/services/caching-service/hashed-cache-manager.ts +5 -5
- package/src/services/caching-service/index.ts +1 -1
- package/src/services/caching-service/record-tracking-manager.ts +2 -2
- package/src/services/data-sync-service/configuration-manager.ts +39 -52
- package/src/services/data-sync-service/data-sync-service.ts +19 -10
- package/src/services/data-sync-service/index.ts +3 -3
- package/src/services/data-sync-service/jobs/clean-up-expired-cache.ts +4 -5
- package/src/services/data-sync-service/jobs/from-erp.ts +6 -12
- package/src/services/data-sync-service/jobs/retry-failed-labor-tickets.ts +3 -4
- package/src/services/data-sync-service/jobs/run-migrations.ts +3 -4
- package/src/services/data-sync-service/jobs/to-erp.ts +14 -5
- package/src/services/data-sync-service/nats-labor-ticket-listener.ts +341 -0
- package/src/services/erp-api-services/errors.ts +3 -3
- package/src/services/erp-api-services/graphql/graphql-service.ts +5 -5
- package/src/services/erp-api-services/index.ts +8 -8
- package/src/services/erp-api-services/rest/rest-api-service.ts +4 -4
- package/src/services/erp-api-services/types.ts +2 -2
- package/src/services/mm-api-service/company-info.ts +87 -0
- package/src/services/mm-api-service/index.ts +14 -6
- package/src/services/mm-api-service/mm-api-service.ts +30 -13
- package/src/services/mm-api-service/token-mgr.ts +4 -4
- package/src/services/mm-api-service/types/entity-transformer.ts +3 -3
- package/src/services/mm-api-service/types/receive-types.ts +1 -0
- package/src/services/nats-service/nats-service.ts +351 -0
- package/src/services/nats-service/test-nats-subscriber.ts +96 -0
- package/src/services/psql-erp-service/index.ts +3 -3
- package/src/services/psql-erp-service/psql-service.ts +4 -4
- package/src/services/reporting-service/index.ts +1 -1
- package/src/services/reporting-service/logger.ts +81 -116
- package/src/services/sql-server-erp-service/index.ts +3 -3
- package/src/services/sql-server-erp-service/internal/sql-labor-ticket-operations.ts +2 -2
- package/src/services/sql-server-erp-service/internal/sql-transaction-manager.ts +1 -1
- package/src/services/sql-server-erp-service/sql-server-helpers.ts +6 -6
- package/src/services/sql-server-erp-service/sql-server-service.ts +4 -4
- package/src/services/sqlite-service/index.ts +1 -1
- package/src/services/sqlite-service/sqlite-coordinator.ts +2 -2
- package/src/types/erp-connector.ts +2 -9
- package/src/types/index.ts +2 -10
- package/src/utils/application-initializer.ts +5 -5
- package/src/utils/connector-factory.ts +2 -2
- package/src/utils/connector-log/log-deduper.ts +2 -2
- package/src/utils/connector-log/mm-connector-logger.ts +3 -3
- package/src/utils/erp-type-from-entity.ts +1 -1
- package/src/utils/error-formatter.ts +205 -0
- package/src/utils/http-client.ts +3 -2
- package/src/utils/index.ts +39 -38
- package/src/utils/local-data-store/database-lock.ts +1 -1
- package/src/utils/local-data-store/jobs-shared-data.ts +0 -2
- package/src/utils/mm-labor-ticket-helpers.ts +9 -12
- package/src/utils/removeExtraneousFields.ts +1 -1
- package/src/utils/removeIdFieldFromPayload.ts +1 -1
- package/src/utils/resource-group.ts +2 -2
- package/src/utils/standard-process-drivers/error-processor.ts +5 -5
- package/src/utils/standard-process-drivers/index.ts +3 -3
- package/src/utils/standard-process-drivers/labor-ticket-erp-synchronizer.ts +12 -16
- package/src/utils/standard-process-drivers/mm-entity-processor.ts +8 -14
- package/src/utils/standard-process-drivers/standard-process-drivers.ts +25 -39
- package/src/utils/time-utils.ts +3 -14
- package/src/utils/timezone.ts +2 -2
- package/dist/index.js +0 -48
- package/dist/index.js.map +0 -1
- package/dist/knexfile.js +0 -19
- package/dist/knexfile.js.map +0 -1
- package/dist/migrations/20241015162631_create_cache_table.d.ts +0 -4
- package/dist/migrations/20241015162631_create_cache_table.d.ts.map +0 -1
- package/dist/migrations/20241015162632_create_sdk_cache_table.d.ts +0 -4
- package/dist/migrations/20241015162632_create_sdk_cache_table.d.ts.map +0 -1
- package/dist/migrations/20250103162631_create_record_tracking_table.d.ts +0 -4
- package/dist/migrations/20250103162631_create_record_tracking_table.d.ts.map +0 -1
- package/dist/services/caching-service/batch-cache-manager.js +0 -84
- package/dist/services/caching-service/batch-cache-manager.js.map +0 -1
- package/dist/services/caching-service/hashed-cache-manager.js +0 -223
- package/dist/services/caching-service/hashed-cache-manager.js.map +0 -1
- package/dist/services/caching-service/index.js +0 -2
- package/dist/services/caching-service/index.js.map +0 -1
- package/dist/services/caching-service/record-tracking-manager.js +0 -28
- package/dist/services/caching-service/record-tracking-manager.js.map +0 -1
- package/dist/services/data-sync-service/configuration-manager.js +0 -163
- package/dist/services/data-sync-service/configuration-manager.js.map +0 -1
- package/dist/services/data-sync-service/data-sync-service.js +0 -95
- package/dist/services/data-sync-service/data-sync-service.js.map +0 -1
- package/dist/services/data-sync-service/index.js +0 -10
- package/dist/services/data-sync-service/index.js.map +0 -1
- package/dist/services/erp-api-services/errors.js +0 -83
- package/dist/services/erp-api-services/errors.js.map +0 -1
- package/dist/services/erp-api-services/graphql/graphql-service.js +0 -102
- package/dist/services/erp-api-services/graphql/graphql-service.js.map +0 -1
- package/dist/services/erp-api-services/graphql/types.js +0 -6
- package/dist/services/erp-api-services/graphql/types.js.map +0 -1
- package/dist/services/erp-api-services/index.js +0 -13
- package/dist/services/erp-api-services/index.js.map +0 -1
- package/dist/services/erp-api-services/oauth-client.js +0 -41
- package/dist/services/erp-api-services/oauth-client.js.map +0 -1
- package/dist/services/erp-api-services/rest/get-query-params.js +0 -23
- package/dist/services/erp-api-services/rest/get-query-params.js.map +0 -1
- package/dist/services/erp-api-services/rest/rest-api-service.js +0 -163
- package/dist/services/erp-api-services/rest/rest-api-service.js.map +0 -1
- package/dist/services/erp-api-services/types.js +0 -2
- package/dist/services/erp-api-services/types.js.map +0 -1
- package/dist/services/mm-api-service/index.js +0 -15
- package/dist/services/mm-api-service/index.js.map +0 -1
- package/dist/services/mm-api-service/mm-api-service.js +0 -519
- package/dist/services/mm-api-service/mm-api-service.js.map +0 -1
- package/dist/services/mm-api-service/token-mgr.js +0 -113
- package/dist/services/mm-api-service/token-mgr.js.map +0 -1
- package/dist/services/mm-api-service/types/checkpoint.js +0 -2
- package/dist/services/mm-api-service/types/checkpoint.js.map +0 -1
- package/dist/services/mm-api-service/types/entity-transformer.js +0 -186
- package/dist/services/mm-api-service/types/entity-transformer.js.map +0 -1
- package/dist/services/mm-api-service/types/mm-response-interfaces.js +0 -34
- package/dist/services/mm-api-service/types/mm-response-interfaces.js.map +0 -1
- package/dist/services/mm-api-service/types/receive-types.js +0 -55
- package/dist/services/mm-api-service/types/receive-types.js.map +0 -1
- package/dist/services/mm-api-service/types/send-types.js +0 -337
- package/dist/services/mm-api-service/types/send-types.js.map +0 -1
- package/dist/services/psql-erp-service/configuration.js +0 -2
- package/dist/services/psql-erp-service/configuration.js.map +0 -1
- package/dist/services/psql-erp-service/index.js +0 -10
- package/dist/services/psql-erp-service/index.js.map +0 -1
- package/dist/services/psql-erp-service/internal/types/psql-types.js +0 -5
- package/dist/services/psql-erp-service/internal/types/psql-types.js.map +0 -1
- package/dist/services/psql-erp-service/psql-helpers.js +0 -99
- package/dist/services/psql-erp-service/psql-helpers.js.map +0 -1
- package/dist/services/psql-erp-service/psql-service.js +0 -187
- package/dist/services/psql-erp-service/psql-service.js.map +0 -1
- package/dist/services/reporting-service/index.js +0 -5
- package/dist/services/reporting-service/index.js.map +0 -1
- package/dist/services/reporting-service/logger.js +0 -221
- package/dist/services/reporting-service/logger.js.map +0 -1
- package/dist/services/sql-server-erp-service/configuration.js +0 -2
- package/dist/services/sql-server-erp-service/configuration.js.map +0 -1
- package/dist/services/sql-server-erp-service/index.js +0 -11
- package/dist/services/sql-server-erp-service/index.js.map +0 -1
- package/dist/services/sql-server-erp-service/internal/sql-labor-ticket-operations.js +0 -50
- package/dist/services/sql-server-erp-service/internal/sql-labor-ticket-operations.js.map +0 -1
- package/dist/services/sql-server-erp-service/internal/sql-server-config.js +0 -40
- package/dist/services/sql-server-erp-service/internal/sql-server-config.js.map +0 -1
- package/dist/services/sql-server-erp-service/internal/sql-transaction-manager.js +0 -36
- package/dist/services/sql-server-erp-service/internal/sql-transaction-manager.js.map +0 -1
- package/dist/services/sql-server-erp-service/internal/types/sql-server-types.js +0 -2
- package/dist/services/sql-server-erp-service/internal/types/sql-server-types.js.map +0 -1
- package/dist/services/sql-server-erp-service/sql-server-helpers.js +0 -66
- package/dist/services/sql-server-erp-service/sql-server-helpers.js.map +0 -1
- package/dist/services/sql-server-erp-service/sql-server-service.js +0 -154
- package/dist/services/sql-server-erp-service/sql-server-service.js.map +0 -1
- package/dist/services/sql-server-erp-service/types/sql-input-param.js +0 -2
- package/dist/services/sql-server-erp-service/types/sql-input-param.js.map +0 -1
- package/dist/services/sqlite-service/index.js +0 -2
- package/dist/services/sqlite-service/index.js.map +0 -1
- package/dist/services/sqlite-service/sqlite-coordinator.js +0 -60
- package/dist/services/sqlite-service/sqlite-coordinator.js.map +0 -1
- package/dist/types/erp-connector.js +0 -2
- package/dist/types/erp-connector.js.map +0 -1
- package/dist/types/erp-types.js +0 -13
- package/dist/types/erp-types.js.map +0 -1
- package/dist/types/flattened-work-order.d.ts +0 -99
- package/dist/types/flattened-work-order.d.ts.map +0 -1
- package/dist/types/flattened-work-order.js +0 -2
- package/dist/types/flattened-work-order.js.map +0 -1
- package/dist/types/index.js +0 -6
- package/dist/types/index.js.map +0 -1
- package/dist/utils/application-initializer.js +0 -55
- package/dist/utils/application-initializer.js.map +0 -1
- package/dist/utils/cleanup-numbers.js +0 -6
- package/dist/utils/cleanup-numbers.js.map +0 -1
- package/dist/utils/connector-factory.js +0 -34
- package/dist/utils/connector-factory.js.map +0 -1
- package/dist/utils/connector-log/log-deduper.js +0 -240
- package/dist/utils/connector-log/log-deduper.js.map +0 -1
- package/dist/utils/connector-log/mm-connector-logger-example.js +0 -88
- package/dist/utils/connector-log/mm-connector-logger-example.js.map +0 -1
- package/dist/utils/connector-log/mm-connector-logger.js +0 -151
- package/dist/utils/connector-log/mm-connector-logger.js.map +0 -1
- package/dist/utils/data-transformation.js +0 -38
- package/dist/utils/data-transformation.js.map +0 -1
- package/dist/utils/env.d.ts +0 -8
- package/dist/utils/env.d.ts.map +0 -1
- package/dist/utils/env.js +0 -58
- package/dist/utils/env.js.map +0 -1
- package/dist/utils/erp-timezone-utils.d.ts +0 -20
- package/dist/utils/erp-timezone-utils.d.ts.map +0 -1
- package/dist/utils/erp-timezone-utils.js +0 -75
- package/dist/utils/erp-timezone-utils.js.map +0 -1
- package/dist/utils/erp-type-from-entity.js +0 -6
- package/dist/utils/erp-type-from-entity.js.map +0 -1
- package/dist/utils/error-utils.js +0 -21
- package/dist/utils/error-utils.js.map +0 -1
- package/dist/utils/http-client.js +0 -186
- package/dist/utils/http-client.js.map +0 -1
- package/dist/utils/index.js +0 -66
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/local-data-store/database-lock.js +0 -68
- package/dist/utils/local-data-store/database-lock.js.map +0 -1
- package/dist/utils/local-data-store/jobs-shared-data.js +0 -118
- package/dist/utils/local-data-store/jobs-shared-data.js.map +0 -1
- package/dist/utils/mm-labor-ticket-helpers.js +0 -28
- package/dist/utils/mm-labor-ticket-helpers.js.map +0 -1
- package/dist/utils/removeExtraneousFields.js +0 -16
- package/dist/utils/removeExtraneousFields.js.map +0 -1
- package/dist/utils/removeIdFieldFromPayload.js +0 -16
- package/dist/utils/removeIdFieldFromPayload.js.map +0 -1
- package/dist/utils/resource-group.js +0 -59
- package/dist/utils/resource-group.js.map +0 -1
- package/dist/utils/standard-process-drivers/error-processor.js +0 -262
- package/dist/utils/standard-process-drivers/error-processor.js.map +0 -1
- package/dist/utils/standard-process-drivers/index.js +0 -4
- package/dist/utils/standard-process-drivers/index.js.map +0 -1
- package/dist/utils/standard-process-drivers/labor-ticket-erp-synchronizer.js +0 -173
- package/dist/utils/standard-process-drivers/labor-ticket-erp-synchronizer.js.map +0 -1
- package/dist/utils/standard-process-drivers/mm-entity-processor.js +0 -174
- package/dist/utils/standard-process-drivers/mm-entity-processor.js.map +0 -1
- package/dist/utils/standard-process-drivers/standard-process-drivers.js +0 -333
- package/dist/utils/standard-process-drivers/standard-process-drivers.js.map +0 -1
- package/dist/utils/time-utils.js +0 -103
- package/dist/utils/time-utils.js.map +0 -1
- package/dist/utils/timezone.js +0 -105
- package/dist/utils/timezone.js.map +0 -1
- package/dist/utils/trimObjectValues.js +0 -11
- package/dist/utils/trimObjectValues.js.map +0 -1
- package/dist/utils/uniqueRows.js +0 -35
- package/dist/utils/uniqueRows.js.map +0 -1
- package/src/types/flattened-work-order.ts +0 -108
- package/src/utils/env.ts +0 -75
- package/src/utils/erp-timezone-utils.ts +0 -99
|
@@ -42,6 +42,7 @@ export class MMReceiveLaborTicket {
|
|
|
42
42
|
personId!: string; // The person who did the work
|
|
43
43
|
reasons?: MMReceiveLaborTicketReason[];
|
|
44
44
|
resourceId!: string; // The physical resource that did the work
|
|
45
|
+
resource?: { name: string }; // The resource name (available from export/updates endpoint)
|
|
45
46
|
sequenceNumber!: number; // Which sequence this operation is for in the order, associates back to a part_operation with the part_number from the work_order, and sequence_number from the op
|
|
46
47
|
split!: string; // Batch number if order split for staggered delivery. If not available in the ERP, default to an empty string
|
|
47
48
|
state!: string; // The current state of the labor ticket (e.g., "CLOSED/OPEN")
|
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NATS Service - Central connection and subscription management
|
|
3
|
+
* Allows connectors to register handlers for different NATS subjects
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { connect, NatsConnection, StringCodec, Subscription } from "nats";
|
|
7
|
+
import { logger } from "../reporting-service";
|
|
8
|
+
|
|
9
|
+
const sc = StringCodec();
|
|
10
|
+
|
|
11
|
+
export interface NatsMessageHandler {
|
|
12
|
+
/**
|
|
13
|
+
* Handler function for NATS messages
|
|
14
|
+
* - Return a value to reply (if msg has reply subject)
|
|
15
|
+
* - Return void/undefined for pub-sub (no reply)
|
|
16
|
+
*/
|
|
17
|
+
handle: (data: any, subject: string) => Promise<any | void>;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface NatsHandlerRegistration {
|
|
21
|
+
/**
|
|
22
|
+
* Subject pattern to subscribe to (supports wildcards: *, >)
|
|
23
|
+
* Examples:
|
|
24
|
+
* - "mm.14.epic01.labor-ticket.*" (single level wildcard)
|
|
25
|
+
* - "mm.14.epic01.erp.>" (multi-level wildcard)
|
|
26
|
+
*/
|
|
27
|
+
subject: string;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Handler for this subject
|
|
31
|
+
*/
|
|
32
|
+
handler: NatsMessageHandler;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Optional description for logging/debugging
|
|
36
|
+
*/
|
|
37
|
+
description?: string;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export interface NatsServiceConfig {
|
|
41
|
+
/**
|
|
42
|
+
* NATS server URLs
|
|
43
|
+
*/
|
|
44
|
+
servers: string | string[];
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Connection name (for monitoring)
|
|
48
|
+
*/
|
|
49
|
+
name: string;
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Location reference (for subject namespacing)
|
|
53
|
+
*/
|
|
54
|
+
locationRef: string;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* ERP type (epicor, infor, etc.)
|
|
58
|
+
*/
|
|
59
|
+
erpType: string;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Enable/disable NATS
|
|
63
|
+
*/
|
|
64
|
+
enabled: boolean;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Auto-reconnect settings
|
|
68
|
+
*/
|
|
69
|
+
reconnect?: boolean;
|
|
70
|
+
maxReconnectAttempts?: number;
|
|
71
|
+
reconnectTimeWait?: number;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export class NatsService {
|
|
75
|
+
private connection: NatsConnection | null = null;
|
|
76
|
+
private subscriptions: Map<string, Subscription> = new Map();
|
|
77
|
+
private config: NatsServiceConfig;
|
|
78
|
+
private handlers: NatsHandlerRegistration[] = [];
|
|
79
|
+
private statusPublishTimer: NodeJS.Timeout | null = null;
|
|
80
|
+
|
|
81
|
+
constructor(config: NatsServiceConfig) {
|
|
82
|
+
this.config = config;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Register a handler for a specific subject pattern
|
|
87
|
+
*/
|
|
88
|
+
registerHandler(registration: NatsHandlerRegistration): void {
|
|
89
|
+
logger.info("Registering NATS handler", {
|
|
90
|
+
subject: registration.subject,
|
|
91
|
+
description: registration.description,
|
|
92
|
+
});
|
|
93
|
+
this.handlers.push(registration);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Connect to NATS and start all registered handlers
|
|
98
|
+
*/
|
|
99
|
+
async connect(): Promise<void> {
|
|
100
|
+
if (!this.config.enabled) {
|
|
101
|
+
logger.info("NATS is disabled, skipping connection");
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
try {
|
|
106
|
+
logger.info("Connecting to NATS...", {
|
|
107
|
+
servers: this.config.servers,
|
|
108
|
+
name: this.config.name,
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
this.connection = await connect({
|
|
112
|
+
servers: this.config.servers,
|
|
113
|
+
name: this.config.name,
|
|
114
|
+
reconnect: this.config.reconnect ?? true,
|
|
115
|
+
maxReconnectAttempts: this.config.maxReconnectAttempts ?? -1,
|
|
116
|
+
reconnectTimeWait: this.config.reconnectTimeWait ?? 2000,
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
logger.info("Connected to NATS", {
|
|
120
|
+
server: this.connection.getServer(),
|
|
121
|
+
clientId: this.connection.info?.client_id,
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
// Start all registered handlers
|
|
125
|
+
for (const registration of this.handlers) {
|
|
126
|
+
await this.startHandler(registration);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// Start automatic status publishing
|
|
130
|
+
this.startStatusPublishing();
|
|
131
|
+
|
|
132
|
+
// Monitor connection status
|
|
133
|
+
this.monitorConnection();
|
|
134
|
+
|
|
135
|
+
// Graceful shutdown
|
|
136
|
+
this.setupShutdown();
|
|
137
|
+
} catch (error) {
|
|
138
|
+
logger.error("Failed to connect to NATS", { error });
|
|
139
|
+
throw error;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Start a single handler (subscribe to its subject)
|
|
145
|
+
*/
|
|
146
|
+
private async startHandler(registration: NatsHandlerRegistration): Promise<void> {
|
|
147
|
+
if (!this.connection) {
|
|
148
|
+
throw new Error("NATS connection not established");
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
const sub = this.connection.subscribe(registration.subject);
|
|
152
|
+
this.subscriptions.set(registration.subject, sub);
|
|
153
|
+
|
|
154
|
+
logger.info("Started NATS handler", {
|
|
155
|
+
subject: registration.subject,
|
|
156
|
+
description: registration.description,
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
// Process messages
|
|
160
|
+
(async () => {
|
|
161
|
+
for await (const msg of sub) {
|
|
162
|
+
try {
|
|
163
|
+
const data = sc.decode(msg.data);
|
|
164
|
+
|
|
165
|
+
logger.info("Received NATS message", {
|
|
166
|
+
subject: msg.subject,
|
|
167
|
+
hasReply: !!msg.reply,
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
// Parse JSON if possible
|
|
171
|
+
let parsedData: any;
|
|
172
|
+
try {
|
|
173
|
+
parsedData = JSON.parse(data);
|
|
174
|
+
} catch {
|
|
175
|
+
parsedData = data;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
// Call handler
|
|
179
|
+
const response = await registration.handler.handle(parsedData, msg.subject);
|
|
180
|
+
|
|
181
|
+
// If there's a reply subject and handler returned something, reply
|
|
182
|
+
if (msg.reply && response !== undefined) {
|
|
183
|
+
const responseStr = JSON.stringify(response);
|
|
184
|
+
msg.respond(sc.encode(responseStr));
|
|
185
|
+
logger.info("Sent reply", { replySubject: msg.reply });
|
|
186
|
+
}
|
|
187
|
+
} catch (error) {
|
|
188
|
+
logger.error("Error handling NATS message", {
|
|
189
|
+
subject: msg.subject,
|
|
190
|
+
error,
|
|
191
|
+
});
|
|
192
|
+
|
|
193
|
+
// Send error response if reply expected
|
|
194
|
+
if (msg.reply) {
|
|
195
|
+
const errorResponse = {
|
|
196
|
+
status: "error",
|
|
197
|
+
error: {
|
|
198
|
+
message: error instanceof Error ? error.message : "Unknown error",
|
|
199
|
+
code: "HANDLER_ERROR",
|
|
200
|
+
},
|
|
201
|
+
};
|
|
202
|
+
msg.respond(sc.encode(JSON.stringify(errorResponse)));
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
})();
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Publish a message to a subject (for pub/sub)
|
|
211
|
+
*/
|
|
212
|
+
async publish(subject: string, data: any): Promise<void> {
|
|
213
|
+
if (!this.connection) {
|
|
214
|
+
throw new Error("NATS connection not established");
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
const message = typeof data === "string" ? data : JSON.stringify(data);
|
|
218
|
+
this.connection.publish(subject, sc.encode(message));
|
|
219
|
+
|
|
220
|
+
logger.info("Published NATS message", { subject });
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* Send a request and wait for reply (for request-reply)
|
|
225
|
+
*/
|
|
226
|
+
async request(subject: string, data: any, timeoutMs: number = 30000): Promise<any> {
|
|
227
|
+
if (!this.connection) {
|
|
228
|
+
throw new Error("NATS connection not established");
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
const message = typeof data === "string" ? data : JSON.stringify(data);
|
|
232
|
+
const response = await this.connection.request(
|
|
233
|
+
subject,
|
|
234
|
+
sc.encode(message),
|
|
235
|
+
{ timeout: timeoutMs }
|
|
236
|
+
);
|
|
237
|
+
|
|
238
|
+
const responseData = sc.decode(response.data);
|
|
239
|
+
|
|
240
|
+
try {
|
|
241
|
+
return JSON.parse(responseData);
|
|
242
|
+
} catch {
|
|
243
|
+
return responseData;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* Check if connected to NATS
|
|
249
|
+
*/
|
|
250
|
+
isConnected(): boolean {
|
|
251
|
+
return this.connection !== null && !this.connection.isClosed();
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* Start automatic status publishing (every 30 seconds)
|
|
256
|
+
*/
|
|
257
|
+
private startStatusPublishing(): void {
|
|
258
|
+
logger.info("Starting status publishing (every 30 seconds)");
|
|
259
|
+
|
|
260
|
+
// Publish immediately on start
|
|
261
|
+
this.publishStatus();
|
|
262
|
+
|
|
263
|
+
// Then publish every 30 seconds
|
|
264
|
+
this.statusPublishTimer = setInterval(() => {
|
|
265
|
+
this.publishStatus();
|
|
266
|
+
}, 30000);
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* Publish connector status
|
|
271
|
+
*/
|
|
272
|
+
private async publishStatus(): Promise<void> {
|
|
273
|
+
try {
|
|
274
|
+
const status = {
|
|
275
|
+
timestamp: new Date().toISOString(),
|
|
276
|
+
locationRef: this.config.locationRef,
|
|
277
|
+
erpType: this.config.erpType,
|
|
278
|
+
natsConnected: this.isConnected(),
|
|
279
|
+
};
|
|
280
|
+
|
|
281
|
+
await this.publish(
|
|
282
|
+
`mm.14.${this.config.locationRef}.erp.status`,
|
|
283
|
+
status
|
|
284
|
+
);
|
|
285
|
+
|
|
286
|
+
logger.debug("Published connector status");
|
|
287
|
+
} catch (error) {
|
|
288
|
+
logger.error("Failed to publish status", { error });
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
/**
|
|
293
|
+
* Monitor connection status
|
|
294
|
+
*/
|
|
295
|
+
private monitorConnection(): void {
|
|
296
|
+
if (!this.connection) return;
|
|
297
|
+
|
|
298
|
+
(async () => {
|
|
299
|
+
for await (const status of this.connection!.status()) {
|
|
300
|
+
// Only log important events, skip pingTimer
|
|
301
|
+
if (status.type !== "pingTimer") {
|
|
302
|
+
logger.info("NATS connection status", {
|
|
303
|
+
type: status.type,
|
|
304
|
+
data: status.data,
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
})();
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
/**
|
|
312
|
+
* Setup graceful shutdown
|
|
313
|
+
*/
|
|
314
|
+
private setupShutdown(): void {
|
|
315
|
+
const shutdown = async () => {
|
|
316
|
+
logger.info("Shutting down NATS service...");
|
|
317
|
+
await this.disconnect();
|
|
318
|
+
process.exit(0);
|
|
319
|
+
};
|
|
320
|
+
|
|
321
|
+
process.on("SIGINT", shutdown);
|
|
322
|
+
process.on("SIGTERM", shutdown);
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
/**
|
|
326
|
+
* Disconnect from NATS
|
|
327
|
+
*/
|
|
328
|
+
async disconnect(): Promise<void> {
|
|
329
|
+
// Stop status publishing
|
|
330
|
+
if (this.statusPublishTimer) {
|
|
331
|
+
clearInterval(this.statusPublishTimer);
|
|
332
|
+
this.statusPublishTimer = null;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
// Close connection
|
|
336
|
+
if (this.connection) {
|
|
337
|
+
await this.connection.drain();
|
|
338
|
+
this.connection = null;
|
|
339
|
+
this.subscriptions.clear();
|
|
340
|
+
logger.info("Disconnected from NATS");
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
/**
|
|
345
|
+
* Get the location reference
|
|
346
|
+
*/
|
|
347
|
+
getLocationRef(): string {
|
|
348
|
+
return this.config.locationRef;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple proof-of-concept NATS subscriber
|
|
3
|
+
* Subscribes to mm.14.> and replies with "hello world"
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { connect, StringCodec } from "nats";
|
|
7
|
+
import { logger } from "../../services/reporting-service";
|
|
8
|
+
|
|
9
|
+
const sc = StringCodec();
|
|
10
|
+
|
|
11
|
+
async function startTestSubscriber() {
|
|
12
|
+
try {
|
|
13
|
+
// Connect to NATS server
|
|
14
|
+
const nc = await connect({
|
|
15
|
+
servers: "nats://localhost:4222",
|
|
16
|
+
name: "mm-erp-sdk-test-subscriber",
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
logger.info("Connected to NATS server", {
|
|
20
|
+
server: nc.getServer(),
|
|
21
|
+
clientId: nc.info?.client_id,
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
// Subscribe to all messages on mm.14.>
|
|
25
|
+
const sub = nc.subscribe("mm.14.>");
|
|
26
|
+
|
|
27
|
+
logger.info("Subscribed to mm.14.> - waiting for messages...");
|
|
28
|
+
|
|
29
|
+
// Process incoming messages
|
|
30
|
+
(async () => {
|
|
31
|
+
for await (const msg of sub) {
|
|
32
|
+
const data = sc.decode(msg.data);
|
|
33
|
+
|
|
34
|
+
logger.info("📨 Received NATS message", {
|
|
35
|
+
subject: msg.subject,
|
|
36
|
+
data: data,
|
|
37
|
+
reply: msg.reply,
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
console.log("\n=== NATS MESSAGE RECEIVED ===");
|
|
41
|
+
console.log("Subject:", msg.subject);
|
|
42
|
+
console.log("Data:", data);
|
|
43
|
+
console.log("Reply subject:", msg.reply);
|
|
44
|
+
console.log("============================\n");
|
|
45
|
+
|
|
46
|
+
// Reply if there's a reply subject
|
|
47
|
+
if (msg.reply) {
|
|
48
|
+
const replyMessage = JSON.stringify({
|
|
49
|
+
message: "hello world",
|
|
50
|
+
timestamp: new Date().toISOString(),
|
|
51
|
+
receivedSubject: msg.subject,
|
|
52
|
+
receivedData: data,
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
msg.respond(sc.encode(replyMessage));
|
|
56
|
+
|
|
57
|
+
logger.info("✅ Sent reply: hello world", {
|
|
58
|
+
replySubject: msg.reply,
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
console.log("✅ Replied with: hello world\n");
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
})();
|
|
65
|
+
|
|
66
|
+
// Handle connection events
|
|
67
|
+
(async () => {
|
|
68
|
+
for await (const status of nc.status()) {
|
|
69
|
+
logger.info("NATS connection status", {
|
|
70
|
+
type: status.type,
|
|
71
|
+
data: status.data,
|
|
72
|
+
});
|
|
73
|
+
console.log(`Connection status: ${status.type}`, status.data);
|
|
74
|
+
}
|
|
75
|
+
})();
|
|
76
|
+
|
|
77
|
+
// Graceful shutdown
|
|
78
|
+
const shutdown = async () => {
|
|
79
|
+
logger.info("Shutting down NATS subscriber...");
|
|
80
|
+
await nc.drain();
|
|
81
|
+
process.exit(0);
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
process.on("SIGINT", shutdown);
|
|
85
|
+
process.on("SIGTERM", shutdown);
|
|
86
|
+
|
|
87
|
+
} catch (error) {
|
|
88
|
+
logger.error("Failed to connect to NATS", { error });
|
|
89
|
+
console.error("Error connecting to NATS:", error);
|
|
90
|
+
process.exit(1);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// Start the subscriber
|
|
95
|
+
startTestSubscriber();
|
|
96
|
+
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PsqlService } from "./psql-service
|
|
1
|
+
import { PsqlService } from "./psql-service";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* A class to manage interactions with PSQL (Pervasive) databases via ODBC
|
|
@@ -8,7 +8,7 @@ export { PsqlService };
|
|
|
8
8
|
/**
|
|
9
9
|
* Configuration interface for PSQL connections
|
|
10
10
|
*/
|
|
11
|
-
export type { PsqlConfiguration } from "./configuration
|
|
11
|
+
export type { PsqlConfiguration } from "./configuration";
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Helper functions for PSQL data formatting
|
|
@@ -19,4 +19,4 @@ export {
|
|
|
19
19
|
combinePsqlDateTime,
|
|
20
20
|
isPsqlDateEmpty,
|
|
21
21
|
cleanPsqlCharField,
|
|
22
|
-
} from "./psql-helpers
|
|
22
|
+
} from "./psql-helpers";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { PsqlConfiguration } from "./configuration
|
|
2
|
-
import { ERPResponse } from "../../types/erp-types
|
|
3
|
-
import { OdbcErrorResponse } from "./internal/types/psql-types
|
|
4
|
-
import logger from "../reporting-service/logger
|
|
1
|
+
import { PsqlConfiguration } from "./configuration";
|
|
2
|
+
import { ERPResponse } from "../../types/erp-types";
|
|
3
|
+
import { OdbcErrorResponse } from "./internal/types/psql-types";
|
|
4
|
+
import logger from "../reporting-service/logger";
|
|
5
5
|
|
|
6
6
|
type PagingParams = {
|
|
7
7
|
limit?: number;
|