Skip to content
Snippets Groups Projects
Select Git revision
  • ad66b8c4dabb71c0b135716b35790e069f98415b
  • master default protected
  • doc-script-gen-off-tests
  • 366-signe-a-cote-du-droit-en-vigueur-sur-l-ui-pour-indiquer-que-la-reforme-a-eu-lieu-mais-qu-elle-n
  • revalo_retraites
  • 381-pb-affichage-labels-des-parametres-sur-plus-de-3-lignes
  • ajoute-duplicate-aide-logement
  • poc_castype_ia
  • parametres-editables-budget
  • ui-parametres
  • 355-les-dispositifs-prestations-sociales-du-graphique-se-cachent-montrent-en-meme-temps-2
  • 358-les-variables-dont-le-montant-est-nul-apparaissent-en-bleu-et-non-cliquables
  • 356-ajuster-la-largeur-sur-les-graphiques-budgetaires
  • incoherence_cas_type_0
  • fix-ui-suppression-tranches-baremes
  • ajout-agregat-cehr-version-plf
  • impact_carbone
  • xlsx
  • header_revamp
  • 270-concevoir-la-page-d-accueil-leximpact
  • 219-conversion-des-montants-min-et-max-de-l-axe-des-x-en-smic
  • 0.0.1177
  • 0.0.1176
  • 0.0.1175
  • 0.0.1174
  • 0.0.1173
  • 0.0.1172
  • 0.0.1171
  • 0.0.1170
  • 0.0.1169
  • 0.0.1168
  • 0.0.1167
  • 0.0.1166
  • 0.0.1165
  • 0.0.1164
  • 0.0.1163
  • 0.0.1162
  • 0.0.1161
  • 0.0.1160
  • 0.0.1159
  • 0.0.1158
41 results

config.ts

Blame
  • config.ts 3.16 KiB
    import "dotenv/config"
    
    import { validateConfig } from "$lib/server/auditors/config"
    import type { RepositoryConfig } from "$lib/repositories"
    
    export interface Config {
      advanced: boolean
      allowRobots: boolean
      apiBaseUrls: string[]
      apiWebSocketBaseUrls: string[]
      baseUrl: string
      budgetApiUrl?: string
      budgetJwtSecret?: string
      childrenKey: string
      familyEntityKey: string
      githubPersonalAccessToken?: string
      hiddenEntitiesKeyPlural?: string[]
      householdEntityKey: string
      jwtSecret: string
      legalUrl: string
      matomo?: {
        prependDomain?: boolean
        siteId: number
        subdomains?: string
        url: string
      }
      openfiscaRepository: RepositoryConfig
      openIdConnect?: {
        clientId: string
        clientSecret: string
        issuerUrl: string
      }
      portalUrl: string
      proxy: boolean
      reformName?: string
      showTutorial?: boolean
      simulationsDir: string
      taxableHouseholdEntityKey: string
      territoiresUrl: string
      title: string
    }
    
    const [validConfig, error] = validateConfig({
      advanced: process.env["ADVANCED"],
      allowRobots: process.env["ALLOW_ROBOTS"],
      apiBaseUrls: process.env["API_BASE_URLS"],
      baseUrl: process.env["BASE_URL"],
      budgetApiUrl: process.env["BUDGET_API_URL"],
      budgetJwtSecret: process.env["BUDGET_JWT_SECRET"],
      childrenKey: process.env["CHILDREN_KEY"],
      familyEntityKey: process.env["FAMILY_KEY"],
      githubPersonalAccessToken: process.env["GITHUB_PERSONAL_ACCESS_TOKEN"],
      hiddenEntitiesKeyPlural: process.env["HIDDEN_ENTITIES"],
      householdEntityKey: process.env["HOUSEHOLD_KEY"],
      jwtSecret: process.env["JWT_SECRET"],
      legalUrl: process.env["LEGAL_URL"],
      matomo:
        process.env["MATOMO_SITE_ID"] && process.env["MATOMO_URL"]
          ? {
              prependDomain: process.env["MATOMO_PREPEND_DOMAIN"],
              siteId: process.env["MATOMO_SITE_ID"],
              subdomains: process.env["MATOMO_SUBDOMAINS"],
              url: process.env["MATOMO_URL"],
            }
          : null,
      openfiscaRepository: {
        branch: process.env["OPENFISCA_BRANCH"],
        group: process.env["OPENFISCA_GROUP"],
        project: process.env["OPENFISCA_PROJECT"],
        rawUrlTemplate: process.env["OPENFISCA_REPOSITORY_RAW_URL_TEMPLATE"],
        urlTemplate: process.env["OPENFISCA_REPOSITORY_URL_TEMPLATE"],
      },
      openIdConnect: process.env["OPENID_CONNECT_CLIENT_ID"]
        ? {
            clientId: process.env["OPENID_CONNECT_CLIENT_ID"],
            clientSecret: process.env["OPENID_CONNECT_CLIENT_SECRET"],
            issuerUrl: process.env["OPENID_CONNECT_ISSUER_URL"],
          }
        : null,
      portalUrl: process.env["PORTAL_URL"],
      proxy: process.env["PROXY"],
      reformName: process.env["REFORM"],
      showTutorial: process.env["SHOW_TUTORIAL"],
      simulationsDir: process.env["SIMULATIONS_DIR"],
      taxableHouseholdEntityKey: process.env["TAXABLE_HOUSEHOLD_KEY"],
      territoiresUrl: process.env["TERRITOIRES_URL"],
      title: process.env["TITLE"],
    }) as [Config, unknown]
    if (error !== null) {
      console.error(
        `Error in configuration:\n${JSON.stringify(
          validConfig,
          null,
          2,
        )}\nError:\n${JSON.stringify(error, null, 2)}`,
      )
      process.exit(-1)
    }
    const config = validConfig
    config.apiWebSocketBaseUrls = config.apiBaseUrls.map((url) =>
      url.replace(/^http/, "ws"),
    )
    
    export default config