@actuarial-ts/core 0.6.0 → 0.6.1
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 +3 -3
- package/dist/capping.d.ts.map +1 -1
- package/dist/capping.js +39 -6
- package/dist/capping.js.map +1 -1
- package/dist/diagnosticAggregation.d.ts +3 -0
- package/dist/diagnosticAggregation.d.ts.map +1 -1
- package/dist/diagnosticAggregation.js +30 -7
- package/dist/diagnosticAggregation.js.map +1 -1
- package/dist/diagnosticDefinitions.d.ts +3 -0
- package/dist/diagnosticDefinitions.d.ts.map +1 -1
- package/dist/diagnosticDefinitions.js +844 -182
- package/dist/diagnosticDefinitions.js.map +1 -1
- package/dist/diagnosticDerivations.d.ts +23 -0
- package/dist/diagnosticDerivations.d.ts.map +1 -1
- package/dist/diagnosticDerivations.js +187 -43
- package/dist/diagnosticDerivations.js.map +1 -1
- package/dist/diagnosticExposure.d.ts +2 -2
- package/dist/diagnosticExposure.d.ts.map +1 -1
- package/dist/diagnosticExposure.js +228 -20
- package/dist/diagnosticExposure.js.map +1 -1
- package/dist/diagnosticExpressions.d.ts +1 -1
- package/dist/diagnosticExpressions.d.ts.map +1 -1
- package/dist/diagnosticExpressions.js +35 -15
- package/dist/diagnosticExpressions.js.map +1 -1
- package/dist/diagnosticFormulas.d.ts +3 -0
- package/dist/diagnosticFormulas.d.ts.map +1 -1
- package/dist/diagnosticFormulas.js +160 -26
- package/dist/diagnosticFormulas.js.map +1 -1
- package/dist/diagnosticIdentity.d.ts +15 -1
- package/dist/diagnosticIdentity.d.ts.map +1 -1
- package/dist/diagnosticIdentity.js +318 -51
- package/dist/diagnosticIdentity.js.map +1 -1
- package/dist/diagnosticOrdering.d.ts +8 -0
- package/dist/diagnosticOrdering.d.ts.map +1 -0
- package/dist/diagnosticOrdering.js +73 -0
- package/dist/diagnosticOrdering.js.map +1 -0
- package/dist/diagnosticPeriodAxis.d.ts +9 -0
- package/dist/diagnosticPeriodAxis.d.ts.map +1 -0
- package/dist/diagnosticPeriodAxis.js +69 -0
- package/dist/diagnosticPeriodAxis.js.map +1 -0
- package/dist/diagnosticPeriods.d.ts +2 -3
- package/dist/diagnosticPeriods.d.ts.map +1 -1
- package/dist/diagnosticPeriods.js +20 -68
- package/dist/diagnosticPeriods.js.map +1 -1
- package/dist/diagnosticPreparation.d.ts +47 -14
- package/dist/diagnosticPreparation.d.ts.map +1 -1
- package/dist/diagnosticPreparation.js +1482 -112
- package/dist/diagnosticPreparation.js.map +1 -1
- package/dist/diagnosticReview.d.ts +36 -14
- package/dist/diagnosticReview.d.ts.map +1 -1
- package/dist/diagnosticReview.js +448 -42
- package/dist/diagnosticReview.js.map +1 -1
- package/dist/diagnosticRunner.d.ts +2 -1
- package/dist/diagnosticRunner.d.ts.map +1 -1
- package/dist/diagnosticRunner.js +656 -70
- package/dist/diagnosticRunner.js.map +1 -1
- package/dist/diagnosticRuntime.d.ts +26 -0
- package/dist/diagnosticRuntime.d.ts.map +1 -0
- package/dist/diagnosticRuntime.js +243 -0
- package/dist/diagnosticRuntime.js.map +1 -0
- package/dist/diagnosticSourceOrdering.d.ts +6 -0
- package/dist/diagnosticSourceOrdering.d.ts.map +1 -0
- package/dist/diagnosticSourceOrdering.js +38 -0
- package/dist/diagnosticSourceOrdering.js.map +1 -0
- package/dist/index.d.ts +8 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/mack.d.ts +4 -0
- package/dist/mack.d.ts.map +1 -1
- package/dist/mack.js +32 -4
- package/dist/mack.js.map +1 -1
- package/dist/triangle.d.ts.map +1 -1
- package/dist/triangle.js +59 -9
- package/dist/triangle.js.map +1 -1
- package/dist/types.d.ts +4 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +22 -8
- package/dist/types.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -2
- package/src/capping.ts +109 -18
- package/src/diagnosticAggregation.ts +69 -20
- package/src/diagnosticDefinitions.ts +2675 -426
- package/src/diagnosticDerivations.ts +281 -49
- package/src/diagnosticExposure.ts +441 -50
- package/src/diagnosticExpressions.ts +99 -17
- package/src/diagnosticFormulas.ts +239 -39
- package/src/diagnosticIdentity.ts +691 -191
- package/src/diagnosticOrdering.ts +106 -0
- package/src/diagnosticPeriodAxis.ts +92 -0
- package/src/diagnosticPeriods.ts +67 -82
- package/src/diagnosticPreparation.ts +2369 -127
- package/src/diagnosticReview.ts +864 -58
- package/src/diagnosticRunner.ts +1076 -72
- package/src/diagnosticRuntime.ts +264 -0
- package/src/diagnosticSourceOrdering.ts +50 -0
- package/src/index.ts +31 -3
- package/src/mack.ts +72 -9
- package/src/triangle.ts +103 -13
- package/src/types.ts +55 -20
- package/src/version.ts +1 -1
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { DiagnosticMeasureContribution, DiagnosticStructuralBlocker } from "./diagnosticAggregation.js";
|
|
2
|
+
import type { DiagnosticMetricFinding } from "./diagnosticFormulas.js";
|
|
3
|
+
/** Section 15 total order, for values already validated by a public boundary. */
|
|
4
|
+
export declare function compareDiagnosticIdentityValues(left: unknown, right: unknown): number;
|
|
5
|
+
export declare function compareDiagnosticFindings(left: DiagnosticMetricFinding, right: DiagnosticMetricFinding): number;
|
|
6
|
+
export declare function compareDiagnosticContributions(left: DiagnosticMeasureContribution, right: DiagnosticMeasureContribution): number;
|
|
7
|
+
export declare function compareDiagnosticBlockers(left: DiagnosticStructuralBlocker, right: DiagnosticStructuralBlocker): number;
|
|
8
|
+
//# sourceMappingURL=diagnosticOrdering.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnosticOrdering.d.ts","sourceRoot":"","sources":["../src/diagnosticOrdering.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,6BAA6B,EAC7B,2BAA2B,EAC5B,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAIvE,iFAAiF;AACjF,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,OAAO,GACb,MAAM,CAoBR;AAaD,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,uBAAuB,EAC7B,KAAK,EAAE,uBAAuB,GAC7B,MAAM,CA4BR;AAED,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,6BAA6B,EACnC,KAAK,EAAE,6BAA6B,GACnC,MAAM,CASR;AAED,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,2BAA2B,EACjC,KAAK,EAAE,2BAA2B,GACjC,MAAM,CASR"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { canonicalJson } from "./canonical.js";
|
|
2
|
+
import { compareDiagnosticSourceLocations } from "./diagnosticSourceOrdering.js";
|
|
3
|
+
/** Section 15 total order, for values already validated by a public boundary. */
|
|
4
|
+
export function compareDiagnosticIdentityValues(left, right) {
|
|
5
|
+
if (left === right)
|
|
6
|
+
return 0;
|
|
7
|
+
if (left === undefined)
|
|
8
|
+
return -1;
|
|
9
|
+
if (right === undefined)
|
|
10
|
+
return 1;
|
|
11
|
+
if (left === null)
|
|
12
|
+
return -1;
|
|
13
|
+
if (right === null)
|
|
14
|
+
return 1;
|
|
15
|
+
if (typeof left === "number" && typeof right === "number")
|
|
16
|
+
return left - right;
|
|
17
|
+
if (typeof left === "boolean" && typeof right === "boolean")
|
|
18
|
+
return Number(left) - Number(right);
|
|
19
|
+
if (Array.isArray(left) && Array.isArray(right)) {
|
|
20
|
+
for (let i = 0; i < Math.min(left.length, right.length); i++) {
|
|
21
|
+
const comparison = compareDiagnosticIdentityValues(left[i], right[i]);
|
|
22
|
+
if (comparison !== 0)
|
|
23
|
+
return comparison;
|
|
24
|
+
}
|
|
25
|
+
return left.length - right.length;
|
|
26
|
+
}
|
|
27
|
+
const a = typeof left === "string" ? left : canonicalJson(left);
|
|
28
|
+
const b = typeof right === "string" ? right : canonicalJson(right);
|
|
29
|
+
return a < b ? -1 : a > b ? 1 : 0;
|
|
30
|
+
}
|
|
31
|
+
function compareSources(left, right) {
|
|
32
|
+
for (let i = 0; i < Math.min(left.length, right.length); i++) {
|
|
33
|
+
const comparison = compareDiagnosticSourceLocations(left[i], right[i]);
|
|
34
|
+
if (comparison !== 0)
|
|
35
|
+
return comparison;
|
|
36
|
+
}
|
|
37
|
+
return left.length - right.length;
|
|
38
|
+
}
|
|
39
|
+
export function compareDiagnosticFindings(left, right) {
|
|
40
|
+
const fields = [
|
|
41
|
+
"category",
|
|
42
|
+
"severity",
|
|
43
|
+
"code",
|
|
44
|
+
"ruleId",
|
|
45
|
+
"instanceId",
|
|
46
|
+
"measureId",
|
|
47
|
+
"expressionPath",
|
|
48
|
+
"sourceGroup",
|
|
49
|
+
"group",
|
|
50
|
+
"origin",
|
|
51
|
+
"valuation",
|
|
52
|
+
"developmentAge",
|
|
53
|
+
"ageUnit",
|
|
54
|
+
"recordId",
|
|
55
|
+
"claimId",
|
|
56
|
+
"exposureKey",
|
|
57
|
+
"message",
|
|
58
|
+
];
|
|
59
|
+
return (compareDiagnosticIdentityValues(fields.map((key) => left[key]), fields.map((key) => right[key])) ||
|
|
60
|
+
compareDiagnosticIdentityValues(left.offendingKey, right.offendingKey) ||
|
|
61
|
+
compareSources(left.sources, right.sources));
|
|
62
|
+
}
|
|
63
|
+
export function compareDiagnosticContributions(left, right) {
|
|
64
|
+
return (compareDiagnosticIdentityValues([left.sourceId, left.status, left.deduplicated], [right.sourceId, right.status, right.deduplicated]) ||
|
|
65
|
+
compareSources(left.sources, right.sources) ||
|
|
66
|
+
compareDiagnosticIdentityValues(left, right));
|
|
67
|
+
}
|
|
68
|
+
export function compareDiagnosticBlockers(left, right) {
|
|
69
|
+
return (compareDiagnosticIdentityValues([left.code, left.message, left.sourceIds], [right.code, right.message, right.sourceIds]) ||
|
|
70
|
+
compareSources(left.sources, right.sources) ||
|
|
71
|
+
compareDiagnosticIdentityValues(left.finding, right.finding));
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=diagnosticOrdering.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnosticOrdering.js","sourceRoot":"","sources":["../src/diagnosticOrdering.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { DiagnosticPeriodAxis } from "./diagnosticDefinitions.js";
|
|
2
|
+
export interface NormalizedDiagnosticAxisPeriod {
|
|
3
|
+
readonly label: string;
|
|
4
|
+
readonly coordinate: number;
|
|
5
|
+
}
|
|
6
|
+
export type DiagnosticPeriodSide = "origin" | "valuation";
|
|
7
|
+
/** Pure axis-level period normalization shared by compilation and execution. */
|
|
8
|
+
export declare function normalizeDiagnosticPeriodWithAxis(axis: DiagnosticPeriodAxis, side: DiagnosticPeriodSide, label: unknown): NormalizedDiagnosticAxisPeriod | null;
|
|
9
|
+
//# sourceMappingURL=diagnosticPeriodAxis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnosticPeriodAxis.d.ts","sourceRoot":"","sources":["../src/diagnosticPeriodAxis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAEvE,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,WAAW,CAAC;AAsC1D,gFAAgF;AAChF,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,oBAAoB,EAC1B,IAAI,EAAE,oBAAoB,EAC1B,KAAK,EAAE,OAAO,GACb,8BAA8B,GAAG,IAAI,CAyCvC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
function calendarCoordinate(label, cadence, anchor) {
|
|
2
|
+
let year;
|
|
3
|
+
let start;
|
|
4
|
+
let width;
|
|
5
|
+
if (cadence === "year") {
|
|
6
|
+
const match = /^(\d{4})$/.exec(label);
|
|
7
|
+
if (!match)
|
|
8
|
+
return null;
|
|
9
|
+
year = Number(match[1]);
|
|
10
|
+
start = year * 12;
|
|
11
|
+
width = 12;
|
|
12
|
+
}
|
|
13
|
+
else if (cadence === "month") {
|
|
14
|
+
const match = /^(\d{4})-(0[1-9]|1[0-2])$/.exec(label);
|
|
15
|
+
if (!match)
|
|
16
|
+
return null;
|
|
17
|
+
year = Number(match[1]);
|
|
18
|
+
start = year * 12 + Number(match[2]) - 1;
|
|
19
|
+
width = 1;
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
const compact = /^(\d{4})Q([1-4])$/.exec(label);
|
|
23
|
+
const hyphenated = /^(\d{4})-Q([1-4])$/.exec(label);
|
|
24
|
+
const first = /^Q([1-4]) (\d{4})$/.exec(label);
|
|
25
|
+
const match = compact ?? hyphenated ?? first;
|
|
26
|
+
if (!match)
|
|
27
|
+
return null;
|
|
28
|
+
const quarterFirst = match === first;
|
|
29
|
+
year = Number(match[quarterFirst ? 2 : 1]);
|
|
30
|
+
const quarter = Number(match[quarterFirst ? 1 : 2]);
|
|
31
|
+
start = year * 12 + (quarter - 1) * 3;
|
|
32
|
+
width = 3;
|
|
33
|
+
}
|
|
34
|
+
if (year < 1 || year > 9999)
|
|
35
|
+
return null;
|
|
36
|
+
return start + (anchor === "end" ? width : 0);
|
|
37
|
+
}
|
|
38
|
+
/** Pure axis-level period normalization shared by compilation and execution. */
|
|
39
|
+
export function normalizeDiagnosticPeriodWithAxis(axis, side, label) {
|
|
40
|
+
if (typeof label !== "string" || axis === null || typeof axis !== "object")
|
|
41
|
+
return null;
|
|
42
|
+
if (axis.kind === "calendar") {
|
|
43
|
+
const cadence = side === "origin" ? axis.originCadence : axis.valuationCadence;
|
|
44
|
+
const anchor = side === "origin" ? axis.originAnchor : axis.valuationAnchor;
|
|
45
|
+
if (!["month", "quarter", "year"].includes(cadence) ||
|
|
46
|
+
!["start", "end"].includes(anchor))
|
|
47
|
+
return null;
|
|
48
|
+
const coordinate = calendarCoordinate(label, cadence, anchor);
|
|
49
|
+
if (coordinate === null)
|
|
50
|
+
return null;
|
|
51
|
+
const canonicalLabel = cadence === "quarter"
|
|
52
|
+
? (() => {
|
|
53
|
+
const startCoordinate = calendarCoordinate(label, cadence, "start");
|
|
54
|
+
const year = Math.floor(startCoordinate / 12);
|
|
55
|
+
return `${String(year).padStart(4, "0")}-Q${Math.floor((startCoordinate % 12) / 3) + 1}`;
|
|
56
|
+
})()
|
|
57
|
+
: label;
|
|
58
|
+
return { label: canonicalLabel, coordinate };
|
|
59
|
+
}
|
|
60
|
+
if (axis.kind !== "ordered" ||
|
|
61
|
+
!Array.isArray(axis[side === "origin" ? "origins" : "valuations"]))
|
|
62
|
+
return null;
|
|
63
|
+
const catalog = side === "origin" ? axis.origins : axis.valuations;
|
|
64
|
+
const item = catalog.find((coordinate) => coordinate?.label === label || coordinate?.aliases?.includes(label));
|
|
65
|
+
return item && typeof item.coordinate === "number"
|
|
66
|
+
? { label: item.label, coordinate: item.coordinate }
|
|
67
|
+
: null;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=diagnosticPeriodAxis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnosticPeriodAxis.js","sourceRoot":"","sources":["../src/diagnosticPeriodAxis.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { CompiledDiagnosticDefinition } from "./diagnosticDefinitions.js";
|
|
2
|
+
import { type DiagnosticPeriodSide } from "./diagnosticPeriodAxis.js";
|
|
2
3
|
export interface DiagnosticNormalizedPeriod {
|
|
3
4
|
readonly label: string;
|
|
4
5
|
readonly coordinate: number;
|
|
5
6
|
}
|
|
6
|
-
|
|
7
|
-
export declare function normalizeDiagnosticPeriod(definition: CompiledDiagnosticDefinition, side: PeriodSide, label: string): DiagnosticNormalizedPeriod;
|
|
7
|
+
export declare function normalizeDiagnosticPeriod(definition: CompiledDiagnosticDefinition, side: DiagnosticPeriodSide, label: string): DiagnosticNormalizedPeriod;
|
|
8
8
|
export declare function diagnosticDevelopmentAge(definition: CompiledDiagnosticDefinition, origin: string, valuation: string): {
|
|
9
9
|
readonly origin: DiagnosticNormalizedPeriod;
|
|
10
10
|
readonly valuation: DiagnosticNormalizedPeriod;
|
|
@@ -12,5 +12,4 @@ export declare function diagnosticDevelopmentAge(definition: CompiledDiagnosticD
|
|
|
12
12
|
readonly ageUnit: string;
|
|
13
13
|
};
|
|
14
14
|
export declare function compareDiagnosticPeriods(left: DiagnosticNormalizedPeriod, right: DiagnosticNormalizedPeriod): number;
|
|
15
|
-
export {};
|
|
16
15
|
//# sourceMappingURL=diagnosticPeriods.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnosticPeriods.d.ts","sourceRoot":"","sources":["../src/diagnosticPeriods.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"diagnosticPeriods.d.ts","sourceRoot":"","sources":["../src/diagnosticPeriods.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,4BAA4B,EAE7B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,2BAA2B,CAAC;AAGnC,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAuBD,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,4BAA4B,EACxC,IAAI,EAAE,oBAAoB,EAC1B,KAAK,EAAE,MAAM,GACZ,0BAA0B,CAO5B;AAED,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,4BAA4B,EACxC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB;IACD,QAAQ,CAAC,MAAM,EAAE,0BAA0B,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,0BAA0B,CAAC;IAC/C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAgCA;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,0BAA0B,EAChC,KAAK,EAAE,0BAA0B,GAChC,MAAM,CAKR"}
|
|
@@ -1,73 +1,20 @@
|
|
|
1
1
|
import { assertCompiledDiagnosticDefinition } from "./diagnosticDefinitions.js";
|
|
2
|
+
import { normalizeDiagnosticPeriodWithAxis, } from "./diagnosticPeriodAxis.js";
|
|
2
3
|
import { DiagnosticValidationError } from "./types.js";
|
|
3
|
-
function calendarCoordinate(label, cadence, anchor) {
|
|
4
|
-
let year;
|
|
5
|
-
let start;
|
|
6
|
-
let width;
|
|
7
|
-
if (cadence === "year") {
|
|
8
|
-
const match = /^(\d{4})$/.exec(label);
|
|
9
|
-
if (!match)
|
|
10
|
-
return null;
|
|
11
|
-
year = Number(match[1]);
|
|
12
|
-
start = year * 12;
|
|
13
|
-
width = 12;
|
|
14
|
-
}
|
|
15
|
-
else if (cadence === "month") {
|
|
16
|
-
const match = /^(\d{4})-(0[1-9]|1[0-2])$/.exec(label);
|
|
17
|
-
if (!match)
|
|
18
|
-
return null;
|
|
19
|
-
year = Number(match[1]);
|
|
20
|
-
start = year * 12 + Number(match[2]) - 1;
|
|
21
|
-
width = 1;
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
const compact = /^(\d{4})Q([1-4])$/.exec(label);
|
|
25
|
-
const hyphenated = /^(\d{4})-Q([1-4])$/.exec(label);
|
|
26
|
-
const first = /^Q([1-4]) (\d{4})$/.exec(label);
|
|
27
|
-
const match = compact ?? hyphenated ?? first;
|
|
28
|
-
if (!match)
|
|
29
|
-
return null;
|
|
30
|
-
const quarterFirst = match === first;
|
|
31
|
-
year = Number(match[quarterFirst ? 2 : 1]);
|
|
32
|
-
const quarter = Number(match[quarterFirst ? 1 : 2]);
|
|
33
|
-
start = year * 12 + (quarter - 1) * 3;
|
|
34
|
-
width = 3;
|
|
35
|
-
}
|
|
36
|
-
if (year < 1 || year > 9999)
|
|
37
|
-
return null;
|
|
38
|
-
return start + (anchor === "end" ? width : 0);
|
|
39
|
-
}
|
|
40
4
|
function normalizeWithAxis(axis, side, label) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
if (coordinate === null)
|
|
46
|
-
throw new DiagnosticValidationError([{
|
|
47
|
-
domain: "input",
|
|
48
|
-
code: "invalid-period",
|
|
49
|
-
path: `$.${side}`,
|
|
50
|
-
message: `Invalid ${cadence} ${side} label ${JSON.stringify(label)}`,
|
|
51
|
-
}]);
|
|
52
|
-
const canonicalLabel = cadence === "quarter"
|
|
53
|
-
? (() => {
|
|
54
|
-
const startCoordinate = calendarCoordinate(label, cadence, "start");
|
|
55
|
-
const year = Math.floor(startCoordinate / 12);
|
|
56
|
-
return `${String(year).padStart(4, "0")}Q${Math.floor((startCoordinate % 12) / 3) + 1}`;
|
|
57
|
-
})()
|
|
58
|
-
: label;
|
|
59
|
-
return Object.freeze({ label: canonicalLabel, coordinate });
|
|
60
|
-
}
|
|
61
|
-
const catalog = side === "origin" ? axis.origins : axis.valuations;
|
|
62
|
-
const item = catalog.find((coordinate) => coordinate.label === label || coordinate.aliases?.includes(label));
|
|
63
|
-
if (!item)
|
|
64
|
-
throw new DiagnosticValidationError([{
|
|
5
|
+
const normalized = normalizeDiagnosticPeriodWithAxis(axis, side, label);
|
|
6
|
+
if (!normalized)
|
|
7
|
+
throw new DiagnosticValidationError([
|
|
8
|
+
{
|
|
65
9
|
domain: "input",
|
|
66
10
|
code: "invalid-period",
|
|
67
11
|
path: `$.${side}`,
|
|
68
|
-
message:
|
|
69
|
-
|
|
70
|
-
|
|
12
|
+
message: axis.kind === "calendar"
|
|
13
|
+
? `Invalid ${side === "origin" ? axis.originCadence : axis.valuationCadence} ${side} label ${JSON.stringify(label)}`
|
|
14
|
+
: `Unknown ordered-axis ${side} label ${JSON.stringify(label)}`,
|
|
15
|
+
},
|
|
16
|
+
]);
|
|
17
|
+
return Object.freeze(normalized);
|
|
71
18
|
}
|
|
72
19
|
export function normalizeDiagnosticPeriod(definition, side, label) {
|
|
73
20
|
assertCompiledDiagnosticDefinition(definition);
|
|
@@ -77,14 +24,18 @@ export function diagnosticDevelopmentAge(definition, origin, valuation) {
|
|
|
77
24
|
const normalizedOrigin = normalizeDiagnosticPeriod(definition, "origin", origin);
|
|
78
25
|
const normalizedValuation = normalizeDiagnosticPeriod(definition, "valuation", valuation);
|
|
79
26
|
const axis = definition.definition.periodAxis;
|
|
80
|
-
const developmentAge = normalizedValuation.coordinate -
|
|
27
|
+
const developmentAge = normalizedValuation.coordinate -
|
|
28
|
+
normalizedOrigin.coordinate +
|
|
29
|
+
axis.ageOffset;
|
|
81
30
|
if (!Number.isSafeInteger(developmentAge) || developmentAge < 0)
|
|
82
|
-
throw new DiagnosticValidationError([
|
|
31
|
+
throw new DiagnosticValidationError([
|
|
32
|
+
{
|
|
83
33
|
domain: "input",
|
|
84
34
|
code: "invalid-period",
|
|
85
35
|
path: "$.valuation",
|
|
86
36
|
message: "Valuation period precedes origin period or development age is unsafe",
|
|
87
|
-
}
|
|
37
|
+
},
|
|
38
|
+
]);
|
|
88
39
|
return Object.freeze({
|
|
89
40
|
origin: normalizedOrigin,
|
|
90
41
|
valuation: normalizedValuation,
|
|
@@ -93,6 +44,7 @@ export function diagnosticDevelopmentAge(definition, origin, valuation) {
|
|
|
93
44
|
});
|
|
94
45
|
}
|
|
95
46
|
export function compareDiagnosticPeriods(left, right) {
|
|
96
|
-
return left.coordinate - right.coordinate ||
|
|
47
|
+
return (left.coordinate - right.coordinate ||
|
|
48
|
+
(left.label < right.label ? -1 : left.label > right.label ? 1 : 0));
|
|
97
49
|
}
|
|
98
50
|
//# sourceMappingURL=diagnosticPeriods.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnosticPeriods.js","sourceRoot":"","sources":["../src/diagnosticPeriods.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"diagnosticPeriods.js","sourceRoot":"","sources":["../src/diagnosticPeriods.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kCAAkC,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,EACL,iCAAiC,GAElC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAOvD,SAAS,iBAAiB,CACxB,IAA0B,EAC1B,IAA0B,EAC1B,KAAa;IAEb,MAAM,UAAU,GAAG,iCAAiC,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACxE,IAAI,CAAC,UAAU;QACb,MAAM,IAAI,yBAAyB,CAAC;YAClC;gBACE,MAAM,EAAE,OAAO;gBACf,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,KAAK,IAAI,EAAE;gBACjB,OAAO,EACL,IAAI,CAAC,IAAI,KAAK,UAAU;oBACtB,CAAC,CAAC,WAAW,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,UAAU,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;oBACpH,CAAC,CAAC,wBAAwB,IAAI,UAAU,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;aACpE;SACF,CAAC,CAAC;IACL,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,UAAwC,EACxC,IAA0B,EAC1B,KAAa;IAEb,kCAAkC,CAAC,UAAU,CAAC,CAAC;IAC/C,OAAO,iBAAiB,CACtB,UAAU,CAAC,UAAU,CAAC,UAAkC,EACxD,IAAI,EACJ,KAAK,CACN,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,UAAwC,EACxC,MAAc,EACd,SAAiB;IAOjB,MAAM,gBAAgB,GAAG,yBAAyB,CAChD,UAAU,EACV,QAAQ,EACR,MAAM,CACP,CAAC;IACF,MAAM,mBAAmB,GAAG,yBAAyB,CACnD,UAAU,EACV,WAAW,EACX,SAAS,CACV,CAAC;IACF,MAAM,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC;IAC9C,MAAM,cAAc,GAClB,mBAAmB,CAAC,UAAU;QAC9B,gBAAgB,CAAC,UAAU;QAC3B,IAAI,CAAC,SAAS,CAAC;IACjB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,cAAc,GAAG,CAAC;QAC7D,MAAM,IAAI,yBAAyB,CAAC;YAClC;gBACE,MAAM,EAAE,OAAO;gBACf,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,aAAa;gBACnB,OAAO,EACL,sEAAsE;aACzE;SACF,CAAC,CAAC;IACL,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,MAAM,EAAE,gBAAgB;QACxB,SAAS,EAAE,mBAAmB;QAC9B,cAAc;QACd,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,IAAgC,EAChC,KAAiC;IAEjC,OAAO,CACL,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU;QAClC,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACnE,CAAC;AACJ,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type DiagnosticIdentityProjection, type NormalizedDiagnosticsFilterIdentity, type NormalizedDiagnosticSourceLocationIdentity } from "./diagnosticIdentity.js";
|
|
2
|
+
import { type CompiledDiagnosticDefinition, type DiagnosticDeepReadonly, type DiagnosticMeasureStats, type DiagnosticSourceLocation, type DiagnosticsFilter, type JsonValue } from "./diagnosticDefinitions.js";
|
|
2
3
|
import { type DiagnosticMeasureContribution, type DiagnosticStructuralBlocker } from "./diagnosticAggregation.js";
|
|
3
|
-
import { type DiagnosticAuditedNumericValue, type DiagnosticExposureObservation, type ReconciledDiagnosticExposure } from "./diagnosticExposure.js";
|
|
4
|
-
import type { DiagnosticMeasureStats } from "./diagnosticDefinitions.js";
|
|
4
|
+
import { type DiagnosticAuditedNumericValue, type DiagnosticExposureAuditObservation, type DiagnosticExposureObservation, type ReconciledDiagnosticExposure } from "./diagnosticExposure.js";
|
|
5
5
|
import type { DiagnosticMetricFinding } from "./diagnosticFormulas.js";
|
|
6
6
|
export interface DiagnosticLossRecordBase {
|
|
7
7
|
readonly recordId: string;
|
|
@@ -40,18 +40,45 @@ export interface PrepareDiagnosticDataInput {
|
|
|
40
40
|
readonly expectedCells?: readonly DiagnosticExpectedCell[];
|
|
41
41
|
}
|
|
42
42
|
export type DiagnosticInputDisposition = "invalid" | "complete-period-cutoff" | "filter" | "retained";
|
|
43
|
+
export interface DiagnosticLossInputAuditSnapshot {
|
|
44
|
+
readonly recordId: string;
|
|
45
|
+
readonly rowType: "claim" | "aggregate";
|
|
46
|
+
readonly claimId: string | null;
|
|
47
|
+
readonly sourceGroup: string;
|
|
48
|
+
readonly origin: string;
|
|
49
|
+
readonly valuation: string;
|
|
50
|
+
readonly complete: boolean;
|
|
51
|
+
readonly measures: Readonly<Record<string, DiagnosticAuditedNumericValue>>;
|
|
52
|
+
readonly source: DiagnosticSourceLocation | null;
|
|
53
|
+
}
|
|
54
|
+
export interface DiagnosticExposureInputAuditSnapshot {
|
|
55
|
+
readonly key: string;
|
|
56
|
+
readonly sourceGroup: string;
|
|
57
|
+
readonly origin: string;
|
|
58
|
+
readonly valuation: string | null;
|
|
59
|
+
readonly measureId: string;
|
|
60
|
+
readonly value: DiagnosticAuditedNumericValue;
|
|
61
|
+
readonly complete: boolean;
|
|
62
|
+
readonly source: DiagnosticSourceLocation | null;
|
|
63
|
+
}
|
|
64
|
+
export interface DiagnosticExpectedCellAuditSnapshot {
|
|
65
|
+
readonly sourceGroup: string;
|
|
66
|
+
readonly origin: string;
|
|
67
|
+
readonly valuation: string;
|
|
68
|
+
readonly source: DiagnosticSourceLocation | null;
|
|
69
|
+
}
|
|
43
70
|
export type DiagnosticInputAuditRecord = {
|
|
44
71
|
readonly kind: "loss";
|
|
45
72
|
readonly disposition: DiagnosticInputDisposition;
|
|
46
|
-
readonly record:
|
|
73
|
+
readonly record: DiagnosticLossInputAuditSnapshot;
|
|
47
74
|
} | {
|
|
48
75
|
readonly kind: "exposure";
|
|
49
76
|
readonly disposition: DiagnosticInputDisposition;
|
|
50
|
-
readonly record:
|
|
77
|
+
readonly record: DiagnosticExposureInputAuditSnapshot;
|
|
51
78
|
} | {
|
|
52
79
|
readonly kind: "expected-cell";
|
|
53
80
|
readonly disposition: Exclude<DiagnosticInputDisposition, "invalid">;
|
|
54
|
-
readonly record:
|
|
81
|
+
readonly record: DiagnosticExpectedCellAuditSnapshot;
|
|
55
82
|
};
|
|
56
83
|
export interface PreparedDiagnosticSourceCell {
|
|
57
84
|
readonly sourceGroup: string;
|
|
@@ -81,18 +108,24 @@ export interface PreparedDiagnosticData {
|
|
|
81
108
|
}
|
|
82
109
|
export interface NormalizedDiagnosticPreparationIdentity {
|
|
83
110
|
readonly definitionIntegrity: string;
|
|
84
|
-
readonly filter:
|
|
85
|
-
readonly completePeriodCutoffs: readonly DiagnosticCompletePeriodCutoff[];
|
|
86
|
-
readonly inputAudit: readonly DiagnosticInputAuditRecord[];
|
|
87
|
-
readonly cells: readonly PreparedDiagnosticSourceCell[];
|
|
88
|
-
readonly exposures: readonly ReconciledDiagnosticExposure[];
|
|
111
|
+
readonly filter: NormalizedDiagnosticsFilterIdentity | null;
|
|
112
|
+
readonly completePeriodCutoffs: readonly DiagnosticIdentityProjection<DiagnosticCompletePeriodCutoff>[];
|
|
113
|
+
readonly inputAudit: readonly DiagnosticIdentityProjection<DiagnosticInputAuditRecord>[];
|
|
114
|
+
readonly cells: readonly DiagnosticIdentityProjection<PreparedDiagnosticSourceCell>[];
|
|
115
|
+
readonly exposures: readonly DiagnosticIdentityProjection<ReconciledDiagnosticExposure>[];
|
|
89
116
|
readonly expectedCellsProvided: boolean;
|
|
90
|
-
readonly expectedCells: readonly
|
|
91
|
-
readonly findings: readonly DiagnosticMetricFinding[];
|
|
117
|
+
readonly expectedCells: readonly NormalizedDiagnosticExpectedCellIdentity[];
|
|
118
|
+
readonly findings: readonly DiagnosticIdentityProjection<DiagnosticMetricFinding>[];
|
|
119
|
+
}
|
|
120
|
+
export interface NormalizedDiagnosticExpectedCellIdentity {
|
|
121
|
+
readonly sourceGroup: string;
|
|
122
|
+
readonly origin: string;
|
|
123
|
+
readonly valuation: string;
|
|
124
|
+
readonly source: NormalizedDiagnosticSourceLocationIdentity | null;
|
|
92
125
|
}
|
|
93
126
|
export declare function prepareDiagnosticData(input: PrepareDiagnosticDataInput): PreparedDiagnosticData;
|
|
94
127
|
export declare function assertPreparedDiagnosticData(value: unknown): asserts value is PreparedDiagnosticData;
|
|
95
128
|
export declare function getPreparedDiagnosticDataIdentity(value: PreparedDiagnosticData): DiagnosticDeepReadonly<NormalizedDiagnosticPreparationIdentity>;
|
|
96
129
|
export declare function verifyPreparedDiagnosticDataIntegrity(value: PreparedDiagnosticData): void;
|
|
97
|
-
export type { JsonValue, DiagnosticAuditedNumericValue };
|
|
130
|
+
export type { JsonValue, DiagnosticAuditedNumericValue, DiagnosticExposureAuditObservation, };
|
|
98
131
|
//# sourceMappingURL=diagnosticPreparation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnosticPreparation.d.ts","sourceRoot":"","sources":["../src/diagnosticPreparation.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,4BAA4B,EACjC,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACf,MAAM,4BAA4B,CAAC;AACpC,OAAO,
|
|
1
|
+
{"version":3,"file":"diagnosticPreparation.d.ts","sourceRoot":"","sources":["../src/diagnosticPreparation.ts"],"names":[],"mappings":"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"}
|