@xapp/stentor-service-pii 1.86.2 → 1.86.3
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/lib/DynamoPIIService.js +2 -2
- package/lib/DynamoPIIService.js.map +1 -1
- package/lib/utils.d.ts +26 -0
- package/lib/utils.js +57 -0
- package/lib/utils.js.map +1 -0
- package/package.json +9 -8
package/lib/DynamoPIIService.js
CHANGED
|
@@ -15,8 +15,8 @@ const stentor_models_1 = require("stentor-models");
|
|
|
15
15
|
const stentor_service_dynamo_1 = require("@xapp/stentor-service-dynamo");
|
|
16
16
|
const stentor_utils_1 = require("stentor-utils");
|
|
17
17
|
const PiiRedeemService_1 = require("./PiiRedeemService");
|
|
18
|
+
const utils_1 = require("./utils");
|
|
18
19
|
const cloneDeep = require("lodash.clonedeep");
|
|
19
|
-
const isEqual = require("lodash.isequal");
|
|
20
20
|
class DynamoPIIService extends stentor_service_dynamo_1.DynamoService {
|
|
21
21
|
constructor(props) {
|
|
22
22
|
super(props);
|
|
@@ -51,7 +51,7 @@ class DynamoPIIService extends stentor_service_dynamo_1.DynamoService {
|
|
|
51
51
|
savePii(pii) {
|
|
52
52
|
return __awaiter(this, void 0, void 0, function* () {
|
|
53
53
|
// Has it changed -> save
|
|
54
|
-
if (!
|
|
54
|
+
if (!(0, utils_1.deepEqual)(this.pii, pii)) {
|
|
55
55
|
// New?
|
|
56
56
|
if (!pii.token) {
|
|
57
57
|
pii.token = (0, stentor_utils_1.uuid)(); // add token for create
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DynamoPIIService.js","sourceRoot":"","sources":["../src/DynamoPIIService.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oCAAoC;AACpC,mDAAoF;AAGpF,yEAAkG;AAClG,iDAAqC;AACrC,yDAO4B;
|
|
1
|
+
{"version":3,"file":"DynamoPIIService.js","sourceRoot":"","sources":["../src/DynamoPIIService.ts"],"names":[],"mappings":"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"}
|
package/lib/utils.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/*! Copyright (c) 2026, XAPPmedia */
|
|
2
|
+
/**
|
|
3
|
+
* Deep equality for plain data.
|
|
4
|
+
*
|
|
5
|
+
* Replaces `lodash.isequal` for the one call site in DynamoPIIService, which
|
|
6
|
+
* compares two `Pii` records to decide whether a save is needed. A false
|
|
7
|
+
* negative causes a redundant write; a false positive silently drops a save,
|
|
8
|
+
* so this deliberately mirrors lodash's semantics rather than approximating:
|
|
9
|
+
*
|
|
10
|
+
* - primitives compare with SameValueZero, so `NaN` equals `NaN` and `0`
|
|
11
|
+
* equals `-0`
|
|
12
|
+
* - a key explicitly set to `undefined` is NOT the same as an absent key
|
|
13
|
+
* - arrays and objects are never equal to each other, and array order matters
|
|
14
|
+
* - `Date`s compare by value
|
|
15
|
+
*
|
|
16
|
+
* One deliberate divergence: lodash guards against circular references and
|
|
17
|
+
* this does not, so a self-referencing object overflows the stack here. These
|
|
18
|
+
* only ever see plain records, and failing loudly on a cycle beats silently
|
|
19
|
+
* accepting one.
|
|
20
|
+
*
|
|
21
|
+
* @export
|
|
22
|
+
* @param {unknown} one
|
|
23
|
+
* @param {unknown} two
|
|
24
|
+
* @returns {boolean}
|
|
25
|
+
*/
|
|
26
|
+
export declare function deepEqual(one: unknown, two: unknown): boolean;
|
package/lib/utils.js
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*! Copyright (c) 2026, XAPPmedia */
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.deepEqual = deepEqual;
|
|
5
|
+
/**
|
|
6
|
+
* Deep equality for plain data.
|
|
7
|
+
*
|
|
8
|
+
* Replaces `lodash.isequal` for the one call site in DynamoPIIService, which
|
|
9
|
+
* compares two `Pii` records to decide whether a save is needed. A false
|
|
10
|
+
* negative causes a redundant write; a false positive silently drops a save,
|
|
11
|
+
* so this deliberately mirrors lodash's semantics rather than approximating:
|
|
12
|
+
*
|
|
13
|
+
* - primitives compare with SameValueZero, so `NaN` equals `NaN` and `0`
|
|
14
|
+
* equals `-0`
|
|
15
|
+
* - a key explicitly set to `undefined` is NOT the same as an absent key
|
|
16
|
+
* - arrays and objects are never equal to each other, and array order matters
|
|
17
|
+
* - `Date`s compare by value
|
|
18
|
+
*
|
|
19
|
+
* One deliberate divergence: lodash guards against circular references and
|
|
20
|
+
* this does not, so a self-referencing object overflows the stack here. These
|
|
21
|
+
* only ever see plain records, and failing loudly on a cycle beats silently
|
|
22
|
+
* accepting one.
|
|
23
|
+
*
|
|
24
|
+
* @export
|
|
25
|
+
* @param {unknown} one
|
|
26
|
+
* @param {unknown} two
|
|
27
|
+
* @returns {boolean}
|
|
28
|
+
*/
|
|
29
|
+
function deepEqual(one, two) {
|
|
30
|
+
// SameValueZero: handles identical references, NaN and +0/-0.
|
|
31
|
+
if (one === two || (one !== one && two !== two)) {
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
if (typeof one !== "object" || typeof two !== "object" || one === null || two === null) {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
if (one instanceof Date || two instanceof Date) {
|
|
38
|
+
return one instanceof Date && two instanceof Date && one.getTime() === two.getTime();
|
|
39
|
+
}
|
|
40
|
+
const oneIsArray = Array.isArray(one);
|
|
41
|
+
if (oneIsArray !== Array.isArray(two)) {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
if (oneIsArray) {
|
|
45
|
+
const left = one;
|
|
46
|
+
const right = two;
|
|
47
|
+
return left.length === right.length && left.every((value, index) => deepEqual(value, right[index]));
|
|
48
|
+
}
|
|
49
|
+
const leftKeys = Object.keys(one);
|
|
50
|
+
const rightKeys = Object.keys(two);
|
|
51
|
+
if (leftKeys.length !== rightKeys.length) {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
return leftKeys.every((key) => Object.prototype.hasOwnProperty.call(two, key) &&
|
|
55
|
+
deepEqual(one[key], two[key]));
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=utils.js.map
|
package/lib/utils.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";AAAA,oCAAoC;;AA0BpC,8BAuCC;AA/DD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,SAAgB,SAAS,CAAC,GAAY,EAAE,GAAY;IAChD,8DAA8D;IAC9D,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACrF,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,GAAG,YAAY,IAAI,IAAI,GAAG,YAAY,IAAI,EAAE,CAAC;QAC7C,OAAO,GAAG,YAAY,IAAI,IAAI,GAAG,YAAY,IAAI,IAAI,GAAG,CAAC,OAAO,EAAE,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC;IACzF,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAEtC,IAAI,UAAU,KAAK,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,UAAU,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,GAAgB,CAAC;QAC9B,MAAM,KAAK,GAAG,GAAgB,CAAC;QAE/B,OAAO,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxG,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEnC,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;QACvC,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,QAAQ,CAAC,KAAK,CACjB,CAAC,GAAG,EAAE,EAAE,CACJ,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;QAC9C,SAAS,CAAE,GAA+B,CAAC,GAAG,CAAC,EAAG,GAA+B,CAAC,GAAG,CAAC,CAAC,CAC9F,CAAC;AACN,CAAC"}
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
7
|
-
"version": "1.86.
|
|
7
|
+
"version": "1.86.3",
|
|
8
8
|
"description": "Service to manage PII within an isolated database",
|
|
9
9
|
"types": "lib/index",
|
|
10
10
|
"main": "lib/index",
|
|
@@ -16,17 +16,17 @@
|
|
|
16
16
|
},
|
|
17
17
|
"devDependencies": {
|
|
18
18
|
"@types/chai": "5.2.3",
|
|
19
|
-
"@types/lodash": "4.17.
|
|
19
|
+
"@types/lodash": "4.17.25",
|
|
20
20
|
"@xapp/config": "0.3.0",
|
|
21
21
|
"chai": "4.5.0",
|
|
22
|
-
"
|
|
23
|
-
"stentor-
|
|
22
|
+
"mocha": "11.8.0",
|
|
23
|
+
"stentor-models": "1.76.0",
|
|
24
|
+
"stentor-utils": "1.75.0",
|
|
24
25
|
"typescript": "5.9.3"
|
|
25
26
|
},
|
|
26
27
|
"dependencies": {
|
|
27
|
-
"@xapp/stentor-service-dynamo": "1.86.
|
|
28
|
-
"lodash.clonedeep": "4.5.0"
|
|
29
|
-
"lodash.isequal": "4.5.0"
|
|
28
|
+
"@xapp/stentor-service-dynamo": "1.86.3",
|
|
29
|
+
"lodash.clonedeep": "4.5.0"
|
|
30
30
|
},
|
|
31
31
|
"peerDependencies": {
|
|
32
32
|
"stentor-models": "1.x",
|
|
@@ -35,7 +35,8 @@
|
|
|
35
35
|
"scripts": {
|
|
36
36
|
"prepack": "yarn build",
|
|
37
37
|
"build": "tsc -d true -p .",
|
|
38
|
-
"clean": "rm -rf ./lib/*"
|
|
38
|
+
"clean": "rm -rf ./lib/*",
|
|
39
|
+
"test": "mocha --recursive -r ts-node/register \"./src/**/*.test.ts\""
|
|
39
40
|
},
|
|
40
41
|
"gitHead": "3a345719866a5c39329b605545f04c465e6baf48"
|
|
41
42
|
}
|