mon-entreprise/converters/données-code-APE/reduce-json.ts

81 lines
2.3 KiB
TypeScript

import { writeFileSync } from 'fs'
import { join } from 'path'
import { fileURLToPath } from 'url'
import { Data as RawApeData } from '../données-NAF-CPF-APE/convert-pdf.js'
import rawApeData from '../données-NAF-CPF-APE/output.json' assert { type: 'json' }
import { Out as EtablissementsData } from '../nombre-etablissements-par-code-ape-et-departement/convert-json.js'
import rawEtablissementsData from '../nombre-etablissements-par-code-ape-et-departement/output.json' assert { type: 'json' }
const __dirname = fileURLToPath(new URL('.', import.meta.url))
const OUTPUT_JSON_PATH = join(__dirname, './output.json')
const OUTPUT_MIN_JSON_PATH = join(__dirname, './output.min.json')
const apeData = rawApeData as RawApeData[]
const etablissementsData = rawEtablissementsData as EtablissementsData
interface ApeData {
codeApe: string
title: string
data: string[]
contenuCentral: string[]
contenuAnnexe: string[]
contenuExclu: string[]
}
type NbEtablissement2021Index = number
export interface Output {
/**
* Données textuel pour chaque code APE
*/
apeData: ApeData[]
/**
* Nombre d'établissement par département et par code APE,
* l'index de ce tableau correspond au index dans indexByCodeApe, indexByCodeDepartement et sortByEffectif.
* Cela permet de trouver le nombre d'établissement en 2021 avec un couple code APE + code d'un département.
*/
nbEtablissements2021: number[]
indexByCodeApe: { [codeAPE: string]: NbEtablissement2021Index[] }
indexByCodeDepartement: {
[codeDepartement: string]: NbEtablissement2021Index[]
}
sortByEffectif: NbEtablissement2021Index[]
}
const output: Output = {
apeData: apeData
.filter(({ type }) => type === 'sousClasse')
.map(
({
code: codeApe,
title,
data,
contenuCentral,
contenuAnnexe,
contenuExclu,
}) => {
return {
codeApe,
title,
data,
contenuCentral,
contenuAnnexe,
contenuExclu,
}
}
),
nbEtablissements2021: etablissementsData.data.map(
({ nombre_d_etablissements_2021: nbEtablissements }) => nbEtablissements
),
indexByCodeApe: etablissementsData.indexByCodeApe,
indexByCodeDepartement: etablissementsData.indexByCodeDepartement,
sortByEffectif: etablissementsData.sortByEffectif,
}
writeFileSync(OUTPUT_JSON_PATH, JSON.stringify(output, null, 2))
writeFileSync(OUTPUT_MIN_JSON_PATH, JSON.stringify(output))