@machinemetrics/mm-erp-sdk 0.1.8-beta.8 → 0.1.8-beta.9
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 +8 -2
- package/dist/{config-qat9zgOl.js → config-cB7h4yvc.js} +2 -2
- package/dist/{config-qat9zgOl.js.map → config-cB7h4yvc.js.map} +1 -1
- package/dist/{connector-factory-C2czCs9v.js → connector-factory-CKm74_WZ.js} +2 -2
- package/dist/{connector-factory-C2czCs9v.js.map → connector-factory-CKm74_WZ.js.map} +1 -1
- package/dist/{hashed-cache-manager-CzyFSt2B.js → hashed-cache-manager-B1hPBNnF.js} +4 -4
- package/dist/{hashed-cache-manager-CzyFSt2B.js.map → hashed-cache-manager-B1hPBNnF.js.map} +1 -1
- package/dist/{index-B9wo8pld.js → index-DCgheVjV.js} +2 -2
- package/dist/{index-B9wo8pld.js.map → index-DCgheVjV.js.map} +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/{logger-Db8CkwR6.js → logger-CBDNtsMq.js} +62 -11
- package/dist/{logger-Db8CkwR6.js.map → logger-CBDNtsMq.js.map} +1 -1
- package/dist/mm-erp-sdk.js +17 -6
- 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.js +3 -3
- 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 +2 -1
- 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 +2 -4
- package/dist/types/erp-connector.d.ts.map +1 -1
- package/dist/types/erp-types.d.ts +9 -0
- 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 +3 -2
- 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 -1
- package/src/index.ts +1 -1
- package/src/services/mm-api-service/mm-api-service.ts +4 -4
- package/src/services/mm-api-service/types/checkpoint.ts +3 -1
- package/src/services/reporting-service/logger.ts +73 -11
- package/src/types/erp-connector.ts +2 -5
- package/src/types/erp-types.ts +11 -0
- package/src/types/index.ts +1 -0
- package/src/utils/standard-process-drivers/labor-ticket-erp-synchronizer.ts +3 -2
- package/src/utils/standard-process-drivers/standard-process-drivers.ts +3 -3
|
@@ -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-cB7h4yvc.js";
|
|
2
|
+
import { H as HashedCacheManager } from "../../../hashed-cache-manager-B1hPBNnF.js";
|
|
3
|
+
import { S as SQLiteCoordinator } from "../../../index-DCgheVjV.js";
|
|
4
|
+
import { l as logger } from "../../../logger-CBDNtsMq.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-cB7h4yvc.js";
|
|
2
|
+
import { l as logger } from "../../../logger-CBDNtsMq.js";
|
|
3
|
+
import { S as SQLiteCoordinator } from "../../../index-DCgheVjV.js";
|
|
4
|
+
import { c as createConnectorFromPath } from "../../../connector-factory-CKm74_WZ.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-cB7h4yvc.js";
|
|
2
|
+
import { l as logger } from "../../../logger-CBDNtsMq.js";
|
|
3
|
+
import { c as createConnectorFromPath } from "../../../connector-factory-CKm74_WZ.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-CBDNtsMq.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,6 +1,6 @@
|
|
|
1
|
-
import "../../../config-
|
|
2
|
-
import { l as logger } from "../../../logger-
|
|
3
|
-
import { c as createConnectorFromPath } from "../../../connector-factory-
|
|
1
|
+
import "../../../config-cB7h4yvc.js";
|
|
2
|
+
import { l as logger } from "../../../logger-CBDNtsMq.js";
|
|
3
|
+
import { c as createConnectorFromPath } from "../../../connector-factory-CKm74_WZ.js";
|
|
4
4
|
logger.level = process.env.LOG_LEVEL || "info";
|
|
5
5
|
const main = async () => {
|
|
6
6
|
try {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ERPObjType } from "../../types/erp-types";
|
|
1
|
+
import { ERPObjType, ERPType } 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: ERPType, failedTicketRefs: string[]): Promise<MMApiBaseResponse>;
|
|
201
|
+
fetchFailedLaborTickets(system: ERPType): 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: ERPType, 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,MAAM,uBAAuB,CAAC;
|
|
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;;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,OAAO,EACf,gBAAgB,EAAE,MAAM,EAAE,GACzB,OAAO,CAAC,iBAAiB,CAAC;IAQvB,uBAAuB,CAC3B,MAAM,EAAE,OAAO,GACd,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,OAAO,EACf,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,8 +1,9 @@
|
|
|
1
|
+
import { ERPType } from "../../../types/erp-types";
|
|
1
2
|
/**
|
|
2
3
|
* Represents a checkpoint for a specific system, table, and checkpoint type
|
|
3
4
|
*/
|
|
4
5
|
export type Checkpoint = {
|
|
5
|
-
system:
|
|
6
|
+
system: ERPType;
|
|
6
7
|
table: string;
|
|
7
8
|
checkpointType: "import" | "export";
|
|
8
9
|
checkpointValue?: {
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
1
|
+
{"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../../../../src/services/mm-api-service/types/checkpoint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,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;AA0DH,eAAO,MAAM,eAAe,GAAI,UAAU,MAAM,EAAE,SAAS,MAAM,SAuChE,CAAC;AAKF,eAAe,MAAM,CAAC"}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import { MMReceiveLaborTicket } from "../services/mm-api-service/types/receive-types";
|
|
2
|
+
import { ERPType } from "./erp-types";
|
|
2
3
|
/**
|
|
3
4
|
* Interface for ERP connectors.
|
|
4
5
|
*
|
|
5
6
|
* Required for any connector.
|
|
6
7
|
*/
|
|
7
8
|
export interface IERPConnector {
|
|
8
|
-
|
|
9
|
-
* The type of ERP system this connector is for.
|
|
10
|
-
*/
|
|
11
|
-
readonly type: string;
|
|
9
|
+
readonly type: ERPType;
|
|
12
10
|
/**
|
|
13
11
|
* Sync data from the ERP system to MM.
|
|
14
12
|
*/
|
|
@@ -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;AACtF,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAEvB;;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,3 +1,12 @@
|
|
|
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
|
+
}
|
|
1
10
|
export declare enum ERPObjType {
|
|
2
11
|
RESOURCES = 0,
|
|
3
12
|
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":"AACA,oBAAY,OAAO;IACjB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,QAAQ,aAAa;CACtB;AAED,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 { ERPObjType, ERPPagination, ERPResponse, ERPObject, } from "./erp-types";
|
|
6
|
+
export type { ERPType, 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,UAAU,EACV,aAAa,EACb,WAAW,EACX,SAAS,GACV,MAAM,aAAa,CAAC"}
|
|
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,OAAO,EACP,UAAU,EACV,aAAa,EACb,WAAW,EACX,SAAS,GACV,MAAM,aAAa,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ERPType } from "../../types/erp-types";
|
|
1
2
|
import { IERPLaborTicketHandler } from "../../types/erp-connector";
|
|
2
3
|
/**
|
|
3
4
|
* Handles synchronization of labor tickets between MachineMetrics and ERP systems
|
|
@@ -6,11 +7,11 @@ export declare class LaborTicketERPSynchronizer {
|
|
|
6
7
|
/**
|
|
7
8
|
* Synchronizes updated labor tickets from MachineMetrics to an ERP system
|
|
8
9
|
*/
|
|
9
|
-
static syncToERP(connectorType:
|
|
10
|
+
static syncToERP(connectorType: ERPType, connector: IERPLaborTicketHandler): Promise<void>;
|
|
10
11
|
/**
|
|
11
12
|
* Retries labor tickets that have failed to be created or updated in the ERP during the sync
|
|
12
13
|
*/
|
|
13
|
-
static retryFailed(connectorType:
|
|
14
|
+
static retryFailed(connectorType: ERPType, connector: IERPLaborTicketHandler): Promise<void>;
|
|
14
15
|
private static writeLaborTicketIdToMM;
|
|
15
16
|
private static processLaborTicket;
|
|
16
17
|
}
|
|
@@ -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,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAOnE;;GAEG;AACH,qBAAa,0BAA0B;IACrC;;OAEG;WACU,SAAS,CACpB,aAAa,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,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAOnE;;GAEG;AACH,qBAAa,0BAA0B;IACrC;;OAEG;WACU,SAAS,CACpB,aAAa,EAAE,OAAO,EACtB,SAAS,EAAE,sBAAsB,GAChC,OAAO,CAAC,IAAI,CAAC;IA4GhB;;OAEG;WACU,WAAW,CACtB,aAAa,EAAE,OAAO,EACtB,SAAS,EAAE,sBAAsB,GAChC,OAAO,CAAC,IAAI,CAAC;mBA+DK,sBAAsB;mBAetB,kBAAkB;CAkDxC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ERPObjType } from "../../types/erp-types";
|
|
1
|
+
import { ERPType, 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: ERPType, 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: ERPType, 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,UAAU,EAAE,MAAM,uBAAuB,CAAC;
|
|
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.8-beta.
|
|
4
|
+
"version": "0.1.8-beta.9",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "machinemetrics",
|
|
7
7
|
"main": "dist/mm-erp-sdk.js",
|
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 { ERPObjType } from "./types/erp-types";
|
|
8
|
+
export { ERPType, ERPObjType } from "./types/erp-types";
|
|
9
9
|
export type { ERPPagination, ERPResponse, ERPObject } from "./types/erp-types";
|
|
10
10
|
|
|
11
11
|
// Configuration interfaces
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import logger from "../reporting-service/logger";
|
|
2
|
-
import { ERPObjType } from "../../types/erp-types";
|
|
2
|
+
import { ERPObjType, ERPType } 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: ERPType,
|
|
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: ERPType
|
|
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: ERPType,
|
|
679
679
|
laborTicketRefs: string[]
|
|
680
680
|
): Promise<MMApiBaseResponse> {
|
|
681
681
|
return await this.postData(
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import { ERPType } from "../../../types/erp-types";
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* Represents a checkpoint for a specific system, table, and checkpoint type
|
|
3
5
|
*/
|
|
4
6
|
export type Checkpoint = {
|
|
5
|
-
system:
|
|
7
|
+
system: ERPType;
|
|
6
8
|
table: string;
|
|
7
9
|
checkpointType: "import" | "export";
|
|
8
10
|
checkpointValue?: {
|
|
@@ -76,22 +76,84 @@ 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
|
+
let removalTimer: NodeJS.Timeout | null = null;
|
|
102
|
+
|
|
103
|
+
// Create replacement first to avoid any logging gap
|
|
104
|
+
const next = createFileTransport();
|
|
105
|
+
// When the new file is created, remove the old transport
|
|
106
|
+
next.on("new", () => {
|
|
107
|
+
if (removalTimer) {
|
|
108
|
+
clearTimeout(removalTimer);
|
|
109
|
+
removalTimer = null;
|
|
110
|
+
}
|
|
111
|
+
try {
|
|
112
|
+
logger.remove(transport);
|
|
113
|
+
} catch {}
|
|
114
|
+
isRefreshing = false;
|
|
115
|
+
});
|
|
116
|
+
attachRotateMitigation(next, opts);
|
|
117
|
+
logger.add(next);
|
|
118
|
+
|
|
119
|
+
// Fallback: if the "new" event doesn't fire, remove the old transport after a grace period
|
|
120
|
+
const REMOVAL_GRACE_MS = 30000;
|
|
121
|
+
removalTimer = setTimeout(() => {
|
|
122
|
+
try {
|
|
123
|
+
logger.remove(transport);
|
|
124
|
+
} catch {}
|
|
125
|
+
isRefreshing = false;
|
|
126
|
+
removalTimer = null;
|
|
127
|
+
}, REMOVAL_GRACE_MS);
|
|
128
|
+
|
|
129
|
+
// Keep console and other transports intact; do not silence or clear
|
|
130
|
+
logger.level = logLevel;
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
|
|
79
134
|
// Function to reconfigure the logger once CoreConfiguration is available
|
|
80
135
|
export const configureLogger = (logLevel: string, nodeEnv: string) => {
|
|
81
|
-
// Remove existing transports
|
|
136
|
+
// Remove existing transports (safely): close any DailyRotateFile streams first
|
|
137
|
+
try {
|
|
138
|
+
const existingFileTransports = (logger.transports || []).filter(
|
|
139
|
+
(t: any) => t instanceof DailyRotateFile
|
|
140
|
+
);
|
|
141
|
+
for (const t of existingFileTransports) {
|
|
142
|
+
const s = (t as any).logStream;
|
|
143
|
+
if (s && typeof s.end === "function") {
|
|
144
|
+
try {
|
|
145
|
+
s.end();
|
|
146
|
+
} catch {}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
} catch {}
|
|
150
|
+
|
|
82
151
|
logger.clear();
|
|
83
152
|
|
|
84
153
|
// Add file transport
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
datePattern: "YYYY-MM-DD",
|
|
89
|
-
zippedArchive: true,
|
|
90
|
-
maxSize: "20m",
|
|
91
|
-
maxFiles: "14d",
|
|
92
|
-
format: logFormat,
|
|
93
|
-
})
|
|
94
|
-
);
|
|
154
|
+
const fileTransport = createFileTransport();
|
|
155
|
+
attachRotateMitigation(fileTransport, { logLevel, nodeEnv });
|
|
156
|
+
logger.add(fileTransport);
|
|
95
157
|
|
|
96
158
|
// Add console transport in non-production environments
|
|
97
159
|
if (nodeEnv !== "production") {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { MMReceiveLaborTicket } from "../services/mm-api-service/types/receive-types";
|
|
2
|
+
import { ERPType } from "./erp-types";
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* Interface for ERP connectors.
|
|
@@ -6,11 +7,7 @@ import { MMReceiveLaborTicket } from "../services/mm-api-service/types/receive-t
|
|
|
6
7
|
* Required for any connector.
|
|
7
8
|
*/
|
|
8
9
|
export interface IERPConnector {
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* The type of ERP system this connector is for.
|
|
12
|
-
*/
|
|
13
|
-
readonly type: string;
|
|
10
|
+
readonly type: ERPType;
|
|
14
11
|
|
|
15
12
|
/**
|
|
16
13
|
* Sync data from the ERP system to MM.
|
package/src/types/erp-types.ts
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
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
|
+
}
|
|
11
|
+
|
|
1
12
|
export enum ERPObjType {
|
|
2
13
|
RESOURCES,
|
|
3
14
|
PARTS,
|
package/src/types/index.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ERPType } from "../../types/erp-types";
|
|
1
2
|
import { IERPLaborTicketHandler } from "../../types/erp-connector";
|
|
2
3
|
import { MMApiClient } from "../../services/mm-api-service/mm-api-service";
|
|
3
4
|
import { MMReceiveLaborTicket } from "../../services/mm-api-service/types/receive-types";
|
|
@@ -13,7 +14,7 @@ export class LaborTicketERPSynchronizer {
|
|
|
13
14
|
* Synchronizes updated labor tickets from MachineMetrics to an ERP system
|
|
14
15
|
*/
|
|
15
16
|
static async syncToERP(
|
|
16
|
-
connectorType:
|
|
17
|
+
connectorType: ERPType,
|
|
17
18
|
connector: IERPLaborTicketHandler
|
|
18
19
|
): Promise<void> {
|
|
19
20
|
try {
|
|
@@ -127,7 +128,7 @@ export class LaborTicketERPSynchronizer {
|
|
|
127
128
|
* Retries labor tickets that have failed to be created or updated in the ERP during the sync
|
|
128
129
|
*/
|
|
129
130
|
static async retryFailed(
|
|
130
|
-
connectorType:
|
|
131
|
+
connectorType: ERPType,
|
|
131
132
|
connector: IERPLaborTicketHandler
|
|
132
133
|
): Promise<void> {
|
|
133
134
|
try {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ERPObjType } from "../../types/erp-types";
|
|
1
|
+
import { ERPType, 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: ERPType,
|
|
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: ERPType,
|
|
90
90
|
connector: IERPLaborTicketHandler
|
|
91
91
|
): Promise<void> {
|
|
92
92
|
return LaborTicketERPSynchronizer.retryFailed(connectorType, connector);
|