@actuarial-ts/core 0.13.0 → 0.14.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.
- package/dist/definitionMigration.d.ts +32 -0
- package/dist/definitionMigration.d.ts.map +1 -0
- package/dist/definitionMigration.js +138 -0
- package/dist/definitionMigration.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/triangleAlgebra.d.ts +5 -0
- package/dist/triangleAlgebra.d.ts.map +1 -1
- package/dist/triangleAlgebra.js +30 -0
- package/dist/triangleAlgebra.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/src/definitionMigration.ts +178 -0
- package/src/index.ts +1 -0
- package/src/triangleAlgebra.ts +28 -0
- package/src/version.ts +1 -1
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { AnalysisDefinition } from "./customizationContracts.js";
|
|
2
|
+
/**
|
|
3
|
+
* Migrating a saved definition onto a changed source.
|
|
4
|
+
*
|
|
5
|
+
* A definition names measures and dimensions that belonged to the source it was authored against.
|
|
6
|
+
* Re-importing under different column mappings can rename or remove them, which leaves the saved
|
|
7
|
+
* definition referencing something that no longer exists. Planning reports exactly which references
|
|
8
|
+
* a candidate source cannot resolve; applying rewrites them, as a new version, and never edits the
|
|
9
|
+
* saved definition in place.
|
|
10
|
+
*/
|
|
11
|
+
export interface AnalysisDefinitionReference {
|
|
12
|
+
readonly kind: "measure" | "dimension";
|
|
13
|
+
readonly id: string;
|
|
14
|
+
/** JSON path of the first place this reference appears, for pointing the author at it. */
|
|
15
|
+
readonly path: string;
|
|
16
|
+
}
|
|
17
|
+
export interface AnalysisDefinitionMigrationPlan {
|
|
18
|
+
readonly resolved: boolean;
|
|
19
|
+
readonly unresolved: readonly AnalysisDefinitionReference[];
|
|
20
|
+
}
|
|
21
|
+
export interface AnalysisDefinitionRemapping {
|
|
22
|
+
readonly measures?: Readonly<Record<string, string>>;
|
|
23
|
+
readonly dimensions?: Readonly<Record<string, string>>;
|
|
24
|
+
}
|
|
25
|
+
/** Reports which of a saved definition's references a candidate source cannot resolve. */
|
|
26
|
+
export declare function planAnalysisDefinitionMigration(definition: AnalysisDefinition, available: {
|
|
27
|
+
readonly measureIds: readonly string[];
|
|
28
|
+
readonly dimensionIds: readonly string[];
|
|
29
|
+
}): AnalysisDefinitionMigrationPlan;
|
|
30
|
+
/** Applies a remapping, producing a new version. The saved definition is never edited in place. */
|
|
31
|
+
export declare function applyAnalysisDefinitionMigration(definition: AnalysisDefinition, remapping: AnalysisDefinitionRemapping): AnalysisDefinition;
|
|
32
|
+
//# sourceMappingURL=definitionMigration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definitionMigration.d.ts","sourceRoot":"","sources":["../src/definitionMigration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAqB,MAAM,6BAA6B,CAAC;AAIzF;;;;;;;;GAQG;AAEH,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,WAAW,CAAC;IACvC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,0FAA0F;IAC1F,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,SAAS,2BAA2B,EAAE,CAAC;CAC7D;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACxD;AAsCD,0FAA0F;AAC1F,wBAAgB,+BAA+B,CAC7C,UAAU,EAAE,kBAAkB,EAC9B,SAAS,EAAE;IAAE,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAC9F,+BAA+B,CAiBjC;AAWD,mGAAmG;AACnG,wBAAgB,gCAAgC,CAC9C,UAAU,EAAE,kBAAkB,EAC9B,SAAS,EAAE,2BAA2B,GACrC,kBAAkB,CA0EpB"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { DiagnosticValidationError } from "./types.js";
|
|
2
|
+
import { snapshotDiagnosticJson } from "./diagnosticRuntime.js";
|
|
3
|
+
function predicateDimensions(predicate, path, out) {
|
|
4
|
+
if ("dimensionId" in predicate)
|
|
5
|
+
out.push([predicate.dimensionId, `${path}.dimensionId`]);
|
|
6
|
+
for (const [index, nested] of (predicate.clauses ?? []).entries())
|
|
7
|
+
predicateDimensions(nested, `${path}.clauses[${index}]`, out);
|
|
8
|
+
const inner = predicate.predicate;
|
|
9
|
+
if (inner)
|
|
10
|
+
predicateDimensions(inner, `${path}.predicate`, out);
|
|
11
|
+
}
|
|
12
|
+
/** Every measure and dimension the definition names, with the first path each appears at. */
|
|
13
|
+
function references(definition) {
|
|
14
|
+
const measures = [];
|
|
15
|
+
const dimensions = [];
|
|
16
|
+
definition.dimensions.forEach((item, index) => dimensions.push([item.id, `$.dimensions[${index}].id`]));
|
|
17
|
+
// An exposure names a measure only when its allocation supplies weights.
|
|
18
|
+
definition.exposures.forEach((item, index) => {
|
|
19
|
+
if (item.allocation.kind === "supplied-weights")
|
|
20
|
+
measures.push([item.allocation.weightMeasureId, `$.exposures[${index}].allocation.weightMeasureId`]);
|
|
21
|
+
});
|
|
22
|
+
definition.measures.forEach((measure, index) => {
|
|
23
|
+
const statistic = measure.statistic;
|
|
24
|
+
for (const key of ["measureId", "weightMeasureId", "numeratorMeasureId", "denominatorMeasureId"])
|
|
25
|
+
if (typeof statistic[key] === "string")
|
|
26
|
+
measures.push([statistic[key], `$.measures[${index}].statistic.${key}`]);
|
|
27
|
+
if (measure.condition)
|
|
28
|
+
predicateDimensions(measure.condition, `$.measures[${index}].condition`, dimensions);
|
|
29
|
+
});
|
|
30
|
+
for (const [name, scope] of [
|
|
31
|
+
["financial", definition.scopes.financial],
|
|
32
|
+
["reporting", definition.scopes.reporting],
|
|
33
|
+
])
|
|
34
|
+
predicateDimensions(scope.predicate, `$.scopes.${name}.predicate`, dimensions);
|
|
35
|
+
return { measures, dimensions };
|
|
36
|
+
}
|
|
37
|
+
/** Reports which of a saved definition's references a candidate source cannot resolve. */
|
|
38
|
+
export function planAnalysisDefinitionMigration(definition, available) {
|
|
39
|
+
const measures = new Set(available.measureIds);
|
|
40
|
+
const dimensions = new Set(available.dimensionIds);
|
|
41
|
+
const found = references(definition);
|
|
42
|
+
const seen = new Set();
|
|
43
|
+
const unresolved = [];
|
|
44
|
+
const consider = (kind, entries, have) => {
|
|
45
|
+
for (const [id, path] of entries) {
|
|
46
|
+
const key = `${kind}:${id}`;
|
|
47
|
+
if (have.has(id) || seen.has(key))
|
|
48
|
+
continue;
|
|
49
|
+
seen.add(key);
|
|
50
|
+
unresolved.push({ kind, id, path });
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
consider("dimension", found.dimensions, dimensions);
|
|
54
|
+
consider("measure", found.measures, measures);
|
|
55
|
+
return snapshotDiagnosticJson({ resolved: unresolved.length === 0, unresolved });
|
|
56
|
+
}
|
|
57
|
+
function rewritePredicate(predicate, map) {
|
|
58
|
+
const next = { ...predicate };
|
|
59
|
+
if (typeof next.dimensionId === "string" && map[next.dimensionId])
|
|
60
|
+
next.dimensionId = map[next.dimensionId];
|
|
61
|
+
if (Array.isArray(next.clauses))
|
|
62
|
+
next.clauses = next.clauses.map((nested) => rewritePredicate(nested, map));
|
|
63
|
+
if (next.predicate)
|
|
64
|
+
next.predicate = rewritePredicate(next.predicate, map);
|
|
65
|
+
return next;
|
|
66
|
+
}
|
|
67
|
+
/** Applies a remapping, producing a new version. The saved definition is never edited in place. */
|
|
68
|
+
export function applyAnalysisDefinitionMigration(definition, remapping) {
|
|
69
|
+
const measures = remapping.measures ?? {};
|
|
70
|
+
const dimensions = remapping.dimensions ?? {};
|
|
71
|
+
const issues = [];
|
|
72
|
+
const present = references(definition);
|
|
73
|
+
const check = (map, kind, named, path) => {
|
|
74
|
+
for (const [from, to] of Object.entries(map)) {
|
|
75
|
+
if (!named.has(from))
|
|
76
|
+
issues.push({
|
|
77
|
+
domain: "configuration",
|
|
78
|
+
code: "unknown-reference",
|
|
79
|
+
path: `${path}.${from}`,
|
|
80
|
+
message: `This definition does not reference the ${kind} ${from}`,
|
|
81
|
+
});
|
|
82
|
+
if (!to)
|
|
83
|
+
issues.push({
|
|
84
|
+
domain: "configuration",
|
|
85
|
+
code: "invalid-string",
|
|
86
|
+
path: `${path}.${from}`,
|
|
87
|
+
message: `A migrated ${kind} needs a target id`,
|
|
88
|
+
});
|
|
89
|
+
// Merging two distinct references into one would silently change what the definition means.
|
|
90
|
+
else if (named.has(to) && !Object.hasOwn(map, to))
|
|
91
|
+
issues.push({
|
|
92
|
+
domain: "configuration",
|
|
93
|
+
code: "duplicate-id",
|
|
94
|
+
path: `${path}.${from}`,
|
|
95
|
+
message: `Migrating ${kind} ${from} onto ${to} would merge it with a reference this definition already uses`,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
check(measures, "measure", new Set(present.measures.map(([id]) => id)), "$.remapping.measures");
|
|
100
|
+
check(dimensions, "dimension", new Set(present.dimensions.map(([id]) => id)), "$.remapping.dimensions");
|
|
101
|
+
if (issues.length > 0)
|
|
102
|
+
throw new DiagnosticValidationError(issues);
|
|
103
|
+
const measureOf = (id) => measures[id] ?? id;
|
|
104
|
+
return snapshotDiagnosticJson({
|
|
105
|
+
...definition,
|
|
106
|
+
version: `${definition.version}+migration.1`,
|
|
107
|
+
dimensions: definition.dimensions.map((item) => ({ ...item, id: dimensions[item.id] ?? item.id })),
|
|
108
|
+
exposures: definition.exposures.map((item) => item.allocation.kind === "supplied-weights"
|
|
109
|
+
? {
|
|
110
|
+
...item,
|
|
111
|
+
allocation: { ...item.allocation, weightMeasureId: measureOf(item.allocation.weightMeasureId) },
|
|
112
|
+
}
|
|
113
|
+
: item),
|
|
114
|
+
measures: definition.measures.map((measure) => {
|
|
115
|
+
const statistic = { ...measure.statistic };
|
|
116
|
+
for (const key of ["measureId", "weightMeasureId", "numeratorMeasureId", "denominatorMeasureId"])
|
|
117
|
+
if (typeof statistic[key] === "string")
|
|
118
|
+
statistic[key] = measureOf(statistic[key]);
|
|
119
|
+
return {
|
|
120
|
+
...measure,
|
|
121
|
+
statistic: statistic,
|
|
122
|
+
...(measure.condition ? { condition: rewritePredicate(measure.condition, dimensions) } : {}),
|
|
123
|
+
};
|
|
124
|
+
}),
|
|
125
|
+
scopes: {
|
|
126
|
+
...definition.scopes,
|
|
127
|
+
financial: {
|
|
128
|
+
...definition.scopes.financial,
|
|
129
|
+
predicate: rewritePredicate(definition.scopes.financial.predicate, dimensions),
|
|
130
|
+
},
|
|
131
|
+
reporting: {
|
|
132
|
+
...definition.scopes.reporting,
|
|
133
|
+
predicate: rewritePredicate(definition.scopes.reporting.predicate, dimensions),
|
|
134
|
+
},
|
|
135
|
+
},
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=definitionMigration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definitionMigration.js","sourceRoot":"","sources":["../src/definitionMigration.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAkC,MAAM,YAAY,CAAC;AACvF,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AA6BhE,SAAS,mBAAmB,CAAC,SAA4B,EAAE,IAAY,EAAE,GAAuB;IAC9F,IAAI,aAAa,IAAI,SAAS;QAAE,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,IAAI,cAAc,CAAC,CAAC,CAAC;IACzF,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAE,SAAwD,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE;QAC/G,mBAAmB,CAAC,MAAM,EAAE,GAAG,IAAI,YAAY,KAAK,GAAG,EAAE,GAAG,CAAC,CAAC;IAChE,MAAM,KAAK,GAAI,SAA+C,CAAC,SAAS,CAAC;IACzE,IAAI,KAAK;QAAE,mBAAmB,CAAC,KAAK,EAAE,GAAG,IAAI,YAAY,EAAE,GAAG,CAAC,CAAC;AAClE,CAAC;AAED,6FAA6F;AAC7F,SAAS,UAAU,CAAC,UAA8B;IAIhD,MAAM,QAAQ,GAAuB,EAAE,CAAC;IACxC,MAAM,UAAU,GAAuB,EAAE,CAAC;IAC1C,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,gBAAgB,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC;IACxG,yEAAyE;IACzE,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC3C,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,kBAAkB;YAC7C,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,eAAe,KAAK,8BAA8B,CAAC,CAAC,CAAC;IACzG,CAAC,CAAC,CAAC;IACH,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QAC7C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAoC,CAAC;QAC/D,KAAK,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,sBAAsB,CAAC;YAC9F,IAAI,OAAO,SAAS,CAAC,GAAG,CAAC,KAAK,QAAQ;gBACpC,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAW,EAAE,cAAc,KAAK,eAAe,GAAG,EAAE,CAAC,CAAC,CAAC;QACvF,IAAI,OAAO,CAAC,SAAS;YAAE,mBAAmB,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,KAAK,aAAa,EAAE,UAAU,CAAC,CAAC;IAC9G,CAAC,CAAC,CAAC;IACH,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI;QAC1B,CAAC,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC;QAC1C,CAAC,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC;KAClC;QACR,mBAAmB,CAAC,KAAK,CAAC,SAAS,EAAE,YAAY,IAAI,YAAY,EAAE,UAAU,CAAC,CAAC;IACjF,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;AAClC,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,+BAA+B,CAC7C,UAA8B,EAC9B,SAA+F;IAE/F,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,UAAU,GAAkC,EAAE,CAAC;IACrD,MAAM,QAAQ,GAAG,CAAC,IAA6B,EAAE,OAA2B,EAAE,IAAiB,EAAE,EAAE;QACjG,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,OAAO,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,CAAC;YAC5B,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS;YAC5C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,CAAC;IACH,CAAC,CAAC;IACF,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACpD,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9C,OAAO,sBAAsB,CAAC,EAAE,QAAQ,EAAE,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;AACnF,CAAC;AAED,SAAS,gBAAgB,CAAC,SAA4B,EAAE,GAAqC;IAC3F,MAAM,IAAI,GAAG,EAAE,GAAG,SAAS,EAA6B,CAAC;IACzD,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;QAAE,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5G,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAI,IAAI,CAAC,OAA+B,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IACtG,IAAI,IAAI,CAAC,SAAS;QAAE,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,SAA8B,EAAE,GAAG,CAAC,CAAC;IAChG,OAAO,IAAyB,CAAC;AACnC,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,gCAAgC,CAC9C,UAA8B,EAC9B,SAAsC;IAEtC,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,IAAI,EAAE,CAAC;IAC1C,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,IAAI,EAAE,CAAC;IAC9C,MAAM,MAAM,GAAgC,EAAE,CAAC;IAC/C,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,CACZ,GAAqC,EACrC,IAA6B,EAC7B,KAAkB,EAClB,IAAY,EACZ,EAAE;QACF,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;gBAClB,MAAM,CAAC,IAAI,CAAC;oBACV,MAAM,EAAE,eAAe;oBACvB,IAAI,EAAE,mBAAmB;oBACzB,IAAI,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE;oBACvB,OAAO,EAAE,0CAA0C,IAAI,IAAI,IAAI,EAAE;iBAClE,CAAC,CAAC;YACL,IAAI,CAAC,EAAE;gBACL,MAAM,CAAC,IAAI,CAAC;oBACV,MAAM,EAAE,eAAe;oBACvB,IAAI,EAAE,gBAAgB;oBACtB,IAAI,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE;oBACvB,OAAO,EAAE,cAAc,IAAI,oBAAoB;iBAChD,CAAC,CAAC;YACL,4FAA4F;iBACvF,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC;gBAC/C,MAAM,CAAC,IAAI,CAAC;oBACV,MAAM,EAAE,eAAe;oBACvB,IAAI,EAAE,cAAc;oBACpB,IAAI,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE;oBACvB,OAAO,EAAE,aAAa,IAAI,IAAI,IAAI,SAAS,EAAE,+DAA+D;iBAC7G,CAAC,CAAC;QACP,CAAC;IACH,CAAC,CAAC;IACF,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC;IAChG,KAAK,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,wBAAwB,CAAC,CAAC;IACxG,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,yBAAyB,CAAC,MAAM,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;IACrD,OAAO,sBAAsB,CAAC;QAC5B,GAAG,UAAU;QACb,OAAO,EAAE,GAAG,UAAU,CAAC,OAAO,cAAc;QAC5C,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAClG,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAC3C,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,kBAAkB;YACzC,CAAC,CAAC;gBACE,GAAG,IAAI;gBACP,UAAU,EAAE,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,eAAe,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE;aAChG;YACH,CAAC,CAAC,IAAI,CACT;QACD,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YAC5C,MAAM,SAAS,GAAG,EAAE,GAAI,OAAO,CAAC,SAAqC,EAAE,CAAC;YACxE,KAAK,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,sBAAsB,CAAC;gBAC9F,IAAI,OAAO,SAAS,CAAC,GAAG,CAAC,KAAK,QAAQ;oBAAE,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,CAAW,CAAC,CAAC;YAC/F,OAAO;gBACL,GAAG,OAAO;gBACV,SAAS,EAAE,SAAqC;gBAChD,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,gBAAgB,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC7F,CAAC;QACJ,CAAC,CAAC;QACF,MAAM,EAAE;YACN,GAAG,UAAU,CAAC,MAAM;YACpB,SAAS,EAAE;gBACT,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS;gBAC9B,SAAS,EAAE,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC;aAC/E;YACD,SAAS,EAAE;gBACT,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS;gBAC9B,SAAS,EAAE,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC;aAC/E;SACF;KACF,CAAC,CAAC;AACL,CAAC"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,EAC9B,6BAA6B,EAC7B,6BAA6B,EAC7B,6BAA6B,EAC7B,kCAAkC,EAClC,mCAAmC,GAGpC,MAAM,+BAA+B,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,uBAAuB,EACvB,gBAAgB,EAChB,gBAAgB,EAChB,uBAAuB,EACvB,iBAAiB,EACjB,aAAa,EACb,4BAA4B,EAC5B,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,0CAA0C,EAC1C,+BAA+B,EAC/B,+BAA+B,GAChC,MAAM,4BAA4B,CAAC;AAMpC,OAAO,EACL,kCAAkC,EAClC,2BAA2B,GAC5B,MAAM,4BAA4B,CAAC;AAmDpC,OAAO,EAAE,yBAAyB,EAAE,kCAAkC,EAAE,MAAM,yBAAyB,CAAC;AACxG,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,EAC3B,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AAOjC,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAK3E,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,gCAAgC,EAChC,kCAAkC,GACnC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EACL,6BAA6B,EAC7B,+BAA+B,GAChC,MAAM,4BAA4B,CAAC;AAMpC,OAAO,EACL,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,mCAAmC,EACnC,4BAA4B,EAC5B,iCAAiC,EACjC,gDAAgD,EAChD,2CAA2C,EAC3C,iCAAiC,EACjC,qBAAqB,EACrB,4BAA4B,EAC5B,gCAAgC,EAChC,mCAAmC,EACnC,8BAA8B,EAC9B,kCAAkC,EAClC,qCAAqC,GACtC,MAAM,4BAA4B,CAAC;AAqBpC,OAAO,EACL,oCAAoC,EACpC,cAAc,EACd,qBAAqB,EACrB,kCAAkC,EAClC,iDAAiD,EACjD,oBAAoB,EACpB,2BAA2B,EAC3B,kCAAkC,EAClC,YAAY,EACZ,mBAAmB,EACnB,uCAAuC,EACvC,8CAA8C,GAC/C,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,6BAA6B,EAAE,oCAAoC,EAAE,MAAM,uBAAuB,CAAC;AAC5G,OAAO,EACL,wCAAwC,EACxC,6BAA6B,EAC7B,oCAAoC,EACpC,qDAAqD,EACrD,kCAAkC,EAClC,+BAA+B,EAC/B,qCAAqC,GACtC,MAAM,4BAA4B,CAAC;AA8CpC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import type { Triangle } from "./types.js";
|
|
2
2
|
/** Cumulative -> incremental. First cell passes through; nulls propagate. */
|
|
3
3
|
export declare function cumulativeToIncremental(tri: Triangle): Triangle;
|
|
4
|
+
/**
|
|
5
|
+
* Each observed cell as a share of that origin's latest observed value: the emergence pattern a
|
|
6
|
+
* triangle has actually shown, as opposed to one projected from selected factors. Dimensionless.
|
|
7
|
+
*/
|
|
8
|
+
export declare function developmentShareOfLatest(tri: Triangle): Triangle;
|
|
4
9
|
/** Incremental -> cumulative. A null stops accumulation for the row. */
|
|
5
10
|
export declare function incrementalToCumulative(tri: Triangle): Triangle;
|
|
6
11
|
/** Cell-wise a + b; null wherever either side is null. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triangleAlgebra.d.ts","sourceRoot":"","sources":["../src/triangleAlgebra.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"triangleAlgebra.d.ts","sourceRoot":"","sources":["../src/triangleAlgebra.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAyC3C,6EAA6E;AAC7E,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,QAAQ,GAAG,QAAQ,CAoB/D;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,QAAQ,GAAG,QAAQ,CAkBhE;AAED,wEAAwE;AACxE,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,QAAQ,GAAG,QAAQ,CAiB/D;AAED,0DAA0D;AAC1D,wBAAgB,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAa/D;AAED,gFAAgF;AAChF,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAapE"}
|
package/dist/triangleAlgebra.js
CHANGED
|
@@ -13,6 +13,10 @@ import { isNum } from "./util.js";
|
|
|
13
13
|
* - incrementalToCumulative: accumulation stops at the FIRST null in a row
|
|
14
14
|
* (a later observed increment has no defined cumulative base).
|
|
15
15
|
* - Incremental[0] = cumulative[0] (the first cell is its own increment).
|
|
16
|
+
* - developmentShareOfLatest: each observed cell over that origin's own latest
|
|
17
|
+
* observed value. The latest cell is therefore exactly 1. A latest value that
|
|
18
|
+
* is missing, zero or negative carries no proportion, so the whole row is
|
|
19
|
+
* null - the same rule every other denominator in this SDK follows.
|
|
16
20
|
*/
|
|
17
21
|
function sameShape(a, b) {
|
|
18
22
|
return (a.origins.length === b.origins.length &&
|
|
@@ -48,6 +52,32 @@ export function cumulativeToIncremental(tri) {
|
|
|
48
52
|
}),
|
|
49
53
|
};
|
|
50
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Each observed cell as a share of that origin's latest observed value: the emergence pattern a
|
|
57
|
+
* triangle has actually shown, as opposed to one projected from selected factors. Dimensionless.
|
|
58
|
+
*/
|
|
59
|
+
export function developmentShareOfLatest(tri) {
|
|
60
|
+
for (const row of tri.values)
|
|
61
|
+
if (row.length !== tri.ages.length)
|
|
62
|
+
throw new ReservingError("SHAPE", "Every triangle row must have one cell per development age");
|
|
63
|
+
if (tri.values.length !== tri.origins.length)
|
|
64
|
+
throw new ReservingError("SHAPE", "A triangle must have one row per origin");
|
|
65
|
+
return {
|
|
66
|
+
kind: tri.kind,
|
|
67
|
+
origins: [...tri.origins],
|
|
68
|
+
ages: [...tri.ages],
|
|
69
|
+
values: tri.values.map((row) => {
|
|
70
|
+
// The row's own latest observation is the denominator; never a neighbouring origin's.
|
|
71
|
+
let latest = null;
|
|
72
|
+
for (const cell of row)
|
|
73
|
+
if (isNum(cell))
|
|
74
|
+
latest = cell;
|
|
75
|
+
if (!isNum(latest) || latest <= 0)
|
|
76
|
+
return new Array(row.length).fill(null);
|
|
77
|
+
return row.map((cell) => (isNum(cell) ? cell / latest : null));
|
|
78
|
+
}),
|
|
79
|
+
};
|
|
80
|
+
}
|
|
51
81
|
/** Incremental -> cumulative. A null stops accumulation for the row. */
|
|
52
82
|
export function incrementalToCumulative(tri) {
|
|
53
83
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triangleAlgebra.js","sourceRoot":"","sources":["../src/triangleAlgebra.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAElC
|
|
1
|
+
{"version":3,"file":"triangleAlgebra.js","sourceRoot":"","sources":["../src/triangleAlgebra.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
package/dist/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@actuarial-ts/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.0",
|
|
4
4
|
"description": "Pure, zero-dependency P&C actuarial math for TypeScript: reserving, generalized definition-driven diagnostics, trends, limits, discounting, and seeded stochastic methods with published-value validation.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import type { AnalysisDefinition, AnalysisPredicate } from "./customizationContracts.js";
|
|
2
|
+
import { DiagnosticValidationError, type DiagnosticValidationIssue } from "./types.js";
|
|
3
|
+
import { snapshotDiagnosticJson } from "./diagnosticRuntime.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Migrating a saved definition onto a changed source.
|
|
7
|
+
*
|
|
8
|
+
* A definition names measures and dimensions that belonged to the source it was authored against.
|
|
9
|
+
* Re-importing under different column mappings can rename or remove them, which leaves the saved
|
|
10
|
+
* definition referencing something that no longer exists. Planning reports exactly which references
|
|
11
|
+
* a candidate source cannot resolve; applying rewrites them, as a new version, and never edits the
|
|
12
|
+
* saved definition in place.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
export interface AnalysisDefinitionReference {
|
|
16
|
+
readonly kind: "measure" | "dimension";
|
|
17
|
+
readonly id: string;
|
|
18
|
+
/** JSON path of the first place this reference appears, for pointing the author at it. */
|
|
19
|
+
readonly path: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export interface AnalysisDefinitionMigrationPlan {
|
|
23
|
+
readonly resolved: boolean;
|
|
24
|
+
readonly unresolved: readonly AnalysisDefinitionReference[];
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export interface AnalysisDefinitionRemapping {
|
|
28
|
+
readonly measures?: Readonly<Record<string, string>>;
|
|
29
|
+
readonly dimensions?: Readonly<Record<string, string>>;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function predicateDimensions(predicate: AnalysisPredicate, path: string, out: [string, string][]): void {
|
|
33
|
+
if ("dimensionId" in predicate) out.push([predicate.dimensionId, `${path}.dimensionId`]);
|
|
34
|
+
for (const [index, nested] of ((predicate as { clauses?: readonly AnalysisPredicate[] }).clauses ?? []).entries())
|
|
35
|
+
predicateDimensions(nested, `${path}.clauses[${index}]`, out);
|
|
36
|
+
const inner = (predicate as { predicate?: AnalysisPredicate }).predicate;
|
|
37
|
+
if (inner) predicateDimensions(inner, `${path}.predicate`, out);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/** Every measure and dimension the definition names, with the first path each appears at. */
|
|
41
|
+
function references(definition: AnalysisDefinition): {
|
|
42
|
+
measures: [string, string][];
|
|
43
|
+
dimensions: [string, string][];
|
|
44
|
+
} {
|
|
45
|
+
const measures: [string, string][] = [];
|
|
46
|
+
const dimensions: [string, string][] = [];
|
|
47
|
+
definition.dimensions.forEach((item, index) => dimensions.push([item.id, `$.dimensions[${index}].id`]));
|
|
48
|
+
// An exposure names a measure only when its allocation supplies weights.
|
|
49
|
+
definition.exposures.forEach((item, index) => {
|
|
50
|
+
if (item.allocation.kind === "supplied-weights")
|
|
51
|
+
measures.push([item.allocation.weightMeasureId, `$.exposures[${index}].allocation.weightMeasureId`]);
|
|
52
|
+
});
|
|
53
|
+
definition.measures.forEach((measure, index) => {
|
|
54
|
+
const statistic = measure.statistic as Record<string, unknown>;
|
|
55
|
+
for (const key of ["measureId", "weightMeasureId", "numeratorMeasureId", "denominatorMeasureId"])
|
|
56
|
+
if (typeof statistic[key] === "string")
|
|
57
|
+
measures.push([statistic[key] as string, `$.measures[${index}].statistic.${key}`]);
|
|
58
|
+
if (measure.condition) predicateDimensions(measure.condition, `$.measures[${index}].condition`, dimensions);
|
|
59
|
+
});
|
|
60
|
+
for (const [name, scope] of [
|
|
61
|
+
["financial", definition.scopes.financial],
|
|
62
|
+
["reporting", definition.scopes.reporting],
|
|
63
|
+
] as const)
|
|
64
|
+
predicateDimensions(scope.predicate, `$.scopes.${name}.predicate`, dimensions);
|
|
65
|
+
return { measures, dimensions };
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/** Reports which of a saved definition's references a candidate source cannot resolve. */
|
|
69
|
+
export function planAnalysisDefinitionMigration(
|
|
70
|
+
definition: AnalysisDefinition,
|
|
71
|
+
available: { readonly measureIds: readonly string[]; readonly dimensionIds: readonly string[] },
|
|
72
|
+
): AnalysisDefinitionMigrationPlan {
|
|
73
|
+
const measures = new Set(available.measureIds);
|
|
74
|
+
const dimensions = new Set(available.dimensionIds);
|
|
75
|
+
const found = references(definition);
|
|
76
|
+
const seen = new Set<string>();
|
|
77
|
+
const unresolved: AnalysisDefinitionReference[] = [];
|
|
78
|
+
const consider = (kind: "measure" | "dimension", entries: [string, string][], have: Set<string>) => {
|
|
79
|
+
for (const [id, path] of entries) {
|
|
80
|
+
const key = `${kind}:${id}`;
|
|
81
|
+
if (have.has(id) || seen.has(key)) continue;
|
|
82
|
+
seen.add(key);
|
|
83
|
+
unresolved.push({ kind, id, path });
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
consider("dimension", found.dimensions, dimensions);
|
|
87
|
+
consider("measure", found.measures, measures);
|
|
88
|
+
return snapshotDiagnosticJson({ resolved: unresolved.length === 0, unresolved });
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
function rewritePredicate(predicate: AnalysisPredicate, map: Readonly<Record<string, string>>): AnalysisPredicate {
|
|
92
|
+
const next = { ...predicate } as Record<string, unknown>;
|
|
93
|
+
if (typeof next.dimensionId === "string" && map[next.dimensionId]) next.dimensionId = map[next.dimensionId];
|
|
94
|
+
if (Array.isArray(next.clauses))
|
|
95
|
+
next.clauses = (next.clauses as AnalysisPredicate[]).map((nested) => rewritePredicate(nested, map));
|
|
96
|
+
if (next.predicate) next.predicate = rewritePredicate(next.predicate as AnalysisPredicate, map);
|
|
97
|
+
return next as AnalysisPredicate;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/** Applies a remapping, producing a new version. The saved definition is never edited in place. */
|
|
101
|
+
export function applyAnalysisDefinitionMigration(
|
|
102
|
+
definition: AnalysisDefinition,
|
|
103
|
+
remapping: AnalysisDefinitionRemapping,
|
|
104
|
+
): AnalysisDefinition {
|
|
105
|
+
const measures = remapping.measures ?? {};
|
|
106
|
+
const dimensions = remapping.dimensions ?? {};
|
|
107
|
+
const issues: DiagnosticValidationIssue[] = [];
|
|
108
|
+
const present = references(definition);
|
|
109
|
+
const check = (
|
|
110
|
+
map: Readonly<Record<string, string>>,
|
|
111
|
+
kind: "measure" | "dimension",
|
|
112
|
+
named: Set<string>,
|
|
113
|
+
path: string,
|
|
114
|
+
) => {
|
|
115
|
+
for (const [from, to] of Object.entries(map)) {
|
|
116
|
+
if (!named.has(from))
|
|
117
|
+
issues.push({
|
|
118
|
+
domain: "configuration",
|
|
119
|
+
code: "unknown-reference",
|
|
120
|
+
path: `${path}.${from}`,
|
|
121
|
+
message: `This definition does not reference the ${kind} ${from}`,
|
|
122
|
+
});
|
|
123
|
+
if (!to)
|
|
124
|
+
issues.push({
|
|
125
|
+
domain: "configuration",
|
|
126
|
+
code: "invalid-string",
|
|
127
|
+
path: `${path}.${from}`,
|
|
128
|
+
message: `A migrated ${kind} needs a target id`,
|
|
129
|
+
});
|
|
130
|
+
// Merging two distinct references into one would silently change what the definition means.
|
|
131
|
+
else if (named.has(to) && !Object.hasOwn(map, to))
|
|
132
|
+
issues.push({
|
|
133
|
+
domain: "configuration",
|
|
134
|
+
code: "duplicate-id",
|
|
135
|
+
path: `${path}.${from}`,
|
|
136
|
+
message: `Migrating ${kind} ${from} onto ${to} would merge it with a reference this definition already uses`,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
check(measures, "measure", new Set(present.measures.map(([id]) => id)), "$.remapping.measures");
|
|
141
|
+
check(dimensions, "dimension", new Set(present.dimensions.map(([id]) => id)), "$.remapping.dimensions");
|
|
142
|
+
if (issues.length > 0) throw new DiagnosticValidationError(issues);
|
|
143
|
+
const measureOf = (id: string) => measures[id] ?? id;
|
|
144
|
+
return snapshotDiagnosticJson({
|
|
145
|
+
...definition,
|
|
146
|
+
version: `${definition.version}+migration.1`,
|
|
147
|
+
dimensions: definition.dimensions.map((item) => ({ ...item, id: dimensions[item.id] ?? item.id })),
|
|
148
|
+
exposures: definition.exposures.map((item) =>
|
|
149
|
+
item.allocation.kind === "supplied-weights"
|
|
150
|
+
? {
|
|
151
|
+
...item,
|
|
152
|
+
allocation: { ...item.allocation, weightMeasureId: measureOf(item.allocation.weightMeasureId) },
|
|
153
|
+
}
|
|
154
|
+
: item,
|
|
155
|
+
),
|
|
156
|
+
measures: definition.measures.map((measure) => {
|
|
157
|
+
const statistic = { ...(measure.statistic as Record<string, unknown>) };
|
|
158
|
+
for (const key of ["measureId", "weightMeasureId", "numeratorMeasureId", "denominatorMeasureId"])
|
|
159
|
+
if (typeof statistic[key] === "string") statistic[key] = measureOf(statistic[key] as string);
|
|
160
|
+
return {
|
|
161
|
+
...measure,
|
|
162
|
+
statistic: statistic as typeof measure.statistic,
|
|
163
|
+
...(measure.condition ? { condition: rewritePredicate(measure.condition, dimensions) } : {}),
|
|
164
|
+
};
|
|
165
|
+
}),
|
|
166
|
+
scopes: {
|
|
167
|
+
...definition.scopes,
|
|
168
|
+
financial: {
|
|
169
|
+
...definition.scopes.financial,
|
|
170
|
+
predicate: rewritePredicate(definition.scopes.financial.predicate, dimensions),
|
|
171
|
+
},
|
|
172
|
+
reporting: {
|
|
173
|
+
...definition.scopes.reporting,
|
|
174
|
+
predicate: rewritePredicate(definition.scopes.reporting.predicate, dimensions),
|
|
175
|
+
},
|
|
176
|
+
},
|
|
177
|
+
});
|
|
178
|
+
}
|
package/src/index.ts
CHANGED
package/src/triangleAlgebra.ts
CHANGED
|
@@ -15,6 +15,10 @@ import { isNum } from "./util.js";
|
|
|
15
15
|
* - incrementalToCumulative: accumulation stops at the FIRST null in a row
|
|
16
16
|
* (a later observed increment has no defined cumulative base).
|
|
17
17
|
* - Incremental[0] = cumulative[0] (the first cell is its own increment).
|
|
18
|
+
* - developmentShareOfLatest: each observed cell over that origin's own latest
|
|
19
|
+
* observed value. The latest cell is therefore exactly 1. A latest value that
|
|
20
|
+
* is missing, zero or negative carries no proportion, so the whole row is
|
|
21
|
+
* null - the same rule every other denominator in this SDK follows.
|
|
18
22
|
*/
|
|
19
23
|
|
|
20
24
|
function sameShape(a: Triangle, b: Triangle): boolean {
|
|
@@ -58,6 +62,30 @@ export function cumulativeToIncremental(tri: Triangle): Triangle {
|
|
|
58
62
|
};
|
|
59
63
|
}
|
|
60
64
|
|
|
65
|
+
/**
|
|
66
|
+
* Each observed cell as a share of that origin's latest observed value: the emergence pattern a
|
|
67
|
+
* triangle has actually shown, as opposed to one projected from selected factors. Dimensionless.
|
|
68
|
+
*/
|
|
69
|
+
export function developmentShareOfLatest(tri: Triangle): Triangle {
|
|
70
|
+
for (const row of tri.values)
|
|
71
|
+
if (row.length !== tri.ages.length)
|
|
72
|
+
throw new ReservingError("SHAPE", "Every triangle row must have one cell per development age");
|
|
73
|
+
if (tri.values.length !== tri.origins.length)
|
|
74
|
+
throw new ReservingError("SHAPE", "A triangle must have one row per origin");
|
|
75
|
+
return {
|
|
76
|
+
kind: tri.kind,
|
|
77
|
+
origins: [...tri.origins],
|
|
78
|
+
ages: [...tri.ages],
|
|
79
|
+
values: tri.values.map((row) => {
|
|
80
|
+
// The row's own latest observation is the denominator; never a neighbouring origin's.
|
|
81
|
+
let latest: number | null = null;
|
|
82
|
+
for (const cell of row) if (isNum(cell)) latest = cell;
|
|
83
|
+
if (!isNum(latest) || latest <= 0) return new Array(row.length).fill(null) as (number | null)[];
|
|
84
|
+
return row.map((cell) => (isNum(cell) ? cell / latest! : null));
|
|
85
|
+
}),
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
|
|
61
89
|
/** Incremental -> cumulative. A null stops accumulation for the row. */
|
|
62
90
|
export function incrementalToCumulative(tri: Triangle): Triangle {
|
|
63
91
|
return {
|
package/src/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** This package's runtime version. A test pins it to package.json. */
|
|
2
|
-
export const CORE_PACKAGE_VERSION = "0.
|
|
2
|
+
export const CORE_PACKAGE_VERSION = "0.14.0";
|