From db42e05146a206a50ced317653f0f47625ef3484 Mon Sep 17 00:00:00 2001 From: vmaubert <github@vcmb.dev> Date: Tue, 10 Sep 2024 17:41:20 +0200 Subject: [PATCH] =?UTF-8?q?chore(npm):=20met=20=C3=A0=20jour=20typescript?= =?UTF-8?q?=20(#1454)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore(npm): met à jour typescript * fix lint --- package-lock.json | 14 +++++------ package.json | 14 +++++++---- packages/api/package.json | 2 +- .../api/src/api/rest/statistiques/dgtm.ts | 12 +++++----- .../api/rest/statistiques/metaux-metropole.ts | 4 ++-- .../database/queries/utilisateurs.queries.ts | 10 ++++---- packages/api/tsconfig.json | 2 +- packages/common/package.json | 2 +- packages/common/src/static/statistiques.ts | 2 +- packages/common/src/statistiques.ts | 4 ++-- packages/ui/package.json | 2 +- packages/ui/src/api/statistiques.ts | 17 +++++++++++++- .../src/components/statistiques/globales.tsx | 23 +++++++++++++++---- packages/ui/src/components/titres/mapUtil.ts | 4 ++-- 14 files changed, 75 insertions(+), 37 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5cdb17fb2..f0827a8c4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,7 @@ "lint-staged": "^15.2.2", "semantic-release": "^23.0.8", "semantic-release-mattermost": "^1.2.1", - "typescript": "5.4.5", + "typescript": "^5.6.2", "vue": "3.4.26" }, "engines": { @@ -29792,9 +29792,9 @@ } }, "node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", + "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -31863,7 +31863,7 @@ "eslint-plugin-promise": "^6.1.1", "eslint-plugin-sql": "^2.5.0", "supertest": "^7.0.0", - "typescript": "^5.4.5", + "typescript": "^5.6.2", "vitest": "^2.0.5" } }, @@ -32192,7 +32192,7 @@ "@typescript-eslint/parser": "^7.12.0", "@vitest/coverage-v8": "^2.0.5", "prettier": "^3.2.5", - "typescript": "^5.4.5", + "typescript": "^5.6.2", "vitest": "^2.0.5" } }, @@ -32578,7 +32578,7 @@ "storybook": "^8.2.9", "ts-node": "^10.9.2", "tus-js-client": "^4.1.0", - "typescript": "^5.4.5", + "typescript": "^5.6.2", "typescript-plugin-css-modules": "^5.1.0", "vite": "^5.2.10", "vitest": "^2.0.5", diff --git a/package.json b/package.json index 8636f5f48..f644f3ddf 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,11 @@ "npm": ">=10.7.0" }, "description": "Le cadastre minier numérique ouvert", - "workspaces": ["packages/api", "packages/common", "packages/ui"], + "workspaces": [ + "packages/api", + "packages/common", + "packages/ui" + ], "private": true, "repository": { "type": "git", @@ -56,11 +60,13 @@ "lint-staged": "^15.2.2", "semantic-release": "^23.0.8", "semantic-release-mattermost": "^1.2.1", - "vue": "3.4.26", - "typescript": "5.4.5" + "typescript": "^5.6.2", + "vue": "3.4.26" }, "release": { - "branches": ["prod"], + "branches": [ + "prod" + ], "plugins": [ "@semantic-release/commit-analyzer", "@semantic-release/release-notes-generator", diff --git a/packages/api/package.json b/packages/api/package.json index b8d1995b3..25070e3a0 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -115,7 +115,7 @@ "eslint-plugin-promise": "^6.1.1", "eslint-plugin-sql": "^2.5.0", "supertest": "^7.0.0", - "typescript": "^5.4.5", + "typescript": "^5.6.2", "vitest": "^2.0.5" }, "prettier": { diff --git a/packages/api/src/api/rest/statistiques/dgtm.ts b/packages/api/src/api/rest/statistiques/dgtm.ts index ec96294bc..f3b9feabb 100644 --- a/packages/api/src/api/rest/statistiques/dgtm.ts +++ b/packages/api/src/api/rest/statistiques/dgtm.ts @@ -9,7 +9,7 @@ import { ETAPES_TYPES, EtapeTypeId } from 'camino-common/src/static/etapesTypes' import { EtapeStatutId } from 'camino-common/src/static/etapesStatuts' import { getProductionOr } from './dgtm.queries' import type { Pool } from 'pg' -import { isNotNullNorUndefinedNorEmpty } from 'camino-common/src/typescript-tools' +import { isNotNullNorUndefined, isNotNullNorUndefinedNorEmpty } from 'camino-common/src/typescript-tools' const anneeDepartStats = 2015 @@ -70,7 +70,7 @@ export const getDGTMStatsInside = const anneeDepot = result.depotEtInstructions[annee] const anneeSdom = result.sdom[annee] - if (anneeDepot && anneeSdom) { + if (isNotNullNorUndefined(anneeDepot) && isNotNullNorUndefined(anneeSdom)) { anneeDepot.totalTitresOctroyes++ if (!demarche.sdomZoneIds || demarche.sdomZoneIds.length === 0) { anneeSdom['3'].octroye++ @@ -129,7 +129,7 @@ export const getDGTMStatsInside = const anneeDepot = result.depotEtInstructions[annee] const anneeSdom = result.sdom[annee] - if (anneeDepot && anneeSdom) { + if (isNotNullNorUndefined(anneeDepot) && isNotNullNorUndefined(anneeSdom)) { anneeDepot.totalTitresDeposes++ if (!etape.sdomZoneIds || etape.sdomZoneIds.length === 0) { anneeSdom[3].depose++ @@ -206,7 +206,7 @@ export const getDGTMStatsInside = days = Math.abs(days) } const delaiAnnee = result.delais[annee] - if (delaiAnnee && delaiAnnee[instruction.titretypeid]) { + if (isNotNullNorUndefined(delaiAnnee) && delaiAnnee[instruction.titretypeid]) { delaiAnnee[instruction.titretypeid]?.delaiInstructionEnJours.push(days) } } @@ -218,7 +218,7 @@ export const getDGTMStatsInside = days = Math.abs(days) } const delaiAnnee = result.delais[annee] - if (delaiAnnee && delaiAnnee[instruction.titretypeid]) { + if (isNotNullNorUndefined(delaiAnnee) && delaiAnnee[instruction.titretypeid]) { delaiAnnee[instruction.titretypeid]?.delaiCommissionDepartementaleEnJours.push(days) } if (instruction.decisionadministration) { @@ -228,7 +228,7 @@ export const getDGTMStatsInside = days = Math.abs(days) } const delaiAnnee = result.delais[annee] - if (delaiAnnee && delaiAnnee[instruction.titretypeid]) { + if (isNotNullNorUndefined(delaiAnnee) && delaiAnnee[instruction.titretypeid]) { delaiAnnee[instruction.titretypeid]?.delaiDecisionPrefetEnJours.push(days) } } diff --git a/packages/api/src/api/rest/statistiques/metaux-metropole.ts b/packages/api/src/api/rest/statistiques/metaux-metropole.ts index 862fa28f4..15a45b1c3 100644 --- a/packages/api/src/api/rest/statistiques/metaux-metropole.ts +++ b/packages/api/src/api/rest/statistiques/metaux-metropole.ts @@ -7,7 +7,7 @@ import { isTitreValide, TitresStatutIds } from 'camino-common/src/static/titresS import { SubstancesFiscale, SUBSTANCES_FISCALES_IDS, SubstanceFiscaleId } from 'camino-common/src/static/substancesFiscales' import { Departements, departementsMetropole, toDepartementId } from 'camino-common/src/static/departement' import { REGION_IDS, regions } from 'camino-common/src/static/region' -import { onlyUnique } from 'camino-common/src/typescript-tools' +import { isNotNullNorUndefined, onlyUnique } from 'camino-common/src/typescript-tools' import { TITRES_TYPES_TYPES_IDS } from 'camino-common/src/static/titresTypesTypes' import { evolutionTitres } from './evolution-titres' import type { Pool } from 'pg' @@ -152,7 +152,7 @@ const buildSubstances = async (pool: Pool): Promise<Pick<StatistiquesMinerauxMet } const substanceData = acc[substance][annee] const valeur = fromUniteFiscaleToUnite(SubstancesFiscale[substance].uniteId, new Decimal(stat.substances[substance] ?? 0)).toNumber() - if (substanceData) { + if (isNotNullNorUndefined(substanceData)) { substanceData[regionId] = valeur + (substanceData[regionId] ?? 0) } } diff --git a/packages/api/src/database/queries/utilisateurs.queries.ts b/packages/api/src/database/queries/utilisateurs.queries.ts index 6efff8d97..042455b8e 100644 --- a/packages/api/src/database/queries/utilisateurs.queries.ts +++ b/packages/api/src/database/queries/utilisateurs.queries.ts @@ -164,10 +164,12 @@ export const getUtilisateurById = async (pool: Pool, id: UtilisateurId, user: Us } const userDbToUser = ( - user: GetUtilisateur -): Pick<UserNotNull, 'telephone_fixe' | 'telephone_mobile' | 'id' | 'nom' | 'prenom' | 'role' | 'email'> & - Nullable<Pick<AdminUserNotNull, 'administrationId'>> & - Pick<EntrepriseUserNotNull, 'entrepriseIds'> => { + user: DeepReadonly<GetUtilisateur> +): DeepReadonly< + Pick<UserNotNull, 'telephone_fixe' | 'telephone_mobile' | 'id' | 'nom' | 'prenom' | 'role' | 'email'> & + Nullable<Pick<AdminUserNotNull, 'administrationId'>> & + Pick<EntrepriseUserNotNull, 'entrepriseIds'> +> => { return { ...user, prenom: user.prenom ?? '', entrepriseIds: user.entreprise_ids ?? [], administrationId: user.administration_id } } diff --git a/packages/api/tsconfig.json b/packages/api/tsconfig.json index 1bc200872..6f61185a5 100644 --- a/packages/api/tsconfig.json +++ b/packages/api/tsconfig.json @@ -9,7 +9,7 @@ "alwaysStrict": true, "esModuleInterop": true, "inlineSources": false, - "lib": ["es2020", "dom", "ESNext.Array"], + "lib": ["es2020", "dom", "es2023.Array"], "module": "ESNext", "moduleResolution": "Node", "noFallthroughCasesInSwitch": true, diff --git a/packages/common/package.json b/packages/common/package.json index cee5ab55c..7c614963b 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -15,7 +15,7 @@ "@typescript-eslint/parser": "^7.12.0", "@vitest/coverage-v8": "^2.0.5", "prettier": "^3.2.5", - "typescript": "^5.4.5", + "typescript": "^5.6.2", "vitest": "^2.0.5" }, "prettier": { diff --git a/packages/common/src/static/statistiques.ts b/packages/common/src/static/statistiques.ts index 9faa74d1a..fe4fa1107 100644 --- a/packages/common/src/static/statistiques.ts +++ b/packages/common/src/static/statistiques.ts @@ -5,7 +5,7 @@ import { StatistiquesDataGouv } from '../statistiques' // prettier-ignore const IDS = ['Nombre d\'utilisateurs sur la plateforme', 'Nombre d\'utilisateurs affiliés à une entreprise', 'Nombre d\'utilisateurs rattachés à une préfecture','Nombre d\'utilisateurs rattachés à un ministère','Nombre d\'utilisateurs rattachés à une Dréal','Nombre d\'utilisateurs rattachés à une Autorité'] as const -const caminoStatistiquesDataGouvIdValidator = z.enum(IDS) +export const caminoStatistiquesDataGouvIdValidator = z.enum(IDS) export type CaminoStatistiquesDataGouvId = z.infer<typeof caminoStatistiquesDataGouvIdValidator> type TemplateDataGouv = Pick<StatistiquesDataGouv, 'indicateur' | 'unite_mesure' | 'frequence_monitoring' | 'date_debut' | 'dataviz_wish'> diff --git a/packages/common/src/statistiques.ts b/packages/common/src/statistiques.ts index c82938ae8..9e987a37e 100644 --- a/packages/common/src/statistiques.ts +++ b/packages/common/src/statistiques.ts @@ -5,7 +5,7 @@ import { regionIdValidator } from './static/region' import { SDOMZoneIds } from './static/sdom' import { SUBSTANCES_FISCALES_IDS, SubstanceFiscaleId } from './static/substancesFiscales' import { TitresTypes } from './static/titresTypes' -import { CaminoStatistiquesDataGouvId } from './static/statistiques' +import { CaminoStatistiquesDataGouvId, caminoStatistiquesDataGouvIdValidator } from './static/statistiques' export const yearMonthValidator = z .string() @@ -196,7 +196,7 @@ export const indicateurByAdministrationId: Record<Exclude<AdministrationTypeId, export const statistiquesDataGouvValidator = z.object({ administration_rattachement: z.literal('DGALN'), nom_service_public_numerique: z.literal('CAMINO'), - indicateur: z.string(), + indicateur: caminoStatistiquesDataGouvIdValidator, valeur: z.number(), unite_mesure: z.string(), est_cible: z.boolean(), diff --git a/packages/ui/package.json b/packages/ui/package.json index 9db180768..befeda6b8 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -82,7 +82,7 @@ "storybook": "^8.2.9", "ts-node": "^10.9.2", "tus-js-client": "^4.1.0", - "typescript": "^5.4.5", + "typescript": "^5.6.2", "typescript-plugin-css-modules": "^5.1.0", "vite": "^5.2.10", "vitest": "^2.0.5", diff --git a/packages/ui/src/api/statistiques.ts b/packages/ui/src/api/statistiques.ts index c620bfb8f..11c26ff86 100644 --- a/packages/ui/src/api/statistiques.ts +++ b/packages/ui/src/api/statistiques.ts @@ -1,7 +1,22 @@ import gql from 'graphql-tag' import { apiGraphQLFetch } from './_client' +import { QuantiteParMois } from 'camino-common/src/statistiques' -export const statistiquesGlobales = apiGraphQLFetch(gql` +type StatistiquesGlobales = { + statistiquesGlobales: { + titresActivitesBeneficesEntreprise: number + titresActivitesBeneficesAdministration: number + recherches: QuantiteParMois[] + titresModifies: QuantiteParMois[] + actions: number + sessionDuree: number + telechargements: number + demarches: number + signalements: number + reutilisations: number + } +} +export const statistiquesGlobales: () => Promise<StatistiquesGlobales> = apiGraphQLFetch(gql` query StatistiquesGlobales { statistiquesGlobales { titresActivitesBeneficesEntreprise diff --git a/packages/ui/src/components/statistiques/globales.tsx b/packages/ui/src/components/statistiques/globales.tsx index a35eda181..37754d81b 100644 --- a/packages/ui/src/components/statistiques/globales.tsx +++ b/packages/ui/src/components/statistiques/globales.tsx @@ -76,11 +76,26 @@ export const Globales = defineComponent(() => { try { const [statsGlobales, statsUtilisateurs] = await Promise.all([statistiquesGlobales(), getWithJson('/rest/statistiques/datagouv', {})]) - const statistiques = statsUtilisateurs.reduce((acc, value) => { - acc[value.indicateur] = value.valeur + const statistiques: CaminoStats = statsUtilisateurs.reduce( + (acc, value) => { + acc[value.indicateur] = value.valeur - return acc - }, statsGlobales) + return acc + }, + { + ...statsGlobales, + titresModifies: [], + "Nombre d'utilisateurs affiliés à une entreprise": 0, + "Nombre d'utilisateurs rattachés à un ministère": 0, + "Nombre d'utilisateurs rattachés à une Autorité": 0, + "Nombre d'utilisateurs rattachés à une Dréal": 0, + "Nombre d'utilisateurs rattachés à une préfecture": 0, + "Nombre d'utilisateurs sur la plateforme": 0, + demarches: 0, + titresActivitesBeneficesAdministration: 0, + titresActivitesBeneficesEntreprise: 0, + } + ) if (statistiques !== null) { data.value = { status: 'LOADED', value: statistiques } diff --git a/packages/ui/src/components/titres/mapUtil.ts b/packages/ui/src/components/titres/mapUtil.ts index 580e30bb3..4d4c3166e 100644 --- a/packages/ui/src/components/titres/mapUtil.ts +++ b/packages/ui/src/components/titres/mapUtil.ts @@ -7,7 +7,7 @@ import { TitreId } from 'camino-common/src/validators/titres' import { dsfrVariableCouleurParDomaine } from '../_common/domaine' import { capitalize } from 'camino-common/src/strings' import { GeojsonPoint, MultiPolygon } from 'camino-common/src/perimetre' -import { isNotNullNorUndefinedNorEmpty } from 'camino-common/src/typescript-tools' +import { isNotNullNorUndefined, isNotNullNorUndefinedNorEmpty } from 'camino-common/src/typescript-tools' import { Entreprise, EntrepriseId } from 'camino-common/src/entreprise' import { REGION_IDS, RegionId } from 'camino-common/src/static/region' import { CaminoRouter } from '@/typings/vue-router' @@ -169,7 +169,7 @@ export const clustersBuild = (): { [key in DomaineId]?: CaminoMarkerClusterGroup showCoverageOnHover: false, }) const cluster = clusters[id] - if (cluster) { + if (isNotNullNorUndefined(cluster)) { cluster.caminoDomaineId = id } -- GitLab