@alanszp/integrations-common 7.9.1 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ // Used by Jest
2
+ module.exports = {
3
+ presets: [
4
+ ["@babel/preset-env", { targets: { node: "current" } }],
5
+ "@babel/preset-typescript",
6
+ ],
7
+ };
@@ -2,6 +2,7 @@ import { IntegrationResultStatus, IntegrationStatus, IntegrationResultError } fr
2
2
  export interface ChangesStatus {
3
3
  updated: string[];
4
4
  created: string[];
5
+ removed: string[];
5
6
  errors: IntegrationResultError[];
6
7
  }
7
8
  export declare class IntegrationExecutionResult {
@@ -20,11 +20,13 @@ class IntegrationExecutionResult {
20
20
  updated: changes.updated.length,
21
21
  added: changes.created.length,
22
22
  error: changes.errors.length,
23
+ removed: changes.removed.length,
23
24
  });
24
25
  this.setDetails({
25
26
  updated: changes.updated,
26
27
  added: changes.created,
27
28
  error: changes.errors,
29
+ removed: changes.removed,
28
30
  });
29
31
  }
30
32
  setContext(context) {
@@ -1 +1 @@
1
- {"version":3,"file":"IntegrationExecutionResult.js","sourceRoot":"","sources":["../src/IntegrationExecutionResult.ts"],"names":[],"mappings":";;;AAAA,mCAA+B;AAgB/B,MAAa,0BAA0B;IAoBrC,YACE,aAAqB,EACrB,qBAA6B,EAC7B,UAAmB;QAtBb,WAAM,GAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAEtE,YAAO,GAAkB;YAC/B,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,EAAE;SACV,CAAC;QAiBA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;QACnD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAEM,UAAU,CAAC,OAAsB;QACtC,IAAI,CAAC,SAAS,CAAC;YACb,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM;YAC/B,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM;YAC7B,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM;SAC7B,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC;YACd,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,KAAK,EAAE,OAAO,CAAC,OAAO;YACtB,KAAK,EAAE,OAAO,CAAC,MAAM;SACtB,CAAC,CAAC;IACL,CAAC;IAEM,UAAU,CAAC,OAAgC;QAChD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAEM,UAAU;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEM,gBAAgB;QACrB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAEM,wBAAwB;QAC7B,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACpC,CAAC;IAEM,SAAS,CAAC,MAAyB;QACxC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAEM,aAAa;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAEM,UAAU;QACf,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;IACJ,CAAC;IAEO,SAAS,CAAC,MAA6B;QAC7C,IAAI,CAAC,MAAM,GAAG,IAAA,cAAK,EAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAEO,UAAU,CAAC,OAA+B;QAChD,IAAI,CAAC,OAAO,GAAG,IAAA,cAAK,EAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;CACF;AAtFD,gEAsFC"}
1
+ {"version":3,"file":"IntegrationExecutionResult.js","sourceRoot":"","sources":["../src/IntegrationExecutionResult.ts"],"names":[],"mappings":";;;AAAA,mCAA+B;AAiB/B,MAAa,0BAA0B;IAoBrC,YACE,aAAqB,EACrB,qBAA6B,EAC7B,UAAmB;QAtBb,WAAM,GAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAEtE,YAAO,GAAkB;YAC/B,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,EAAE;SACV,CAAC;QAiBA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;QACnD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAEM,UAAU,CAAC,OAAsB;QACtC,IAAI,CAAC,SAAS,CAAC;YACb,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM;YAC/B,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM;YAC7B,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM;YAC5B,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM;SAChC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC;YACd,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,KAAK,EAAE,OAAO,CAAC,OAAO;YACtB,KAAK,EAAE,OAAO,CAAC,MAAM;YACrB,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC,CAAC;IACL,CAAC;IAEM,UAAU,CAAC,OAAgC;QAChD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAEM,UAAU;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEM,gBAAgB;QACrB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAEM,wBAAwB;QAC7B,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACpC,CAAC;IAEM,SAAS,CAAC,MAAyB;QACxC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAEM,aAAa;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAEM,UAAU;QACf,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;IACJ,CAAC;IAEO,SAAS,CAAC,MAA6B;QAC7C,IAAI,CAAC,MAAM,GAAG,IAAA,cAAK,EAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAEO,UAAU,CAAC,OAA+B;QAChD,IAAI,CAAC,OAAO,GAAG,IAAA,cAAK,EAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;CACF;AAxFD,gEAwFC"}
@@ -0,0 +1 @@
1
+ export declare function generateChecksum<T extends Record<string, unknown>>(employee: T, fieldsToIgnore?: Set<keyof T>): string;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateChecksum = void 0;
4
+ const crypto_1 = require("crypto");
5
+ const lodash_1 = require("lodash");
6
+ function generateChecksum(employee, fieldsToIgnore) {
7
+ const hash = (0, crypto_1.createHash)("sha1");
8
+ const filterFields = fieldsToIgnore || new Set();
9
+ const employeeString = (0, lodash_1.chain)((0, lodash_1.keys)(employee))
10
+ .sort()
11
+ .filter((key) => !filterFields.has(key))
12
+ .map((key) => {
13
+ const value = employee[key];
14
+ if ((0, lodash_1.isObject)(value) || (0, lodash_1.isArray)(value)) {
15
+ return JSON.stringify(value);
16
+ }
17
+ if ((0, lodash_1.isBoolean)(value)) {
18
+ return value ? "1" : "0";
19
+ }
20
+ if ((0, lodash_1.isNil)(value)) {
21
+ return "";
22
+ }
23
+ return value;
24
+ })
25
+ .value()
26
+ .join("|");
27
+ return hash.update(employeeString).digest("base64").slice(0, 8);
28
+ }
29
+ exports.generateChecksum = generateChecksum;
30
+ //# sourceMappingURL=generateChecksum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateChecksum.js","sourceRoot":"","sources":["../../src/helpers/generateChecksum.ts"],"names":[],"mappings":";;;AAAA,mCAAoC;AACpC,mCAA0E;AAE1E,SAAgB,gBAAgB,CAC9B,QAAW,EACX,cAA6B;IAE7B,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,MAAM,CAAC,CAAC;IAChC,MAAM,YAAY,GAAG,cAAc,IAAI,IAAI,GAAG,EAAW,CAAC;IAC1D,MAAM,cAAc,GAAG,IAAA,cAAK,EAAC,IAAA,aAAI,EAAC,QAAQ,CAAgB,CAAC;SACxD,IAAI,EAAE;SACN,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SACvC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACX,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,IAAA,iBAAQ,EAAC,KAAK,CAAC,IAAI,IAAA,gBAAO,EAAC,KAAK,CAAC,EAAE;YACrC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SAC9B;QAED,IAAI,IAAA,kBAAS,EAAC,KAAK,CAAC,EAAE;YACpB,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;SAC1B;QAED,IAAI,IAAA,cAAK,EAAC,KAAK,CAAC,EAAE;YAChB,OAAO,EAAE,CAAC;SACX;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;SACD,KAAK,EAAE;SACP,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClE,CAAC;AA5BD,4CA4BC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const lodash_1 = require("lodash");
4
+ const generateChecksum_1 = require("./generateChecksum");
5
+ const OBJECT_ONE = {
6
+ id: "1",
7
+ email: "test@checksum.com",
8
+ checksum: "12345678",
9
+ number: 1,
10
+ };
11
+ const OBJECT_TWO = {
12
+ id: "2",
13
+ email: "test2@checksum.com",
14
+ checksum: "487654987",
15
+ number: 2,
16
+ };
17
+ describe("generateChecksum", () => {
18
+ it("should generate the same checksum for the same object", () => {
19
+ const checksumOne = (0, generateChecksum_1.generateChecksum)(OBJECT_ONE);
20
+ const checksumTwo = (0, generateChecksum_1.generateChecksum)(OBJECT_ONE);
21
+ expect(checksumOne).toEqual(checksumTwo);
22
+ });
23
+ it("should generate a different checksum for different objects", () => {
24
+ const checksumOne = (0, generateChecksum_1.generateChecksum)(OBJECT_ONE);
25
+ const checksumTwo = (0, generateChecksum_1.generateChecksum)(OBJECT_TWO);
26
+ expect(checksumOne).not.toEqual(checksumTwo);
27
+ });
28
+ it("should ignore some fields and produce the same checksum if its the only difference", () => {
29
+ const OBJECT_THREE = (0, lodash_1.clone)(OBJECT_ONE);
30
+ OBJECT_THREE.checksum = "NOT_THE_SAME";
31
+ const ignoreFields = new Set(["checksum"]);
32
+ const checksumOne = (0, generateChecksum_1.generateChecksum)(OBJECT_ONE, ignoreFields);
33
+ const checksumTwo = (0, generateChecksum_1.generateChecksum)(OBJECT_THREE, ignoreFields);
34
+ expect(checksumOne).toEqual(checksumTwo);
35
+ });
36
+ });
37
+ //# sourceMappingURL=generateChecksum.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateChecksum.test.js","sourceRoot":"","sources":["../../src/helpers/generateChecksum.test.ts"],"names":[],"mappings":";;AAAA,mCAA+B;AAC/B,yDAAsD;AAEtD,MAAM,UAAU,GAAG;IACjB,EAAE,EAAE,GAAG;IACP,KAAK,EAAE,mBAAmB;IAC1B,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,CAAC;CACV,CAAC;AAEF,MAAM,UAAU,GAAG;IACjB,EAAE,EAAE,GAAG;IACP,KAAK,EAAE,oBAAoB;IAC3B,QAAQ,EAAE,WAAW;IACrB,MAAM,EAAE,CAAC;CACV,CAAC;AAEF,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,WAAW,GAAG,IAAA,mCAAgB,EAAC,UAAU,CAAC,CAAC;QACjD,MAAM,WAAW,GAAG,IAAA,mCAAgB,EAAC,UAAU,CAAC,CAAC;QACjD,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,WAAW,GAAG,IAAA,mCAAgB,EAAC,UAAU,CAAC,CAAC;QACjD,MAAM,WAAW,GAAG,IAAA,mCAAgB,EAAC,UAAU,CAAC,CAAC;QACjD,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oFAAoF,EAAE,GAAG,EAAE;QAC5F,MAAM,YAAY,GAAG,IAAA,cAAK,EAAC,UAAU,CAAC,CAAC;QACvC,YAAY,CAAC,QAAQ,GAAG,cAAc,CAAC;QAEvC,MAAM,YAAY,GAAG,IAAI,GAAG,CAA0B,CAAC,UAAU,CAAC,CAAC,CAAC;QAEpE,MAAM,WAAW,GAAG,IAAA,mCAAgB,EAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAC/D,MAAM,WAAW,GAAG,IAAA,mCAAgB,EAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QACjE,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -2,3 +2,4 @@ export * from "./IntegrationExecutionResult";
2
2
  export * from "./models/BaseIntegrationHistory";
3
3
  export * from "./views/integrationView";
4
4
  export * from "./types";
5
+ export * from "./helpers/generateChecksum";
package/dist/index.js CHANGED
@@ -14,4 +14,5 @@ __exportStar(require("./IntegrationExecutionResult"), exports);
14
14
  __exportStar(require("./models/BaseIntegrationHistory"), exports);
15
15
  __exportStar(require("./views/integrationView"), exports);
16
16
  __exportStar(require("./types"), exports);
17
+ __exportStar(require("./helpers/generateChecksum"), exports);
17
18
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+DAA6C;AAC7C,kEAAgD;AAChD,0DAAwC;AACxC,0CAAwB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+DAA6C;AAC7C,kEAAgD;AAChD,0DAAwC;AACxC,0CAAwB;AACxB,6DAA2C"}
package/jest.config.js ADDED
@@ -0,0 +1,10 @@
1
+ module.exports = {
2
+ collectCoverageFrom: ["src/**/*.{js,jsx,ts,tsx}"],
3
+ roots: ["<rootDir>/src/"],
4
+ clearMocks: true,
5
+ resetMocks: true,
6
+ testEnvironment: "node",
7
+ moduleNameMapper: {
8
+ "@/(.*)": "<rootDir>/src/$1",
9
+ },
10
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alanszp/integrations-common",
3
- "version": "7.9.1",
3
+ "version": "8.0.0",
4
4
  "description": "Common logic shared between integrations.",
5
5
  "main": "dist/index.js",
6
6
  "typings": "dist/index.d.ts",
@@ -15,24 +15,27 @@
15
15
  "compile": "rm -rf ./dist && tsc --declaration",
16
16
  "compile-watch": "tsc -w",
17
17
  "build": "yarn run compile",
18
+ "test": "jest",
18
19
  "prepack": "yarn run build",
19
20
  "yalc-publish": "yarn run yalc publish"
20
21
  },
21
22
  "devDependencies": {
22
23
  "@types/jest": "^29.2.3",
23
24
  "@types/node": "^15.12.3",
25
+ "babel-jest": "^29.0.0",
26
+ "eslint-plugin-jest": "^26.8.7",
24
27
  "jest": "^29.3.1",
25
28
  "ts-node": "^10.0.0",
26
29
  "tslint": "^6.1.3",
27
30
  "typescript": "^4.3.4"
28
31
  },
29
32
  "dependencies": {
30
- "@alanszp/errors": "^7.0.0",
31
- "@alanszp/logger": "^7.0.0",
32
- "@alanszp/typeorm": "^7.0.0",
33
+ "@alanszp/errors": "^8.0.0",
34
+ "@alanszp/logger": "^8.0.0",
35
+ "@alanszp/typeorm": "^8.0.0",
33
36
  "class-validator": "^0.13.1",
34
37
  "lodash": "^4.17.21",
35
38
  "typeorm": "^0.2.34"
36
39
  },
37
- "gitHead": "4493dd790ffb7cc775401fe64aaac8165bdf03bc"
40
+ "gitHead": "8ddbd6ae78e2404fb35497e18308644d3760dd17"
38
41
  }
@@ -11,6 +11,7 @@ type ResultTotals = IntegrationResultStatus["totals"];
11
11
  export interface ChangesStatus {
12
12
  updated: string[];
13
13
  created: string[];
14
+ removed: string[];
14
15
  errors: IntegrationResultError[];
15
16
  }
16
17
 
@@ -49,12 +50,14 @@ export class IntegrationExecutionResult {
49
50
  updated: changes.updated.length,
50
51
  added: changes.created.length,
51
52
  error: changes.errors.length,
53
+ removed: changes.removed.length,
52
54
  });
53
55
 
54
56
  this.setDetails({
55
57
  updated: changes.updated,
56
58
  added: changes.created,
57
59
  error: changes.errors,
60
+ removed: changes.removed,
58
61
  });
59
62
  }
60
63
 
@@ -0,0 +1,41 @@
1
+ import { clone } from "lodash";
2
+ import { generateChecksum } from "./generateChecksum";
3
+
4
+ const OBJECT_ONE = {
5
+ id: "1",
6
+ email: "test@checksum.com",
7
+ checksum: "12345678",
8
+ number: 1,
9
+ };
10
+
11
+ const OBJECT_TWO = {
12
+ id: "2",
13
+ email: "test2@checksum.com",
14
+ checksum: "487654987",
15
+ number: 2,
16
+ };
17
+
18
+ describe("generateChecksum", () => {
19
+ it("should generate the same checksum for the same object", () => {
20
+ const checksumOne = generateChecksum(OBJECT_ONE);
21
+ const checksumTwo = generateChecksum(OBJECT_ONE);
22
+ expect(checksumOne).toEqual(checksumTwo);
23
+ });
24
+
25
+ it("should generate a different checksum for different objects", () => {
26
+ const checksumOne = generateChecksum(OBJECT_ONE);
27
+ const checksumTwo = generateChecksum(OBJECT_TWO);
28
+ expect(checksumOne).not.toEqual(checksumTwo);
29
+ });
30
+
31
+ it("should ignore some fields and produce the same checksum if its the only difference", () => {
32
+ const OBJECT_THREE = clone(OBJECT_ONE);
33
+ OBJECT_THREE.checksum = "NOT_THE_SAME";
34
+
35
+ const ignoreFields = new Set<keyof typeof OBJECT_ONE>(["checksum"]);
36
+
37
+ const checksumOne = generateChecksum(OBJECT_ONE, ignoreFields);
38
+ const checksumTwo = generateChecksum(OBJECT_THREE, ignoreFields);
39
+ expect(checksumOne).toEqual(checksumTwo);
40
+ });
41
+ });
@@ -0,0 +1,32 @@
1
+ import { createHash } from "crypto";
2
+ import { chain, isArray, isBoolean, isNil, isObject, keys } from "lodash";
3
+
4
+ export function generateChecksum<T extends Record<string, unknown>>(
5
+ employee: T,
6
+ fieldsToIgnore?: Set<keyof T>
7
+ ): string {
8
+ const hash = createHash("sha1");
9
+ const filterFields = fieldsToIgnore || new Set<keyof T>();
10
+ const employeeString = chain(keys(employee) as (keyof T)[])
11
+ .sort()
12
+ .filter((key) => !filterFields.has(key))
13
+ .map((key) => {
14
+ const value = employee[key];
15
+ if (isObject(value) || isArray(value)) {
16
+ return JSON.stringify(value);
17
+ }
18
+
19
+ if (isBoolean(value)) {
20
+ return value ? "1" : "0";
21
+ }
22
+
23
+ if (isNil(value)) {
24
+ return "";
25
+ }
26
+
27
+ return value;
28
+ })
29
+ .value()
30
+ .join("|");
31
+ return hash.update(employeeString).digest("base64").slice(0, 8);
32
+ }
package/src/index.ts CHANGED
@@ -2,3 +2,4 @@ export * from "./IntegrationExecutionResult";
2
2
  export * from "./models/BaseIntegrationHistory";
3
3
  export * from "./views/integrationView";
4
4
  export * from "./types";
5
+ export * from "./helpers/generateChecksum";