diff --git a/.eslintrc.cjs b/.eslintrc.cjs
index 73e5db28d7789d7c2a7c0dacb33dd9584ab7f471..51d3d015d99c5180a762b568d0689e50f7ee4265 100644
--- a/.eslintrc.cjs
+++ b/.eslintrc.cjs
@@ -7,6 +7,9 @@ module.exports = {
   extends: [
     "eslint:recommended",
     "plugin:@typescript-eslint/recommended",
+    "plugin:import/errors",
+    "plugin:import/warnings",
+    "plugin:import/typescript",
     "plugin:svelte/recommended",
     "prettier",
   ],
@@ -27,9 +30,28 @@ module.exports = {
   },
   plugins: ["@typescript-eslint"],
   root: true,
+  rules: {
+    "import/order": [
+      "warn",
+      {
+        alphabetize: {
+          order: "asc",
+          caseInsensitive: true,
+        },
+        "newlines-between": "always",
+      },
+    ],
+    "import/no-unresolved": "off",
+  },
   settings: {
     svelte: {
       ignoreWarnings: ["no-irregular-whitespace", "svelte/no-at-html-tags"],
     },
+    "import/resolver": {
+      node: {
+        paths: ["src"],
+        extensions: [".js", ".jsx", ".ts", ".tsx", ".svelte"],
+      },
+    },
   },
 }
diff --git a/README.md b/README.md
index c4ae3ca30a8ebf500552696f29b49e518cfc2a4c..476906a3cd7c20198e25a12130932b274852b3cb 100644
--- a/README.md
+++ b/README.md
@@ -43,16 +43,15 @@ L'application peut alors être consultée dans un navigateur à l'adresse indiqu
 
 Bravo ! Vous êtes prêts à utiliser et contribuer à `leximpact-socio-fiscal-ui` 🎉
 
+## Documentation
 
-## Documentation 
-
-### Ajouter une variable calculée dans le simulateur 
+### Ajouter une variable calculée dans le simulateur
 
 Dans l'application, seules les variables indiquées dans la feuille de paie sont calculées. Pour afficher les résultats d'une autre variable il faut donc demander à l'application de la récuéprer.
 
-#### Variable affichée dans l'étiquette du cas type : 
+#### Variable affichée dans l'étiquette du cas type :
 
-1. Dans le fichier variables.ts, ajouter le nom de la viariable OpenFisca : 
+1. Dans le fichier variables.ts, ajouter le nom de la viariable OpenFisca :
 
 ```js
 /// test case summaries.
@@ -78,17 +77,15 @@ populationId,
 ) ?? 0}
 ```
 
-3. Ensuite, appeler la variable dans le composant choisi : 
+3. Ensuite, appeler la variable dans le composant choisi :
 
 ```js
-<div>
-    {zone_apl}
-</div>
+<div>{zone_apl}</div>
 ```
 
 #### Variable affichée dans la décomposition :
 
-1. Dans le fichier variables.ts, ajouter le nom de la viariable OpenFisca : 
+1. Dans le fichier variables.ts, ajouter le nom de la viariable OpenFisca :
 
 ```js
 /// Autres variables à calculer
@@ -98,6 +95,7 @@ export const otherCalculatedVariablesName = [
   "taxes_tous_carburants",
 ]
 ```
+
 2. Dans le fichier souhaité, Appeler la variable dans la bonne catégorie (Ménage, foyer fiscal, individu, etc), comme fait dans cet exemple avec la variable `niveau_de_vie` dans le fichier `WaterfallView.svelte` :
 
 ```js
@@ -110,8 +108,7 @@ getCalculatedVariableNumberValue(
 ) ?? 0}
 ```
 
-3. Ensuite, appeler la variable dans le composant choisi : 
-
+3. Ensuite, appeler la variable dans le composant choisi :
 
 ```js
 {#if niveau_de_vie !== 0}
@@ -143,12 +140,11 @@ getCalculatedVariableNumberValue(
 
 Utiliser le composant `ValueChange` pour afficher le montant.
 
-
 ### Ajouter la valeur d'un paramètre dans l'UI
 
 Exemple ici avec l'ajout du paramètre smic mensuel `marche_travail.salaire_minimum.smic.smic_b_mensuel` dans le `TestCaseSummary.svelte`. L'objectif était d'afficher l'équivalent du revenu du cas type en nombre de smic. Il était donc nécessaire d'importer la dernière valeur du paramètre dans l'UI.
 
-1. Dans le fichier visé, ici `TestCaseSummary.svelte`, ajouter : 
+1. Dans le fichier visé, ici `TestCaseSummary.svelte`, ajouter :
 
 ```js
 $: parameterSmicMensuel = getParameter(
@@ -172,7 +168,7 @@ $: smicValue = smicLatestInstantValueCouple?.[1] as NumberValue
 ## Enfin ici, on lui dit de prendre la valeur, c'est à dire le deuxième élément du tableau. Attention il faut importer NumberValue (import type { NumberValue} from from "@openfisca/json-model")
 ```
 
-2- Il ne faut pas oublier de faire les imports et les déclarations pour que ces fonctions puissent s'effectuer : 
+2- Il ne faut pas oublier de faire les imports et les déclarations pour que ces fonctions puissent s'effectuer :
 
 ```js
   import type {
@@ -192,18 +188,18 @@ $: smicValue = smicLatestInstantValueCouple?.[1] as NumberValue
   let smicInstantValueCouplesArray: [string, ValueAtInstant][]
 
 ```
+
 3- Appeler le paramètre dans le fichier :
 
 ```js
-  <div>
-    {smicValue.value}
-## Ne pas oublier d'ajouter .value, pour cibler la value dans cet objet.
-  </div>  
+<div>
+  {smicValue.value}
+  ## Ne pas oublier d'ajouter .value, pour cibler la value dans cet objet.
+</div>
 ```
 
-
-Pour s'aider, on peut afficher la valeur dans la console : 
+Pour s'aider, on peut afficher la valeur dans la console :
 
 ```js
-  $: console.log(parameterSmicMensuel, smicValue)
-```
\ No newline at end of file
+$: console.log(parameterSmicMensuel, smicValue)
+```
diff --git a/gitlab-ci/src/gitlab-ci.ts b/gitlab-ci/src/gitlab-ci.ts
index 39a1cc9f9df1fdf5d483a62707781fd9b2978027..5948c582ddccb162c03a8416881fa2d913561364 100644
--- a/gitlab-ci/src/gitlab-ci.ts
+++ b/gitlab-ci/src/gitlab-ci.ts
@@ -1,4 +1,5 @@
 import assert from "assert"
+
 import { $, fetch, fs } from "zx"
 
 interface Package {
diff --git a/package-lock.json b/package-lock.json
index 74c70c9e0a62555f6416a6726227014ff160e496..dc4d1cc720675846a011ec3a40c4c0c8ff778bb8 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -42,6 +42,7 @@
         "dotenv": "^16.0.0",
         "eslint": "^8.0.0",
         "eslint-config-prettier": "^9.0.0",
+        "eslint-plugin-import": "^2.29.1",
         "eslint-plugin-svelte": "^2.33.0",
         "fs-extra": "^11.1.0",
         "iconify-icon": "^2.1.0",
@@ -1377,6 +1378,12 @@
       "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
       "dev": true
     },
+    "node_modules/@types/json5": {
+      "version": "0.0.29",
+      "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
+      "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
+      "dev": true
+    },
     "node_modules/@types/jsonfile": {
       "version": "6.1.4",
       "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.4.tgz",
@@ -1787,6 +1794,26 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
+    "node_modules/array-includes": {
+      "version": "3.1.8",
+      "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz",
+      "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "define-properties": "^1.2.1",
+        "es-abstract": "^1.23.2",
+        "es-object-atoms": "^1.0.0",
+        "get-intrinsic": "^1.2.4",
+        "is-string": "^1.0.7"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
     "node_modules/array-union": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
@@ -1796,6 +1823,84 @@
         "node": ">=8"
       }
     },
+    "node_modules/array.prototype.findlastindex": {
+      "version": "1.2.5",
+      "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz",
+      "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "define-properties": "^1.2.1",
+        "es-abstract": "^1.23.2",
+        "es-errors": "^1.3.0",
+        "es-object-atoms": "^1.0.0",
+        "es-shim-unscopables": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/array.prototype.flat": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz",
+      "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.2.0",
+        "es-abstract": "^1.22.1",
+        "es-shim-unscopables": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/array.prototype.flatmap": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz",
+      "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.2.0",
+        "es-abstract": "^1.22.1",
+        "es-shim-unscopables": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/arraybuffer.prototype.slice": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz",
+      "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==",
+      "dev": true,
+      "dependencies": {
+        "array-buffer-byte-length": "^1.0.1",
+        "call-bind": "^1.0.5",
+        "define-properties": "^1.2.1",
+        "es-abstract": "^1.22.3",
+        "es-errors": "^1.2.1",
+        "get-intrinsic": "^1.2.3",
+        "is-array-buffer": "^3.0.4",
+        "is-shared-array-buffer": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
     "node_modules/asynckit": {
       "version": "0.4.0",
       "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
@@ -2492,6 +2597,57 @@
         "node": ">=18"
       }
     },
+    "node_modules/data-view-buffer": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz",
+      "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.6",
+        "es-errors": "^1.3.0",
+        "is-data-view": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/data-view-byte-length": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz",
+      "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "es-errors": "^1.3.0",
+        "is-data-view": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/data-view-byte-offset": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz",
+      "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.6",
+        "es-errors": "^1.3.0",
+        "is-data-view": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
     "node_modules/debug": {
       "version": "4.3.4",
       "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
@@ -2728,6 +2884,84 @@
         "url": "https://github.com/fb55/entities?sponsor=1"
       }
     },
+    "node_modules/es-abstract": {
+      "version": "1.23.3",
+      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz",
+      "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==",
+      "dev": true,
+      "dependencies": {
+        "array-buffer-byte-length": "^1.0.1",
+        "arraybuffer.prototype.slice": "^1.0.3",
+        "available-typed-arrays": "^1.0.7",
+        "call-bind": "^1.0.7",
+        "data-view-buffer": "^1.0.1",
+        "data-view-byte-length": "^1.0.1",
+        "data-view-byte-offset": "^1.0.0",
+        "es-define-property": "^1.0.0",
+        "es-errors": "^1.3.0",
+        "es-object-atoms": "^1.0.0",
+        "es-set-tostringtag": "^2.0.3",
+        "es-to-primitive": "^1.2.1",
+        "function.prototype.name": "^1.1.6",
+        "get-intrinsic": "^1.2.4",
+        "get-symbol-description": "^1.0.2",
+        "globalthis": "^1.0.3",
+        "gopd": "^1.0.1",
+        "has-property-descriptors": "^1.0.2",
+        "has-proto": "^1.0.3",
+        "has-symbols": "^1.0.3",
+        "hasown": "^2.0.2",
+        "internal-slot": "^1.0.7",
+        "is-array-buffer": "^3.0.4",
+        "is-callable": "^1.2.7",
+        "is-data-view": "^1.0.1",
+        "is-negative-zero": "^2.0.3",
+        "is-regex": "^1.1.4",
+        "is-shared-array-buffer": "^1.0.3",
+        "is-string": "^1.0.7",
+        "is-typed-array": "^1.1.13",
+        "is-weakref": "^1.0.2",
+        "object-inspect": "^1.13.1",
+        "object-keys": "^1.1.1",
+        "object.assign": "^4.1.5",
+        "regexp.prototype.flags": "^1.5.2",
+        "safe-array-concat": "^1.1.2",
+        "safe-regex-test": "^1.0.3",
+        "string.prototype.trim": "^1.2.9",
+        "string.prototype.trimend": "^1.0.8",
+        "string.prototype.trimstart": "^1.0.8",
+        "typed-array-buffer": "^1.0.2",
+        "typed-array-byte-length": "^1.0.1",
+        "typed-array-byte-offset": "^1.0.2",
+        "typed-array-length": "^1.0.6",
+        "unbox-primitive": "^1.0.2",
+        "which-typed-array": "^1.1.15"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/es-abstract/node_modules/regexp.prototype.flags": {
+      "version": "1.5.2",
+      "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz",
+      "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.6",
+        "define-properties": "^1.2.1",
+        "es-errors": "^1.3.0",
+        "set-function-name": "^2.0.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
     "node_modules/es-define-property": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
@@ -2769,6 +3003,58 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
+    "node_modules/es-object-atoms": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz",
+      "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==",
+      "dev": true,
+      "dependencies": {
+        "es-errors": "^1.3.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/es-set-tostringtag": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz",
+      "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==",
+      "dev": true,
+      "dependencies": {
+        "get-intrinsic": "^1.2.4",
+        "has-tostringtag": "^1.0.2",
+        "hasown": "^2.0.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/es-shim-unscopables": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz",
+      "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==",
+      "dev": true,
+      "dependencies": {
+        "hasown": "^2.0.0"
+      }
+    },
+    "node_modules/es-to-primitive": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+      "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+      "dev": true,
+      "dependencies": {
+        "is-callable": "^1.1.4",
+        "is-date-object": "^1.0.1",
+        "is-symbol": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
     "node_modules/es6-promise": {
       "version": "3.3.1",
       "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz",
@@ -2913,6 +3199,135 @@
         "eslint": ">=7.0.0"
       }
     },
+    "node_modules/eslint-import-resolver-node": {
+      "version": "0.3.9",
+      "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz",
+      "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==",
+      "dev": true,
+      "dependencies": {
+        "debug": "^3.2.7",
+        "is-core-module": "^2.13.0",
+        "resolve": "^1.22.4"
+      }
+    },
+    "node_modules/eslint-import-resolver-node/node_modules/debug": {
+      "version": "3.2.7",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+      "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+      "dev": true,
+      "dependencies": {
+        "ms": "^2.1.1"
+      }
+    },
+    "node_modules/eslint-module-utils": {
+      "version": "2.8.1",
+      "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz",
+      "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==",
+      "dev": true,
+      "dependencies": {
+        "debug": "^3.2.7"
+      },
+      "engines": {
+        "node": ">=4"
+      },
+      "peerDependenciesMeta": {
+        "eslint": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/eslint-module-utils/node_modules/debug": {
+      "version": "3.2.7",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+      "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+      "dev": true,
+      "dependencies": {
+        "ms": "^2.1.1"
+      }
+    },
+    "node_modules/eslint-plugin-import": {
+      "version": "2.29.1",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz",
+      "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==",
+      "dev": true,
+      "dependencies": {
+        "array-includes": "^3.1.7",
+        "array.prototype.findlastindex": "^1.2.3",
+        "array.prototype.flat": "^1.3.2",
+        "array.prototype.flatmap": "^1.3.2",
+        "debug": "^3.2.7",
+        "doctrine": "^2.1.0",
+        "eslint-import-resolver-node": "^0.3.9",
+        "eslint-module-utils": "^2.8.0",
+        "hasown": "^2.0.0",
+        "is-core-module": "^2.13.1",
+        "is-glob": "^4.0.3",
+        "minimatch": "^3.1.2",
+        "object.fromentries": "^2.0.7",
+        "object.groupby": "^1.0.1",
+        "object.values": "^1.1.7",
+        "semver": "^6.3.1",
+        "tsconfig-paths": "^3.15.0"
+      },
+      "engines": {
+        "node": ">=4"
+      },
+      "peerDependencies": {
+        "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8"
+      }
+    },
+    "node_modules/eslint-plugin-import/node_modules/brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "dev": true,
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "node_modules/eslint-plugin-import/node_modules/debug": {
+      "version": "3.2.7",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+      "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+      "dev": true,
+      "dependencies": {
+        "ms": "^2.1.1"
+      }
+    },
+    "node_modules/eslint-plugin-import/node_modules/doctrine": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+      "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+      "dev": true,
+      "dependencies": {
+        "esutils": "^2.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/eslint-plugin-import/node_modules/minimatch": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+      "dev": true,
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/eslint-plugin-import/node_modules/semver": {
+      "version": "6.3.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+      "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+      "dev": true,
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
     "node_modules/eslint-plugin-svelte": {
       "version": "2.35.1",
       "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-2.35.1.tgz",
@@ -3394,6 +3809,24 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
+    "node_modules/function.prototype.name": {
+      "version": "1.1.6",
+      "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz",
+      "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.2.0",
+        "es-abstract": "^1.22.1",
+        "functions-have-names": "^1.2.3"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
     "node_modules/functions-have-names": {
       "version": "1.2.3",
       "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
@@ -3431,6 +3864,23 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
+    "node_modules/get-symbol-description": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz",
+      "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.5",
+        "es-errors": "^1.3.0",
+        "get-intrinsic": "^1.2.4"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
     "node_modules/get-tsconfig": {
       "version": "4.7.3",
       "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.3.tgz",
@@ -3501,6 +3951,22 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
+    "node_modules/globalthis": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
+      "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==",
+      "dev": true,
+      "dependencies": {
+        "define-properties": "^1.2.1",
+        "gopd": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
     "node_modules/globalyzer": {
       "version": "0.1.0",
       "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz",
@@ -3929,6 +4395,21 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
+    "node_modules/is-data-view": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz",
+      "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==",
+      "dev": true,
+      "dependencies": {
+        "is-typed-array": "^1.1.13"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
     "node_modules/is-date-object": {
       "version": "1.0.5",
       "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
@@ -3992,6 +4473,18 @@
       "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==",
       "dev": true
     },
+    "node_modules/is-negative-zero": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz",
+      "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
     "node_modules/is-number": {
       "version": "7.0.0",
       "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
@@ -4113,6 +4606,21 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
+    "node_modules/is-typed-array": {
+      "version": "1.1.13",
+      "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz",
+      "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==",
+      "dev": true,
+      "dependencies": {
+        "which-typed-array": "^1.1.14"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
     "node_modules/is-weakmap": {
       "version": "2.0.2",
       "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz",
@@ -4125,6 +4633,18 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
+    "node_modules/is-weakref": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
+      "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
     "node_modules/is-weakset": {
       "version": "2.0.3",
       "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz",
@@ -4259,6 +4779,18 @@
       "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
       "dev": true
     },
+    "node_modules/json5": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
+      "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
+      "dev": true,
+      "dependencies": {
+        "minimist": "^1.2.0"
+      },
+      "bin": {
+        "json5": "lib/cli.js"
+      }
+    },
     "node_modules/jsonfile": {
       "version": "6.1.0",
       "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
@@ -4786,6 +5318,55 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
+    "node_modules/object.fromentries": {
+      "version": "2.0.8",
+      "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz",
+      "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "define-properties": "^1.2.1",
+        "es-abstract": "^1.23.2",
+        "es-object-atoms": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/object.groupby": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz",
+      "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "define-properties": "^1.2.1",
+        "es-abstract": "^1.23.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/object.values": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz",
+      "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "define-properties": "^1.2.1",
+        "es-object-atoms": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
     "node_modules/oidc-token-hash": {
       "version": "5.0.3",
       "resolved": "https://registry.npmjs.org/oidc-token-hash/-/oidc-token-hash-5.0.3.tgz",
@@ -5671,6 +6252,24 @@
         "node": ">=6"
       }
     },
+    "node_modules/safe-array-concat": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz",
+      "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "get-intrinsic": "^1.2.4",
+        "has-symbols": "^1.0.3",
+        "isarray": "^2.0.5"
+      },
+      "engines": {
+        "node": ">=0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
     "node_modules/safe-buffer": {
       "version": "5.2.1",
       "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
@@ -5691,6 +6290,23 @@
         }
       ]
     },
+    "node_modules/safe-regex-test": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz",
+      "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.6",
+        "es-errors": "^1.3.0",
+        "is-regex": "^1.1.4"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
     "node_modules/safer-buffer": {
       "version": "2.1.2",
       "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
@@ -5831,6 +6447,21 @@
         "node": ">= 0.4"
       }
     },
+    "node_modules/set-function-name": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz",
+      "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==",
+      "dev": true,
+      "dependencies": {
+        "define-data-property": "^1.1.4",
+        "es-errors": "^1.3.0",
+        "functions-have-names": "^1.2.3",
+        "has-property-descriptors": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
     "node_modules/shebang-command": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
@@ -6048,6 +6679,55 @@
         "url": "https://github.com/chalk/strip-ansi?sponsor=1"
       }
     },
+    "node_modules/string.prototype.trim": {
+      "version": "1.2.9",
+      "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz",
+      "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "define-properties": "^1.2.1",
+        "es-abstract": "^1.23.0",
+        "es-object-atoms": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/string.prototype.trimend": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz",
+      "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "define-properties": "^1.2.1",
+        "es-object-atoms": "^1.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/string.prototype.trimstart": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz",
+      "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "define-properties": "^1.2.1",
+        "es-object-atoms": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
     "node_modules/strip-ansi": {
       "version": "6.0.1",
       "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
@@ -6073,6 +6753,15 @@
         "node": ">=8"
       }
     },
+    "node_modules/strip-bom": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+      "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
     "node_modules/strip-indent": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
@@ -6635,6 +7324,18 @@
       "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",
       "dev": true
     },
+    "node_modules/tsconfig-paths": {
+      "version": "3.15.0",
+      "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz",
+      "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==",
+      "dev": true,
+      "dependencies": {
+        "@types/json5": "^0.0.29",
+        "json5": "^1.0.2",
+        "minimist": "^1.2.6",
+        "strip-bom": "^3.0.0"
+      }
+    },
     "node_modules/tslib": {
       "version": "2.6.2",
       "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
@@ -6698,6 +7399,79 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
+    "node_modules/typed-array-buffer": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz",
+      "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "es-errors": "^1.3.0",
+        "is-typed-array": "^1.1.13"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/typed-array-byte-length": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz",
+      "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "for-each": "^0.3.3",
+        "gopd": "^1.0.1",
+        "has-proto": "^1.0.3",
+        "is-typed-array": "^1.1.13"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/typed-array-byte-offset": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz",
+      "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==",
+      "dev": true,
+      "dependencies": {
+        "available-typed-arrays": "^1.0.7",
+        "call-bind": "^1.0.7",
+        "for-each": "^0.3.3",
+        "gopd": "^1.0.1",
+        "has-proto": "^1.0.3",
+        "is-typed-array": "^1.1.13"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/typed-array-length": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz",
+      "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "for-each": "^0.3.3",
+        "gopd": "^1.0.1",
+        "has-proto": "^1.0.3",
+        "is-typed-array": "^1.1.13",
+        "possible-typed-array-names": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
     "node_modules/typescript": {
       "version": "5.4.2",
       "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.2.tgz",
@@ -6711,6 +7485,21 @@
         "node": ">=14.17"
       }
     },
+    "node_modules/unbox-primitive": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
+      "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "has-bigints": "^1.0.2",
+        "has-symbols": "^1.0.3",
+        "which-boxed-primitive": "^1.0.2"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
     "node_modules/undici-types": {
       "version": "5.26.5",
       "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
diff --git a/package.json b/package.json
index 0ca9c41b977ec9daf902d00bfbad50f36c0638d3..232c55ff7f5cbbb1ba6d1649185835a43c9e2d7a 100644
--- a/package.json
+++ b/package.json
@@ -8,7 +8,7 @@
     "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
     "dev": "vite dev",
     "format": "prettier --plugin prettier-plugin-svelte --write .",
-    "lint": "prettier --check --plugin prettier-plugin-svelte . && eslint --ignore-path .gitignore .",
+    "lint": "prettier --check --plugin prettier-plugin-svelte . && eslint --ignore-path .gitignore . --fix",
     "preview": "vite preview",
     "test": "playwright test"
   },
@@ -47,6 +47,7 @@
     "dotenv": "^16.0.0",
     "eslint": "^8.0.0",
     "eslint-config-prettier": "^9.0.0",
+    "eslint-plugin-import": "^2.29.1",
     "eslint-plugin-svelte": "^2.33.0",
     "fs-extra": "^11.1.0",
     "iconify-icon": "^2.1.0",
diff --git a/plugin-yaml-patched.ts b/plugin-yaml-patched.ts
index 97d13837b4d8f0045baa6a9f73c66d5d0aa4b32d..159717732d5f02fe71483e0319e843cfac0cf983 100644
--- a/plugin-yaml-patched.ts
+++ b/plugin-yaml-patched.ts
@@ -1,12 +1,12 @@
 /// Code taken from https://github.com/rollup/plugins/blob/master/packages/yaml/src/index.js
 
-import YAML, { type LoadOptions } from "js-yaml"
-import toSource from "tosource"
 import {
   createFilter,
   makeLegalIdentifier,
   type FilterPattern,
 } from "@rollup/pluginutils"
+import YAML, { type LoadOptions } from "js-yaml"
+import toSource from "tosource"
 import type { PluginOption } from "vite"
 
 interface Options extends LoadOptions {
diff --git a/src/hooks.server.ts b/src/hooks.server.ts
index 40e1a1fe6bf6d9287269a95897971c12a1cabc0c..66bdc63917bd1241f9f72821a12484c11292b800 100644
--- a/src/hooks.server.ts
+++ b/src/hooks.server.ts
@@ -1,8 +1,8 @@
 import type { Handle } from "@sveltejs/kit"
 import { sequence } from "@sveltejs/kit/hooks"
 
-import { openIdConnectHandler } from "$lib/server/openid_connect_handler"
 import { csrfHandler } from "$lib/server/csrf_handler"
+import { openIdConnectHandler } from "$lib/server/openid_connect_handler"
 import { userHandler } from "$lib/server/user_handler"
 
 export const handle: Handle = sequence(
diff --git a/src/lib/components/AllocationsFamilialesBudgetView.svelte b/src/lib/components/AllocationsFamilialesBudgetView.svelte
index 93a8f67bdd9acab9f0b7fbc0b5cf8b43eb72706f..94793a9575ebbee192cec62ed1ce35ccb64805ed 100644
--- a/src/lib/components/AllocationsFamilialesBudgetView.svelte
+++ b/src/lib/components/AllocationsFamilialesBudgetView.svelte
@@ -9,13 +9,13 @@
   } from "$lib/budgets"
   import AxisY from "$lib/components/layercake/AxisY.svelte"
   import Column from "$lib/components/layercake/Column.svelte"
-  import type { DisplayMode } from "$lib/displays"
-  import { newSimulationUrl } from "$lib/urls"
-  import PictoBudgetEtatIr from "$lib/components/pictos/PictoBudgetEtatIr.svelte"
   import PictoBudgetDecileIr from "$lib/components/pictos/PictoBudgetDecileIr.svelte"
   import PictoBudgetDecileIrFoyer from "$lib/components/pictos/PictoBudgetDecileIrFoyer.svelte"
+  import PictoBudgetEtatIr from "$lib/components/pictos/PictoBudgetEtatIr.svelte"
   import Tooltip from "$lib/components/Tooltip.svelte"
   import ValueChange from "$lib/components/ValueChange.svelte"
+  import type { DisplayMode } from "$lib/displays"
+  import { newSimulationUrl } from "$lib/urls"
   import { removeNegativeZero } from "$lib/values"
 
   export let budgetSimulation: BudgetSimulation
diff --git a/src/lib/components/AllocationsFamilialesGagnantsPerdantsView.svelte b/src/lib/components/AllocationsFamilialesGagnantsPerdantsView.svelte
index e18c2b8ab3d0614c69530d655a15f2bef1cf64fa..68b31ce5c6350e90d17b8760b66566eca935e05d 100644
--- a/src/lib/components/AllocationsFamilialesGagnantsPerdantsView.svelte
+++ b/src/lib/components/AllocationsFamilialesGagnantsPerdantsView.svelte
@@ -1,6 +1,5 @@
 <script lang="ts">
   import type { BudgetSimulation } from "$lib/budgets"
-
   import PictoBudgetGagnantsPerdants from "$lib/components/pictos/PictoBudgetGagnantsPerdants.svelte"
   import Tooltip from "$lib/components/Tooltip.svelte"
   import ValueChange from "$lib/components/ValueChange.svelte"
diff --git a/src/lib/components/CsgBudgetView.svelte b/src/lib/components/CsgBudgetView.svelte
index da8dde3fb75853020e4b2e83771bcea7367d861f..5bf18e795fd28c1f36fa8edbdf0a4cd023afc0a5 100644
--- a/src/lib/components/CsgBudgetView.svelte
+++ b/src/lib/components/CsgBudgetView.svelte
@@ -9,9 +9,9 @@
   } from "$lib/budgets"
   import AxisY from "$lib/components/layercake/AxisY.svelte"
   import Column from "$lib/components/layercake/Column.svelte"
-  import PictoBudgetEtatIr from "$lib/components/pictos/PictoBudgetEtatIr.svelte"
   import PictoBudgetDecileIr from "$lib/components/pictos/PictoBudgetDecileIr.svelte"
   import PictoBudgetDecileIrFoyer from "$lib/components/pictos/PictoBudgetDecileIrFoyer.svelte"
+  import PictoBudgetEtatIr from "$lib/components/pictos/PictoBudgetEtatIr.svelte"
   import Tooltip from "$lib/components/Tooltip.svelte"
   import ValueChange from "$lib/components/ValueChange.svelte"
   import { removeNegativeZero } from "$lib/values"
diff --git a/src/lib/components/CsgGagnantsPerdantsView.svelte b/src/lib/components/CsgGagnantsPerdantsView.svelte
index 36e7879acc53432147745c91a82f48140a62b388..906a8d421be449ef9010e45710e5ea558f7557a5 100644
--- a/src/lib/components/CsgGagnantsPerdantsView.svelte
+++ b/src/lib/components/CsgGagnantsPerdantsView.svelte
@@ -1,6 +1,5 @@
 <script lang="ts">
   import type { BudgetSimulation } from "$lib/budgets"
-
   import PictoBudgetGagnantsPerdants from "$lib/components/pictos/PictoBudgetGagnantsPerdants.svelte"
   import Tooltip from "$lib/components/Tooltip.svelte"
   import ValueChange from "$lib/components/ValueChange.svelte"
diff --git a/src/lib/components/IntroWarningBillModal.svelte b/src/lib/components/IntroWarningBillModal.svelte
index ee52d3ddede809395bdc81ff1e3dfb7c8565798e..8d1bf906a57a2016981c7a8f3909767040476843 100644
--- a/src/lib/components/IntroWarningBillModal.svelte
+++ b/src/lib/components/IntroWarningBillModal.svelte
@@ -7,8 +7,6 @@
     TransitionChild,
   } from "@rgossiaux/svelte-headlessui"
 
-  import { browser } from "$app/environment"
-
   export let isOpen = false
 
   function onClose() {
diff --git a/src/lib/components/IrBudgetView.svelte b/src/lib/components/IrBudgetView.svelte
index 97e90e084f4d8014c0f970ed9ee9b1721897f780..feb7ef8e2bb91d04d95c57318cefa5c97dfc7bae 100644
--- a/src/lib/components/IrBudgetView.svelte
+++ b/src/lib/components/IrBudgetView.svelte
@@ -9,9 +9,9 @@
   } from "$lib/budgets"
   import AxisY from "$lib/components/layercake/AxisY.svelte"
   import Column from "$lib/components/layercake/Column.svelte"
-  import PictoBudgetEtatIr from "$lib/components/pictos/PictoBudgetEtatIr.svelte"
   import PictoBudgetDecileIr from "$lib/components/pictos/PictoBudgetDecileIr.svelte"
   import PictoBudgetDecileIrFoyer from "$lib/components/pictos/PictoBudgetDecileIrFoyer.svelte"
+  import PictoBudgetEtatIr from "$lib/components/pictos/PictoBudgetEtatIr.svelte"
   import Tooltip from "$lib/components/Tooltip.svelte"
   import ValueChange from "$lib/components/ValueChange.svelte"
   import { removeNegativeZero } from "$lib/values"
diff --git a/src/lib/components/IrGagnantsPerdantsView.svelte b/src/lib/components/IrGagnantsPerdantsView.svelte
index 707eb8ad7da97659266a5845cba82526b6bcecf1..e4e90fb3fa5027350f9fd7129c2749e34d2ba176 100644
--- a/src/lib/components/IrGagnantsPerdantsView.svelte
+++ b/src/lib/components/IrGagnantsPerdantsView.svelte
@@ -1,6 +1,5 @@
 <script lang="ts">
   import type { BudgetSimulation } from "$lib/budgets"
-
   import PictoBudgetGagnantsPerdants from "$lib/components/pictos/PictoBudgetGagnantsPerdants.svelte"
   import Tooltip from "$lib/components/Tooltip.svelte"
   import ValueChange from "$lib/components/ValueChange.svelte"
diff --git a/src/lib/components/WaterfallView.svelte b/src/lib/components/WaterfallView.svelte
index 2d5afe991e06d61b95d7e226cd89ce361b622ffa..a5afbb9f03bb407f0e3f4bd1cc3660de9b8c9fef 100644
--- a/src/lib/components/WaterfallView.svelte
+++ b/src/lib/components/WaterfallView.svelte
@@ -5,6 +5,7 @@
 
   import { goto } from "$app/navigation"
   import { page } from "$app/stores"
+  import TestCaseGraph from "$lib/components/test_cases/TestCaseGraph.svelte"
   import Tooltip from "$lib/components/Tooltip.svelte"
   import ValueChange from "$lib/components/ValueChange.svelte"
   import type {
@@ -25,10 +26,10 @@
   } from "$lib/situations"
   import { newSimulationUrl } from "$lib/urls"
   import { removeNegativeZero } from "$lib/values"
-
-  import type { ValuesByCalculationNameByVariableName } from "$lib/variables"
-  import type { VariableValue } from "$lib/variables"
-  import TestCaseGraph from "$lib/components/test_cases/TestCaseGraph.svelte"
+  import type {
+    ValuesByCalculationNameByVariableName,
+    VariableValue,
+  } from "$lib/variables"
 
   export let decompositionByName: DecompositionByName
   export let displayMode: DisplayMode
diff --git a/src/lib/components/test_cases/TestCaseEdit.svelte b/src/lib/components/test_cases/TestCaseEdit.svelte
index 815077561148c8fcd7a364f6645f40f4bd53642d..8945bf1d939c4fcb89e1ab47c30de8e7e6fd26e5 100644
--- a/src/lib/components/test_cases/TestCaseEdit.svelte
+++ b/src/lib/components/test_cases/TestCaseEdit.svelte
@@ -16,8 +16,8 @@
   import { page } from "$app/stores"
   import type { RequestedCalculations } from "$lib/calculations"
   import { requestAllTestCasesCalculations } from "$lib/calculations"
-  import PictoBigParent from "$lib/components/pictos/PictoBigParent.svelte"
   import PictoBigEnfant from "$lib/components/pictos/PictoBigEnfant.svelte"
+  import PictoBigParent from "$lib/components/pictos/PictoBigParent.svelte"
   import RolePersonsEdit from "$lib/components/test_cases/RolePersonsEdit.svelte"
   import VariableInput from "$lib/components/variables/VariableInput.svelte"
   import { decompositionCoreByName } from "$lib/decompositions"
diff --git a/src/lib/components/test_cases/TestCaseGraph.svelte b/src/lib/components/test_cases/TestCaseGraph.svelte
index 8a7c1125308607ad5687f4d925bca28247ac6a65..26c549183270af887d5ffed4f17d0eda2a030a43 100644
--- a/src/lib/components/test_cases/TestCaseGraph.svelte
+++ b/src/lib/components/test_cases/TestCaseGraph.svelte
@@ -15,13 +15,6 @@
 
   import { page } from "$app/stores"
   import type { CalculationName } from "$lib/calculations"
-  import Area from "$lib/components/piece_of_cake/Area.svelte"
-  import AxisX from "$lib/components/piece_of_cake/AxisX.svelte"
-  import AxisY from "$lib/components/piece_of_cake/AxisY.svelte"
-  import DragSelect from "$lib/components/piece_of_cake/DragSelect.svelte"
-  import Html from "$lib/components/piece_of_cake/Html.svelte"
-  import { CurveModel } from "$lib/components/piece_of_cake/model"
-  import MultiLine from "$lib/components/piece_of_cake/MultiLine.svelte"
   import PersistentPopover from "$lib/components/PersistentPopover.svelte"
   import PictoBigAdulteRetraite from "$lib/components/pictos/PictoBigAdulteRetraite.svelte"
   import PictoBigEnfant from "$lib/components/pictos/PictoBigEnfant.svelte"
@@ -29,6 +22,13 @@
   import PictoBigPersonneACharge from "$lib/components/pictos/PictoBigPersonneACharge.svelte"
   import PictoGardeAlternee from "$lib/components/pictos/PictoGardeAlternee.svelte"
   import PictoHandicap from "$lib/components/pictos/PictoHandicap.svelte"
+  import Area from "$lib/components/piece_of_cake/Area.svelte"
+  import AxisX from "$lib/components/piece_of_cake/AxisX.svelte"
+  import AxisY from "$lib/components/piece_of_cake/AxisY.svelte"
+  import DragSelect from "$lib/components/piece_of_cake/DragSelect.svelte"
+  import Html from "$lib/components/piece_of_cake/Html.svelte"
+  import { CurveModel } from "$lib/components/piece_of_cake/model"
+  import MultiLine from "$lib/components/piece_of_cake/MultiLine.svelte"
   import PieceOfCake from "$lib/components/piece_of_cake/PieceOfCake.svelte"
   import SharedTooltip from "$lib/components/piece_of_cake/SharedTooltip.svelte"
   import Svg from "$lib/components/piece_of_cake/Svg.svelte"
diff --git a/src/lib/components/test_cases/TestCaseRelatedCarousel.svelte b/src/lib/components/test_cases/TestCaseRelatedCarousel.svelte
index d9455eeee43aa618fee7141b3880677560d821c4..c8a9de61be49f8f04cf3a5af3f9a139e62c69d56 100644
--- a/src/lib/components/test_cases/TestCaseRelatedCarousel.svelte
+++ b/src/lib/components/test_cases/TestCaseRelatedCarousel.svelte
@@ -1,18 +1,18 @@
 <script lang="ts">
+  import { createEventDispatcher, getContext } from "svelte"
+  import type { Writable } from "svelte/store"
+
   import TestCasesStackRepresentation from "$lib/components/test_cases/TestCasesStackRepresentation.svelte"
   import TestCaseSummary from "$lib/components/test_cases/TestCaseSummary.svelte"
   import VariableValueChange from "$lib/components/variables/VariableValueChange.svelte"
-
+  import type { EvaluationByName } from "$lib/decompositions"
   import type { DisplayMode } from "$lib/displays"
-  import { createEventDispatcher, getContext } from "svelte"
-  import type { Writable } from "svelte/store"
   import type { Situation } from "$lib/situations"
   import {
     variableSummaryByName,
     type ValuesByCalculationNameByVariableName,
     variableSummaryByNameByReformName,
   } from "$lib/variables"
-  import type { EvaluationByName } from "$lib/decompositions"
 
   export let displayMode: DisplayMode
   export let year: number
diff --git a/src/lib/components/test_cases/TestCaseSelectModal.svelte b/src/lib/components/test_cases/TestCaseSelectModal.svelte
index 495d7fd582bab80fcd41465df908bd4287f6e197..47d24fd16328d695ec6c4c40359e43f572d6cd2a 100644
--- a/src/lib/components/test_cases/TestCaseSelectModal.svelte
+++ b/src/lib/components/test_cases/TestCaseSelectModal.svelte
@@ -1,6 +1,4 @@
 <script lang="ts">
-  import VariableValueChange from "$lib/components/variables/VariableValueChange.svelte"
-  import TestCaseSummary from "$lib/components/test_cases/TestCaseSummary.svelte"
   import {
     Dialog,
     DialogDescription,
@@ -13,6 +11,9 @@
   import type { Writable } from "svelte/store"
 
   import { goto } from "$app/navigation"
+  import TestCaseSummary from "$lib/components/test_cases/TestCaseSummary.svelte"
+  import VariableValueChange from "$lib/components/variables/VariableValueChange.svelte"
+  import type { EvaluationByName } from "$lib/decompositions"
   import type { DisplayMode } from "$lib/displays"
   import type { Situation } from "$lib/situations"
   import { newSimulationUrl } from "$lib/urls"
@@ -21,7 +22,6 @@
     type ValuesByCalculationNameByVariableName,
     variableSummaryByNameByReformName,
   } from "$lib/variables"
-  import type { EvaluationByName } from "$lib/decompositions"
 
   export let displayMode: DisplayMode
   export let isOpen = false
diff --git a/src/lib/components/test_cases/TestCaseSummary.svelte b/src/lib/components/test_cases/TestCaseSummary.svelte
index 07e3a3456ee24010601180739bb9fc98b11478b4..29561d3adaf5f178cb721232eab487f9c3d32fff 100644
--- a/src/lib/components/test_cases/TestCaseSummary.svelte
+++ b/src/lib/components/test_cases/TestCaseSummary.svelte
@@ -5,8 +5,7 @@
     ValueParameter,
   } from "@openfisca/json-model"
   import deepEqual from "deep-equal"
-  import { createEventDispatcher } from "svelte"
-  import { getContext } from "svelte"
+  import { createEventDispatcher, getContext } from "svelte"
   import type { Writable } from "svelte/store"
 
   import { page } from "$app/stores"
diff --git a/src/lib/components/test_cases/TestCasesStackRepresentation.svelte b/src/lib/components/test_cases/TestCasesStackRepresentation.svelte
index f46c8a6e2af28af85a4a301532a64a92b5b594d1..ca08ee1fac9ca29584805d989ce23ae547440772 100644
--- a/src/lib/components/test_cases/TestCasesStackRepresentation.svelte
+++ b/src/lib/components/test_cases/TestCasesStackRepresentation.svelte
@@ -1,6 +1,6 @@
 <script>
-  import PictoBigParent from "$lib/components/pictos/PictoBigParent.svelte"
   import PictoBigEnfant from "$lib/components/pictos/PictoBigEnfant.svelte"
+  import PictoBigParent from "$lib/components/pictos/PictoBigParent.svelte"
 </script>
 
 <div class="flex flex-col items-center">
diff --git a/src/lib/components/variables/InflationLawDetails.svelte b/src/lib/components/variables/InflationLawDetails.svelte
index 5e2fa14b153013bf1aa55be6adabd259d8cb4da0..00f45e74c250a33c5a4bba1b8632224ced39be06 100644
--- a/src/lib/components/variables/InflationLawDetails.svelte
+++ b/src/lib/components/variables/InflationLawDetails.svelte
@@ -1,11 +1,11 @@
 <script lang="ts">
-  import IntroWarningBillModal from "$lib/components/IntroWarningBillModal.svelte"
   import {
     ParameterClass,
     type ScaleParameter,
     type ValueParameter,
   } from "@openfisca/json-model"
 
+  import IntroWarningBillModal from "$lib/components/IntroWarningBillModal.svelte"
   import { getUnitAtDate } from "$lib/units"
   import { formatValue, removeNegativeZero } from "$lib/values"
 
diff --git a/src/lib/components/variables/InflationLawInfoModal.svelte b/src/lib/components/variables/InflationLawInfoModal.svelte
index a6a6760eb99fbd66d150982c08d2d82080c3f6d0..91fa80e1616a42bf5649f5494a92e9a9402a03f5 100644
--- a/src/lib/components/variables/InflationLawInfoModal.svelte
+++ b/src/lib/components/variables/InflationLawInfoModal.svelte
@@ -9,8 +9,8 @@
     TransitionChild,
   } from "@rgossiaux/svelte-headlessui"
 
-  import InflationLawDetails from "$lib/components/variables/InflationLawDetails.svelte"
   import ArticleModal from "$lib/components/parameters/ArticleModal.svelte"
+  import InflationLawDetails from "$lib/components/variables/InflationLawDetails.svelte"
 
   export let isOpen = false
   export let billParameter: ScaleParameter | ValueParameter
diff --git a/src/lib/components/variables/NonVariableReferredParameter.svelte b/src/lib/components/variables/NonVariableReferredParameter.svelte
index e6d97208269d220d80d4dda6d96fe64a5dbe4566..775e4a4df57316f50469ef9459b154a4f5544c24 100644
--- a/src/lib/components/variables/NonVariableReferredParameter.svelte
+++ b/src/lib/components/variables/NonVariableReferredParameter.svelte
@@ -3,6 +3,11 @@
   import { getContext } from "svelte"
   import type { Writable } from "svelte/store"
 
+  import VariableReferredNodeParameter from "./VariableReferredNodeParameter.svelte"
+  import VariableReferredScaleParameter from "./VariableReferredScaleParameter.svelte"
+  import VariableReferredValueParameter from "./VariableReferredValueParameter.svelte"
+
+  import type { DisplayMode } from "$lib/displays"
   import {
     asNodeParameter,
     asScaleParameter,
@@ -11,11 +16,6 @@
     rootParameter,
     rootParameterByReformName,
   } from "$lib/parameters"
-  import type { DisplayMode } from "$lib/displays"
-
-  import VariableReferredNodeParameter from "./VariableReferredNodeParameter.svelte"
-  import VariableReferredScaleParameter from "./VariableReferredScaleParameter.svelte"
-  import VariableReferredValueParameter from "./VariableReferredValueParameter.svelte"
 
   export let budget: boolean | undefined
   export let date: string
diff --git a/src/lib/components/variables/VariableHeader.svelte b/src/lib/components/variables/VariableHeader.svelte
index 8019abf32b5fd7bd4f200bd8244c4d6f6b2e725a..8e40c805358f5a9cf9875c279e9897702fc5164a 100644
--- a/src/lib/components/variables/VariableHeader.svelte
+++ b/src/lib/components/variables/VariableHeader.svelte
@@ -2,10 +2,10 @@
   import type { Variable } from "@openfisca/json-model"
   import { getVariableLatestFormulaDate } from "@openfisca/json-model"
 
+  import Tooltip from "$lib/components/Tooltip.svelte"
   import type { Decomposition } from "$lib/decompositions"
   import type { DisplayMode } from "$lib/displays"
   import { newSimulationUrl } from "$lib/urls"
-  import Tooltip from "$lib/components/Tooltip.svelte"
 
   export let decomposition: Decomposition | undefined
   export let displayMode: DisplayMode
diff --git a/src/lib/components/variables/VariableReferredInputs.svelte b/src/lib/components/variables/VariableReferredInputs.svelte
index 0055642f2528bb49443328e8cd402b0a537ef9db..c634887d83522ce649d3dc7b6ba9ea5cad4a0308 100644
--- a/src/lib/components/variables/VariableReferredInputs.svelte
+++ b/src/lib/components/variables/VariableReferredInputs.svelte
@@ -2,11 +2,11 @@
   import type { Variable } from "@openfisca/json-model"
   import { getVariableFormula } from "@openfisca/json-model"
 
+  import VariableInput from "./VariableInput.svelte"
+
   import type { Situation } from "$lib/situations"
   import type { ValuesByCalculationNameByVariableName } from "$lib/variables"
 
-  import VariableInput from "./VariableInput.svelte"
-
   export let date: string
   export let inputInstantsByVariableName: {
     [name: string]: Set<string>
diff --git a/src/lib/components/variables/VariableReferredInputsPane.svelte b/src/lib/components/variables/VariableReferredInputsPane.svelte
index c842dc54f51bf572e018cc0cd44aa72d7a307ea3..f59ca8518a196c4d272018c8321817a3ed623de0 100644
--- a/src/lib/components/variables/VariableReferredInputsPane.svelte
+++ b/src/lib/components/variables/VariableReferredInputsPane.svelte
@@ -3,6 +3,8 @@
   import { createEventDispatcher, getContext } from "svelte"
   import type { Writable } from "svelte/store"
 
+  import VariableReferredInputs from "./VariableReferredInputs.svelte"
+
   import {
     decompositionCoreByName,
     walkDecompositionsCoreName,
@@ -14,8 +16,6 @@
     variableSummaryByName,
   } from "$lib/variables"
 
-  import VariableReferredInputs from "./VariableReferredInputs.svelte"
-
   export let date: string
   export let inputInstantsByVariableName: {
     [name: string]: Set<string>
diff --git a/src/lib/components/variables/VariableReferredNodeParameter.svelte b/src/lib/components/variables/VariableReferredNodeParameter.svelte
index 9f43e1cdd3845ba65c6192b94b40c7838504de1e..c3ac0a2099c675e9f86c00ddb2590dabafb95965 100644
--- a/src/lib/components/variables/VariableReferredNodeParameter.svelte
+++ b/src/lib/components/variables/VariableReferredNodeParameter.svelte
@@ -5,13 +5,13 @@
     type Parameter,
   } from "@openfisca/json-model"
 
-  import { asScaleParameter, asValueParameter } from "$lib/parameters"
-  import type { DisplayMode } from "$lib/displays"
-
   import VariableReferredParameterHeader from "./VariableReferredParameterHeader.svelte"
   import VariableReferredScaleParameter from "./VariableReferredScaleParameter.svelte"
   import VariableReferredValueParameter from "./VariableReferredValueParameter.svelte"
 
+  import type { DisplayMode } from "$lib/displays"
+  import { asScaleParameter, asValueParameter } from "$lib/parameters"
+
   export let billParameter: NodeParameter
   export let bothFilteredParameter: NodeParameter
   export let budget: boolean | undefined
diff --git a/src/lib/components/variables/VariableReferredParameters.svelte b/src/lib/components/variables/VariableReferredParameters.svelte
index 40996f70f160b49c668221c1e9a6db179a857b11..d46f7fe55a4f8f0f6932f296364a7c4843e4a066 100644
--- a/src/lib/components/variables/VariableReferredParameters.svelte
+++ b/src/lib/components/variables/VariableReferredParameters.svelte
@@ -1,5 +1,4 @@
 <script lang="ts">
-  import type {} from "@openfisca/json-model"
   import {
     getVariableFormula,
     mergeParameters,
@@ -10,6 +9,11 @@
   import { getContext } from "svelte"
   import type { Writable } from "svelte/store"
 
+  import VariableHeader from "./VariableHeader.svelte"
+  import VariableReferredNodeParameter from "./VariableReferredNodeParameter.svelte"
+  import VariableReferredScaleParameter from "./VariableReferredScaleParameter.svelte"
+  import VariableReferredValueParameter from "./VariableReferredValueParameter.svelte"
+
   import {
     decompositionCoreByName,
     decompositionCoreByNameByReformName,
@@ -30,11 +34,6 @@
     variableSummaryByNameByReformName,
   } from "$lib/variables"
 
-  import VariableHeader from "./VariableHeader.svelte"
-  import VariableReferredNodeParameter from "./VariableReferredNodeParameter.svelte"
-  import VariableReferredScaleParameter from "./VariableReferredScaleParameter.svelte"
-  import VariableReferredValueParameter from "./VariableReferredValueParameter.svelte"
-
   export let date: string
   export let displayMode: DisplayMode
   export let name: string
diff --git a/src/lib/components/variables/VariableReferredScaleParameter.svelte b/src/lib/components/variables/VariableReferredScaleParameter.svelte
index 2956fd4c58f3b9585125f0e0ae708865b4fce8ec..93d5ae2c190594f18bc1a0d654c07bd2ba089b66 100644
--- a/src/lib/components/variables/VariableReferredScaleParameter.svelte
+++ b/src/lib/components/variables/VariableReferredScaleParameter.svelte
@@ -17,17 +17,18 @@
     requestTestCasesCalculation,
     type RequestedCalculations,
   } from "$lib/calculations"
-  import type { DisplayMode } from "$lib/displays"
   import ArticleModal from "$lib/components/parameters/ArticleModal.svelte"
   import InflationLawButton from "$lib/components/variables/InflationLawButton.svelte"
   import InflationLawInfoModal from "$lib/components/variables/InflationLawInfoModal.svelte"
   import VariableReferredParameterHeader from "$lib/components/variables/VariableReferredParameterHeader.svelte"
   import VariableReferredScaleAtInstant from "$lib/components/variables/VariableReferredScaleAtInstant.svelte"
+  import type { DisplayMode } from "$lib/displays"
   import {
     trackLawEditParameterArticles,
     trackLawEditParameterHistory,
     trackLawEditParameterStatus,
   } from "$lib/matomo"
+  import { rootParameterByReformName } from "$lib/parameters"
   import {
     ParameterReformChangeType,
     type ParametricReform,
@@ -37,7 +38,6 @@
     budgetEditableParametersNameByVariableName,
     budgetVariablesName,
   } from "$lib/variables"
-  import { rootParameterByReformName } from "$lib/parameters"
 
   export let billParameter: ScaleParameter
   export let budget: boolean | undefined
diff --git a/src/lib/components/variables/VariableReferredValueParameter.svelte b/src/lib/components/variables/VariableReferredValueParameter.svelte
index d1557fd4dff62215898c997b75f4cb651bd8139e..07084bc0f1f485017bc1136bf449014a4cff7b69 100644
--- a/src/lib/components/variables/VariableReferredValueParameter.svelte
+++ b/src/lib/components/variables/VariableReferredValueParameter.svelte
@@ -26,13 +26,13 @@
     requestTestCasesCalculation,
     type RequestedCalculations,
   } from "$lib/calculations"
-  import type { DisplayMode } from "$lib/displays"
   import ArticleModal from "$lib/components/parameters/ArticleModal.svelte"
   import InflationLawButton from "$lib/components/variables/InflationLawButton.svelte"
   import InflationLawInfoModal from "$lib/components/variables/InflationLawInfoModal.svelte"
   import VariableReferredParameterHeader from "$lib/components/variables/VariableReferredParameterHeader.svelte"
   import VariableReferredValueEdit from "$lib/components/variables/VariableReferredValueEdit.svelte"
   import VariableReferredValueView from "$lib/components/variables/VariableReferredValueView.svelte"
+  import type { DisplayMode } from "$lib/displays"
   import {
     trackLawEditParameterArticles,
     trackLawEditParameterHistory,
diff --git a/src/lib/components/variables/VariableReferredValueView.svelte b/src/lib/components/variables/VariableReferredValueView.svelte
index 78e67315ae7867b04e33eb15313e6db59f024474..04c5d9d369561f6a2a615ca88274027e0949ac8d 100644
--- a/src/lib/components/variables/VariableReferredValueView.svelte
+++ b/src/lib/components/variables/VariableReferredValueView.svelte
@@ -1,8 +1,8 @@
 <script lang="ts">
   import type { Unit, ValueAtInstant } from "@openfisca/json-model"
 
-  import { removeNegativeZero } from "$lib/values"
   import Tooltip from "$lib/components/Tooltip.svelte"
+  import { removeNegativeZero } from "$lib/values"
 
   export let billValue: ValueAtInstant | undefined | null
   export let lawValue: ValueAtInstant | undefined | null
diff --git a/src/lib/components/variables/VariableView.svelte b/src/lib/components/variables/VariableView.svelte
index cc175610d598559c0de0206d938858005a13386c..50154a3e279e92eee2ba7d65a57ab5c9fe674cf4 100644
--- a/src/lib/components/variables/VariableView.svelte
+++ b/src/lib/components/variables/VariableView.svelte
@@ -5,11 +5,11 @@
   import { page } from "$app/stores"
   import FormulaView from "$lib/components/variables/FormulaView.svelte"
   import VariableInput from "$lib/components/variables/VariableInput.svelte"
+  import { decompositionCoreByName } from "$lib/decompositions"
   import type { Situation } from "$lib/situations"
   import type { SelfTargetAProps } from "$lib/urls"
   import type { ValuesByCalculationNameByVariableName } from "$lib/variables"
   import { buildInstantFormulaAndReferencesArray } from "$lib/variables"
-  import { decompositionCoreByName } from "$lib/decompositions"
 
   export let date: string
   export let editable: boolean
diff --git a/src/lib/decompositions.ts b/src/lib/decompositions.ts
index b2116a959f8653dc133a7c15bb57b45050c92f37..6623595224b9d969196bccf715513d417ee76d6d 100644
--- a/src/lib/decompositions.ts
+++ b/src/lib/decompositions.ts
@@ -10,6 +10,7 @@ import type {
   Waterfall,
   WaterfallOptions,
 } from "@openfisca/json-model"
+import deepEqual from "deep-equal"
 
 import type { CalculationName } from "$lib/calculations"
 import { reformChangesByName } from "$lib/reforms"
@@ -18,7 +19,6 @@ import {
   variableSummaryByName,
   variableSummaryByNameByReformName,
 } from "$lib/variables"
-import deepEqual from "deep-equal"
 
 export type {
   Decomposition as DecompositionCore,
diff --git a/src/lib/search/search_worker_parameters.ts b/src/lib/search/search_worker_parameters.ts
index 57eef81a4e3dd395a947b446441e12cb610945e1..b56653cde2ecd872bc80858ce1c24706ecd6df71 100644
--- a/src/lib/search/search_worker_parameters.ts
+++ b/src/lib/search/search_worker_parameters.ts
@@ -1,5 +1,5 @@
-import MiniSearch from "minisearch"
 import { type Parameter, walkParameters } from "@openfisca/json-model"
+import MiniSearch from "minisearch"
 
 import { rootParameter } from "$lib/parameters"
 
diff --git a/src/lib/search/search_worker_variables_all.ts b/src/lib/search/search_worker_variables_all.ts
index 47bd6d8476e7adf2dad3ddf766523b64ddbcafa1..7d7551f2832a4eb270fd7f80cf016de6124f722d 100644
--- a/src/lib/search/search_worker_variables_all.ts
+++ b/src/lib/search/search_worker_variables_all.ts
@@ -1,6 +1,6 @@
 import { miniSearch } from "$lib/search/search_common_variables"
-import { variableSummaryByName } from "$lib/variables"
 import type { SearchVariable } from "$lib/search/search_variable"
+import { variableSummaryByName } from "$lib/variables"
 
 export const allVariables = Object.values(variableSummaryByName).map(
   (variable) =>
diff --git a/src/lib/search/search_worker_variables_with_linked.ts b/src/lib/search/search_worker_variables_with_linked.ts
index d23a72d431ba0e03f58d812bf1bf9290e765895d..5bd8c62f85ec9c27941e56dec3ed98be2d6d1155 100644
--- a/src/lib/search/search_worker_variables_with_linked.ts
+++ b/src/lib/search/search_worker_variables_with_linked.ts
@@ -2,9 +2,9 @@ import {
   decompositionCoreByName,
   withLinkedVariableNames,
 } from "$lib/decompositions"
-import { variableSummaryByName } from "$lib/variables"
 import { miniSearch } from "$lib/search/search_common_variables"
 import type { SearchVariable } from "$lib/search/search_variable"
+import { variableSummaryByName } from "$lib/variables"
 
 export const withLinkedVariables = withLinkedVariableNames
   .map(
diff --git a/src/lib/server/config.ts b/src/lib/server/config.ts
index 8a1d114ca09c9cb88fd25b2d839c08c2362a79bb..c586df34a54cab2e1b21f0acc55aeb55bf763104 100644
--- a/src/lib/server/config.ts
+++ b/src/lib/server/config.ts
@@ -1,7 +1,7 @@
 import "dotenv/config"
 
-import { validateConfig } from "$lib/server/auditors/config"
 import type { RepositoryConfig } from "$lib/repositories"
+import { validateConfig } from "$lib/server/auditors/config"
 
 export interface Config {
   advanced: boolean
diff --git a/src/routes/+layout.server.ts b/src/routes/+layout.server.ts
index 5cd413be7c83ddfd73e812aed0cb31fe6815cf63..9d94316fd72e2255144c6ae9270d94d4cf11d648 100644
--- a/src/routes/+layout.server.ts
+++ b/src/routes/+layout.server.ts
@@ -1,8 +1,8 @@
+import type { LayoutServerLoad } from "./$types"
+
 import type { RepositoryConfig } from "$lib/repositories"
-import type { User } from "$lib/users"
 import config from "$lib/server/config"
-
-import type { LayoutServerLoad } from "./$types"
+import type { User } from "$lib/users"
 
 const { openfiscaRepository } = config
 
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte
index 7eabc9d88ff12b2eb3c0797529f0a11e2bc67415..b6e3dd70002cf81eb0adf43eea0063c137bb7472 100644
--- a/src/routes/+layout.svelte
+++ b/src/routes/+layout.svelte
@@ -14,6 +14,8 @@
   import { Modals, closeModal } from "svelte-modals"
   import { v4 as uuidV4 } from "uuid"
 
+  import type { LayoutData } from "./$types"
+
   import { browser } from "$app/environment"
   import { page } from "$app/stores"
   import type { BudgetSimulation } from "$lib/budgets"
@@ -68,8 +70,6 @@
     type VariableValues,
   } from "$lib/variables"
 
-  import type { LayoutData } from "./$types"
-
   export let data: LayoutData
 
   const axes: Writable<Axis[][]> = writable([])
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte
index 1f32f584ac57625f194e61ca89f21cd83ce32dd5..a080bfecaf834a8c0a9894494fc27051459ed555 100644
--- a/src/routes/+page.svelte
+++ b/src/routes/+page.svelte
@@ -16,22 +16,24 @@
   import { getContext, setContext } from "svelte"
   import type { Writable } from "svelte/store"
 
+  import type { PageData } from "./$types"
+
   import { browser } from "$app/environment"
   import { goto } from "$app/navigation"
   import { page } from "$app/stores"
-  import { auditQueryArray, auditQuerySingleton } from "$lib/auditors/queries"
   import { auditSimulationHash } from "$lib/auditors/hashes"
+  import { auditQueryArray, auditQuerySingleton } from "$lib/auditors/queries"
   import type { BudgetSimulation } from "$lib/budgets"
   import {
     requestAllBudgetCalculations,
     requestAllTestCasesCalculations,
     type RequestedCalculations,
   } from "$lib/calculations"
+  import AllocationsFamilialesBudgetView from "$lib/components/AllocationsFamilialesBudgetView.svelte"
+  import AllocationsFamilialesGagnantsPerdantsView from "$lib/components/AllocationsFamilialesGagnantsPerdantsView.svelte"
   import BudgetConnexionModal from "$lib/components/BudgetConnexionModal.svelte"
   import BudgetSimulationSharingModal from "$lib/components/BudgetSimulationSharingModal.svelte"
   import CopyClipboard from "$lib/components/CopyClipboard.svelte"
-  import AllocationsFamilialesBudgetView from "$lib/components/AllocationsFamilialesBudgetView.svelte"
-  import AllocationsFamilialesGagnantsPerdantsView from "$lib/components/AllocationsFamilialesGagnantsPerdantsView.svelte"
   import CsgBudgetView from "$lib/components/CsgBudgetView.svelte"
   import CsgGagnantsPerdantsView from "$lib/components/CsgGagnantsPerdantsView.svelte"
   import IrBudgetView from "$lib/components/IrBudgetView.svelte"
@@ -40,13 +42,13 @@
   import ReformsChanges from "$lib/components/ReformsChanges.svelte"
   import ReplaceTestCaseModal from "$lib/components/ReplaceTestCaseModal.svelte"
   import Spinner from "$lib/components/Spinner.svelte"
-  import TestCaseSelectModal from "$lib/components/test_cases/TestCaseSelectModal.svelte"
   import TestCaseCompareView from "$lib/components/test_cases/TestCaseCompareView.svelte"
   import TestCaseEdit from "$lib/components/test_cases/TestCaseEdit.svelte"
   import TestCaseRelatedCarousel from "$lib/components/test_cases/TestCaseRelatedCarousel.svelte"
-  import TestCaseSimulationSharingModal from "$lib/components/TestCaseSimulationSharingModal.svelte"
+  import TestCaseSelectModal from "$lib/components/test_cases/TestCaseSelectModal.svelte"
   import TestCasesStackRepresentation from "$lib/components/test_cases/TestCasesStackRepresentation.svelte"
   import TestCaseView from "$lib/components/test_cases/TestCaseView.svelte"
+  import TestCaseSimulationSharingModal from "$lib/components/TestCaseSimulationSharingModal.svelte"
   import Tooltip from "$lib/components/Tooltip.svelte"
   import NonVariableReferredParameter from "$lib/components/variables/NonVariableReferredParameter.svelte"
   import VariableReferredInputsPane from "$lib/components/variables/VariableReferredInputsPane.svelte"
@@ -84,8 +86,6 @@
     budgetEditableParametersName,
   } from "$lib/variables"
 
-  import type { PageData } from "./$types"
-
   export let data: PageData
 
   let animationEndedTimeoutId = undefined
diff --git a/src/routes/auth/login/+server.ts b/src/routes/auth/login/+server.ts
index bcd64e1dbbbd2ddaade2a85a57ca178fa1c63e36..8218730420182e0d2023a8f4e5be8c3e5039019d 100644
--- a/src/routes/auth/login/+server.ts
+++ b/src/routes/auth/login/+server.ts
@@ -2,11 +2,11 @@ import { error } from "@sveltejs/kit"
 import jwt from "jsonwebtoken"
 import { generators } from "openid-client"
 
+import type { RequestHandler } from "./$types"
+
 import { validateLoginLogoutQuery } from "$lib/server/auditors/queries"
 import config from "$lib/server/config"
 
-import type { RequestHandler } from "./$types"
-
 export const GET: RequestHandler = async ({ cookies, locals, url }) => {
   const [query, queryError] = validateLoginLogoutQuery(url.searchParams) as [
     { redirect: string },
diff --git a/src/routes/auth/logout/+server.ts b/src/routes/auth/logout/+server.ts
index ed3ba952c4d8e51ac8c1c67fe7058640f048a5ca..48ab7fee640d1c9a5dbf20936fea108772dfd75e 100644
--- a/src/routes/auth/logout/+server.ts
+++ b/src/routes/auth/logout/+server.ts
@@ -1,10 +1,10 @@
 import { error } from "@sveltejs/kit"
 
+import type { RequestHandler } from "./$types"
+
 import { validateLoginLogoutQuery } from "$lib/server/auditors/queries"
 import config from "$lib/server/config"
 
-import type { RequestHandler } from "./$types"
-
 export const GET: RequestHandler = ({ cookies, locals, url }) => {
   const [query, queryError] = validateLoginLogoutQuery(url.searchParams) as [
     { redirect: string },
diff --git a/src/routes/auth/restore_state/+page.svelte b/src/routes/auth/restore_state/+page.svelte
index 09d20f1506c4aa4a523bc1f2ff3903aa403d30d1..51307957329b66bff198a72cd9c4a7c54318b0c9 100644
--- a/src/routes/auth/restore_state/+page.svelte
+++ b/src/routes/auth/restore_state/+page.svelte
@@ -3,15 +3,15 @@
   import type { Writable } from "svelte/store"
 
   import { goto } from "$app/navigation"
+  import {
+    requestAllTestCasesCalculations,
+    type RequestedCalculations,
+  } from "$lib/calculations"
   import type { EvaluationByName } from "$lib/decompositions"
   import type { ParametricReform } from "$lib/reforms"
   import type { Situation } from "$lib/situations"
   import { newSimulationUrl } from "$lib/urls"
   import type { ValuesByCalculationNameByVariableName } from "$lib/variables"
-  import {
-    requestAllTestCasesCalculations,
-    type RequestedCalculations,
-  } from "$lib/calculations"
 
   const evaluationByNameArray = getContext("evaluationByNameArray") as Writable<
     EvaluationByName[]
diff --git a/src/routes/budgets/+server.ts b/src/routes/budgets/+server.ts
index 0c833eaf0ede71abbe18abb4fc31b02dca785858..c364ae813e8880169d12bc57789940f0fdc93ba9 100644
--- a/src/routes/budgets/+server.ts
+++ b/src/routes/budgets/+server.ts
@@ -1,7 +1,10 @@
-import fs from "fs-extra"
-import jwt from "jsonwebtoken"
 import path from "path"
+
 import { error, json } from "@sveltejs/kit"
+import fs from "fs-extra"
+import jwt from "jsonwebtoken"
+
+import type { RequestHandler } from "./$types"
 
 import { hashObject } from "$lib/hash"
 import { getParameter, rootParameter } from "$lib/parameters"
@@ -15,8 +18,6 @@ import type { CachedSimulation } from "$lib/simulations"
 import type { User } from "$lib/users"
 import { budgetEditableParametersName } from "$lib/variables"
 
-import type { RequestHandler } from "./$types"
-
 interface PayloadUser extends User {
   exp?: number
   iat?: number
diff --git a/src/routes/budgets/demands/+server.ts b/src/routes/budgets/demands/+server.ts
index 8427021d1066c9df0e918292f6a559e2ed259a25..21cf7f4acd6a978d74d0ada5ed24e94050b05091 100644
--- a/src/routes/budgets/demands/+server.ts
+++ b/src/routes/budgets/demands/+server.ts
@@ -6,12 +6,12 @@ import {
 } from "@auditors/core"
 import { error, json } from "@sveltejs/kit"
 
+import type { RequestHandler } from "./$types"
+
 import type { DisplayMode } from "$lib/displays"
 import type { ParametricReform } from "$lib/reforms"
 import config from "$lib/server/config"
 
-import type { RequestHandler } from "./$types"
-
 function auditBody(audit: Audit, dataUnknown: unknown): [unknown, unknown] {
   if (dataUnknown == null) {
     return [dataUnknown, null]
diff --git a/src/routes/budgets/simulations/+server.ts b/src/routes/budgets/simulations/+server.ts
index a4581e1697c0938ea15e2f6e07949d549f85b843..6ee34d34321b2bee1d63b0010b2fb3b9b95dc8bf 100644
--- a/src/routes/budgets/simulations/+server.ts
+++ b/src/routes/budgets/simulations/+server.ts
@@ -1,8 +1,11 @@
+import path from "path"
+
 import { auditRequire, cleanAudit, type Audit } from "@auditors/core"
+import { error, json } from "@sveltejs/kit"
 import fs from "fs-extra"
 import jwt from "jsonwebtoken"
-import path from "path"
-import { error, json } from "@sveltejs/kit"
+
+import type { RequestHandler } from "./$types"
 
 import type { DisplayMode } from "$lib/displays"
 import type { ParametricReform } from "$lib/reforms"
@@ -14,8 +17,6 @@ import config from "$lib/server/config"
 import type { CachedSimulation } from "$lib/simulations"
 import type { User } from "$lib/users"
 
-import type { RequestHandler } from "./$types"
-
 const { simulationsBudgetDir } = config
 
 function auditBody(audit: Audit, dataUnknown: unknown): [unknown, unknown] {
diff --git a/src/routes/budgets/simulations/[simulation]/+page.server.ts b/src/routes/budgets/simulations/[simulation]/+page.server.ts
index 32e9e9fd9ecc36e0016241300432cf0c4f3d42f2..64b32773b567bb6e574ae4b708f46eb1db1de709 100644
--- a/src/routes/budgets/simulations/[simulation]/+page.server.ts
+++ b/src/routes/budgets/simulations/[simulation]/+page.server.ts
@@ -1,3 +1,5 @@
+import path from "path"
+
 import {
   type Audit,
   auditRequire,
@@ -7,16 +9,15 @@ import {
 } from "@auditors/core"
 import { error } from "@sveltejs/kit"
 import fs from "fs-extra"
-import path from "path"
+
+import type { PageServerLoad } from "./$types"
 
 import type { DisplayMode } from "$lib/displays"
 import type { ParametricReform } from "$lib/reforms"
+import { getBudgetRequestsFilePath } from "$lib/server/budgets"
 import config from "$lib/server/config"
 import type { CachedSimulation } from "$lib/simulations"
 
-import type { PageServerLoad } from "./$types"
-import { getBudgetRequestsFilePath } from "$lib/server/budgets"
-
 const { simulationsBudgetDir } = config
 
 function auditParams(audit: Audit, dataUnknown: unknown): [unknown, unknown] {
diff --git a/src/routes/budgets/simulations/[simulation]/+page.svelte b/src/routes/budgets/simulations/[simulation]/+page.svelte
index 293e77d7b7182603bddbd212a8819c8c22a537b7..56bd7879d93b2f6041d79d5bc8470d79e55d268f 100644
--- a/src/routes/budgets/simulations/[simulation]/+page.svelte
+++ b/src/routes/budgets/simulations/[simulation]/+page.svelte
@@ -2,10 +2,10 @@
   import { getContext, onMount } from "svelte"
   import type { Writable } from "svelte/store"
 
-  import type { ParametricReform } from "$lib/reforms"
-
   import type { PageData } from "./$types"
+
   import { goto } from "$app/navigation"
+  import type { ParametricReform } from "$lib/reforms"
   import { newSimulationUrl } from "$lib/urls"
 
   export let data: PageData
diff --git a/src/routes/budgets/simulations/index/+server.ts b/src/routes/budgets/simulations/index/+server.ts
index 002a69846a41f7bffe4d92612750671ff4b9e7c3..f6c7ed6ac98d3534724773c062e2049d1cec5d85 100644
--- a/src/routes/budgets/simulations/index/+server.ts
+++ b/src/routes/budgets/simulations/index/+server.ts
@@ -1,12 +1,13 @@
+import path from "path"
+
 import { json } from "@sveltejs/kit"
 import fs from "fs-extra"
-import path from "path"
+
+import type { RequestHandler } from "./$types"
 
 import config from "$lib/server/config"
 import type { CachedSimulation } from "$lib/simulations"
 
-import type { RequestHandler } from "./$types"
-
 const { simulationsBudgetDir } = config
 
 export const POST: RequestHandler = async () => {
diff --git a/src/routes/entities/+page.svelte b/src/routes/entities/+page.svelte
index 5cae0bc4f8bc4602332fa96bbf872b196461bd1e..56fa533f9f7dc2dfb6064a5046ce37a6d9b7d950 100644
--- a/src/routes/entities/+page.svelte
+++ b/src/routes/entities/+page.svelte
@@ -1,8 +1,8 @@
 <script lang="ts">
-  import { entityByKey } from "$lib/entities"
-
   import type { PageData } from "./$types"
 
+  import { entityByKey } from "$lib/entities"
+
   export let data: PageData
 </script>
 
diff --git a/src/routes/parameters/+page.svelte b/src/routes/parameters/+page.svelte
index a069f37c1bef445bf3ad2fd3eb366f6b729ab708..2c447eb8e5e88604640e04963f93842a4d16a751 100644
--- a/src/routes/parameters/+page.svelte
+++ b/src/routes/parameters/+page.svelte
@@ -2,14 +2,14 @@
   import type { Parameter } from "@openfisca/json-model"
   import { onMount } from "svelte"
 
+  import type { PageData } from "./$types"
+
   import { browser } from "$app/environment"
   import { goto } from "$app/navigation"
   import { page } from "$app/stores"
   import Search from "$lib/components/search/Search.svelte"
   import { SearchMode } from "$lib/search/search_mode"
 
-  import type { PageData } from "./$types"
-
   export let data: PageData
 
   let searchInputValue = ""
diff --git a/src/routes/parameters/[parameter]/+page.svelte b/src/routes/parameters/[parameter]/+page.svelte
index 5726f239bcf4962f93d2f20615454dd688842dcb..a22155d3a739256cc7d421539ba383f8459c0a70 100644
--- a/src/routes/parameters/[parameter]/+page.svelte
+++ b/src/routes/parameters/[parameter]/+page.svelte
@@ -2,11 +2,11 @@
   import { getContext, setContext } from "svelte"
   import type { Writable } from "svelte/store"
 
+  import type { PageData } from "./$types"
+
   import ParameterView from "$lib/components/parameters/ParameterView.svelte"
   import { newSelfTargetAProps } from "$lib/urls"
 
-  import type { PageData } from "./$types"
-
   export let data: PageData
 
   const date = getContext("date") as Writable<string>
diff --git a/src/routes/parameters/[parameter]/+server.ts b/src/routes/parameters/[parameter]/+server.ts
index 76f66bb3bfdcacd948dd21fcc6864cc2d95ffec5..3f7879c5cb5a7fecfa40e7f45940532f153f2bc2 100644
--- a/src/routes/parameters/[parameter]/+server.ts
+++ b/src/routes/parameters/[parameter]/+server.ts
@@ -1,3 +1,5 @@
+import { randomBytes } from "crypto"
+
 import { strictAudit } from "@auditors/core"
 import {
   auditEditableParameter,
@@ -7,14 +9,13 @@ import {
   type Parameter,
 } from "@openfisca/json-model"
 import { error } from "@sveltejs/kit"
-import { randomBytes } from "crypto"
+
+import type { RequestHandler } from "./$types"
 
 import { getParameter, rootParameter } from "$lib/parameters"
 import config from "$lib/server/config"
 import { units } from "$lib/units"
 
-import type { RequestHandler } from "./$types"
-
 const { githubPersonalAccessToken, openfiscaRepository } = config
 
 export const PUT: RequestHandler = async ({ request, params }) => {
diff --git a/src/routes/parameters/[parameter]/edit/+page.svelte b/src/routes/parameters/[parameter]/edit/+page.svelte
index eb8a753d9852462c5dbdd5e6fb9498c7b23d986e..fa2a74198006162e761ecac8cbca3feab64705a0 100644
--- a/src/routes/parameters/[parameter]/edit/+page.svelte
+++ b/src/routes/parameters/[parameter]/edit/+page.svelte
@@ -13,6 +13,8 @@
   import { getContext } from "svelte"
   import type { Writable } from "svelte/store"
 
+  import type { PageData } from "./$types"
+
   import { goto } from "$app/navigation"
   import NodeEdit from "$lib/components/parameters/NodeEdit.svelte"
   import ScaleEdit from "$lib/components/parameters/ScaleEdit.svelte"
@@ -21,8 +23,6 @@
   import { units } from "$lib/units"
   import { newSelfTargetAProps } from "$lib/urls"
 
-  import type { PageData } from "./$types"
-
   export let data: PageData
 
   const date = getContext("date") as Writable<string>
diff --git a/src/routes/parameters/[parameter]/edit/+page.ts b/src/routes/parameters/[parameter]/edit/+page.ts
index 901f5f96ec9060f8c61ebb1eee3486b3f6fffc6d..ca7189220b9add080c9f7920e57a537a8fab8778 100644
--- a/src/routes/parameters/[parameter]/edit/+page.ts
+++ b/src/routes/parameters/[parameter]/edit/+page.ts
@@ -1,18 +1,18 @@
 import { strictAudit } from "@auditors/core"
-import { error } from "@sveltejs/kit"
 import {
   auditRawParameterToEditable,
   ParameterClass,
   rawParameterFromYaml,
   type Parameter,
 } from "@openfisca/json-model"
+import { error } from "@sveltejs/kit"
+
+import type { PageLoad } from "./$types"
 
 import { getParameter, rootParameter } from "$lib/parameters"
 import { newParameterRepositoryRawUrl } from "$lib/repositories"
 import { units } from "$lib/units"
 
-import type { PageLoad } from "./$types"
-
 export const load: PageLoad = async function ({ fetch, params, parent }) {
   const data = await parent()
   const { parameter: name } = params
diff --git a/src/routes/test_cases/+server.ts b/src/routes/test_cases/+server.ts
index 077825724e11fa4a0b4cc16074644ac0b96719fe..4ff5b2980ae0eaf996752a608cdfa3124dc47826 100644
--- a/src/routes/test_cases/+server.ts
+++ b/src/routes/test_cases/+server.ts
@@ -1,5 +1,7 @@
-import fs from "fs-extra"
 import { json } from "@sveltejs/kit"
+import fs from "fs-extra"
+
+import type { RequestHandler } from "./$types"
 
 import { hashObject } from "$lib/hash"
 import config from "$lib/server/config"
@@ -8,8 +10,6 @@ import {
   getTestCasesCacheFilePath,
 } from "$lib/server/test_cases"
 
-import type { RequestHandler } from "./$types"
-
 const { apiBaseUrls } = config
 
 export const POST: RequestHandler = async ({ fetch, request }) => {
diff --git a/src/routes/test_cases/simulations/+server.ts b/src/routes/test_cases/simulations/+server.ts
index 924a353fe958f5049f15f4afd5c8799b651c071f..43fe2a2d3098297dd4ae8a42f16149a684dc0faf 100644
--- a/src/routes/test_cases/simulations/+server.ts
+++ b/src/routes/test_cases/simulations/+server.ts
@@ -7,14 +7,14 @@ import {
 import { error, json } from "@sveltejs/kit"
 import fs from "fs-extra"
 
+import type { RequestHandler } from "./$types"
+
 import { hashString } from "$lib/hash"
 import {
   getTestCasesRequestsDirPath,
   getTestCasesRequestsFilePath,
 } from "$lib/server/test_cases"
 
-import type { RequestHandler } from "./$types"
-
 function auditBody(audit: Audit, dataUnknown: unknown): [unknown, unknown] {
   if (dataUnknown == null) {
     return [dataUnknown, null]
diff --git a/src/routes/test_cases/simulations/[simulation]/+page.server.ts b/src/routes/test_cases/simulations/[simulation]/+page.server.ts
index eebda9510ebb9ab8279bf42fac5ac550375157e6..975c7594ad0c85bfbb3f507b6970137c0cf84769 100644
--- a/src/routes/test_cases/simulations/[simulation]/+page.server.ts
+++ b/src/routes/test_cases/simulations/[simulation]/+page.server.ts
@@ -8,13 +8,13 @@ import {
 import { error } from "@sveltejs/kit"
 import fs from "fs-extra"
 
+import type { PageServerLoad } from "./$types"
+
 import type { DisplayMode } from "$lib/displays"
 import type { ParametricReform } from "$lib/reforms"
 import { getTestCasesRequestsFilePath } from "$lib/server/test_cases"
 import type { Situation } from "$lib/situations"
 
-import type { PageServerLoad } from "./$types"
-
 function auditParams(audit: Audit, dataUnknown: unknown): [unknown, unknown] {
   if (dataUnknown == null) {
     return [dataUnknown, null]
diff --git a/src/routes/test_cases/simulations/[simulation]/+page.svelte b/src/routes/test_cases/simulations/[simulation]/+page.svelte
index 0a6bcff877676ccd1c42ca3814bc185302345849..66387d2f8a29d685b6d0f75a6d13340d6f336e20 100644
--- a/src/routes/test_cases/simulations/[simulation]/+page.svelte
+++ b/src/routes/test_cases/simulations/[simulation]/+page.svelte
@@ -2,6 +2,8 @@
   import { getContext, onMount } from "svelte"
   import type { Writable } from "svelte/store"
 
+  import type { PageData } from "./$types"
+
   import { goto } from "$app/navigation"
   import {
     requestAllTestCasesCalculations,
@@ -13,8 +15,6 @@
   import { newSimulationUrl } from "$lib/urls"
   import type { ValuesByCalculationNameByVariableName } from "$lib/variables"
 
-  import type { PageData } from "./$types"
-
   export let data: PageData
 
   const evaluationByNameArray = getContext("evaluationByNameArray") as Writable<
diff --git a/src/routes/variables/+page.svelte b/src/routes/variables/+page.svelte
index 0ec59838afc7ae49fa49624c775680224db79105..d81c238f6a46883952e27d05f822d16a5f01f080 100644
--- a/src/routes/variables/+page.svelte
+++ b/src/routes/variables/+page.svelte
@@ -1,8 +1,8 @@
 <script lang="ts">
-  import { variableSummaryByName } from "$lib/variables"
-
   import type { PageData } from "./$types"
 
+  import { variableSummaryByName } from "$lib/variables"
+
   export let data: PageData
 </script>
 
diff --git a/src/routes/variables/[variable]/+page.server.ts b/src/routes/variables/[variable]/+page.server.ts
index f27fd04a2c2616a9175593b578844b1236681512..0ea0922642ef903c85710f964d0c6832349bf894 100644
--- a/src/routes/variables/[variable]/+page.server.ts
+++ b/src/routes/variables/[variable]/+page.server.ts
@@ -1,6 +1,7 @@
+import path from "path"
+
 import { error } from "@sveltejs/kit"
 import fs from "fs-extra"
-import path from "path"
 import sanitizeFilename from "sanitize-filename"
 
 import type { PageServerLoad } from "./$types"
diff --git a/src/routes/variables/[variable]/+page.svelte b/src/routes/variables/[variable]/+page.svelte
index 2be1fa95d92d979fb90187d93ec243efe701fa2d..074b20079ab863d125ba39e3b730b3e4e7250b2d 100644
--- a/src/routes/variables/[variable]/+page.svelte
+++ b/src/routes/variables/[variable]/+page.svelte
@@ -2,6 +2,8 @@
   import { getContext, setContext } from "svelte"
   import type { Writable } from "svelte/store"
 
+  import type { PageData } from "./$types"
+
   import { goto } from "$app/navigation"
   import VariableView from "$lib/components/variables/VariableView.svelte"
   import type { DisplayMode } from "$lib/displays"
@@ -9,8 +11,6 @@
   import { newSelfTargetAProps, newSimulationUrl } from "$lib/urls"
   import type { ValuesByCalculationNameByVariableName } from "$lib/variables"
 
-  import type { PageData } from "./$types"
-
   export let data: PageData
 
   const date = getContext("date") as Writable<string>
diff --git a/src/routes/variables/[variable]/ast/+server.ts b/src/routes/variables/[variable]/ast/+server.ts
index fdd1cc0ba333a760fa1736e0ca425c392559d1ad..fb99e7198f78cb77bc7841f263502f38bd542364 100644
--- a/src/routes/variables/[variable]/ast/+server.ts
+++ b/src/routes/variables/[variable]/ast/+server.ts
@@ -1,3 +1,5 @@
+import path from "path"
+
 import {
   type Audit,
   auditRequire,
@@ -11,7 +13,6 @@ import {
 } from "@openfisca/json-model"
 import { error, json } from "@sveltejs/kit"
 import fs from "fs-extra"
-import path from "path"
 import sanitizeFilename from "sanitize-filename"
 
 import type { RequestHandler } from "./$types"
diff --git a/src/routes/variables/[variable]/inputs/[date]/+page.svelte b/src/routes/variables/[variable]/inputs/[date]/+page.svelte
index cd1de61ed6065e9bd5123b8d5055f558df2c1d41..6f98ab2aae33baba6a8e668a65cce57c06c2b1e8 100644
--- a/src/routes/variables/[variable]/inputs/[date]/+page.svelte
+++ b/src/routes/variables/[variable]/inputs/[date]/+page.svelte
@@ -2,14 +2,14 @@
   import { getContext, setContext } from "svelte"
   import type { Writable } from "svelte/store"
 
+  import type { PageData } from "./$types"
+
   import { page } from "$app/stores"
   import VariableReferredInputs from "$lib/components/variables/VariableReferredInputs.svelte"
   import type { Situation } from "$lib/situations"
   import { newSelfTargetAProps } from "$lib/urls"
   import type { ValuesByCalculationNameByVariableName } from "$lib/variables"
 
-  import type { PageData } from "./$types"
-
   export let data: PageData
 
   const inputInstantsByVariableNameArray = getContext(
diff --git a/src/routes/variables/[variable]/parameters/[date]/+page.svelte b/src/routes/variables/[variable]/parameters/[date]/+page.svelte
index 34795ce31882d54630cd8df096c9bc365559947e..b3bdc22d2bcf262b96b5037bb9b2bf416ef67b89 100644
--- a/src/routes/variables/[variable]/parameters/[date]/+page.svelte
+++ b/src/routes/variables/[variable]/parameters/[date]/+page.svelte
@@ -2,14 +2,14 @@
   import { getContext, setContext } from "svelte"
   import type { Writable } from "svelte/store"
 
+  import type { PageData } from "./$types"
+
   import { page } from "$app/stores"
   import VariableReferredParameters from "$lib/components/variables/VariableReferredParameters.svelte"
   import { waterfalls } from "$lib/decompositions"
   import type { DisplayMode } from "$lib/displays"
   import { newSelfTargetAProps } from "$lib/urls"
 
-  import type { PageData } from "./$types"
-
   export let data: PageData
 
   let displayMode: DisplayMode
diff --git a/src/routes/variables/[variable]/xlsx/+page.svelte b/src/routes/variables/[variable]/xlsx/+page.svelte
index 5c4dccc1736da0ab47ed2a2035129cba1c5463c0..d75b91df3c40bbd0a661ec1e4cb2dbe344e3b169 100644
--- a/src/routes/variables/[variable]/xlsx/+page.svelte
+++ b/src/routes/variables/[variable]/xlsx/+page.svelte
@@ -17,6 +17,8 @@
   import { v4 as uuidV4 } from "uuid"
   import XLSX from "xlsx-js-style"
 
+  import type { PageData } from "./$types"
+
   import { browser } from "$app/environment"
   import { page } from "$app/stores"
   import { entityByKey, personEntityKey } from "$lib/entities"
@@ -34,8 +36,6 @@
     type VariableValuesByCalculationName,
   } from "$lib/variables"
 
-  import type { PageData } from "./$types"
-
   export let data: PageData
 
   type ValuesByCalculationNameByPeriodByVariableName = {
diff --git a/src/scripts/clear_simulations_cache.ts b/src/scripts/clear_simulations_cache.ts
index 820aaf0d57989280a1ca441d439f145f796a2216..14821dbbb81bdd877235895c6640863b8fd86f43 100644
--- a/src/scripts/clear_simulations_cache.ts
+++ b/src/scripts/clear_simulations_cache.ts
@@ -1,6 +1,7 @@
-import fs from "fs-extra"
 import path from "path"
 
+import fs from "fs-extra"
+
 import config from "$lib/server/config"
 
 const { simulationsBudgetDir, simulationsTestCasesDir } = config
diff --git a/vite.config.ts b/vite.config.ts
index 387d5b333ce98cd35308ef104c189760d060c326..bfadcdb78218bcffad1000e68915e7cc89b650be 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -1,6 +1,6 @@
 import { sveltekit } from "@sveltejs/kit/vite"
-import type { UserConfig } from "vite"
 import yaml from "js-yaml"
+import type { UserConfig } from "vite"
 // import yamlPlugin from "@rollup/plugin-yaml"
 
 import yamlPlugin from "./plugin-yaml-patched"