@machinemetrics/mm-erp-sdk 0.1.1-beta.6 → 0.1.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/dist/{hashed-cache-manager-DkDox9wX.js → hashed-cache-manager-Ci59eC75.js} +2 -7
- package/dist/hashed-cache-manager-Ci59eC75.js.map +1 -0
- package/dist/{index-Cn9ccxOO.js → index-CXbOvFyf.js} +3 -1
- package/dist/{index-Cn9ccxOO.js.map → index-CXbOvFyf.js.map} +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/mm-erp-sdk.js +137 -52
- package/dist/mm-erp-sdk.js.map +1 -1
- package/dist/services/data-sync-service/configuration-manager.d.ts +0 -1
- package/dist/services/data-sync-service/configuration-manager.d.ts.map +1 -1
- package/dist/services/data-sync-service/jobs/clean-up-expired-cache.js +6 -3
- 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 +6 -4
- package/dist/services/data-sync-service/jobs/from-erp.js.map +1 -1
- package/dist/services/data-sync-service/jobs/retry-failed-labor-tickets.js +3 -1
- package/dist/services/data-sync-service/jobs/retry-failed-labor-tickets.js.map +1 -1
- package/dist/services/data-sync-service/jobs/run-migrations.js +7 -1
- package/dist/services/data-sync-service/jobs/run-migrations.js.map +1 -1
- package/dist/services/erp-api-services/graphql/graphql-service.d.ts +5 -0
- package/dist/services/erp-api-services/graphql/graphql-service.d.ts.map +1 -1
- package/dist/services/erp-api-services/rest/rest-api-service.d.ts +5 -0
- package/dist/services/erp-api-services/rest/rest-api-service.d.ts.map +1 -1
- package/dist/services/mm-api-service/mm-api-service.d.ts +5 -0
- package/dist/services/mm-api-service/mm-api-service.d.ts.map +1 -1
- package/dist/services/mm-api-service/types/mm-response-interfaces.d.ts +24 -8
- package/dist/services/mm-api-service/types/mm-response-interfaces.d.ts.map +1 -1
- package/dist/utils/http-client.d.ts +2 -1
- package/dist/utils/http-client.d.ts.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/standard-process-drivers/error-processor.d.ts +5 -5
- package/dist/utils/standard-process-drivers/error-processor.d.ts.map +1 -1
- package/dist/utils/standard-process-drivers/standard-process-drivers.d.ts +10 -9
- package/dist/utils/standard-process-drivers/standard-process-drivers.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +6 -2
- package/src/services/data-sync-service/configuration-manager.ts +0 -9
- package/src/services/data-sync-service/jobs/clean-up-expired-cache.ts +4 -1
- package/src/services/data-sync-service/jobs/from-erp.ts +5 -3
- package/src/services/data-sync-service/jobs/retry-failed-labor-tickets.ts +3 -1
- package/src/services/data-sync-service/jobs/run-migrations.ts +7 -1
- package/src/services/erp-api-services/graphql/graphql-service.ts +8 -0
- package/src/services/erp-api-services/rest/rest-api-service.ts +8 -0
- package/src/services/mm-api-service/mm-api-service.ts +11 -2
- package/src/services/mm-api-service/types/mm-response-interfaces.ts +30 -14
- package/src/utils/http-client.ts +111 -41
- package/src/utils/index.ts +6 -0
- package/src/utils/standard-process-drivers/error-processor.ts +11 -11
- package/src/utils/standard-process-drivers/standard-process-drivers.ts +10 -9
- package/dist/hashed-cache-manager-DkDox9wX.js.map +0 -1
|
@@ -10,7 +10,6 @@ export declare class CoreConfiguration {
|
|
|
10
10
|
readonly mmApiAuthToken: string;
|
|
11
11
|
readonly mmApiRetryAttempts: number;
|
|
12
12
|
readonly cacheTTL: number;
|
|
13
|
-
readonly erpApiRetryAttemptsDef: number;
|
|
14
13
|
readonly erpApiPagingLimit: number;
|
|
15
14
|
readonly fromErpInterval: string;
|
|
16
15
|
readonly toErpInterval: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configuration-manager.d.ts","sourceRoot":"","sources":["../../../src/services/data-sync-service/configuration-manager.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAEvB,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAEjF,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAoB;IAG3C,SAAgB,QAAQ,EAAE,MAAM,CAAC;IACjC,SAAgB,SAAS,EAAE,MAAM,CAAC;IAClC,SAAgB,OAAO,EAAE,MAAM,CAAC;IAGhC,SAAgB,kBAAkB,EAAE,MAAM,CAAC;IAC3C,SAAgB,YAAY,EAAE,MAAM,CAAC;IACrC,SAAgB,cAAc,EAAE,MAAM,CAAC;IACvC,SAAgB,kBAAkB,EAAE,MAAM,CAAC;IAG3C,SAAgB,QAAQ,EAAE,MAAM,CAAC;IAGjC,SAAgB,
|
|
1
|
+
{"version":3,"file":"configuration-manager.d.ts","sourceRoot":"","sources":["../../../src/services/data-sync-service/configuration-manager.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAEvB,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAEjF,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAoB;IAG3C,SAAgB,QAAQ,EAAE,MAAM,CAAC;IACjC,SAAgB,SAAS,EAAE,MAAM,CAAC;IAClC,SAAgB,OAAO,EAAE,MAAM,CAAC;IAGhC,SAAgB,kBAAkB,EAAE,MAAM,CAAC;IAC3C,SAAgB,YAAY,EAAE,MAAM,CAAC;IACrC,SAAgB,cAAc,EAAE,MAAM,CAAC;IACvC,SAAgB,kBAAkB,EAAE,MAAM,CAAC;IAG3C,SAAgB,QAAQ,EAAE,MAAM,CAAC;IAGjC,SAAgB,iBAAiB,EAAE,MAAM,CAAC;IAG1C,SAAgB,eAAe,EAAE,MAAM,CAAC;IACxC,SAAgB,aAAa,EAAE,MAAM,CAAC;IACtC,SAAgB,yBAAyB,EAAE,MAAM,CAAC;IAClD,SAAgB,4BAA4B,EAAE,MAAM,CAAC;IAErD,OAAO;WA0DO,IAAI,IAAI,iBAAiB;CAMxC;AAED;;GAEG;AACH,eAAO,MAAM,yBAAyB,QAAO,sBAiB5C,CAAC;AAEF;;;GAGG;AACH,qBAAa,sBAAsB;aAEf,SAAS,EAAE,MAAM;aACjB,cAAc,EAAE,MAAM;aACtB,kBAAkB,EAAE,MAAM;aAC1B,oBAAoB,EAAE,MAAM;aAC5B,cAAc,EAAE,MAAM;aACtB,aAAa,EAAE,MAAM;gBALrB,SAAS,EAAE,MAAM,EAAE,kBAAkB;IACrC,cAAc,EAAE,MAAM,EAAE,qCAAqC;IAC7D,kBAAkB,EAAE,MAAM,EAAE,yCAAyC;IACrE,oBAAoB,EAAE,MAAM,EAAE,2BAA2B;IACzD,cAAc,EAAE,MAAM,EAAE,gBAAgB;IACxC,aAAa,GAAE,MAAU;CAE5C;AAED;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,QAAO,sBAS5C,CAAC"}
|
|
@@ -3,8 +3,8 @@ var __commonJS = (cb, mod) => function __require() {
|
|
|
3
3
|
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
4
4
|
};
|
|
5
5
|
import "../../../config-2l5vnNkA.js";
|
|
6
|
-
import { H as HashedCacheManager } from "../../../hashed-cache-manager-
|
|
7
|
-
import { S as SQLiteCoordinator } from "../../../index-
|
|
6
|
+
import { H as HashedCacheManager } from "../../../hashed-cache-manager-Ci59eC75.js";
|
|
7
|
+
import { S as SQLiteCoordinator } from "../../../index-CXbOvFyf.js";
|
|
8
8
|
import { l as logger } from "../../../logger-QG73MndU.js";
|
|
9
9
|
var require_clean_up_expired_cache = __commonJS({
|
|
10
10
|
"services/data-sync-service/jobs/clean-up-expired-cache.js"(exports, module) {
|
|
@@ -28,10 +28,13 @@ var require_clean_up_expired_cache = __commonJS({
|
|
|
28
28
|
throw error;
|
|
29
29
|
} finally {
|
|
30
30
|
await cacheManager.destroy();
|
|
31
|
+
logger.info(`==========Completed clean-up-expired-cache job==========`);
|
|
31
32
|
}
|
|
32
33
|
};
|
|
33
34
|
if (require.main === module) {
|
|
34
|
-
|
|
35
|
+
(async () => {
|
|
36
|
+
await main();
|
|
37
|
+
})();
|
|
35
38
|
} else {
|
|
36
39
|
module.exports = main;
|
|
37
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clean-up-expired-cache.js","sources":["../../../../src/services/data-sync-service/jobs/clean-up-expired-cache.ts"],"sourcesContent":["import \"dotenv/config\";\nimport { HashedCacheManager } from \"../../caching-service/hashed-cache-manager\";\nimport { SQLiteCoordinator } from \"../../sqlite-service\";\nimport logger from \"../../../services/reporting-service/logger\";\n\nconst main = async () => {\n const cacheManager = new HashedCacheManager();\n try {\n logger.info('Worker for job \"clean-up-expired-cache\" online');\n logger.info(\n \"==========Starting clean-up-expired-cache job cycle==========\"\n );\n\n await SQLiteCoordinator.executeWithLock(\"clean-up-cache\", async () => {\n await cacheManager.removeExpiredObjects();\n });\n\n logger.info(\n \"==========Completed clean-up-expired-cache job cycle==========\"\n );\n } catch (error) {\n logger.error('Worker for job \"clean-up-expired-cache\" had an error', {\n err: error,\n });\n throw error; // Rethrow so Bree can handle it properly\n } finally {\n await cacheManager.destroy();\n }\n};\n\n// For Bree compatibility - check if this is running as a worker\nif (require.main === module) {\n // This is called when Bree runs this file as a worker\n main();\n} else {\n // Export for potential testing or direct usage\n module.exports = main;\n}\n"],"names":[],"mappings":";;;;;;;;;;AAKA,UAAM,OAAO,YAAY;AACvB,YAAM,eAAe,IAAI,mBAAA;AACzB,UAAI;AACF,eAAO,KAAK,gDAAgD;AAC5D,eAAO;AAAA,UACL;AAAA,QAAA;AAGF,cAAM,kBAAkB,gBAAgB,kBAAkB,YAAY;AACpE,gBAAM,aAAa,qBAAA;AAAA,QACrB,CAAC;AAED,eAAO;AAAA,UACL;AAAA,QAAA;AAAA,MAEJ,SAAS,OAAO;AACd,eAAO,MAAM,wDAAwD;AAAA,UACnE,KAAK;AAAA,QAAA,CACN;AACD,cAAM;AAAA,MACR,UAAA;AACE,cAAM,aAAa,QAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"clean-up-expired-cache.js","sources":["../../../../src/services/data-sync-service/jobs/clean-up-expired-cache.ts"],"sourcesContent":["import \"dotenv/config\";\nimport { HashedCacheManager } from \"../../caching-service/hashed-cache-manager\";\nimport { SQLiteCoordinator } from \"../../sqlite-service\";\nimport logger from \"../../../services/reporting-service/logger\";\n\nconst main = async () => {\n const cacheManager = new HashedCacheManager();\n try {\n logger.info('Worker for job \"clean-up-expired-cache\" online');\n logger.info(\n \"==========Starting clean-up-expired-cache job cycle==========\"\n );\n\n await SQLiteCoordinator.executeWithLock(\"clean-up-cache\", async () => {\n await cacheManager.removeExpiredObjects();\n });\n\n logger.info(\n \"==========Completed clean-up-expired-cache job cycle==========\"\n );\n } catch (error) {\n logger.error('Worker for job \"clean-up-expired-cache\" had an error', {\n err: error,\n });\n throw error; // Rethrow so Bree can handle it properly\n } finally {\n await cacheManager.destroy();\n logger.info(`==========Completed clean-up-expired-cache job==========`);\n }\n};\n\n// For Bree compatibility - check if this is running as a worker\nif (require.main === module) {\n // This is called when Bree runs this file as a worker\n (async () => {\n await main();\n })();\n} else {\n // Export for potential testing or direct usage\n module.exports = main;\n}\n"],"names":[],"mappings":";;;;;;;;;;AAKA,UAAM,OAAO,YAAY;AACvB,YAAM,eAAe,IAAI,mBAAA;AACzB,UAAI;AACF,eAAO,KAAK,gDAAgD;AAC5D,eAAO;AAAA,UACL;AAAA,QAAA;AAGF,cAAM,kBAAkB,gBAAgB,kBAAkB,YAAY;AACpE,gBAAM,aAAa,qBAAA;AAAA,QACrB,CAAC;AAED,eAAO;AAAA,UACL;AAAA,QAAA;AAAA,MAEJ,SAAS,OAAO;AACd,eAAO,MAAM,wDAAwD;AAAA,UACnE,KAAK;AAAA,QAAA,CACN;AACD,cAAM;AAAA,MACR,UAAA;AACE,cAAM,aAAa,QAAA;AACnB,eAAO,KAAK,0DAA0D;AAAA,MACxE;AAAA,IACF;AAGA,QAAI,QAAQ,SAAS,QAAQ;AAE3B,OAAC,YAAY;AACX,cAAM,KAAA;AAAA,MACR,GAAA;AAAA,IACF,OAAO;AAEL,aAAO,UAAU;AAAA,IACnB;AAAA;AAAA;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"from-erp.d.ts","sourceRoot":"","sources":["../../../../src/services/data-sync-service/jobs/from-erp.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAMvB,QAAA,MAAM,IAAI,qBAmCT,CAAC;
|
|
1
|
+
{"version":3,"file":"from-erp.d.ts","sourceRoot":"","sources":["../../../../src/services/data-sync-service/jobs/from-erp.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAMvB,QAAA,MAAM,IAAI,qBAmCT,CAAC;AAeF,eAAe,IAAI,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "../../../config-2l5vnNkA.js";
|
|
2
2
|
import { l as logger } from "../../../logger-QG73MndU.js";
|
|
3
|
-
import { S as SQLiteCoordinator } from "../../../index-
|
|
3
|
+
import { S as SQLiteCoordinator } from "../../../index-CXbOvFyf.js";
|
|
4
4
|
import { c as createConnectorFromPath } from "../../../connector-factory-CQ8e7Tae.js";
|
|
5
5
|
const main = async () => {
|
|
6
6
|
try {
|
|
@@ -32,9 +32,11 @@ const main = async () => {
|
|
|
32
32
|
};
|
|
33
33
|
const isMainModule = import.meta.url === `file://${process.argv[1]}`;
|
|
34
34
|
if (isMainModule) {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
35
|
+
try {
|
|
36
|
+
await main();
|
|
37
|
+
} catch {
|
|
38
|
+
process.exitCode = 1;
|
|
39
|
+
}
|
|
38
40
|
}
|
|
39
41
|
export {
|
|
40
42
|
main as default
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"from-erp.js","sources":["../../../../src/services/data-sync-service/jobs/from-erp.ts"],"sourcesContent":["import \"dotenv/config\";\n\nimport logger from \"../../../services/reporting-service/logger\";\nimport { SQLiteCoordinator } from \"../../sqlite-service\";\nimport { createConnectorFromPath } from \"../../../utils/connector-factory\";\n\nconst main = async () => {\n try {\n logger.info('Worker for job \"from-erp\" online');\n logger.info(\"==========Starting from-erp job cycle==========\");\n\n // Get the connector path from the environment variable\n const connectorPath = process.env.CONNECTOR_PATH;\n\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 SQLiteCoordinator.executeWithLock(\"from-erp\", async () => {\n await connector.syncFromERP();\n });\n\n await connector.syncFromERPCompleted();\n logger.info(\"==========Completed from-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 \"from-erp\" had an error', {\n error: errorDetails,\n });\n\n throw error; // Rethrow so Bree can handle it properly\n }\n};\n\n// For Bree compatibility - check if this is running as a worker\n// In ES modules, we need to check import.meta.url instead of require.main\nconst isMainModule = import.meta.url === `file://${process.argv[1]}`;\n\nif (isMainModule) {\n // This is called when Bree runs this file as a worker\n main()
|
|
1
|
+
{"version":3,"file":"from-erp.js","sources":["../../../../src/services/data-sync-service/jobs/from-erp.ts"],"sourcesContent":["import \"dotenv/config\";\n\nimport logger from \"../../../services/reporting-service/logger\";\nimport { SQLiteCoordinator } from \"../../sqlite-service\";\nimport { createConnectorFromPath } from \"../../../utils/connector-factory\";\n\nconst main = async () => {\n try {\n logger.info('Worker for job \"from-erp\" online');\n logger.info(\"==========Starting from-erp job cycle==========\");\n\n // Get the connector path from the environment variable\n const connectorPath = process.env.CONNECTOR_PATH;\n\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 SQLiteCoordinator.executeWithLock(\"from-erp\", async () => {\n await connector.syncFromERP();\n });\n\n await connector.syncFromERPCompleted();\n logger.info(\"==========Completed from-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 \"from-erp\" had an error', {\n error: errorDetails,\n });\n\n throw error; // Rethrow so Bree can handle it properly\n }\n};\n\n// For Bree compatibility - check if this is running as a worker\n// In ES modules, we need to check import.meta.url instead of require.main\nconst isMainModule = import.meta.url === `file://${process.argv[1]}`;\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;"],"names":[],"mappings":";;;;AAMA,MAAM,OAAO,YAAY;AACvB,MAAI;AACF,WAAO,KAAK,kCAAkC;AAC9C,WAAO,KAAK,iDAAiD;AAG7D,UAAM,gBAAgB,QAAQ,IAAI;AAGlC,QAAI,CAAC,eAAe;AAClB,YAAM,IAAI,MAAM,sDAAsD;AAAA,IACxE;AAGA,UAAM,YAAY,MAAM,wBAAwB,aAAa;AAE7D,UAAM,kBAAkB,gBAAgB,YAAY,YAAY;AAC9D,YAAM,UAAU,YAAA;AAAA,IAClB,CAAC;AAED,UAAM,UAAU,qBAAA;AAChB,WAAO,KAAK,kDAAkD;AAAA,EAChE,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,0CAA0C;AAAA,MACrD,OAAO;AAAA,IAAA,CACR;AAED,UAAM;AAAA,EACR;AACF;AAIA,MAAM,eAAe,YAAY,QAAQ,UAAU,QAAQ,KAAK,CAAC,CAAC;AAElE,IAAI,cAAc;AAEhB,MAAI;AACF,UAAM,KAAA;AAAA,EACR,QAAQ;AACN,YAAQ,WAAW;AAAA,EACrB;AACF;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retry-failed-labor-tickets.js","sources":["../../../../src/services/data-sync-service/jobs/retry-failed-labor-tickets.ts"],"sourcesContent":["import \"dotenv/config\";\n\nimport logger from \"../../../services/reporting-service/logger\";\nimport { createConnectorFromPath } from \"../../../utils/connector-factory\";\n\nconst main = async () => {\n try {\n logger.info('Worker for job \"retry-failed-labor-tickets\" online');\n logger.info(\n \"==========Starting retry-failed-labor-tickets job cycle==========\"\n );\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.retryFailedLaborTickets();\n await connector.retryFailedLaborTicketsCompleted();\n\n logger.info(\n \"==========Completed retry-failed-labor-tickets job cycle==========\"\n );\n } catch (error) {\n logger.error('Worker for job \"retry-failed-labor-tickets\" had an error', {\n err: error,\n });\n throw error; // Rethrow so Bree can handle it properly\n }\n};\n\n// For Bree compatibility - check if this is running as a worker\nif (require.main === module) {\n // This is called when Bree runs this file as a worker\n main();\n} else {\n // Export for potential testing or direct usage\n module.exports = main;\n}\n"],"names":[],"mappings":";;;;;;;;;AAKA,UAAM,OAAO,YAAY;AACvB,UAAI;AACF,eAAO,KAAK,oDAAoD;AAChE,eAAO;AAAA,UACL;AAAA,QAAA;AAIF,cAAM,gBAAgB,QAAQ,IAAI;AAElC,YAAI,CAAC,eAAe;AAClB,gBAAM,IAAI,MAAM,sDAAsD;AAAA,QACxE;AAGA,cAAM,YAAY,MAAM,wBAAwB,aAAa;AAE7D,cAAM,UAAU,wBAAA;AAChB,cAAM,UAAU,iCAAA;AAEhB,eAAO;AAAA,UACL;AAAA,QAAA;AAAA,MAEJ,SAAS,OAAO;AACd,eAAO,MAAM,4DAA4D;AAAA,UACvE,KAAK;AAAA,QAAA,CACN;AACD,cAAM;AAAA,MACR;AAAA,IACF;AAGA,QAAI,QAAQ,SAAS,QAAQ;AAE3B,WAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"retry-failed-labor-tickets.js","sources":["../../../../src/services/data-sync-service/jobs/retry-failed-labor-tickets.ts"],"sourcesContent":["import \"dotenv/config\";\n\nimport logger from \"../../../services/reporting-service/logger\";\nimport { createConnectorFromPath } from \"../../../utils/connector-factory\";\n\nconst main = async () => {\n try {\n logger.info('Worker for job \"retry-failed-labor-tickets\" online');\n logger.info(\n \"==========Starting retry-failed-labor-tickets job cycle==========\"\n );\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.retryFailedLaborTickets();\n await connector.retryFailedLaborTicketsCompleted();\n\n logger.info(\n \"==========Completed retry-failed-labor-tickets job cycle==========\"\n );\n } catch (error) {\n logger.error('Worker for job \"retry-failed-labor-tickets\" had an error', {\n err: error,\n });\n throw error; // Rethrow so Bree can handle it properly\n }\n};\n\n// For Bree compatibility - check if this is running as a worker\nif (require.main === module) {\n // This is called when Bree runs this file as a worker\n main().catch(() => {\n process.exitCode = 1;\n });\n} else {\n // Export for potential testing or direct usage\n module.exports = main;\n}\n"],"names":[],"mappings":";;;;;;;;;AAKA,UAAM,OAAO,YAAY;AACvB,UAAI;AACF,eAAO,KAAK,oDAAoD;AAChE,eAAO;AAAA,UACL;AAAA,QAAA;AAIF,cAAM,gBAAgB,QAAQ,IAAI;AAElC,YAAI,CAAC,eAAe;AAClB,gBAAM,IAAI,MAAM,sDAAsD;AAAA,QACxE;AAGA,cAAM,YAAY,MAAM,wBAAwB,aAAa;AAE7D,cAAM,UAAU,wBAAA;AAChB,cAAM,UAAU,iCAAA;AAEhB,eAAO;AAAA,UACL;AAAA,QAAA;AAAA,MAEJ,SAAS,OAAO;AACd,eAAO,MAAM,4DAA4D;AAAA,UACvE,KAAK;AAAA,QAAA,CACN;AACD,cAAM;AAAA,MACR;AAAA,IACF;AAGA,QAAI,QAAQ,SAAS,QAAQ;AAE3B,WAAA,EAAO,MAAM,MAAM;AACjB,gBAAQ,WAAW;AAAA,MACrB,CAAC;AAAA,IACH,OAAO;AAEL,aAAO,UAAU;AAAA,IACnB;AAAA;AAAA;"}
|
|
@@ -14,7 +14,13 @@ async function runMigrations() {
|
|
|
14
14
|
await db.destroy();
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
|
-
|
|
17
|
+
const isMainModule = import.meta.url === `file://${process.argv[1]}`;
|
|
18
|
+
if (isMainModule) {
|
|
19
|
+
runMigrations().catch((err) => {
|
|
20
|
+
logger.error("Top-level error running migrations:", err);
|
|
21
|
+
process.exit(1);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
18
24
|
export {
|
|
19
25
|
runMigrations as default
|
|
20
26
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-migrations.js","sources":["../../../../src/services/data-sync-service/jobs/run-migrations.ts"],"sourcesContent":["import knex, { Knex } from \"knex\";\nimport logger from \"../../reporting-service/logger\";\nimport config from \"../../../knexfile\";\n\n// MLW TODO Consider the location of knexfile\nconst db: Knex = knex(config.local);\n\nexport default async function runMigrations() {\n try {\n logger.info(\"Running migrations...\");\n await db.migrate.latest();\n logger.info(\"Migrations complete!\");\n } catch (error) {\n logger.error(\"Error running migrations:\", error);\n process.exit(1);\n } finally {\n await db.destroy();\n }\n}\n\
|
|
1
|
+
{"version":3,"file":"run-migrations.js","sources":["../../../../src/services/data-sync-service/jobs/run-migrations.ts"],"sourcesContent":["import knex, { Knex } from \"knex\";\nimport logger from \"../../reporting-service/logger\";\nimport config from \"../../../knexfile\";\n\n// MLW TODO Consider the location of knexfile\nconst db: Knex = knex(config.local);\n\nexport default async function runMigrations() {\n try {\n logger.info(\"Running migrations...\");\n await db.migrate.latest();\n logger.info(\"Migrations complete!\");\n } catch (error) {\n logger.error(\"Error running migrations:\", error);\n process.exit(1);\n } finally {\n await db.destroy();\n }\n}\n\nconst isMainModule = import.meta.url === `file://${process.argv[1]}`;\nif (isMainModule) {\n runMigrations().catch(err => {\n logger.error(\"Top-level error running migrations:\", err);\n process.exit(1);\n });\n}\n"],"names":[],"mappings":";;;AAKA,MAAM,KAAW,KAAK,OAAO,KAAK;AAElC,eAA8B,gBAAgB;AAC5C,MAAI;AACF,WAAO,KAAK,uBAAuB;AACnC,UAAM,GAAG,QAAQ,OAAA;AACjB,WAAO,KAAK,sBAAsB;AAAA,EACpC,SAAS,OAAO;AACd,WAAO,MAAM,6BAA6B,KAAK;AAC/C,YAAQ,KAAK,CAAC;AAAA,EAChB,UAAA;AACE,UAAM,GAAG,QAAA;AAAA,EACX;AACF;AAEA,MAAM,eAAe,YAAY,QAAQ,UAAU,QAAQ,KAAK,CAAC,CAAC;AAClE,IAAI,cAAc;AAChB,gBAAA,EAAgB,MAAM,CAAA,QAAO;AAC3B,WAAO,MAAM,uCAAuC,GAAG;AACvD,YAAQ,KAAK,CAAC;AAAA,EAChB,CAAC;AACH;"}
|
|
@@ -36,5 +36,10 @@ export declare class GraphQLService {
|
|
|
36
36
|
* @throws {HTTPError} For HTTP/network errors only
|
|
37
37
|
*/
|
|
38
38
|
mutate<T>(mutation: string, variables?: Record<string, unknown>): Promise<APIResponse<T>>;
|
|
39
|
+
/**
|
|
40
|
+
* Cleanup all HTTP connections and resources
|
|
41
|
+
* Call this when the service is no longer needed
|
|
42
|
+
*/
|
|
43
|
+
destroy(): Promise<void>;
|
|
39
44
|
}
|
|
40
45
|
//# sourceMappingURL=graphql-service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphql-service.d.ts","sourceRoot":"","sources":["../../../../src/services/erp-api-services/graphql/graphql-service.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAIxC,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,QAAQ,CAAS;gBAEb,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM;YAa5D,UAAU;IASxB;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,qBAAqB;IAY7B;;;;;;OAMG;IACG,KAAK,CAAC,CAAC,EACX,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAgB1B;;;;;;OAMG;IACG,MAAM,CAAC,CAAC,EACZ,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"graphql-service.d.ts","sourceRoot":"","sources":["../../../../src/services/erp-api-services/graphql/graphql-service.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAIxC,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,QAAQ,CAAS;gBAEb,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM;YAa5D,UAAU;IASxB;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,qBAAqB;IAY7B;;;;;;OAMG;IACG,KAAK,CAAC,CAAC,EACX,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAgB1B;;;;;;OAMG;IACG,MAAM,CAAC,CAAC,EACZ,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAgB1B;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
|
|
@@ -31,5 +31,10 @@ export declare class RestAPIService {
|
|
|
31
31
|
get<T>(endpoint: string, query?: QueryParams): Promise<APIResponse<T[]>>;
|
|
32
32
|
patch<T>(endpoint: string, id: string, data: Partial<T>): Promise<APIResponse<T>>;
|
|
33
33
|
post<TRequest, TResponse = TRequest>(endpoint: string, data: TRequest): Promise<APIResponse<TResponse>>;
|
|
34
|
+
/**
|
|
35
|
+
* Cleanup all HTTP connections and resources
|
|
36
|
+
* Call this when the service is no longer needed
|
|
37
|
+
*/
|
|
38
|
+
destroy(): Promise<void>;
|
|
34
39
|
}
|
|
35
40
|
//# sourceMappingURL=rest-api-service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rest-api-service.d.ts","sourceRoot":"","sources":["../../../../src/services/erp-api-services/rest/rest-api-service.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EAGZ,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAKrD;;;;;;;;;GASG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,eAAe,CAAS;gBAG9B,MAAM,EAAE,YAAY,EACpB,aAAa,CAAC,EAAE,MAAM,EACtB,eAAe,CAAC,EAAE,MAAM;YAWZ,UAAU;IASxB,OAAO,CAAC,gBAAgB;IA+BxB;;;;;;;;OAQG;IACH,OAAO,CAAC,eAAe;IA6BvB,OAAO,CAAC,QAAQ;IASV,GAAG,CAAC,CAAC,EACT,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE,WAAgB,GACtB,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;IAkCtB,KAAK,CAAC,CAAC,EACX,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GACf,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAoBpB,IAAI,CAAC,QAAQ,EAAE,SAAS,GAAG,QAAQ,EACvC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,QAAQ,GACb,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"rest-api-service.d.ts","sourceRoot":"","sources":["../../../../src/services/erp-api-services/rest/rest-api-service.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EAGZ,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAKrD;;;;;;;;;GASG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,eAAe,CAAS;gBAG9B,MAAM,EAAE,YAAY,EACpB,aAAa,CAAC,EAAE,MAAM,EACtB,eAAe,CAAC,EAAE,MAAM;YAWZ,UAAU;IASxB,OAAO,CAAC,gBAAgB;IA+BxB;;;;;;;;OAQG;IACH,OAAO,CAAC,eAAe;IA6BvB,OAAO,CAAC,QAAQ;IASV,GAAG,CAAC,CAAC,EACT,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE,WAAgB,GACtB,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;IAkCtB,KAAK,CAAC,CAAC,EACX,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GACf,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAoBpB,IAAI,CAAC,QAAQ,EAAE,SAAS,GAAG,QAAQ,EACvC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,QAAQ,GACb,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAoBlC;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
|
|
@@ -210,5 +210,10 @@ export declare class MMApiClient {
|
|
|
210
210
|
* @returns Promise with the resources data
|
|
211
211
|
*/
|
|
212
212
|
fetchResourcesFromGraphQL(): Promise<MMGraphQLResourceResponse>;
|
|
213
|
+
/**
|
|
214
|
+
* Cleanup all HTTP connections and resources
|
|
215
|
+
* Call this when the service is no longer needed
|
|
216
|
+
*/
|
|
217
|
+
destroy(): Promise<void>;
|
|
213
218
|
}
|
|
214
219
|
//# sourceMappingURL=mm-api-service.d.ts.map
|
|
@@ -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,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAC5D,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;;
|
|
1
|
+
{"version":3,"file":"mm-api-service.d.ts","sourceRoot":"","sources":["../../../src/services/mm-api-service/mm-api-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -56,6 +56,9 @@ export interface MM200LaborTicketResponse extends MMApiBaseResponse {
|
|
|
56
56
|
* Response for partial success of non-labor ticket entities
|
|
57
57
|
* Used for: Resources, Parts, PartOperations, WorkOrders, WorkOrderOperations, Persons, Reasons
|
|
58
58
|
*
|
|
59
|
+
* Note: The API may internally re-batch client submissions. Each error represents
|
|
60
|
+
* a batch that failed due to at least one record having issues.
|
|
61
|
+
*
|
|
59
62
|
* Example response:
|
|
60
63
|
* {
|
|
61
64
|
* message: "WorkOrderOperations partially imported with errors",
|
|
@@ -69,7 +72,7 @@ export interface MM200LaborTicketResponse extends MMApiBaseResponse {
|
|
|
69
72
|
* batch: 1,
|
|
70
73
|
* path: "$.selectionSet.insertErpWorkOrderOperations.args.objects",
|
|
71
74
|
* code: "constraint-violation",
|
|
72
|
-
* batchData: [{ workOrderId: "24-0196", ... }]
|
|
75
|
+
* batchData: [{ workOrderId: "24-0196", ... }] // All records in failing batch
|
|
73
76
|
* }
|
|
74
77
|
* ]
|
|
75
78
|
* },
|
|
@@ -95,6 +98,9 @@ export interface MM207NonLaborTicketResponse extends MMApiBaseResponse {
|
|
|
95
98
|
/**
|
|
96
99
|
* Response for partial success of labor tickets
|
|
97
100
|
*
|
|
101
|
+
* Note: The API may internally re-batch client submissions. Each error represents
|
|
102
|
+
* a batch that failed due to at least one record having issues.
|
|
103
|
+
*
|
|
98
104
|
* Example response:
|
|
99
105
|
* {
|
|
100
106
|
* message: "Labor tickets partially imported with errors",
|
|
@@ -107,7 +113,7 @@ export interface MM207NonLaborTicketResponse extends MMApiBaseResponse {
|
|
|
107
113
|
* batch: 1,
|
|
108
114
|
* path: "$.selectionSet.updateErpLaborTickets.args.objects",
|
|
109
115
|
* code: "constraint-violation",
|
|
110
|
-
* batchData: [{ workOrderId: "24-0196", ... }]
|
|
116
|
+
* batchData: [{ workOrderId: "24-0196", ... }] // All records in failing batch
|
|
111
117
|
* }
|
|
112
118
|
* ],
|
|
113
119
|
* insertErrors: [
|
|
@@ -116,7 +122,7 @@ export interface MM207NonLaborTicketResponse extends MMApiBaseResponse {
|
|
|
116
122
|
* batch: 1,
|
|
117
123
|
* path: "$.selectionSet.insertErpLaborTickets.args.objects",
|
|
118
124
|
* code: "constraint-violation",
|
|
119
|
-
* batchData: [{ workOrderId: "24-0191", ... }]
|
|
125
|
+
* batchData: [{ workOrderId: "24-0191", ... }] // All records in failing batch
|
|
120
126
|
* }
|
|
121
127
|
* ]
|
|
122
128
|
* },
|
|
@@ -149,8 +155,13 @@ export interface MM207LaborTicketResponse extends MMApiBaseResponse {
|
|
|
149
155
|
* Exception structure for complete failure of non-labor ticket entities
|
|
150
156
|
* Used for: Resources, Parts, PartOperations, WorkOrders, WorkOrderOperations, Persons, Reasons
|
|
151
157
|
*
|
|
158
|
+
* IMPORTANT: This structure only applies to 500 errors caused by data validation failures.
|
|
159
|
+
* Other 500 errors (network issues, server errors, etc.) may have different structures.
|
|
152
160
|
* This structure appears in caught exceptions when the API returns 500 status
|
|
153
|
-
* for validation issues that contain structured error information.
|
|
161
|
+
* specifically for validation issues that contain structured error information.
|
|
162
|
+
*
|
|
163
|
+
* Note: The API may internally re-batch client submissions. Each error represents
|
|
164
|
+
* a batch that failed due to at least one record having issues.
|
|
154
165
|
*
|
|
155
166
|
* Example exception.data structure:
|
|
156
167
|
* {
|
|
@@ -162,7 +173,7 @@ export interface MM207LaborTicketResponse extends MMApiBaseResponse {
|
|
|
162
173
|
* errors: [
|
|
163
174
|
* {
|
|
164
175
|
* message: "GraphQL Error: Foreign key violation...",
|
|
165
|
-
* batchData: [{ workOrderId: "24-0196", ... }]
|
|
176
|
+
* batchData: [{ workOrderId: "24-0196", ... }] // All records in failing batch
|
|
166
177
|
* }
|
|
167
178
|
* ]
|
|
168
179
|
* }
|
|
@@ -186,8 +197,13 @@ export interface MM500NonLaborTicketException {
|
|
|
186
197
|
/**
|
|
187
198
|
* Exception structure for complete failure of labor tickets
|
|
188
199
|
*
|
|
200
|
+
* IMPORTANT: This structure only applies to 500 errors caused by data validation failures.
|
|
201
|
+
* Other 500 errors (network issues, server errors, etc.) may have different structures.
|
|
189
202
|
* This structure appears in caught exceptions when the API returns 500 status
|
|
190
|
-
* for validation issues that contain structured error information.
|
|
203
|
+
* specifically for validation issues that contain structured error information.
|
|
204
|
+
*
|
|
205
|
+
* Note: The API may internally re-batch client submissions. Each error represents
|
|
206
|
+
* a batch that failed due to at least one record having issues.
|
|
191
207
|
*
|
|
192
208
|
* Example exception.data structure:
|
|
193
209
|
* {
|
|
@@ -196,13 +212,13 @@ export interface MM500NonLaborTicketException {
|
|
|
196
212
|
* updateErrors: [
|
|
197
213
|
* {
|
|
198
214
|
* message: "GraphQL Error: Foreign key violation...",
|
|
199
|
-
* batchData: [{ workOrderId: "24-0196", ... }]
|
|
215
|
+
* batchData: [{ workOrderId: "24-0196", ... }] // All records in failing batch
|
|
200
216
|
* }
|
|
201
217
|
* ],
|
|
202
218
|
* insertErrors: [
|
|
203
219
|
* {
|
|
204
220
|
* message: "GraphQL Error: Foreign key violation...",
|
|
205
|
-
* batchData: [{ workOrderId: "24-0191", ... }]
|
|
221
|
+
* batchData: [{ workOrderId: "24-0191", ... }] // All records in failing batch
|
|
206
222
|
* }
|
|
207
223
|
* ]
|
|
208
224
|
* }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mm-response-interfaces.d.ts","sourceRoot":"","sources":["../../../../src/services/mm-api-service/types/mm-response-interfaces.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;CACpB;AAMD;;;;;;;;;;GAUG;AACH,MAAM,WAAW,2BAA4B,SAAQ,iBAAiB;IACpE,UAAU,EAAE,GAAG,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,wBAAyB,SAAQ,iBAAiB;IACjE,UAAU,EAAE,GAAG,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAMD
|
|
1
|
+
{"version":3,"file":"mm-response-interfaces.d.ts","sourceRoot":"","sources":["../../../../src/services/mm-api-service/types/mm-response-interfaces.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,8 @@ export interface HTTPResponse<T = unknown> {
|
|
|
19
19
|
}
|
|
20
20
|
export interface HTTPClient {
|
|
21
21
|
request<T = unknown>(config: HTTPRequestConfig): Promise<HTTPResponse<T>>;
|
|
22
|
-
handleError(error: unknown
|
|
22
|
+
handleError(error: unknown): HTTPError;
|
|
23
|
+
destroy(): Promise<void>;
|
|
23
24
|
}
|
|
24
25
|
export interface HTTPClientConfig {
|
|
25
26
|
baseUrl: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/utils/http-client.ts"],"names":[],"mappings":"AAGA,qBAAa,SAAU,SAAQ,KAAK;IAGzB,MAAM,EAAE,MAAM;IACd,IAAI,CAAC,EAAE,MAAM;IACb,IAAI,CAAC,EAAE,OAAO;gBAHrB,OAAO,EAAE,MAAM,EACR,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,YAAA,EACb,IAAI,CAAC,EAAE,OAAO,YAAA;CAKxB;AAED,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AAErE,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,UAAU,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,OAAO;IACvC,IAAI,EAAE,CAAC,CAAC;IACR,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,WAAW,CAAC,KAAK,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/utils/http-client.ts"],"names":[],"mappings":"AAGA,qBAAa,SAAU,SAAQ,KAAK;IAGzB,MAAM,EAAE,MAAM;IACd,IAAI,CAAC,EAAE,MAAM;IACb,IAAI,CAAC,EAAE,OAAO;gBAHrB,OAAO,EAAE,MAAM,EACR,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,YAAA,EACb,IAAI,CAAC,EAAE,OAAO,YAAA;CAKxB;AAED,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AAErE,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,UAAU,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,OAAO;IACvC,IAAI,EAAE,CAAC,CAAC;IACR,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,gBAAgB,GAAG,UAAU;CAGzD"}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -27,6 +27,7 @@ export { BatchCacheManager } from "../services/caching-service/batch-cache-manag
|
|
|
27
27
|
export { StandardProcessDrivers } from "./standard-process-drivers/";
|
|
28
28
|
export type { WriteEntitiesToMMResult, MMBatchValidationError, } from "./standard-process-drivers/";
|
|
29
29
|
export { getCachedTimezoneOffset } from "./local-data-store/jobs-shared-data";
|
|
30
|
+
export { getInitialLoadComplete, setInitialLoadComplete, } from "./local-data-store/jobs-shared-data";
|
|
30
31
|
/**
|
|
31
32
|
* ERP API utilities
|
|
32
33
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EACL,6BAA6B,EAC7B,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAE/B;;GAEG;AACH,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AAC5D,cAAc,cAAc,CAAC;AAE7B;;GAEG;AACH,OAAO,EAAE,qBAAqB,EAAE,MAAM,qDAAqD,CAAC;AAC5F,YAAY,EAAE,oBAAoB,EAAE,MAAM,qDAAqD,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,MAAM,kDAAkD,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,iDAAiD,CAAC;AAEpF;;GAEG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,YAAY,EACV,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EACL,6BAA6B,EAC7B,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAE/B;;GAEG;AACH,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AAC5D,cAAc,cAAc,CAAC;AAE7B;;GAEG;AACH,OAAO,EAAE,qBAAqB,EAAE,MAAM,qDAAqD,CAAC;AAC5F,YAAY,EAAE,oBAAoB,EAAE,MAAM,qDAAqD,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,MAAM,kDAAkD,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,iDAAiD,CAAC;AAEpF;;GAEG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,YAAY,EACV,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAG9E,OAAO,EACL,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,qCAAqC,CAAC;AAE7C;;GAEG;AACH,cAAc,oDAAoD,CAAC;AACnE,cAAc,oDAAoD,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEjE;;GAEG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD;;GAEG;AACH,cAAc,2BAA2B,CAAC;AAE1C;;GAEG;AACH,cAAc,2BAA2B,CAAC;AAE1C;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,sDAAsD,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AAExE;;GAEG;AACH,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -13,7 +13,7 @@ export declare class ErrorProcessor {
|
|
|
13
13
|
*/
|
|
14
14
|
static createFailedRecordKeySet(entityType: ERPObjType, batchErrors: Array<{
|
|
15
15
|
message: string;
|
|
16
|
-
|
|
16
|
+
affectedEntities: IToRESTApiObject[];
|
|
17
17
|
}>): Set<string>;
|
|
18
18
|
/**
|
|
19
19
|
* Filters out failed records, returning only successful ones
|
|
@@ -32,12 +32,12 @@ export declare class ErrorProcessor {
|
|
|
32
32
|
*/
|
|
33
33
|
static cacheSuccessfulRecordsOnPartialFailure(entityType: ERPObjType, toProcess: IToRESTApiObject[], batchErrors: Array<{
|
|
34
34
|
message: string;
|
|
35
|
-
|
|
35
|
+
affectedEntities: IToRESTApiObject[];
|
|
36
36
|
}>, batchCacheManager: BatchCacheManager): Promise<void>;
|
|
37
37
|
/**
|
|
38
38
|
* Extracts error count and batch errors from MM API response for partial failures (HTTP 207)
|
|
39
39
|
* This supports all entities, including the slightly different format for labor tickets.
|
|
40
|
-
* In case of labor tickets, the updateErrors and insertErrors arrays are combined into
|
|
40
|
+
* In case of labor tickets, the updateErrors and insertErrors arrays are combined into affectedEntities.
|
|
41
41
|
* @param mmApiResponse The full MM API response object
|
|
42
42
|
* @param entityType The type of entity being processed (determines response structure)
|
|
43
43
|
* @returns Object containing errorCount and batchErrors
|
|
@@ -47,7 +47,7 @@ export declare class ErrorProcessor {
|
|
|
47
47
|
errorCount: number;
|
|
48
48
|
batchErrors: Array<{
|
|
49
49
|
message: string;
|
|
50
|
-
|
|
50
|
+
affectedEntities: IToRESTApiObject[];
|
|
51
51
|
}>;
|
|
52
52
|
};
|
|
53
53
|
/**
|
|
@@ -61,7 +61,7 @@ export declare class ErrorProcessor {
|
|
|
61
61
|
errorCount: number;
|
|
62
62
|
batchErrors: Array<{
|
|
63
63
|
message: string;
|
|
64
|
-
|
|
64
|
+
affectedEntities: IToRESTApiObject[];
|
|
65
65
|
}>;
|
|
66
66
|
} | null;
|
|
67
67
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-processor.d.ts","sourceRoot":"","sources":["../../../src/utils/standard-process-drivers/error-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oDAAoD,CAAC;AACvF,OAAO,EACL,gBAAgB,EAChB,2BAA2B,EAC3B,wBAAwB,EACzB,MAAM,+BAA+B,CAAC;AAIvC;;GAEG;AACH,qBAAa,cAAc;IACzB;;;;;OAKG;IACH,MAAM,CAAC,wBAAwB,CAC7B,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,KAAK,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,
|
|
1
|
+
{"version":3,"file":"error-processor.d.ts","sourceRoot":"","sources":["../../../src/utils/standard-process-drivers/error-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oDAAoD,CAAC;AACvF,OAAO,EACL,gBAAgB,EAChB,2BAA2B,EAC3B,wBAAwB,EACzB,MAAM,+BAA+B,CAAC;AAIvC;;GAEG;AACH,qBAAa,cAAc;IACzB;;;;;OAKG;IACH,MAAM,CAAC,wBAAwB,CAC7B,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,KAAK,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;KACtC,CAAC,GACD,GAAG,CAAC,MAAM,CAAC;IAuBd;;;;;;OAMG;IACH,MAAM,CAAC,uBAAuB,CAC5B,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,gBAAgB,EAAE,EAC9B,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,GACxB,gBAAgB,EAAE;IAuBrB;;;;;;OAMG;WACU,sCAAsC,CACjD,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,gBAAgB,EAAE,EAC7B,WAAW,EAAE,KAAK,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;KACtC,CAAC,EACF,iBAAiB,EAAE,iBAAiB,GACnC,OAAO,CAAC,IAAI,CAAC;IAqBhB;;;;;;;;OAQG;IACH,MAAM,CAAC,mBAAmB,CACxB,aAAa,EAAE,2BAA2B,GAAG,wBAAwB,EACrE,UAAU,EAAE,UAAU,GACrB;QACD,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,KAAK,CAAC;YACjB,OAAO,EAAE,MAAM,CAAC;YAChB,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;SACtC,CAAC,CAAC;KACJ;IAqGD;;;;;;OAMG;IACH,MAAM,CAAC,mCAAmC,CACxC,SAAS,EAAE,OAAO,EAClB,UAAU,EAAE,UAAU,GACrB;QACD,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,KAAK,CAAC;YACjB,OAAO,EAAE,MAAM,CAAC;YAChB,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;SACtC,CAAC,CAAC;KACJ,GAAG,IAAI;CAkKT"}
|
|
@@ -19,7 +19,7 @@ export declare class MMBatchValidationError extends Error {
|
|
|
19
19
|
readonly httpStatus: number;
|
|
20
20
|
readonly batchErrors: Array<{
|
|
21
21
|
message: string;
|
|
22
|
-
|
|
22
|
+
affectedEntities: IToRESTApiObject[];
|
|
23
23
|
}>;
|
|
24
24
|
constructor(options: {
|
|
25
25
|
message: string;
|
|
@@ -30,7 +30,7 @@ export declare class MMBatchValidationError extends Error {
|
|
|
30
30
|
httpStatus: number;
|
|
31
31
|
batchErrors: Array<{
|
|
32
32
|
message: string;
|
|
33
|
-
|
|
33
|
+
affectedEntities: IToRESTApiObject[];
|
|
34
34
|
}>;
|
|
35
35
|
});
|
|
36
36
|
}
|
|
@@ -79,9 +79,10 @@ export declare class StandardProcessDrivers {
|
|
|
79
79
|
*
|
|
80
80
|
* } catch (error) {
|
|
81
81
|
* if (error instanceof MMBatchValidationError) {
|
|
82
|
-
* // HTTP 207 - Partial success with some validation errors
|
|
83
|
-
* // HTTP 500 - A specific type
|
|
82
|
+
* // HTTP 207 - Partial success with some batches failing due to validation errors
|
|
83
|
+
* // HTTP 500 - A specific type representing complete failure due to validation issues;
|
|
84
84
|
* // other 500 types represent failure due to other issues and are not converted to MMBatchValidationError
|
|
85
|
+
* // Note: Each batch error contains ALL entities from the failing batch, not necessarily just the failed ones
|
|
85
86
|
*
|
|
86
87
|
* console.log(`⚠️ Batch processing completed with errors (HTTP ${error.httpStatus})`);
|
|
87
88
|
* console.log(`📊 Metrics: ${error.upsertedEntities} upserted, ${error.localDedupeCount} locally deduplicated, ${error.apiDedupeCount} API deduplicated`);
|
|
@@ -90,18 +91,18 @@ export declare class StandardProcessDrivers {
|
|
|
90
91
|
* // Process specific batch errors for retry or logging
|
|
91
92
|
* error.batchErrors.forEach((batchError, index) => {
|
|
92
93
|
* console.log(`Batch ${index + 1} error: ${batchError.message}`);
|
|
93
|
-
* console.log(`
|
|
94
|
+
* console.log(`All entities in failing batch:`, batchError.affectedEntities);
|
|
94
95
|
*
|
|
95
|
-
* // Example: Queue
|
|
96
|
-
* await queueForRetry(batchError.
|
|
96
|
+
* // Example: Queue entire failing batch for retry (contains both successful and failed entities)
|
|
97
|
+
* await queueForRetry(batchError.affectedEntities);
|
|
97
98
|
* });
|
|
98
99
|
*
|
|
99
100
|
* // Decide whether to continue or halt based on httpStatus
|
|
100
101
|
* if (error.httpStatus === 207) {
|
|
101
|
-
* // Partial success - some
|
|
102
|
+
* // Partial success - some batches processed successfully, others failed
|
|
102
103
|
* console.log('⚠️ Continuing with partial success');
|
|
103
104
|
* } else if (error.httpStatus === 500) {
|
|
104
|
-
* // Complete failure -
|
|
105
|
+
* // Complete failure - all batches failed due to validation issues
|
|
105
106
|
* console.log('🛑 Complete failure - no records processed');
|
|
106
107
|
* throw error; // Re-throw if complete failure should halt the process
|
|
107
108
|
* }
|
|
@@ -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,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC5D,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,
|
|
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,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC5D,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,OAAO,EACtB,SAAS,EAAE,sBAAsB,GAChC,OAAO,CAAC,IAAI,CAAC;IAIhB;;;;;;OAMG;WACU,uBAAuB,CAClC,aAAa,EAAE,OAAO,EACtB,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.
|
|
4
|
+
"version": "0.1.2",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "machinemetrics",
|
|
7
7
|
"main": "dist/mm-erp-sdk.js",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"@types/mssql": "^9.1.6",
|
|
40
40
|
"@types/node": "^20.0.0",
|
|
41
41
|
"@types/xxhashjs": "^0.2.4",
|
|
42
|
-
"prettier": "^3.
|
|
42
|
+
"prettier": "^3.6.2",
|
|
43
43
|
"typescript": "^5.8.3",
|
|
44
44
|
"vite": "^5.3.4"
|
|
45
45
|
},
|
package/src/index.ts
CHANGED
|
@@ -16,14 +16,14 @@ export type { ERPApiConfig } from "./services/erp-api-services/types";
|
|
|
16
16
|
|
|
17
17
|
// MM API client and types
|
|
18
18
|
export { MMApiClient } from "./services/mm-api-service";
|
|
19
|
-
export type {
|
|
19
|
+
export type {
|
|
20
20
|
MMReceiveLaborTicket,
|
|
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,
|
|
@@ -50,6 +50,9 @@ export {
|
|
|
50
50
|
convertToLocalTime,
|
|
51
51
|
} from "./utils";
|
|
52
52
|
|
|
53
|
+
// Local data store
|
|
54
|
+
export { getInitialLoadComplete, setInitialLoadComplete } from "./utils";
|
|
55
|
+
|
|
53
56
|
// HTTP client factory and types for custom API integrations
|
|
54
57
|
export { HTTPClientFactory } from "./utils/http-client";
|
|
55
58
|
export type { HTTPResponse } from "./utils/http-client";
|
|
@@ -68,6 +71,7 @@ export type { IERPLaborTicketHandler } from "./types/erp-connector";
|
|
|
68
71
|
|
|
69
72
|
// Process drivers and utilities
|
|
70
73
|
export { StandardProcessDrivers, getCachedTimezoneOffset } from "./utils";
|
|
74
|
+
export type { WriteEntitiesToMMResult, MMBatchValidationError } from "./utils";
|
|
71
75
|
|
|
72
76
|
// API services
|
|
73
77
|
export { RestAPIService } from "./services/erp-api-services/rest/rest-api-service";
|
|
@@ -20,7 +20,6 @@ export class CoreConfiguration {
|
|
|
20
20
|
public readonly cacheTTL: number;
|
|
21
21
|
|
|
22
22
|
// ERP API Service
|
|
23
|
-
public readonly erpApiRetryAttemptsDef: number; //Retry attempts for ERP API
|
|
24
23
|
public readonly erpApiPagingLimit: number; //Pagination limit for ERP API
|
|
25
24
|
|
|
26
25
|
// Job timing Intervals
|
|
@@ -60,14 +59,6 @@ export class CoreConfiguration {
|
|
|
60
59
|
this.mmApiRetryAttempts = parseInt(process.env.RETRY_ATTEMPTS || "0");
|
|
61
60
|
//#endregion MM API (aka "Mapping") Service
|
|
62
61
|
|
|
63
|
-
//#region ERP API Service
|
|
64
|
-
/**
|
|
65
|
-
* Number of retry attempts for ERP API calls
|
|
66
|
-
*/
|
|
67
|
-
this.erpApiRetryAttemptsDef = parseInt(
|
|
68
|
-
process.env.ERP_API_RETRY_ATTEMPTS_DEF || "3"
|
|
69
|
-
);
|
|
70
|
-
|
|
71
62
|
/**
|
|
72
63
|
* Default pagination limit for ERP API
|
|
73
64
|
*/
|
|
@@ -25,13 +25,16 @@ const main = async () => {
|
|
|
25
25
|
throw error; // Rethrow so Bree can handle it properly
|
|
26
26
|
} finally {
|
|
27
27
|
await cacheManager.destroy();
|
|
28
|
+
logger.info(`==========Completed clean-up-expired-cache job==========`);
|
|
28
29
|
}
|
|
29
30
|
};
|
|
30
31
|
|
|
31
32
|
// For Bree compatibility - check if this is running as a worker
|
|
32
33
|
if (require.main === module) {
|
|
33
34
|
// This is called when Bree runs this file as a worker
|
|
34
|
-
|
|
35
|
+
(async () => {
|
|
36
|
+
await main();
|
|
37
|
+
})();
|
|
35
38
|
} else {
|
|
36
39
|
// Export for potential testing or direct usage
|
|
37
40
|
module.exports = main;
|
|
@@ -47,9 +47,11 @@ const isMainModule = import.meta.url === `file://${process.argv[1]}`;
|
|
|
47
47
|
|
|
48
48
|
if (isMainModule) {
|
|
49
49
|
// This is called when Bree runs this file as a worker
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
50
|
+
try {
|
|
51
|
+
await main();
|
|
52
|
+
} catch {
|
|
53
|
+
process.exitCode = 1; // prefer exitCode so stdout/stderr can flush
|
|
54
|
+
}
|
|
53
55
|
}
|
|
54
56
|
|
|
55
57
|
export default main;
|