Select Git revision
variables.ts
-
Emmanuel Raviart authoredEmmanuel Raviart authored
variables.ts 6.43 KiB
import variableSummaryByNameUnknown from "@openfisca/france-json/variables_summaries.json"
import type {
Formula,
Reference,
Variable,
VariableByName,
} from "@openfisca/json-model"
import type { CalculationName } from "$lib/calculations"
import { reformChangesByName } from "$lib/reforms"
export interface InstantFormulaAndReferences {
formula?: Formula
instant: string
references: Reference[]
}
export type ValuesByCalculationNameByVariableName = {
[variableName: string]: VariableValuesByCalculationName
}
export type VariableValueByCalculationName = Partial<{
[calculationName in CalculationName]: VariableValue
}>
export type VariableValuesByCalculationName = Partial<{
[calculationName in CalculationName]: VariableValues
}>
export type VariableValue = boolean | number | string
export type VariableValues = boolean[] | number[] | string[]
/// Name of variables that must be calculated to be displayed in
/// test case summaries.
export const summaryCalculatedVariablesName = [
"assiette_csg_revenus_capital",
"assiette_csg_plus_values",
"plus_values_base_large",
"rente_viagere_titre_onereux_net",
"rsa",
]
export const variableSummaryByName =
variableSummaryByNameUnknown as VariableByName
export const variableSummaryByNameByReformName: {
[name: string]: VariableByName
} = Object.fromEntries(
Object.entries(reformChangesByName).map(([reformName, reformChanges]) => [
reformName,
patchVariableSummaryByName(
variableSummaryByName,
reformChanges.variables_summaries,
),
]),
)
export function buildInstantFormulaAndReferencesArray(
variable: Variable,
): InstantFormulaAndReferences[] {
const instantFormulaAndReferencesByInstant: {
[instant: string]: InstantFormulaAndReferences
} = Object.fromEntries(
Object.entries(variable.formulas ?? {}).map(([instant, formula]) => [
instant,
{ formula, instant, references: [] },
]),
)
if (variable.reference !== undefined) {