@machinemetrics/mm-erp-sdk 0.1.8-beta.7 → 0.1.8-beta.8
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 +2 -8
- package/dist/{config-152LkbTv.js → config-qat9zgOl.js} +2 -2
- package/dist/{config-152LkbTv.js.map → config-qat9zgOl.js.map} +1 -1
- package/dist/{connector-factory-wivcyMhC.js → connector-factory-C2czCs9v.js} +2 -2
- package/dist/{connector-factory-wivcyMhC.js.map → connector-factory-C2czCs9v.js.map} +1 -1
- package/dist/{hashed-cache-manager-BnviJzB7.js → hashed-cache-manager-CzyFSt2B.js} +4 -4
- package/dist/{hashed-cache-manager-BnviJzB7.js.map → hashed-cache-manager-CzyFSt2B.js.map} +1 -1
- package/dist/{index-DNqHWa8F.js → index-B9wo8pld.js} +2 -2
- package/dist/{index-DNqHWa8F.js.map → index-B9wo8pld.js.map} +1 -1
- package/dist/index.d.ts +4 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/{logger-HAWySEbs.js → logger-Db8CkwR6.js} +11 -83
- package/dist/{logger-HAWySEbs.js.map → logger-Db8CkwR6.js.map} +1 -1
- package/dist/mm-erp-sdk.js +6 -234
- package/dist/mm-erp-sdk.js.map +1 -1
- package/dist/services/data-sync-service/jobs/clean-up-expired-cache.js +4 -4
- package/dist/services/data-sync-service/jobs/from-erp.js +4 -4
- package/dist/services/data-sync-service/jobs/retry-failed-labor-tickets.js +3 -3
- package/dist/services/data-sync-service/jobs/run-migrations.js +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 +3 -3
- package/dist/services/data-sync-service/jobs/to-erp.js.map +1 -1
- package/dist/services/mm-api-service/mm-api-service.d.ts +4 -4
- package/dist/services/mm-api-service/mm-api-service.d.ts.map +1 -1
- package/dist/services/mm-api-service/types/checkpoint.d.ts +1 -2
- package/dist/services/mm-api-service/types/checkpoint.d.ts.map +1 -1
- package/dist/services/reporting-service/logger.d.ts.map +1 -1
- package/dist/types/erp-connector.d.ts +4 -2
- package/dist/types/erp-connector.d.ts.map +1 -1
- package/dist/types/erp-types.d.ts +0 -10
- package/dist/types/erp-types.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/standard-process-drivers/labor-ticket-erp-synchronizer.d.ts +2 -3
- package/dist/utils/standard-process-drivers/labor-ticket-erp-synchronizer.d.ts.map +1 -1
- package/dist/utils/standard-process-drivers/standard-process-drivers.d.ts +3 -3
- package/dist/utils/standard-process-drivers/standard-process-drivers.d.ts.map +1 -1
- package/package.json +1 -4
- package/src/index.ts +6 -27
- package/src/services/data-sync-service/jobs/to-erp.ts +1 -2
- package/src/services/mm-api-service/mm-api-service.ts +4 -4
- package/src/services/mm-api-service/types/checkpoint.ts +1 -3
- package/src/services/reporting-service/logger.ts +11 -94
- package/src/types/erp-connector.ts +5 -2
- package/src/types/erp-types.ts +0 -12
- package/src/types/index.ts +0 -1
- package/src/utils/standard-process-drivers/labor-ticket-erp-synchronizer.ts +2 -3
- package/src/utils/standard-process-drivers/standard-process-drivers.ts +3 -3
- package/dist/services/psql-erp-service/configuration.d.ts +0 -10
- package/dist/services/psql-erp-service/configuration.d.ts.map +0 -1
- package/dist/services/psql-erp-service/index.d.ts +0 -14
- package/dist/services/psql-erp-service/index.d.ts.map +0 -1
- package/dist/services/psql-erp-service/internal/types/psql-types.d.ts +0 -12
- package/dist/services/psql-erp-service/internal/types/psql-types.d.ts.map +0 -1
- package/dist/services/psql-erp-service/psql-helpers.d.ts +0 -32
- package/dist/services/psql-erp-service/psql-helpers.d.ts.map +0 -1
- package/dist/services/psql-erp-service/psql-service.d.ts +0 -43
- package/dist/services/psql-erp-service/psql-service.d.ts.map +0 -1
- package/src/services/psql-erp-service/configuration.ts +0 -9
- package/src/services/psql-erp-service/index.ts +0 -22
- package/src/services/psql-erp-service/internal/types/psql-types.ts +0 -13
- package/src/services/psql-erp-service/psql-helpers.ts +0 -90
- package/src/services/psql-erp-service/psql-service.ts +0 -240
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import "../../../config-
|
|
2
|
-
import { H as HashedCacheManager } from "../../../hashed-cache-manager-
|
|
3
|
-
import { S as SQLiteCoordinator } from "../../../index-
|
|
4
|
-
import { l as logger } from "../../../logger-
|
|
1
|
+
import "../../../config-qat9zgOl.js";
|
|
2
|
+
import { H as HashedCacheManager } from "../../../hashed-cache-manager-CzyFSt2B.js";
|
|
3
|
+
import { S as SQLiteCoordinator } from "../../../index-B9wo8pld.js";
|
|
4
|
+
import { l as logger } from "../../../logger-Db8CkwR6.js";
|
|
5
5
|
logger.level = process.env.LOG_LEVEL || "info";
|
|
6
6
|
const main = async () => {
|
|
7
7
|
const cacheManager = new HashedCacheManager();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import "../../../config-
|
|
2
|
-
import { l as logger } from "../../../logger-
|
|
3
|
-
import { S as SQLiteCoordinator } from "../../../index-
|
|
4
|
-
import { c as createConnectorFromPath } from "../../../connector-factory-
|
|
1
|
+
import "../../../config-qat9zgOl.js";
|
|
2
|
+
import { l as logger } from "../../../logger-Db8CkwR6.js";
|
|
3
|
+
import { S as SQLiteCoordinator } from "../../../index-B9wo8pld.js";
|
|
4
|
+
import { c as createConnectorFromPath } from "../../../connector-factory-C2czCs9v.js";
|
|
5
5
|
logger.level = process.env.LOG_LEVEL || "info";
|
|
6
6
|
const main = async () => {
|
|
7
7
|
try {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import "../../../config-
|
|
2
|
-
import { l as logger } from "../../../logger-
|
|
3
|
-
import { c as createConnectorFromPath } from "../../../connector-factory-
|
|
1
|
+
import "../../../config-qat9zgOl.js";
|
|
2
|
+
import { l as logger } from "../../../logger-Db8CkwR6.js";
|
|
3
|
+
import { c as createConnectorFromPath } from "../../../connector-factory-C2czCs9v.js";
|
|
4
4
|
logger.level = process.env.LOG_LEVEL || "info";
|
|
5
5
|
const main = async () => {
|
|
6
6
|
try {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import knex from "knex";
|
|
2
|
-
import { l as logger } from "../../../logger-
|
|
2
|
+
import { l as logger } from "../../../logger-Db8CkwR6.js";
|
|
3
3
|
import { c as config } from "../../../knexfile-1qKKIORB.js";
|
|
4
4
|
logger.level = process.env.LOG_LEVEL || "info";
|
|
5
5
|
const db = knex(config.local);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"to-erp.d.ts","sourceRoot":"","sources":["../../../../src/services/data-sync-service/jobs/to-erp.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"to-erp.d.ts","sourceRoot":"","sources":["../../../../src/services/data-sync-service/jobs/to-erp.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAQvB,QAAA,MAAM,IAAI,qBAoCT,CAAC;AAoBF,eAAe,IAAI,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import "../../../config-
|
|
2
|
-
import { l as logger } from "../../../logger-
|
|
3
|
-
import { c as createConnectorFromPath } from "../../../connector-factory-
|
|
1
|
+
import "../../../config-qat9zgOl.js";
|
|
2
|
+
import { l as logger } from "../../../logger-Db8CkwR6.js";
|
|
3
|
+
import { c as createConnectorFromPath } from "../../../connector-factory-C2czCs9v.js";
|
|
4
4
|
logger.level = process.env.LOG_LEVEL || "info";
|
|
5
5
|
const main = async () => {
|
|
6
6
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"to-erp.js","sources":["../../../../src/services/data-sync-service/jobs/to-erp.ts"],"sourcesContent":["import \"dotenv/config\";\n\nimport logger from \"
|
|
1
|
+
{"version":3,"file":"to-erp.js","sources":["../../../../src/services/data-sync-service/jobs/to-erp.ts"],"sourcesContent":["import \"dotenv/config\";\n\nimport logger from \"../../reporting-service/logger\";\nimport { createConnectorFromPath } from \"../../../utils/connector-factory\";\n\n// Configure the logger with the correct log level\nlogger.level = process.env.LOG_LEVEL || \"info\";\n\nconst main = async () => {\n try {\n logger.info('Worker for job \"to-erp\" online');\n logger.info(\"==========Starting to-erp job cycle==========\");\n\n // Get the connector path from the environment variable\n const connectorPath = process.env.CONNECTOR_PATH;\n\n if (!connectorPath) {\n throw new Error(\"Connector path not provided in environment variables\");\n }\n\n // Create a new connector instance for this job\n const connector = await createConnectorFromPath(connectorPath);\n\n await connector.syncToERP();\n await connector.syncToERPCompleted();\n\n logger.info(\"==========Completed to-erp job cycle==========\");\n } catch (error) {\n const errorDetails = {\n message: error instanceof Error ? error.message : String(error),\n stack: error instanceof Error ? error.stack : undefined,\n name: error instanceof Error ? error.name : undefined,\n ...(error && typeof error === \"object\" ? error : {}), // Include all enumerable properties if it's an object\n };\n logger.error('Worker for job \"to-erp\" had an error', {\n error: errorDetails,\n connectorPath: process.env.CONNECTOR_PATH,\n });\n\n // Also log to console for immediate visibility\n console.error(\"to-erp job error:\", error);\n\n throw error; // Rethrow so Bree can handle it properly\n }\n};\n\n// Cross-platform module detection fix for Bree compatibility\n// Windows: process.argv[1] uses backslashes, import.meta.url uses forward slashes\n// Linux/Mac: both use forward slashes, so this normalization is safe\nconst normalizedArgv1 = process.argv[1].replace(/\\\\/g, '/');\nconst fileUrl = normalizedArgv1.startsWith('/') ? \n `file://${normalizedArgv1}` : // Unix: file:// + /path = file:///path\n `file:///${normalizedArgv1}`; // Windows: file:/// + C:/path = file:///C:/path\nconst isMainModule = import.meta.url === fileUrl;\n\nif (isMainModule) {\n // This is called when Bree runs this file as a worker\n try {\n await main();\n } catch {\n process.exitCode = 1; // prefer exitCode so stdout/stderr can flush\n }\n}\n\nexport default main;\n"],"names":[],"mappings":";;;AAMA,OAAO,QAAQ,QAAQ,IAAI,aAAa;AAExC,MAAM,OAAO,YAAY;AACvB,MAAI;AACF,WAAO,KAAK,gCAAgC;AAC5C,WAAO,KAAK,+CAA+C;AAG3D,UAAM,gBAAgB,QAAQ,IAAI;AAElC,QAAI,CAAC,eAAe;AAClB,YAAM,IAAI,MAAM,sDAAsD;AAAA,IACxE;AAGA,UAAM,YAAY,MAAM,wBAAwB,aAAa;AAE7D,UAAM,UAAU,UAAA;AAChB,UAAM,UAAU,mBAAA;AAEhB,WAAO,KAAK,gDAAgD;AAAA,EAC9D,SAAS,OAAO;AACd,UAAM,eAAe;AAAA,MACnB,SAAS,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,MAC9D,OAAO,iBAAiB,QAAQ,MAAM,QAAQ;AAAA,MAC9C,MAAM,iBAAiB,QAAQ,MAAM,OAAO;AAAA,MAC5C,GAAI,SAAS,OAAO,UAAU,WAAW,QAAQ,CAAA;AAAA;AAAA,IAAC;AAEpD,WAAO,MAAM,wCAAwC;AAAA,MACnD,OAAO;AAAA,MACP,eAAe,QAAQ,IAAI;AAAA,IAAA,CAC5B;AAGD,YAAQ,MAAM,qBAAqB,KAAK;AAExC,UAAM;AAAA,EACR;AACF;AAKA,MAAM,kBAAkB,QAAQ,KAAK,CAAC,EAAE,QAAQ,OAAO,GAAG;AAC1D,MAAM,UAAU,gBAAgB,WAAW,GAAG,IAC5C,UAAU,eAAe;AAAA;AAAA,EACzB,WAAW,eAAe;AAAA;AAC5B,MAAM,eAAe,YAAY,QAAQ;AAEzC,IAAI,cAAc;AAEhB,MAAI;AACF,UAAM,KAAA;AAAA,EACR,QAAQ;AACN,YAAQ,WAAW;AAAA,EACrB;AACF;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ERPObjType
|
|
1
|
+
import { ERPObjType } from "../../types/erp-types";
|
|
2
2
|
import { MMReceiveLaborTicket } from "./types/receive-types";
|
|
3
3
|
import { MMTokenManager } from "./token-mgr";
|
|
4
4
|
import * as MM_SEND_TYPES from "./types/send-types";
|
|
@@ -197,8 +197,8 @@ export declare class MMApiClient {
|
|
|
197
197
|
* @param failedTicketRefs The failed labor ticket references
|
|
198
198
|
* @returns The response from the MM API
|
|
199
199
|
*/
|
|
200
|
-
addFailedLaborTicketRefs(system:
|
|
201
|
-
fetchFailedLaborTickets(system:
|
|
200
|
+
addFailedLaborTicketRefs(system: string, failedTicketRefs: string[]): Promise<MMApiBaseResponse>;
|
|
201
|
+
fetchFailedLaborTickets(system: string): Promise<MMReceiveLaborTicket[]>;
|
|
202
202
|
/**
|
|
203
203
|
* Send connector logs to the MM API
|
|
204
204
|
* @param logEntry Single log entry to send
|
|
@@ -219,7 +219,7 @@ export declare class MMApiClient {
|
|
|
219
219
|
level: string;
|
|
220
220
|
message: string;
|
|
221
221
|
}[]): Promise<MMApiBaseResponse>;
|
|
222
|
-
deleteFailedLaborTicketIds(system:
|
|
222
|
+
deleteFailedLaborTicketIds(system: string, laborTicketRefs: string[]): Promise<MMApiBaseResponse>;
|
|
223
223
|
/**
|
|
224
224
|
* Fetch machine groups from the MM API
|
|
225
225
|
* @returns Promise with the machine groups data
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mm-api-service.d.ts","sourceRoot":"","sources":["../../../src/services/mm-api-service/mm-api-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"mm-api-service.d.ts","sourceRoot":"","sources":["../../../src/services/mm-api-service/mm-api-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAC;AACpD,OAAO,EACL,UAAU,EAIX,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,uBAAuB,EACxB,MAAM,gCAAgC,CAAC;AAYxC;;;GAGG;AACH,qBAAa,WAAW;IACtB,QAAQ,EAAE,cAAc,CAAC;IACzB,GAAG,EAAE,UAAU,CAAC;IAEhB,OAAO,CAAC,QAAQ,CAA0B;IAE1C,YAAY;;;;;;;;;;;;;MAaV;;YAeY,oBAAoB;IA8BlC;;;;;;;;;;;;;OAaG;YACW,OAAO;IAwCrB;;;;;;;;;;;;;;OAcG;YACW,QAAQ;IA8CtB;;;;;;;;;;;;OAYG;YACW,UAAU;IAwCxB;;;;;;;;;;;;OAYG;YACW,SAAS;YA0CT,cAAc;IAoB5B;;;;OAIG;YACW,eAAe;IAc7B;;;;OAIG;IACG,iBAAiB,CACrB,SAAS,EAAE,aAAa,CAAC,cAAc,EAAE,GACxC,OAAO,CAAC,iBAAiB,CAAC;IAM7B;;;;OAIG;IACG,aAAa,CACjB,KAAK,EAAE,aAAa,CAAC,UAAU,EAAE,GAChC,OAAO,CAAC,iBAAiB,CAAC;IAM7B;;;;OAIG;IACG,sBAAsB,CAC1B,UAAU,EAAE,aAAa,CAAC,mBAAmB,EAAE,GAC9C,OAAO,CAAC,iBAAiB,CAAC;IAM7B;;;;OAIG;IACG,kBAAkB,CACtB,UAAU,EAAE,aAAa,CAAC,eAAe,EAAE,GAC1C,OAAO,CAAC,iBAAiB,CAAC;IAM7B;;;;OAIG;IACG,2BAA2B,CAC/B,mBAAmB,EAAE,aAAa,CAAC,wBAAwB,EAAE,GAC5D,OAAO,CAAC,iBAAiB,CAAC;IAW7B;;;;OAIG;IACG,eAAe,CACnB,OAAO,EAAE,aAAa,CAAC,YAAY,EAAE,GACpC,OAAO,CAAC,iBAAiB,CAAC;IAM7B;;;;OAIG;IACG,eAAe,CACnB,OAAO,EAAE,aAAa,CAAC,YAAY,EAAE,GACpC,OAAO,CAAC,iBAAiB,CAAC;IAM7B;;;;OAIG;IACG,oBAAoB,CACxB,YAAY,EAAE,aAAa,CAAC,iBAAiB,EAAE,GAC9C,OAAO,CAAC,iBAAiB,CAAC;IAM7B;;;;OAIG;IACG,kBAAkB,CACtB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GACrC,OAAO,CAAC,iBAAiB,CAAC;IAO7B;;;OAGG;IACG,4BAA4B,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAMhE;;;;OAIG;IACG,uBAAuB,CAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC5B,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAQlC;;;;OAIG;IACG,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIvE;;;;OAIG;IACG,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIxE;;;;OAIG;IACG,oBAAoB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BjE;;;;;OAKG;IACU,kBAAkB,CAC7B,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,aAAa,CAAC,gBAAgB,EAAE,GACxC,OAAO,CAAC,iBAAiB,CAAC;IAqC7B;;;;;OAKG;IACG,wBAAwB,CAC5B,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,iBAAiB,CAAC;IAO7B;;;;OAIG;IACG,wBAAwB,CAC5B,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,MAAM,EAAE,GACzB,OAAO,CAAC,iBAAiB,CAAC;IAQvB,uBAAuB,CAC3B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAUlC;;;;OAIG;IACG,gBAAgB,CAAC,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAShH;;;;OAIG;IACG,qBAAqB,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAS7G,0BAA0B,CAC9B,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EAAE,GACxB,OAAO,CAAC,iBAAiB,CAAC;IAQ7B;;;OAGG;IACG,kBAAkB,IAAI,OAAO,CAAC,uBAAuB,CAAC;IAQ5D;;;OAGG;IACG,yBAAyB,IAAI,OAAO,CAAC,yBAAyB,CAAC;IAOrE;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAO/B"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { ERPType } from "../../../types/erp-types";
|
|
2
1
|
/**
|
|
3
2
|
* Represents a checkpoint for a specific system, table, and checkpoint type
|
|
4
3
|
*/
|
|
5
4
|
export type Checkpoint = {
|
|
6
|
-
system:
|
|
5
|
+
system: string;
|
|
7
6
|
table: string;
|
|
8
7
|
checkpointType: "import" | "export";
|
|
9
8
|
checkpointValue?: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../../../../src/services/mm-api-service/types/checkpoint.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../../../../src/services/mm-api-service/types/checkpoint.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACpC,eAAe,CAAC,EAAE;QAChB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/services/reporting-service/logger.ts"],"names":[],"mappings":"AA+DA,QAAA,MAAM,MAAM,0BAaV,CAAC;
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/services/reporting-service/logger.ts"],"names":[],"mappings":"AA+DA,QAAA,MAAM,MAAM,0BAaV,CAAC;AAGH,eAAO,MAAM,eAAe,GAAI,UAAU,MAAM,EAAE,SAAS,MAAM,SAgChE,CAAC;AAKF,eAAe,MAAM,CAAC"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { MMReceiveLaborTicket } from "../services/mm-api-service/types/receive-types";
|
|
2
|
-
import { ERPType } from "./erp-types";
|
|
3
2
|
/**
|
|
4
3
|
* Interface for ERP connectors.
|
|
5
4
|
*
|
|
6
5
|
* Required for any connector.
|
|
7
6
|
*/
|
|
8
7
|
export interface IERPConnector {
|
|
9
|
-
|
|
8
|
+
/**
|
|
9
|
+
* The type of ERP system this connector is for.
|
|
10
|
+
*/
|
|
11
|
+
readonly type: string;
|
|
10
12
|
/**
|
|
11
13
|
* Sync data from the ERP system to MM.
|
|
12
14
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"erp-connector.d.ts","sourceRoot":"","sources":["../../src/types/erp-connector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gDAAgD,CAAC;
|
|
1
|
+
{"version":3,"file":"erp-connector.d.ts","sourceRoot":"","sources":["../../src/types/erp-connector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gDAAgD,CAAC;AAEtF;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAE5B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtC;;OAEG;IACH,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpC;;OAEG;IACH,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,gCAAgC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAElD;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,sBAAsB,CACpB,WAAW,EAAE,oBAAoB,GAChC,OAAO,CAAC;QAAE,WAAW,EAAE,oBAAoB,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClE,sBAAsB,CACpB,WAAW,EAAE,oBAAoB,GAChC,OAAO,CAAC,oBAAoB,CAAC,CAAC;CAClC"}
|
|
@@ -1,13 +1,3 @@
|
|
|
1
|
-
export declare enum ERPType {
|
|
2
|
-
INVALID = "INVALID",
|
|
3
|
-
D365 = "D365",
|
|
4
|
-
JOB_BOSS = "JOB_BOSS",
|
|
5
|
-
PROFITKEY = "PROFITKEY",
|
|
6
|
-
PROSHOP = "PROSHOP",
|
|
7
|
-
SYTELINE = "SYTELINE",
|
|
8
|
-
TEMPLATE = "TEMPLATE",
|
|
9
|
-
GLOBALSHOP = "GLOBALSHOP"
|
|
10
|
-
}
|
|
11
1
|
export declare enum ERPObjType {
|
|
12
2
|
RESOURCES = 0,
|
|
13
3
|
PARTS = 1,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"erp-types.d.ts","sourceRoot":"","sources":["../../src/types/erp-types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"erp-types.d.ts","sourceRoot":"","sources":["../../src/types/erp-types.ts"],"names":[],"mappings":"AAAA,oBAAY,UAAU;IACpB,SAAS,IAAA;IACT,KAAK,IAAA;IACL,cAAc,IAAA;IACd,WAAW,IAAA;IACX,qBAAqB,IAAA;IACrB,OAAO,IAAA;IACP,OAAO,IAAA;IACP,aAAa,IAAA;CAEd;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IAC/B,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
* This file re-exports all type definitions that are part of the public API.
|
|
4
4
|
*/
|
|
5
5
|
export type { IERPConnector } from "./erp-connector";
|
|
6
|
-
export type {
|
|
6
|
+
export type { ERPObjType, ERPPagination, ERPResponse, ERPObject, } from "./erp-types";
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,YAAY,EACV,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,YAAY,EACV,UAAU,EACV,aAAa,EACb,WAAW,EACX,SAAS,GACV,MAAM,aAAa,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { ERPType } from "../../types/erp-types";
|
|
2
1
|
import { IERPLaborTicketHandler } from "../../types/erp-connector";
|
|
3
2
|
/**
|
|
4
3
|
* Handles synchronization of labor tickets between MachineMetrics and ERP systems
|
|
@@ -7,11 +6,11 @@ export declare class LaborTicketERPSynchronizer {
|
|
|
7
6
|
/**
|
|
8
7
|
* Synchronizes updated labor tickets from MachineMetrics to an ERP system
|
|
9
8
|
*/
|
|
10
|
-
static syncToERP(connectorType:
|
|
9
|
+
static syncToERP(connectorType: string, connector: IERPLaborTicketHandler): Promise<void>;
|
|
11
10
|
/**
|
|
12
11
|
* Retries labor tickets that have failed to be created or updated in the ERP during the sync
|
|
13
12
|
*/
|
|
14
|
-
static retryFailed(connectorType:
|
|
13
|
+
static retryFailed(connectorType: string, connector: IERPLaborTicketHandler): Promise<void>;
|
|
15
14
|
private static writeLaborTicketIdToMM;
|
|
16
15
|
private static processLaborTicket;
|
|
17
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"labor-ticket-erp-synchronizer.d.ts","sourceRoot":"","sources":["../../../src/utils/standard-process-drivers/labor-ticket-erp-synchronizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"labor-ticket-erp-synchronizer.d.ts","sourceRoot":"","sources":["../../../src/utils/standard-process-drivers/labor-ticket-erp-synchronizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAOnE;;GAEG;AACH,qBAAa,0BAA0B;IACrC;;OAEG;WACU,SAAS,CACpB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,sBAAsB,GAChC,OAAO,CAAC,IAAI,CAAC;IA4GhB;;OAEG;WACU,WAAW,CACtB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,sBAAsB,GAChC,OAAO,CAAC,IAAI,CAAC;mBA+DK,sBAAsB;mBAetB,kBAAkB;CAkDxC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ERPObjType } from "../../types/erp-types";
|
|
2
2
|
import { IERPLaborTicketHandler } from "../../types/erp-connector";
|
|
3
3
|
import { BatchCacheManager } from "../../services/caching-service/batch-cache-manager";
|
|
4
4
|
import { IToRESTApiObject, MMSendWorkOrderBatch } from "../../services/mm-api-service";
|
|
@@ -49,7 +49,7 @@ export declare class StandardProcessDrivers {
|
|
|
49
49
|
* updates the labor ticket id in MM on newly created labor tickets,
|
|
50
50
|
* and saves the checkpoint
|
|
51
51
|
*/
|
|
52
|
-
static syncLaborTicketsToERP(connectorType:
|
|
52
|
+
static syncLaborTicketsToERP(connectorType: string, connector: IERPLaborTicketHandler): Promise<void>;
|
|
53
53
|
/**
|
|
54
54
|
* Retries labor tickets that have failed to be created or updated in the ERP during the sync:
|
|
55
55
|
*
|
|
@@ -57,7 +57,7 @@ export declare class StandardProcessDrivers {
|
|
|
57
57
|
* If the labor ticket is successfully created or updated, it is added to the list of successful labor ticket ids,
|
|
58
58
|
* which are then deleted from the list of failed labor ticket ids.
|
|
59
59
|
*/
|
|
60
|
-
static retryFailedLaborTickets(connectorType:
|
|
60
|
+
static retryFailedLaborTickets(connectorType: string, connector: IERPLaborTicketHandler): Promise<void>;
|
|
61
61
|
/**
|
|
62
62
|
* Writes a batch of records to MM for a specific entity type by:
|
|
63
63
|
* 1. Deduplicating against cached records (localDedupeCount)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standard-process-drivers.d.ts","sourceRoot":"","sources":["../../../src/utils/standard-process-drivers/standard-process-drivers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"standard-process-drivers.d.ts","sourceRoot":"","sources":["../../../src/utils/standard-process-drivers/standard-process-drivers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oDAAoD,CAAC;AACvF,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EAKrB,MAAM,+BAA+B,CAAC;AAIvC;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,SAAgB,gBAAgB,EAAE,MAAM,CAAC;IACzC,SAAgB,gBAAgB,EAAE,MAAM,CAAC;IACzC,SAAgB,cAAc,EAAE,MAAM,CAAC;IACvC,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,WAAW,EAAE,KAAK,CAAC;QACjC,OAAO,EAAE,MAAM,CAAC;QAChB,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;KACtC,CAAC,CAAC;gBAES,OAAO,EAAE;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,gBAAgB,EAAE,MAAM,CAAC;QACzB,gBAAgB,EAAE,MAAM,CAAC;QACzB,cAAc,EAAE,MAAM,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,KAAK,CAAC;YACjB,OAAO,EAAE,MAAM,CAAC;YAChB,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;SACtC,CAAC,CAAC;KACJ;CAUF;AAED;;;;GAIG;AACH,qBAAa,sBAAsB;IACjC;;;;;;;;OAQG;WACU,qBAAqB,CAChC,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,sBAAsB,GAChC,OAAO,CAAC,IAAI,CAAC;IAIhB;;;;;;OAMG;WACU,uBAAuB,CAClC,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,sBAAsB,GAChC,OAAO,CAAC,IAAI,CAAC;IAIhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwEG;WACU,iBAAiB,CAC5B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,gBAAgB,EAAE,EAC7B,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,GAC1C,OAAO,CAAC,uBAAuB,CAAC;IAQnC;;;;;;;;;;;;;;;OAeG;WACU,uBAAuB,CAClC,cAAc,EAAE,oBAAoB,EACpC,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,GAC1C,OAAO,CAAC;QACT,KAAK,EAAE,uBAAuB,CAAC;QAC/B,cAAc,EAAE,uBAAuB,CAAC;QACxC,UAAU,EAAE,uBAAuB,CAAC;QACpC,mBAAmB,EAAE,uBAAuB,CAAC;KAC9C,CAAC;IAuCF;;;;;;;;;;;;;;OAcG;WACU,+BAA+B,CAC1C,aAAa,EAAE,GAAG,EAAE,EACpB,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,GAC1C,OAAO,CAAC;QACT,KAAK,EAAE,uBAAuB,CAAC;QAC/B,cAAc,EAAE,uBAAuB,CAAC;QACxC,UAAU,EAAE,uBAAuB,CAAC;QACpC,mBAAmB,EAAE,uBAAuB,CAAC;KAC9C,CAAC;CAkMH"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@machinemetrics/mm-erp-sdk",
|
|
3
3
|
"description": "A library for syncing data between MachineMetrics and ERP systems",
|
|
4
|
-
"version": "0.1.8-beta.
|
|
4
|
+
"version": "0.1.8-beta.8",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "machinemetrics",
|
|
7
7
|
"main": "dist/mm-erp-sdk.js",
|
|
@@ -33,9 +33,6 @@
|
|
|
33
33
|
"xxhashjs": "^0.2.2",
|
|
34
34
|
"zod": "^3.24.1"
|
|
35
35
|
},
|
|
36
|
-
"optionalDependencies": {
|
|
37
|
-
"odbc": "^2.4.8"
|
|
38
|
-
},
|
|
39
36
|
"devDependencies": {
|
|
40
37
|
"@types/json-stable-stringify": "^1.1.0",
|
|
41
38
|
"@types/lodash": "^4.17.10",
|
package/src/index.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
// Core interfaces and types
|
|
7
7
|
export type { IERPConnector } from "./types/erp-connector";
|
|
8
|
-
export {
|
|
8
|
+
export { ERPObjType } from "./types/erp-types";
|
|
9
9
|
export type { ERPPagination, ERPResponse, ERPObject } from "./types/erp-types";
|
|
10
10
|
|
|
11
11
|
// Configuration interfaces
|
|
@@ -17,13 +17,13 @@ export type { ERPApiConfig } from "./services/erp-api-services/types";
|
|
|
17
17
|
// MM API client and types
|
|
18
18
|
export { MMApiClient } from "./services/mm-api-service";
|
|
19
19
|
export { MMReceiveLaborTicket } from "./services/mm-api-service";
|
|
20
|
-
export type {
|
|
20
|
+
export type {
|
|
21
21
|
MMReceiveLaborTicketReason,
|
|
22
22
|
MMReceiveLaborTicketWorkOrderOperation,
|
|
23
23
|
IToRESTApiObject,
|
|
24
24
|
} from "./services/mm-api-service";
|
|
25
25
|
|
|
26
|
-
export {
|
|
26
|
+
export {
|
|
27
27
|
MMSendPerson,
|
|
28
28
|
MMSendResource,
|
|
29
29
|
MMSendPart,
|
|
@@ -57,11 +57,7 @@ export { getInitialLoadComplete, setInitialLoadComplete } from "./utils";
|
|
|
57
57
|
// HTTP client factory and types for custom API integrations
|
|
58
58
|
export { HTTPClientFactory } from "./utils/http-client";
|
|
59
59
|
export { HTTPError } from "./utils/http-client";
|
|
60
|
-
export type {
|
|
61
|
-
HTTPResponse,
|
|
62
|
-
HTTPClient,
|
|
63
|
-
HTTPRequestConfig,
|
|
64
|
-
} from "./utils/http-client";
|
|
60
|
+
export type { HTTPResponse, HTTPClient, HTTPRequestConfig } from "./utils/http-client";
|
|
65
61
|
|
|
66
62
|
// Application initialization utilities
|
|
67
63
|
export { ApplicationInitializer } from "./utils/application-initializer";
|
|
@@ -81,7 +77,7 @@ export type { WriteEntitiesToMMResult } from "./utils";
|
|
|
81
77
|
export { MMBatchValidationError } from "./utils";
|
|
82
78
|
|
|
83
79
|
// API services
|
|
84
|
-
export type { APIResponse } from
|
|
80
|
+
export type { APIResponse } from './services/erp-api-services/types';
|
|
85
81
|
export { RestAPIService } from "./services/erp-api-services/rest/rest-api-service";
|
|
86
82
|
export { ErrorHandler, GraphQLError } from "./services/erp-api-services/errors";
|
|
87
83
|
export type {
|
|
@@ -109,17 +105,6 @@ export {
|
|
|
109
105
|
} from "./services/sql-server-erp-service";
|
|
110
106
|
export type { SQLInput } from "./services/sql-server-erp-service";
|
|
111
107
|
|
|
112
|
-
// PSQL (Pervasive) services
|
|
113
|
-
export {
|
|
114
|
-
PsqlService,
|
|
115
|
-
formatPsqlDate,
|
|
116
|
-
formatPsqlTime,
|
|
117
|
-
combinePsqlDateTime,
|
|
118
|
-
isPsqlDateEmpty,
|
|
119
|
-
cleanPsqlCharField,
|
|
120
|
-
} from "./services/psql-erp-service";
|
|
121
|
-
export type { PsqlConfiguration } from "./services/psql-erp-service";
|
|
122
|
-
|
|
123
108
|
// Record tracking services
|
|
124
109
|
export { RecordTrackingManager } from "./services/caching-service/record-tracking-manager";
|
|
125
110
|
export type { RecordTrackingObject } from "./services/caching-service/record-tracking-manager";
|
|
@@ -128,10 +113,4 @@ export type { RecordTrackingObject } from "./services/caching-service/record-tra
|
|
|
128
113
|
export { default as knexDatabaseConfig } from "./knexfile";
|
|
129
114
|
|
|
130
115
|
// MM Connector Logging
|
|
131
|
-
export {
|
|
132
|
-
MMConnectorLogger,
|
|
133
|
-
FileLogDeduper,
|
|
134
|
-
LogEntry,
|
|
135
|
-
type LogLevelString,
|
|
136
|
-
type LogResponse,
|
|
137
|
-
} from "./utils";
|
|
116
|
+
export { MMConnectorLogger, FileLogDeduper, LogEntry, type LogLevelString, type LogResponse } from './utils';
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import "dotenv/config";
|
|
2
2
|
|
|
3
|
-
import logger from "
|
|
4
|
-
import { SQLiteCoordinator } from "../../sqlite-service";
|
|
3
|
+
import logger from "../../reporting-service/logger";
|
|
5
4
|
import { createConnectorFromPath } from "../../../utils/connector-factory";
|
|
6
5
|
|
|
7
6
|
// Configure the logger with the correct log level
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import logger from "../reporting-service/logger";
|
|
2
|
-
import { ERPObjType
|
|
2
|
+
import { ERPObjType } from "../../types/erp-types";
|
|
3
3
|
import { MMReceiveLaborTicket } from "./types/receive-types";
|
|
4
4
|
import { MMTokenManager } from "./token-mgr";
|
|
5
5
|
import * as MM_SEND_TYPES from "./types/send-types";
|
|
@@ -624,7 +624,7 @@ export class MMApiClient {
|
|
|
624
624
|
* @returns The response from the MM API
|
|
625
625
|
*/
|
|
626
626
|
async addFailedLaborTicketRefs(
|
|
627
|
-
system:
|
|
627
|
+
system: string,
|
|
628
628
|
failedTicketRefs: string[]
|
|
629
629
|
): Promise<MMApiBaseResponse> {
|
|
630
630
|
return await this.postData(
|
|
@@ -635,7 +635,7 @@ export class MMApiClient {
|
|
|
635
635
|
}
|
|
636
636
|
|
|
637
637
|
async fetchFailedLaborTickets(
|
|
638
|
-
system:
|
|
638
|
+
system: string
|
|
639
639
|
): Promise<MMReceiveLaborTicket[]> {
|
|
640
640
|
const failedTickets = (await this.getData(
|
|
641
641
|
`${this.resourceURLs[ERPObjType.LABOR_TICKETS]}/failed`,
|
|
@@ -675,7 +675,7 @@ export class MMApiClient {
|
|
|
675
675
|
}
|
|
676
676
|
|
|
677
677
|
async deleteFailedLaborTicketIds(
|
|
678
|
-
system:
|
|
678
|
+
system: string,
|
|
679
679
|
laborTicketRefs: string[]
|
|
680
680
|
): Promise<MMApiBaseResponse> {
|
|
681
681
|
return await this.postData(
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import { ERPType } from "../../../types/erp-types";
|
|
2
|
-
|
|
3
1
|
/**
|
|
4
2
|
* Represents a checkpoint for a specific system, table, and checkpoint type
|
|
5
3
|
*/
|
|
6
4
|
export type Checkpoint = {
|
|
7
|
-
system:
|
|
5
|
+
system: string;
|
|
8
6
|
table: string;
|
|
9
7
|
checkpointType: "import" | "export";
|
|
10
8
|
checkpointValue?: {
|
|
@@ -76,105 +76,22 @@ const logger = createLogger({
|
|
|
76
76
|
],
|
|
77
77
|
});
|
|
78
78
|
|
|
79
|
-
// Helper function to create a file transport with shared configuration
|
|
80
|
-
const createFileTransport = (): DailyRotateFile => {
|
|
81
|
-
return new DailyRotateFile({
|
|
82
|
-
filename: path.join(logDirectory, "%DATE%.log"),
|
|
83
|
-
datePattern: "YYYY-MM-DD",
|
|
84
|
-
zippedArchive: true,
|
|
85
|
-
maxSize: "20m",
|
|
86
|
-
maxFiles: "14d",
|
|
87
|
-
format: logFormat,
|
|
88
|
-
});
|
|
89
|
-
};
|
|
90
|
-
|
|
91
|
-
// Rotate mitigation helper: attaches rotate handler to transport and recursively attaches to replacements
|
|
92
|
-
function attachRotateMitigation(
|
|
93
|
-
transport: DailyRotateFile,
|
|
94
|
-
opts: { logLevel: string; nodeEnv: string }
|
|
95
|
-
) {
|
|
96
|
-
const { logLevel, nodeEnv } = opts;
|
|
97
|
-
let isRefreshing = false;
|
|
98
|
-
transport.on("rotate", (_old: string, _new: string) => {
|
|
99
|
-
if (isRefreshing) return;
|
|
100
|
-
isRefreshing = true;
|
|
101
|
-
(logger as any).silent = true;
|
|
102
|
-
|
|
103
|
-
const REFRESH_TIMEOUT_MS = 10000;
|
|
104
|
-
let timeout: NodeJS.Timeout | null = setTimeout(() => {
|
|
105
|
-
(logger as any).silent = false;
|
|
106
|
-
isRefreshing = false;
|
|
107
|
-
console.warn(
|
|
108
|
-
'[logger] Refresh timeout: resuming logging after 10s without "new" event.'
|
|
109
|
-
);
|
|
110
|
-
}, REFRESH_TIMEOUT_MS);
|
|
111
|
-
|
|
112
|
-
// Close and clear existing file transports
|
|
113
|
-
const existing = (logger.transports || []).filter(
|
|
114
|
-
(t: any) => t instanceof DailyRotateFile
|
|
115
|
-
);
|
|
116
|
-
for (const t of existing) {
|
|
117
|
-
const s = (t as any).logStream;
|
|
118
|
-
if (s && typeof s.end === "function") {
|
|
119
|
-
try {
|
|
120
|
-
s.end();
|
|
121
|
-
} catch {}
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
logger.clear();
|
|
125
|
-
|
|
126
|
-
// Create replacement, attach mitigation for future rotations
|
|
127
|
-
const next = createFileTransport();
|
|
128
|
-
next.on("new", () => {
|
|
129
|
-
if (timeout) {
|
|
130
|
-
clearTimeout(timeout);
|
|
131
|
-
timeout = null;
|
|
132
|
-
}
|
|
133
|
-
(logger as any).silent = false;
|
|
134
|
-
isRefreshing = false;
|
|
135
|
-
});
|
|
136
|
-
attachRotateMitigation(next, opts);
|
|
137
|
-
|
|
138
|
-
logger.add(next);
|
|
139
|
-
if (nodeEnv !== "production") {
|
|
140
|
-
logger.add(
|
|
141
|
-
new transports.Console({
|
|
142
|
-
format: format.combine(
|
|
143
|
-
format.timestamp(),
|
|
144
|
-
format.splat(),
|
|
145
|
-
baseFormat,
|
|
146
|
-
format.colorize({ all: true })
|
|
147
|
-
),
|
|
148
|
-
})
|
|
149
|
-
);
|
|
150
|
-
}
|
|
151
|
-
logger.level = logLevel;
|
|
152
|
-
});
|
|
153
|
-
}
|
|
154
|
-
|
|
155
79
|
// Function to reconfigure the logger once CoreConfiguration is available
|
|
156
80
|
export const configureLogger = (logLevel: string, nodeEnv: string) => {
|
|
157
|
-
// Remove existing transports
|
|
158
|
-
try {
|
|
159
|
-
const existingFileTransports = (logger.transports || []).filter(
|
|
160
|
-
(t: any) => t instanceof DailyRotateFile
|
|
161
|
-
);
|
|
162
|
-
for (const t of existingFileTransports) {
|
|
163
|
-
const s = (t as any).logStream;
|
|
164
|
-
if (s && typeof s.end === "function") {
|
|
165
|
-
try {
|
|
166
|
-
s.end();
|
|
167
|
-
} catch {}
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
} catch {}
|
|
171
|
-
|
|
81
|
+
// Remove existing transports
|
|
172
82
|
logger.clear();
|
|
173
83
|
|
|
174
84
|
// Add file transport
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
85
|
+
logger.add(
|
|
86
|
+
new DailyRotateFile({
|
|
87
|
+
filename: path.join(logDirectory, "%DATE%.log"),
|
|
88
|
+
datePattern: "YYYY-MM-DD",
|
|
89
|
+
zippedArchive: true,
|
|
90
|
+
maxSize: "20m",
|
|
91
|
+
maxFiles: "14d",
|
|
92
|
+
format: logFormat,
|
|
93
|
+
})
|
|
94
|
+
);
|
|
178
95
|
|
|
179
96
|
// Add console transport in non-production environments
|
|
180
97
|
if (nodeEnv !== "production") {
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { MMReceiveLaborTicket } from "../services/mm-api-service/types/receive-types";
|
|
2
|
-
import { ERPType } from "./erp-types";
|
|
3
2
|
|
|
4
3
|
/**
|
|
5
4
|
* Interface for ERP connectors.
|
|
@@ -7,7 +6,11 @@ import { ERPType } from "./erp-types";
|
|
|
7
6
|
* Required for any connector.
|
|
8
7
|
*/
|
|
9
8
|
export interface IERPConnector {
|
|
10
|
-
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* The type of ERP system this connector is for.
|
|
12
|
+
*/
|
|
13
|
+
readonly type: string;
|
|
11
14
|
|
|
12
15
|
/**
|
|
13
16
|
* Sync data from the ERP system to MM.
|
package/src/types/erp-types.ts
CHANGED
|
@@ -1,15 +1,3 @@
|
|
|
1
|
-
// TO DO: This will change once the SDK is refactored into its own repo
|
|
2
|
-
export enum ERPType {
|
|
3
|
-
INVALID = "INVALID",
|
|
4
|
-
D365 = "D365",
|
|
5
|
-
JOB_BOSS = "JOB_BOSS",
|
|
6
|
-
PROFITKEY = "PROFITKEY",
|
|
7
|
-
PROSHOP = "PROSHOP",
|
|
8
|
-
SYTELINE = "SYTELINE",
|
|
9
|
-
TEMPLATE = "TEMPLATE",
|
|
10
|
-
GLOBALSHOP = "GLOBALSHOP",
|
|
11
|
-
}
|
|
12
|
-
|
|
13
1
|
export enum ERPObjType {
|
|
14
2
|
RESOURCES,
|
|
15
3
|
PARTS,
|
package/src/types/index.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { ERPType } from "../../types/erp-types";
|
|
2
1
|
import { IERPLaborTicketHandler } from "../../types/erp-connector";
|
|
3
2
|
import { MMApiClient } from "../../services/mm-api-service/mm-api-service";
|
|
4
3
|
import { MMReceiveLaborTicket } from "../../services/mm-api-service/types/receive-types";
|
|
@@ -14,7 +13,7 @@ export class LaborTicketERPSynchronizer {
|
|
|
14
13
|
* Synchronizes updated labor tickets from MachineMetrics to an ERP system
|
|
15
14
|
*/
|
|
16
15
|
static async syncToERP(
|
|
17
|
-
connectorType:
|
|
16
|
+
connectorType: string,
|
|
18
17
|
connector: IERPLaborTicketHandler
|
|
19
18
|
): Promise<void> {
|
|
20
19
|
try {
|
|
@@ -128,7 +127,7 @@ export class LaborTicketERPSynchronizer {
|
|
|
128
127
|
* Retries labor tickets that have failed to be created or updated in the ERP during the sync
|
|
129
128
|
*/
|
|
130
129
|
static async retryFailed(
|
|
131
|
-
connectorType:
|
|
130
|
+
connectorType: string,
|
|
132
131
|
connector: IERPLaborTicketHandler
|
|
133
132
|
): Promise<void> {
|
|
134
133
|
try {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ERPObjType } from "../../types/erp-types";
|
|
2
2
|
import { IERPLaborTicketHandler } from "../../types/erp-connector";
|
|
3
3
|
import { BatchCacheManager } from "../../services/caching-service/batch-cache-manager";
|
|
4
4
|
import {
|
|
@@ -72,7 +72,7 @@ export class StandardProcessDrivers {
|
|
|
72
72
|
* and saves the checkpoint
|
|
73
73
|
*/
|
|
74
74
|
static async syncLaborTicketsToERP(
|
|
75
|
-
connectorType:
|
|
75
|
+
connectorType: string,
|
|
76
76
|
connector: IERPLaborTicketHandler
|
|
77
77
|
): Promise<void> {
|
|
78
78
|
return LaborTicketERPSynchronizer.syncToERP(connectorType, connector);
|
|
@@ -86,7 +86,7 @@ export class StandardProcessDrivers {
|
|
|
86
86
|
* which are then deleted from the list of failed labor ticket ids.
|
|
87
87
|
*/
|
|
88
88
|
static async retryFailedLaborTickets(
|
|
89
|
-
connectorType:
|
|
89
|
+
connectorType: string,
|
|
90
90
|
connector: IERPLaborTicketHandler
|
|
91
91
|
): Promise<void> {
|
|
92
92
|
return LaborTicketERPSynchronizer.retryFailed(connectorType, connector);
|