@memberjunction/global 6.1.0-edge.1 → 6.1.0-edge.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/LICENSE +180 -4
- package/README.md +2 -2
- package/dist/ClassUtils.d.ts +20 -0
- package/dist/ClassUtils.d.ts.map +1 -1
- package/dist/ClassUtils.js +68 -0
- package/dist/ClassUtils.js.map +1 -1
- package/dist/SQLExpressionValidator.d.ts +28 -1
- package/dist/SQLExpressionValidator.d.ts.map +1 -1
- package/dist/SQLExpressionValidator.js +42 -4
- package/dist/SQLExpressionValidator.js.map +1 -1
- package/dist/SafeExpressionEvaluator.d.ts +131 -6
- package/dist/SafeExpressionEvaluator.d.ts.map +1 -1
- package/dist/SafeExpressionEvaluator.js +344 -41
- package/dist/SafeExpressionEvaluator.js.map +1 -1
- package/dist/TokenEndpointErrors.d.ts +52 -0
- package/dist/TokenEndpointErrors.d.ts.map +1 -0
- package/dist/TokenEndpointErrors.js +87 -0
- package/dist/TokenEndpointErrors.js.map +1 -0
- package/dist/__tests__/ClassUtils.IsMemberOverridden.test.d.ts +2 -0
- package/dist/__tests__/ClassUtils.IsMemberOverridden.test.d.ts.map +1 -0
- package/dist/__tests__/ClassUtils.IsMemberOverridden.test.js +134 -0
- package/dist/__tests__/ClassUtils.IsMemberOverridden.test.js.map +1 -0
- package/dist/__tests__/DeepDiff.test.d.ts +2 -0
- package/dist/__tests__/DeepDiff.test.d.ts.map +1 -0
- package/dist/__tests__/DeepDiff.test.js +229 -0
- package/dist/__tests__/DeepDiff.test.js.map +1 -0
- package/dist/__tests__/IsPlainObject.test.d.ts +2 -0
- package/dist/__tests__/IsPlainObject.test.d.ts.map +1 -0
- package/dist/__tests__/IsPlainObject.test.js +68 -0
- package/dist/__tests__/IsPlainObject.test.js.map +1 -0
- package/dist/__tests__/JSONValidator.test.d.ts +2 -0
- package/dist/__tests__/JSONValidator.test.d.ts.map +1 -0
- package/dist/__tests__/JSONValidator.test.js +221 -0
- package/dist/__tests__/JSONValidator.test.js.map +1 -0
- package/dist/__tests__/MJGlobal.test.js +8 -6
- package/dist/__tests__/MJGlobal.test.js.map +1 -1
- package/dist/__tests__/ResourcePatternUtils.test.d.ts +2 -0
- package/dist/__tests__/ResourcePatternUtils.test.d.ts.map +1 -0
- package/dist/__tests__/ResourcePatternUtils.test.js +50 -0
- package/dist/__tests__/ResourcePatternUtils.test.js.map +1 -0
- package/dist/__tests__/SQLExpressionValidator.security.test.js +62 -1
- package/dist/__tests__/SQLExpressionValidator.security.test.js.map +1 -1
- package/dist/__tests__/SafeExpressionEvaluator.security.test.d.ts +2 -0
- package/dist/__tests__/SafeExpressionEvaluator.security.test.d.ts.map +1 -0
- package/dist/__tests__/SafeExpressionEvaluator.security.test.js +284 -0
- package/dist/__tests__/SafeExpressionEvaluator.security.test.js.map +1 -0
- package/dist/__tests__/SafeExpressionEvaluator.test.d.ts +2 -0
- package/dist/__tests__/SafeExpressionEvaluator.test.d.ts.map +1 -0
- package/dist/__tests__/SafeExpressionEvaluator.test.js +355 -0
- package/dist/__tests__/SafeExpressionEvaluator.test.js.map +1 -0
- package/dist/__tests__/SafeExpressionEvaluator.validateSyntax.test.d.ts +2 -0
- package/dist/__tests__/SafeExpressionEvaluator.validateSyntax.test.d.ts.map +1 -0
- package/dist/__tests__/SafeExpressionEvaluator.validateSyntax.test.js +62 -0
- package/dist/__tests__/SafeExpressionEvaluator.validateSyntax.test.js.map +1 -0
- package/dist/__tests__/TokenEndpointErrors.test.d.ts +2 -0
- package/dist/__tests__/TokenEndpointErrors.test.d.ts.map +1 -0
- package/dist/__tests__/TokenEndpointErrors.test.js +72 -0
- package/dist/__tests__/TokenEndpointErrors.test.js.map +1 -0
- package/dist/__tests__/util.toEpochMs.test.d.ts +2 -0
- package/dist/__tests__/util.toEpochMs.test.d.ts.map +1 -0
- package/dist/__tests__/util.toEpochMs.test.js +57 -0
- package/dist/__tests__/util.toEpochMs.test.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/util/ResourcePatternUtils.d.ts +35 -0
- package/dist/util/ResourcePatternUtils.d.ts.map +1 -0
- package/dist/util/ResourcePatternUtils.js +56 -0
- package/dist/util/ResourcePatternUtils.js.map +1 -0
- package/dist/util.d.ts +36 -0
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +43 -0
- package/dist/util.js.map +1 -1
- package/package.json +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SafeExpressionEvaluator.js","sourceRoot":"","sources":["../src/SafeExpressionEvaluator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SafeExpressionEvaluator.js","sourceRoot":"","sources":["../src/SafeExpressionEvaluator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Safe error-detail extraction for OAuth2 token-endpoint responses.
|
|
3
|
+
*
|
|
4
|
+
* ## Why this exists
|
|
5
|
+
*
|
|
6
|
+
* An OAuth2 token endpoint is the one kind of HTTP call where a **credential
|
|
7
|
+
* arrives in the response body**. Auth mechanisms that merely sign or encode a
|
|
8
|
+
* secret they already hold (HTTP Basic, OAuth 1.0a) never parse a response, so
|
|
9
|
+
* they have no body to mishandle. Token endpoints do, and across this codebase
|
|
10
|
+
* every instance of "credential written to a log" traced back to one of them.
|
|
11
|
+
*
|
|
12
|
+
* Two distinct ways the body leaks:
|
|
13
|
+
*
|
|
14
|
+
* 1. **On success-shaped responses.** Code that guards with
|
|
15
|
+
* `if (!response.ok || !parsed.access_token)` also fires on an HTTP 200 whose
|
|
16
|
+
* token sits somewhere the parser did not look — a vendor envelope, a nested
|
|
17
|
+
* `data` object. The body echoed in that branch *is* the access token.
|
|
18
|
+
* 2. **On genuine failures.** RFC 6749 says an error response carries no token,
|
|
19
|
+
* which makes raw-body echoing look safe. It is not: token endpoints commonly
|
|
20
|
+
* echo the *failing request* back in the error body, and that request carries
|
|
21
|
+
* `client_secret` — and, on a refresh, the refresh token. So the body leaks a
|
|
22
|
+
* different credential rather than none.
|
|
23
|
+
*
|
|
24
|
+
* The safe subset is narrow and specified: RFC 6749 §5.2 defines `error` and
|
|
25
|
+
* `error_description` as the fields describing a failure, and they carry no
|
|
26
|
+
* credentials. This helper surfaces those two and nothing else.
|
|
27
|
+
*/
|
|
28
|
+
/**
|
|
29
|
+
* Builds a log-safe description of a token-endpoint failure from its response body.
|
|
30
|
+
*
|
|
31
|
+
* Returns only the RFC 6749 §5.2 `error` / `error_description` fields. Any other
|
|
32
|
+
* body content — including a body that is not valid JSON — is withheld, since it
|
|
33
|
+
* cannot be shown to be credential-free.
|
|
34
|
+
*
|
|
35
|
+
* The return value is prefixed with `" — "` so it appends cleanly to a message
|
|
36
|
+
* that already states the HTTP status, and is the empty string when there is
|
|
37
|
+
* nothing safe to add.
|
|
38
|
+
*
|
|
39
|
+
* @param body Raw response body text from the token endpoint.
|
|
40
|
+
* @returns `" — invalid_client: Client authentication failed"`, `" — response
|
|
41
|
+
* body withheld (may contain credentials)"`, or `""`.
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```ts
|
|
45
|
+
* throw new Error(
|
|
46
|
+
* `Token request failed: ${response.status}` +
|
|
47
|
+
* DescribeTokenEndpointFailure(await response.text())
|
|
48
|
+
* );
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export declare function DescribeTokenEndpointFailure(body: string | null | undefined): string;
|
|
52
|
+
//# sourceMappingURL=TokenEndpointErrors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TokenEndpointErrors.d.ts","sourceRoot":"","sources":["../src/TokenEndpointErrors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAkBH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CA8BpF"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Safe error-detail extraction for OAuth2 token-endpoint responses.
|
|
3
|
+
*
|
|
4
|
+
* ## Why this exists
|
|
5
|
+
*
|
|
6
|
+
* An OAuth2 token endpoint is the one kind of HTTP call where a **credential
|
|
7
|
+
* arrives in the response body**. Auth mechanisms that merely sign or encode a
|
|
8
|
+
* secret they already hold (HTTP Basic, OAuth 1.0a) never parse a response, so
|
|
9
|
+
* they have no body to mishandle. Token endpoints do, and across this codebase
|
|
10
|
+
* every instance of "credential written to a log" traced back to one of them.
|
|
11
|
+
*
|
|
12
|
+
* Two distinct ways the body leaks:
|
|
13
|
+
*
|
|
14
|
+
* 1. **On success-shaped responses.** Code that guards with
|
|
15
|
+
* `if (!response.ok || !parsed.access_token)` also fires on an HTTP 200 whose
|
|
16
|
+
* token sits somewhere the parser did not look — a vendor envelope, a nested
|
|
17
|
+
* `data` object. The body echoed in that branch *is* the access token.
|
|
18
|
+
* 2. **On genuine failures.** RFC 6749 says an error response carries no token,
|
|
19
|
+
* which makes raw-body echoing look safe. It is not: token endpoints commonly
|
|
20
|
+
* echo the *failing request* back in the error body, and that request carries
|
|
21
|
+
* `client_secret` — and, on a refresh, the refresh token. So the body leaks a
|
|
22
|
+
* different credential rather than none.
|
|
23
|
+
*
|
|
24
|
+
* The safe subset is narrow and specified: RFC 6749 §5.2 defines `error` and
|
|
25
|
+
* `error_description` as the fields describing a failure, and they carry no
|
|
26
|
+
* credentials. This helper surfaces those two and nothing else.
|
|
27
|
+
*/
|
|
28
|
+
/** Caps a vendor-supplied string so a hostile endpoint cannot flood the log. */
|
|
29
|
+
const MAX_DETAIL_LENGTH = 200;
|
|
30
|
+
function asBoundedString(value) {
|
|
31
|
+
if (typeof value !== 'string' || value.length === 0) {
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
return value.length > MAX_DETAIL_LENGTH ? `${value.slice(0, MAX_DETAIL_LENGTH)}…` : value;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Builds a log-safe description of a token-endpoint failure from its response body.
|
|
38
|
+
*
|
|
39
|
+
* Returns only the RFC 6749 §5.2 `error` / `error_description` fields. Any other
|
|
40
|
+
* body content — including a body that is not valid JSON — is withheld, since it
|
|
41
|
+
* cannot be shown to be credential-free.
|
|
42
|
+
*
|
|
43
|
+
* The return value is prefixed with `" — "` so it appends cleanly to a message
|
|
44
|
+
* that already states the HTTP status, and is the empty string when there is
|
|
45
|
+
* nothing safe to add.
|
|
46
|
+
*
|
|
47
|
+
* @param body Raw response body text from the token endpoint.
|
|
48
|
+
* @returns `" — invalid_client: Client authentication failed"`, `" — response
|
|
49
|
+
* body withheld (may contain credentials)"`, or `""`.
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```ts
|
|
53
|
+
* throw new Error(
|
|
54
|
+
* `Token request failed: ${response.status}` +
|
|
55
|
+
* DescribeTokenEndpointFailure(await response.text())
|
|
56
|
+
* );
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
export function DescribeTokenEndpointFailure(body) {
|
|
60
|
+
if (!body) {
|
|
61
|
+
return '';
|
|
62
|
+
}
|
|
63
|
+
let parsed;
|
|
64
|
+
try {
|
|
65
|
+
parsed = JSON.parse(body);
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
// A body that will not parse cannot be shown to be credential-free.
|
|
69
|
+
return ' — response body withheld (may contain credentials)';
|
|
70
|
+
}
|
|
71
|
+
if (!parsed || typeof parsed !== 'object') {
|
|
72
|
+
return ' — response body withheld (may contain credentials)';
|
|
73
|
+
}
|
|
74
|
+
const code = asBoundedString(parsed.error);
|
|
75
|
+
const description = asBoundedString(parsed.error_description);
|
|
76
|
+
if (code && description) {
|
|
77
|
+
return ` — ${code}: ${description}`;
|
|
78
|
+
}
|
|
79
|
+
if (code) {
|
|
80
|
+
return ` — ${code}`;
|
|
81
|
+
}
|
|
82
|
+
if (description) {
|
|
83
|
+
return ` — ${description}`;
|
|
84
|
+
}
|
|
85
|
+
return ' — response body withheld (may contain credentials)';
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=TokenEndpointErrors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TokenEndpointErrors.js","sourceRoot":"","sources":["../src/TokenEndpointErrors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAQH,gFAAgF;AAChF,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAE9B,SAAS,eAAe,CAAC,KAAc;IACnC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClD,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;AAC9F,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,4BAA4B,CAAC,IAA+B;IACxE,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO,EAAE,CAAC;IACd,CAAC;IAED,IAAI,MAAuB,CAAC;IAC5B,IAAI,CAAC;QACD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAoB,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACL,oEAAoE;QACpE,OAAO,qDAAqD,CAAC;IACjE,CAAC;IAED,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,qDAAqD,CAAC;IACjE,CAAC;IAED,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAE9D,IAAI,IAAI,IAAI,WAAW,EAAE,CAAC;QACtB,OAAO,MAAM,IAAI,KAAK,WAAW,EAAE,CAAC;IACxC,CAAC;IACD,IAAI,IAAI,EAAE,CAAC;QACP,OAAO,MAAM,IAAI,EAAE,CAAC;IACxB,CAAC;IACD,IAAI,WAAW,EAAE,CAAC;QACd,OAAO,MAAM,WAAW,EAAE,CAAC;IAC/B,CAAC;IACD,OAAO,qDAAqD,CAAC;AACjE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClassUtils.IsMemberOverridden.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/ClassUtils.IsMemberOverridden.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `IsMemberOverridden` — telling "made no choice" apart from "chose the default".
|
|
3
|
+
*
|
|
4
|
+
* WHY IT EXISTS
|
|
5
|
+
* A base class member cannot express the difference on its own. `DefaultSkipAsyncValidation`
|
|
6
|
+
* returning `true` looks identical whether a subclass deliberately opted out or never knew the flag
|
|
7
|
+
* was there — so an API whose default sits in the *off* position silently disables exactly the
|
|
8
|
+
* subclasses that most wanted it on. That is how `BaseEntity.ValidateAsync` overrides came to be
|
|
9
|
+
* dead code on every save: the method was written, documented as automatically called, and skipped.
|
|
10
|
+
*
|
|
11
|
+
* The distinction is recoverable only by asking whether the member was replaced, which is what this
|
|
12
|
+
* does. The cases below are the ones that make it either trustworthy or quietly wrong.
|
|
13
|
+
*/
|
|
14
|
+
import { describe, expect, it } from 'vitest';
|
|
15
|
+
import { IsMemberOverridden } from '../ClassUtils.js';
|
|
16
|
+
class Base {
|
|
17
|
+
method() {
|
|
18
|
+
return 'base';
|
|
19
|
+
}
|
|
20
|
+
get flag() {
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/** Replaces the method only — the shape an application usually writes. */
|
|
25
|
+
class MethodOverride extends Base {
|
|
26
|
+
method() {
|
|
27
|
+
return 'sub';
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/** Replaces the accessor only. */
|
|
31
|
+
class GetterOverride extends Base {
|
|
32
|
+
get flag() {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/** Inherits an override rather than declaring one — the generated / app / server layering. */
|
|
37
|
+
class Grandchild extends MethodOverride {
|
|
38
|
+
}
|
|
39
|
+
/** Declares neither. */
|
|
40
|
+
class Passthrough extends Base {
|
|
41
|
+
}
|
|
42
|
+
/** An unrelated hierarchy, for the base-class-identity checks. */
|
|
43
|
+
class OtherBase {
|
|
44
|
+
method() {
|
|
45
|
+
return 'other';
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
describe('finding an override', () => {
|
|
49
|
+
it('detects a replaced method', () => {
|
|
50
|
+
expect(IsMemberOverridden(new MethodOverride(), 'method', Base)).toBe(true);
|
|
51
|
+
});
|
|
52
|
+
it('detects a replaced accessor', () => {
|
|
53
|
+
// Descriptors carry an accessor on `get` and a method on `value`, never both — comparing
|
|
54
|
+
// only one of them makes half the cases silently answer false.
|
|
55
|
+
expect(IsMemberOverridden(new GetterOverride(), 'flag', Base)).toBe(true);
|
|
56
|
+
});
|
|
57
|
+
it('finds an override declared further up the chain', () => {
|
|
58
|
+
// Grandchild declares nothing itself. Inspecting only the instance's own prototype would
|
|
59
|
+
// report false and defer to a policy nobody stated.
|
|
60
|
+
expect(IsMemberOverridden(new Grandchild(), 'method', Base)).toBe(true);
|
|
61
|
+
});
|
|
62
|
+
it('reports false when a subclass declares neither', () => {
|
|
63
|
+
expect(IsMemberOverridden(new Passthrough(), 'method', Base)).toBe(false);
|
|
64
|
+
expect(IsMemberOverridden(new Passthrough(), 'flag', Base)).toBe(false);
|
|
65
|
+
});
|
|
66
|
+
it('reports false for the base class itself', () => {
|
|
67
|
+
expect(IsMemberOverridden(new Base(), 'method', Base)).toBe(false);
|
|
68
|
+
});
|
|
69
|
+
it('does not confuse two members of the same class', () => {
|
|
70
|
+
const m = new MethodOverride();
|
|
71
|
+
expect(IsMemberOverridden(m, 'method', Base)).toBe(true);
|
|
72
|
+
expect(IsMemberOverridden(m, 'flag', Base)).toBe(false);
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
describe('the base class is part of the question', () => {
|
|
76
|
+
it('reports false for a member the base does not declare', () => {
|
|
77
|
+
// No baseline means nothing was overridden. Answering true here would treat any incidental
|
|
78
|
+
// method on a subclass as an intentional override of something.
|
|
79
|
+
expect(IsMemberOverridden(new MethodOverride(), 'notDeclaredAnywhere', Base)).toBe(false);
|
|
80
|
+
});
|
|
81
|
+
it('reports false when the instance does not descend from the base', () => {
|
|
82
|
+
// The walk stops at the base prototype, which this chain never reaches.
|
|
83
|
+
expect(IsMemberOverridden(new MethodOverride(), 'method', OtherBase)).toBe(false);
|
|
84
|
+
});
|
|
85
|
+
it('does not let two base classes share a cached answer', () => {
|
|
86
|
+
// Cached per (class, member, base). Keyed on member alone, whichever base was asked first
|
|
87
|
+
// would decide for the other — and the wrong answer here re-enables the original bug.
|
|
88
|
+
const m = new MethodOverride();
|
|
89
|
+
expect(IsMemberOverridden(m, 'method', Base)).toBe(true);
|
|
90
|
+
expect(IsMemberOverridden(m, 'method', OtherBase)).toBe(false);
|
|
91
|
+
expect(IsMemberOverridden(m, 'method', Base)).toBe(true);
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
describe('answers are stable and per class', () => {
|
|
95
|
+
it('returns the same answer on repeat calls', () => {
|
|
96
|
+
const m = new MethodOverride();
|
|
97
|
+
for (let i = 0; i < 3; i++) {
|
|
98
|
+
expect(IsMemberOverridden(m, 'method', Base)).toBe(true);
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
it('does not let one class decide for another', () => {
|
|
102
|
+
expect(IsMemberOverridden(new MethodOverride(), 'method', Base)).toBe(true);
|
|
103
|
+
expect(IsMemberOverridden(new Passthrough(), 'method', Base)).toBe(false);
|
|
104
|
+
expect(IsMemberOverridden(new MethodOverride(), 'method', Base)).toBe(true);
|
|
105
|
+
});
|
|
106
|
+
it('answers per instance of the same class identically', () => {
|
|
107
|
+
expect(IsMemberOverridden(new MethodOverride(), 'method', Base)).toBe(true);
|
|
108
|
+
expect(IsMemberOverridden(new MethodOverride(), 'method', Base)).toBe(true);
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
describe('bad input is answered, not thrown', () => {
|
|
112
|
+
it.each([
|
|
113
|
+
['null instance', null],
|
|
114
|
+
['undefined instance', undefined],
|
|
115
|
+
['a primitive', 42],
|
|
116
|
+
['a string', 'nope'],
|
|
117
|
+
])('returns false for %s', (_label, value) => {
|
|
118
|
+
// Callers reach this on a hot path with whatever they were handed; a throw here would turn
|
|
119
|
+
// a policy question into an outage.
|
|
120
|
+
expect(IsMemberOverridden(value, 'method', Base)).toBe(false);
|
|
121
|
+
});
|
|
122
|
+
it('returns false for an empty member name', () => {
|
|
123
|
+
expect(IsMemberOverridden(new MethodOverride(), '', Base)).toBe(false);
|
|
124
|
+
});
|
|
125
|
+
it('returns false when the base class is not a constructor', () => {
|
|
126
|
+
expect(IsMemberOverridden(new MethodOverride(), 'method', null)).toBe(false);
|
|
127
|
+
expect(IsMemberOverridden(new MethodOverride(), 'method', {})).toBe(false);
|
|
128
|
+
});
|
|
129
|
+
it('returns false for an object with a null prototype', () => {
|
|
130
|
+
// Object.create(null) has no constructor, so the cache key cannot be formed.
|
|
131
|
+
expect(IsMemberOverridden(Object.create(null), 'method', Base)).toBe(false);
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
//# sourceMappingURL=ClassUtils.IsMemberOverridden.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClassUtils.IsMemberOverridden.test.js","sourceRoot":"","sources":["../../src/__tests__/ClassUtils.IsMemberOverridden.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DeepDiff.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/DeepDiff.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { DeepDiffer, DiffChangeType } from '../DeepDiff.js';
|
|
3
|
+
/**
|
|
4
|
+
* Tests for DeepDiffer — recursive diff between two values producing structured
|
|
5
|
+
* changes, a summary, and formatted text. Covers object/array/nested diffs, type
|
|
6
|
+
* changes, additions/removals, identity, and every config option the class exposes
|
|
7
|
+
* (includeUnchanged, maxDepth, maxStringLength, includeArrayIndices,
|
|
8
|
+
* treatNullAsUndefined, valueFormatter) plus updateConfig.
|
|
9
|
+
*/
|
|
10
|
+
describe('DeepDiffer', () => {
|
|
11
|
+
/** Locate the single change at a given path (fails the test if absent). */
|
|
12
|
+
const at = (result, path) => {
|
|
13
|
+
const change = result.changes.find((c) => c.path === path);
|
|
14
|
+
expect(change, `expected a change at path "${path}"`).toBeDefined();
|
|
15
|
+
return change;
|
|
16
|
+
};
|
|
17
|
+
// ---------------------------------------------------------------
|
|
18
|
+
// Primitive & object modifications
|
|
19
|
+
// ---------------------------------------------------------------
|
|
20
|
+
describe('object modifications', () => {
|
|
21
|
+
it('should detect a modified primitive property', () => {
|
|
22
|
+
const r = new DeepDiffer().diff({ a: 1 }, { a: 2 });
|
|
23
|
+
expect(r.summary.modified).toBe(1);
|
|
24
|
+
const c = at(r, 'a');
|
|
25
|
+
expect(c.type).toBe(DiffChangeType.Modified);
|
|
26
|
+
expect(c.oldValue).toBe(1);
|
|
27
|
+
expect(c.newValue).toBe(2);
|
|
28
|
+
expect(c.description).toBe('Changed from 1 to 2');
|
|
29
|
+
});
|
|
30
|
+
it('should detect a nested modification with a dotted path', () => {
|
|
31
|
+
const r = new DeepDiffer().diff({ u: { name: 'A' } }, { u: { name: 'B' } });
|
|
32
|
+
const c = at(r, 'u.name');
|
|
33
|
+
expect(c.type).toBe(DiffChangeType.Modified);
|
|
34
|
+
expect(c.description).toBe('Changed from "A" to "B"');
|
|
35
|
+
});
|
|
36
|
+
it('should treat a type change (number -> string) as a modification', () => {
|
|
37
|
+
const r = new DeepDiffer().diff({ a: 1 }, { a: '1' });
|
|
38
|
+
const c = at(r, 'a');
|
|
39
|
+
expect(c.type).toBe(DiffChangeType.Modified);
|
|
40
|
+
expect(c.oldValue).toBe(1);
|
|
41
|
+
expect(c.newValue).toBe('1');
|
|
42
|
+
});
|
|
43
|
+
it('should diff a root-level primitive pair under the "root" path', () => {
|
|
44
|
+
const r = new DeepDiffer().diff('a', 'b');
|
|
45
|
+
const c = at(r, 'root');
|
|
46
|
+
expect(c.type).toBe(DiffChangeType.Modified);
|
|
47
|
+
expect(c.description).toBe('Changed from "a" to "b"');
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
// ---------------------------------------------------------------
|
|
51
|
+
// Additions & removals
|
|
52
|
+
// ---------------------------------------------------------------
|
|
53
|
+
describe('additions and removals', () => {
|
|
54
|
+
it('should detect an added key', () => {
|
|
55
|
+
const r = new DeepDiffer().diff({ a: 1 }, { a: 1, b: 2 });
|
|
56
|
+
expect(r.summary.added).toBe(1);
|
|
57
|
+
const c = at(r, 'b');
|
|
58
|
+
expect(c.type).toBe(DiffChangeType.Added);
|
|
59
|
+
expect(c.newValue).toBe(2);
|
|
60
|
+
expect(c.oldValue).toBeUndefined();
|
|
61
|
+
expect(c.description).toBe('Added 2');
|
|
62
|
+
});
|
|
63
|
+
it('should detect a removed key', () => {
|
|
64
|
+
const r = new DeepDiffer().diff({ a: 1, b: 2 }, { a: 1 });
|
|
65
|
+
expect(r.summary.removed).toBe(1);
|
|
66
|
+
const c = at(r, 'b');
|
|
67
|
+
expect(c.type).toBe(DiffChangeType.Removed);
|
|
68
|
+
expect(c.oldValue).toBe(2);
|
|
69
|
+
expect(c.newValue).toBeUndefined();
|
|
70
|
+
expect(c.description).toBe('Removed 2');
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
// ---------------------------------------------------------------
|
|
74
|
+
// Arrays
|
|
75
|
+
// ---------------------------------------------------------------
|
|
76
|
+
describe('arrays', () => {
|
|
77
|
+
it('should report a length change plus the added element when an array grows', () => {
|
|
78
|
+
const r = new DeepDiffer().diff({ items: [1] }, { items: [1, 2] });
|
|
79
|
+
const lengthChange = at(r, 'items');
|
|
80
|
+
expect(lengthChange.type).toBe(DiffChangeType.Modified);
|
|
81
|
+
expect(lengthChange.description).toBe('Array length changed from 1 to 2');
|
|
82
|
+
const added = at(r, 'items.[1]');
|
|
83
|
+
expect(added.type).toBe(DiffChangeType.Added);
|
|
84
|
+
expect(added.newValue).toBe(2);
|
|
85
|
+
});
|
|
86
|
+
it('should report a length change plus the removed element when an array shrinks', () => {
|
|
87
|
+
const r = new DeepDiffer().diff([1, 2], [1]);
|
|
88
|
+
const lengthChange = at(r, 'root');
|
|
89
|
+
expect(lengthChange.type).toBe(DiffChangeType.Modified);
|
|
90
|
+
expect(lengthChange.description).toBe('Array length changed from 2 to 1');
|
|
91
|
+
const removed = at(r, '[1]');
|
|
92
|
+
expect(removed.type).toBe(DiffChangeType.Removed);
|
|
93
|
+
expect(removed.oldValue).toBe(2);
|
|
94
|
+
});
|
|
95
|
+
it('should detect an element modification without a length change', () => {
|
|
96
|
+
const r = new DeepDiffer().diff([1, 2], [1, 3]);
|
|
97
|
+
expect(r.summary.modified).toBe(1);
|
|
98
|
+
const c = at(r, '[1]');
|
|
99
|
+
expect(c.type).toBe(DiffChangeType.Modified);
|
|
100
|
+
expect(c.oldValue).toBe(2);
|
|
101
|
+
expect(c.newValue).toBe(3);
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
// ---------------------------------------------------------------
|
|
105
|
+
// Identity
|
|
106
|
+
// ---------------------------------------------------------------
|
|
107
|
+
describe('identity', () => {
|
|
108
|
+
it('should report no changes for deeply equal objects', () => {
|
|
109
|
+
const r = new DeepDiffer().diff({ a: 1, b: { c: 2 } }, { a: 1, b: { c: 2 } });
|
|
110
|
+
expect(r.changes).toHaveLength(0);
|
|
111
|
+
expect(r.summary.totalPaths).toBe(0);
|
|
112
|
+
});
|
|
113
|
+
it('should report no changes for equal primitives', () => {
|
|
114
|
+
expect(new DeepDiffer().diff(5, 5).changes).toHaveLength(0);
|
|
115
|
+
expect(new DeepDiffer().diff('x', 'x').changes).toHaveLength(0);
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
// ---------------------------------------------------------------
|
|
119
|
+
// includeUnchanged
|
|
120
|
+
// ---------------------------------------------------------------
|
|
121
|
+
describe('includeUnchanged option', () => {
|
|
122
|
+
it('should record unchanged paths when enabled', () => {
|
|
123
|
+
const r = new DeepDiffer({ includeUnchanged: true }).diff({ a: 1, b: 2 }, { a: 1, b: 3 });
|
|
124
|
+
expect(r.summary.unchanged).toBe(1);
|
|
125
|
+
const c = at(r, 'a');
|
|
126
|
+
expect(c.type).toBe(DiffChangeType.Unchanged);
|
|
127
|
+
expect(c.description).toBe('No change');
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
// ---------------------------------------------------------------
|
|
131
|
+
// treatNullAsUndefined
|
|
132
|
+
// ---------------------------------------------------------------
|
|
133
|
+
describe('treatNullAsUndefined option', () => {
|
|
134
|
+
it('should treat null -> value as Added (not Modified)', () => {
|
|
135
|
+
const r = new DeepDiffer({ treatNullAsUndefined: true }).diff({ name: null }, { name: 'John' });
|
|
136
|
+
expect(at(r, 'name').type).toBe(DiffChangeType.Added);
|
|
137
|
+
});
|
|
138
|
+
it('should treat value -> null as Removed (not Modified)', () => {
|
|
139
|
+
const r = new DeepDiffer({ treatNullAsUndefined: true }).diff({ status: 'active' }, { status: null });
|
|
140
|
+
expect(at(r, 'status').type).toBe(DiffChangeType.Removed);
|
|
141
|
+
});
|
|
142
|
+
it('should treat null -> value as Modified by default (option off)', () => {
|
|
143
|
+
const r = new DeepDiffer().diff({ name: null }, { name: 'John' });
|
|
144
|
+
const c = at(r, 'name');
|
|
145
|
+
expect(c.type).toBe(DiffChangeType.Modified);
|
|
146
|
+
expect(c.description).toBe('Changed from null to "John"');
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
// ---------------------------------------------------------------
|
|
150
|
+
// maxDepth
|
|
151
|
+
// ---------------------------------------------------------------
|
|
152
|
+
describe('maxDepth option', () => {
|
|
153
|
+
it('should not descend beyond the configured depth', () => {
|
|
154
|
+
const r = new DeepDiffer({ maxDepth: 1 }).diff({ a: { b: { c: 1 } } }, { a: { b: { c: 2 } } });
|
|
155
|
+
expect(r.changes).toHaveLength(0);
|
|
156
|
+
});
|
|
157
|
+
it('should detect the change when depth is sufficient', () => {
|
|
158
|
+
const r = new DeepDiffer({ maxDepth: 10 }).diff({ a: { b: { c: 1 } } }, { a: { b: { c: 2 } } });
|
|
159
|
+
expect(at(r, 'a.b.c').type).toBe(DiffChangeType.Modified);
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
// ---------------------------------------------------------------
|
|
163
|
+
// includeArrayIndices
|
|
164
|
+
// ---------------------------------------------------------------
|
|
165
|
+
describe('includeArrayIndices option', () => {
|
|
166
|
+
it('should use a generic [] path segment when indices are disabled', () => {
|
|
167
|
+
const r = new DeepDiffer({ includeArrayIndices: false }).diff({ items: [1] }, { items: [1, 2] });
|
|
168
|
+
expect(at(r, 'items.[]').type).toBe(DiffChangeType.Added);
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
// ---------------------------------------------------------------
|
|
172
|
+
// valueFormatter
|
|
173
|
+
// ---------------------------------------------------------------
|
|
174
|
+
describe('valueFormatter option', () => {
|
|
175
|
+
it('should use the custom formatter in descriptions', () => {
|
|
176
|
+
const r = new DeepDiffer({ valueFormatter: (_value, type) => `<${type}>` }).diff({ a: 1 }, { a: 2 });
|
|
177
|
+
expect(at(r, 'a').description).toBe('Changed from <number> to <number>');
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
// ---------------------------------------------------------------
|
|
181
|
+
// maxStringLength
|
|
182
|
+
// ---------------------------------------------------------------
|
|
183
|
+
describe('maxStringLength option', () => {
|
|
184
|
+
it('should truncate long strings in descriptions', () => {
|
|
185
|
+
const r = new DeepDiffer({ maxStringLength: 5 }).diff({ a: 'x' }, { a: 'abcdefghij' });
|
|
186
|
+
expect(at(r, 'a').description).toBe('Changed from "x" to "abcde..."');
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
// ---------------------------------------------------------------
|
|
190
|
+
// Formatted output
|
|
191
|
+
// ---------------------------------------------------------------
|
|
192
|
+
describe('formatted output', () => {
|
|
193
|
+
it('should include a summary header, totals, and grouped changes', () => {
|
|
194
|
+
const r = new DeepDiffer().diff({ a: 1 }, { a: 2, b: 3 });
|
|
195
|
+
expect(r.formatted).toContain('=== Deep Diff Summary ===');
|
|
196
|
+
expect(r.formatted).toContain('Total changes: 2');
|
|
197
|
+
expect(r.formatted).toContain('Added: 1');
|
|
198
|
+
expect(r.formatted).toContain('Modified: 1');
|
|
199
|
+
expect(r.formatted).toContain('=== Changes ===');
|
|
200
|
+
expect(r.formatted).toContain('a: Changed from 1 to 2');
|
|
201
|
+
expect(r.formatted).toContain('b: Added 3');
|
|
202
|
+
});
|
|
203
|
+
});
|
|
204
|
+
// ---------------------------------------------------------------
|
|
205
|
+
// updateConfig
|
|
206
|
+
// ---------------------------------------------------------------
|
|
207
|
+
describe('updateConfig', () => {
|
|
208
|
+
it('should apply config changes to subsequent diffs', () => {
|
|
209
|
+
const differ = new DeepDiffer();
|
|
210
|
+
differ.updateConfig({ includeUnchanged: true });
|
|
211
|
+
const r = differ.diff({ a: 1 }, { a: 1 });
|
|
212
|
+
expect(r.summary.unchanged).toBe(1);
|
|
213
|
+
expect(at(r, 'a').type).toBe(DiffChangeType.Unchanged);
|
|
214
|
+
});
|
|
215
|
+
});
|
|
216
|
+
// ---------------------------------------------------------------
|
|
217
|
+
// Summary totals
|
|
218
|
+
// ---------------------------------------------------------------
|
|
219
|
+
describe('summary totals', () => {
|
|
220
|
+
it('should count added, removed, and modified across a mixed diff', () => {
|
|
221
|
+
const r = new DeepDiffer().diff({ a: 1, b: 2 }, { a: 99, c: 3 });
|
|
222
|
+
expect(r.summary.added).toBe(1); // c
|
|
223
|
+
expect(r.summary.removed).toBe(1); // b
|
|
224
|
+
expect(r.summary.modified).toBe(1); // a
|
|
225
|
+
expect(r.summary.totalPaths).toBe(3);
|
|
226
|
+
});
|
|
227
|
+
});
|
|
228
|
+
});
|
|
229
|
+
//# sourceMappingURL=DeepDiff.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DeepDiff.test.js","sourceRoot":"","sources":["../../src/__tests__/DeepDiff.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IsPlainObject.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/IsPlainObject.test.ts"],"names":[],"mappings":""}
|