@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
|
@@ -1,333 +0,0 @@
|
|
|
1
|
-
import { ERPObjType } from "../../types/erp-types.js";
|
|
2
|
-
import { MMSendPart, MMSendPartOperation, MMSendWorkOrder, MMSendWorkOrderOperation, } from "../../services/mm-api-service/index.js";
|
|
3
|
-
import { LaborTicketERPSynchronizer } from "./labor-ticket-erp-synchronizer.js";
|
|
4
|
-
import { MMEntityProcessor } from "./mm-entity-processor.js";
|
|
5
|
-
export class MMBatchValidationError extends Error {
|
|
6
|
-
upsertedEntities;
|
|
7
|
-
localDedupeCount;
|
|
8
|
-
apiDedupeCount;
|
|
9
|
-
errorCount;
|
|
10
|
-
httpStatus;
|
|
11
|
-
batchErrors;
|
|
12
|
-
constructor(options) {
|
|
13
|
-
super(options.message);
|
|
14
|
-
this.name = "MMBatchValidationError";
|
|
15
|
-
this.upsertedEntities = options.upsertedEntities;
|
|
16
|
-
this.localDedupeCount = options.localDedupeCount;
|
|
17
|
-
this.apiDedupeCount = options.apiDedupeCount;
|
|
18
|
-
this.errorCount = options.errorCount;
|
|
19
|
-
this.httpStatus = options.httpStatus;
|
|
20
|
-
this.batchErrors = options.batchErrors;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* A collection of standardized process drivers that orchestrate various synchronization
|
|
25
|
-
* and integration processes between systems. Use of these drivers is optional,
|
|
26
|
-
* and useful as a reference implementation for how to implement the various processes.
|
|
27
|
-
*/
|
|
28
|
-
export class StandardProcessDrivers {
|
|
29
|
-
/**
|
|
30
|
-
* Synchronizes updated labor tickets from MachineMetrics to an ERP system:
|
|
31
|
-
*
|
|
32
|
-
* Initializes a checkpoint that tracks the last time labor tickets were synced,
|
|
33
|
-
* fetches labor tickets from MM and converts them to the company timezone,
|
|
34
|
-
* creates or updates the labor ticket in the ERP via connector-specific implementations,
|
|
35
|
-
* updates the labor ticket id in MM on newly created labor tickets,
|
|
36
|
-
* and saves the checkpoint
|
|
37
|
-
*/
|
|
38
|
-
static async syncLaborTicketsToERP(connectorType, connector) {
|
|
39
|
-
return LaborTicketERPSynchronizer.syncToERP(connectorType, connector);
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Retries labor tickets that have failed to be created or updated in the ERP during the sync:
|
|
43
|
-
*
|
|
44
|
-
* Fetches failed labor tickets from MM, processes them, and updates the labor ticket id in MM.
|
|
45
|
-
* If the labor ticket is successfully created or updated, it is added to the list of successful labor ticket ids,
|
|
46
|
-
* which are then deleted from the list of failed labor ticket ids.
|
|
47
|
-
*/
|
|
48
|
-
static async retryFailedLaborTickets(connectorType, connector) {
|
|
49
|
-
return LaborTicketERPSynchronizer.retryFailed(connectorType, connector);
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Writes a batch of records to MM for a specific entity type by:
|
|
53
|
-
* 1. Deduplicating against cached records (localDedupeCount)
|
|
54
|
-
* 2. Sending non-duplicate records to the MM API (apiDedupeCount)
|
|
55
|
-
* 3. Storing successful records in cache
|
|
56
|
-
*
|
|
57
|
-
* An example usage pattern including comprehensive error handling:
|
|
58
|
-
* ```
|
|
59
|
-
* try {
|
|
60
|
-
* const result = await StandardProcessDrivers.writeEntitiesToMM(
|
|
61
|
-
* 'WorkOrders',
|
|
62
|
-
* workOrderRecords,
|
|
63
|
-
* batchCacheManager
|
|
64
|
-
* );
|
|
65
|
-
*
|
|
66
|
-
* // HTTP 200 - Complete success
|
|
67
|
-
* console.log(`✅ Success: ${result.message}`);
|
|
68
|
-
* console.log(`📊 Metrics: ${result.upsertedEntities} upserted, ${result.localDedupeCount} locally deduplicated, ${result.apiDedupeCount} API deduplicated`);
|
|
69
|
-
*
|
|
70
|
-
* } catch (error) {
|
|
71
|
-
* if (error instanceof MMBatchValidationError) {
|
|
72
|
-
* // HTTP 207 - Partial success with some batches failing due to validation errors
|
|
73
|
-
* // HTTP 500 - A specific type representing complete failure due to validation issues;
|
|
74
|
-
* // other 500 types represent failure due to other issues and are not converted to MMBatchValidationError
|
|
75
|
-
* // Note: Each batch error contains ALL entities from the failing batch, not necessarily just the failed ones
|
|
76
|
-
*
|
|
77
|
-
* console.log(`⚠️ Batch processing completed with errors (HTTP ${error.httpStatus})`);
|
|
78
|
-
* console.log(`📊 Metrics: ${error.upsertedEntities} upserted, ${error.localDedupeCount} locally deduplicated, ${error.apiDedupeCount} API deduplicated`);
|
|
79
|
-
* console.log(`❌ Error count: ${error.errorCount}`);
|
|
80
|
-
*
|
|
81
|
-
* // Process specific batch errors for retry or logging
|
|
82
|
-
* error.batchErrors.forEach((batchError, index) => {
|
|
83
|
-
* console.log(`Batch ${index + 1} error: ${batchError.message}`);
|
|
84
|
-
* console.log(`All entities in failing batch:`, batchError.affectedEntities);
|
|
85
|
-
*
|
|
86
|
-
* // Example: Queue entire failing batch for retry (contains both successful and failed entities)
|
|
87
|
-
* await queueForRetry(batchError.affectedEntities);
|
|
88
|
-
* });
|
|
89
|
-
*
|
|
90
|
-
* // Decide whether to continue or halt based on httpStatus
|
|
91
|
-
* if (error.httpStatus === 207) {
|
|
92
|
-
* // Partial success - some batches processed successfully, others failed
|
|
93
|
-
* console.log('⚠️ Continuing with partial success');
|
|
94
|
-
* } else if (error.httpStatus === 500) {
|
|
95
|
-
* // Complete failure - all batches failed due to validation issues
|
|
96
|
-
* console.log('🛑 Complete failure - no records processed');
|
|
97
|
-
* throw error; // Re-throw if complete failure should halt the process
|
|
98
|
-
* }
|
|
99
|
-
*
|
|
100
|
-
* } else {
|
|
101
|
-
* // Other underlying errors (network issues, authentication, etc.)
|
|
102
|
-
* console.error('🚨 Unexpected error during MM API call:', error);
|
|
103
|
-
*
|
|
104
|
-
* // Example: Check for specific error types
|
|
105
|
-
* if (error.message?.includes('authentication')) {
|
|
106
|
-
* console.error('🔐 Authentication issue - check MM API credentials');
|
|
107
|
-
* } else if (error.message?.includes('network') || error.code === 'ECONNREFUSED') {
|
|
108
|
-
* console.error('🌐 Network connectivity issue - check MM API endpoint');
|
|
109
|
-
* }
|
|
110
|
-
*
|
|
111
|
-
* throw error; // Re-throw for upstream handling
|
|
112
|
-
* }
|
|
113
|
-
* }
|
|
114
|
-
* ```
|
|
115
|
-
*
|
|
116
|
-
* @param entityType The type of entity being processed
|
|
117
|
-
* @param mmRecords The records to process
|
|
118
|
-
* @param batchCacheManager The batch cache manager instance; pass in null if caching is not desired
|
|
119
|
-
*
|
|
120
|
-
* @returns WriteEntitiesToMMResult on complete success (HTTP 200)
|
|
121
|
-
* @throws MMBatchValidationError on partial success (HTTP 207) or complete failure (HTTP 500) with structured error details
|
|
122
|
-
* @throws Error on other underlying issues (network, authentication, etc.)
|
|
123
|
-
*/
|
|
124
|
-
static async writeEntitiesToMM(entityType, mmRecords, batchCacheManager) {
|
|
125
|
-
return MMEntityProcessor.writeEntities(entityType, mmRecords, batchCacheManager);
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* Writes a batch of Work Order related entities to MM maintaining referential integrity by:
|
|
129
|
-
* 1. Processing parts first (base entities)
|
|
130
|
-
* 2. Processing part operations (depends on parts)
|
|
131
|
-
* 3. Processing work orders (depends on parts)
|
|
132
|
-
* 4. Processing work order operations (depends on work orders and part operations)
|
|
133
|
-
*
|
|
134
|
-
* This ensures all foreign key constraints are satisfied and prevents referential integrity errors.
|
|
135
|
-
*
|
|
136
|
-
* @param workOrderBatch The batch containing all related entities
|
|
137
|
-
* @param batchCacheManager The batch cache manager instance; pass in null if caching is not desired
|
|
138
|
-
*
|
|
139
|
-
* @returns Combined results from all entity processing
|
|
140
|
-
* @throws MMBatchValidationError on partial success or complete failure with structured error details
|
|
141
|
-
* @throws Error on other underlying issues (network, authentication, etc.)
|
|
142
|
-
*/
|
|
143
|
-
static async writeWorkOrderBatchToMM(workOrderBatch, batchCacheManager) {
|
|
144
|
-
// Process entities in order to maintain referential integrity
|
|
145
|
-
// 1. Parts first (no dependencies)
|
|
146
|
-
const partsResult = await MMEntityProcessor.writeEntities(ERPObjType.PARTS, workOrderBatch.parts, batchCacheManager);
|
|
147
|
-
// 2. Part Operations (depends on parts)
|
|
148
|
-
const partOperationsResult = await MMEntityProcessor.writeEntities(ERPObjType.PART_OPERATION, workOrderBatch.partOperations, batchCacheManager);
|
|
149
|
-
// 3. Work Orders (depends on parts)
|
|
150
|
-
const workOrdersResult = await MMEntityProcessor.writeEntities(ERPObjType.WORK_ORDERS, workOrderBatch.workOrders, batchCacheManager);
|
|
151
|
-
// 4. Work Order Operations (depends on work orders and part operations)
|
|
152
|
-
const workOrderOperationsResult = await MMEntityProcessor.writeEntities(ERPObjType.WORK_ORDER_OPERATIONS, workOrderBatch.workOrderOperations, batchCacheManager);
|
|
153
|
-
return {
|
|
154
|
-
parts: partsResult,
|
|
155
|
-
partOperations: partOperationsResult,
|
|
156
|
-
workOrders: workOrdersResult,
|
|
157
|
-
workOrderOperations: workOrderOperationsResult,
|
|
158
|
-
};
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* Processes flattened work order data and syncs it to MM maintaining referential integrity.
|
|
162
|
-
*
|
|
163
|
-
* This method expects flattened data where each row contains both work order and operation information
|
|
164
|
-
* with camelCase field names matching the GraphQL schema. It will automatically extract and deduplicate
|
|
165
|
-
* parts, part operations, work orders, and work order operations, then process them in the correct order
|
|
166
|
-
* to maintain referential integrity.
|
|
167
|
-
*
|
|
168
|
-
* Timezone expectation: all datetime fields provided in `flattenedData` MUST already be expressed
|
|
169
|
-
* as ISO-8601 UTC strings (trailing `Z` or explicit offset). The SDK does not attempt to infer or
|
|
170
|
-
* convert local ERP timestamps on this path; it simply validates and forwards the values to MM.
|
|
171
|
-
* Connector implementations should convert ERP-local times to UTC before invoking this method.
|
|
172
|
-
*
|
|
173
|
-
* @param flattenedData Array of flattened rows containing both work order and operation data (see `FlattenedWorkOrderRow`)
|
|
174
|
-
* @param batchCacheManager The batch cache manager instance; pass in null if caching is not desired
|
|
175
|
-
*
|
|
176
|
-
* @returns Combined results from all entity processing with detailed logging information
|
|
177
|
-
* @throws MMBatchValidationError on partial success or complete failure with structured error details
|
|
178
|
-
* @throws Error on other underlying issues (network, authentication, etc.)
|
|
179
|
-
*/
|
|
180
|
-
static async syncWorkOrderBatchFromFlattened(flattenedData, batchCacheManager) {
|
|
181
|
-
if (!flattenedData || flattenedData.length === 0) {
|
|
182
|
-
throw new Error("No flattened work order data provided");
|
|
183
|
-
}
|
|
184
|
-
const toStringOrFallback = (value, fallback = "") => (value === undefined || value === null ? fallback : String(value));
|
|
185
|
-
// Process the flattened data - each row contains both work order and operation info
|
|
186
|
-
const uniqueParts = new Map();
|
|
187
|
-
const uniquePartOperations = new Map();
|
|
188
|
-
const uniqueWorkOrders = new Map();
|
|
189
|
-
const workOrderOperations = [];
|
|
190
|
-
// Process each flattened row to extract entities
|
|
191
|
-
for (const row of flattenedData) {
|
|
192
|
-
// Extract unique parts
|
|
193
|
-
const partKey = `${row.partNumber}|${row.partRevision}|${row.method}`;
|
|
194
|
-
if (!uniqueParts.has(partKey)) {
|
|
195
|
-
uniqueParts.set(partKey, {
|
|
196
|
-
partNumber: row.partNumber, // → partNumber
|
|
197
|
-
partRevision: row.partRevision, // → partRevision
|
|
198
|
-
method: row.method, // → method
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
// Extract unique part operations
|
|
202
|
-
const partOpKey = `${row.partNumber}|${row.partRevision}|${row.method}|${row.sequenceNumber}`;
|
|
203
|
-
if (!uniquePartOperations.has(partOpKey)) {
|
|
204
|
-
uniquePartOperations.set(partOpKey, {
|
|
205
|
-
partNumber: row.partNumber, // → partNumber
|
|
206
|
-
partRevision: row.partRevision, // → partRevision
|
|
207
|
-
method: row.method, // → method
|
|
208
|
-
sequenceNumber: row.sequenceNumber, // → sequenceNumber
|
|
209
|
-
resourceId: row.resourceId, // → resourceId
|
|
210
|
-
cycleTimeMs: row.cycleTimeMs, // → cycleTimeMs
|
|
211
|
-
setupTimeMs: row.setupTimeMs, // → setupTimeMs
|
|
212
|
-
operationDescription: row.operationDescription, // → description
|
|
213
|
-
quantityPerPart: row.quantityPerPart ?? 1, // → quantityPerPart
|
|
214
|
-
});
|
|
215
|
-
}
|
|
216
|
-
// Extract unique work orders
|
|
217
|
-
const workOrderKey = row.workOrderId;
|
|
218
|
-
if (!uniqueWorkOrders.has(workOrderKey)) {
|
|
219
|
-
uniqueWorkOrders.set(workOrderKey, {
|
|
220
|
-
workOrderId: row.workOrderId, // → workOrderId
|
|
221
|
-
lot: row.lot, // → lot
|
|
222
|
-
split: row.split, // → split
|
|
223
|
-
sub: row.sub, // → sub
|
|
224
|
-
status: row.status, // → status
|
|
225
|
-
dueDate: row.dueDate, // → dueDate
|
|
226
|
-
description: row.description, // → description
|
|
227
|
-
scheduledStartDate: row.scheduledStartDate, // → scheduledStartDate
|
|
228
|
-
scheduledEndDate: row.scheduledEndDate, // → scheduledEndDate
|
|
229
|
-
closedDate: row.closedDate, // → closedDate
|
|
230
|
-
quantityRequired: row.quantityRequired, // → quantityRequired
|
|
231
|
-
partNumber: row.partNumber, // → partNumber
|
|
232
|
-
partRevision: row.partRevision, // → partRevision
|
|
233
|
-
method: row.method, // → method
|
|
234
|
-
});
|
|
235
|
-
}
|
|
236
|
-
// Add each work order operation (these are not deduplicated since each operation is unique)
|
|
237
|
-
workOrderOperations.push({
|
|
238
|
-
workOrderId: row.workOrderId, // → workOrderId
|
|
239
|
-
lot: row.lot, // → lot
|
|
240
|
-
split: row.split, // → split
|
|
241
|
-
sub: row.sub, // → sub
|
|
242
|
-
sequenceNumber: row.sequenceNumber, // → sequenceNumber
|
|
243
|
-
resourceId: row.resourceId, // → resourceId
|
|
244
|
-
startQuantity: row.startQuantity, // → startQuantity
|
|
245
|
-
finishQuantity: row.finishQuantity, // → finishQuantity
|
|
246
|
-
expectedRejectRate: row.expectedRejectRate, // → expectedRejectRate
|
|
247
|
-
scheduledStartDate: row.opScheduledStartDate, // → scheduledStartDate
|
|
248
|
-
scheduledFinishDate: row.opScheduledFinishDate, // → scheduledFinishDate
|
|
249
|
-
closedDate: row.opClosedDate, // → closedDate
|
|
250
|
-
cycleTimeMs: row.cycleTimeMs, // → cycleTimeMs
|
|
251
|
-
setupTimeMs: row.setupTimeMs, // → setupTimeMs
|
|
252
|
-
productionburdenRateHourly: row.productionburdenRateHourly, // → productionburdenRateHourly
|
|
253
|
-
setupburdenRatehourly: row.setupburdenRatehourly, // → setupburdenRatehourly
|
|
254
|
-
operationType: row.operationType, // → operationType
|
|
255
|
-
quantityPerPart: row.quantityPerPart, // → quantityPerPart
|
|
256
|
-
status: row.opStatus || row.status, // → status
|
|
257
|
-
});
|
|
258
|
-
}
|
|
259
|
-
// Transform all the data directly to MM entities
|
|
260
|
-
const parts = Array.from(uniqueParts.values()).map((item) => new MMSendPart(toStringOrFallback(item.partNumber), // partNumber
|
|
261
|
-
toStringOrFallback(item.partRevision), // partRevision
|
|
262
|
-
item.method || "Standard" // method
|
|
263
|
-
));
|
|
264
|
-
const partOperations = Array.from(uniquePartOperations.values()).map((item) => new MMSendPartOperation(toStringOrFallback(item.partNumber), // partNumber
|
|
265
|
-
toStringOrFallback(item.partRevision), // partRevision
|
|
266
|
-
item.method || "Standard", // method
|
|
267
|
-
item.sequenceNumber?.toString() || "", // sequenceNumber
|
|
268
|
-
item.resourceId?.toString() || "", // resourceId
|
|
269
|
-
item.cycleTimeMs || 0, // cycleTimeMs
|
|
270
|
-
item.setupTimeMs || 0, // setupTimeMs
|
|
271
|
-
item.operationDescription || "", // description
|
|
272
|
-
item.quantityPerPart || 1 // quantityPerPart
|
|
273
|
-
));
|
|
274
|
-
const transformedWorkOrders = Array.from(uniqueWorkOrders.values()).map((item) => new MMSendWorkOrder(item.workOrderId?.toString() || "", // workOrderId
|
|
275
|
-
toStringOrFallback(item.lot), // lot
|
|
276
|
-
toStringOrFallback(item.split), // split
|
|
277
|
-
toStringOrFallback(item.sub), // sub
|
|
278
|
-
item.status || "Open", // status
|
|
279
|
-
// Datetimes are assumed to already be UTC (or include an explicit offset).
|
|
280
|
-
// We reserialize via Date solely to validate the ISO format before sending to MM.
|
|
281
|
-
item.dueDate ? new Date(item.dueDate).toISOString() : null, // dueDate
|
|
282
|
-
item.description || "", // description
|
|
283
|
-
item.scheduledStartDate
|
|
284
|
-
? new Date(item.scheduledStartDate).toISOString()
|
|
285
|
-
: null, // scheduledStartDate
|
|
286
|
-
item.scheduledEndDate
|
|
287
|
-
? new Date(item.scheduledEndDate).toISOString()
|
|
288
|
-
: null, // scheduledEndDate
|
|
289
|
-
item.closedDate ? new Date(item.closedDate).toISOString() : null, // closedDate
|
|
290
|
-
item.quantityRequired || 0, // quantityRequired
|
|
291
|
-
toStringOrFallback(item.partNumber), // partNumber
|
|
292
|
-
toStringOrFallback(item.partRevision), // partRevision
|
|
293
|
-
item.method || "Standard" // method
|
|
294
|
-
));
|
|
295
|
-
const transformedWorkOrderOperations = workOrderOperations.map((item) => new MMSendWorkOrderOperation(item.workOrderId?.toString() || "", // workOrderId
|
|
296
|
-
toStringOrFallback(item.lot), // lot
|
|
297
|
-
toStringOrFallback(item.split), // split
|
|
298
|
-
toStringOrFallback(item.sub), // sub
|
|
299
|
-
item.sequenceNumber?.toString() || "", // sequenceNumber
|
|
300
|
-
item.resourceId?.toString() || "", // resourceId
|
|
301
|
-
item.startQuantity || 0, // startQuantity
|
|
302
|
-
item.finishQuantity || 0, // finishQuantity
|
|
303
|
-
item.expectedRejectRate || 0, // expectedRejectRate
|
|
304
|
-
// Same UTC expectation as above; reserialize to ensure valid ISO.
|
|
305
|
-
item.scheduledStartDate
|
|
306
|
-
? new Date(item.scheduledStartDate).toISOString()
|
|
307
|
-
: null, // scheduledStartDate
|
|
308
|
-
item.scheduledFinishDate
|
|
309
|
-
? new Date(item.scheduledFinishDate).toISOString()
|
|
310
|
-
: null, // scheduledFinishDate
|
|
311
|
-
item.closedDate ? new Date(item.closedDate).toISOString() : null, // closedDate
|
|
312
|
-
item.cycleTimeMs || 0, // cycleTimeMs
|
|
313
|
-
item.setupTimeMs || 0, // setupTimeMs
|
|
314
|
-
parseFloat(toStringOrFallback(item.productionburdenRateHourly, "0")), // productionburdenRateHourly
|
|
315
|
-
parseFloat(toStringOrFallback(item.setupburdenRatehourly, "0")), // setupburdenRatehourly
|
|
316
|
-
item.operationType || "Production", // operationType
|
|
317
|
-
item.quantityPerPart || 1, // quantityPerPart
|
|
318
|
-
item.status || "Open" // status
|
|
319
|
-
));
|
|
320
|
-
// Send each entity type individually in the correct order for referential integrity
|
|
321
|
-
const partsResult = await MMEntityProcessor.writeEntities(ERPObjType.PARTS, parts, batchCacheManager);
|
|
322
|
-
const partOperationsResult = await MMEntityProcessor.writeEntities(ERPObjType.PART_OPERATION, partOperations, batchCacheManager);
|
|
323
|
-
const workOrdersResult = await MMEntityProcessor.writeEntities(ERPObjType.WORK_ORDERS, transformedWorkOrders, batchCacheManager);
|
|
324
|
-
const workOrderOperationsResult = await MMEntityProcessor.writeEntities(ERPObjType.WORK_ORDER_OPERATIONS, transformedWorkOrderOperations, batchCacheManager);
|
|
325
|
-
return {
|
|
326
|
-
parts: partsResult,
|
|
327
|
-
partOperations: partOperationsResult,
|
|
328
|
-
workOrders: workOrdersResult,
|
|
329
|
-
workOrderOperations: workOrderOperationsResult,
|
|
330
|
-
};
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
//# sourceMappingURL=standard-process-drivers.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"standard-process-drivers.js","sourceRoot":"","sources":["../../../src/utils/standard-process-drivers/standard-process-drivers.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/time-utils.js
DELETED
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import { DateTime } from 'luxon';
|
|
2
|
-
import logger from "../services/reporting-service/logger.js";
|
|
3
|
-
import { setTimezoneOffsetInCache, setTimezoneNameInCache, } from "./local-data-store/jobs-shared-data.js";
|
|
4
|
-
import { convertToLocalTime, formatDateWithTZOffset, getTimezoneOffset, } from "./timezone.js";
|
|
5
|
-
/**
|
|
6
|
-
* Calculates the difference in hours between two timestamps
|
|
7
|
-
* @param startTime ISO timestamp string
|
|
8
|
-
* @param endTime ISO timestamp string
|
|
9
|
-
* @param timezoneOffset timezone offset in hours
|
|
10
|
-
* @returns number representing hours difference, rounded to 3 decimal places
|
|
11
|
-
*/
|
|
12
|
-
export function calculateTimeDifferenceInHours(startTime, endTime, timezoneOffset) {
|
|
13
|
-
if (!startTime || !endTime)
|
|
14
|
-
return 0;
|
|
15
|
-
const localStartTime = convertToLocalTime(startTime, timezoneOffset);
|
|
16
|
-
const localEndTime = convertToLocalTime(endTime, timezoneOffset);
|
|
17
|
-
if (!localStartTime || !localEndTime)
|
|
18
|
-
return 0;
|
|
19
|
-
// Get hours, minutes, seconds from the Date objects
|
|
20
|
-
const startHours = localStartTime.getHours();
|
|
21
|
-
const startMinutes = localStartTime.getMinutes();
|
|
22
|
-
const startSeconds = localStartTime.getSeconds();
|
|
23
|
-
const endHours = localEndTime.getHours();
|
|
24
|
-
const endMinutes = localEndTime.getMinutes();
|
|
25
|
-
const endSeconds = localEndTime.getSeconds();
|
|
26
|
-
// Calculate total seconds for each time
|
|
27
|
-
const startTotalSeconds = startHours * 3600 + startMinutes * 60 + startSeconds;
|
|
28
|
-
const endTotalSeconds = endHours * 3600 + endMinutes * 60 + endSeconds;
|
|
29
|
-
if (endTotalSeconds > startTotalSeconds) {
|
|
30
|
-
return Number(((endTotalSeconds - startTotalSeconds) / 3600).toFixed(3));
|
|
31
|
-
}
|
|
32
|
-
return 0;
|
|
33
|
-
}
|
|
34
|
-
export const getSecondsOfDay = (timestamp) => {
|
|
35
|
-
if (!timestamp)
|
|
36
|
-
return null;
|
|
37
|
-
const time = new Date(timestamp);
|
|
38
|
-
const utcHours = time.getUTCHours();
|
|
39
|
-
const utcMinutes = time.getUTCMinutes();
|
|
40
|
-
const utcSeconds = time.getUTCSeconds();
|
|
41
|
-
return (utcHours * 3600 + utcMinutes * 60 + utcSeconds).toString();
|
|
42
|
-
};
|
|
43
|
-
/**
|
|
44
|
-
* Apply timezone offsets to specified datetime fields in an object
|
|
45
|
-
* @param item The object to transform
|
|
46
|
-
* @param fields The fields to apply timezone offset to
|
|
47
|
-
* @param timezoneOffset The timezone offset to apply
|
|
48
|
-
* @returns The transformed object
|
|
49
|
-
*/
|
|
50
|
-
export const applyTimezoneOffsetsToFields = (item, fields, timezoneOffset) => {
|
|
51
|
-
const transformed = { ...item };
|
|
52
|
-
fields.forEach((field) => {
|
|
53
|
-
if (transformed[field] && transformed[field].trim()) {
|
|
54
|
-
const formattedDate = formatDateWithTZOffset(transformed[field], timezoneOffset);
|
|
55
|
-
transformed[field] = formattedDate || "";
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
transformed[field] = "";
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
return transformed;
|
|
62
|
-
};
|
|
63
|
-
/**
|
|
64
|
-
* Gets the timezone offset and timezone name for the company and sets them in the cache
|
|
65
|
-
* The cached offset can be acquired from getCachedTimezoneOffset() in "./local-data-store/jobs-shared-data"
|
|
66
|
-
* The cached timezone name can be acquired from getCachedTimezoneName() in "./local-data-store/jobs-shared-data"
|
|
67
|
-
*
|
|
68
|
-
* @param params.maxRetries Maximum number of retry attempts
|
|
69
|
-
* @param params.retryIntervalMs Time to wait between retries in milliseconds
|
|
70
|
-
*/
|
|
71
|
-
export const getTimezoneOffsetAndPersist = async (params = {
|
|
72
|
-
maxRetries: 36000, // Retry for 10 hours before giving up.
|
|
73
|
-
retryIntervalMs: 10_000,
|
|
74
|
-
}) => {
|
|
75
|
-
let success = false;
|
|
76
|
-
let retries = 0;
|
|
77
|
-
logger.info("Acquiring the timezone offset and timezone name from MachineMetrics and storing in cache");
|
|
78
|
-
while (!success && retries < params.maxRetries) {
|
|
79
|
-
try {
|
|
80
|
-
const { offset, timezone } = await getTimezoneOffset();
|
|
81
|
-
logger.info(`Timezone offset: ${offset} hours, timezone: ${timezone}`);
|
|
82
|
-
setTimezoneOffsetInCache(offset);
|
|
83
|
-
const now = DateTime.now().setZone(timezone);
|
|
84
|
-
if (!now.isValid) {
|
|
85
|
-
throw new Error(`Invalid timezone name from Company properties: "${timezone}". ` +
|
|
86
|
-
`Must be a valid IANA timezone name (e.g., "America/Chicago"). ` +
|
|
87
|
-
`See: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones`);
|
|
88
|
-
}
|
|
89
|
-
setTimezoneNameInCache(timezone);
|
|
90
|
-
success = true;
|
|
91
|
-
}
|
|
92
|
-
catch (error) {
|
|
93
|
-
logger.error("Error getting timezone offset:", error);
|
|
94
|
-
logger.info(`Retrying in ${params.retryIntervalMs / 1000} seconds...`);
|
|
95
|
-
await new Promise((resolve) => setTimeout(resolve, params.retryIntervalMs));
|
|
96
|
-
retries++;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
if (!success) {
|
|
100
|
-
throw new Error(`Failed to get the timezone offset after ${params.maxRetries} retries`);
|
|
101
|
-
}
|
|
102
|
-
};
|
|
103
|
-
//# sourceMappingURL=time-utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"time-utils.js","sourceRoot":"","sources":["../../src/utils/time-utils.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/timezone.js
DELETED
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
import { CoreConfiguration } from "../services/data-sync-service/configuration-manager.js";
|
|
2
|
-
import { HTTPClientFactory } from "./http-client.js";
|
|
3
|
-
/**
|
|
4
|
-
* Gets the timezone offset in hours and timezone name for the company's timezone
|
|
5
|
-
* @returns Promise<{ offset: number; timezone: string }> The timezone offset in hours and timezone name
|
|
6
|
-
* @throws Error if unable to fetch timezone information
|
|
7
|
-
*/
|
|
8
|
-
export const getTimezoneOffset = async () => {
|
|
9
|
-
try {
|
|
10
|
-
// Get the timezone from configuration
|
|
11
|
-
const config = CoreConfiguration.inst();
|
|
12
|
-
const apiUrl = config.mmApiBaseUrl;
|
|
13
|
-
const authToken = config.mmApiAuthToken;
|
|
14
|
-
if (!apiUrl || !authToken) {
|
|
15
|
-
throw new Error("Missing required configuration for timezone fetch");
|
|
16
|
-
}
|
|
17
|
-
// Create HTTP client
|
|
18
|
-
const client = HTTPClientFactory.getInstance({
|
|
19
|
-
baseUrl: apiUrl,
|
|
20
|
-
retryAttempts: config.mmApiRetryAttempts,
|
|
21
|
-
});
|
|
22
|
-
// Fetch user/company information from the API
|
|
23
|
-
const response = await client.request({
|
|
24
|
-
url: "/accounts/current",
|
|
25
|
-
method: "GET",
|
|
26
|
-
headers: {
|
|
27
|
-
Authorization: `Bearer ${authToken}`,
|
|
28
|
-
},
|
|
29
|
-
});
|
|
30
|
-
const userInfo = response.data;
|
|
31
|
-
if (!userInfo?.company?.timezone) {
|
|
32
|
-
throw new Error("Unable to retrieve company timezone from API");
|
|
33
|
-
}
|
|
34
|
-
const timezone = userInfo.company.timezone;
|
|
35
|
-
// Calculate the timezone offset
|
|
36
|
-
const date = new Date();
|
|
37
|
-
const utcDate = new Date(date.toLocaleString("en-US", { timeZone: "UTC" }));
|
|
38
|
-
const tzDate = new Date(date.toLocaleString("en-US", { timeZone: timezone }));
|
|
39
|
-
// Return offset in hours and timezone name
|
|
40
|
-
const offset = (tzDate.getTime() - utcDate.getTime()) / 3600000;
|
|
41
|
-
return { offset, timezone };
|
|
42
|
-
}
|
|
43
|
-
catch (error) {
|
|
44
|
-
throw new Error(`Failed to get timezone offset: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
/**
|
|
48
|
-
* Converts a UTC/Zulu time to local time based on the provided timezone offset
|
|
49
|
-
* @param zuluTime The UTC/Zulu time to convert
|
|
50
|
-
* @param timezoneOffset The timezone offset in hours
|
|
51
|
-
* @returns The converted local time, or undefined if input is null/undefined
|
|
52
|
-
*/
|
|
53
|
-
export const convertToLocalTime = (zuluTime, timezoneOffset) => {
|
|
54
|
-
if (!zuluTime)
|
|
55
|
-
return undefined;
|
|
56
|
-
const date = new Date(zuluTime);
|
|
57
|
-
return new Date(date.getTime() + timezoneOffset * 60 * 60 * 1000);
|
|
58
|
-
};
|
|
59
|
-
/**
|
|
60
|
-
* Formats a date with the timezone offset in ISO format with offset
|
|
61
|
-
* @param date The date string in format YYYY-MM-DD HH:mm:ss or YYYY-MM-DDTHH:mm:ss
|
|
62
|
-
* @param timezoneOffset The timezone offset in hours
|
|
63
|
-
* @returns The formatted date string in format: YYYY-MM-DDTHH:mm:ss+/-HH:MM
|
|
64
|
-
*/
|
|
65
|
-
export const formatDateWithTZOffset = (date, timezoneOffset) => {
|
|
66
|
-
if (!date)
|
|
67
|
-
return undefined;
|
|
68
|
-
// Replace space with T if present
|
|
69
|
-
const isoDate = date.replace(" ", "T");
|
|
70
|
-
// Calculate offset components
|
|
71
|
-
const sign = timezoneOffset >= 0 ? "+" : "-";
|
|
72
|
-
const absOffset = Math.abs(timezoneOffset);
|
|
73
|
-
const hours = Math.floor(absOffset).toString().padStart(2, "0");
|
|
74
|
-
const minutes = Math.floor((absOffset % 1) * 60)
|
|
75
|
-
.toString()
|
|
76
|
-
.padStart(2, "0");
|
|
77
|
-
// Append the timezone offset
|
|
78
|
-
return `${isoDate}${sign}${hours}:${minutes}`;
|
|
79
|
-
};
|
|
80
|
-
/**
|
|
81
|
-
* Formats a Date object as an ISO string with the specified timezone offset
|
|
82
|
-
* @param date The Date object to format (should be a Date that has been shifted by convertToLocalTime)
|
|
83
|
-
* @param timezoneOffset The timezone offset in hours
|
|
84
|
-
* @returns ISO string with offset in format: YYYY-MM-DDTHH:mm:ss.SSS±HH:MM
|
|
85
|
-
*/
|
|
86
|
-
export const toISOWithOffset = (date, timezoneOffset) => {
|
|
87
|
-
const sign = timezoneOffset >= 0 ? "+" : "-";
|
|
88
|
-
const abs = Math.abs(timezoneOffset);
|
|
89
|
-
const hours = Math.floor(abs);
|
|
90
|
-
const minutes = Math.round((abs - hours) * 60);
|
|
91
|
-
const pad2 = (n) => n.toString().padStart(2, "0");
|
|
92
|
-
const pad3 = (n) => n.toString().padStart(3, "0");
|
|
93
|
-
// Use UTC getters since convertToLocalTime shifts the Date's internal timestamp
|
|
94
|
-
// The UTC components of the shifted Date represent the local wall time
|
|
95
|
-
const yyyy = date.getUTCFullYear();
|
|
96
|
-
const MM = pad2(date.getUTCMonth() + 1);
|
|
97
|
-
const dd = pad2(date.getUTCDate());
|
|
98
|
-
const HH = pad2(date.getUTCHours());
|
|
99
|
-
const mm = pad2(date.getUTCMinutes());
|
|
100
|
-
const ss = pad2(date.getUTCSeconds());
|
|
101
|
-
const SSS = pad3(date.getUTCMilliseconds());
|
|
102
|
-
const off = `${sign}${pad2(hours)}:${pad2(minutes)}`;
|
|
103
|
-
return `${yyyy}-${MM}-${dd}T${HH}:${mm}:${ss}.${SSS}${off}`;
|
|
104
|
-
};
|
|
105
|
-
//# sourceMappingURL=timezone.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"timezone.js","sourceRoot":"","sources":["../../src/utils/timezone.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Trims all string values in an object while preserving the object's structure
|
|
3
|
-
*/
|
|
4
|
-
export const trimObjectValues = (obj) => {
|
|
5
|
-
return Object.keys(obj).reduce((acc, key) => {
|
|
6
|
-
const value = obj[key];
|
|
7
|
-
acc[key] = (typeof value === "string" ? value.trim() : value);
|
|
8
|
-
return acc;
|
|
9
|
-
}, {});
|
|
10
|
-
};
|
|
11
|
-
//# sourceMappingURL=trimObjectValues.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"trimObjectValues.js","sourceRoot":"","sources":["../../src/utils/trimObjectValues.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAmB,GAAM,EAAK,EAAE;IAC9D,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC1C,MAAM,KAAK,GAAG,GAAG,CAAC,GAAc,CAAC,CAAC;QAClC,GAAG,CAAC,GAAc,CAAC,GAAG,CACpB,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CACnC,CAAC;QAChB,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAO,CAAC,CAAC;AACd,CAAC,CAAC"}
|
package/dist/utils/uniqueRows.js
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Extracts unique rows from data based on specified fields and sorts by up to two fields
|
|
3
|
-
* @param data Array of data objects
|
|
4
|
-
* @param fields Array of field names to use as a unique keys
|
|
5
|
-
* @param sortFields Optional array of field names to sort by (up to two fields)
|
|
6
|
-
* @returns Array of unique objects based on the specified fields, or an empty array if data is empty
|
|
7
|
-
*/
|
|
8
|
-
export function getUniqueRows(data, fields, sortFields) {
|
|
9
|
-
const createCompositeKey = (item) => {
|
|
10
|
-
return fields.map((field) => String(item[field])).join("|");
|
|
11
|
-
};
|
|
12
|
-
const uniqueKeys = new Set();
|
|
13
|
-
const uniqueRows = [];
|
|
14
|
-
data.forEach((item) => {
|
|
15
|
-
const key = createCompositeKey(item);
|
|
16
|
-
if (!uniqueKeys.has(key)) {
|
|
17
|
-
uniqueKeys.add(key);
|
|
18
|
-
uniqueRows.push(item);
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
if (sortFields && sortFields.length > 0) {
|
|
22
|
-
uniqueRows.sort((a, b) => {
|
|
23
|
-
for (let i = 0; i < sortFields.length; i++) {
|
|
24
|
-
const field = sortFields[i];
|
|
25
|
-
if (a[field] < b[field])
|
|
26
|
-
return -1;
|
|
27
|
-
if (a[field] > b[field])
|
|
28
|
-
return 1;
|
|
29
|
-
}
|
|
30
|
-
return 0;
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
return uniqueRows || [];
|
|
34
|
-
}
|
|
35
|
-
//# sourceMappingURL=uniqueRows.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"uniqueRows.js","sourceRoot":"","sources":["../../src/utils/uniqueRows.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAC3B,IAAS,EACT,MAAmB,EACnB,UAAwB;IAExB,MAAM,kBAAkB,GAAG,CAAC,IAAO,EAAU,EAAE;QAC7C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9D,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,MAAM,UAAU,GAAQ,EAAE,CAAC;IAE3B,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACpB,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3C,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC5B,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;oBAAE,OAAO,CAAC,CAAC,CAAC;gBACnC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;oBAAE,OAAO,CAAC,CAAC;YACpC,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,UAAU,IAAI,EAAE,CAAC;AAC1B,CAAC"}
|