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/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 & - Nullable> & - Pick => { + user: DeepReadonly +): DeepReadonly< + Pick & + Nullable> & + Pick +> => { 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 type TemplateDataGouv = Pick 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 Promise = 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 }