@machinemetrics/mm-erp-sdk 0.2.0-beta.3 → 0.3.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -0
- package/dist/index.d.ts +42 -43
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +48 -0
- package/dist/index.js.map +1 -0
- package/dist/knexfile.d.ts.map +1 -1
- package/dist/knexfile.js +19 -0
- package/dist/knexfile.js.map +1 -0
- package/dist/migrations/20241015162631_create_cache_table.d.ts +4 -0
- package/dist/migrations/20241015162631_create_cache_table.d.ts.map +1 -0
- package/dist/migrations/20241015162631_create_cache_table.js +11 -15
- package/dist/migrations/20241015162631_create_cache_table.js.map +1 -1
- package/dist/migrations/20241015162632_create_sdk_cache_table.d.ts +4 -0
- package/dist/migrations/20241015162632_create_sdk_cache_table.d.ts.map +1 -0
- package/dist/migrations/20241015162632_create_sdk_cache_table.js +11 -15
- package/dist/migrations/20241015162632_create_sdk_cache_table.js.map +1 -1
- package/dist/migrations/20250103162631_create_record_tracking_table.d.ts +4 -0
- package/dist/migrations/20250103162631_create_record_tracking_table.d.ts.map +1 -0
- package/dist/migrations/20250103162631_create_record_tracking_table.js +14 -15
- package/dist/migrations/20250103162631_create_record_tracking_table.js.map +1 -1
- 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/batch-cache-manager.js +84 -0
- package/dist/services/caching-service/batch-cache-manager.js.map +1 -0
- 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/hashed-cache-manager.js +223 -0
- package/dist/services/caching-service/hashed-cache-manager.js.map +1 -0
- 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/index.js +2 -0
- package/dist/services/caching-service/index.js.map +1 -0
- 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/caching-service/record-tracking-manager.js +28 -0
- package/dist/services/caching-service/record-tracking-manager.js.map +1 -0
- 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/configuration-manager.js +163 -0
- package/dist/services/data-sync-service/configuration-manager.js.map +1 -0
- package/dist/services/data-sync-service/data-sync-service.d.ts.map +1 -1
- package/dist/services/data-sync-service/data-sync-service.js +95 -0
- package/dist/services/data-sync-service/data-sync-service.js.map +1 -0
- 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/index.js +10 -0
- package/dist/services/data-sync-service/index.js.map +1 -0
- 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 +42 -40
- 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 +50 -37
- 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 +38 -36
- 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 +24 -22
- 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/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/errors.js +83 -0
- package/dist/services/erp-api-services/errors.js.map +1 -0
- 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/graphql/graphql-service.js +102 -0
- package/dist/services/erp-api-services/graphql/graphql-service.js.map +1 -0
- package/dist/services/erp-api-services/graphql/types.js +6 -0
- package/dist/services/erp-api-services/graphql/types.js.map +1 -0
- 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/index.js +13 -0
- package/dist/services/erp-api-services/index.js.map +1 -0
- package/dist/services/erp-api-services/oauth-client.js +41 -0
- package/dist/services/erp-api-services/oauth-client.js.map +1 -0
- package/dist/services/erp-api-services/rest/get-query-params.js +23 -0
- package/dist/services/erp-api-services/rest/get-query-params.js.map +1 -0
- 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/rest/rest-api-service.js +163 -0
- package/dist/services/erp-api-services/rest/rest-api-service.js.map +1 -0
- 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/erp-api-services/types.js +2 -0
- package/dist/services/erp-api-services/types.js.map +1 -0
- package/dist/services/mm-api-service/index.d.ts +6 -13
- package/dist/services/mm-api-service/index.d.ts.map +1 -1
- package/dist/services/mm-api-service/index.js +15 -0
- package/dist/services/mm-api-service/index.js.map +1 -0
- package/dist/services/mm-api-service/mm-api-service.d.ts +7 -13
- package/dist/services/mm-api-service/mm-api-service.d.ts.map +1 -1
- package/dist/services/mm-api-service/mm-api-service.js +519 -0
- package/dist/services/mm-api-service/mm-api-service.js.map +1 -0
- package/dist/services/mm-api-service/token-mgr.js +113 -0
- package/dist/services/mm-api-service/token-mgr.js.map +1 -0
- package/dist/services/mm-api-service/types/checkpoint.js +2 -0
- package/dist/services/mm-api-service/types/checkpoint.js.map +1 -0
- 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/entity-transformer.js +186 -0
- package/dist/services/mm-api-service/types/entity-transformer.js.map +1 -0
- package/dist/services/mm-api-service/types/mm-response-interfaces.js +34 -0
- package/dist/services/mm-api-service/types/mm-response-interfaces.js.map +1 -0
- package/dist/services/mm-api-service/types/receive-types.d.ts +0 -3
- package/dist/services/mm-api-service/types/receive-types.d.ts.map +1 -1
- package/dist/services/mm-api-service/types/receive-types.js +55 -0
- package/dist/services/mm-api-service/types/receive-types.js.map +1 -0
- package/dist/services/mm-api-service/types/send-types.js +337 -0
- package/dist/services/mm-api-service/types/send-types.js.map +1 -0
- package/dist/services/psql-erp-service/configuration.js +2 -0
- package/dist/services/psql-erp-service/configuration.js.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/index.js +10 -0
- package/dist/services/psql-erp-service/index.js.map +1 -0
- package/dist/services/psql-erp-service/internal/types/psql-types.js +5 -0
- package/dist/services/psql-erp-service/internal/types/psql-types.js.map +1 -0
- package/dist/services/psql-erp-service/psql-helpers.js +99 -0
- package/dist/services/psql-erp-service/psql-helpers.js.map +1 -0
- 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/psql-erp-service/psql-service.js +187 -0
- package/dist/services/psql-erp-service/psql-service.js.map +1 -0
- 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/index.js +5 -0
- package/dist/services/reporting-service/index.js.map +1 -0
- package/dist/services/reporting-service/logger.d.ts.map +1 -1
- package/dist/services/reporting-service/logger.js +221 -0
- package/dist/services/reporting-service/logger.js.map +1 -0
- package/dist/services/sql-server-erp-service/configuration.js +2 -0
- package/dist/services/sql-server-erp-service/configuration.js.map +1 -0
- 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/index.js +11 -0
- package/dist/services/sql-server-erp-service/index.js.map +1 -0
- 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/internal/sql-labor-ticket-operations.js +50 -0
- package/dist/services/sql-server-erp-service/internal/sql-labor-ticket-operations.js.map +1 -0
- package/dist/services/sql-server-erp-service/internal/sql-server-config.js +40 -0
- package/dist/services/sql-server-erp-service/internal/sql-server-config.js.map +1 -0
- package/dist/services/sql-server-erp-service/internal/sql-transaction-manager.js +36 -0
- package/dist/services/sql-server-erp-service/internal/sql-transaction-manager.js.map +1 -0
- package/dist/services/sql-server-erp-service/internal/types/sql-server-types.js +2 -0
- package/dist/services/sql-server-erp-service/internal/types/sql-server-types.js.map +1 -0
- 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-helpers.js +66 -0
- package/dist/services/sql-server-erp-service/sql-server-helpers.js.map +1 -0
- 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/sql-server-erp-service/sql-server-service.js +154 -0
- package/dist/services/sql-server-erp-service/sql-server-service.js.map +1 -0
- package/dist/services/sql-server-erp-service/types/sql-input-param.js +2 -0
- package/dist/services/sql-server-erp-service/types/sql-input-param.js.map +1 -0
- package/dist/services/sqlite-service/index.d.ts +1 -1
- package/dist/services/sqlite-service/index.d.ts.map +1 -1
- package/dist/services/sqlite-service/index.js +2 -0
- package/dist/services/sqlite-service/index.js.map +1 -0
- package/dist/services/sqlite-service/sqlite-coordinator.js +60 -0
- package/dist/services/sqlite-service/sqlite-coordinator.js.map +1 -0
- package/dist/types/erp-connector.d.ts +9 -2
- package/dist/types/erp-connector.d.ts.map +1 -1
- package/dist/types/erp-connector.js +2 -0
- package/dist/types/erp-connector.js.map +1 -0
- package/dist/types/erp-types.js +13 -0
- package/dist/types/erp-types.js.map +1 -0
- package/dist/types/flattened-work-order.d.ts +99 -0
- package/dist/types/flattened-work-order.d.ts.map +1 -0
- package/dist/types/flattened-work-order.js +2 -0
- package/dist/types/flattened-work-order.js.map +1 -0
- package/dist/types/index.d.ts +3 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +6 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/application-initializer.js +55 -0
- package/dist/utils/application-initializer.js.map +1 -0
- package/dist/utils/cleanup-numbers.js +6 -0
- package/dist/utils/cleanup-numbers.js.map +1 -0
- package/dist/utils/connector-factory.d.ts +1 -1
- package/dist/utils/connector-factory.d.ts.map +1 -1
- package/dist/utils/connector-factory.js +34 -0
- package/dist/utils/connector-factory.js.map +1 -0
- 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/log-deduper.js +240 -0
- package/dist/utils/connector-log/log-deduper.js.map +1 -0
- package/dist/utils/connector-log/mm-connector-logger-example.d.ts +1 -0
- package/dist/utils/connector-log/mm-connector-logger-example.js +88 -0
- package/dist/utils/connector-log/mm-connector-logger-example.js.map +1 -0
- 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/connector-log/mm-connector-logger.js +151 -0
- package/dist/utils/connector-log/mm-connector-logger.js.map +1 -0
- package/dist/utils/data-transformation.js +38 -0
- package/dist/utils/data-transformation.js.map +1 -0
- package/dist/utils/env.d.ts +8 -0
- package/dist/utils/env.d.ts.map +1 -0
- package/dist/utils/env.js +58 -0
- package/dist/utils/env.js.map +1 -0
- package/dist/utils/erp-timezone-utils.d.ts +20 -0
- package/dist/utils/erp-timezone-utils.d.ts.map +1 -0
- package/dist/utils/erp-timezone-utils.js +75 -0
- package/dist/utils/erp-timezone-utils.js.map +1 -0
- 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/erp-type-from-entity.js +6 -0
- package/dist/utils/erp-type-from-entity.js.map +1 -0
- package/dist/utils/error-utils.js +21 -0
- package/dist/utils/error-utils.js.map +1 -0
- package/dist/utils/http-client.js +189 -0
- package/dist/utils/http-client.js.map +1 -0
- package/dist/utils/index.d.ts +34 -38
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +66 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/local-data-store/database-lock.js +68 -0
- package/dist/utils/local-data-store/database-lock.js.map +1 -0
- package/dist/utils/local-data-store/jobs-shared-data.d.ts +2 -0
- package/dist/utils/local-data-store/jobs-shared-data.d.ts.map +1 -1
- package/dist/utils/local-data-store/jobs-shared-data.js +118 -0
- package/dist/utils/local-data-store/jobs-shared-data.js.map +1 -0
- package/dist/utils/mm-labor-ticket-helpers.d.ts +4 -5
- package/dist/utils/mm-labor-ticket-helpers.d.ts.map +1 -1
- package/dist/utils/mm-labor-ticket-helpers.js +28 -0
- package/dist/utils/mm-labor-ticket-helpers.js.map +1 -0
- package/dist/utils/removeExtraneousFields.d.ts +1 -1
- package/dist/utils/removeExtraneousFields.d.ts.map +1 -1
- package/dist/utils/removeExtraneousFields.js +16 -0
- package/dist/utils/removeExtraneousFields.js.map +1 -0
- package/dist/utils/removeIdFieldFromPayload.d.ts +1 -1
- package/dist/utils/removeIdFieldFromPayload.d.ts.map +1 -1
- package/dist/utils/removeIdFieldFromPayload.js +16 -0
- package/dist/utils/removeIdFieldFromPayload.js.map +1 -0
- package/dist/utils/resource-group.d.ts +1 -1
- package/dist/utils/resource-group.d.ts.map +1 -1
- package/dist/utils/resource-group.js +59 -0
- package/dist/utils/resource-group.js.map +1 -0
- 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/error-processor.js +262 -0
- package/dist/utils/standard-process-drivers/error-processor.js.map +1 -0
- 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/index.js +4 -0
- package/dist/utils/standard-process-drivers/index.js.map +1 -0
- package/dist/utils/standard-process-drivers/labor-ticket-erp-synchronizer.d.ts +16 -1
- package/dist/utils/standard-process-drivers/labor-ticket-erp-synchronizer.d.ts.map +1 -1
- package/dist/utils/standard-process-drivers/labor-ticket-erp-synchronizer.js +299 -0
- package/dist/utils/standard-process-drivers/labor-ticket-erp-synchronizer.js.map +1 -0
- package/dist/utils/standard-process-drivers/mm-entity-processor.d.ts +11 -5
- package/dist/utils/standard-process-drivers/mm-entity-processor.d.ts.map +1 -1
- package/dist/utils/standard-process-drivers/mm-entity-processor.js +174 -0
- package/dist/utils/standard-process-drivers/mm-entity-processor.js.map +1 -0
- package/dist/utils/standard-process-drivers/standard-process-drivers.d.ts +12 -6
- package/dist/utils/standard-process-drivers/standard-process-drivers.d.ts.map +1 -1
- package/dist/utils/standard-process-drivers/standard-process-drivers.js +333 -0
- package/dist/utils/standard-process-drivers/standard-process-drivers.js.map +1 -0
- package/dist/utils/time-utils.d.ts.map +1 -1
- package/dist/utils/time-utils.js +103 -0
- package/dist/utils/time-utils.js.map +1 -0
- package/dist/utils/timezone.js +105 -0
- package/dist/utils/timezone.js.map +1 -0
- package/dist/utils/trimObjectValues.js +11 -0
- package/dist/utils/trimObjectValues.js.map +1 -0
- package/dist/utils/uniqueRows.js +35 -0
- package/dist/utils/uniqueRows.js.map +1 -0
- package/package.json +8 -10
- package/src/index.ts +42 -45
- package/src/knexfile.ts +1 -0
- 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 +52 -39
- package/src/services/data-sync-service/data-sync-service.ts +10 -19
- package/src/services/data-sync-service/index.ts +3 -3
- package/src/services/data-sync-service/jobs/clean-up-expired-cache.ts +5 -4
- package/src/services/data-sync-service/jobs/from-erp.ts +12 -6
- package/src/services/data-sync-service/jobs/retry-failed-labor-tickets.ts +4 -3
- package/src/services/data-sync-service/jobs/run-migrations.ts +4 -3
- package/src/services/data-sync-service/jobs/to-erp.ts +5 -14
- 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/index.ts +6 -14
- package/src/services/mm-api-service/mm-api-service.ts +13 -30
- 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 +0 -1
- 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 +116 -81
- 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 +9 -2
- package/src/types/flattened-work-order.ts +108 -0
- package/src/types/index.ts +10 -2
- 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/env.ts +75 -0
- package/src/utils/erp-timezone-utils.ts +99 -0
- package/src/utils/erp-type-from-entity.ts +1 -1
- package/src/utils/http-client.ts +5 -4
- package/src/utils/index.ts +38 -39
- package/src/utils/local-data-store/database-lock.ts +1 -1
- package/src/utils/local-data-store/jobs-shared-data.ts +2 -0
- package/src/utils/mm-labor-ticket-helpers.ts +12 -9
- 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 +225 -69
- package/src/utils/standard-process-drivers/mm-entity-processor.ts +14 -8
- package/src/utils/standard-process-drivers/standard-process-drivers.ts +39 -25
- package/src/utils/time-utils.ts +14 -3
- package/src/utils/timezone.ts +2 -2
- package/dist/config-CvA-mFWF.js +0 -418
- package/dist/config-CvA-mFWF.js.map +0 -1
- package/dist/connector-factory-BPm2GVVF.js +0 -30
- package/dist/connector-factory-BPm2GVVF.js.map +0 -1
- package/dist/hashed-cache-manager-B15NN8hK.js +0 -322
- package/dist/hashed-cache-manager-B15NN8hK.js.map +0 -1
- package/dist/index-D8qO1NyK.js +0 -192
- package/dist/index-D8qO1NyK.js.map +0 -1
- package/dist/knexfile-Bng2Ru9c.js +0 -20
- package/dist/knexfile-Bng2Ru9c.js.map +0 -1
- package/dist/logger-BWw0_z9q.js +0 -17557
- package/dist/logger-BWw0_z9q.js.map +0 -1
- package/dist/mm-erp-sdk.js +0 -4978
- package/dist/mm-erp-sdk.js.map +0 -1
- package/dist/services/data-sync-service/nats-labor-ticket-listener.d.ts +0 -30
- package/dist/services/data-sync-service/nats-labor-ticket-listener.d.ts.map +0 -1
- package/dist/services/mm-api-service/company-info.d.ts +0 -13
- package/dist/services/mm-api-service/company-info.d.ts.map +0 -1
- package/dist/services/nats-service/nats-service.d.ts +0 -114
- package/dist/services/nats-service/nats-service.d.ts.map +0 -1
- package/dist/services/nats-service/test-nats-subscriber.d.ts +0 -6
- package/dist/services/nats-service/test-nats-subscriber.d.ts.map +0 -1
- package/dist/utils/error-formatter.d.ts +0 -19
- package/dist/utils/error-formatter.d.ts.map +0 -1
- package/src/services/data-sync-service/nats-labor-ticket-listener.ts +0 -342
- package/src/services/mm-api-service/company-info.ts +0 -87
- package/src/services/nats-service/nats-service.ts +0 -351
- package/src/services/nats-service/test-nats-subscriber.ts +0 -96
- package/src/utils/error-formatter.ts +0 -205
|
@@ -1,8 +1,37 @@
|
|
|
1
1
|
import { createLogger, format, transports } from "winston";
|
|
2
2
|
import DailyRotateFile from "winston-daily-rotate-file";
|
|
3
3
|
import path from "path";
|
|
4
|
+
import { getEnvString } from "../../utils/env.js"; // Utility function to get environment variables with default values and validation
|
|
4
5
|
|
|
5
6
|
const logDirectory = "logs";
|
|
7
|
+
const initialLogLevel = getEnvString("LOG_LEVEL", "info");
|
|
8
|
+
const initialNodeEnv = getEnvString("NODE_ENV", "development");
|
|
9
|
+
|
|
10
|
+
const LOGGER_ERROR_PREFIX = "[mm-erp-sdk logger]";
|
|
11
|
+
|
|
12
|
+
const serializeLoggerError = (error: unknown): string => {
|
|
13
|
+
if (error instanceof Error) {
|
|
14
|
+
return error.stack ?? error.message;
|
|
15
|
+
}
|
|
16
|
+
if (typeof error === "string") {
|
|
17
|
+
return error;
|
|
18
|
+
}
|
|
19
|
+
try {
|
|
20
|
+
return JSON.stringify(error);
|
|
21
|
+
} catch {
|
|
22
|
+
return String(error);
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
const handleLoggerError = (error: unknown) => {
|
|
27
|
+
const serialized = serializeLoggerError(error);
|
|
28
|
+
try {
|
|
29
|
+
// eslint-disable-next-line no-console
|
|
30
|
+
console.error(`${LOGGER_ERROR_PREFIX} transport error: ${serialized}`);
|
|
31
|
+
} catch {
|
|
32
|
+
/* ignore failures when reporting logger errors */
|
|
33
|
+
}
|
|
34
|
+
};
|
|
6
35
|
|
|
7
36
|
const MSG_MAX_LEN = 60;
|
|
8
37
|
const MSG_MAX_CHARS = 2048;
|
|
@@ -23,45 +52,8 @@ const truncateString = (str: string): string => {
|
|
|
23
52
|
return result;
|
|
24
53
|
};
|
|
25
54
|
|
|
26
|
-
/**
|
|
27
|
-
* Safe JSON serializer that handles circular references and extracts meaningful error data
|
|
28
|
-
*/
|
|
29
|
-
const safeStringify = (obj: any, indent: number = 2): string => {
|
|
30
|
-
const seen = new WeakSet();
|
|
31
|
-
|
|
32
|
-
return JSON.stringify(
|
|
33
|
-
obj,
|
|
34
|
-
(key, value) => {
|
|
35
|
-
// Handle Error objects specially
|
|
36
|
-
if (value instanceof Error) {
|
|
37
|
-
return {
|
|
38
|
-
message: value.message,
|
|
39
|
-
name: value.name,
|
|
40
|
-
stack: value.stack,
|
|
41
|
-
...(value.constructor.name === 'HTTPError' || value.constructor.name === 'AxiosError' ? {
|
|
42
|
-
status: (value as any).status,
|
|
43
|
-
code: (value as any).code,
|
|
44
|
-
data: (value as any).data,
|
|
45
|
-
} : {}),
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
// Handle circular references
|
|
50
|
-
if (typeof value === "object" && value !== null) {
|
|
51
|
-
if (seen.has(value)) {
|
|
52
|
-
return "[Circular]";
|
|
53
|
-
}
|
|
54
|
-
seen.add(value);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
return value;
|
|
58
|
-
},
|
|
59
|
-
indent
|
|
60
|
-
);
|
|
61
|
-
};
|
|
62
|
-
|
|
63
55
|
const baseFormat = format.printf(({ timestamp, level, message, ...rest }) => {
|
|
64
|
-
let restString =
|
|
56
|
+
let restString = JSON.stringify(rest, undefined, 2);
|
|
65
57
|
restString = restString === "{}" ? "" : restString;
|
|
66
58
|
|
|
67
59
|
let formattedMessage: string;
|
|
@@ -97,25 +89,31 @@ const logFormat = format.combine(
|
|
|
97
89
|
baseFormat
|
|
98
90
|
);
|
|
99
91
|
|
|
92
|
+
const createConsoleTransport = () => {
|
|
93
|
+
const consoleTransport = new transports.Console({
|
|
94
|
+
format: format.combine(
|
|
95
|
+
format.timestamp(),
|
|
96
|
+
format.splat(),
|
|
97
|
+
baseFormat,
|
|
98
|
+
format.colorize({ all: true })
|
|
99
|
+
),
|
|
100
|
+
});
|
|
101
|
+
consoleTransport.on("error", handleLoggerError);
|
|
102
|
+
return consoleTransport;
|
|
103
|
+
};
|
|
104
|
+
|
|
100
105
|
// Create a basic logger with default configuration
|
|
101
106
|
const logger = createLogger({
|
|
102
|
-
level:
|
|
107
|
+
level: initialLogLevel,
|
|
103
108
|
format: logFormat,
|
|
104
|
-
transports: [
|
|
105
|
-
new transports.Console({
|
|
106
|
-
format: format.combine(
|
|
107
|
-
format.timestamp(),
|
|
108
|
-
format.splat(),
|
|
109
|
-
baseFormat,
|
|
110
|
-
format.colorize({ all: true })
|
|
111
|
-
),
|
|
112
|
-
}),
|
|
113
|
-
],
|
|
109
|
+
transports: [createConsoleTransport()],
|
|
114
110
|
});
|
|
115
111
|
|
|
112
|
+
logger.on("error", handleLoggerError);
|
|
113
|
+
|
|
116
114
|
// Helper function to create a file transport with shared configuration
|
|
117
115
|
const createFileTransport = (): DailyRotateFile => {
|
|
118
|
-
|
|
116
|
+
const transport = new DailyRotateFile({
|
|
119
117
|
filename: path.join(logDirectory, "%DATE%.log"),
|
|
120
118
|
datePattern: "YYYY-MM-DD",
|
|
121
119
|
zippedArchive: true,
|
|
@@ -123,6 +121,8 @@ const createFileTransport = (): DailyRotateFile => {
|
|
|
123
121
|
maxFiles: "14d",
|
|
124
122
|
format: logFormat,
|
|
125
123
|
});
|
|
124
|
+
transport.on("error", handleLoggerError);
|
|
125
|
+
return transport;
|
|
126
126
|
};
|
|
127
127
|
|
|
128
128
|
// Rotate mitigation helper: attaches rotate handler to transport and recursively attaches to replacements
|
|
@@ -136,35 +136,76 @@ function attachRotateMitigation(
|
|
|
136
136
|
if (isRefreshing) return;
|
|
137
137
|
isRefreshing = true;
|
|
138
138
|
let removalTimer: NodeJS.Timeout | null = null;
|
|
139
|
+
let next: DailyRotateFile | null = null;
|
|
139
140
|
|
|
140
|
-
|
|
141
|
-
const next = createFileTransport();
|
|
142
|
-
// When the new file is created, remove the old transport
|
|
143
|
-
next.on("new", () => {
|
|
141
|
+
const cleanupRefresh = () => {
|
|
144
142
|
if (removalTimer) {
|
|
145
143
|
clearTimeout(removalTimer);
|
|
146
144
|
removalTimer = null;
|
|
147
145
|
}
|
|
148
|
-
try {
|
|
149
|
-
logger.remove(transport);
|
|
150
|
-
} catch {}
|
|
151
146
|
isRefreshing = false;
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
try {
|
|
150
|
+
// Create replacement first to avoid any logging gap
|
|
151
|
+
next = createFileTransport();
|
|
152
|
+
// When the new file is created, remove the old transport
|
|
153
|
+
next.on("new", () => {
|
|
154
|
+
if (removalTimer) {
|
|
155
|
+
clearTimeout(removalTimer);
|
|
156
|
+
removalTimer = null;
|
|
157
|
+
}
|
|
158
|
+
try {
|
|
159
|
+
logger.remove(transport);
|
|
160
|
+
} catch (error) {
|
|
161
|
+
handleLoggerError(error);
|
|
162
|
+
}
|
|
163
|
+
cleanupRefresh();
|
|
164
|
+
});
|
|
165
|
+
attachRotateMitigation(next, opts);
|
|
159
166
|
try {
|
|
160
|
-
logger.
|
|
161
|
-
} catch {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
167
|
+
logger.add(next);
|
|
168
|
+
} catch (error) {
|
|
169
|
+
handleLoggerError(error);
|
|
170
|
+
cleanupRefresh();
|
|
171
|
+
try {
|
|
172
|
+
logger.remove(next);
|
|
173
|
+
} catch {}
|
|
174
|
+
try {
|
|
175
|
+
if (typeof next.close === "function") {
|
|
176
|
+
next.close();
|
|
177
|
+
}
|
|
178
|
+
} catch {}
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
165
181
|
|
|
166
|
-
|
|
167
|
-
|
|
182
|
+
// Fallback: if the "new" event doesn't fire, remove the old transport after a grace period
|
|
183
|
+
const REMOVAL_GRACE_MS = 30000;
|
|
184
|
+
removalTimer = setTimeout(() => {
|
|
185
|
+
try {
|
|
186
|
+
logger.remove(transport);
|
|
187
|
+
} catch (error) {
|
|
188
|
+
handleLoggerError(error);
|
|
189
|
+
}
|
|
190
|
+
cleanupRefresh();
|
|
191
|
+
}, REMOVAL_GRACE_MS);
|
|
192
|
+
|
|
193
|
+
// Keep console and other transports intact; do not silence or clear
|
|
194
|
+
logger.level = logLevel;
|
|
195
|
+
} catch (error) {
|
|
196
|
+
cleanupRefresh();
|
|
197
|
+
handleLoggerError(error);
|
|
198
|
+
if (next) {
|
|
199
|
+
try {
|
|
200
|
+
logger.remove(next);
|
|
201
|
+
} catch {}
|
|
202
|
+
try {
|
|
203
|
+
if (typeof next.close === "function") {
|
|
204
|
+
next.close();
|
|
205
|
+
}
|
|
206
|
+
} catch {}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
168
209
|
});
|
|
169
210
|
}
|
|
170
211
|
|
|
@@ -194,22 +235,16 @@ export const configureLogger = (logLevel: string, nodeEnv: string) => {
|
|
|
194
235
|
|
|
195
236
|
// Add console transport in non-production environments
|
|
196
237
|
if (nodeEnv !== "production") {
|
|
197
|
-
logger.add(
|
|
198
|
-
new transports.Console({
|
|
199
|
-
format: format.combine(
|
|
200
|
-
format.timestamp(),
|
|
201
|
-
format.splat(),
|
|
202
|
-
baseFormat,
|
|
203
|
-
format.colorize({ all: true })
|
|
204
|
-
),
|
|
205
|
-
})
|
|
206
|
-
);
|
|
238
|
+
logger.add(createConsoleTransport());
|
|
207
239
|
}
|
|
208
240
|
|
|
209
241
|
// Set the log level
|
|
210
242
|
logger.level = logLevel;
|
|
211
243
|
};
|
|
212
244
|
|
|
245
|
+
// Ensure file logging is configured as soon as the module loads
|
|
246
|
+
configureLogger(initialLogLevel, initialNodeEnv);
|
|
247
|
+
|
|
213
248
|
// Add fatal method for Graceful compatibility
|
|
214
249
|
(logger as any).fatal = (err: any, meta?: any) => logger.error(err, meta);
|
|
215
250
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { SqlServerService } from "./sql-server-service";
|
|
2
|
-
import { SqlServerHelper } from "./sql-server-helpers";
|
|
3
|
-
import { SQLInput } from "./types/sql-input-param";
|
|
1
|
+
import { SqlServerService } from "./sql-server-service.js";
|
|
2
|
+
import { SqlServerHelper } from "./sql-server-helpers.js";
|
|
3
|
+
import { SQLInput } from "./types/sql-input-param.js";
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* A class to manage interactions with SQL Server
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import sql from "mssql";
|
|
2
|
-
import { SQLInput } from "../types/sql-input-param";
|
|
3
|
-
import { SQLTransactionOperation } from "./sql-transaction-manager";
|
|
2
|
+
import { SQLInput } from "../types/sql-input-param.js";
|
|
3
|
+
import { SQLTransactionOperation } from "./sql-transaction-manager.js";
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Insert a new labor ticket into the database.
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { SQLTransactionManager } from "./internal/sql-transaction-manager";
|
|
1
|
+
import { SQLTransactionManager } from "./internal/sql-transaction-manager.js";
|
|
2
2
|
import {
|
|
3
3
|
SQLLaborTicketInsertOperation,
|
|
4
4
|
SQLLaborTicketUpdateOperation,
|
|
5
|
-
} from "./internal/sql-labor-ticket-operations";
|
|
6
|
-
import { MMReceiveLaborTicket } from "../mm-api-service/types/receive-types";
|
|
7
|
-
import { SqlServerService } from "./sql-server-service";
|
|
8
|
-
import logger from "../reporting-service/logger";
|
|
9
|
-
import { SQLInput } from "./types/sql-input-param";
|
|
5
|
+
} from "./internal/sql-labor-ticket-operations.js";
|
|
6
|
+
import { MMReceiveLaborTicket } from "../mm-api-service/types/receive-types.js";
|
|
7
|
+
import { SqlServerService } from "./sql-server-service.js";
|
|
8
|
+
import logger from "../reporting-service/logger.js";
|
|
9
|
+
import { SQLInput } from "./types/sql-input-param.js";
|
|
10
10
|
|
|
11
11
|
export class SqlServerHelper {
|
|
12
12
|
/**
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import sql, { ConnectionPool, IRecordSet } from "mssql";
|
|
2
|
-
import { SQLServerConfigSchema } from "./internal/sql-server-config";
|
|
3
|
-
import logger from "../reporting-service/logger";
|
|
4
|
-
import { ERPResponse } from "../../types/erp-types";
|
|
5
|
-
import { SQLServerConfiguration } from "./configuration";
|
|
2
|
+
import { SQLServerConfigSchema } from "./internal/sql-server-config.js";
|
|
3
|
+
import logger from "../reporting-service/logger.js";
|
|
4
|
+
import { ERPResponse } from "../../types/erp-types.js";
|
|
5
|
+
import { SQLServerConfiguration } from "./configuration.js";
|
|
6
6
|
|
|
7
7
|
type PagingParams = {
|
|
8
8
|
limit?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { SQLiteCoordinator } from "./sqlite-coordinator";
|
|
1
|
+
export { SQLiteCoordinator } from "./sqlite-coordinator.js";
|
|
@@ -2,8 +2,8 @@ import {
|
|
|
2
2
|
acquireDatabaseLock,
|
|
3
3
|
releaseDatabaseLock,
|
|
4
4
|
getDatabaseLock,
|
|
5
|
-
} from "../../utils/local-data-store/database-lock";
|
|
6
|
-
import { logger } from "../reporting-service";
|
|
5
|
+
} from "../../utils/local-data-store/database-lock.js";
|
|
6
|
+
import { logger } from "../reporting-service/index.js";
|
|
7
7
|
|
|
8
8
|
export class SQLiteCoordinator {
|
|
9
9
|
private static readonly LOCK_TIMEOUT_MS = 30_000; // 30 seconds
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MMReceiveLaborTicket } from "../services/mm-api-service/types/receive-types";
|
|
1
|
+
import { MMReceiveLaborTicket } from "../services/mm-api-service/types/receive-types.js";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Interface for ERP connectors.
|
|
@@ -14,6 +14,10 @@ export interface IERPConnector {
|
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* Sync data from the ERP system to MM.
|
|
17
|
+
* Timezone expectations:
|
|
18
|
+
* - When sending ERP data to MachineMetrics (e.g., via StandardProcessDrivers or MMEntityProcessor),
|
|
19
|
+
* connectors MUST convert all datetime fields to ISO-8601 UTC strings (trailing `Z` or explicit offset)
|
|
20
|
+
* before invoking SDK helpers. The SDK validates/forwards these values but does not apply timezone shifts.
|
|
17
21
|
*/
|
|
18
22
|
syncFromERP(): Promise<void>;
|
|
19
23
|
syncFromERPCompleted(): Promise<void>;
|
|
@@ -31,13 +35,16 @@ export interface IERPConnector {
|
|
|
31
35
|
retryFailedLaborTicketsCompleted(): Promise<void>;
|
|
32
36
|
|
|
33
37
|
/**
|
|
34
|
-
* Start the connector. Typically a connector should delegate control to the data-sync-service.
|
|
38
|
+
* Start the connector. Typically a connector should delegate control to the data-sync-service via runDataSyncService().
|
|
35
39
|
*/
|
|
36
40
|
startUp(): Promise<void>;
|
|
37
41
|
}
|
|
38
42
|
|
|
39
43
|
/**
|
|
40
44
|
* Interface for standard process methods that call ERP connectors back to create or update labor tickets.
|
|
45
|
+
*
|
|
46
|
+
* Timestamp fields on `MMReceiveLaborTicket` objects have already been converted by the SDKfrom MM's
|
|
47
|
+
* UTC API responses into the ERP's local timezone, based on the company's timezone setting.
|
|
41
48
|
*/
|
|
42
49
|
export interface IERPLaborTicketHandler {
|
|
43
50
|
createLaborTicketInERP(
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical representation of a flattened work order row that contains the
|
|
3
|
+
* information needed to build MM work order entities plus their operations.
|
|
4
|
+
*
|
|
5
|
+
* All properties are optional to maintain backwards compatibility with
|
|
6
|
+
* existing connectors.
|
|
7
|
+
*/
|
|
8
|
+
export interface FlattenedWorkOrderPartFields {
|
|
9
|
+
/** ERP part number (required for Parts when present). */
|
|
10
|
+
partNumber?: string | number;
|
|
11
|
+
/** ERP part revision or version string. */
|
|
12
|
+
partRevision?: string | number;
|
|
13
|
+
/** Routing/method identifier (defaults to "Standard" when omitted). */
|
|
14
|
+
method?: string;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export interface FlattenedWorkOrderPartOperationFields {
|
|
18
|
+
/** Sequence number of the operation on the routing. */
|
|
19
|
+
sequenceNumber?: string | number;
|
|
20
|
+
/** Resource or machine identifier responsible for the operation. */
|
|
21
|
+
resourceId?: string | number;
|
|
22
|
+
/** Operation cycle time expressed in milliseconds. */
|
|
23
|
+
cycleTimeMs?: number;
|
|
24
|
+
/** Operation setup time expressed in milliseconds. */
|
|
25
|
+
setupTimeMs?: number;
|
|
26
|
+
/** Human-readable description of the operation. */
|
|
27
|
+
operationDescription?: string;
|
|
28
|
+
/** Quantity of parts operated on per cycle. */
|
|
29
|
+
quantityPerPart?: number;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export interface FlattenedWorkOrderFields
|
|
33
|
+
extends FlattenedWorkOrderPartFields {
|
|
34
|
+
/** Unique identifier for the work order in the ERP. */
|
|
35
|
+
workOrderId?: string | number;
|
|
36
|
+
/** Lot number (if the ERP distinguishes lots). */
|
|
37
|
+
lot?: string | number;
|
|
38
|
+
/** Split identifier (if the ERP splits orders). */
|
|
39
|
+
split?: string | number;
|
|
40
|
+
/** Sub identifier (for multi-level orders). */
|
|
41
|
+
sub?: string | number;
|
|
42
|
+
/** Work order status (e.g., Open, Closed, Released). */
|
|
43
|
+
status?: string;
|
|
44
|
+
/**
|
|
45
|
+
* Due date expressed as an ISO-8601 UTC string (trailing `Z` or explicit offset).
|
|
46
|
+
* The SDK validates but does not shift timezones.
|
|
47
|
+
*/
|
|
48
|
+
dueDate?: string;
|
|
49
|
+
/** Free-form description of the work order. */
|
|
50
|
+
description?: string;
|
|
51
|
+
/** Scheduled start datetime in ISO-8601 UTC form. */
|
|
52
|
+
scheduledStartDate?: string;
|
|
53
|
+
/** Scheduled end datetime in ISO-8601 UTC form. */
|
|
54
|
+
scheduledEndDate?: string;
|
|
55
|
+
/** Closed datetime in ISO-8601 UTC form. */
|
|
56
|
+
closedDate?: string;
|
|
57
|
+
/** Quantity required by the work order. */
|
|
58
|
+
quantityRequired?: number;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export interface FlattenedWorkOrderOperationFields {
|
|
62
|
+
/** Work order identifier (repeated for each operation). */
|
|
63
|
+
workOrderId?: string | number;
|
|
64
|
+
/** Lot identifier for the operation row. */
|
|
65
|
+
lot?: string | number;
|
|
66
|
+
/** Split identifier for the operation row. */
|
|
67
|
+
split?: string | number;
|
|
68
|
+
/** Sub identifier for the operation row. */
|
|
69
|
+
sub?: string | number;
|
|
70
|
+
/** Sequence number for the specific operation. */
|
|
71
|
+
sequenceNumber?: string | number;
|
|
72
|
+
/** Resource or machine identifier for the operation. */
|
|
73
|
+
resourceId?: string | number;
|
|
74
|
+
/** Quantity started on the operation. */
|
|
75
|
+
startQuantity?: number;
|
|
76
|
+
/** Quantity finished on the operation. */
|
|
77
|
+
finishQuantity?: number;
|
|
78
|
+
/** Expected reject percentage (0-1). */
|
|
79
|
+
expectedRejectRate?: number;
|
|
80
|
+
/** Scheduled start datetime (ISO-8601 UTC). */
|
|
81
|
+
opScheduledStartDate?: string;
|
|
82
|
+
/** Scheduled finish datetime (ISO-8601 UTC). */
|
|
83
|
+
opScheduledFinishDate?: string;
|
|
84
|
+
/** Closed datetime for the operation (ISO-8601 UTC). */
|
|
85
|
+
opClosedDate?: string;
|
|
86
|
+
/** Production burden rate per hour. */
|
|
87
|
+
productionburdenRateHourly?: number | string;
|
|
88
|
+
/** Setup burden rate per hour. */
|
|
89
|
+
setupburdenRatehourly?: number | string;
|
|
90
|
+
/** Operation type (Production, Setup, etc.). */
|
|
91
|
+
operationType?: string;
|
|
92
|
+
/** Quantity per part for the operation. */
|
|
93
|
+
quantityPerPart?: number;
|
|
94
|
+
/** Operation status (defaults to work-order status when omitted). */
|
|
95
|
+
opStatus?: string;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export type FlattenedWorkOrderRowBase =
|
|
99
|
+
FlattenedWorkOrderPartFields &
|
|
100
|
+
FlattenedWorkOrderPartOperationFields &
|
|
101
|
+
FlattenedWorkOrderFields &
|
|
102
|
+
FlattenedWorkOrderOperationFields;
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Canonical flattened row that callers pass into
|
|
106
|
+
* `StandardProcessDrivers.syncWorkOrderBatchFromFlattened`.
|
|
107
|
+
*/
|
|
108
|
+
export type FlattenedWorkOrderRow = FlattenedWorkOrderRowBase;
|
package/src/types/index.ts
CHANGED
|
@@ -3,10 +3,18 @@
|
|
|
3
3
|
* This file re-exports all type definitions that are part of the public API.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
export type { IERPConnector } from "./erp-connector";
|
|
6
|
+
export type { IERPConnector } from "./erp-connector.js";
|
|
7
7
|
export type {
|
|
8
8
|
ERPObjType,
|
|
9
9
|
ERPPagination,
|
|
10
10
|
ERPResponse,
|
|
11
11
|
ERPObject,
|
|
12
|
-
} from "./erp-types";
|
|
12
|
+
} from "./erp-types.js";
|
|
13
|
+
export type {
|
|
14
|
+
FlattenedWorkOrderRow,
|
|
15
|
+
FlattenedWorkOrderRowBase,
|
|
16
|
+
FlattenedWorkOrderPartFields,
|
|
17
|
+
FlattenedWorkOrderPartOperationFields,
|
|
18
|
+
FlattenedWorkOrderFields,
|
|
19
|
+
FlattenedWorkOrderOperationFields,
|
|
20
|
+
} from "./flattened-work-order.js";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import logger from "../services/reporting-service/logger";
|
|
2
|
-
import { CoreConfiguration } from "../services/data-sync-service/configuration-manager";
|
|
3
|
-
import { SQLiteCoordinator } from "../services/sqlite-service";
|
|
4
|
-
import { getTimezoneOffsetAndPersist } from "./time-utils";
|
|
1
|
+
import logger from "../services/reporting-service/logger.js";
|
|
2
|
+
import { CoreConfiguration } from "../services/data-sync-service/configuration-manager.js";
|
|
3
|
+
import { SQLiteCoordinator } from "../services/sqlite-service/index.js";
|
|
4
|
+
import { getTimezoneOffsetAndPersist } from "./time-utils.js";
|
|
5
5
|
import knex from "knex";
|
|
6
|
-
import config from "../knexfile";
|
|
6
|
+
import config from "../knexfile.js";
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Utility class to handle application initialization tasks
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { IERPConnector } from "../types/erp-connector";
|
|
2
|
-
import logger from "../services/reporting-service/logger";
|
|
1
|
+
import { IERPConnector } from "../types/erp-connector.js";
|
|
2
|
+
import logger from "../services/reporting-service/logger.js";
|
|
3
3
|
import { pathToFileURL } from "url";
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
2
|
import path from 'path';
|
|
3
|
-
import logger from '../../services/reporting-service/logger';
|
|
4
|
-
import type { LogEntry, LogLevelString } from './mm-connector-logger';
|
|
3
|
+
import logger from '../../services/reporting-service/logger.js';
|
|
4
|
+
import type { LogEntry, LogLevelString } from './mm-connector-logger.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Implement a custom LogDeduper or use the provided FileLogDeduper
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { MMApiClient } from '../../services/mm-api-service/mm-api-service';
|
|
2
|
-
import logger from '../../services/reporting-service/logger';
|
|
3
|
-
import type { LogDeduper } from './log-deduper';
|
|
1
|
+
import { MMApiClient } from '../../services/mm-api-service/mm-api-service.js';
|
|
2
|
+
import logger from '../../services/reporting-service/logger.js';
|
|
3
|
+
import type { LogDeduper } from './log-deduper.js';
|
|
4
4
|
|
|
5
5
|
export type LogLevelString = 'info' | 'warn' | 'error';
|
|
6
6
|
|
package/src/utils/env.ts
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This module contains utility functions to get environment variables with default values and validation.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
const normalizeValue = (value?: string | null): string | undefined => {
|
|
6
|
+
if (value === undefined || value === null) {
|
|
7
|
+
return undefined;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const trimmed = value.trim();
|
|
11
|
+
if (!trimmed) {
|
|
12
|
+
return undefined;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const lowered = trimmed.toLowerCase();
|
|
16
|
+
if (lowered === "undefined" || lowered === "null") {
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
return trimmed;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
const warnInvalid = (key: string, rawValue: string | undefined, reason: string) => {
|
|
24
|
+
const received = rawValue !== undefined ? `; received "${rawValue}"` : "";
|
|
25
|
+
console.warn(`[config] ${key} ${reason}${received}`); // eslint-disable-line no-console
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export const getEnvString = (key: string, defaultValue = ""): string => {
|
|
29
|
+
const normalized = normalizeValue(process.env[key]);
|
|
30
|
+
return normalized ?? defaultValue;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export const getEnvNumber = (
|
|
34
|
+
key: string,
|
|
35
|
+
defaultValue: number
|
|
36
|
+
): number => {
|
|
37
|
+
const normalized = normalizeValue(process.env[key]);
|
|
38
|
+
if (normalized === undefined) {
|
|
39
|
+
return defaultValue;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const parsed = Number.parseInt(normalized, 10);
|
|
43
|
+
if (Number.isNaN(parsed)) {
|
|
44
|
+
warnInvalid(key, normalized, `is not a valid number for key ${key}; falling back to default ${defaultValue}`);
|
|
45
|
+
return defaultValue;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return parsed;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
export const getEnvBoolean = (key: string, defaultValue = false): boolean => {
|
|
52
|
+
const normalized = normalizeValue(process.env[key]);
|
|
53
|
+
if (normalized === undefined) {
|
|
54
|
+
return defaultValue;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const truthyValues = new Set(["true", "1", "yes", "y", "on"]);
|
|
58
|
+
const falsyValues = new Set(["false", "0", "no", "n", "off"]);
|
|
59
|
+
const lowered = normalized.toLowerCase();
|
|
60
|
+
|
|
61
|
+
if (truthyValues.has(lowered)) {
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
if (falsyValues.has(lowered)) {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
warnInvalid(key, normalized, "is not a recognized boolean; falling back to default");
|
|
69
|
+
return defaultValue;
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
export const getOptionalEnv = (key: string): string | undefined => {
|
|
73
|
+
return normalizeValue(process.env[key]);
|
|
74
|
+
};
|
|
75
|
+
|