@actuarial-ts/interchange 0.5.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 +36 -70
- package/dist/convert/diagnosticDefinition.d.ts +16 -0
- package/dist/convert/diagnosticDefinition.d.ts.map +1 -0
- package/dist/convert/diagnosticDefinition.js +82 -0
- package/dist/convert/diagnosticDefinition.js.map +1 -0
- package/dist/convert/result.d.ts.map +1 -1
- package/dist/convert/result.js +2 -2
- package/dist/convert/result.js.map +1 -1
- package/dist/envelope.d.ts +6 -6
- package/dist/envelope.d.ts.map +1 -1
- package/dist/envelope.js +13 -7
- package/dist/envelope.js.map +1 -1
- 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/json.d.ts +5 -0
- package/dist/json.d.ts.map +1 -0
- package/dist/json.js +13 -0
- package/dist/json.js.map +1 -0
- package/dist/parse.d.ts +2 -1
- package/dist/parse.d.ts.map +1 -1
- package/dist/parse.js +8 -2
- package/dist/parse.js.map +1 -1
- package/dist/schemas/bundle.d.ts +2 -0
- package/dist/schemas/bundle.d.ts.map +1 -1
- package/dist/schemas/bundle.js +2 -0
- package/dist/schemas/bundle.js.map +1 -1
- package/dist/schemas/crosscheck.d.ts +6 -6
- package/dist/schemas/diagnosticDefinition.d.ts +11572 -0
- package/dist/schemas/diagnosticDefinition.d.ts.map +1 -0
- package/dist/schemas/diagnosticDefinition.js +133 -0
- package/dist/schemas/diagnosticDefinition.js.map +1 -0
- package/dist/schemas/manifest.d.ts.map +1 -1
- package/dist/schemas/manifest.js +7 -1
- package/dist/schemas/manifest.js.map +1 -1
- package/dist/schemas/record.d.ts +5 -0
- package/dist/schemas/record.d.ts.map +1 -0
- package/dist/schemas/record.js +9 -0
- package/dist/schemas/record.js.map +1 -0
- package/dist/schemas/result.d.ts +12 -12
- package/dist/schemas/selection.d.ts +6 -6
- package/dist/schemas/triangle.d.ts +89 -89
- package/dist/schemas/triangle.d.ts.map +1 -1
- package/dist/schemas/triangle.js +20 -5
- package/dist/schemas/triangle.js.map +1 -1
- package/package.json +4 -3
- package/src/convert/diagnosticDefinition.ts +150 -0
- package/src/convert/result.ts +2 -1
- package/src/envelope.ts +28 -9
- package/src/index.ts +2 -0
- package/src/json.ts +17 -0
- package/src/parse.ts +11 -3
- package/src/schemas/bundle.ts +3 -0
- package/src/schemas/diagnosticDefinition.ts +172 -0
- package/src/schemas/manifest.ts +7 -1
- package/src/schemas/record.ts +16 -0
- package/src/schemas/triangle.ts +23 -5
package/README.md
CHANGED
|
@@ -1,79 +1,45 @@
|
|
|
1
1
|
# @actuarial-ts/interchange
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
language-neutral, versioned documents that carry **data, intent, results,
|
|
5
|
-
and governance** between actuarial-ts, chainladder-python, and R
|
|
6
|
-
ChainLadder — plus the deterministic cross-implementation referee.
|
|
3
|
+
Typed TypeScript implementation of actuarial-interchange: portable, integrity-stamped documents shared by actuarial-ts, chainladder-python, and R ChainLadder.
|
|
7
4
|
|
|
8
|
-
|
|
5
|
+
```bash
|
|
6
|
+
npm install @actuarial-ts/interchange@0.6.1 @actuarial-ts/core@0.6.1
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Node 20+, ESM. Version 0.6 writes wire `1.1.0` and reads compatible major-version-1 documents.
|
|
10
|
+
|
|
11
|
+
## Document kinds
|
|
9
12
|
|
|
10
|
-
|
|
11
|
-
|
|
13
|
+
`triangle`, `selection`, `method-result`, `stochastic-result`, `study`, `bundle`, `crosscheck-report`, and `diagnostic-definition` share an envelope with writer version, generator, caller-supplied timestamp, semantic-body FNV-1a/JCS integrity tag, and optional governance/extensions.
|
|
14
|
+
|
|
15
|
+
```ts
|
|
16
|
+
import {
|
|
17
|
+
diagnosticDefinitionToDoc,
|
|
18
|
+
docToDiagnosticDefinition,
|
|
19
|
+
parseDocument,
|
|
20
|
+
} from "@actuarial-ts/interchange";
|
|
21
|
+
|
|
22
|
+
const document = diagnosticDefinitionToDoc(compiledDefinition, {
|
|
23
|
+
createdAt: "2026-09-03T00:00:00Z",
|
|
24
|
+
});
|
|
25
|
+
const generic = parseDocument(document);
|
|
26
|
+
const executable = docToDiagnosticDefinition(document);
|
|
12
27
|
```
|
|
13
28
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
`
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
-
|
|
27
|
-
`fnv1a64(canonicalJson(<kind-named object>))` — never the envelope, so
|
|
28
|
-
a re-export by another adapter changes the envelope, not the tag. Tags
|
|
29
|
-
detect ACCIDENTAL divergence; they are not a security control.
|
|
30
|
-
- **Selections travel as intent + values** with a normative coherence
|
|
31
|
-
rule: computable intents must recompute to the stated value within
|
|
32
|
-
1e-9 relative, verified on import (warn or refuse via a strictness
|
|
33
|
-
flag; refusal is `INCOHERENT_SELECTION`). Values are authoritative only
|
|
34
|
-
for `judgmental`/`external` intents, whose rationale is required.
|
|
35
|
-
- **Converters**: `triangleToDoc`/`docToTriangle`,
|
|
36
|
-
`selectionsToDoc`/`docToSelections` (intent ↔ the standard averages
|
|
37
|
-
menu), `resultToDoc` (chainLadder, mack, bornhuetterFerguson,
|
|
38
|
-
benktander; Cape Cod, Clark, Munich and the stochastic layer are not yet
|
|
39
|
-
converted and `resultToDoc` throws for them), and
|
|
40
|
-
`parseDocument` (version-checked, integrity-verified,
|
|
41
|
-
warning-channeled).
|
|
42
|
-
- **The referee**: `crosscheck({ a, b, tolerance?, selection?, createdAt })`
|
|
43
|
-
compares two `method-result` documents by appliesTo tags and convention
|
|
44
|
-
profile, computes per-origin and total relative deviations, applies
|
|
45
|
-
requested-vs-effective downgrades, and returns a `crosscheck-report`
|
|
46
|
-
with verdict `agree | disagree | not-comparable | verified-by-value`.
|
|
47
|
-
Convention profiles (`deterministic-cl`, `mack1993-vw`) are shipped as
|
|
48
|
-
data, including each engine's pinned alignment parameters.
|
|
49
|
-
|
|
50
|
-
Version handling (spec 3.5): wrong-major documents throw
|
|
51
|
-
`ReservingError("UNSUPPORTED_VERSION")`; same-major unknown minor fields
|
|
52
|
-
are accepted and preserved (schemas are passthrough), and
|
|
53
|
-
`governance`/`extensions` round-trip opaquely.
|
|
54
|
-
|
|
55
|
-
Everything is pure and browser-safe: no clock reads (`createdAt` is
|
|
56
|
-
caller-supplied), no randomness, no node builtins. Depends on
|
|
57
|
-
`@actuarial-ts/core` and `zod` only; `zod-to-json-schema` is a build-time
|
|
58
|
-
devDependency used by `npm run emit-schema` (which builds first, then
|
|
59
|
-
regenerates the committed JSON Schemas).
|
|
60
|
-
|
|
61
|
-
This package is designed to support the actuary's compliance with the
|
|
62
|
-
ASOPs; cross-implementation agreement supports, but does not by itself
|
|
63
|
-
constitute, the model validation contemplated by ASOP No. 56.
|
|
64
|
-
|
|
65
|
-
## Two referees
|
|
66
|
-
|
|
67
|
-
`crosscheck` compares DERIVATIONS: two deterministic `method-result` documents,
|
|
68
|
-
where any deviation beyond float noise is a real disagreement.
|
|
69
|
-
|
|
70
|
-
`crosscheckStochastic` compares DRAWS: two `stochastic-result` documents, where
|
|
71
|
-
the expected disagreement is nonzero and set by sampling theory. Its tolerance
|
|
72
|
-
is derived from the simulation count and the observed coefficient of variation
|
|
73
|
-
rather than declared, so it tightens as n grows, and it withholds that
|
|
74
|
-
allowance from two results that both claim `seeded-reproducible` at one seed.
|
|
75
|
-
See `docs/interop/reproducibility.md`.
|
|
29
|
+
Generic parsing validates known fields, preserves same-major unknown envelope and nested fields, verifies integrity, and recursively verifies documents embedded in studies/bundles. Executable diagnostic conversion is intentionally stricter: it requires the current normalized vocabulary, recompiles the complete definition, and verifies formula, calculation, and definition identities. A future field can therefore survive a storage hop without being silently executed.
|
|
30
|
+
|
|
31
|
+
Bundles may carry typed diagnostic definition documents under `interchange.diagnosticDefinitions`; each nested document has its own tag and is also covered by the outer `{ bundle, interchange }` tag. JSON Schemas live in `schema/interchange/1.1`; the frozen `1.0` directory remains unchanged.
|
|
32
|
+
|
|
33
|
+
## Interoperability
|
|
34
|
+
|
|
35
|
+
The three shores share RFC 8785 vectors, frozen reserving fixtures, and generalized casualty definitions with six formulas and 22 bound instances. Python and R independently recompute definition identities and replay every formula and all five review-rule kinds across the calendar and ordered-axis aggregate-cell corpus, including missingness, tolerance boundaries, and overflow. The replay contract does not claim to reproduce arbitrary raw-data ingestion or selection in those languages.
|
|
36
|
+
|
|
37
|
+
`crosscheck` compares two method-result documents under explicit convention profiles. Outcomes are `agree`, `disagree`, `not-comparable`, or `verified-by-value`; the referee never hides convention differences or treats mutual agreement as proof of correctness.
|
|
38
|
+
|
|
39
|
+
Integrity tags detect accidental drift and support deterministic linking. FNV-1a is unkeyed and is not tamper resistance, authentication, or a security boundary.
|
|
40
|
+
|
|
41
|
+
The normative format is [actuarial-interchange rev 2.4](https://github.com/yerromnitsuj/actng/blob/v0.6.1/docs/spec/actuarial-interchange.md). See the generated [diagnostic formula catalog](https://github.com/yerromnitsuj/actng/blob/v0.6.1/docs/reference/diagnostic-formulas.md) and [0.6 migration guide](https://github.com/yerromnitsuj/actng/blob/v0.6.1/docs/migrations/0.6-generalized-diagnostics.md).
|
|
76
42
|
|
|
77
43
|
## License
|
|
78
44
|
|
|
79
|
-
Apache-2.0. See
|
|
45
|
+
Apache-2.0. See LICENSE and NOTICE.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type CompiledDiagnosticDefinition } from "@actuarial-ts/core";
|
|
2
|
+
import { type GeneratorStamp } from "../envelope.js";
|
|
3
|
+
import { type ParseDocumentOptions } from "../parse.js";
|
|
4
|
+
import { type DiagnosticDefinitionDoc } from "../schemas/diagnosticDefinition.js";
|
|
5
|
+
export interface DiagnosticDefinitionToDocOptions {
|
|
6
|
+
createdAt: string;
|
|
7
|
+
generator?: GeneratorStamp;
|
|
8
|
+
extensions?: Record<string, unknown>;
|
|
9
|
+
}
|
|
10
|
+
export interface DocToDiagnosticDefinitionResult {
|
|
11
|
+
readonly definition: CompiledDiagnosticDefinition;
|
|
12
|
+
readonly warnings: readonly string[];
|
|
13
|
+
}
|
|
14
|
+
export declare function diagnosticDefinitionToDoc(compiled: CompiledDiagnosticDefinition, options: DiagnosticDefinitionToDocOptions): DiagnosticDefinitionDoc;
|
|
15
|
+
export declare function docToDiagnosticDefinition(value: unknown, options?: ParseDocumentOptions): DocToDiagnosticDefinitionResult;
|
|
16
|
+
//# sourceMappingURL=diagnosticDefinition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnosticDefinition.d.ts","sourceRoot":"","sources":["../../src/convert/diagnosticDefinition.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,4BAA4B,EAClC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAiB,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEvE,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,oCAAoC,CAAC;AAE5C,MAAM,WAAW,gCAAgC;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,UAAU,EAAE,4BAA4B,CAAC;IAClD,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,4BAA4B,EACtC,OAAO,EAAE,gCAAgC,GACxC,uBAAuB,CA6CzB;AAyBD,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,oBAAoB,GAC7B,+BAA+B,CAyCjC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { ReservingError, assertCompiledDiagnosticDefinition, canonicalJson, compileDiagnosticDefinition, isDiagnosticPlainRecord, } from "@actuarial-ts/core";
|
|
2
|
+
import { DEFAULT_GENERATOR, INTERCHANGE_SPEC_VERSION, stampIntegrity, } from "../envelope.js";
|
|
3
|
+
import { parseDocument } from "../parse.js";
|
|
4
|
+
import { snapshotInterchangeJson } from "../json.js";
|
|
5
|
+
import { diagnosticDefinitionDocSchema, } from "../schemas/diagnosticDefinition.js";
|
|
6
|
+
export function diagnosticDefinitionToDoc(compiled, options) {
|
|
7
|
+
assertCompiledDiagnosticDefinition(compiled);
|
|
8
|
+
if (!isDiagnosticPlainRecord(options))
|
|
9
|
+
throw new ReservingError("BAD_INTERCHANGE", "Diagnostic document options must be a plain object at $.options");
|
|
10
|
+
for (const key of Object.keys(options))
|
|
11
|
+
if (!["createdAt", "generator", "extensions"].includes(key))
|
|
12
|
+
throw new ReservingError("BAD_INTERCHANGE", `Unknown diagnostic document option at $.options.${key}`);
|
|
13
|
+
const ownedOptions = snapshotInterchangeJson(options);
|
|
14
|
+
const candidate = stampIntegrity({
|
|
15
|
+
interchangeVersion: INTERCHANGE_SPEC_VERSION,
|
|
16
|
+
kind: "diagnostic-definition",
|
|
17
|
+
generator: ownedOptions.generator === undefined
|
|
18
|
+
? DEFAULT_GENERATOR
|
|
19
|
+
: ownedOptions.generator,
|
|
20
|
+
createdAt: ownedOptions.createdAt,
|
|
21
|
+
...(ownedOptions.extensions === undefined
|
|
22
|
+
? {}
|
|
23
|
+
: { extensions: ownedOptions.extensions }),
|
|
24
|
+
diagnosticDefinition: {
|
|
25
|
+
definition: compiled.definition,
|
|
26
|
+
identities: {
|
|
27
|
+
algorithm: "fnv1a64-jcs-v1",
|
|
28
|
+
formulaById: { ...compiled.formulaFingerprints },
|
|
29
|
+
calculationByInstanceId: { ...compiled.calculationFingerprints },
|
|
30
|
+
definition: compiled.definitionIntegrity,
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
const parsed = diagnosticDefinitionDocSchema.safeParse(candidate);
|
|
35
|
+
if (!parsed.success) {
|
|
36
|
+
const issue = parsed.error.issues[0];
|
|
37
|
+
const path = issue?.path.length ? ` at $.${issue.path.join(".")}` : "";
|
|
38
|
+
throw new ReservingError("BAD_INTERCHANGE", `Invalid diagnostic-definition document${path}: ${issue?.message ?? "schema validation failed"}`);
|
|
39
|
+
}
|
|
40
|
+
return deepFreeze(snapshotInterchangeJson(candidate));
|
|
41
|
+
}
|
|
42
|
+
function deepFreeze(value) {
|
|
43
|
+
if (value !== null && typeof value === "object" && !Object.isFrozen(value)) {
|
|
44
|
+
for (const child of Object.values(value))
|
|
45
|
+
deepFreeze(child);
|
|
46
|
+
Object.freeze(value);
|
|
47
|
+
}
|
|
48
|
+
return value;
|
|
49
|
+
}
|
|
50
|
+
function sameRecord(left, right) {
|
|
51
|
+
const leftKeys = Object.keys(left).sort();
|
|
52
|
+
const rightKeys = Object.keys(right).sort();
|
|
53
|
+
return (leftKeys.length === rightKeys.length &&
|
|
54
|
+
leftKeys.every((key, index) => key === rightKeys[index] && left[key] === right[key]));
|
|
55
|
+
}
|
|
56
|
+
export function docToDiagnosticDefinition(value, options) {
|
|
57
|
+
const parsed = parseDocument(value, options);
|
|
58
|
+
if (parsed.doc.kind !== "diagnostic-definition") {
|
|
59
|
+
throw new ReservingError("BAD_INTERCHANGE", `Expected kind "diagnostic-definition"; got kind "${parsed.doc.kind}"`);
|
|
60
|
+
}
|
|
61
|
+
const body = parsed.doc.diagnosticDefinition;
|
|
62
|
+
let compiled;
|
|
63
|
+
try {
|
|
64
|
+
compiled = compileDiagnosticDefinition(body.definition);
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
68
|
+
throw new ReservingError("BAD_INTERCHANGE", `Diagnostic definition contains unsupported executable vocabulary: ${message}`);
|
|
69
|
+
}
|
|
70
|
+
if (canonicalJson(body.definition) !== canonicalJson(compiled.definition)) {
|
|
71
|
+
throw new ReservingError("BAD_INTERCHANGE", "Diagnostic definition contains unsupported executable vocabulary or is not in normalized form");
|
|
72
|
+
}
|
|
73
|
+
const identities = body.identities;
|
|
74
|
+
if (identities.algorithm !== "fnv1a64-jcs-v1" ||
|
|
75
|
+
identities.definition !== compiled.definitionIntegrity ||
|
|
76
|
+
!sameRecord(identities.formulaById, compiled.formulaFingerprints) ||
|
|
77
|
+
!sameRecord(identities.calculationByInstanceId, compiled.calculationFingerprints)) {
|
|
78
|
+
throw new ReservingError("BAD_INTERCHANGE", "Diagnostic definition identities do not match the compiled semantic definition");
|
|
79
|
+
}
|
|
80
|
+
return { definition: compiled, warnings: parsed.warnings };
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=diagnosticDefinition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnosticDefinition.js","sourceRoot":"","sources":["../../src/convert/diagnosticDefinition.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../src/convert/result.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,EACtB,KAAK,UAAU,
|
|
1
|
+
{"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../src/convert/result.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,EACtB,KAAK,UAAU,EAGhB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAGL,KAAK,cAAc,EAEpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EACL,KAAK,WAAW,EAEhB,KAAK,eAAe,EAGrB,MAAM,sBAAsB,CAAC;AAE9B;;;;;;;;;;;;;GAaG;AAEH,MAAM,MAAM,iBAAiB,GACzB,iBAAiB,GACjB,UAAU,GACV,yBAAyB,GACzB,gBAAgB,CAAC;AAErB;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,WAAqE,CAAC;AAEhG,MAAM,WAAW,kBAAkB;IACjC,0DAA0D;IAC1D,WAAW,EAAE,WAAW,CAAC;IACzB;yDACqD;IACrD,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACnC,qEAAqE;IACrE,SAAS,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,oEAAoE;IACpE,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AA6ED,wBAAgB,WAAW,CACzB,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,kBAAkB,GAC1B,eAAe,CAgEjB"}
|
package/dist/convert/result.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { ReservingError, } from "@actuarial-ts/core";
|
|
1
|
+
import { CORE_PACKAGE_VERSION, ReservingError, } from "@actuarial-ts/core";
|
|
2
2
|
import { DEFAULT_GENERATOR, INTERCHANGE_SPEC_VERSION, stampIntegrity, } from "../envelope.js";
|
|
3
3
|
import { methodResultDocSchema, } from "../schemas/result.js";
|
|
4
4
|
/**
|
|
5
5
|
* The engine stamp for results computed by @actuarial-ts/core. A sync test
|
|
6
6
|
* pins the version to the installed core package so it cannot drift.
|
|
7
7
|
*/
|
|
8
|
-
export const CORE_ENGINE = { name: "actuarial-ts", version:
|
|
8
|
+
export const CORE_ENGINE = { name: "actuarial-ts", version: CORE_PACKAGE_VERSION };
|
|
9
9
|
function mapResult(result) {
|
|
10
10
|
switch (result.method) {
|
|
11
11
|
case "chainLadder":
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/convert/result.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,cAAc,GACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EAExB,cAAc,GACf,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAKL,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAuB9B;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAgB,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/convert/result.ts"],"names":[],"mappings":"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"}
|
package/dist/envelope.d.ts
CHANGED
|
@@ -25,21 +25,21 @@ import { z } from "zod";
|
|
|
25
25
|
* a clock.
|
|
26
26
|
*/
|
|
27
27
|
/** The interchange spec version this package writes. */
|
|
28
|
-
export declare const INTERCHANGE_SPEC_VERSION = "1.
|
|
28
|
+
export declare const INTERCHANGE_SPEC_VERSION = "1.1.0";
|
|
29
29
|
/** The spec major this package accepts (spec 3.5: readers accept same-major). */
|
|
30
30
|
export declare const INTERCHANGE_SPEC_MAJOR = 1;
|
|
31
31
|
/**
|
|
32
32
|
* This package's version, stamped into `generator` by default. A sync test
|
|
33
33
|
* asserts it matches package.json so it cannot silently drift.
|
|
34
34
|
*/
|
|
35
|
-
export declare const INTERCHANGE_PACKAGE_VERSION = "0.
|
|
35
|
+
export declare const INTERCHANGE_PACKAGE_VERSION = "0.6.1";
|
|
36
36
|
export interface GeneratorStamp {
|
|
37
37
|
name: string;
|
|
38
38
|
version: string;
|
|
39
39
|
}
|
|
40
40
|
/** Default `generator` stamp for documents authored by this package. */
|
|
41
|
-
export declare const DEFAULT_GENERATOR: GeneratorStamp
|
|
42
|
-
export declare const DOCUMENT_KINDS: readonly ["triangle", "selection", "method-result", "stochastic-result", "study", "bundle", "crosscheck-report"];
|
|
41
|
+
export declare const DEFAULT_GENERATOR: Readonly<GeneratorStamp>;
|
|
42
|
+
export declare const DOCUMENT_KINDS: readonly ["triangle", "selection", "method-result", "stochastic-result", "study", "bundle", "crosscheck-report", "diagnostic-definition"];
|
|
43
43
|
export type DocumentKind = (typeof DOCUMENT_KINDS)[number];
|
|
44
44
|
/** A 16-hex-char fnv1a64 tag. */
|
|
45
45
|
export declare const integritySchema: z.ZodString;
|
|
@@ -72,8 +72,8 @@ export declare function envelopeShape<K extends DocumentKind>(kind: K): {
|
|
|
72
72
|
name: z.ZodString;
|
|
73
73
|
version: z.ZodString;
|
|
74
74
|
}, z.ZodTypeAny, "passthrough">>;
|
|
75
|
-
createdAt: z.ZodString
|
|
76
|
-
extensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown
|
|
75
|
+
createdAt: z.ZodEffects<z.ZodString, string, string>;
|
|
76
|
+
extensions: z.ZodOptional<z.ZodEffects<z.ZodRecord<z.ZodEffects<z.ZodString, string, string>, z.ZodUnknown>, Record<string, unknown>, Record<string, unknown>>>;
|
|
77
77
|
integrity: z.ZodString;
|
|
78
78
|
};
|
|
79
79
|
/** Minimal structural view of a document for integrity/version helpers. */
|
package/dist/envelope.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../src/envelope.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../src/envelope.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,wDAAwD;AACxD,eAAO,MAAM,wBAAwB,UAAU,CAAC;AAEhD,iFAAiF;AACjF,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC;;;GAGG;AACH,eAAO,MAAM,2BAA2B,UAAU,CAAC;AAEnD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wEAAwE;AACxE,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,cAAc,CAGrD,CAAC;AAEH,eAAO,MAAM,cAAc,2IASjB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAkB3D,iCAAiC;AACjC,eAAO,MAAM,eAAe,aAAqC,CAAC;AAElE,eAAO,MAAM,eAAe;;;;;;;;;gCAEZ,CAAC;AAEjB;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,YAAY,EAAE,IAAI,EAAE,CAAC;;;;;;;;;;;;;;;;EAe5D;AAED,2EAA2E;AAC3E,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAMD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAoBzD;AAED,oEAAoE;AACpE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAE1D;AAED,kEAAkE;AAClE,wBAAgB,cAAc,CAAC,CAAC,SAAS,YAAY,EACnD,GAAG,EAAE,YAAY,GAAG,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,GACvC,CAAC,CAEH;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,OAAO,CAAC;IACZ,iDAAiD;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,mCAAmC;IACnC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,GAAG,EAAE,YAAY,GAAG,cAAc,CAKjE;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,CAmB7D"}
|
package/dist/envelope.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { ReservingError, canonicalJson, fnv1a64 } from "@actuarial-ts/core";
|
|
1
|
+
import { ReservingError, canonicalJson, fnv1a64, isRealIsoDate, } from "@actuarial-ts/core";
|
|
2
2
|
import { z } from "zod";
|
|
3
|
+
import { recordSchema } from "./schemas/record.js";
|
|
3
4
|
/**
|
|
4
5
|
* The interchange document envelope (spec 3.1 / 3.5).
|
|
5
6
|
*
|
|
@@ -26,19 +27,19 @@ import { z } from "zod";
|
|
|
26
27
|
* a clock.
|
|
27
28
|
*/
|
|
28
29
|
/** The interchange spec version this package writes. */
|
|
29
|
-
export const INTERCHANGE_SPEC_VERSION = "1.
|
|
30
|
+
export const INTERCHANGE_SPEC_VERSION = "1.1.0";
|
|
30
31
|
/** The spec major this package accepts (spec 3.5: readers accept same-major). */
|
|
31
32
|
export const INTERCHANGE_SPEC_MAJOR = 1;
|
|
32
33
|
/**
|
|
33
34
|
* This package's version, stamped into `generator` by default. A sync test
|
|
34
35
|
* asserts it matches package.json so it cannot silently drift.
|
|
35
36
|
*/
|
|
36
|
-
export const INTERCHANGE_PACKAGE_VERSION = "0.
|
|
37
|
+
export const INTERCHANGE_PACKAGE_VERSION = "0.6.1";
|
|
37
38
|
/** Default `generator` stamp for documents authored by this package. */
|
|
38
|
-
export const DEFAULT_GENERATOR = {
|
|
39
|
+
export const DEFAULT_GENERATOR = Object.freeze({
|
|
39
40
|
name: "@actuarial-ts/interchange",
|
|
40
41
|
version: INTERCHANGE_PACKAGE_VERSION,
|
|
41
|
-
};
|
|
42
|
+
});
|
|
42
43
|
export const DOCUMENT_KINDS = [
|
|
43
44
|
"triangle",
|
|
44
45
|
"selection",
|
|
@@ -47,6 +48,7 @@ export const DOCUMENT_KINDS = [
|
|
|
47
48
|
"study",
|
|
48
49
|
"bundle",
|
|
49
50
|
"crosscheck-report",
|
|
51
|
+
"diagnostic-definition",
|
|
50
52
|
];
|
|
51
53
|
/**
|
|
52
54
|
* kind → the top-level key(s) holding the semantic body. Single-key kinds
|
|
@@ -61,6 +63,7 @@ const SEMANTIC_BODY_KEYS = {
|
|
|
61
63
|
study: ["study"],
|
|
62
64
|
bundle: ["bundle", "interchange"],
|
|
63
65
|
"crosscheck-report": ["report"],
|
|
66
|
+
"diagnostic-definition": ["diagnosticDefinition"],
|
|
64
67
|
};
|
|
65
68
|
/** A 16-hex-char fnv1a64 tag. */
|
|
66
69
|
export const integritySchema = z.string().regex(/^[0-9a-f]{16}$/);
|
|
@@ -78,8 +81,11 @@ export function envelopeShape(kind) {
|
|
|
78
81
|
interchangeVersion: z.string().regex(/^\d+\.\d+\.\d+$/),
|
|
79
82
|
kind: z.literal(kind),
|
|
80
83
|
generator: generatorSchema,
|
|
81
|
-
createdAt: z
|
|
82
|
-
|
|
84
|
+
createdAt: z
|
|
85
|
+
.string()
|
|
86
|
+
.datetime({ offset: true })
|
|
87
|
+
.refine((value) => isRealIsoDate(value.slice(0, 10)), "expected a real Gregorian timestamp"),
|
|
88
|
+
extensions: recordSchema(z.unknown()).optional(),
|
|
83
89
|
integrity: integritySchema,
|
|
84
90
|
};
|
|
85
91
|
}
|
package/dist/envelope.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envelope.js","sourceRoot":"","sources":["../src/envelope.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"envelope.js","sourceRoot":"","sources":["../src/envelope.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,10 +6,12 @@ export * from "./schemas/result.js";
|
|
|
6
6
|
export * from "./schemas/study.js";
|
|
7
7
|
export * from "./schemas/bundle.js";
|
|
8
8
|
export * from "./schemas/crosscheck.js";
|
|
9
|
+
export * from "./schemas/diagnosticDefinition.js";
|
|
9
10
|
export * from "./schemas/manifest.js";
|
|
10
11
|
export * from "./convert/triangle.js";
|
|
11
12
|
export * from "./convert/selection.js";
|
|
12
13
|
export * from "./convert/result.js";
|
|
14
|
+
export * from "./convert/diagnosticDefinition.js";
|
|
13
15
|
export * from "./referee/profiles.js";
|
|
14
16
|
export * from "./referee/crosscheck.js";
|
|
15
17
|
export * from "./referee/crosscheckStochastic.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mCAAmC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mCAAmC,CAAC;AAClD,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mCAAmC,CAAC;AAClD,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mCAAmC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -6,10 +6,12 @@ export * from "./schemas/result.js";
|
|
|
6
6
|
export * from "./schemas/study.js";
|
|
7
7
|
export * from "./schemas/bundle.js";
|
|
8
8
|
export * from "./schemas/crosscheck.js";
|
|
9
|
+
export * from "./schemas/diagnosticDefinition.js";
|
|
9
10
|
export * from "./schemas/manifest.js";
|
|
10
11
|
export * from "./convert/triangle.js";
|
|
11
12
|
export * from "./convert/selection.js";
|
|
12
13
|
export * from "./convert/result.js";
|
|
14
|
+
export * from "./convert/diagnosticDefinition.js";
|
|
13
15
|
export * from "./referee/profiles.js";
|
|
14
16
|
export * from "./referee/crosscheck.js";
|
|
15
17
|
export * from "./referee/crosscheckStochastic.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mCAAmC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mCAAmC,CAAC;AAClD,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mCAAmC,CAAC;AAClD,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mCAAmC,CAAC"}
|
package/dist/json.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** Own the complete JSON document without dropping forward-compatible keys.
|
|
2
|
+
* Use the generic interchange JSON contract, not the stricter diagnostic
|
|
3
|
+
* identifier profile: opaque JSON strings may contain escaped control codes. */
|
|
4
|
+
export declare function snapshotInterchangeJson<T>(value: T): T;
|
|
5
|
+
//# sourceMappingURL=json.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"AAEA;;gFAEgF;AAChF,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAWtD"}
|
package/dist/json.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ReservingError, canonicalJson } from "@actuarial-ts/core";
|
|
2
|
+
/** Own the complete JSON document without dropping forward-compatible keys.
|
|
3
|
+
* Use the generic interchange JSON contract, not the stricter diagnostic
|
|
4
|
+
* identifier profile: opaque JSON strings may contain escaped control codes. */
|
|
5
|
+
export function snapshotInterchangeJson(value) {
|
|
6
|
+
try {
|
|
7
|
+
return JSON.parse(canonicalJson(value));
|
|
8
|
+
}
|
|
9
|
+
catch (error) {
|
|
10
|
+
throw new ReservingError("BAD_INTERCHANGE", `An interchange document must contain only JSON values: ${error instanceof Error ? error.message : String(error)}`);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=json.js.map
|
package/dist/json.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnE;;gFAEgF;AAChF,MAAM,UAAU,uBAAuB,CAAI,KAAQ;IACjD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAM,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,cAAc,CACtB,iBAAiB,EACjB,0DACE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACvD,EAAE,CACH,CAAC;IACJ,CAAC;AACH,CAAC"}
|
package/dist/parse.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import type { MethodResultDoc, StochasticResultDoc } from "./schemas/result.js";
|
|
|
4
4
|
import type { StudyDoc } from "./schemas/study.js";
|
|
5
5
|
import type { BundleDoc } from "./schemas/bundle.js";
|
|
6
6
|
import type { CrosscheckReportDoc } from "./schemas/crosscheck.js";
|
|
7
|
+
import type { DiagnosticDefinitionDoc } from "./schemas/diagnosticDefinition.js";
|
|
7
8
|
/**
|
|
8
9
|
* `parseDocument` (spec 4.1): version-checked, schema-validated,
|
|
9
10
|
* integrity-verified, warning-channeled entry point for any interchange
|
|
@@ -30,7 +31,7 @@ import type { CrosscheckReportDoc } from "./schemas/crosscheck.js";
|
|
|
30
31
|
* that computation support is limited — a reader capability note, not a
|
|
31
32
|
* format error.
|
|
32
33
|
*/
|
|
33
|
-
export type InterchangeDocument = TriangleDoc | SelectionDoc | MethodResultDoc | StochasticResultDoc | StudyDoc | BundleDoc | CrosscheckReportDoc;
|
|
34
|
+
export type InterchangeDocument = TriangleDoc | SelectionDoc | MethodResultDoc | StochasticResultDoc | StudyDoc | BundleDoc | CrosscheckReportDoc | DiagnosticDefinitionDoc;
|
|
34
35
|
export interface ParseDocumentOptions {
|
|
35
36
|
/** How to treat a failed integrity check. Default "refuse". */
|
|
36
37
|
strictness?: "warn" | "refuse";
|
package/dist/parse.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAGjF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,MAAM,MAAM,mBAAmB,GAC3B,WAAW,GACX,YAAY,GACZ,eAAe,GACf,mBAAmB,GACnB,QAAQ,GACR,SAAS,GACT,mBAAmB,GACnB,uBAAuB,CAAC;AAE5B,MAAM,WAAW,oBAAoB;IACnC,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,mBAAmB,CAAC;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAyCD,wBAAgB,aAAa,CAC3B,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,oBAAyB,GACjC,cAAc,CA+FhB"}
|
package/dist/parse.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ReservingError } from "@actuarial-ts/core";
|
|
2
2
|
import { DOCUMENT_KINDS, acceptVersion, verifyIntegrity, } from "./envelope.js";
|
|
3
3
|
import { INTERCHANGE_SCHEMA_MANIFEST } from "./schemas/manifest.js";
|
|
4
|
+
import { snapshotInterchangeJson } from "./json.js";
|
|
4
5
|
const SCHEMA_BY_KIND = new Map(INTERCHANGE_SCHEMA_MANIFEST.map((entry) => [entry.kind, entry.schema]));
|
|
5
6
|
function formatZodError(error) {
|
|
6
7
|
return error.issues
|
|
@@ -32,6 +33,7 @@ function embeddedDocuments(doc) {
|
|
|
32
33
|
collect("$.interchange.triangles", mirror["triangles"]);
|
|
33
34
|
collect("$.interchange.selections", mirror["selections"]);
|
|
34
35
|
collect("$.interchange.results", mirror["results"]);
|
|
36
|
+
collect("$.interchange.diagnosticDefinitions", mirror["diagnosticDefinitions"]);
|
|
35
37
|
}
|
|
36
38
|
}
|
|
37
39
|
return found;
|
|
@@ -48,11 +50,15 @@ export function parseDocument(value, options = {}) {
|
|
|
48
50
|
if (schema === undefined) {
|
|
49
51
|
throw new ReservingError("BAD_INTERCHANGE", `Unknown document kind ${JSON.stringify(kind)}; this reader understands: ${DOCUMENT_KINDS.join(", ")}`);
|
|
50
52
|
}
|
|
51
|
-
const
|
|
53
|
+
const snapshot = snapshotInterchangeJson(raw);
|
|
54
|
+
const parsed = schema.safeParse(snapshot);
|
|
52
55
|
if (!parsed.success) {
|
|
53
56
|
throw new ReservingError("BAD_INTERCHANGE", `Document of kind "${String(kind)}" failed schema validation: ${formatZodError(parsed.error)}`);
|
|
54
57
|
}
|
|
55
|
-
|
|
58
|
+
// These wire schemas validate only: no defaults, coercions, or semantic
|
|
59
|
+
// transforms. Keep the owned input snapshot because Zod 3's passthrough
|
|
60
|
+
// object assembler otherwise drops unknown own `__proto__` properties.
|
|
61
|
+
const doc = snapshot;
|
|
56
62
|
const warnings = [];
|
|
57
63
|
const integrity = verifyIntegrity(doc);
|
|
58
64
|
if (!integrity.ok) {
|
package/dist/parse.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAEL,cAAc,EACd,aAAa,EACb,eAAe,GAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"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"}
|
package/dist/schemas/bundle.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { type GeneratorStamp } from "../envelope.js";
|
|
|
3
3
|
import { type TriangleDoc } from "./triangle.js";
|
|
4
4
|
import { type SelectionDoc } from "./selection.js";
|
|
5
5
|
import { type MethodResultDoc, type StochasticResultDoc } from "./result.js";
|
|
6
|
+
import { type DiagnosticDefinitionDoc } from "./diagnosticDefinition.js";
|
|
6
7
|
/**
|
|
7
8
|
* BundleDoc (spec 3.2) — the wrapped reproducibility bundle.
|
|
8
9
|
*
|
|
@@ -24,6 +25,7 @@ export interface BundleInterchange {
|
|
|
24
25
|
triangles: TriangleDoc[];
|
|
25
26
|
selections: SelectionDoc[];
|
|
26
27
|
results: (MethodResultDoc | StochasticResultDoc)[];
|
|
28
|
+
diagnosticDefinitions?: DiagnosticDefinitionDoc[];
|
|
27
29
|
[key: string]: unknown;
|
|
28
30
|
}
|
|
29
31
|
export interface BundleDoc {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../../src/schemas/bundle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,KAAK,WAAW,EAAqB,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,KAAK,YAAY,EAAsB,MAAM,gBAAgB,CAAC;AACvE,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,mBAAmB,EAGzB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../../src/schemas/bundle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,KAAK,WAAW,EAAqB,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,KAAK,YAAY,EAAsB,MAAM,gBAAgB,CAAC;AACvE,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,mBAAmB,EAGzB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,KAAK,uBAAuB,EAAiC,MAAM,2BAA2B,CAAC;AAExG;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,OAAO,EAAE,CAAC,eAAe,GAAG,mBAAmB,CAAC,EAAE,CAAC;IACnD,qBAAqB,CAAC,EAAE,uBAAuB,EAAE,CAAC;IAClD,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,SAAS;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,cAAc,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,WAAW,EAAE,iBAAiB,CAAC;IAC/B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,eAAO,MAAM,uBAAuB,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAOjD,CAAC;AAEjB,eAAO,MAAM,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAMjC,CAAC"}
|
package/dist/schemas/bundle.js
CHANGED
|
@@ -3,11 +3,13 @@ import { envelopeShape } from "../envelope.js";
|
|
|
3
3
|
import { triangleDocSchema } from "./triangle.js";
|
|
4
4
|
import { selectionDocSchema } from "./selection.js";
|
|
5
5
|
import { methodResultDocSchema, stochasticResultDocSchema, } from "./result.js";
|
|
6
|
+
import { diagnosticDefinitionDocSchema } from "./diagnosticDefinition.js";
|
|
6
7
|
export const bundleInterchangeSchema = z
|
|
7
8
|
.object({
|
|
8
9
|
triangles: z.array(triangleDocSchema),
|
|
9
10
|
selections: z.array(selectionDocSchema),
|
|
10
11
|
results: z.array(z.union([methodResultDocSchema, stochasticResultDocSchema])),
|
|
12
|
+
diagnosticDefinitions: z.array(diagnosticDefinitionDocSchema).optional(),
|
|
11
13
|
})
|
|
12
14
|
.passthrough();
|
|
13
15
|
export const bundleDocSchema = z
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle.js","sourceRoot":"","sources":["../../src/schemas/bundle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAuB,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAoB,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAqB,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAGL,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"bundle.js","sourceRoot":"","sources":["../../src/schemas/bundle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAuB,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAoB,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAqB,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAGL,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAgC,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAyCxG,MAAM,CAAC,MAAM,uBAAuB,GAAiC,CAAC;KACnE,MAAM,CAAC;IACN,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC;IACrC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC;IACvC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,qBAAqB,EAAE,yBAAyB,CAAC,CAAC,CAAC;IAC7E,qBAAqB,EAAE,CAAC,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC,QAAQ,EAAE;CACzE,CAAC;KACD,WAAW,EAAE,CAAC;AAEjB,MAAM,CAAC,MAAM,eAAe,GAAyB,CAAC;KACnD,MAAM,CAAC;IACN,GAAG,aAAa,CAAC,QAAQ,CAAC;IAC1B,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAC7B,WAAW,EAAE,uBAAuB;CACrC,CAAC;KACD,WAAW,EAAE,CAAC"}
|