@actuarial-ts/data 0.7.1 → 0.8.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.
Files changed (39) hide show
  1. package/README.md +20 -4
  2. package/dist/customizationContracts.d.ts +2473 -0
  3. package/dist/customizationContracts.d.ts.map +1 -0
  4. package/dist/customizationContracts.js +845 -0
  5. package/dist/customizationContracts.js.map +1 -0
  6. package/dist/customizationExternalState.d.ts +42 -0
  7. package/dist/customizationExternalState.d.ts.map +1 -0
  8. package/dist/customizationExternalState.js +121 -0
  9. package/dist/customizationExternalState.js.map +1 -0
  10. package/dist/customizationHistoryStream.d.ts +26 -0
  11. package/dist/customizationHistoryStream.d.ts.map +1 -0
  12. package/dist/customizationHistoryStream.js +66 -0
  13. package/dist/customizationHistoryStream.js.map +1 -0
  14. package/dist/diagnosticInput.d.ts +33 -0
  15. package/dist/diagnosticInput.d.ts.map +1 -1
  16. package/dist/diagnosticInput.js +71 -1
  17. package/dist/diagnosticInput.js.map +1 -1
  18. package/dist/diagnosticPreparedReview.d.ts.map +1 -1
  19. package/dist/diagnosticPreparedReview.js +38 -0
  20. package/dist/diagnosticPreparedReview.js.map +1 -1
  21. package/dist/historyMapping.d.ts +898 -0
  22. package/dist/historyMapping.d.ts.map +1 -0
  23. package/dist/historyMapping.js +395 -0
  24. package/dist/historyMapping.js.map +1 -0
  25. package/dist/index.d.ts +4 -0
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +4 -0
  28. package/dist/index.js.map +1 -1
  29. package/dist/version.d.ts +1 -1
  30. package/dist/version.js +1 -1
  31. package/package.json +3 -3
  32. package/src/customizationContracts.ts +963 -0
  33. package/src/customizationExternalState.ts +208 -0
  34. package/src/customizationHistoryStream.ts +90 -0
  35. package/src/diagnosticInput.ts +101 -0
  36. package/src/diagnosticPreparedReview.ts +48 -0
  37. package/src/historyMapping.ts +514 -0
  38. package/src/index.ts +4 -0
  39. package/src/version.ts +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"historyMapping.d.ts","sourceRoot":"","sources":["../src/historyMapping.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,395 @@
1
+ import { DiagnosticValidationError, diagnosticJsonPreflight, isDiagnosticToken, isRealIsoDate, snapshotDiagnosticJson, } from "@actuarial-ts/core";
2
+ import { z } from "zod";
3
+ const token = z.string().refine(isDiagnosticToken, "Expected a valid nonempty token");
4
+ const columnSelector = z.object({ columns: z.array(token).min(1) }).strict();
5
+ const dateSelector = columnSelector.extend({
6
+ format: z.enum(["iso-yyyy-mm-dd", "mdy-slash", "dmy-slash"]),
7
+ }).strict();
8
+ const numberFormat = {
9
+ decimalSeparator: z.enum([".", ","]),
10
+ thousandsSeparator: z.enum([",", ".", " "]).nullable(),
11
+ negative: z.enum(["leading-minus", "parentheses-or-leading-minus"]),
12
+ blank: z.enum(["null", "error"]),
13
+ scale: z.number().finite().positive(),
14
+ };
15
+ const numberSelector = columnSelector.extend(numberFormat).strict().superRefine((value, context) => {
16
+ if (value.thousandsSeparator === value.decimalSeparator)
17
+ context.addIssue({
18
+ code: z.ZodIssueCode.custom,
19
+ path: ["thousandsSeparator"],
20
+ message: "Thousands and decimal separators must differ",
21
+ });
22
+ });
23
+ const dimensionSelector = columnSelector
24
+ .extend({
25
+ type: z.enum(["string", "number", "boolean", "date"]),
26
+ dateFormat: z.enum(["iso-yyyy-mm-dd", "mdy-slash", "dmy-slash"]).optional(),
27
+ numberFormat: z.object(numberFormat).strict().optional(),
28
+ multipleDelimiter: z.string().min(1).optional(),
29
+ })
30
+ .strict()
31
+ .superRefine((value, context) => {
32
+ if (value.type === "date" && value.dateFormat === undefined)
33
+ context.addIssue({ code: z.ZodIssueCode.custom, path: ["dateFormat"], message: "Date dimension requires dateFormat" });
34
+ if (value.type === "number" && value.numberFormat === undefined)
35
+ context.addIssue({ code: z.ZodIssueCode.custom, path: ["numberFormat"], message: "Number dimension requires numberFormat" });
36
+ if (value.multipleDelimiter !== undefined && value.type !== "string")
37
+ context.addIssue({
38
+ code: z.ZodIssueCode.custom,
39
+ path: ["multipleDelimiter"],
40
+ message: "Only string dimensions support multipleDelimiter",
41
+ });
42
+ });
43
+ const multiSelector = columnSelector.extend({ delimiter: z.string().min(1) }).strict();
44
+ export const historicalSourceMappingSchema = z
45
+ .object({
46
+ id: token,
47
+ version: token,
48
+ sourceNamespace: token,
49
+ artifactId: token,
50
+ grain: z.enum(["claim-snapshot", "claim-component-snapshot", "transaction"]),
51
+ completeness: z.enum(["complete-snapshot", "partial-snapshot", "change-only"]),
52
+ fields: z
53
+ .object({
54
+ recordId: columnSelector,
55
+ claimId: columnSelector,
56
+ componentId: columnSelector.optional(),
57
+ accidentDate: dateSelector.optional(),
58
+ reportDate: dateSelector.optional(),
59
+ evaluationDate: dateSelector.optional(),
60
+ effectiveDate: dateSelector.optional(),
61
+ status: columnSelector.optional(),
62
+ })
63
+ .strict(),
64
+ measures: z.record(token, numberSelector),
65
+ dimensions: z.record(token, dimensionSelector).optional(),
66
+ relationships: z
67
+ .object({
68
+ claimantIds: multiSelector.optional(),
69
+ occurrenceId: columnSelector.optional(),
70
+ policyIds: multiSelector.optional(),
71
+ coverageIds: multiSelector.optional(),
72
+ })
73
+ .strict()
74
+ .optional(),
75
+ revision: z
76
+ .object({
77
+ id: columnSelector,
78
+ action: columnSelector.optional(),
79
+ sequence: numberSelector.optional(),
80
+ correctedAt: columnSelector.optional(),
81
+ })
82
+ .strict(),
83
+ preserveUnmappedAttributes: z.boolean(),
84
+ })
85
+ .strict()
86
+ .superRefine((mapping, context) => {
87
+ if (mapping.grain === "claim-component-snapshot" && mapping.fields.componentId === undefined)
88
+ context.addIssue({ code: z.ZodIssueCode.custom, path: ["fields", "componentId"], message: "Component grain requires componentId mapping" });
89
+ if (mapping.grain === "transaction" && mapping.fields.effectiveDate === undefined)
90
+ context.addIssue({ code: z.ZodIssueCode.custom, path: ["fields", "effectiveDate"], message: "Transaction grain requires effectiveDate mapping" });
91
+ if (mapping.grain !== "transaction" && mapping.fields.evaluationDate === undefined)
92
+ context.addIssue({ code: z.ZodIssueCode.custom, path: ["fields", "evaluationDate"], message: "Snapshot grain requires evaluationDate mapping" });
93
+ if (mapping.grain === "transaction" && mapping.completeness !== "change-only")
94
+ context.addIssue({ code: z.ZodIssueCode.custom, path: ["completeness"], message: "Transaction grain requires change-only completeness" });
95
+ if (Object.keys(mapping.measures).length === 0)
96
+ context.addIssue({ code: z.ZodIssueCode.custom, path: ["measures"], message: "At least one measure mapping is required" });
97
+ });
98
+ function mappingError(error) {
99
+ return new DiagnosticValidationError(error.issues.map((issue) => ({
100
+ domain: "configuration",
101
+ code: issue.code === z.ZodIssueCode.unrecognized_keys ? "unknown-key" : "invalid-configuration",
102
+ path: `$${issue.path.map((part) => (typeof part === "number" ? `[${part}]` : `.${part}`)).join("")}`,
103
+ message: issue.message,
104
+ })));
105
+ }
106
+ export function parseHistoricalSourceMapping(value) {
107
+ const parsed = historicalSourceMappingSchema.safeParse(value);
108
+ if (!parsed.success)
109
+ throw mappingError(parsed.error);
110
+ return snapshotDiagnosticJson(parsed.data);
111
+ }
112
+ function scalarText(value) {
113
+ return value === null ? "" : typeof value === "string" ? value.trim() : String(value);
114
+ }
115
+ function selectedValue(row, selector, path, issues, required = true) {
116
+ const selected = selector.columns
117
+ .filter((column) => Object.hasOwn(row.values, column))
118
+ .map((column) => ({ column, value: row.values[column] }))
119
+ .filter(({ value }) => scalarText(value) !== "");
120
+ if (selected.length === 0) {
121
+ if (required)
122
+ issues.push({ path, message: `No value found in columns ${selector.columns.join(", ")}` });
123
+ return undefined;
124
+ }
125
+ if (new Set(selected.map(({ value }) => scalarText(value))).size > 1) {
126
+ issues.push({ path, message: `Alias columns disagree: ${selected.map(({ column }) => column).join(", ")}` });
127
+ return undefined;
128
+ }
129
+ return selected[0].value;
130
+ }
131
+ function parseDateValue(value, format, path, issues) {
132
+ if (value === undefined)
133
+ return undefined;
134
+ const text = scalarText(value);
135
+ let result = text;
136
+ const match = /^(\d{1,2})\/(\d{1,2})\/(\d{4})$/.exec(text);
137
+ if (format !== "iso-yyyy-mm-dd") {
138
+ if (!match) {
139
+ issues.push({ path, message: `Expected ${format} date` });
140
+ return undefined;
141
+ }
142
+ const month = format === "mdy-slash" ? match[1] : match[2];
143
+ const day = format === "mdy-slash" ? match[2] : match[1];
144
+ result = `${match[3]}-${month.padStart(2, "0")}-${day.padStart(2, "0")}`;
145
+ }
146
+ if (!isRealIsoDate(result)) {
147
+ issues.push({ path, message: `Expected a real date; got ${text}` });
148
+ return undefined;
149
+ }
150
+ return result;
151
+ }
152
+ function parseNumberValue(value, selector, path, issues) {
153
+ if (value === undefined || scalarText(value) === "") {
154
+ if (selector.blank === "error")
155
+ issues.push({ path, message: "Blank numeric value is not allowed" });
156
+ return selector.blank === "null" ? null : undefined;
157
+ }
158
+ if (typeof value === "number") {
159
+ if (!Number.isFinite(value)) {
160
+ issues.push({ path, message: "Numeric value is not finite" });
161
+ return undefined;
162
+ }
163
+ const result = value * selector.scale;
164
+ if (!Number.isFinite(result)) {
165
+ issues.push({ path, message: "Scaled numeric value is not finite" });
166
+ return undefined;
167
+ }
168
+ return Object.is(result, -0) ? 0 : result;
169
+ }
170
+ let text = scalarText(value);
171
+ let negative = false;
172
+ if (/^\(.*\)$/.test(text)) {
173
+ if (selector.negative !== "parentheses-or-leading-minus") {
174
+ issues.push({ path, message: "Parenthesized negative is not allowed" });
175
+ return undefined;
176
+ }
177
+ negative = true;
178
+ text = text.slice(1, -1);
179
+ }
180
+ if (selector.thousandsSeparator !== null)
181
+ text = text.split(selector.thousandsSeparator).join("");
182
+ if (selector.decimalSeparator === ",")
183
+ text = text.replace(",", ".");
184
+ if (!/^-?\d+(?:\.\d+)?$/.test(text)) {
185
+ issues.push({ path, message: `Invalid number ${scalarText(value)} for declared format` });
186
+ return undefined;
187
+ }
188
+ const result = Number(text) * selector.scale * (negative ? -1 : 1);
189
+ if (!Number.isFinite(result)) {
190
+ issues.push({ path, message: "Numeric value is not finite" });
191
+ return undefined;
192
+ }
193
+ return Object.is(result, -0) ? 0 : result;
194
+ }
195
+ function splitIds(value, delimiter) {
196
+ if (value === undefined)
197
+ return undefined;
198
+ const values = scalarText(value).split(delimiter).map((item) => item.trim()).filter(Boolean);
199
+ return values.length === 0 ? undefined : [...new Set(values)];
200
+ }
201
+ function selectorColumns(mapping) {
202
+ const result = new Set();
203
+ const add = (selector) => selector?.columns.forEach((column) => result.add(column));
204
+ Object.values(mapping.fields).forEach(add);
205
+ Object.values(mapping.measures).forEach(add);
206
+ Object.values(mapping.dimensions ?? {}).forEach(add);
207
+ Object.values(mapping.relationships ?? {}).forEach(add);
208
+ Object.values(mapping.revision).forEach(add);
209
+ return result;
210
+ }
211
+ export function mapHistoricalSourceRows(mappingInput, rowsInput) {
212
+ const mapping = parseHistoricalSourceMapping(mappingInput);
213
+ const records = [];
214
+ const rejected = [];
215
+ const usedColumns = selectorColumns(mapping);
216
+ const attributeTypes = new Map();
217
+ for (let rowIndex = 0; rowIndex < rowsInput.length; rowIndex += 1) {
218
+ const raw = rowsInput[rowIndex];
219
+ const preflight = diagnosticJsonPreflight(raw, "input");
220
+ if (preflight.length > 0) {
221
+ const candidate = raw.rowNumber;
222
+ const rowNumber = typeof candidate === "number" && Number.isSafeInteger(candidate) && candidate > 0 ? candidate : rowIndex + 1;
223
+ rejected.push({
224
+ rowNumber,
225
+ source: { artifactId: mapping.artifactId, sourceRow: rowNumber },
226
+ issues: preflight.map((issue) => ({ path: issue.path, message: issue.message })),
227
+ });
228
+ continue;
229
+ }
230
+ const row = snapshotDiagnosticJson(raw);
231
+ const issues = [];
232
+ const pendingAttributeTypes = new Map();
233
+ if (!Number.isSafeInteger(row.rowNumber) || row.rowNumber < 1)
234
+ issues.push({ path: "$.rowNumber", message: "rowNumber must be a positive safe integer" });
235
+ const field = (selector, name, required = false) => selector === undefined ? undefined : selectedValue(row, selector, `$.${name}`, issues, required);
236
+ const recordId = scalarText(field(mapping.fields.recordId, "recordId", true) ?? "");
237
+ const claimId = scalarText(field(mapping.fields.claimId, "claimId", true) ?? "");
238
+ const componentIdValue = field(mapping.fields.componentId, "componentId", mapping.grain === "claim-component-snapshot");
239
+ const statusValue = field(mapping.fields.status, "status");
240
+ const mappedDate = (selector, name, required = false) => {
241
+ if (selector === undefined)
242
+ return undefined;
243
+ return parseDateValue(field(selector, name, required), selector.format, `$.${name}`, issues);
244
+ };
245
+ const accidentDate = mappedDate(mapping.fields.accidentDate, "accidentDate");
246
+ const reportDate = mappedDate(mapping.fields.reportDate, "reportDate");
247
+ const evaluationDate = mappedDate(mapping.fields.evaluationDate, "evaluationDate", mapping.grain !== "transaction");
248
+ const effectiveDate = mappedDate(mapping.fields.effectiveDate, "effectiveDate", mapping.grain === "transaction");
249
+ const measures = Object.create(null);
250
+ for (const [id, selector] of Object.entries(mapping.measures)) {
251
+ const value = selectedValue(row, selector, `$.measures.${id}`, issues, selector.blank === "error");
252
+ const amount = parseNumberValue(value, selector, `$.measures.${id}`, issues);
253
+ if (amount !== undefined)
254
+ measures[id] = amount;
255
+ }
256
+ const dimensions = Object.create(null);
257
+ for (const [id, selector] of Object.entries(mapping.dimensions ?? {})) {
258
+ const value = selectedValue(row, selector, `$.dimensions.${id}`, issues, false);
259
+ if (value === undefined)
260
+ continue;
261
+ if (selector.multipleDelimiter !== undefined) {
262
+ dimensions[id] = splitIds(value, selector.multipleDelimiter) ?? [];
263
+ }
264
+ else if (selector.type === "date") {
265
+ const parsed = parseDateValue(value, selector.dateFormat, `$.dimensions.${id}`, issues);
266
+ if (parsed !== undefined)
267
+ dimensions[id] = parsed;
268
+ }
269
+ else if (selector.type === "number") {
270
+ const parsed = parseNumberValue(value, selector.numberFormat, `$.dimensions.${id}`, issues);
271
+ if (parsed !== undefined)
272
+ dimensions[id] = parsed;
273
+ }
274
+ else if (selector.type === "boolean") {
275
+ const text = scalarText(value).toLowerCase();
276
+ if (text === "true" || text === "1")
277
+ dimensions[id] = true;
278
+ else if (text === "false" || text === "0")
279
+ dimensions[id] = false;
280
+ else
281
+ issues.push({ path: `$.dimensions.${id}`, message: "Expected boolean true/false/1/0" });
282
+ }
283
+ else
284
+ dimensions[id] = scalarText(value);
285
+ }
286
+ if (mapping.preserveUnmappedAttributes)
287
+ for (const [column, value] of Object.entries(row.values)) {
288
+ if (usedColumns.has(column))
289
+ continue;
290
+ const id = `source:${mapping.sourceNamespace}:${column}`;
291
+ dimensions[id] = value;
292
+ const type = value === null ? "null" : typeof value;
293
+ if (type === "string" || type === "number" || type === "boolean" || type === "null") {
294
+ const current = pendingAttributeTypes.get(id) ?? new Set();
295
+ current.add(type);
296
+ pendingAttributeTypes.set(id, current);
297
+ }
298
+ }
299
+ const relationship = mapping.relationships;
300
+ const occurrence = scalarText(field(relationship?.occurrenceId, "relationships.occurrenceId") ?? "");
301
+ const claimantIds = relationship?.claimantIds
302
+ ? splitIds(field(relationship.claimantIds, "relationships.claimantIds"), relationship.claimantIds.delimiter)
303
+ : undefined;
304
+ const policyIds = relationship?.policyIds
305
+ ? splitIds(field(relationship.policyIds, "relationships.policyIds"), relationship.policyIds.delimiter)
306
+ : undefined;
307
+ const coverageIds = relationship?.coverageIds
308
+ ? splitIds(field(relationship.coverageIds, "relationships.coverageIds"), relationship.coverageIds.delimiter)
309
+ : undefined;
310
+ const revisionId = scalarText(field(mapping.revision.id, "revision.id", true) ?? "");
311
+ const actionText = scalarText(field(mapping.revision.action, "revision.action") ?? "upsert").toLowerCase();
312
+ if (actionText !== "upsert" && actionText !== "delete")
313
+ issues.push({ path: "$.revision.action", message: "Revision action must be upsert or delete" });
314
+ const sequenceValue = mapping.revision.sequence
315
+ ? parseNumberValue(field(mapping.revision.sequence, "revision.sequence", true), mapping.revision.sequence, "$.revision.sequence", issues)
316
+ : undefined;
317
+ if (typeof sequenceValue === "number" && !Number.isSafeInteger(sequenceValue))
318
+ issues.push({ path: "$.revision.sequence", message: "Revision sequence must be a safe integer" });
319
+ const correctedAtValue = field(mapping.revision.correctedAt, "revision.correctedAt");
320
+ const correctedAt = correctedAtValue === undefined ? undefined : scalarText(correctedAtValue);
321
+ if (correctedAt !== undefined && !/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/.test(correctedAt))
322
+ issues.push({ path: "$.revision.correctedAt", message: "correctedAt must be an ISO timestamp with offset" });
323
+ if (!isDiagnosticToken(recordId))
324
+ issues.push({ path: "$.recordId", message: "recordId is invalid" });
325
+ if (!isDiagnosticToken(claimId))
326
+ issues.push({ path: "$.claimId", message: "claimId is invalid" });
327
+ if (!isDiagnosticToken(revisionId))
328
+ issues.push({ path: "$.revision.id", message: "revision id is invalid" });
329
+ if (issues.length > 0) {
330
+ rejected.push({
331
+ rowNumber: row.rowNumber,
332
+ source: { artifactId: mapping.artifactId, sourceRow: row.rowNumber },
333
+ issues,
334
+ });
335
+ continue;
336
+ }
337
+ for (const [id, types] of pendingAttributeTypes) {
338
+ const current = attributeTypes.get(id) ?? new Set();
339
+ types.forEach((type) => current.add(type));
340
+ attributeTypes.set(id, current);
341
+ }
342
+ const relationships = {
343
+ ...(claimantIds === undefined ? {} : { claimantIds }),
344
+ ...(occurrence === "" ? {} : { occurrenceId: occurrence }),
345
+ ...(policyIds === undefined ? {} : { policyIds }),
346
+ ...(coverageIds === undefined ? {} : { coverageIds }),
347
+ };
348
+ records.push({
349
+ recordId,
350
+ sourceNamespace: mapping.sourceNamespace,
351
+ claimId,
352
+ grain: mapping.grain,
353
+ ...(componentIdValue === undefined ? {} : { componentId: scalarText(componentIdValue) }),
354
+ ...(accidentDate === undefined ? {} : { accidentDate }),
355
+ ...(reportDate === undefined ? {} : { reportDate }),
356
+ ...(evaluationDate === undefined ? {} : { evaluationDate }),
357
+ ...(effectiveDate === undefined ? {} : { effectiveDate }),
358
+ measures: actionText === "delete" ? {} : measures,
359
+ ...(statusValue === undefined ? {} : { status: scalarText(statusValue) }),
360
+ ...(Object.keys(dimensions).length === 0 ? {} : { dimensions }),
361
+ ...(Object.keys(relationships).length === 0 ? {} : { relationships }),
362
+ completeness: mapping.completeness,
363
+ revision: {
364
+ id: revisionId,
365
+ action: actionText,
366
+ ...(typeof sequenceValue !== "number" ? {} : { sequence: sequenceValue }),
367
+ ...(correctedAt === undefined ? {} : { correctedAt }),
368
+ },
369
+ source: { artifactId: mapping.artifactId, sourceRow: row.rowNumber },
370
+ });
371
+ }
372
+ records.sort((left, right) => left.recordId === right.recordId ? 0 : left.recordId < right.recordId ? -1 : 1);
373
+ rejected.sort((left, right) => left.rowNumber - right.rowNumber);
374
+ return snapshotDiagnosticJson({
375
+ mappingId: mapping.id,
376
+ mappingVersion: mapping.version,
377
+ sourceNamespace: mapping.sourceNamespace,
378
+ artifactId: mapping.artifactId,
379
+ records,
380
+ rejected,
381
+ attributeCatalog: [...attributeTypes.entries()]
382
+ .sort(([left], [right]) => (left < right ? -1 : left > right ? 1 : 0))
383
+ .map(([id, types]) => ({
384
+ id,
385
+ sourceColumn: id.slice(`source:${mapping.sourceNamespace}:`.length),
386
+ observedTypes: [...types].sort(),
387
+ })),
388
+ reconciliation: {
389
+ inputRows: rowsInput.length,
390
+ acceptedRows: records.length,
391
+ rejectedRows: rejected.length,
392
+ },
393
+ });
394
+ }
395
+ //# sourceMappingURL=historyMapping.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"historyMapping.js","sourceRoot":"","sources":["../src/historyMapping.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,8 @@
1
1
  export * from "./csv.js";
2
+ export * from "./customizationContracts.js";
3
+ export * from "./customizationExternalState.js";
4
+ export * from "./customizationHistoryStream.js";
5
+ export * from "./historyMapping.js";
2
6
  export * from "./annualDevelopment.js";
3
7
  export * from "./exposure.js";
4
8
  export * from "./diagnosticInput.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,cAAc,CAAC;AAC7B,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,iCAAiC,CAAC;AAChD,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,cAAc,CAAC;AAC7B,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,8 @@
1
1
  export * from "./csv.js";
2
+ export * from "./customizationContracts.js";
3
+ export * from "./customizationExternalState.js";
4
+ export * from "./customizationHistoryStream.js";
5
+ export * from "./historyMapping.js";
2
6
  export * from "./annualDevelopment.js";
3
7
  export * from "./exposure.js";
4
8
  export * from "./diagnosticInput.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,cAAc,CAAC;AAC7B,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,iCAAiC,CAAC;AAChD,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,cAAc,CAAC;AAC7B,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC"}
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const DATA_PACKAGE_VERSION = "0.7.1";
1
+ export declare const DATA_PACKAGE_VERSION = "0.8.0";
2
2
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,2 +1,2 @@
1
- export const DATA_PACKAGE_VERSION = "0.7.1";
1
+ export const DATA_PACKAGE_VERSION = "0.8.0";
2
2
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@actuarial-ts/data",
3
- "version": "0.7.1",
3
+ "version": "0.8.0",
4
4
  "description": "Data ingestion and ASOP No. 23 support for actuarial-ts: loss/exposure preparation, atomic generalized diagnostic validation, declarative review, and triangle assembly.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -49,12 +49,12 @@
49
49
  "prepublishOnly": "node ../../tools/release/verify-release-attestation.mjs @actuarial-ts/data"
50
50
  },
51
51
  "dependencies": {
52
- "@actuarial-ts/core": "^0.7.1",
52
+ "@actuarial-ts/core": "^0.8.0",
53
53
  "zod": "^3.25.76"
54
54
  },
55
55
  "devDependencies": {
56
56
  "typescript": "^5.7.3",
57
- "vitest": "^3.0.5"
57
+ "vitest": "^5.0.1"
58
58
  },
59
59
  "publishConfig": {
60
60
  "access": "public"