From 1963adaea0f19b1103c6c49a658f97823a180daf Mon Sep 17 00:00:00 2001 From: Fufeck Date: Tue, 2 Apr 2024 17:58:34 +0200 Subject: [PATCH] lint: add eslint and prettier --- .eslintrc.json | 13 + lib/__tests__/helpers.js | 60 +- lib/cog.js | 34 +- lib/commands/validate.js | 187 +-- lib/helpers.js | 101 +- lib/index.js | 18 +- lib/schema/__tests__/index.js | 160 ++- lib/schema/error-labels.js | 136 +- lib/schema/index.js | 505 +++---- lib/schema/profiles/1.1-strict.js | 132 +- lib/schema/profiles/1.2-strict.js | 160 ++- lib/schema/profiles/1.3-relax.js | 197 ++- lib/schema/profiles/1.3-strict.js | 166 ++- lib/schema/profiles/1.3.js | 210 ++- lib/schema/profiles/1.4-strict.js | 228 ++- lib/schema/profiles/1.4.js | 215 ++- lib/schema/profiles/index.js | 18 +- lib/validate/__tests__/1.4/index.js | 424 +++--- lib/validate/__tests__/index.js | 353 ++--- lib/validate/fields.js | 75 +- lib/validate/index.js | 248 ++-- lib/validate/parse/__tests__/buffer.js | 52 +- lib/validate/parse/blob.js | 22 +- lib/validate/parse/buffer.js | 24 +- lib/validate/parse/csv.js | 18 +- lib/validate/parse/detect-encoding.js | 36 +- lib/validate/parse/index.js | 2 +- lib/validate/row.js | 132 +- package.json | 27 +- scripts/build-minicog.js | 35 +- yarn.lock | 1797 +++--------------------- 31 files changed, 2267 insertions(+), 3518 deletions(-) create mode 100644 .eslintrc.json diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..12bbc70 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,13 @@ +{ + "env": { + "browser": true, + "commonjs": true, + "es2021": true, + "node": true + }, + "extends": ["eslint:recommended", "prettier"], + "parserOptions": { + "ecmaVersion": "latest" + }, + "rules": {} +} diff --git a/lib/__tests__/helpers.js b/lib/__tests__/helpers.js index c3805cb..ceedea7 100644 --- a/lib/__tests__/helpers.js +++ b/lib/__tests__/helpers.js @@ -1,23 +1,45 @@ -const test = require('ava') -const {parseLocalizedField, parseErrorCode, getLabel, getErrorLevel} = require('../helpers') +const test = require("ava"); +const { + parseLocalizedField, + parseErrorCode, + getLabel, + getErrorLevel, +} = require("../helpers"); -test('parseLocalizedField', t => { - t.is(parseLocalizedField('voie_nom'), undefined) - t.deepEqual(parseLocalizedField('voie_nom_bre'), {schemaName: 'voie_nom', locale: 'bre'}) -}) +test("parseLocalizedField", (t) => { + t.is(parseLocalizedField("voie_nom"), undefined); + t.deepEqual(parseLocalizedField("voie_nom_bre"), { + schemaName: "voie_nom", + locale: "bre", + }); +}); -test('parseErrorCode', t => { - t.deepEqual(parseErrorCode('voie_nom.trop_long'), {schemaName: 'voie_nom', fieldError: 'trop_long'}) - t.deepEqual(parseErrorCode('voie_nom_bre.trop_long'), {schemaName: 'voie_nom', locale: 'bre', fieldName: 'voie_nom_bre', fieldError: 'trop_long'}) -}) +test("parseErrorCode", (t) => { + t.deepEqual(parseErrorCode("voie_nom.trop_long"), { + schemaName: "voie_nom", + fieldError: "trop_long", + }); + t.deepEqual(parseErrorCode("voie_nom_bre.trop_long"), { + schemaName: "voie_nom", + locale: "bre", + fieldName: "voie_nom_bre", + fieldError: "trop_long", + }); +}); -test('getLabel', t => { - t.is(getLabel('voie_nom.trop_court'), 'Le nom de la voie est trop court (3 caractères minimum)') - t.is(getLabel('voie_nom_bre.trop_court'), 'Le nom de la voie est trop court (3 caractères minimum) [bre]') - t.throws(() => getLabel('voie_nom_toto.trop_court')) -}) +test("getLabel", (t) => { + t.is( + getLabel("voie_nom.trop_court"), + "Le nom de la voie est trop court (3 caractères minimum)", + ); + t.is( + getLabel("voie_nom_bre.trop_court"), + "Le nom de la voie est trop court (3 caractères minimum) [bre]", + ); + t.throws(() => getLabel("voie_nom_toto.trop_court")); +}); -test('getErrorLevel', t => { - t.is(getErrorLevel('1.3-relax', 'voie_nom.trop_court'), 'E') - t.is(getErrorLevel('1.3-relax', 'voie_nom_bre.trop_court'), 'W') -}) +test("getErrorLevel", (t) => { + t.is(getErrorLevel("1.3-relax", "voie_nom.trop_court"), "E"); + t.is(getErrorLevel("1.3-relax", "voie_nom_bre.trop_court"), "W"); +}); diff --git a/lib/cog.js b/lib/cog.js index 663fb7a..3fe6dc4 100644 --- a/lib/cog.js +++ b/lib/cog.js @@ -1,36 +1,46 @@ -const communes = require('../minicog.json') +const communes = require("../minicog.json"); -const codesCommunesActuelles = new Set(communes.filter(c => !c.chefLieu).map(c => c.code)) -const codesCommunesDeleguees = new Set(communes.filter(c => c.chefLieu).map(c => c.code)) +const codesCommunesActuelles = new Set( + communes.filter((c) => !c.chefLieu).map((c) => c.code), +); +const codesCommunesDeleguees = new Set( + communes.filter((c) => c.chefLieu).map((c) => c.code), +); -const anciensCodesIndex = new Map() +const anciensCodesIndex = new Map(); for (const commune of communes) { - const anciensCodes = commune.anciensCodes || [] + const anciensCodes = commune.anciensCodes || []; for (const ancienCode of anciensCodes) { - anciensCodesIndex.set(ancienCode, commune) + anciensCodesIndex.set(ancienCode, commune); } } function isCommune(codeCommune) { - return isCommuneActuelle(codeCommune) || isCommuneAncienne(codeCommune) + return isCommuneActuelle(codeCommune) || isCommuneAncienne(codeCommune); } function isCommuneAncienne(codeCommune) { - return anciensCodesIndex.has(codeCommune) + return anciensCodesIndex.has(codeCommune); } function isCommuneActuelle(codeCommune) { - return codesCommunesActuelles.has(codeCommune) + return codesCommunesActuelles.has(codeCommune); } function isCommuneDeleguee(codeCommune) { - return codesCommunesDeleguees.has(codeCommune) + return codesCommunesDeleguees.has(codeCommune); } function getCommuneActuelle(codeCommune) { return anciensCodesIndex.has(codeCommune) ? anciensCodesIndex.get(codeCommune) - : communes.find(c => c.code === codeCommune && !c.chefLieu) + : communes.find((c) => c.code === codeCommune && !c.chefLieu); } -module.exports = {isCommune, isCommuneAncienne, isCommuneActuelle, isCommuneDeleguee, getCommuneActuelle} +module.exports = { + isCommune, + isCommuneAncienne, + isCommuneActuelle, + isCommuneDeleguee, + getCommuneActuelle, +}; diff --git a/lib/commands/validate.js b/lib/commands/validate.js index ad41d06..a64e9ef 100644 --- a/lib/commands/validate.js +++ b/lib/commands/validate.js @@ -1,169 +1,196 @@ -const {readFile} = require('fs-extra') -const chalk = require('chalk') -const {validate, getLabel} = require('..') +const { readFile } = require("fs-extra"); +const chalk = require("chalk"); +const { validate, getLabel } = require(".."); module.exports = { - command: 'validate [options] ', - describe: 'Valider une base Adresse locale', + command: "validate [options] ", + describe: "Valider une base Adresse locale", builder: { - 'relax-fields-detection': { - type: 'boolean', + "relax-fields-detection": { + type: "boolean", default: false, - describe: 'Désactive la sensibilisé à la casse et accepte des variantes pour les noms des champs' + describe: + "Désactive la sensibilisé à la casse et accepte des variantes pour les noms des champs", }, profile: { - type: 'string', - default: '1.3', - describe: 'Permet de choisir la version du profil de validation à utiliser' - } + type: "string", + default: "1.3", + describe: + "Permet de choisir la version du profil de validation à utiliser", + }, }, async handler(argv) { - const file = await readFile(argv.file) + const file = await readFile(argv.file); try { const report = await validate(file, { relaxFieldsDetection: argv.relaxFieldsDetection, - profile: argv.profile - }) - printReport(report) + profile: argv.profile, + }); + printReport(report); } catch (error) { - console.error(error) + console.error(error); } - } -} + }, +}; function getDelimiterName(delimiter) { - if (delimiter === ';') { - return 'point-virgule' + if (delimiter === ";") { + return "point-virgule"; } - if (delimiter === ',') { - return 'virgule' + if (delimiter === ",") { + return "virgule"; } - if (delimiter === '\t') { - return 'tabulation' + if (delimiter === "\t") { + return "tabulation"; } - if (delimiter === '|') { - return 'pipe' + if (delimiter === "|") { + return "pipe"; } } function printSeverity(severity) { - if (severity === 'E') { - return chalk.red('E') + if (severity === "E") { + return chalk.red("E"); } - if (severity === 'W') { - return chalk.yellow('W') + if (severity === "W") { + return chalk.yellow("W"); } - if (severity === 'I') { - return chalk.blue('I') + if (severity === "I") { + return chalk.blue("I"); } } function printReport(report) { - const {fileValidation, parseOk, parseErrors, notFoundFields, fields, rows, profilesValidation, profilErrors} = report + const { + fileValidation, + parseOk, + parseErrors, + notFoundFields, + fields, + rows, + profilesValidation, + profilErrors, + } = report; // Erreurs dans la structure if (parseErrors.length > 0) { - console.log('') - console.log('* Erreurs de lecture du fichier') - console.log('') + console.log(""); + console.log("* Erreurs de lecture du fichier"); + console.log(""); for (const err of parseErrors) { - console.log(err) + console.log(err); } } if (!parseOk) { - console.log('') - console.log('Le fichier n’est pas structuré correctement. La validation est abandonnée.') - console.log('') - return + console.log(""); + console.log( + "Le fichier n’est pas structuré correctement. La validation est abandonnée.", + ); + console.log(""); + return; } - const {encoding, linebreak, delimiter} = fileValidation + const { encoding, linebreak, delimiter } = fileValidation; // Validation de la structure - console.log('') - console.log('* Validation de la structure du fichier') - console.log('') - console.log(`Encodage : ${encoding.value.toUpperCase()} => ${encoding.isValid ? 'OK' : 'Pas OK !'}`) - console.log(`Séparateur de ligne : ${linebreak.value} => ${linebreak.isValid ? 'OK' : 'Pas OK'}`) - console.log(`Séparateur de colonne : ${getDelimiterName(delimiter.value)} => ${delimiter.isValid ? 'OK' : 'Pas OK'}`) + console.log(""); + console.log("* Validation de la structure du fichier"); + console.log(""); + console.log( + `Encodage : ${encoding.value.toUpperCase()} => ${encoding.isValid ? "OK" : "Pas OK !"}`, + ); + console.log( + `Séparateur de ligne : ${linebreak.value} => ${linebreak.isValid ? "OK" : "Pas OK"}`, + ); + console.log( + `Séparateur de colonne : ${getDelimiterName(delimiter.value)} => ${delimiter.isValid ? "OK" : "Pas OK"}`, + ); // Validation des champs - console.log('') - console.log('* Validation du modèle') - console.log('') + console.log(""); + console.log("* Validation du modèle"); + console.log(""); if (notFoundFields.length === 0) { - console.log('Tous les champs du modèle ont été trouvés !') + console.log("Tous les champs du modèle ont été trouvés !"); } else { - console.log('/!\\ Les champs suivants n’ont pas été trouvés:') + console.log("/!\\ Les champs suivants n’ont pas été trouvés:"); for (const f of notFoundFields) { - console.log(`[${printSeverity(f.level)}] ${f.schemaName}`) + console.log(`[${printSeverity(f.level)}] ${f.schemaName}`); } } - const unknownFields = fields.filter(f => !f.schemaName) + const unknownFields = fields.filter((f) => !f.schemaName); if (unknownFields.length > 0) { - console.log('') - console.log('Les champs suivants sont inconnus, ils ont été ignorés :') + console.log(""); + console.log("Les champs suivants sont inconnus, ils ont été ignorés :"); for (const f of unknownFields) { - console.log(f.name) + console.log(f.name); } } - const aliasedFields = fields.filter(f => f.schemaName && f.schemaName !== f.name && !f.localizedSchemaName) + const aliasedFields = fields.filter( + (f) => f.schemaName && f.schemaName !== f.name && !f.localizedSchemaName, + ); if (aliasedFields.length > 0) { - console.log('') + console.log(""); for (const f of aliasedFields) { - console.log(`/!\\ Le champ ${f.schemaName} est mal orthographié mais a été pris en compte`) + console.log( + `/!\\ Le champ ${f.schemaName} est mal orthographié mais a été pris en compte`, + ); } } // Validation des données - console.log('') - console.log('* Validation des données') - console.log('') + console.log(""); + console.log("* Validation des données"); + console.log(""); - const rowsWithIssues = rows.filter(r => r.errors.length > 0) + const rowsWithIssues = rows.filter((r) => r.errors.length > 0); if (rowsWithIssues.length > 0) { for (const row of rowsWithIssues) { if (row.errors) { for (const err of row.errors) { - console.log(`[${printSeverity(err.level)}] #${row.line} ${getLabel(err.code)}`) + console.log( + `[${printSeverity(err.level)}] #${row.line} ${getLabel(err.code)}`, + ); } } } - console.log('') + console.log(""); } - console.log(`${rows.length} données vérifiées !`) + console.log(`${rows.length} données vérifiées !`); // Validation général if (profilErrors.length > 0) { - console.log('') - console.log('* Validation général du profil') - console.log('') + console.log(""); + console.log("* Validation général du profil"); + console.log(""); for (const err of profilErrors) { - console.log(`[${printSeverity(err.level)}] ${getLabel(err.code)}`) + console.log(`[${printSeverity(err.level)}] ${getLabel(err.code)}`); } } - console.log('') - console.log('* Validité') + console.log(""); + console.log("* Validité"); for (const profileValidation of Object.values(profilesValidation)) { - console.log(` - ${profileValidation.name} : ${profileValidation.isValid ? '✅' : '❌'}`) + console.log( + ` - ${profileValidation.name} : ${profileValidation.isValid ? "✅" : "❌"}`, + ); } - console.log('') + console.log(""); // On est content - console.log('') - console.log('Terminé !') - console.log('') + console.log(""); + console.log("Terminé !"); + console.log(""); } diff --git a/lib/helpers.js b/lib/helpers.js index b168e63..7888fd4 100644 --- a/lib/helpers.js +++ b/lib/helpers.js @@ -1,111 +1,118 @@ -const profiles = require('./schema/profiles') -const errorLabels = require('./schema/error-labels') -const {fields, allowedLocales} = require('./schema') +const profiles = require("./schema/profiles"); +const errorLabels = require("./schema/error-labels"); +const { fields, allowedLocales } = require("./schema"); function parseLocalizedField(fieldName) { - const locale = allowedLocales.find(l => fieldName.endsWith('_' + l)) + const locale = allowedLocales.find((l) => fieldName.endsWith("_" + l)); if (!locale) { - return + return; } - const schemaName = fieldName.slice(0, -(locale.length + 1)) + const schemaName = fieldName.slice(0, -(locale.length + 1)); if (fields[schemaName] && fields[schemaName].allowLocales) { - return {locale, schemaName} + return { locale, schemaName }; } } function parseErrorCode(code) { - const parts = code.split('.') + const parts = code.split("."); - if (parts[0] === 'file') { - return {prefix: 'file', code} + if (parts[0] === "file") { + return { prefix: "file", code }; } - if (parts[0] === 'row') { - return {prefix: 'row', code} + if (parts[0] === "row") { + return { prefix: "row", code }; } - if (parts[0] === 'field') { - return {prefix: 'field', code} + if (parts[0] === "field") { + return { prefix: "field", code }; } - if (parts[0] === 'rows') { - return {prefix: 'rows', code} + if (parts[0] === "rows") { + return { prefix: "rows", code }; } - const fieldName = parts[0] - const fieldError = parts[1] + const fieldName = parts[0]; + const fieldError = parts[1]; - const localizedField = parseLocalizedField(fieldName) + const localizedField = parseLocalizedField(fieldName); if (localizedField) { - return {fieldName, fieldError, ...localizedField} + return { fieldName, fieldError, ...localizedField }; } if (!fields[fieldName]) { - throw new Error('Unknown fieldName: ' + fieldName) + throw new Error("Unknown fieldName: " + fieldName); } - return {schemaName: fieldName, fieldError} + return { schemaName: fieldName, fieldError }; } function getErrorLevel(profileName, code) { - const profile = profiles[profileName] - const {schemaName, locale, fieldError} = parseErrorCode(code) - const codeToCompare = locale ? `${schemaName}_@@.${fieldError}` : code + const profile = profiles[profileName]; + const { schemaName, locale, fieldError } = parseErrorCode(code); + const codeToCompare = locale ? `${schemaName}_@@.${fieldError}` : code; if (profile.errors.includes(codeToCompare)) { - return 'E' + return "E"; } if (profile.warnings.includes(codeToCompare)) { - return 'W' + return "W"; } - return 'I' + return "I"; } -const endsWithErrorLabels = {} +const endsWithErrorLabels = {}; for (const c of Object.keys(errorLabels)) { - if (c.includes('*') && c.startsWith('*.')) { - endsWithErrorLabels[c.slice(2)] = submittedCode => { - const [value] = submittedCode.split('.') - return errorLabels[c].replace('{}', value) - } + if (c.includes("*") && c.startsWith("*.")) { + endsWithErrorLabels[c.slice(2)] = (submittedCode) => { + const [value] = submittedCode.split("."); + return errorLabels[c].replace("{}", value); + }; } } function getIfMissingColumn(code) { - const parts = code.split('.') - if (parts[0] === 'field' && parts[2] === 'missing') { - return `La colonne ${parts[1]} n’existe pas` + const parts = code.split("."); + if (parts[0] === "field" && parts[2] === "missing") { + return `La colonne ${parts[1]} n’existe pas`; } - return null + return null; } function getLabel(code) { - const {schemaName, locale, fieldError} = parseErrorCode(code) - const codeToUser = locale ? `${schemaName}.${fieldError}` : code + const { schemaName, locale, fieldError } = parseErrorCode(code); + const codeToUser = locale ? `${schemaName}.${fieldError}` : code; if (codeToUser in errorLabels) { - return errorLabels[codeToUser] + (locale ? ` [${locale}]` : '') + return errorLabels[codeToUser] + (locale ? ` [${locale}]` : ""); } - const endsWithCandidate = Object.keys(endsWithErrorLabels).find(pattern => codeToUser.endsWith(pattern)) + const endsWithCandidate = Object.keys(endsWithErrorLabels).find((pattern) => + codeToUser.endsWith(pattern), + ); if (endsWithCandidate) { - return endsWithErrorLabels[endsWithCandidate](codeToUser) + return endsWithErrorLabels[endsWithCandidate](codeToUser); } - const missingColumn = getIfMissingColumn(code) + const missingColumn = getIfMissingColumn(code); if (missingColumn) { - return missingColumn + return missingColumn; } - return code + return code; } -module.exports = {getErrorLevel, getLabel, parseLocalizedField, parseErrorCode} +module.exports = { + getErrorLevel, + getLabel, + parseLocalizedField, + parseErrorCode, +}; diff --git a/lib/index.js b/lib/index.js index 6919d56..7c5af64 100644 --- a/lib/index.js +++ b/lib/index.js @@ -1,6 +1,14 @@ -const {validate, validateProfile, prevalidate} = require('./validate') -const {readValue} = require('./validate/row') -const {getErrorLevel, getLabel} = require('./helpers') -const profiles = require('./schema/profiles') +const { validate, validateProfile, prevalidate } = require("./validate"); +const { readValue } = require("./validate/row"); +const { getErrorLevel, getLabel } = require("./helpers"); +const profiles = require("./schema/profiles"); -module.exports = {validate, validateProfile, prevalidate, getLabel, readValue, getErrorLevel, profiles} +module.exports = { + validate, + validateProfile, + prevalidate, + getLabel, + readValue, + getErrorLevel, + profiles, +}; diff --git a/lib/schema/__tests__/index.js b/lib/schema/__tests__/index.js index b7bd995..edd42cb 100644 --- a/lib/schema/__tests__/index.js +++ b/lib/schema/__tests__/index.js @@ -1,92 +1,98 @@ -const test = require('ava') -const {readValue} = require('../../validate/row') +const test = require("ava"); +const { readValue } = require("../../validate/row"); -test('validate suffixe', async t => { - const result = await readValue('suffixe', 'ter') - t.is(result.parsedValue, 'ter') - t.deepEqual(result.errors, []) -}) +test("validate suffixe", async (t) => { + const result = await readValue("suffixe", "ter"); + t.is(result.parsedValue, "ter"); + t.deepEqual(result.errors, []); +}); -test('validate suffixe / debut_invalide', async t => { - const result = await readValue('suffixe', '.') - t.is(result.parsedValue, undefined) - t.deepEqual(result.errors, ['debut_invalide']) -}) +test("validate suffixe / debut_invalide", async (t) => { + const result = await readValue("suffixe", "."); + t.is(result.parsedValue, undefined); + t.deepEqual(result.errors, ["debut_invalide"]); +}); -test('validate suffixe / trop_long', async t => { - const result = await readValue('suffixe', 'azertyuiopazertyuiop') - t.is(result.parsedValue, undefined) - t.deepEqual(result.errors, ['trop_long']) -}) +test("validate suffixe / trop_long", async (t) => { + const result = await readValue("suffixe", "azertyuiopazertyuiop"); + t.is(result.parsedValue, undefined); + t.deepEqual(result.errors, ["trop_long"]); +}); -test('validate cad_parcelles', async t => { - const result = await readValue('cad_parcelles', '12345000AA0001') - t.deepEqual(result.parsedValue, ['12345000AA0001']) - t.deepEqual(result.errors, []) -}) +test("validate cad_parcelles", async (t) => { + const result = await readValue("cad_parcelles", "12345000AA0001"); + t.deepEqual(result.parsedValue, ["12345000AA0001"]); + t.deepEqual(result.errors, []); +}); -test('validate cad_parcelles / multiple', async t => { - const result = await readValue('cad_parcelles', '12345000AA0001|12345000AA0002') - t.deepEqual(result.parsedValue, ['12345000AA0001', '12345000AA0002']) - t.deepEqual(result.errors, []) -}) +test("validate cad_parcelles / multiple", async (t) => { + const result = await readValue( + "cad_parcelles", + "12345000AA0001|12345000AA0002", + ); + t.deepEqual(result.parsedValue, ["12345000AA0001", "12345000AA0002"]); + t.deepEqual(result.errors, []); +}); -test('validate certification_commune / 1', async t => { - const result = await readValue('certification_commune', '1') - t.is(result.parsedValue, true) - t.deepEqual(result.errors, []) -}) +test("validate certification_commune / 1", async (t) => { + const result = await readValue("certification_commune", "1"); + t.is(result.parsedValue, true); + t.deepEqual(result.errors, []); +}); -test('validate certification_commune / 0', async t => { - const result = await readValue('certification_commune', '0') - t.is(result.parsedValue, false) - t.deepEqual(result.errors, []) -}) +test("validate certification_commune / 0", async (t) => { + const result = await readValue("certification_commune", "0"); + t.is(result.parsedValue, false); + t.deepEqual(result.errors, []); +}); -test('validate certification_commune / valeur_invalide', async t => { - const result = await readValue('certification_commune', 'toto') - t.is(result.parsedValue, undefined) - t.deepEqual(result.errors, ['valeur_invalide']) -}) +test("validate certification_commune / valeur_invalide", async (t) => { + const result = await readValue("certification_commune", "toto"); + t.is(result.parsedValue, undefined); + t.deepEqual(result.errors, ["valeur_invalide"]); +}); -test('validate date_der_maj / date ancienne', async t => { - const result = await readValue('date_der_maj', '2000-01-01') - t.is(result.parsedValue, '2000-01-01') - t.deepEqual(result.errors, ['date_ancienne']) -}) +test("validate date_der_maj / date ancienne", async (t) => { + const result = await readValue("date_der_maj", "2000-01-01"); + t.is(result.parsedValue, "2000-01-01"); + t.deepEqual(result.errors, ["date_ancienne"]); +}); -test('validate date_der_maj / date future', async t => { - const result = await readValue('date_der_maj', '2050-01-01') - t.is(result.parsedValue, undefined) - t.deepEqual(result.errors, ['date_future']) -}) +test("validate date_der_maj / date future", async (t) => { + const result = await readValue("date_der_maj", "2050-01-01"); + t.is(result.parsedValue, undefined); + t.deepEqual(result.errors, ["date_future"]); +}); -test('validate voie_nom / trop_court', async t => { - const result = await readValue('voie_nom', 'Aa') - t.is(result.parsedValue, undefined) - t.deepEqual(result.errors, ['trop_court']) -}) +test("validate voie_nom / trop_court", async (t) => { + const result = await readValue("voie_nom", "Aa"); + t.is(result.parsedValue, undefined); + t.deepEqual(result.errors, ["trop_court"]); +}); -test('validate voie_nom / trop_long', async t => { - const result = await readValue('voie_nom', 'Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf') - t.is(result.parsedValue, undefined) - t.deepEqual(result.errors, ['trop_long']) -}) +test("validate voie_nom / trop_long", async (t) => { + const result = await readValue( + "voie_nom", + "Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf Abcededf", + ); + t.is(result.parsedValue, undefined); + t.deepEqual(result.errors, ["trop_long"]); +}); -test('validate voie_nom / casse_incorrecte', async t => { - const result = await readValue('voie_nom', 'ALLEE DES RUISSEAUX') - t.is(result.parsedValue, 'ALLEE DES RUISSEAUX') - t.deepEqual(result.errors, ['casse_incorrecte']) -}) +test("validate voie_nom / casse_incorrecte", async (t) => { + const result = await readValue("voie_nom", "ALLEE DES RUISSEAUX"); + t.is(result.parsedValue, "ALLEE DES RUISSEAUX"); + t.deepEqual(result.errors, ["casse_incorrecte"]); +}); -test('validate voie_nom / caractere_invalide', async t => { - const result = await readValue('voie_nom', 'All�e des roses') - t.is(result.parsedValue, undefined) - t.deepEqual(result.errors, ['caractere_invalide']) -}) +test("validate voie_nom / caractere_invalide", async (t) => { + const result = await readValue("voie_nom", "All�e des roses"); + t.is(result.parsedValue, undefined); + t.deepEqual(result.errors, ["caractere_invalide"]); +}); -test('validate voie_nom / contient_tiret_bas', async t => { - const result = await readValue('voie_nom', 'Allée_des_roseaux') - t.is(result.parsedValue, 'Allée des roseaux') - t.deepEqual(result.errors, ['contient_tiret_bas']) -}) +test("validate voie_nom / contient_tiret_bas", async (t) => { + const result = await readValue("voie_nom", "Allée_des_roseaux"); + t.is(result.parsedValue, "Allée des roseaux"); + t.deepEqual(result.errors, ["contient_tiret_bas"]); +}); diff --git a/lib/schema/error-labels.js b/lib/schema/error-labels.js index 38ef155..a14c23c 100644 --- a/lib/schema/error-labels.js +++ b/lib/schema/error-labels.js @@ -2,87 +2,121 @@ module.exports = { // * - '*.valeur_manquante': 'Le champ {} ne doit pas être vide', - '*.valeur_invalide': 'La valeur du champ {} est incorrecte', - '*.espaces_debut_fin': 'La valeur du champ {} ne doit pas avoir d’espaces en début ou en fin de chaîne de caractère', - '*.enum_fuzzy': 'La valeur du champ {} a été acceptée mais n’est pas conforme à la spécification', - '*.caractere_invalide': 'Le champ {} contient des caractères non valides', + "*.valeur_manquante": "Le champ {} ne doit pas être vide", + "*.valeur_invalide": "La valeur du champ {} est incorrecte", + "*.espaces_debut_fin": + "La valeur du champ {} ne doit pas avoir d’espaces en début ou en fin de chaîne de caractère", + "*.enum_fuzzy": + "La valeur du champ {} a été acceptée mais n’est pas conforme à la spécification", + "*.caractere_invalide": "Le champ {} contient des caractères non valides", // cle_interop - 'cle_interop.casse_invalide': 'La clé d’interopérabilité doit être en minuscules', - 'cle_interop.structure_invalide': 'La clé d’interopérabilité doit contenir au moins 3 segments', - 'cle_interop.commune_invalide': 'Clé d’interopérabilité invalide (commune)', - 'cle_interop.commune_ancienne': 'La commune référencée est une commune ancienne', - 'cle_interop.voie_invalide': 'Clé d’interopérabilité invalide (voie)', - 'cle_interop.numero_invalide': 'Clé d’interopérabilité invalide (numéro)', - 'cle_interop.numero_prefixe_manquant': 'La partie numéro de la clé d’interopérabilité doit contenir 5 caractères', - 'cle_interop.voie_non_renseignee': 'La partie voie de la clé d’interopératibilité a été laissée à nul (0000 ou xxxx)', + "cle_interop.casse_invalide": + "La clé d’interopérabilité doit être en minuscules", + "cle_interop.structure_invalide": + "La clé d’interopérabilité doit contenir au moins 3 segments", + "cle_interop.commune_invalide": "Clé d’interopérabilité invalide (commune)", + "cle_interop.commune_ancienne": + "La commune référencée est une commune ancienne", + "cle_interop.voie_invalide": "Clé d’interopérabilité invalide (voie)", + "cle_interop.numero_invalide": "Clé d’interopérabilité invalide (numéro)", + "cle_interop.numero_prefixe_manquant": + "La partie numéro de la clé d’interopérabilité doit contenir 5 caractères", + "cle_interop.voie_non_renseignee": + "La partie voie de la clé d’interopératibilité a été laissée à nul (0000 ou xxxx)", // id_ban_commune - 'id_ban_commune.type_invalide': 'La valeur de id_ban_commune n’est pas un uuidv4 valide', + "id_ban_commune.type_invalide": + "La valeur de id_ban_commune n’est pas un uuidv4 valide", // id_ban_toponyme - 'id_ban_toponyme.type_invalide': 'La valeur de id_ban_toponyme n’est pas un uuidv4 valide', + "id_ban_toponyme.type_invalide": + "La valeur de id_ban_toponyme n’est pas un uuidv4 valide", // id_ban_adresse - 'id_ban_adresse.type_invalide': 'La valeur de id_ban_adresse n’est pas un uuidv4 valide', + "id_ban_adresse.type_invalide": + "La valeur de id_ban_adresse n’est pas un uuidv4 valide", // numero - 'numero.type_invalide': 'La valeur du champ numéro doit être un nombre entier', - 'numero.contient_prefixe': 'La valeur du champ numéro ne doit pas être préfixée par des zéros', - 'numero.trop_grand': 'Le numéro doit être compris entre 0 et 9999 (sauf toponyme)', + "numero.type_invalide": + "La valeur du champ numéro doit être un nombre entier", + "numero.contient_prefixe": + "La valeur du champ numéro ne doit pas être préfixée par des zéros", + "numero.trop_grand": + "Le numéro doit être compris entre 0 et 9999 (sauf toponyme)", // suffixe - 'suffixe.debut_invalide': 'La valeur du champ suffixe doit commencer par un caractère alphanumérique.', - 'suffixe.trop_long': 'La valeur du champ suffixe est trop longue', + "suffixe.debut_invalide": + "La valeur du champ suffixe doit commencer par un caractère alphanumérique.", + "suffixe.trop_long": "La valeur du champ suffixe est trop longue", // voie_nom - 'voie_nom.trop_court': 'Le nom de la voie est trop court (3 caractères minimum)', - 'voie_nom.trop_long': 'Le nom de la voie est trop long (200 caractères maximum)', - 'voie_nom.casse_incorrecte': 'Le nom de la voie est en majuscules', - 'voie_nom.contient_tiret_bas': 'Le nom de la voie contient un caractère tiret bas', + "voie_nom.trop_court": + "Le nom de la voie est trop court (3 caractères minimum)", + "voie_nom.trop_long": + "Le nom de la voie est trop long (200 caractères maximum)", + "voie_nom.casse_incorrecte": "Le nom de la voie est en majuscules", + "voie_nom.contient_tiret_bas": + "Le nom de la voie contient un caractère tiret bas", // commune_insee - 'commune_insee.commune_invalide': 'Le code INSEE de la commune n’est pas un code ayant existé', - 'commune_insee.commune_ancienne': 'Le code INSEE de la commune est le code d’une commune ancienne', + "commune_insee.commune_invalide": + "Le code INSEE de la commune n’est pas un code ayant existé", + "commune_insee.commune_ancienne": + "Le code INSEE de la commune est le code d’une commune ancienne", // commune_deleguee_insee - 'commune_deleguee_insee.commune_invalide': 'Le code INSEE renseigné n’est pas un code valide ou n’a jamais existé', - 'commune_deleguee_insee.commune_actuelle_non_deleguee': 'Le code INSEE renseigné correspond au code d’une commune actuelle dont le chef lieu n’est pas une commune déléguée', - 'commune_deleguee_insee.commune_ancienne_non_deleguee': 'Le code INSEE renseigné correspond au code d’une commune ancienne qui n’a pas le statut de commune déléguée', + "commune_deleguee_insee.commune_invalide": + "Le code INSEE renseigné n’est pas un code valide ou n’a jamais existé", + "commune_deleguee_insee.commune_actuelle_non_deleguee": + "Le code INSEE renseigné correspond au code d’une commune actuelle dont le chef lieu n’est pas une commune déléguée", + "commune_deleguee_insee.commune_ancienne_non_deleguee": + "Le code INSEE renseigné correspond au code d’une commune ancienne qui n’a pas le statut de commune déléguée", // x - 'x.separateur_decimal_invalide': 'Le séparateur des décimales du champ x doit être le point', + "x.separateur_decimal_invalide": + "Le séparateur des décimales du champ x doit être le point", // y - 'y.separateur_decimal_invalide': 'Le séparateur des décimales du champ y doit être le point', + "y.separateur_decimal_invalide": + "Le séparateur des décimales du champ y doit être le point", // long - 'long.separateur_decimal_invalide': 'Le séparateur des décimales du champ long doit être le point', + "long.separateur_decimal_invalide": + "Le séparateur des décimales du champ long doit être le point", // lat - 'lat.separateur_decimal_invalide': 'Le séparateur des décimales du champ lat doit être le point', + "lat.separateur_decimal_invalide": + "Le séparateur des décimales du champ lat doit être le point", // date_der_maj - 'date_der_maj.date_invalide': 'Date invalide', - 'date_der_maj.date_ancienne': 'Date trop ancienne', - 'date_der_maj.date_future': 'Date dans le futur', + "date_der_maj.date_invalide": "Date invalide", + "date_der_maj.date_ancienne": "Date trop ancienne", + "date_der_maj.date_future": "Date dans le futur", // cad_parcelles - 'cad_parcelles.pipe_debut_fin': 'Le symbole | ne doit pas être utilisé en début ou fin de chaîne', + "cad_parcelles.pipe_debut_fin": + "Le symbole | ne doit pas être utilisé en début ou fin de chaîne", // row-level errors - 'row.incoherence_numero': 'Le numéro ne correspond pas à la valeur présente dans la clé', - 'row.position_manquante': 'Position nulle', - 'row.chef_lieu_invalide': 'La code INSEE de la commune courante ne correspond pas au chef lieu de la commune disparue renseignée', - 'row.commune_manquante': 'Aucun code commune valide n’est renseigné', - 'row.longlat_vides': 'Les coordonnées long/lat ne sont pas renseignées', - 'row.longlat_invalides': 'Les coordonnées long/lat sont en dehors du territoire ou invalides', - 'row.longlat_xy_incoherents': 'Les coordonnées long/lat et x/y ne sont pas cohérentes', - 'row.adresse_incomplete': 'L’adresse est incomplète (numéro ou nom de la voie non renseignés)', - 'row.incoherence_ids_ban': 'Les ids ban renseignés ne sont pas cohérents', - 'row.id_ban_adresses_required': 'id_ban_adresses est requis les ids ban et le numero sont renseigné', + "row.incoherence_numero": + "Le numéro ne correspond pas à la valeur présente dans la clé", + "row.position_manquante": "Position nulle", + "row.chef_lieu_invalide": + "La code INSEE de la commune courante ne correspond pas au chef lieu de la commune disparue renseignée", + "row.commune_manquante": "Aucun code commune valide n’est renseigné", + "row.longlat_vides": "Les coordonnées long/lat ne sont pas renseignées", + "row.longlat_invalides": + "Les coordonnées long/lat sont en dehors du territoire ou invalides", + "row.longlat_xy_incoherents": + "Les coordonnées long/lat et x/y ne sont pas cohérentes", + "row.adresse_incomplete": + "L’adresse est incomplète (numéro ou nom de la voie non renseignés)", + "row.incoherence_ids_ban": "Les ids ban renseignés ne sont pas cohérents", + "row.id_ban_adresses_required": + "id_ban_adresses est requis les ids ban et le numero sont renseigné", // rows - 'rows.empty': 'Aucune ligne détecté', - 'rows.ids_required_every': 'Les ids ban sont requis pour toutes les lignes si ils sont utlisés' -} + "rows.empty": "Aucune ligne détecté", + "rows.ids_required_every": + "Les ids ban sont requis pour toutes les lignes si ils sont utlisés", +}; diff --git a/lib/schema/index.js b/lib/schema/index.js index 1423783..06c3190 100644 --- a/lib/schema/index.js +++ b/lib/schema/index.js @@ -1,474 +1,497 @@ /* eslint camelcase: off */ -const {format, parseISO} = require('date-fns') -const {trim, trimStart, deburr} = require('lodash') -const {isUuid} = require('uuidv4') -const languesRegionales = require('@ban-team/shared-data/langues-regionales.json') -const proj = require('@etalab/project-legal') -const {isCommune, isCommuneActuelle, isCommuneDeleguee, isCommuneAncienne, getCommuneActuelle} = require('../cog') +const { format, parseISO } = require("date-fns"); +const { trim, trimStart, deburr } = require("lodash"); +const { isUuid } = require("uuidv4"); +const languesRegionales = require("@ban-team/shared-data/langues-regionales.json"); +const proj = require("@etalab/project-legal"); +const { + isCommune, + isCommuneActuelle, + isCommuneDeleguee, + isCommuneAncienne, + getCommuneActuelle, +} = require("../cog"); function isValidFloat(str) { - return Boolean(/^-?(0|[1-9]\d*)(\.\d+)?\d?$/.test(str)) + return Boolean(/^-?(0|[1-9]\d*)(\.\d+)?\d?$/.test(str)); } function isValidFrenchFloat(str) { - return Boolean(/^-?(0|[1-9]\d*)(,\d+)?\d?$/.test(str)) + return Boolean(/^-?(0|[1-9]\d*)(,\d+)?\d?$/.test(str)); } function includesInvalidChar(str) { - return str.includes('�') + return str.includes("�"); } -exports.allowedLocales = languesRegionales.map(l => l.code) +exports.allowedLocales = languesRegionales.map((l) => l.code); exports.fields = { - cle_interop: { required: true, trim: true, - aliases: ['cle_intero', 'cle_interro'], - formats: ['1.1', '1.2', '1.3', '1.4'], - parse(v, {addError, setAdditionnalValues}) { + aliases: ["cle_intero", "cle_interro"], + formats: ["1.1", "1.2", "1.3", "1.4"], + parse(v, { addError, setAdditionnalValues }) { if (v.toLowerCase() !== v) { - addError('casse_invalide') + addError("casse_invalide"); } - const splitted = v.split('_') + const splitted = v.split("_"); if (splitted.length < 3) { - return addError('structure_invalide') + return addError("structure_invalide"); } - if (splitted.some(part => !part)) { - return addError('structure_invalide') + if (splitted.some((part) => !part)) { + return addError("structure_invalide"); } - const [, codeVoie, numeroVoie, ...suffixes] = splitted - const codeCommune = splitted[0].toUpperCase() + const [, codeVoie, numeroVoie, ...suffixes] = splitted; + const codeCommune = splitted[0].toUpperCase(); if (!isCommune(codeCommune)) { - addError('commune_invalide') + addError("commune_invalide"); } else if (isCommuneAncienne(codeCommune)) { - addError('commune_ancienne') + addError("commune_ancienne"); } - let codeVoieError = false + let codeVoieError = false; if (codeVoie.length !== 4) { - addError('voie_invalide') - codeVoieError = true - } else if (codeVoie.toUpperCase() === 'XXXX' || codeVoie === '0000') { - addError('voie_non_renseignee') - codeVoieError = true + addError("voie_invalide"); + codeVoieError = true; + } else if (codeVoie.toUpperCase() === "XXXX" || codeVoie === "0000") { + addError("voie_non_renseignee"); + codeVoieError = true; } // Clé d'interopérabilité - Numéro de voie if (!/^\d+$/.test(numeroVoie)) { - return addError('numero_invalide') + return addError("numero_invalide"); } if (numeroVoie.length !== 5) { - addError('numero_prefixe_manquant') + addError("numero_prefixe_manquant"); } setAdditionnalValues({ codeCommune, codeVoie: codeVoieError ? undefined : codeVoie.toUpperCase(), - numeroVoie: trimStart(numeroVoie, '0'), - suffixes - }) - - return [codeCommune, codeVoie, numeroVoie.padStart(5, '0'), ...suffixes].join('_').toLowerCase() - } + numeroVoie: trimStart(numeroVoie, "0"), + suffixes, + }); + + return [codeCommune, codeVoie, numeroVoie.padStart(5, "0"), ...suffixes] + .join("_") + .toLowerCase(); + }, }, uid_adresse: { trim: true, - formats: ['1.1', '1.2', '1.3'], - aliases: ['uid_adress'] + formats: ["1.1", "1.2", "1.3"], + aliases: ["uid_adress"], }, id_ban_commune: { - formats: ['1.4'], + formats: ["1.4"], trim: true, - parse(v, {addError}) { + parse(v, { addError }) { if (!isUuid(v)) { - return addError('type_invalide') + return addError("type_invalide"); } - return v - } + return v; + }, }, id_ban_toponyme: { - formats: ['1.4'], + formats: ["1.4"], trim: true, - parse(v, {addError}) { + parse(v, { addError }) { if (!isUuid(v)) { - return addError('type_invalide') + return addError("type_invalide"); } - return v - } + return v; + }, }, id_ban_adresse: { - formats: ['1.4'], + formats: ["1.4"], trim: true, - parse(v, {addError}) { + parse(v, { addError }) { if (!isUuid(v)) { - return addError('type_invalide') + return addError("type_invalide"); } - return v - } + return v; + }, }, voie_nom: { required: true, - formats: ['1.1', '1.2', '1.3', '1.4'], + formats: ["1.1", "1.2", "1.3", "1.4"], trim: true, allowLocales: true, - parse(v, {addError}) { + parse(v, { addError }) { if (v.length < 3) { - return addError('trop_court') + return addError("trop_court"); } if (v.length > 200) { - return addError('trop_long') + return addError("trop_long"); } if (includesInvalidChar(v)) { - return addError('caractere_invalide') + return addError("caractere_invalide"); } - if (v.includes('_')) { - addError('contient_tiret_bas') - v = v.replace(/_/g, ' ') + if (v.includes("_")) { + addError("contient_tiret_bas"); + v = v.replace(/_/g, " "); } if (v.toUpperCase() === v) { - addError('casse_incorrecte') + addError("casse_incorrecte"); } - return v - } + return v; + }, }, lieudit_complement_nom: { - formats: ['1.2', '1.3', '1.4'], + formats: ["1.2", "1.3", "1.4"], trim: true, allowLocales: true, - aliases: ['lieudit_co'] + aliases: ["lieudit_co"], }, numero: { required: true, - formats: ['1.1', '1.2', '1.3', '1.4'], + formats: ["1.1", "1.2", "1.3", "1.4"], trim: true, - aliases: ['nulmero'], - parse(v, {addError}) { + aliases: ["nulmero"], + parse(v, { addError }) { if (!/^\d+$/.test(v)) { - return addError('type_invalide') + return addError("type_invalide"); } - if (v.startsWith('0') && v !== '0') { - addError('contient_prefixe') + if (v.startsWith("0") && v !== "0") { + addError("contient_prefixe"); } - const n = Number.parseInt(v, 10) + const n = Number.parseInt(v, 10); if (n > 9999 && n !== 99_999) { - return addError('trop_grand') + return addError("trop_grand"); } - return n - } + return n; + }, }, suffixe: { - formats: ['1.1', '1.2', '1.3', '1.4'], + formats: ["1.1", "1.2", "1.3", "1.4"], trim: true, - parse(v, {addError}) { + parse(v, { addError }) { if (!/^[\da-z]/i.test(v)) { - return addError('debut_invalide') + return addError("debut_invalide"); } if (v.length > 9) { - return addError('trop_long') + return addError("trop_long"); } - return v - } + return v; + }, }, commune_insee: { required: true, - formats: ['1.2', '1.3', '1.4'], + formats: ["1.2", "1.3", "1.4"], trim: true, - aliases: ['commune_in'], - parse(v, {addError}) { - const code = v.toUpperCase() + aliases: ["commune_in"], + parse(v, { addError }) { + const code = v.toUpperCase(); if (!isCommune(code)) { - addError('commune_invalide') - return + addError("commune_invalide"); + return; } if (isCommuneAncienne(code)) { - addError('commune_ancienne') + addError("commune_ancienne"); } - return code - } + return code; + }, }, commune_nom: { required: true, - formats: ['1.1', '1.2', '1.3', '1.4'], + formats: ["1.1", "1.2", "1.3", "1.4"], trim: true, allowLocales: true, - aliases: ['commune_no'] + aliases: ["commune_no"], }, commune_deleguee_insee: { - formats: ['1.2', '1.3', '1.4'], + formats: ["1.2", "1.3", "1.4"], trim: true, - parse(v, {addError}) { - const code = v.toUpperCase() + parse(v, { addError }) { + const code = v.toUpperCase(); if (!isCommune(code)) { - addError('commune_invalide') - return + addError("commune_invalide"); + return; } if (!isCommuneDeleguee(code)) { if (isCommuneActuelle(code)) { - addError('commune_actuelle_non_deleguee') + addError("commune_actuelle_non_deleguee"); } else { - addError('commune_ancienne_non_deleguee') + addError("commune_ancienne_non_deleguee"); } } - return code - } + return code; + }, }, commune_deleguee_nom: { - formats: ['1.2', '1.3', '1.4'], + formats: ["1.2", "1.3", "1.4"], trim: true, - allowLocales: true + allowLocales: true, }, position: { - formats: ['1.1', '1.2', '1.3', '1.4'], + formats: ["1.1", "1.2", "1.3", "1.4"], trim: true, enum: [ - 'délivrance postale', - 'entrée', - 'bâtiment', - 'cage d’escalier', - 'logement', - 'parcelle', - 'segment', - 'service technique' - ] + "délivrance postale", + "entrée", + "bâtiment", + "cage d’escalier", + "logement", + "parcelle", + "segment", + "service technique", + ], }, x: { - formats: ['1.1', '1.2', '1.3', '1.4'], - aliases: ['x_l93'], + formats: ["1.1", "1.2", "1.3", "1.4"], + aliases: ["x_l93"], trim: true, - parse(v, {addError}) { + parse(v, { addError }) { if (isValidFloat(v)) { - return Number.parseFloat(v) + return Number.parseFloat(v); } if (isValidFrenchFloat(v)) { - addError('separateur_decimal_invalide') - return Number.parseFloat(v.replace(',', '.')) + addError("separateur_decimal_invalide"); + return Number.parseFloat(v.replace(",", ".")); } - addError('valeur_invalide') - } + addError("valeur_invalide"); + }, }, y: { - formats: ['1.1', '1.2', '1.3', '1.4'], - aliases: ['y_l93'], + formats: ["1.1", "1.2", "1.3", "1.4"], + aliases: ["y_l93"], trim: true, - parse(v, {addError}) { + parse(v, { addError }) { if (isValidFloat(v)) { - return Number.parseFloat(v) + return Number.parseFloat(v); } if (isValidFrenchFloat(v)) { - addError('separateur_decimal_invalide') - return Number.parseFloat(v.replace(',', '.')) + addError("separateur_decimal_invalide"); + return Number.parseFloat(v.replace(",", ".")); } - addError('valeur_invalide') - } + addError("valeur_invalide"); + }, }, long: { - formats: ['1.1', '1.2', '1.3', '1.4'], - aliases: ['long_wgs84', 'lon'], + formats: ["1.1", "1.2", "1.3", "1.4"], + aliases: ["long_wgs84", "lon"], trim: true, - parse(v, {addError}) { + parse(v, { addError }) { if (isValidFloat(v)) { - return Number.parseFloat(v) + return Number.parseFloat(v); } if (isValidFrenchFloat(v)) { - addError('separateur_decimal_invalide') - return Number.parseFloat(v.replace(',', '.')) + addError("separateur_decimal_invalide"); + return Number.parseFloat(v.replace(",", ".")); } - addError('valeur_invalide') - } + addError("valeur_invalide"); + }, }, lat: { - formats: ['1.1', '1.2', '1.3', '1.4'], - aliases: ['lat_wgs84'], + formats: ["1.1", "1.2", "1.3", "1.4"], + aliases: ["lat_wgs84"], trim: true, - parse(v, {addError}) { + parse(v, { addError }) { if (isValidFloat(v)) { - return Number.parseFloat(v) + return Number.parseFloat(v); } if (isValidFrenchFloat(v)) { - addError('separateur_decimal_invalide') - return Number.parseFloat(v.replace(',', '.')) + addError("separateur_decimal_invalide"); + return Number.parseFloat(v.replace(",", ".")); } - addError('valeur_invalide') - } + addError("valeur_invalide"); + }, }, cad_parcelles: { - formats: ['1.2', '1.3', '1.4'], - aliases: ['cad_parcel'], + formats: ["1.2", "1.3", "1.4"], + aliases: ["cad_parcel"], trim: true, - parse(v, {addError}) { - const pTrimmedValue = trim(v, '|') + parse(v, { addError }) { + const pTrimmedValue = trim(v, "|"); if (pTrimmedValue !== v) { - addError('pipe_debut_fin') + addError("pipe_debut_fin"); } if (!pTrimmedValue) { - addError('valeur_invalide') - return + addError("valeur_invalide"); + return; } - const parcelles = pTrimmedValue.includes('|') ? pTrimmedValue.split('|') : [pTrimmedValue] + const parcelles = pTrimmedValue.includes("|") + ? pTrimmedValue.split("|") + : [pTrimmedValue]; - if (parcelles.some(p => p.length !== 14 && p.length !== 15)) { - addError('valeur_invalide') - return + if (parcelles.some((p) => p.length !== 14 && p.length !== 15)) { + addError("valeur_invalide"); + return; } - return parcelles.map(p => p.length === 14 ? p : p.slice(0, 2) + p.slice(3)) - } + return parcelles.map((p) => + p.length === 14 ? p : p.slice(0, 2) + p.slice(3), + ); + }, }, source: { - formats: ['1.1', '1.2', '1.3', '1.4'], + formats: ["1.1", "1.2", "1.3", "1.4"], required: true, - trim: true + trim: true, }, date_der_maj: { required: true, - formats: ['1.1', '1.2', '1.3', '1.4'], + formats: ["1.1", "1.2", "1.3", "1.4"], trim: true, - aliases: ['date_der_m', 'dmaj', 'date_maj'], - parse(v, {addError}) { + aliases: ["date_der_m", "dmaj", "date_maj"], + parse(v, { addError }) { if (!/^(\d{4}-\d{2}-\d{2})$/.test(v)) { - return addError('date_invalide') + return addError("date_invalide"); } - const parsedDate = parseISO(v) + const parsedDate = parseISO(v); if (Number.isNaN(parsedDate.getTime())) { - return addError('date_invalide') + return addError("date_invalide"); } - if (parsedDate < new Date('2010-01-01')) { - addError('date_ancienne') + if (parsedDate < new Date("2010-01-01")) { + addError("date_ancienne"); } if (parsedDate > new Date()) { - return addError('date_future') + return addError("date_future"); } - return format(parsedDate, 'yyyy-MM-dd') - } + return format(parsedDate, "yyyy-MM-dd"); + }, }, certification_commune: { - formats: ['1.3', '1.4'], + formats: ["1.3", "1.4"], required: false, trim: true, - aliases: ['certification_adresse'], - parse(v, {addError}) { - if (v === '1') { - return true + aliases: ["certification_adresse"], + parse(v, { addError }) { + if (v === "1") { + return true; } - if (v === '0') { - return false + if (v === "0") { + return false; } - return addError('valeur_invalide') - } - } - -} + return addError("valeur_invalide"); + }, + }, +}; function getNormalizedEnumValue(value) { - return deburr(value.normalize()).replace(/\W+/g, ' ').trim().toLowerCase().normalize() + return deburr(value.normalize()) + .replace(/\W+/g, " ") + .trim() + .toLowerCase() + .normalize(); } -const enumFuzzyMap = new Map() +const enumFuzzyMap = new Map(); for (const value of exports.fields.position.enum) { - enumFuzzyMap.set(getNormalizedEnumValue(value), value.normalize()) + enumFuzzyMap.set(getNormalizedEnumValue(value), value.normalize()); } -exports.fields.position.enumFuzzyMap = enumFuzzyMap +exports.fields.position.enumFuzzyMap = enumFuzzyMap; -exports.getNormalizedEnumValue = getNormalizedEnumValue +exports.getNormalizedEnumValue = getNormalizedEnumValue; function harmlessProj(coordinates) { try { - return proj(coordinates) - } catch {} + return proj(coordinates); + } catch { + // empty + } } -function validateCoords(row, {addError}) { - if (row.parsedValues.numero && row.parsedValues.numero !== 99_999 && (!row.rawValues.long || !row.rawValues.lat)) { - addError('longlat_vides') +function validateCoords(row, { addError }) { + if ( + row.parsedValues.numero && + row.parsedValues.numero !== 99_999 && + (!row.rawValues.long || !row.rawValues.lat) + ) { + addError("longlat_vides"); } - const {long, lat, x, y} = row.parsedValues + const { long, lat, x, y } = row.parsedValues; if (long !== undefined && lat !== undefined) { - const projectedCoordInMeters = harmlessProj([long, lat]) + const projectedCoordInMeters = harmlessProj([long, lat]); if (projectedCoordInMeters) { if (x !== undefined && y !== undefined) { - const distance = Math.sqrt(((x - projectedCoordInMeters[0]) ** 2) + ((y - projectedCoordInMeters[1]) ** 2)) - const tolerance = 10 + const distance = Math.sqrt( + (x - projectedCoordInMeters[0]) ** 2 + + (y - projectedCoordInMeters[1]) ** 2, + ); + const tolerance = 10; if (distance > tolerance) { - addError('longlat_xy_incoherents') + addError("longlat_xy_incoherents"); } } } else { // Not in France or error - addError('longlat_invalides') + addError("longlat_invalides"); } } } @@ -477,74 +500,78 @@ function checkBanIds(row, addError) { // SI IL Y A UN id_ban_toponyme, IL Y A UN id_ban_commune // SI IL Y A UN id_ban_adresse, IL Y A UN id_ban_toponyme ET DONC IL Y A IL Y A UN id_ban_commune if ( - (!row.parsedValues.id_ban_commune && row.parsedValues.id_ban_toponyme) - || ((!row.parsedValues.id_ban_commune || !row.parsedValues.id_ban_toponyme) && row.parsedValues.id_ban_adresse) + (!row.parsedValues.id_ban_commune && row.parsedValues.id_ban_toponyme) || + ((!row.parsedValues.id_ban_commune || !row.parsedValues.id_ban_toponyme) && + row.parsedValues.id_ban_adresse) ) { - addError('incoherence_ids_ban') + addError("incoherence_ids_ban"); } // LES IDS id_ban_commune / id_ban_toponyme / id_ban_adresse NE PEUVENT PAS ËTRE IDENTIQUES if ( - ( - row.parsedValues.id_ban_commune - && row.parsedValues.id_ban_toponyme - && row.parsedValues.id_ban_commune === row.parsedValues.id_ban_toponyme - ) || ( - row.parsedValues.id_ban_commune - && row.parsedValues.id_ban_adresse - && row.parsedValues.id_ban_commune === row.parsedValues.id_ban_adresse - ) || ( - row.parsedValues.id_ban_adresse - && row.parsedValues.id_ban_toponyme - && row.parsedValues.id_ban_toponyme === row.parsedValues.id_ban_adresse - ) + (row.parsedValues.id_ban_commune && + row.parsedValues.id_ban_toponyme && + row.parsedValues.id_ban_commune === row.parsedValues.id_ban_toponyme) || + (row.parsedValues.id_ban_commune && + row.parsedValues.id_ban_adresse && + row.parsedValues.id_ban_commune === row.parsedValues.id_ban_adresse) || + (row.parsedValues.id_ban_adresse && + row.parsedValues.id_ban_toponyme && + row.parsedValues.id_ban_toponyme === row.parsedValues.id_ban_adresse) ) { - addError('incoherence_ids_ban') + addError("incoherence_ids_ban"); } // SI IL Y A UN id_ban_toponyme, id_ban_commune ET UN numero, IL FAUT UN id_ban_adresse if ( - row.parsedValues.id_ban_commune - && row.parsedValues.id_ban_toponyme - && row.parsedValues.numero - && row.parsedValues.numero !== 99_999 - && !row.parsedValues.id_ban_adresse + row.parsedValues.id_ban_commune && + row.parsedValues.id_ban_toponyme && + row.parsedValues.numero && + row.parsedValues.numero !== 99_999 && + !row.parsedValues.id_ban_adresse ) { - addError('id_ban_adresses_required') + addError("id_ban_adresses_required"); } } -exports.row = (row, {addError}) => { +exports.row = (row, { addError }) => { if (row.parsedValues.cle_interop && row.parsedValues.numero) { - const {numeroVoie} = row.additionalValues.cle_interop + const { numeroVoie } = row.additionalValues.cle_interop; if (Number.parseInt(numeroVoie, 10) !== row.parsedValues.numero) { - addError('incoherence_numero') + addError("incoherence_numero"); } } if (!row.parsedValues.cle_interop && !row.parsedValues.commune_insee) { - addError('commune_manquante') + addError("commune_manquante"); } - if (row.parsedValues.numero && row.parsedValues.numero !== 99_999 && !row.rawValues.position) { - addError('position_manquante') + if ( + row.parsedValues.numero && + row.parsedValues.numero !== 99_999 && + !row.rawValues.position + ) { + addError("position_manquante"); } - validateCoords(row, {addError}) + validateCoords(row, { addError }); if (row.parsedValues.numero === undefined || !row.parsedValues.voie_nom) { - addError('adresse_incomplete') + addError("adresse_incomplete"); } - if (row.parsedValues.commune_deleguee_insee && row.parsedValues.commune_insee) { - const codeCommune = row.parsedValues.commune_insee - const codeAncienneCommune = row.parsedValues.commune_deleguee_insee - const communeActuelle = getCommuneActuelle(codeAncienneCommune) + if ( + row.parsedValues.commune_deleguee_insee && + row.parsedValues.commune_insee + ) { + const codeCommune = row.parsedValues.commune_insee; + const codeAncienneCommune = row.parsedValues.commune_deleguee_insee; + const communeActuelle = getCommuneActuelle(codeAncienneCommune); if (communeActuelle && communeActuelle.code !== codeCommune) { - addError('chef_lieu_invalide') + addError("chef_lieu_invalide"); } } - checkBanIds(row, addError) -} + checkBanIds(row, addError); +}; diff --git a/lib/schema/profiles/1.1-strict.js b/lib/schema/profiles/1.1-strict.js index b3b03eb..7516026 100644 --- a/lib/schema/profiles/1.1-strict.js +++ b/lib/schema/profiles/1.1-strict.js @@ -1,78 +1,76 @@ const errors = [ - 'cle_interop.valeur_manquante', - 'cle_interop.casse_invalide', - 'cle_interop.structure_invalide', - 'cle_interop.commune_invalide', - 'cle_interop.voie_invalide', - 'cle_interop.voie_non_renseignee', - 'cle_interop.numero_invalide', - 'cle_interop.numero_prefixe_manquant', - 'voie_nom.valeur_manquante', - 'voie_nom.caractere_invalide', - 'voie_nom_@@.caractere_invalide', - 'numero.valeur_manquante', - 'numero.contient_prefixe', - 'numero.type_invalide', - 'suffixe.debut_invalide', - 'position.valeur_invalide', - 'x.valeur_invalide', - 'x.separateur_decimal_invalide', - 'y.valeur_invalide', - 'y.separateur_decimal_invalide', - 'long.valeur_invalide', - 'long.separateur_decimal_invalide', - 'lat.valeur_invalide', - 'lat.separateur_decimal_invalide', - 'source.valeur_manquante', - 'date_der_maj.valeur_manquante', - 'date_der_maj.date_invalide', - 'row.incoherence_numero', - 'row.position_manquante', - 'row.adresse_incomplete', + "cle_interop.valeur_manquante", + "cle_interop.casse_invalide", + "cle_interop.structure_invalide", + "cle_interop.commune_invalide", + "cle_interop.voie_invalide", + "cle_interop.voie_non_renseignee", + "cle_interop.numero_invalide", + "cle_interop.numero_prefixe_manquant", + "voie_nom.valeur_manquante", + "voie_nom.caractere_invalide", + "voie_nom_@@.caractere_invalide", + "numero.valeur_manquante", + "numero.contient_prefixe", + "numero.type_invalide", + "suffixe.debut_invalide", + "position.valeur_invalide", + "x.valeur_invalide", + "x.separateur_decimal_invalide", + "y.valeur_invalide", + "y.separateur_decimal_invalide", + "long.valeur_invalide", + "long.separateur_decimal_invalide", + "lat.valeur_invalide", + "lat.separateur_decimal_invalide", + "source.valeur_manquante", + "date_der_maj.valeur_manquante", + "date_der_maj.date_invalide", + "row.incoherence_numero", + "row.position_manquante", + "row.adresse_incomplete", - 'field.cle_interop.missing', - 'field.commune_nom.missing', - 'field.uid_adresse.missing', - 'field.voie_nom.missing', - 'field.numero.missing', - 'field.suffixe.missing', - 'field.position.missing', - 'field.long.missing', - 'field.lat.missing', - 'field.x.missing', - 'field.y.missing', - 'field.source.missing', - 'field.date_der_maj.missing', + "field.cle_interop.missing", + "field.commune_nom.missing", + "field.uid_adresse.missing", + "field.voie_nom.missing", + "field.numero.missing", + "field.suffixe.missing", + "field.position.missing", + "field.long.missing", + "field.lat.missing", + "field.x.missing", + "field.y.missing", + "field.source.missing", + "field.date_der_maj.missing", - 'field.cle_interop.fuzzy', - 'field.commune_nom.fuzzy', - 'field.uid_adresse.fuzzy', - 'field.voie_nom.fuzzy', - 'field.numero.fuzzy', - 'field.suffixe.fuzzy', - 'field.position.fuzzy', - 'field.long.fuzzy', - 'field.lat.fuzzy', - 'field.x.fuzzy', - 'field.y.fuzzy', - 'field.source.fuzzy', - 'field.date_der_maj.fuzzy', + "field.cle_interop.fuzzy", + "field.commune_nom.fuzzy", + "field.uid_adresse.fuzzy", + "field.voie_nom.fuzzy", + "field.numero.fuzzy", + "field.suffixe.fuzzy", + "field.position.fuzzy", + "field.long.fuzzy", + "field.lat.fuzzy", + "field.x.fuzzy", + "field.y.fuzzy", + "field.source.fuzzy", + "field.date_der_maj.fuzzy", - 'file.encoding.non_standard', - 'file.delimiter.non_standard', - 'file.linebreak.non_standard' -] + "file.encoding.non_standard", + "file.delimiter.non_standard", + "file.linebreak.non_standard", +]; -const warnings = [ - 'position.enum_fuzzy' -] +const warnings = ["position.enum_fuzzy"]; module.exports = { - code: '1.1-strict', - name: 'BAL 1.1 Strict', + code: "1.1-strict", + name: "BAL 1.1 Strict", isUsed: false, relax: false, errors, warnings, - format: '1.1' -} + format: "1.1", +}; diff --git a/lib/schema/profiles/1.2-strict.js b/lib/schema/profiles/1.2-strict.js index 56299e0..5375b42 100644 --- a/lib/schema/profiles/1.2-strict.js +++ b/lib/schema/profiles/1.2-strict.js @@ -1,92 +1,90 @@ const errors = [ - 'cle_interop.valeur_manquante', - 'cle_interop.casse_invalide', - 'cle_interop.structure_invalide', - 'cle_interop.commune_invalide', - 'cle_interop.voie_invalide', - 'cle_interop.voie_non_renseignee', - 'cle_interop.numero_invalide', - 'cle_interop.numero_prefixe_manquant', - 'voie_nom.valeur_manquante', - 'voie_nom.caractere_invalide', - 'voie_nom_@@.caractere_invalide', - 'numero.valeur_manquante', - 'numero.contient_prefixe', - 'numero.type_invalide', - 'suffixe.debut_invalide', - 'commune_insee.commune_invalide', - 'commune_deleguee_insee.commune_invalide', - 'position.valeur_invalide', - 'x.valeur_invalide', - 'x.separateur_decimal_invalide', - 'y.valeur_invalide', - 'y.separateur_decimal_invalide', - 'long.valeur_invalide', - 'long.separateur_decimal_invalide', - 'lat.valeur_invalide', - 'lat.separateur_decimal_invalide', - 'cad_parcelles.valeur_invalide', - 'cad_parcelles.pipe_debut_fin', - 'source.valeur_manquante', - 'date_der_maj.valeur_manquante', - 'date_der_maj.date_invalide', - 'row.incoherence_numero', - 'row.position_manquante', - 'row.adresse_incomplete', + "cle_interop.valeur_manquante", + "cle_interop.casse_invalide", + "cle_interop.structure_invalide", + "cle_interop.commune_invalide", + "cle_interop.voie_invalide", + "cle_interop.voie_non_renseignee", + "cle_interop.numero_invalide", + "cle_interop.numero_prefixe_manquant", + "voie_nom.valeur_manquante", + "voie_nom.caractere_invalide", + "voie_nom_@@.caractere_invalide", + "numero.valeur_manquante", + "numero.contient_prefixe", + "numero.type_invalide", + "suffixe.debut_invalide", + "commune_insee.commune_invalide", + "commune_deleguee_insee.commune_invalide", + "position.valeur_invalide", + "x.valeur_invalide", + "x.separateur_decimal_invalide", + "y.valeur_invalide", + "y.separateur_decimal_invalide", + "long.valeur_invalide", + "long.separateur_decimal_invalide", + "lat.valeur_invalide", + "lat.separateur_decimal_invalide", + "cad_parcelles.valeur_invalide", + "cad_parcelles.pipe_debut_fin", + "source.valeur_manquante", + "date_der_maj.valeur_manquante", + "date_der_maj.date_invalide", + "row.incoherence_numero", + "row.position_manquante", + "row.adresse_incomplete", - 'field.cle_interop.missing', - 'field.commune_insee.missing', - 'field.commune_nom.missing', - 'field.commune_deleguee_insee.missing', - 'field.commune_deleguee_nom.missing', - 'field.uid_adresse.missing', - 'field.voie_nom.missing', - 'field.lieudit_complement_nom.missing', - 'field.numero.missing', - 'field.suffixe.missing', - 'field.position.missing', - 'field.long.missing', - 'field.lat.missing', - 'field.x.missing', - 'field.y.missing', - 'field.cad_parcelles.missing', - 'field.source.missing', - 'field.date_der_maj.missing', + "field.cle_interop.missing", + "field.commune_insee.missing", + "field.commune_nom.missing", + "field.commune_deleguee_insee.missing", + "field.commune_deleguee_nom.missing", + "field.uid_adresse.missing", + "field.voie_nom.missing", + "field.lieudit_complement_nom.missing", + "field.numero.missing", + "field.suffixe.missing", + "field.position.missing", + "field.long.missing", + "field.lat.missing", + "field.x.missing", + "field.y.missing", + "field.cad_parcelles.missing", + "field.source.missing", + "field.date_der_maj.missing", - 'field.cle_interop.fuzzy', - 'field.commune_insee.fuzzy', - 'field.commune_nom.fuzzy', - 'field.commune_deleguee_insee.fuzzy', - 'field.commune_deleguee_nom.fuzzy', - 'field.uid_adresse.fuzzy', - 'field.voie_nom.fuzzy', - 'field.lieudit_complement_nom.fuzzy', - 'field.numero.fuzzy', - 'field.suffixe.fuzzy', - 'field.position.fuzzy', - 'field.long.fuzzy', - 'field.lat.fuzzy', - 'field.x.fuzzy', - 'field.y.fuzzy', - 'field.cad_parcelles.fuzzy', - 'field.source.fuzzy', - 'field.date_der_maj.fuzzy', + "field.cle_interop.fuzzy", + "field.commune_insee.fuzzy", + "field.commune_nom.fuzzy", + "field.commune_deleguee_insee.fuzzy", + "field.commune_deleguee_nom.fuzzy", + "field.uid_adresse.fuzzy", + "field.voie_nom.fuzzy", + "field.lieudit_complement_nom.fuzzy", + "field.numero.fuzzy", + "field.suffixe.fuzzy", + "field.position.fuzzy", + "field.long.fuzzy", + "field.lat.fuzzy", + "field.x.fuzzy", + "field.y.fuzzy", + "field.cad_parcelles.fuzzy", + "field.source.fuzzy", + "field.date_der_maj.fuzzy", - 'file.encoding.non_standard', - 'file.delimiter.non_standard', - 'file.linebreak.non_standard' -] + "file.encoding.non_standard", + "file.delimiter.non_standard", + "file.linebreak.non_standard", +]; -const warnings = [ - 'position.enum_fuzzy' -] +const warnings = ["position.enum_fuzzy"]; module.exports = { - code: '1.2-strict', - name: 'BAL 1.2 Strict', + code: "1.2-strict", + name: "BAL 1.2 Strict", isUsed: false, relax: false, errors, warnings, - format: '1.2' -} + format: "1.2", +}; diff --git a/lib/schema/profiles/1.3-relax.js b/lib/schema/profiles/1.3-relax.js index fcc710a..2419b8f 100644 --- a/lib/schema/profiles/1.3-relax.js +++ b/lib/schema/profiles/1.3-relax.js @@ -1,112 +1,109 @@ const errors = [ - 'cle_interop.structure_invalide', - 'cle_interop.commune_invalide', - 'cle_interop.numero_invalide', - 'voie_nom.valeur_manquante', - 'voie_nom.trop_court', - 'voie_nom.trop_long', - 'voie_nom.caractere_invalide', - 'numero.valeur_manquante', - 'numero.type_invalide', - 'numero.trop_grand', - 'suffixe.debut_invalide', - 'suffixe.trop_long', - 'commune_insee.commune_invalide', - 'x.valeur_invalide', - 'y.valeur_invalide', - 'long.valeur_invalide', - 'lat.valeur_invalide', - 'row.incoherence_numero', - 'row.commune_manquante', - 'row.longlat_vides', - 'row.longlat_invalides', - 'row.adresse_incomplete', - 'field.voie_nom.missing', - 'field.numero.missing', - 'rows.empty' -] + "cle_interop.structure_invalide", + "cle_interop.commune_invalide", + "cle_interop.numero_invalide", + "voie_nom.valeur_manquante", + "voie_nom.trop_court", + "voie_nom.trop_long", + "voie_nom.caractere_invalide", + "numero.valeur_manquante", + "numero.type_invalide", + "numero.trop_grand", + "suffixe.debut_invalide", + "suffixe.trop_long", + "commune_insee.commune_invalide", + "x.valeur_invalide", + "y.valeur_invalide", + "long.valeur_invalide", + "lat.valeur_invalide", + "row.incoherence_numero", + "row.commune_manquante", + "row.longlat_vides", + "row.longlat_invalides", + "row.adresse_incomplete", + "field.voie_nom.missing", + "field.numero.missing", + "rows.empty", +]; const warnings = [ - 'cle_interop.valeur_manquante', - 'cle_interop.casse_invalide', - 'cle_interop.voie_invalide', - 'cle_interop.numero_prefixe_manquant', - 'cle_interop.commune_ancienne', - 'numero.contient_prefixe', - 'voie_nom.casse_incorrecte', - 'voie_nom.contient_tiret_bas', - 'voie_nom_@@.casse_incorrecte', - 'voie_nom_@@.contient_tiret_bas', - 'voie_nom_@@.trop_court', - 'voie_nom_@@.trop_long', - 'voie_nom_@@.caractere_invalide', - 'commune_insee.commune_ancienne', - 'commune_deleguee_insee.commune_invalide', - 'commune_deleguee_insee.commune_actuelle_non_deleguee', - 'commune_deleguee_insee.commune_ancienne_non_deleguee', - 'position.enum_fuzzy', - 'position.valeur_invalide', - 'x.separateur_decimal_invalide', - 'y.separateur_decimal_invalide', - 'long.separateur_decimal_invalide', - 'lat.separateur_decimal_invalide', - 'cad_parcelles.valeur_invalide', - 'cad_parcelles.pipe_debut_fin', - 'source.valeur_manquante', - 'date_der_maj.valeur_manquante', - 'date_der_maj.date_invalide', - 'date_der_maj.date_ancienne', - 'date_der_maj.date_future', - 'certification_commune.valeur_invalide', - 'row.position_manquante', - 'row.chef_lieu_invalide', - 'row.longlat_xy_incoherents', - 'field.suffixe.missing', - 'field.cle_interop.missing', - 'field.commune_insee.missing', - 'field.position.missing', - 'field.long.missing', - 'field.lat.missing', - 'field.x.missing', - 'field.y.missing', - 'field.source.missing', - 'field.date_der_maj.missing', - 'field.certification_commune.missing', + "cle_interop.valeur_manquante", + "cle_interop.casse_invalide", + "cle_interop.voie_invalide", + "cle_interop.numero_prefixe_manquant", + "cle_interop.commune_ancienne", + "numero.contient_prefixe", + "voie_nom.casse_incorrecte", + "voie_nom.contient_tiret_bas", + "voie_nom_@@.casse_incorrecte", + "voie_nom_@@.contient_tiret_bas", + "voie_nom_@@.trop_court", + "voie_nom_@@.trop_long", + "voie_nom_@@.caractere_invalide", + "commune_insee.commune_ancienne", + "commune_deleguee_insee.commune_invalide", + "commune_deleguee_insee.commune_actuelle_non_deleguee", + "commune_deleguee_insee.commune_ancienne_non_deleguee", + "position.enum_fuzzy", + "position.valeur_invalide", + "x.separateur_decimal_invalide", + "y.separateur_decimal_invalide", + "long.separateur_decimal_invalide", + "lat.separateur_decimal_invalide", + "cad_parcelles.valeur_invalide", + "cad_parcelles.pipe_debut_fin", + "source.valeur_manquante", + "date_der_maj.valeur_manquante", + "date_der_maj.date_invalide", + "date_der_maj.date_ancienne", + "date_der_maj.date_future", + "certification_commune.valeur_invalide", + "row.position_manquante", + "row.chef_lieu_invalide", + "row.longlat_xy_incoherents", + "field.suffixe.missing", + "field.cle_interop.missing", + "field.commune_insee.missing", + "field.position.missing", + "field.long.missing", + "field.lat.missing", + "field.x.missing", + "field.y.missing", + "field.source.missing", + "field.date_der_maj.missing", + "field.certification_commune.missing", - 'cle_interop.espaces_debut_fin', - 'commune_insee.espaces_debut_fin', - 'commune_nom.espaces_debut_fin', - 'commune_deleguee_insee.espaces_debut_fin', - 'commune_deleguee_nom.espaces_debut_fin', - 'uid_adresse.espaces_debut_fin', - 'voie_nom.espaces_debut_fin', - 'voie_nom_@@.espaces_debut_fin', - 'lieudit_complement_nom.espaces_debut_fin', - 'lieudit_complement_nom_@@.espaces_debut_fin', - 'numero.espaces_debut_fin', - 'suffixe.espaces_debut_fin', - 'position.espaces_debut_fin', - 'long.espaces_debut_fin', - 'lat.espaces_debut_fin', - 'x.espaces_debut_fin', - 'y.espaces_debut_fin', - 'cad_parcelles.espaces_debut_fin', - 'source.espaces_debut_fin', - 'date_der_maj.espaces_debut_fin' -] + "cle_interop.espaces_debut_fin", + "commune_insee.espaces_debut_fin", + "commune_nom.espaces_debut_fin", + "commune_deleguee_insee.espaces_debut_fin", + "commune_deleguee_nom.espaces_debut_fin", + "uid_adresse.espaces_debut_fin", + "voie_nom.espaces_debut_fin", + "voie_nom_@@.espaces_debut_fin", + "lieudit_complement_nom.espaces_debut_fin", + "lieudit_complement_nom_@@.espaces_debut_fin", + "numero.espaces_debut_fin", + "suffixe.espaces_debut_fin", + "position.espaces_debut_fin", + "long.espaces_debut_fin", + "lat.espaces_debut_fin", + "x.espaces_debut_fin", + "y.espaces_debut_fin", + "cad_parcelles.espaces_debut_fin", + "source.espaces_debut_fin", + "date_der_maj.espaces_debut_fin", +]; -const infos = [ - 'cle_interop.voie_non_renseignee' -] +const infos = ["cle_interop.voie_non_renseignee"]; module.exports = { - code: '1.3-relax', - name: 'BAL 1.3 Relax', + code: "1.3-relax", + name: "BAL 1.3 Relax", isUsed: false, relax: true, errors, warnings, infos, - format: '1.3' -} - + format: "1.3", +}; diff --git a/lib/schema/profiles/1.3-strict.js b/lib/schema/profiles/1.3-strict.js index 58b2141..9445eaf 100644 --- a/lib/schema/profiles/1.3-strict.js +++ b/lib/schema/profiles/1.3-strict.js @@ -1,95 +1,93 @@ const errors = [ - 'cle_interop.valeur_manquante', - 'cle_interop.casse_invalide', - 'cle_interop.structure_invalide', - 'cle_interop.commune_invalide', - 'cle_interop.voie_invalide', - 'cle_interop.voie_non_renseignee', - 'cle_interop.numero_invalide', - 'cle_interop.numero_prefixe_manquant', - 'voie_nom.valeur_manquante', - 'voie_nom.caractere_invalide', - 'voie_nom_@@.caractere_invalide', - 'numero.valeur_manquante', - 'numero.contient_prefixe', - 'numero.type_invalide', - 'suffixe.debut_invalide', - 'commune_insee.commune_invalide', - 'commune_deleguee_insee.commune_invalide', - 'position.valeur_invalide', - 'x.valeur_invalide', - 'x.separateur_decimal_invalide', - 'y.valeur_invalide', - 'y.separateur_decimal_invalide', - 'long.valeur_invalide', - 'long.separateur_decimal_invalide', - 'lat.valeur_invalide', - 'lat.separateur_decimal_invalide', - 'cad_parcelles.valeur_invalide', - 'cad_parcelles.pipe_debut_fin', - 'source.valeur_manquante', - 'date_der_maj.valeur_manquante', - 'date_der_maj.date_invalide', - 'certification_commune.valeur_invalide', - 'row.incoherence_numero', - 'row.position_manquante', - 'row.adresse_incomplete', + "cle_interop.valeur_manquante", + "cle_interop.casse_invalide", + "cle_interop.structure_invalide", + "cle_interop.commune_invalide", + "cle_interop.voie_invalide", + "cle_interop.voie_non_renseignee", + "cle_interop.numero_invalide", + "cle_interop.numero_prefixe_manquant", + "voie_nom.valeur_manquante", + "voie_nom.caractere_invalide", + "voie_nom_@@.caractere_invalide", + "numero.valeur_manquante", + "numero.contient_prefixe", + "numero.type_invalide", + "suffixe.debut_invalide", + "commune_insee.commune_invalide", + "commune_deleguee_insee.commune_invalide", + "position.valeur_invalide", + "x.valeur_invalide", + "x.separateur_decimal_invalide", + "y.valeur_invalide", + "y.separateur_decimal_invalide", + "long.valeur_invalide", + "long.separateur_decimal_invalide", + "lat.valeur_invalide", + "lat.separateur_decimal_invalide", + "cad_parcelles.valeur_invalide", + "cad_parcelles.pipe_debut_fin", + "source.valeur_manquante", + "date_der_maj.valeur_manquante", + "date_der_maj.date_invalide", + "certification_commune.valeur_invalide", + "row.incoherence_numero", + "row.position_manquante", + "row.adresse_incomplete", - 'field.cle_interop.missing', - 'field.commune_insee.missing', - 'field.commune_nom.missing', - 'field.commune_deleguee_insee.missing', - 'field.commune_deleguee_nom.missing', - 'field.uid_adresse.missing', - 'field.voie_nom.missing', - 'field.lieudit_complement_nom.missing', - 'field.numero.missing', - 'field.suffixe.missing', - 'field.position.missing', - 'field.long.missing', - 'field.lat.missing', - 'field.x.missing', - 'field.y.missing', - 'field.cad_parcelles.missing', - 'field.source.missing', - 'field.date_der_maj.missing', - 'field.certification_commune.missing', + "field.cle_interop.missing", + "field.commune_insee.missing", + "field.commune_nom.missing", + "field.commune_deleguee_insee.missing", + "field.commune_deleguee_nom.missing", + "field.uid_adresse.missing", + "field.voie_nom.missing", + "field.lieudit_complement_nom.missing", + "field.numero.missing", + "field.suffixe.missing", + "field.position.missing", + "field.long.missing", + "field.lat.missing", + "field.x.missing", + "field.y.missing", + "field.cad_parcelles.missing", + "field.source.missing", + "field.date_der_maj.missing", + "field.certification_commune.missing", - 'field.cle_interop.fuzzy', - 'field.commune_insee.fuzzy', - 'field.commune_nom.fuzzy', - 'field.commune_deleguee_insee.fuzzy', - 'field.commune_deleguee_nom.fuzzy', - 'field.uid_adresse.fuzzy', - 'field.voie_nom.fuzzy', - 'field.lieudit_complement_nom.fuzzy', - 'field.numero.fuzzy', - 'field.suffixe.fuzzy', - 'field.position.fuzzy', - 'field.long.fuzzy', - 'field.lat.fuzzy', - 'field.x.fuzzy', - 'field.y.fuzzy', - 'field.cad_parcelles.fuzzy', - 'field.source.fuzzy', - 'field.date_der_maj.fuzzy', - 'field.certification_commune.fuzzy', + "field.cle_interop.fuzzy", + "field.commune_insee.fuzzy", + "field.commune_nom.fuzzy", + "field.commune_deleguee_insee.fuzzy", + "field.commune_deleguee_nom.fuzzy", + "field.uid_adresse.fuzzy", + "field.voie_nom.fuzzy", + "field.lieudit_complement_nom.fuzzy", + "field.numero.fuzzy", + "field.suffixe.fuzzy", + "field.position.fuzzy", + "field.long.fuzzy", + "field.lat.fuzzy", + "field.x.fuzzy", + "field.y.fuzzy", + "field.cad_parcelles.fuzzy", + "field.source.fuzzy", + "field.date_der_maj.fuzzy", + "field.certification_commune.fuzzy", - 'file.encoding.non_standard', - 'file.delimiter.non_standard', - 'file.linebreak.non_standard' -] + "file.encoding.non_standard", + "file.delimiter.non_standard", + "file.linebreak.non_standard", +]; -const warnings = [ - 'position.enum_fuzzy' -] +const warnings = ["position.enum_fuzzy"]; module.exports = { - code: '1.3-strict', - name: 'BAL 1.3 Strict', + code: "1.3-strict", + name: "BAL 1.3 Strict", isUsed: true, relax: false, errors, warnings, - format: '1.3' -} + format: "1.3", +}; diff --git a/lib/schema/profiles/1.3.js b/lib/schema/profiles/1.3.js index d3fc9a9..e43868f 100644 --- a/lib/schema/profiles/1.3.js +++ b/lib/schema/profiles/1.3.js @@ -1,119 +1,115 @@ - const errors = [ - 'cle_interop.structure_invalide', - 'cle_interop.commune_invalide', - 'cle_interop.numero_invalide', - 'cle_interop.valeur_manquante', - 'cle_interop.numero_prefixe_manquant', - 'cle_interop.casse_invalide', - 'voie_nom.valeur_manquante', - 'voie_nom.trop_court', - 'voie_nom.trop_long', - 'voie_nom.caractere_invalide', - 'numero.valeur_manquante', - 'numero.type_invalide', - 'numero.trop_grand', - 'numero.contient_prefixe', - 'suffixe.debut_invalide', - 'suffixe.trop_long', - 'date_der_maj.date_invalide', - 'commune_insee.commune_invalide', - 'commune_insee.valeur_manquante', - 'commune_insee.espaces_debut_fin', - 'x.valeur_invalide', - 'y.valeur_invalide', - 'x.separateur_decimal_invalide', - 'y.separateur_decimal_invalide', - 'long.valeur_invalide', - 'lat.valeur_invalide', - 'long.separateur_decimal_invalide', - 'lat.separateur_decimal_invalide', - 'row.incoherence_numero', - 'row.commune_manquante', - 'row.longlat_vides', - 'row.longlat_invalides', - 'row.adresse_incomplete', - 'field.commune_insee.missing', - 'field.voie_nom.missing', - 'field.numero.missing', - 'field.commune_nom.long', - 'field.commune_nom.lat', - 'suffixe.espaces_debut_fin', - 'file.encoding.non_standard', - 'file.delimiter.non_standard', - 'file.linebreak.non_standard', - 'rows.empty' -] + "cle_interop.structure_invalide", + "cle_interop.commune_invalide", + "cle_interop.numero_invalide", + "cle_interop.valeur_manquante", + "cle_interop.numero_prefixe_manquant", + "cle_interop.casse_invalide", + "voie_nom.valeur_manquante", + "voie_nom.trop_court", + "voie_nom.trop_long", + "voie_nom.caractere_invalide", + "numero.valeur_manquante", + "numero.type_invalide", + "numero.trop_grand", + "numero.contient_prefixe", + "suffixe.debut_invalide", + "suffixe.trop_long", + "date_der_maj.date_invalide", + "commune_insee.commune_invalide", + "commune_insee.valeur_manquante", + "commune_insee.espaces_debut_fin", + "x.valeur_invalide", + "y.valeur_invalide", + "x.separateur_decimal_invalide", + "y.separateur_decimal_invalide", + "long.valeur_invalide", + "lat.valeur_invalide", + "long.separateur_decimal_invalide", + "lat.separateur_decimal_invalide", + "row.incoherence_numero", + "row.commune_manquante", + "row.longlat_vides", + "row.longlat_invalides", + "row.adresse_incomplete", + "field.commune_insee.missing", + "field.voie_nom.missing", + "field.numero.missing", + "field.commune_nom.long", + "field.commune_nom.lat", + "suffixe.espaces_debut_fin", + "file.encoding.non_standard", + "file.delimiter.non_standard", + "file.linebreak.non_standard", + "rows.empty", +]; const warnings = [ - 'cle_interop.voie_invalide', - 'cle_interop.commune_ancienne', - 'voie_nom.casse_incorrecte', - 'voie_nom.contient_tiret_bas', - 'voie_nom_@@.casse_incorrecte', - 'voie_nom_@@.contient_tiret_bas', - 'voie_nom_@@.trop_court', - 'voie_nom_@@.trop_long', - 'voie_nom_@@.caractere_invalide', - 'commune_insee.commune_ancienne', - 'commune_deleguee_insee.commune_invalide', - 'commune_deleguee_insee.commune_actuelle_non_deleguee', - 'commune_deleguee_insee.commune_ancienne_non_deleguee', - 'position.enum_fuzzy', - 'position.valeur_invalide', - 'cad_parcelles.valeur_invalide', - 'cad_parcelles.pipe_debut_fin', - 'source.valeur_manquante', - 'date_der_maj.valeur_manquante', - 'date_der_maj.date_ancienne', - 'date_der_maj.date_future', - 'certification_commune.valeur_invalide', - 'row.position_manquante', - 'row.chef_lieu_invalide', - 'row.longlat_xy_incoherents', - 'field.suffixe.missing', - 'field.cle_interop.missing', - 'field.position.missing', - 'field.long.missing', - 'field.lat.missing', - 'field.x.missing', - 'field.y.missing', - 'field.source.missing', - 'field.date_der_maj.missing', - 'field.certification_commune.missing', + "cle_interop.voie_invalide", + "cle_interop.commune_ancienne", + "voie_nom.casse_incorrecte", + "voie_nom.contient_tiret_bas", + "voie_nom_@@.casse_incorrecte", + "voie_nom_@@.contient_tiret_bas", + "voie_nom_@@.trop_court", + "voie_nom_@@.trop_long", + "voie_nom_@@.caractere_invalide", + "commune_insee.commune_ancienne", + "commune_deleguee_insee.commune_invalide", + "commune_deleguee_insee.commune_actuelle_non_deleguee", + "commune_deleguee_insee.commune_ancienne_non_deleguee", + "position.enum_fuzzy", + "position.valeur_invalide", + "cad_parcelles.valeur_invalide", + "cad_parcelles.pipe_debut_fin", + "source.valeur_manquante", + "date_der_maj.valeur_manquante", + "date_der_maj.date_ancienne", + "date_der_maj.date_future", + "certification_commune.valeur_invalide", + "row.position_manquante", + "row.chef_lieu_invalide", + "row.longlat_xy_incoherents", + "field.suffixe.missing", + "field.cle_interop.missing", + "field.position.missing", + "field.long.missing", + "field.lat.missing", + "field.x.missing", + "field.y.missing", + "field.source.missing", + "field.date_der_maj.missing", + "field.certification_commune.missing", - 'cle_interop.espaces_debut_fin', - 'commune_nom.espaces_debut_fin', - 'commune_deleguee_insee.espaces_debut_fin', - 'commune_deleguee_nom.espaces_debut_fin', - 'uid_adresse.espaces_debut_fin', - 'voie_nom.espaces_debut_fin', - 'voie_nom_@@.espaces_debut_fin', - 'lieudit_complement_nom.espaces_debut_fin', - 'lieudit_complement_nom_@@.espaces_debut_fin', - 'numero.espaces_debut_fin', - 'position.espaces_debut_fin', - 'long.espaces_debut_fin', - 'lat.espaces_debut_fin', - 'x.espaces_debut_fin', - 'y.espaces_debut_fin', - 'cad_parcelles.espaces_debut_fin', - 'source.espaces_debut_fin', - 'date_der_maj.espaces_debut_fin' -] + "cle_interop.espaces_debut_fin", + "commune_nom.espaces_debut_fin", + "commune_deleguee_insee.espaces_debut_fin", + "commune_deleguee_nom.espaces_debut_fin", + "uid_adresse.espaces_debut_fin", + "voie_nom.espaces_debut_fin", + "voie_nom_@@.espaces_debut_fin", + "lieudit_complement_nom.espaces_debut_fin", + "lieudit_complement_nom_@@.espaces_debut_fin", + "numero.espaces_debut_fin", + "position.espaces_debut_fin", + "long.espaces_debut_fin", + "lat.espaces_debut_fin", + "x.espaces_debut_fin", + "y.espaces_debut_fin", + "cad_parcelles.espaces_debut_fin", + "source.espaces_debut_fin", + "date_der_maj.espaces_debut_fin", +]; -const infos = [ - 'cle_interop.voie_non_renseignee' -] +const infos = ["cle_interop.voie_non_renseignee"]; module.exports = { - code: '1.3', - name: 'BAL 1.3 (défaut)', + code: "1.3", + name: "BAL 1.3 (défaut)", isUsed: true, relax: false, errors, warnings, infos, - format: '1.3' -} - + format: "1.3", +}; diff --git a/lib/schema/profiles/1.4-strict.js b/lib/schema/profiles/1.4-strict.js index 19d979c..7c8e26e 100644 --- a/lib/schema/profiles/1.4-strict.js +++ b/lib/schema/profiles/1.4-strict.js @@ -1,130 +1,126 @@ - const errors = [ - 'cle_interop.structure_invalide', - 'cle_interop.commune_invalide', - 'cle_interop.numero_invalide', - 'cle_interop.valeur_manquante', - 'cle_interop.numero_prefixe_manquant', - 'cle_interop.casse_invalide', - 'voie_nom.valeur_manquante', - 'voie_nom.trop_court', - 'voie_nom.trop_long', - 'voie_nom.caractere_invalide', - 'numero.valeur_manquante', - 'numero.type_invalide', - 'numero.trop_grand', - 'numero.contient_prefixe', - 'suffixe.debut_invalide', - 'suffixe.trop_long', - 'date_der_maj.date_invalide', - 'commune_insee.commune_invalide', - 'commune_insee.valeur_manquante', - 'commune_insee.espaces_debut_fin', - 'x.valeur_invalide', - 'y.valeur_invalide', - 'x.separateur_decimal_invalide', - 'y.separateur_decimal_invalide', - 'long.valeur_invalide', - 'lat.valeur_invalide', - 'long.separateur_decimal_invalide', - 'lat.separateur_decimal_invalide', - 'row.incoherence_numero', - 'row.commune_manquante', - 'row.longlat_vides', - 'row.longlat_invalides', - 'row.adresse_incomplete', - 'field.commune_insee.missing', - 'field.voie_nom.missing', - 'field.numero.missing', - 'field.commune_nom.long', - 'field.commune_nom.lat', - 'suffixe.espaces_debut_fin', - 'file.encoding.non_standard', - 'file.delimiter.non_standard', - 'file.linebreak.non_standard', - 'rows.empty', + "cle_interop.structure_invalide", + "cle_interop.commune_invalide", + "cle_interop.numero_invalide", + "cle_interop.valeur_manquante", + "cle_interop.numero_prefixe_manquant", + "cle_interop.casse_invalide", + "voie_nom.valeur_manquante", + "voie_nom.trop_court", + "voie_nom.trop_long", + "voie_nom.caractere_invalide", + "numero.valeur_manquante", + "numero.type_invalide", + "numero.trop_grand", + "numero.contient_prefixe", + "suffixe.debut_invalide", + "suffixe.trop_long", + "date_der_maj.date_invalide", + "commune_insee.commune_invalide", + "commune_insee.valeur_manquante", + "commune_insee.espaces_debut_fin", + "x.valeur_invalide", + "y.valeur_invalide", + "x.separateur_decimal_invalide", + "y.separateur_decimal_invalide", + "long.valeur_invalide", + "lat.valeur_invalide", + "long.separateur_decimal_invalide", + "lat.separateur_decimal_invalide", + "row.incoherence_numero", + "row.commune_manquante", + "row.longlat_vides", + "row.longlat_invalides", + "row.adresse_incomplete", + "field.commune_insee.missing", + "field.voie_nom.missing", + "field.numero.missing", + "field.commune_nom.long", + "field.commune_nom.lat", + "suffixe.espaces_debut_fin", + "file.encoding.non_standard", + "file.delimiter.non_standard", + "file.linebreak.non_standard", + "rows.empty", - 'id_ban_commune.type_invalide', - 'id_ban_toponyme.type_invalide', - 'id_ban_adresse.type_invalide', - 'row.incoherence_ids_ban', - 'row.id_ban_adresses_required', - 'rows.ids_required_every' -] + "id_ban_commune.type_invalide", + "id_ban_toponyme.type_invalide", + "id_ban_adresse.type_invalide", + "row.incoherence_ids_ban", + "row.id_ban_adresses_required", + "rows.ids_required_every", +]; const warnings = [ - 'cle_interop.voie_invalide', - 'cle_interop.commune_ancienne', - 'voie_nom.casse_incorrecte', - 'voie_nom.contient_tiret_bas', - 'voie_nom_@@.casse_incorrecte', - 'voie_nom_@@.contient_tiret_bas', - 'voie_nom_@@.trop_court', - 'voie_nom_@@.trop_long', - 'voie_nom_@@.caractere_invalide', - 'commune_insee.commune_ancienne', - 'commune_deleguee_insee.commune_invalide', - 'commune_deleguee_insee.commune_actuelle_non_deleguee', - 'commune_deleguee_insee.commune_ancienne_non_deleguee', - 'position.enum_fuzzy', - 'position.valeur_invalide', - 'cad_parcelles.valeur_invalide', - 'cad_parcelles.pipe_debut_fin', - 'source.valeur_manquante', - 'date_der_maj.valeur_manquante', - 'date_der_maj.date_ancienne', - 'date_der_maj.date_future', - 'certification_commune.valeur_invalide', - 'row.position_manquante', - 'row.chef_lieu_invalide', - 'row.longlat_xy_incoherents', - 'field.suffixe.missing', - 'field.cle_interop.missing', - 'field.position.missing', - 'field.long.missing', - 'field.lat.missing', - 'field.x.missing', - 'field.y.missing', - 'field.source.missing', - 'field.date_der_maj.missing', - 'field.certification_commune.missing', + "cle_interop.voie_invalide", + "cle_interop.commune_ancienne", + "voie_nom.casse_incorrecte", + "voie_nom.contient_tiret_bas", + "voie_nom_@@.casse_incorrecte", + "voie_nom_@@.contient_tiret_bas", + "voie_nom_@@.trop_court", + "voie_nom_@@.trop_long", + "voie_nom_@@.caractere_invalide", + "commune_insee.commune_ancienne", + "commune_deleguee_insee.commune_invalide", + "commune_deleguee_insee.commune_actuelle_non_deleguee", + "commune_deleguee_insee.commune_ancienne_non_deleguee", + "position.enum_fuzzy", + "position.valeur_invalide", + "cad_parcelles.valeur_invalide", + "cad_parcelles.pipe_debut_fin", + "source.valeur_manquante", + "date_der_maj.valeur_manquante", + "date_der_maj.date_ancienne", + "date_der_maj.date_future", + "certification_commune.valeur_invalide", + "row.position_manquante", + "row.chef_lieu_invalide", + "row.longlat_xy_incoherents", + "field.suffixe.missing", + "field.cle_interop.missing", + "field.position.missing", + "field.long.missing", + "field.lat.missing", + "field.x.missing", + "field.y.missing", + "field.source.missing", + "field.date_der_maj.missing", + "field.certification_commune.missing", - 'cle_interop.espaces_debut_fin', - 'commune_nom.espaces_debut_fin', - 'commune_deleguee_insee.espaces_debut_fin', - 'commune_deleguee_nom.espaces_debut_fin', - 'uid_adresse.espaces_debut_fin', - 'voie_nom.espaces_debut_fin', - 'voie_nom_@@.espaces_debut_fin', - 'lieudit_complement_nom.espaces_debut_fin', - 'lieudit_complement_nom_@@.espaces_debut_fin', - 'numero.espaces_debut_fin', - 'position.espaces_debut_fin', - 'long.espaces_debut_fin', - 'lat.espaces_debut_fin', - 'x.espaces_debut_fin', - 'y.espaces_debut_fin', - 'cad_parcelles.espaces_debut_fin', - 'source.espaces_debut_fin', - 'date_der_maj.espaces_debut_fin', + "cle_interop.espaces_debut_fin", + "commune_nom.espaces_debut_fin", + "commune_deleguee_insee.espaces_debut_fin", + "commune_deleguee_nom.espaces_debut_fin", + "uid_adresse.espaces_debut_fin", + "voie_nom.espaces_debut_fin", + "voie_nom_@@.espaces_debut_fin", + "lieudit_complement_nom.espaces_debut_fin", + "lieudit_complement_nom_@@.espaces_debut_fin", + "numero.espaces_debut_fin", + "position.espaces_debut_fin", + "long.espaces_debut_fin", + "lat.espaces_debut_fin", + "x.espaces_debut_fin", + "y.espaces_debut_fin", + "cad_parcelles.espaces_debut_fin", + "source.espaces_debut_fin", + "date_der_maj.espaces_debut_fin", // ID BAN - 'field.id_ban_commune.missing', - 'field.id_ban_toponyme.missing', - 'field.id_ban_adresse.missing' -] + "field.id_ban_commune.missing", + "field.id_ban_toponyme.missing", + "field.id_ban_adresse.missing", +]; -const infos = [ - 'cle_interop.voie_non_renseignee' -] +const infos = ["cle_interop.voie_non_renseignee"]; module.exports = { - code: '1.4-strict', - name: 'BAL 1.4 Strict (beta)', + code: "1.4-strict", + name: "BAL 1.4 Strict (beta)", isUsed: true, relax: false, errors, warnings, infos, - format: '1.4' -} - + format: "1.4", +}; diff --git a/lib/schema/profiles/1.4.js b/lib/schema/profiles/1.4.js index a101d82..b5969a9 100644 --- a/lib/schema/profiles/1.4.js +++ b/lib/schema/profiles/1.4.js @@ -1,122 +1,119 @@ const errors = [ - 'cle_interop.structure_invalide', - 'cle_interop.commune_invalide', - 'cle_interop.numero_invalide', - 'voie_nom.valeur_manquante', - 'voie_nom.trop_court', - 'voie_nom.trop_long', - 'voie_nom.caractere_invalide', - 'numero.valeur_manquante', - 'numero.type_invalide', - 'numero.trop_grand', - 'suffixe.debut_invalide', - 'suffixe.trop_long', - 'commune_insee.commune_invalide', - 'x.valeur_invalide', - 'y.valeur_invalide', - 'long.valeur_invalide', - 'lat.valeur_invalide', - 'row.incoherence_numero', - 'row.commune_manquante', - 'row.longlat_vides', - 'row.longlat_invalides', - 'row.adresse_incomplete', - 'field.voie_nom.missing', - 'field.numero.missing', - 'rows.empty' -] + "cle_interop.structure_invalide", + "cle_interop.commune_invalide", + "cle_interop.numero_invalide", + "voie_nom.valeur_manquante", + "voie_nom.trop_court", + "voie_nom.trop_long", + "voie_nom.caractere_invalide", + "numero.valeur_manquante", + "numero.type_invalide", + "numero.trop_grand", + "suffixe.debut_invalide", + "suffixe.trop_long", + "commune_insee.commune_invalide", + "x.valeur_invalide", + "y.valeur_invalide", + "long.valeur_invalide", + "lat.valeur_invalide", + "row.incoherence_numero", + "row.commune_manquante", + "row.longlat_vides", + "row.longlat_invalides", + "row.adresse_incomplete", + "field.voie_nom.missing", + "field.numero.missing", + "rows.empty", +]; const warnings = [ - 'cle_interop.valeur_manquante', - 'cle_interop.casse_invalide', - 'cle_interop.voie_invalide', - 'cle_interop.numero_prefixe_manquant', - 'cle_interop.commune_ancienne', - 'numero.contient_prefixe', - 'voie_nom.casse_incorrecte', - 'voie_nom.contient_tiret_bas', - 'voie_nom_@@.casse_incorrecte', - 'voie_nom_@@.contient_tiret_bas', - 'voie_nom_@@.trop_court', - 'voie_nom_@@.trop_long', - 'voie_nom_@@.caractere_invalide', - 'commune_insee.commune_ancienne', - 'commune_deleguee_insee.commune_invalide', - 'commune_deleguee_insee.commune_actuelle_non_deleguee', - 'commune_deleguee_insee.commune_ancienne_non_deleguee', - 'position.enum_fuzzy', - 'position.valeur_invalide', - 'x.separateur_decimal_invalide', - 'y.separateur_decimal_invalide', - 'long.separateur_decimal_invalide', - 'lat.separateur_decimal_invalide', - 'cad_parcelles.valeur_invalide', - 'cad_parcelles.pipe_debut_fin', - 'source.valeur_manquante', - 'date_der_maj.valeur_manquante', - 'date_der_maj.date_invalide', - 'date_der_maj.date_ancienne', - 'date_der_maj.date_future', - 'certification_commune.valeur_invalide', - 'row.position_manquante', - 'row.chef_lieu_invalide', - 'row.longlat_xy_incoherents', - 'field.suffixe.missing', - 'field.cle_interop.missing', - 'field.commune_insee.missing', - 'field.position.missing', - 'field.long.missing', - 'field.lat.missing', - 'field.x.missing', - 'field.y.missing', - 'field.source.missing', - 'field.date_der_maj.missing', - 'field.certification_commune.missing', + "cle_interop.valeur_manquante", + "cle_interop.casse_invalide", + "cle_interop.voie_invalide", + "cle_interop.numero_prefixe_manquant", + "cle_interop.commune_ancienne", + "numero.contient_prefixe", + "voie_nom.casse_incorrecte", + "voie_nom.contient_tiret_bas", + "voie_nom_@@.casse_incorrecte", + "voie_nom_@@.contient_tiret_bas", + "voie_nom_@@.trop_court", + "voie_nom_@@.trop_long", + "voie_nom_@@.caractere_invalide", + "commune_insee.commune_ancienne", + "commune_deleguee_insee.commune_invalide", + "commune_deleguee_insee.commune_actuelle_non_deleguee", + "commune_deleguee_insee.commune_ancienne_non_deleguee", + "position.enum_fuzzy", + "position.valeur_invalide", + "x.separateur_decimal_invalide", + "y.separateur_decimal_invalide", + "long.separateur_decimal_invalide", + "lat.separateur_decimal_invalide", + "cad_parcelles.valeur_invalide", + "cad_parcelles.pipe_debut_fin", + "source.valeur_manquante", + "date_der_maj.valeur_manquante", + "date_der_maj.date_invalide", + "date_der_maj.date_ancienne", + "date_der_maj.date_future", + "certification_commune.valeur_invalide", + "row.position_manquante", + "row.chef_lieu_invalide", + "row.longlat_xy_incoherents", + "field.suffixe.missing", + "field.cle_interop.missing", + "field.commune_insee.missing", + "field.position.missing", + "field.long.missing", + "field.lat.missing", + "field.x.missing", + "field.y.missing", + "field.source.missing", + "field.date_der_maj.missing", + "field.certification_commune.missing", - 'cle_interop.espaces_debut_fin', - 'commune_insee.espaces_debut_fin', - 'commune_nom.espaces_debut_fin', - 'commune_deleguee_insee.espaces_debut_fin', - 'commune_deleguee_nom.espaces_debut_fin', - 'uid_adresse.espaces_debut_fin', - 'voie_nom.espaces_debut_fin', - 'voie_nom_@@.espaces_debut_fin', - 'lieudit_complement_nom.espaces_debut_fin', - 'lieudit_complement_nom_@@.espaces_debut_fin', - 'numero.espaces_debut_fin', - 'suffixe.espaces_debut_fin', - 'position.espaces_debut_fin', - 'long.espaces_debut_fin', - 'lat.espaces_debut_fin', - 'x.espaces_debut_fin', - 'y.espaces_debut_fin', - 'cad_parcelles.espaces_debut_fin', - 'source.espaces_debut_fin', - 'date_der_maj.espaces_debut_fin', + "cle_interop.espaces_debut_fin", + "commune_insee.espaces_debut_fin", + "commune_nom.espaces_debut_fin", + "commune_deleguee_insee.espaces_debut_fin", + "commune_deleguee_nom.espaces_debut_fin", + "uid_adresse.espaces_debut_fin", + "voie_nom.espaces_debut_fin", + "voie_nom_@@.espaces_debut_fin", + "lieudit_complement_nom.espaces_debut_fin", + "lieudit_complement_nom_@@.espaces_debut_fin", + "numero.espaces_debut_fin", + "suffixe.espaces_debut_fin", + "position.espaces_debut_fin", + "long.espaces_debut_fin", + "lat.espaces_debut_fin", + "x.espaces_debut_fin", + "y.espaces_debut_fin", + "cad_parcelles.espaces_debut_fin", + "source.espaces_debut_fin", + "date_der_maj.espaces_debut_fin", // ID BAN - 'field.id_ban_commune.missing', - 'field.id_ban_toponyme.missing', - 'field.id_ban_adresse.missing', - 'id_ban_commune.type_invalide', - 'id_ban_toponyme.type_invalide', - 'id_ban_adresse.type_invalide', - 'row.incoherence_ids_ban', - 'row.id_ban_adresses_required', - 'rows.ids_required_every' -] + "field.id_ban_commune.missing", + "field.id_ban_toponyme.missing", + "field.id_ban_adresse.missing", + "id_ban_commune.type_invalide", + "id_ban_toponyme.type_invalide", + "id_ban_adresse.type_invalide", + "row.incoherence_ids_ban", + "row.id_ban_adresses_required", + "rows.ids_required_every", +]; -const infos = [ - 'cle_interop.voie_non_renseignee' -] +const infos = ["cle_interop.voie_non_renseignee"]; module.exports = { - code: '1.4', - name: 'BAL 1.4 (beta)', + code: "1.4", + name: "BAL 1.4 (beta)", isUsed: false, relax: false, errors, warnings, infos, - format: '1.4' -} - + format: "1.4", +}; diff --git a/lib/schema/profiles/index.js b/lib/schema/profiles/index.js index 003fe60..15c68f8 100644 --- a/lib/schema/profiles/index.js +++ b/lib/schema/profiles/index.js @@ -1,11 +1,11 @@ const profiles = { - 1.4: require('./1.4'), - '1.4-strict': require('./1.4-strict'), - 1.3: require('./1.3'), - '1.3-relax': require('./1.3-relax'), - '1.3-strict': require('./1.3-strict'), - '1.2-strict': require('./1.2-strict'), - '1.1-strict': require('./1.1-strict') -} + 1.4: require("./1.4"), + "1.4-strict": require("./1.4-strict"), + 1.3: require("./1.3"), + "1.3-relax": require("./1.3-relax"), + "1.3-strict": require("./1.3-strict"), + "1.2-strict": require("./1.2-strict"), + "1.1-strict": require("./1.1-strict"), +}; -module.exports = profiles +module.exports = profiles; diff --git a/lib/validate/__tests__/1.4/index.js b/lib/validate/__tests__/1.4/index.js index aef8444..4dd30ab 100644 --- a/lib/validate/__tests__/1.4/index.js +++ b/lib/validate/__tests__/1.4/index.js @@ -1,206 +1,230 @@ -const {join} = require('path') -const fs = require('fs') -const {promisify} = require('util') -const test = require('ava') +const { join } = require("path"); +const fs = require("fs"); +const { promisify } = require("util"); +const test = require("ava"); -const {validate} = require('../../index') +const { validate } = require("../../index"); -const readFile = promisify(fs.readFile) +const readFile = promisify(fs.readFile); function readAsBuffer(relativePath) { - const absolutePath = join(__dirname, 'data', relativePath) - return readFile(absolutePath) + const absolutePath = join(__dirname, "data", relativePath); + return readFile(absolutePath); } -test('Valid file 1.3', async t => { - const buffer = await readAsBuffer('1.3-valid.csv') - const report = await validate(buffer, {profile: '1.3'}) - t.is(report.encoding, 'utf-8') - t.is(report.parseOk, true) - t.is(report.profilesValidation['1.4-strict'].isValid, true) - t.is(report.profilesValidation[1.4].isValid, true) -}) - -test('Valid file 1.4', async t => { - const buffer = await readAsBuffer('1.4-valid.csv') - const report = await validate(buffer, {profile: '1.4-strict'}) - t.is(report.encoding, 'utf-8') - t.is(report.parseOk, true) - t.is(report.profilesValidation['1.4-strict'].isValid, true) - t.is(report.profilesValidation[1.4].isValid, true) -}) - -test('Valid file 1.4 with relaxFieldsDetection', async t => { - const buffer = await readAsBuffer('1.4-valid-relax.csv') - const report = await validate(buffer, {relaxFieldsDetection: true}) - t.is(report.encoding, 'utf-8') - t.is(report.parseOk, true) - t.is(report.profilesValidation['1.4-strict'].isValid, true) - t.is(report.profilesValidation[1.4].isValid, true) -}) - -test('Valid file 1.4 with profile relax', async t => { - const buffer = await readAsBuffer('1.4-valid-relax.csv') - const report = await validate(buffer, {profile: '1.4', relaxFieldsDetection: true}) - - t.is(report.encoding, 'utf-8') - t.is(report.parseOk, true) - t.is(report.profilesValidation['1.4-strict'].isValid, true) - t.is(report.profilesValidation[1.4].isValid, true) -}) - -test('Error file 1.4 without relaxFieldsDetection', async t => { - const buffer = await readAsBuffer('1.4-valid-relax.csv') - const report = await validate(buffer, {profile: '1.4', relaxFieldsDetection: false}) - - t.is(report.encoding, 'utf-8') - t.is(report.parseOk, true) - t.is(report.profilesValidation['1.4-strict'].isValid, false) - t.is(report.profilesValidation[1.4].isValid, false) -}) - -test('Error file 1.4 with profile 1.4', async t => { - const buffer = await readAsBuffer('1.4-valid-relax.csv') - const report = await validate(buffer, {profile: '1.4-strict'}) - - t.is(report.encoding, 'utf-8') - t.is(report.parseOk, true) - t.is(report.profilesValidation['1.4-strict'].isValid, false) - t.is(report.profilesValidation[1.4].isValid, false) -}) - -test('Error bad id ban adresses (file 1.4)', async t => { - const buffer = await readAsBuffer('1.4-bad-id-ban-adresse.csv') - const report = await validate(buffer, {profile: '1.4-strict'}) - - t.is(report.encoding, 'utf-8') - t.is(report.parseOk, true) - t.is(report.profilesValidation['1.4-strict'].isValid, false) - t.is(report.profilesValidation[1.4].isValid, true) - - const error = report.profilErrors.filter(e => e.code === 'id_ban_adresse.type_invalide') - t.is(error.length, 1) - t.is(error[0].level, 'E') -}) - -test('Error bad id ban commune (file 1.4)', async t => { - const buffer = await readAsBuffer('1.4-bad-id-ban-commune.csv') - const report = await validate(buffer, {profile: '1.4-strict'}) - - t.is(report.encoding, 'utf-8') - t.is(report.parseOk, true) - t.is(report.profilesValidation['1.4-strict'].isValid, false) - t.is(report.profilesValidation[1.4].isValid, true) - - const error = report.profilErrors.filter(e => e.code === 'id_ban_commune.type_invalide') - t.is(error.length, 1) - t.is(error[0].level, 'E') -}) - -test('Error bad id ban toponyme a (file 1.4)', async t => { - const buffer = await readAsBuffer('1.4-bad-id-ban-toponyme.csv') - const report = await validate(buffer, {profile: '1.4-strict'}) - - t.is(report.encoding, 'utf-8') - t.is(report.parseOk, true) - t.is(report.profilesValidation['1.4-strict'].isValid, false) - t.is(report.profilesValidation[1.4].isValid, true) - - const error = report.profilErrors.filter(e => e.code === 'id_ban_toponyme.type_invalide') - t.is(error.length, 1) - t.is(error[0].level, 'E') -}) - -test('Error incoherent ban id (file 1.4)', async t => { - const buffer = await readAsBuffer('1.4-incoherent-id-ban.csv') - const report = await validate(buffer, {profile: '1.4-strict'}) - - t.is(report.encoding, 'utf-8') - t.is(report.parseOk, true) - t.is(report.profilesValidation['1.4-strict'].isValid, false) - t.is(report.profilesValidation[1.4].isValid, true) - - const error = report.profilErrors.filter(e => e.code === 'row.incoherence_ids_ban') - t.is(error.length, 1) - t.is(error[0].level, 'E') -}) - -test('Good incoherent dependance ban id (file 1.4)', async t => { - const buffer = await readAsBuffer('1.4-good-dependance-id-ban.csv') - const report = await validate(buffer, {profile: '1.4-strict'}) - - t.is(report.encoding, 'utf-8') - t.is(report.parseOk, true) - t.is(report.profilesValidation['1.4-strict'].isValid, true) - t.is(report.profilesValidation[1.4].isValid, true) -}) - -test('Error incoherent dependance ban id (file 1.4)', async t => { - const buffer = await readAsBuffer('1.4-bad-dependance-id-ban.csv') - const report = await validate(buffer, {profile: '1.4-strict'}) - - t.is(report.encoding, 'utf-8') - t.is(report.parseOk, true) - t.is(report.profilesValidation['1.4-strict'].isValid, false) - t.is(report.profilesValidation[1.4].isValid, true) - - const error = report.profilErrors.filter(e => e.code === 'row.incoherence_ids_ban') - t.is(error.length, 1) - t.is(error[0].level, 'E') -}) - -test('Warning id_ban_adresses_required (file 1.4) with profile relax', async t => { - const buffer = await readAsBuffer('1.4-without-ban-adresse.csv') - const report = await validate(buffer, {profile: '1.4'}) - - t.is(report.encoding, 'utf-8') - t.is(report.parseOk, true) - t.is(report.profilesValidation['1.4-strict'].isValid, false) - t.is(report.profilesValidation[1.4].isValid, true) - - const error = report.profilErrors.filter(e => e.code === 'row.id_ban_adresses_required') - t.is(error.length, 1) - t.is(error[0].level, 'W') -}) - -test('ERROR id_ban_adresses_required (file 1.4)', async t => { - const buffer = await readAsBuffer('1.4-without-ban-adresse.csv') - const report = await validate(buffer, {profile: '1.4-strict'}) - - t.is(report.encoding, 'utf-8') - t.is(report.parseOk, true) - t.is(report.profilesValidation['1.4-strict'].isValid, false) - t.is(report.profilesValidation[1.4].isValid, true) - - const error = report.profilErrors.filter(e => e.code === 'row.id_ban_adresses_required') - t.is(error.length, 1) - t.is(error[0].level, 'E') -}) - -test('Warning rows.ids_required_every (file 1.4) with profile relax', async t => { - const buffer = await readAsBuffer('1.4-no-ids-ban-every.csv') - const report = await validate(buffer, {profile: '1.4'}) - - t.is(report.encoding, 'utf-8') - t.is(report.parseOk, true) - t.is(report.profilesValidation['1.4-strict'].isValid, false) - t.is(report.profilesValidation[1.4].isValid, true) - - const error = report.profilErrors.filter(e => e.code === 'rows.ids_required_every') - t.is(error.length, 1) - t.is(error[0].level, 'W') -}) - -test('Warning rows.ids_required_every (file 1.4)', async t => { - const buffer = await readAsBuffer('1.4-no-ids-ban-every.csv') - const report = await validate(buffer, {profile: '1.4-strict'}) - - t.is(report.encoding, 'utf-8') - t.is(report.parseOk, true) - t.is(report.profilesValidation['1.4-strict'].isValid, false) - t.is(report.profilesValidation[1.4].isValid, true) - - const error = report.profilErrors.filter(e => e.code === 'rows.ids_required_every') - t.is(error.length, 1) - t.is(error[0].level, 'E') -}) +test("Valid file 1.3", async (t) => { + const buffer = await readAsBuffer("1.3-valid.csv"); + const report = await validate(buffer, { profile: "1.3" }); + t.is(report.encoding, "utf-8"); + t.is(report.parseOk, true); + t.is(report.profilesValidation["1.4-strict"].isValid, true); + t.is(report.profilesValidation[1.4].isValid, true); +}); + +test("Valid file 1.4", async (t) => { + const buffer = await readAsBuffer("1.4-valid.csv"); + const report = await validate(buffer, { profile: "1.4-strict" }); + t.is(report.encoding, "utf-8"); + t.is(report.parseOk, true); + t.is(report.profilesValidation["1.4-strict"].isValid, true); + t.is(report.profilesValidation[1.4].isValid, true); +}); + +test("Valid file 1.4 with relaxFieldsDetection", async (t) => { + const buffer = await readAsBuffer("1.4-valid-relax.csv"); + const report = await validate(buffer, { relaxFieldsDetection: true }); + t.is(report.encoding, "utf-8"); + t.is(report.parseOk, true); + t.is(report.profilesValidation["1.4-strict"].isValid, true); + t.is(report.profilesValidation[1.4].isValid, true); +}); + +test("Valid file 1.4 with profile relax", async (t) => { + const buffer = await readAsBuffer("1.4-valid-relax.csv"); + const report = await validate(buffer, { + profile: "1.4", + relaxFieldsDetection: true, + }); + + t.is(report.encoding, "utf-8"); + t.is(report.parseOk, true); + t.is(report.profilesValidation["1.4-strict"].isValid, true); + t.is(report.profilesValidation[1.4].isValid, true); +}); + +test("Error file 1.4 without relaxFieldsDetection", async (t) => { + const buffer = await readAsBuffer("1.4-valid-relax.csv"); + const report = await validate(buffer, { + profile: "1.4", + relaxFieldsDetection: false, + }); + + t.is(report.encoding, "utf-8"); + t.is(report.parseOk, true); + t.is(report.profilesValidation["1.4-strict"].isValid, false); + t.is(report.profilesValidation[1.4].isValid, false); +}); + +test("Error file 1.4 with profile 1.4", async (t) => { + const buffer = await readAsBuffer("1.4-valid-relax.csv"); + const report = await validate(buffer, { profile: "1.4-strict" }); + + t.is(report.encoding, "utf-8"); + t.is(report.parseOk, true); + t.is(report.profilesValidation["1.4-strict"].isValid, false); + t.is(report.profilesValidation[1.4].isValid, false); +}); + +test("Error bad id ban adresses (file 1.4)", async (t) => { + const buffer = await readAsBuffer("1.4-bad-id-ban-adresse.csv"); + const report = await validate(buffer, { profile: "1.4-strict" }); + + t.is(report.encoding, "utf-8"); + t.is(report.parseOk, true); + t.is(report.profilesValidation["1.4-strict"].isValid, false); + t.is(report.profilesValidation[1.4].isValid, true); + + const error = report.profilErrors.filter( + (e) => e.code === "id_ban_adresse.type_invalide", + ); + t.is(error.length, 1); + t.is(error[0].level, "E"); +}); + +test("Error bad id ban commune (file 1.4)", async (t) => { + const buffer = await readAsBuffer("1.4-bad-id-ban-commune.csv"); + const report = await validate(buffer, { profile: "1.4-strict" }); + + t.is(report.encoding, "utf-8"); + t.is(report.parseOk, true); + t.is(report.profilesValidation["1.4-strict"].isValid, false); + t.is(report.profilesValidation[1.4].isValid, true); + + const error = report.profilErrors.filter( + (e) => e.code === "id_ban_commune.type_invalide", + ); + t.is(error.length, 1); + t.is(error[0].level, "E"); +}); + +test("Error bad id ban toponyme a (file 1.4)", async (t) => { + const buffer = await readAsBuffer("1.4-bad-id-ban-toponyme.csv"); + const report = await validate(buffer, { profile: "1.4-strict" }); + + t.is(report.encoding, "utf-8"); + t.is(report.parseOk, true); + t.is(report.profilesValidation["1.4-strict"].isValid, false); + t.is(report.profilesValidation[1.4].isValid, true); + + const error = report.profilErrors.filter( + (e) => e.code === "id_ban_toponyme.type_invalide", + ); + t.is(error.length, 1); + t.is(error[0].level, "E"); +}); + +test("Error incoherent ban id (file 1.4)", async (t) => { + const buffer = await readAsBuffer("1.4-incoherent-id-ban.csv"); + const report = await validate(buffer, { profile: "1.4-strict" }); + + t.is(report.encoding, "utf-8"); + t.is(report.parseOk, true); + t.is(report.profilesValidation["1.4-strict"].isValid, false); + t.is(report.profilesValidation[1.4].isValid, true); + + const error = report.profilErrors.filter( + (e) => e.code === "row.incoherence_ids_ban", + ); + t.is(error.length, 1); + t.is(error[0].level, "E"); +}); + +test("Good incoherent dependance ban id (file 1.4)", async (t) => { + const buffer = await readAsBuffer("1.4-good-dependance-id-ban.csv"); + const report = await validate(buffer, { profile: "1.4-strict" }); + + t.is(report.encoding, "utf-8"); + t.is(report.parseOk, true); + t.is(report.profilesValidation["1.4-strict"].isValid, true); + t.is(report.profilesValidation[1.4].isValid, true); +}); + +test("Error incoherent dependance ban id (file 1.4)", async (t) => { + const buffer = await readAsBuffer("1.4-bad-dependance-id-ban.csv"); + const report = await validate(buffer, { profile: "1.4-strict" }); + + t.is(report.encoding, "utf-8"); + t.is(report.parseOk, true); + t.is(report.profilesValidation["1.4-strict"].isValid, false); + t.is(report.profilesValidation[1.4].isValid, true); + + const error = report.profilErrors.filter( + (e) => e.code === "row.incoherence_ids_ban", + ); + t.is(error.length, 1); + t.is(error[0].level, "E"); +}); + +test("Warning id_ban_adresses_required (file 1.4) with profile relax", async (t) => { + const buffer = await readAsBuffer("1.4-without-ban-adresse.csv"); + const report = await validate(buffer, { profile: "1.4" }); + + t.is(report.encoding, "utf-8"); + t.is(report.parseOk, true); + t.is(report.profilesValidation["1.4-strict"].isValid, false); + t.is(report.profilesValidation[1.4].isValid, true); + + const error = report.profilErrors.filter( + (e) => e.code === "row.id_ban_adresses_required", + ); + t.is(error.length, 1); + t.is(error[0].level, "W"); +}); + +test("ERROR id_ban_adresses_required (file 1.4)", async (t) => { + const buffer = await readAsBuffer("1.4-without-ban-adresse.csv"); + const report = await validate(buffer, { profile: "1.4-strict" }); + + t.is(report.encoding, "utf-8"); + t.is(report.parseOk, true); + t.is(report.profilesValidation["1.4-strict"].isValid, false); + t.is(report.profilesValidation[1.4].isValid, true); + + const error = report.profilErrors.filter( + (e) => e.code === "row.id_ban_adresses_required", + ); + t.is(error.length, 1); + t.is(error[0].level, "E"); +}); + +test("Warning rows.ids_required_every (file 1.4) with profile relax", async (t) => { + const buffer = await readAsBuffer("1.4-no-ids-ban-every.csv"); + const report = await validate(buffer, { profile: "1.4" }); + + t.is(report.encoding, "utf-8"); + t.is(report.parseOk, true); + t.is(report.profilesValidation["1.4-strict"].isValid, false); + t.is(report.profilesValidation[1.4].isValid, true); + + const error = report.profilErrors.filter( + (e) => e.code === "rows.ids_required_every", + ); + t.is(error.length, 1); + t.is(error[0].level, "W"); +}); + +test("Warning rows.ids_required_every (file 1.4)", async (t) => { + const buffer = await readAsBuffer("1.4-no-ids-ban-every.csv"); + const report = await validate(buffer, { profile: "1.4-strict" }); + + t.is(report.encoding, "utf-8"); + t.is(report.parseOk, true); + t.is(report.profilesValidation["1.4-strict"].isValid, false); + t.is(report.profilesValidation[1.4].isValid, true); + + const error = report.profilErrors.filter( + (e) => e.code === "rows.ids_required_every", + ); + t.is(error.length, 1); + t.is(error[0].level, "E"); +}); diff --git a/lib/validate/__tests__/index.js b/lib/validate/__tests__/index.js index 1e36b13..cfe3b64 100644 --- a/lib/validate/__tests__/index.js +++ b/lib/validate/__tests__/index.js @@ -1,228 +1,235 @@ /* eslint camelcase: off */ -const {join} = require('path') -const fs = require('fs') -const {promisify} = require('util') -const test = require('ava') +const { join } = require("path"); +const fs = require("fs"); +const { promisify } = require("util"); +const test = require("ava"); -const {validate} = require('..') +const { validate } = require(".."); -const readFile = promisify(fs.readFile) +const readFile = promisify(fs.readFile); function readAsBuffer(relativePath) { - const absolutePath = join(__dirname, 'data', relativePath) - return readFile(absolutePath) + const absolutePath = join(__dirname, "data", relativePath); + return readFile(absolutePath); } -test('validate a file', async t => { - const buffer = await readAsBuffer('sample.csv') - const report = await validate(buffer) - t.is(report.encoding, 'utf-8') -}) +test("validate a file", async (t) => { + const buffer = await readAsBuffer("sample.csv"); + const report = await validate(buffer); + t.is(report.encoding, "utf-8"); +}); -test('validate a file with aliases / relaxFieldsDetection true', async t => { - const buffer = await readAsBuffer('aliases.csv') - const {fields, notFoundFields} = await validate(buffer, {relaxFieldsDetection: true}) +test("validate a file with aliases / relaxFieldsDetection true", async (t) => { + const buffer = await readAsBuffer("aliases.csv"); + const { fields, notFoundFields } = await validate(buffer, { + relaxFieldsDetection: true, + }); const aliasedFields = { - cle_interop: 'cle_intero', - commune_nom: 'commune_no', - commune_insee: 'commune_in', - date_der_maj: 'date_der_m', - lat: 'lat_wgs84', - long: 'long_wgs84', - uid_adresse: 'uid_adress', - x: 'x_l93', - y: 'y_l93' - } + cle_interop: "cle_intero", + commune_nom: "commune_no", + commune_insee: "commune_in", + date_der_maj: "date_der_m", + lat: "lat_wgs84", + long: "long_wgs84", + uid_adresse: "uid_adress", + x: "x_l93", + y: "y_l93", + }; for (const schemaName of Object.keys(aliasedFields)) { - const originalName = aliasedFields[schemaName] - t.truthy(fields.find(f => f.name === originalName && f.schemaName === schemaName)) + const originalName = aliasedFields[schemaName]; + t.truthy( + fields.find( + (f) => f.name === originalName && f.schemaName === schemaName, + ), + ); } for (const field of [ - 'cle_interop', - 'uid_adresse', - 'voie_nom', - 'numero', - 'suffixe', - 'commune_nom', - 'position', - 'x', - 'y', - 'long', - 'lat', - 'source', - 'date_der_maj' + "cle_interop", + "uid_adresse", + "voie_nom", + "numero", + "suffixe", + "commune_nom", + "position", + "x", + "y", + "long", + "lat", + "source", + "date_der_maj", ]) { - t.true(fields.some(f => f.schemaName === field)) + t.true(fields.some((f) => f.schemaName === field)); } - t.true(notFoundFields.length === 5) + t.true(notFoundFields.length === 5); for (const field of [ - 'lieudit_complement_nom', - 'commune_deleguee_insee', - 'commune_deleguee_nom', - 'cad_parcelles' + "lieudit_complement_nom", + "commune_deleguee_insee", + "commune_deleguee_nom", + "cad_parcelles", ]) { - t.true(notFoundFields.some(f => f.schemaName === field)) + t.true(notFoundFields.some((f) => f.schemaName === field)); } // Unknown fields - t.true(fields.filter(f => !f.schemaName).length === 0) -}) + t.true(fields.filter((f) => !f.schemaName).length === 0); +}); -test('validate a file with aliases with 1.3-relax', async t => { - const buffer = await readAsBuffer('aliases.csv') - const {fields, notFoundFields} = await validate(buffer, {profile: '1.3-relax'}) +test("validate a file with aliases with 1.3-relax", async (t) => { + const buffer = await readAsBuffer("aliases.csv"); + const { fields, notFoundFields } = await validate(buffer, { + profile: "1.3-relax", + }); const aliasedFields = { - cle_interop: 'cle_intero', - commune_nom: 'commune_no', - commune_insee: 'commune_in', - date_der_maj: 'date_der_m', - lat: 'lat_wgs84', - long: 'long_wgs84', - uid_adresse: 'uid_adress', - x: 'x_l93', - y: 'y_l93' - } + cle_interop: "cle_intero", + commune_nom: "commune_no", + commune_insee: "commune_in", + date_der_maj: "date_der_m", + lat: "lat_wgs84", + long: "long_wgs84", + uid_adresse: "uid_adress", + x: "x_l93", + y: "y_l93", + }; for (const schemaName of Object.keys(aliasedFields)) { - const originalName = aliasedFields[schemaName] - t.truthy(fields.find(f => f.name === originalName && f.schemaName === schemaName)) + const originalName = aliasedFields[schemaName]; + t.truthy( + fields.find( + (f) => f.name === originalName && f.schemaName === schemaName, + ), + ); } for (const field of [ - 'cle_interop', - 'uid_adresse', - 'voie_nom', - 'numero', - 'suffixe', - 'commune_nom', - 'position', - 'x', - 'y', - 'long', - 'lat', - 'source', - 'date_der_maj' + "cle_interop", + "uid_adresse", + "voie_nom", + "numero", + "suffixe", + "commune_nom", + "position", + "x", + "y", + "long", + "lat", + "source", + "date_der_maj", ]) { - t.true(fields.some(f => f.schemaName === field)) + t.true(fields.some((f) => f.schemaName === field)); } - t.true(notFoundFields.length === 5) + t.true(notFoundFields.length === 5); for (const field of [ - 'lieudit_complement_nom', - 'commune_deleguee_insee', - 'commune_deleguee_nom', - 'cad_parcelles' + "lieudit_complement_nom", + "commune_deleguee_insee", + "commune_deleguee_nom", + "cad_parcelles", ]) { - t.true(notFoundFields.some(f => f.schemaName === field)) + t.true(notFoundFields.some((f) => f.schemaName === field)); } // Unknown fields - t.true(fields.filter(f => !f.schemaName).length === 0) -}) - -test('validate a file with aliases / profile relax and relaxFieldsDetection false', async t => { - const buffer = await readAsBuffer('aliases.csv') - const {fields, notFoundFields} = await validate(buffer, {profile: '1.3-relax', relaxFieldsDetection: false}) - - const unknownFields = fields.filter(f => !f.schemaName) - const knownFields = fields.filter(f => f.schemaName) - const aliasedFields = knownFields.filter(f => f.name !== f.schemaName) - - for (const field of [ - 'voie_nom', - 'numero', - 'suffixe', - 'position', - 'source' - ]) { - t.truthy(knownFields.find(f => f.schemaName === field)) + t.true(fields.filter((f) => !f.schemaName).length === 0); +}); + +test("validate a file with aliases / profile relax and relaxFieldsDetection false", async (t) => { + const buffer = await readAsBuffer("aliases.csv"); + const { fields, notFoundFields } = await validate(buffer, { + profile: "1.3-relax", + relaxFieldsDetection: false, + }); + + const unknownFields = fields.filter((f) => !f.schemaName); + const knownFields = fields.filter((f) => f.schemaName); + const aliasedFields = knownFields.filter((f) => f.name !== f.schemaName); + + for (const field of ["voie_nom", "numero", "suffixe", "position", "source"]) { + t.truthy(knownFields.find((f) => f.schemaName === field)); } - t.is(aliasedFields.length, 0) - t.is(knownFields.length, 5) - t.is(notFoundFields.length, 14) - t.is(unknownFields.length, 9) -}) + t.is(aliasedFields.length, 0); + t.is(knownFields.length, 5); + t.is(notFoundFields.length, 14); + t.is(unknownFields.length, 9); +}); -test('validate a file with aliases / relaxFieldsDetection false', async t => { - const buffer = await readAsBuffer('aliases.csv') - const {fields, notFoundFields} = await validate(buffer, {relaxFieldsDetection: false}) +test("validate a file with aliases / relaxFieldsDetection false", async (t) => { + const buffer = await readAsBuffer("aliases.csv"); + const { fields, notFoundFields } = await validate(buffer, { + relaxFieldsDetection: false, + }); - const unknownFields = fields.filter(f => !f.schemaName) - const knownFields = fields.filter(f => f.schemaName) - const aliasedFields = knownFields.filter(f => f.name !== f.schemaName) + const unknownFields = fields.filter((f) => !f.schemaName); + const knownFields = fields.filter((f) => f.schemaName); + const aliasedFields = knownFields.filter((f) => f.name !== f.schemaName); - for (const field of [ - 'voie_nom', - 'numero', - 'suffixe', - 'position', - 'source' - ]) { - t.truthy(knownFields.find(f => f.schemaName === field)) + for (const field of ["voie_nom", "numero", "suffixe", "position", "source"]) { + t.truthy(knownFields.find((f) => f.schemaName === field)); } - t.is(aliasedFields.length, 0) - t.is(knownFields.length, 5) - t.is(notFoundFields.length, 14) - t.is(unknownFields.length, 9) -}) - -test('validate a binary file', async t => { - const buffer = await readAsBuffer('troll.png') - await t.throwsAsync(() => validate(buffer), {message: 'Non-text file cannot be processed'}) -}) - -test('validate an arbitrary CSV file', async t => { - const buffer = await readAsBuffer('junk.ascii.csv') - const {notFoundFields} = await validate(buffer) - t.is(notFoundFields.length, 19) -}) - -test('validation avec locales', async t => { - const buffer = await readAsBuffer('locales.csv') - const {fields, rows, uniqueErrors} = await validate(buffer) - t.true(uniqueErrors.includes('voie_nom_eus.trop_court')) - t.true(rows[0].errors.some(e => e.code === 'voie_nom_eus.trop_court')) + t.is(aliasedFields.length, 0); + t.is(knownFields.length, 5); + t.is(notFoundFields.length, 14); + t.is(unknownFields.length, 9); +}); + +test("validate a binary file", async (t) => { + const buffer = await readAsBuffer("troll.png"); + await t.throwsAsync(() => validate(buffer), { + message: "Non-text file cannot be processed", + }); +}); + +test("validate an arbitrary CSV file", async (t) => { + const buffer = await readAsBuffer("junk.ascii.csv"); + const { notFoundFields } = await validate(buffer); + t.is(notFoundFields.length, 19); +}); + +test("validation avec locales", async (t) => { + const buffer = await readAsBuffer("locales.csv"); + const { fields, rows, uniqueErrors } = await validate(buffer); + t.true(uniqueErrors.includes("voie_nom_eus.trop_court")); + t.true(rows[0].errors.some((e) => e.code === "voie_nom_eus.trop_court")); t.deepEqual(rows[1].localizedValues.voie_nom, { - bre: 'Nom de la rue en breton', - eus: 'Nom de la voie en basque' - }) - t.true(fields.some(f => f.schemaName === 'voie_nom' && f.locale === 'eus')) - t.true(fields.some(f => f.schemaName === 'voie_nom' && f.locale === 'bre')) -}) - -test('validation check profilErrors', async t => { - const buffer = await readAsBuffer('locales.csv') - const {profilErrors, uniqueErrors} = await validate(buffer) + bre: "Nom de la rue en breton", + eus: "Nom de la voie en basque", + }); + t.true(fields.some((f) => f.schemaName === "voie_nom" && f.locale === "eus")); + t.true(fields.some((f) => f.schemaName === "voie_nom" && f.locale === "bre")); +}); + +test("validation check profilErrors", async (t) => { + const buffer = await readAsBuffer("locales.csv"); + const { profilErrors, uniqueErrors } = await validate(buffer); for (const e of profilErrors) { - t.true(uniqueErrors.includes(e.code)) - t.true(['I', 'W', 'E'].includes(e.level)) + t.true(uniqueErrors.includes(e.code)); + t.true(["I", "W", "E"].includes(e.level)); } -}) +}); -test('validation check notFoundFields', async t => { - const buffer = await readAsBuffer('locales.csv') - const {notFoundFields} = await validate(buffer) +test("validation check notFoundFields", async (t) => { + const buffer = await readAsBuffer("locales.csv"); + const { notFoundFields } = await validate(buffer); for (const e of notFoundFields) { - t.true(['I', 'W', 'E'].includes(e.level)) + t.true(["I", "W", "E"].includes(e.level)); } -}) - -test('validation check row empty', async t => { - const buffer = await readAsBuffer('without_row.csv') - const {profilesValidation, uniqueErrors, globalErrors} = await validate(buffer) - t.true(uniqueErrors.includes('rows.empty')) - t.true(globalErrors.includes('rows.empty')) - t.true(!profilesValidation['1.3-relax'].isValid) - t.true(!profilesValidation['1.3'].isValid) -}) - +}); + +test("validation check row empty", async (t) => { + const buffer = await readAsBuffer("without_row.csv"); + const { profilesValidation, uniqueErrors, globalErrors } = + await validate(buffer); + t.true(uniqueErrors.includes("rows.empty")); + t.true(globalErrors.includes("rows.empty")); + t.true(!profilesValidation["1.3-relax"].isValid); + t.true(!profilesValidation["1.3"].isValid); +}); diff --git a/lib/validate/fields.js b/lib/validate/fields.js index 7d763c0..4da129f 100644 --- a/lib/validate/fields.js +++ b/lib/validate/fields.js @@ -1,59 +1,72 @@ /* eslint no-inner-declarations: off */ -const schema = require('../schema') +const schema = require("../schema"); function getSchemaVersion(schemaName) { - return schema.fields[schemaName].version || '1.1' + return schema.fields[schemaName].version || "1.1"; } -function computeFields(originalFields, format, {relaxFieldsDetection, globalErrors}) { - const fields = originalFields.map(field => ({name: field})) - const foundFields = new Set() - const notFoundFields = new Set() +function computeFields( + originalFields, + format, + { relaxFieldsDetection, globalErrors }, +) { + const fields = originalFields.map((field) => ({ name: field })); + const foundFields = new Set(); + const notFoundFields = new Set(); for (const schemaName of Object.keys(schema.fields)) { // On commence par définir la fonction helper de recherche du nom de champ correspondant function findField(field) { if (!foundFields.has(schemaName)) { - const candidate = fields.find(f => f.name === field && !f.schemaName) + const candidate = fields.find((f) => f.name === field && !f.schemaName); if (candidate) { - const exactMatch = schemaName === field - candidate.schemaName = schemaName - foundFields.add(schemaName) + const exactMatch = schemaName === field; + candidate.schemaName = schemaName; + foundFields.add(schemaName); if (!exactMatch) { - globalErrors.add(`field.${schemaName}.fuzzy`) + globalErrors.add(`field.${schemaName}.fuzzy`); } } } } // Exact match - findField(schemaName) + findField(schemaName); // Alias match - if (relaxFieldsDetection && !foundFields.has(schemaName) && schema.fields[schemaName].aliases) { + if ( + relaxFieldsDetection && + !foundFields.has(schemaName) && + schema.fields[schemaName].aliases + ) { for (const alias of schema.fields[schemaName].aliases) { - findField(alias) + findField(alias); } } // Si le champ n'est pas trouvé on créé des erreurs - if (!foundFields.has(schemaName) && schema.fields[schemaName].formats.includes(format)) { - notFoundFields.add(schemaName) - globalErrors.add(`field.${schemaName}.missing`) + if ( + !foundFields.has(schemaName) && + schema.fields[schemaName].formats.includes(format) + ) { + notFoundFields.add(schemaName); + globalErrors.add(`field.${schemaName}.missing`); } // On définit la fonction helper de recherche des variantes localisées function findLocalizedField(locale) { - const localizedSchemaName = `${schemaName}_${locale}` + const localizedSchemaName = `${schemaName}_${locale}`; if (!foundFields.has(localizedSchemaName)) { - const candidate = fields.find(f => f.name === localizedSchemaName && !f.schemaName) + const candidate = fields.find( + (f) => f.name === localizedSchemaName && !f.schemaName, + ); if (candidate) { - candidate.schemaName = schemaName - candidate.localizedSchemaName = localizedSchemaName - candidate.locale = locale - candidate.version = getSchemaVersion(schemaName) - foundFields.add(localizedSchemaName) + candidate.schemaName = schemaName; + candidate.localizedSchemaName = localizedSchemaName; + candidate.locale = locale; + candidate.version = getSchemaVersion(schemaName); + foundFields.add(localizedSchemaName); } } } @@ -61,7 +74,7 @@ function computeFields(originalFields, format, {relaxFieldsDetection, globalErro // Si le champ a été trouvé et si les variantes localisées sont autorisées, on recherche ces variantes if (foundFields.has(schemaName) && schema.fields[schemaName].allowLocales) { for (const locale of schema.allowedLocales) { - findLocalizedField(locale) + findLocalizedField(locale); } } } @@ -69,11 +82,11 @@ function computeFields(originalFields, format, {relaxFieldsDetection, globalErro return { fields, - notFoundFields: [...notFoundFields].map(schemaName => { - const schemaVersion = getSchemaVersion(schemaName) - return {schemaName, schemaVersion} - }) - } + notFoundFields: [...notFoundFields].map((schemaName) => { + const schemaVersion = getSchemaVersion(schemaName); + return { schemaName, schemaVersion }; + }), + }; } -module.exports = {computeFields} +module.exports = { computeFields }; diff --git a/lib/validate/index.js b/lib/validate/index.js index 3424198..ce2efdf 100644 --- a/lib/validate/index.js +++ b/lib/validate/index.js @@ -1,28 +1,28 @@ -const bluebird = require('bluebird') -const {keyBy, mapValues, uniq} = require('lodash') -const {getErrorLevel} = require('../helpers') -const profiles = require('../schema/profiles') -const {computeFields} = require('./fields') -const {parse} = require('./parse') -const {validateRow} = require('./row') +const bluebird = require("bluebird"); +const { keyBy, mapValues, uniq } = require("lodash"); +const { getErrorLevel } = require("../helpers"); +const profiles = require("../schema/profiles"); +const { computeFields } = require("./fields"); +const { parse } = require("./parse"); +const { validateRow } = require("./row"); const FATAL_PARSE_ERRORS = new Set([ - 'MissingQuotes', - 'UndetectableDelimiter', - 'TooFewFields', - 'TooManyFields' -]) + "MissingQuotes", + "UndetectableDelimiter", + "TooFewFields", + "TooManyFields", +]); async function parseFile(file, relaxFieldsDetection) { const parseOptions = relaxFieldsDetection - ? {transformHeader: h => h.toLowerCase().trim()} - : {} + ? { transformHeader: (h) => h.toLowerCase().trim() } + : {}; // Must be a Blob for browser or a Buffer for Node.js - const {meta, errors, data, encoding} = await parse(file, parseOptions) + const { meta, errors, data, encoding } = await parse(file, parseOptions); - const errorsKinds = uniq(errors.map(e => e.code)) - const parseOk = !errorsKinds.some(e => FATAL_PARSE_ERRORS.has(e)) + const errorsKinds = uniq(errors.map((e) => e.code)); + const parseOk = !errorsKinds.some((e) => FATAL_PARSE_ERRORS.has(e)); return { encoding, @@ -31,101 +31,135 @@ async function parseFile(file, relaxFieldsDetection) { originalFields: meta.fields, parseOk, parseErrors: errors, - parsedRows: data - } + parsedRows: data, + }; } -async function computeRows(parsedRows, {fields, rowsErrors}) { - const indexedFields = keyBy(fields, 'name') - const computedRows = await bluebird.map(parsedRows, async (parsedRow, line) => { - const computedRow = await validateRow(parsedRow, {indexedFields, line: line + 1}) - for (const e of computedRow.errors) { - rowsErrors.add(e.code) - } +async function computeRows(parsedRows, { fields, rowsErrors }) { + const indexedFields = keyBy(fields, "name"); + const computedRows = await bluebird.map( + parsedRows, + async (parsedRow, line) => { + const computedRow = await validateRow(parsedRow, { + indexedFields, + line: line + 1, + }); + for (const e of computedRow.errors) { + rowsErrors.add(e.code); + } - return computedRow - }, {concurrency: 4}) + return computedRow; + }, + { concurrency: 4 }, + ); - return {rows: computedRows} + return { rows: computedRows }; } -function validateFile(detectedParams, {globalErrors}) { - const humanizedLinebreak = humanizeLinebreak(detectedParams.linebreak) +function validateFile(detectedParams, { globalErrors }) { + const humanizedLinebreak = humanizeLinebreak(detectedParams.linebreak); const encoding = { value: detectedParams.encoding, - isValid: detectedParams.encoding === 'utf-8' - } + isValid: detectedParams.encoding === "utf-8", + }; if (!encoding.isValid) { - globalErrors.add('file.encoding.non_standard') + globalErrors.add("file.encoding.non_standard"); } const delimiter = { value: detectedParams.delimiter, - isValid: detectedParams.delimiter === ';' - } + isValid: detectedParams.delimiter === ";", + }; if (!delimiter.isValid) { - globalErrors.add('file.delimiter.non_standard') + globalErrors.add("file.delimiter.non_standard"); } const linebreak = { value: humanizedLinebreak, - isValid: ['Unix', 'Windows'].includes(humanizedLinebreak) - } + isValid: ["Unix", "Windows"].includes(humanizedLinebreak), + }; if (!linebreak.isValid) { - globalErrors.add('file.linebreak.non_standard') + globalErrors.add("file.linebreak.non_standard"); } - return {encoding, delimiter, linebreak} + return { encoding, delimiter, linebreak }; } -function checkUseBanIdsEveryRow(parsedRows, {globalErrors}) { +function checkUseBanIdsEveryRow(parsedRows, { globalErrors }) { if (parsedRows.length > 0) { - const useBanIds = 'id_ban_commune' in parsedRows[0] + const useBanIds = "id_ban_commune" in parsedRows[0]; for (const row of parsedRows) { if ( - (useBanIds && row.id_ban_commune === '') - || (!useBanIds && (row.id_ban_commune !== undefined && row.id_ban_commune !== ''))) { - globalErrors.add('rows.ids_required_every') - return + (useBanIds && row.id_ban_commune === "") || + (!useBanIds && + row.id_ban_commune !== undefined && + row.id_ban_commune !== "") + ) { + globalErrors.add("rows.ids_required_every"); + return; } } } } -function validateRows(parsedRows, {globalErrors}) { +function validateRows(parsedRows, { globalErrors }) { if (parsedRows.length <= 0) { - globalErrors.add('rows.empty') + globalErrors.add("rows.empty"); } - checkUseBanIdsEveryRow(parsedRows, {globalErrors}) + checkUseBanIdsEveryRow(parsedRows, { globalErrors }); } async function prevalidate(file, format, relaxFieldsDetection) { - const globalErrors = new Set() - const rowsErrors = new Set() + const globalErrors = new Set(); + const rowsErrors = new Set(); - const {encoding, linebreak, delimiter, originalFields, parseOk, parseErrors, parsedRows} = await parseFile(file, relaxFieldsDetection) + const { + encoding, + linebreak, + delimiter, + originalFields, + parseOk, + parseErrors, + parsedRows, + } = await parseFile(file, relaxFieldsDetection); if (!parseOk) { - return {encoding, linebreak, delimiter, originalFields, parseOk, parseErrors, parsedRows} + return { + encoding, + linebreak, + delimiter, + originalFields, + parseOk, + parseErrors, + parsedRows, + }; } - const {fields, notFoundFields} = computeFields(originalFields, format, {globalErrors, relaxFieldsDetection}) - const {rows} = await computeRows(parsedRows, {fields, rowsErrors}) - const fileValidation = validateFile({linebreak, encoding, delimiter}, {globalErrors}) - validateRows(parsedRows, {globalErrors}) - - const uniqueErrors = new Set([...globalErrors, ...rowsErrors]) - - const profilesValidation = mapValues(profiles, profile => { - const {code, name} = profile - const isValid = ![...uniqueErrors].some(e => getErrorLevel(profile.code, e) === 'E') - return {code, name, isValid} - }) + const { fields, notFoundFields } = computeFields(originalFields, format, { + globalErrors, + relaxFieldsDetection, + }); + const { rows } = await computeRows(parsedRows, { fields, rowsErrors }); + const fileValidation = validateFile( + { linebreak, encoding, delimiter }, + { globalErrors }, + ); + validateRows(parsedRows, { globalErrors }); + + const uniqueErrors = new Set([...globalErrors, ...rowsErrors]); + + const profilesValidation = mapValues(profiles, (profile) => { + const { code, name } = profile; + const isValid = ![...uniqueErrors].some( + (e) => getErrorLevel(profile.code, e) === "E", + ); + return { code, name, isValid }; + }); return { encoding, @@ -141,84 +175,94 @@ async function prevalidate(file, format, relaxFieldsDetection) { profilesValidation, globalErrors: [...globalErrors], rowsErrors: [...rowsErrors], - uniqueErrors: [...uniqueErrors] - } + uniqueErrors: [...uniqueErrors], + }; } function validateProfileRows(computedRows, profileName) { - return computedRows.map(row => { - const errors = row.errors.map(e => ({ + return computedRows.map((row) => { + const errors = row.errors.map((e) => ({ ...e, - level: getErrorLevel(profileName, e.code) - })) + level: getErrorLevel(profileName, e.code), + })); - const isValid = !errors.some(e => e.level === 'E') + const isValid = !errors.some((e) => e.level === "E"); return { ...row, errors, - isValid - } - }) + isValid, + }; + }); } function validateProfileUniqueErrors(uniqueErrors, profileName) { - return uniqueErrors.map(code => ({ + return uniqueErrors.map((code) => ({ code, - level: getErrorLevel(profileName, code) - })) + level: getErrorLevel(profileName, code), + })); } function validateProfileNotFoundFields(notFoundFields, profileName) { - return notFoundFields.map(f => ({ + return notFoundFields.map((f) => ({ ...f, - level: getErrorLevel(profileName, `field.${f.schemaName}.missing`) - })) + level: getErrorLevel(profileName, `field.${f.schemaName}.missing`), + })); } function validateProfile(prevalidateResult, profileName) { if (!prevalidateResult.parseOk) { - return prevalidateResult + return prevalidateResult; } - const rows = validateProfileRows(prevalidateResult.rows, profileName) - const profilErrors = validateProfileUniqueErrors(prevalidateResult.uniqueErrors, profileName) - const notFoundFields = validateProfileNotFoundFields(prevalidateResult.notFoundFields, profileName) + const rows = validateProfileRows(prevalidateResult.rows, profileName); + const profilErrors = validateProfileUniqueErrors( + prevalidateResult.uniqueErrors, + profileName, + ); + const notFoundFields = validateProfileNotFoundFields( + prevalidateResult.notFoundFields, + profileName, + ); return { ...prevalidateResult, rows, notFoundFields, - profilErrors - } + profilErrors, + }; } async function validate(file, options = {}) { - const profile = options.profile || '1.3' - let {relaxFieldsDetection} = options + const profile = options.profile || "1.3"; + let { relaxFieldsDetection } = options; if (options.relaxFieldsDetection === undefined) { - relaxFieldsDetection = profiles[profile].relax + relaxFieldsDetection = profiles[profile].relax; } - const {format} = profiles[profile] - const prevalidateResult = await prevalidate(file, format, relaxFieldsDetection) - return validateProfile(prevalidateResult, profile) + const { format } = profiles[profile]; + const prevalidateResult = await prevalidate( + file, + format, + relaxFieldsDetection, + ); + return validateProfile(prevalidateResult, profile); } function humanizeLinebreak(linebreak) { - if (linebreak === '\n') { - return 'Unix' + if (linebreak === "\n") { + return "Unix"; } - if (linebreak === '\r\n') { - return 'Windows' + if (linebreak === "\r\n") { + return "Windows"; } - if (linebreak === '\r') { - return 'Old Mac/BSD' + if (linebreak === "\r") { + return "Old Mac/BSD"; } - return 'Inconnu' + return "Inconnu"; } -module.exports = {validate, validateProfile} +module.exports = { validate, validateProfile }; diff --git a/lib/validate/parse/__tests__/buffer.js b/lib/validate/parse/__tests__/buffer.js index 13bd1ac..eee8401 100644 --- a/lib/validate/parse/__tests__/buffer.js +++ b/lib/validate/parse/__tests__/buffer.js @@ -1,34 +1,34 @@ -const {join} = require('path') -const fs = require('fs') -const {promisify} = require('util') -const test = require('ava') +const { join } = require("path"); +const fs = require("fs"); +const { promisify } = require("util"); +const test = require("ava"); -const {decodeBuffer} = require('../buffer') +const { decodeBuffer } = require("../buffer"); -const readFile = promisify(fs.readFile) +const readFile = promisify(fs.readFile); function readAsBuffer(relativePath) { - const absolutePath = join(__dirname, 'data', relativePath) - return readFile(absolutePath) + const absolutePath = join(__dirname, "data", relativePath); + return readFile(absolutePath); } -test('detect and decode UTF-8 from file', async t => { - const buffer = await readAsBuffer('sample.csv') - const {encoding, decodedString} = decodeBuffer(buffer) - t.is(encoding, 'utf-8') - t.true(decodedString.includes('bâtiment')) -}) +test("detect and decode UTF-8 from file", async (t) => { + const buffer = await readAsBuffer("sample.csv"); + const { encoding, decodedString } = decodeBuffer(buffer); + t.is(encoding, "utf-8"); + t.true(decodedString.includes("bâtiment")); +}); -test('detect and decode ASCI from file => default to UTF-8', async t => { - const buffer = await readAsBuffer('junk.ascii.csv') - const {encoding, decodedString} = decodeBuffer(buffer) - t.is(encoding, 'utf-8') - t.true(decodedString.includes('gml_id')) -}) +test("detect and decode ASCI from file => default to UTF-8", async (t) => { + const buffer = await readAsBuffer("junk.ascii.csv"); + const { encoding, decodedString } = decodeBuffer(buffer); + t.is(encoding, "utf-8"); + t.true(decodedString.includes("gml_id")); +}); -test('detect and decode ANSI from file', async t => { - const buffer = await readAsBuffer('sample.ansi.csv') - const {encoding, decodedString} = decodeBuffer(buffer) - t.is(encoding, 'windows-1252') - t.true(decodedString.includes('bâtiment')) -}) +test("detect and decode ANSI from file", async (t) => { + const buffer = await readAsBuffer("sample.ansi.csv"); + const { encoding, decodedString } = decodeBuffer(buffer); + t.is(encoding, "windows-1252"); + t.true(decodedString.includes("bâtiment")); +}); diff --git a/lib/validate/parse/blob.js b/lib/validate/parse/blob.js index 9a89a48..47c9f99 100644 --- a/lib/validate/parse/blob.js +++ b/lib/validate/parse/blob.js @@ -1,23 +1,23 @@ -const toBuffer = require('blob-to-buffer') -const {detectBufferEncoding} = require('./detect-encoding') -const {parseCsv} = require('./csv') +const toBuffer = require("blob-to-buffer"); +const { detectBufferEncoding } = require("./detect-encoding"); +const { parseCsv } = require("./csv"); function detectBlobEncoding(blob) { return new Promise((resolve, reject) => { toBuffer(blob, (err, buffer) => { if (err) { - return reject(err) + return reject(err); } - resolve(detectBufferEncoding(buffer)) - }) - }) + resolve(detectBufferEncoding(buffer)); + }); + }); } async function parse(blob, options = {}) { - const encoding = await detectBlobEncoding(blob) - const parseResult = await parseCsv(blob, {...options, encoding}) - return {...parseResult, encoding} + const encoding = await detectBlobEncoding(blob); + const parseResult = await parseCsv(blob, { ...options, encoding }); + return { ...parseResult, encoding }; } -module.exports = {parse} +module.exports = { parse }; diff --git a/lib/validate/parse/buffer.js b/lib/validate/parse/buffer.js index 80f8a6f..7343c2e 100644 --- a/lib/validate/parse/buffer.js +++ b/lib/validate/parse/buffer.js @@ -1,26 +1,24 @@ -const iconv = require('iconv-lite') -const {detectBufferEncoding} = require('./detect-encoding') -const {parseCsv} = require('./csv') +const iconv = require("iconv-lite"); +const { detectBufferEncoding } = require("./detect-encoding"); +const { parseCsv } = require("./csv"); // Copied from strip-bom package which contains ES6 syntax function stripBom(str) { // Catches EFBBBF (UTF-8 BOM) because the buffer-to-string // conversion translates it to FEFF (UTF-16 BOM) - return str.codePointAt(0) === 0xFE_FF ? str.slice(1) : str + return str.codePointAt(0) === 0xfe_ff ? str.slice(1) : str; } function decodeBuffer(buffer) { - const encoding = detectBufferEncoding(buffer) - const decodedString = stripBom( - iconv.decode(buffer, encoding) - ) - return {encoding, decodedString} + const encoding = detectBufferEncoding(buffer); + const decodedString = stripBom(iconv.decode(buffer, encoding)); + return { encoding, decodedString }; } async function parse(buffer, options = {}) { - const {encoding, decodedString} = decodeBuffer(buffer) - const parseResult = await parseCsv(decodedString, options) - return {...parseResult, encoding} + const { encoding, decodedString } = decodeBuffer(buffer); + const parseResult = await parseCsv(decodedString, options); + return { ...parseResult, encoding }; } -module.exports = {decodeBuffer, parse} +module.exports = { decodeBuffer, parse }; diff --git a/lib/validate/parse/csv.js b/lib/validate/parse/csv.js index dfc2f2d..21b651e 100644 --- a/lib/validate/parse/csv.js +++ b/lib/validate/parse/csv.js @@ -1,20 +1,20 @@ -const Papa = require('papaparse') +const Papa = require("papaparse"); const PAPA_OPTIONS = { - delimitersToGuess: [',', '\t', ';'], + delimitersToGuess: [",", "\t", ";"], skipEmptyLines: true, - header: true -} + header: true, +}; function parseCsv(file, options = {}) { return new Promise((resolve, reject) => { Papa.parse(file, { ...PAPA_OPTIONS, ...options, - complete: res => resolve(res), - error: err => reject(err) - }) - }) + complete: (res) => resolve(res), + error: (err) => reject(err), + }); + }); } -module.exports = {parseCsv} +module.exports = { parseCsv }; diff --git a/lib/validate/parse/detect-encoding.js b/lib/validate/parse/detect-encoding.js index 8c89d32..ff95cad 100644 --- a/lib/validate/parse/detect-encoding.js +++ b/lib/validate/parse/detect-encoding.js @@ -1,45 +1,45 @@ -const chardet = require('chardet') -const fileType = require('file-type') +const chardet = require("chardet"); +const fileType = require("file-type"); const CHARDET_TO_NORMALIZED_ENCODINGS = { - 'iso-8859-1': 'windows-1252', - 'iso-8859-15': 'windows-1252', - 'windows-1252': 'windows-1252', - 'utf-8': 'utf-8' -} + "iso-8859-1": "windows-1252", + "iso-8859-15": "windows-1252", + "windows-1252": "windows-1252", + "utf-8": "utf-8", +}; function normalizeEncodingName(encoding) { - const lcEncoding = encoding.toLowerCase() + const lcEncoding = encoding.toLowerCase(); if (!(lcEncoding in CHARDET_TO_NORMALIZED_ENCODINGS)) { - throw new Error('Encoding currently not supported: ' + encoding) + throw new Error("Encoding currently not supported: " + encoding); } - return CHARDET_TO_NORMALIZED_ENCODINGS[lcEncoding] + return CHARDET_TO_NORMALIZED_ENCODINGS[lcEncoding]; } function detectBufferEncoding(buffer) { if (fileType(buffer)) { - throw new Error('Non-text file cannot be processed') + throw new Error("Non-text file cannot be processed"); } - const analyseResults = chardet.analyse(buffer) + const analyseResults = chardet.analyse(buffer); if (analyseResults.length === 0) { - throw new Error('Unable to detect encoding') + throw new Error("Unable to detect encoding"); } - const utf8Result = analyseResults.find(r => r.name === 'UTF-8') + const utf8Result = analyseResults.find((r) => r.name === "UTF-8"); if (utf8Result && utf8Result.confidence >= 80) { - return 'utf-8' + return "utf-8"; } // Pure ASCII if (utf8Result && utf8Result.confidence === 10) { - return 'utf-8' + return "utf-8"; } - return normalizeEncodingName(analyseResults[0].name) + return normalizeEncodingName(analyseResults[0].name); } -module.exports = {normalizeEncodingName, detectBufferEncoding} +module.exports = { normalizeEncodingName, detectBufferEncoding }; diff --git a/lib/validate/parse/index.js b/lib/validate/parse/index.js index ad98591..afbaab8 100644 --- a/lib/validate/parse/index.js +++ b/lib/validate/parse/index.js @@ -1 +1 @@ -module.exports = require('./buffer') +module.exports = require("./buffer"); diff --git a/lib/validate/row.js b/lib/validate/row.js index 6d53f8f..afc3a1a 100644 --- a/lib/validate/row.js +++ b/lib/validate/row.js @@ -1,106 +1,122 @@ -const schema = require('../schema') +const schema = require("../schema"); -const {getNormalizedEnumValue} = schema +const { getNormalizedEnumValue } = schema; async function readValue(fieldName, rawValue) { if (!(fieldName in schema.fields)) { - throw new Error(`Unknown field name: ${fieldName}`) + throw new Error(`Unknown field name: ${fieldName}`); } const result = { parsedValue: undefined, additionalValues: undefined, - errors: [] - } + errors: [], + }; - const def = schema.fields[fieldName] + const def = schema.fields[fieldName]; - const trimmedValue = def.trim ? rawValue.trim() : rawValue + const trimmedValue = def.trim ? rawValue.trim() : rawValue; if (def.trim && trimmedValue !== rawValue) { - result.errors.push('espaces_debut_fin') + result.errors.push("espaces_debut_fin"); } if (def.required && !trimmedValue) { - result.errors.push('valeur_manquante') + result.errors.push("valeur_manquante"); } else if (!trimmedValue) { // Ne rien faire } else if (def.parse) { result.parsedValue = await def.parse(trimmedValue, { setAdditionnalValues(values) { - result.additionalValues = values + result.additionalValues = values; }, addError(code) { - result.errors.push(code) - } - }) + result.errors.push(code); + }, + }); } else if (def.enum) { - const normalizedValue = getNormalizedEnumValue(trimmedValue) + const normalizedValue = getNormalizedEnumValue(trimmedValue); if (def.enumFuzzyMap.has(normalizedValue)) { - const schemaValue = def.enumFuzzyMap.get(normalizedValue) + const schemaValue = def.enumFuzzyMap.get(normalizedValue); if (schemaValue !== trimmedValue.normalize()) { - result.errors.push('enum_fuzzy') + result.errors.push("enum_fuzzy"); } - result.parsedValue = schemaValue + result.parsedValue = schemaValue; } else { - result.errors.push('valeur_invalide') + result.errors.push("valeur_invalide"); } } else { - result.parsedValue = trimmedValue + result.parsedValue = trimmedValue; } - return result + return result; } -async function validateRow(row, {line, indexedFields}) { - const rawValues = {} - const parsedValues = {} - const additionalValues = {} - const localizedValues = {} - const errors = [] +async function validateRow(row, { line, indexedFields }) { + const rawValues = {}; + const parsedValues = {}; + const additionalValues = {}; + const localizedValues = {}; + const errors = []; - await Promise.all(Object.keys(row).map(async fieldName => { - const rawValue = row[fieldName] - const field = indexedFields[fieldName] - const normalizedFieldName = field.localizedSchemaName || field.schemaName || fieldName + await Promise.all( + Object.keys(row).map(async (fieldName) => { + const rawValue = row[fieldName]; + const field = indexedFields[fieldName]; + const normalizedFieldName = + field.localizedSchemaName || field.schemaName || fieldName; - rawValues[normalizedFieldName] = rawValue + rawValues[normalizedFieldName] = rawValue; - if (!field.schemaName) { - return - } + if (!field.schemaName) { + return; + } - const result = await readValue(field.schemaName, rawValue) + const result = await readValue(field.schemaName, rawValue); - for (const error of result.errors) { - errors.push({code: `${normalizedFieldName}.${error}`, schemaName: fieldName}) - } + for (const error of result.errors) { + errors.push({ + code: `${normalizedFieldName}.${error}`, + schemaName: fieldName, + }); + } - if (result.additionalValues) { - additionalValues[normalizedFieldName] = result.additionalValues - } + if (result.additionalValues) { + additionalValues[normalizedFieldName] = result.additionalValues; + } - if (result.parsedValue !== undefined) { - parsedValues[normalizedFieldName] = result.parsedValue + if (result.parsedValue !== undefined) { + parsedValues[normalizedFieldName] = result.parsedValue; - if (field.locale) { - if (!localizedValues[field.schemaName]) { - localizedValues[field.schemaName] = {} - } + if (field.locale) { + if (!localizedValues[field.schemaName]) { + localizedValues[field.schemaName] = {}; + } - localizedValues[field.schemaName][field.locale] = result.parsedValue + localizedValues[field.schemaName][field.locale] = result.parsedValue; + } } - } - })) + }), + ); - schema.row({rawValues, parsedValues, additionalValues, localizedValues}, { - addError(code) { - errors.push({code: `row.${code}`}) - } - }) - - return {rawValues, parsedValues, additionalValues, localizedValues, errors, line} + schema.row( + { rawValues, parsedValues, additionalValues, localizedValues }, + { + addError(code) { + errors.push({ code: `row.${code}` }); + }, + }, + ); + + return { + rawValues, + parsedValues, + additionalValues, + localizedValues, + errors, + line, + }; } -module.exports = {validateRow, readValue} +module.exports = { validateRow, readValue }; diff --git a/package.json b/package.json index 2c19c69..3ef1ef7 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,11 @@ "bal": "bin/bal" }, "scripts": { - "lint": "xo", + "lint": "npx eslint lib scripts", + "lint:fix": "npx eslint --fix lib scripts", + "prettier": "npx prettier lib scripts --check", + "prettier:fix": "yarn run prettier --write", + "format": "yarn run prettier:fix && yarn run lint:fix", "build-minicog": "node scripts/build-minicog", "build": "pkg --targets node16-linux-x64,node16-macos-x64,node16-win-x64 --output bal .", "transpile": "rm -rf browser && babel lib --out-dir browser", @@ -56,31 +60,16 @@ "@etalab/decoupage-administratif": "^3.0.0", "ava": "^4.3.3", "codecov": "^3.8.3", + "eslint": "^8.57.0", + "eslint-config-prettier": "^9.1.0", "fs-extra": "^10.1.0", "nyc": "^15.1.0", "pkg": "^5.8.0", - "xo": "^0.52.3" + "prettier": "^3.2.5" }, "engines": { "node": ">= 14" }, - "xo": { - "space": 2, - "semicolon": false, - "rules": { - "comma-dangle": [ - "error", - "never" - ], - "unicorn/import-style": "off", - "unicorn/prevent-abbreviations": "off", - "unicorn/no-reduce": "off", - "unicorn/prefer-module": "off", - "unicorn/text-encoding-identifier-case": "off", - "import/extensions": "off", - "node/prefer-global/process": "off" - } - }, "pkg": { "scripts": "lib/**/*.js" }, diff --git a/scripts/build-minicog.js b/scripts/build-minicog.js index 47c0fb3..13c3ac9 100644 --- a/scripts/build-minicog.js +++ b/scripts/build-minicog.js @@ -1,24 +1,31 @@ #!/usr/bin/env node -const path = require('path') -const process = require('process') -const {outputJson} = require('fs-extra') -const communes = require('@etalab/decoupage-administratif/data/communes.json') +const path = require("path"); +const process = require("process"); +const { outputJson } = require("fs-extra"); +const communes = require("@etalab/decoupage-administratif/data/communes.json"); -const PLM = new Set(['75056', '69123', '13055']) +const PLM = new Set(["75056", "69123", "13055"]); async function main() { const communesActuelles = communes - .filter(c => ['commune-actuelle', 'arrondissement-municipal'].includes(c.type) && !PLM.has(c.code)) - .map(c => ({code: c.code, nom: c.nom, anciensCodes: c.anciensCodes})) + .filter( + (c) => + ["commune-actuelle", "arrondissement-municipal"].includes(c.type) && + !PLM.has(c.code), + ) + .map((c) => ({ code: c.code, nom: c.nom, anciensCodes: c.anciensCodes })); const communesDelegueesAssociees = communes - .filter(c => ['commune-associee', 'commune-deleguee'].includes(c.type)) - .map(c => ({code: c.code, nom: c.nom, chefLieu: c.chefLieu})) + .filter((c) => ["commune-associee", "commune-deleguee"].includes(c.type)) + .map((c) => ({ code: c.code, nom: c.nom, chefLieu: c.chefLieu })); - await outputJson(path.join(__dirname, '..', 'minicog.json'), [...communesActuelles, ...communesDelegueesAssociees]) + await outputJson(path.join(__dirname, "..", "minicog.json"), [ + ...communesActuelles, + ...communesDelegueesAssociees, + ]); } -main().catch(error => { - console.error(error) - process.exit(1) -}) +main().catch((error) => { + console.error(error); + process.exit(1); +}); diff --git a/yarn.lock b/yarn.lock index 614aa93..ec5b1f4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,11 @@ # yarn lockfile v1 +"@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== + "@ampproject/remapping@^2.1.0": version "2.1.2" resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.2.tgz#4edca94973ded9630d20101cd8559cedb8d8bd34" @@ -25,13 +30,6 @@ "@nicolo-ribaudo/chokidar-2" "2.1.8-no-fsevents.3" chokidar "^3.4.0" -"@babel/code-frame@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" - integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== - dependencies: - "@babel/highlight" "^7.0.0" - "@babel/code-frame@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" @@ -386,11 +384,6 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== -"@babel/helper-validator-identifier@^7.15.7": - version "7.15.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" - integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== - "@babel/helper-validator-identifier@^7.18.6": version "7.19.1" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" @@ -434,15 +427,6 @@ "@babel/traverse" "^7.8.3" "@babel/types" "^7.8.3" -"@babel/highlight@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" - integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== - dependencies: - chalk "^2.0.0" - esutils "^2.0.2" - js-tokens "^4.0.0" - "@babel/highlight@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" @@ -1169,21 +1153,38 @@ resolved "https://registry.yarnpkg.com/@ban-team/shared-data/-/shared-data-1.2.0.tgz#0e29e84a00f7df3b17e5821bde1405a2bfa656b5" integrity sha512-35jz6ITHHufUKxXAfa8ReSMl6lZarnfVBkS++wgHpk27e9K52bXyAHo+n3X331n2mSzoIQXxFK7SEcPob7a5cA== -"@eslint/eslintrc@^1.3.0", "@eslint/eslintrc@^1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.2.tgz#58b69582f3b7271d8fa67fe5251767a5b38ea356" - integrity sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ== +"@eslint-community/eslint-utils@^4.2.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.6.1": + version "4.10.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" + integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== + +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.4.0" - globals "^13.15.0" + espree "^9.6.0" + globals "^13.19.0" ignore "^5.2.0" import-fresh "^3.2.1" js-yaml "^4.1.0" minimatch "^3.1.2" strip-json-comments "^3.1.1" +"@eslint/js@8.57.0": + version "8.57.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" + integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== + "@etalab/decoupage-administratif@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@etalab/decoupage-administratif/-/decoupage-administratif-3.0.0.tgz#1d0d54b5b884c3df9555b4b8db543f83559629d3" @@ -1196,29 +1197,24 @@ dependencies: proj4 "^2.8.0" -"@humanwhocodes/config-array@^0.10.4": - version "0.10.4" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.10.4.tgz#01e7366e57d2ad104feea63e72248f22015c520c" - integrity sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw== +"@humanwhocodes/config-array@^0.11.14": + version "0.11.14" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" + integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== dependencies: - "@humanwhocodes/object-schema" "^1.2.1" - debug "^4.1.1" - minimatch "^3.0.4" - -"@humanwhocodes/gitignore-to-minimatch@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz#316b0a63b91c10e53f242efb4ace5c3b34e8728d" - integrity sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA== + "@humanwhocodes/object-schema" "^2.0.2" + debug "^4.3.1" + minimatch "^3.0.5" "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@humanwhocodes/object-schema@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" + integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== "@istanbuljs/load-nyc-config@^1.0.0": version "1.0.0" @@ -1314,11 +1310,24 @@ "@nodelib/fs.stat" "2.0.3" run-parallel "^1.1.9" +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + "@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": version "2.0.3" resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== +"@nodelib/fs.stat@2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + "@nodelib/fs.walk@^1.2.3": version "1.2.4" resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" @@ -1327,6 +1336,14 @@ "@nodelib/fs.scandir" "2.1.3" fastq "^1.6.0" +"@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + "@tootallnate/once@1": version "1.0.0" resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.0.0.tgz#9c13c2574c92d4503b005feca8f2e16cc1611506" @@ -1337,133 +1354,15 @@ resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== -"@types/eslint@^7.2.13": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.28.0.tgz#7e41f2481d301c68e14f483fe10b017753ce8d5a" - integrity sha512-07XlgzX0YJUn4iG1ocY4IX9DzKSmMGUs6ESKlxWhZRaa0fatIWaHWUVapcuGa8r5HFnTqzj+4OCjd5f7EZ/i/A== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - -"@types/estree@*": - version "0.0.50" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83" - integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== - -"@types/json-schema@*", "@types/json-schema@^7.0.9": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" - integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== - -"@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" - integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= - -"@types/minimist@^1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" - integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== - -"@types/normalize-package-data@^2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" - integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== - -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - "@types/uuid@8.3.4": version "8.3.4" resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== -"@typescript-eslint/eslint-plugin@^5.35.1": - version "5.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.38.0.tgz#ac919a199548861012e8c1fb2ec4899ac2bc22ae" - integrity sha512-GgHi/GNuUbTOeoJiEANi0oI6fF3gBQc3bGFYj40nnAPCbhrtEDf2rjBmefFadweBmO1Du1YovHeDP2h5JLhtTQ== - dependencies: - "@typescript-eslint/scope-manager" "5.38.0" - "@typescript-eslint/type-utils" "5.38.0" - "@typescript-eslint/utils" "5.38.0" - debug "^4.3.4" - ignore "^5.2.0" - regexpp "^3.2.0" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/parser@^5.35.1": - version "5.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.38.0.tgz#5a59a1ff41a7b43aacd1bb2db54f6bf1c02b2ff8" - integrity sha512-/F63giJGLDr0ms1Cr8utDAxP2SPiglaD6V+pCOcG35P2jCqdfR7uuEhz1GIC3oy4hkUF8xA1XSXmd9hOh/a5EA== - dependencies: - "@typescript-eslint/scope-manager" "5.38.0" - "@typescript-eslint/types" "5.38.0" - "@typescript-eslint/typescript-estree" "5.38.0" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@5.38.0": - version "5.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.38.0.tgz#8f0927024b6b24e28671352c93b393a810ab4553" - integrity sha512-ByhHIuNyKD9giwkkLqzezZ9y5bALW8VNY6xXcP+VxoH4JBDKjU5WNnsiD4HJdglHECdV+lyaxhvQjTUbRboiTA== - dependencies: - "@typescript-eslint/types" "5.38.0" - "@typescript-eslint/visitor-keys" "5.38.0" - -"@typescript-eslint/type-utils@5.38.0": - version "5.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.38.0.tgz#c8b7f681da825fcfc66ff2b63d70693880496876" - integrity sha512-iZq5USgybUcj/lfnbuelJ0j3K9dbs1I3RICAJY9NZZpDgBYXmuUlYQGzftpQA9wC8cKgtS6DASTvF3HrXwwozA== - dependencies: - "@typescript-eslint/typescript-estree" "5.38.0" - "@typescript-eslint/utils" "5.38.0" - debug "^4.3.4" - tsutils "^3.21.0" - -"@typescript-eslint/types@5.38.0": - version "5.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.38.0.tgz#8cd15825e4874354e31800dcac321d07548b8a5f" - integrity sha512-HHu4yMjJ7i3Cb+8NUuRCdOGu2VMkfmKyIJsOr9PfkBVYLYrtMCK/Ap50Rpov+iKpxDTfnqvDbuPLgBE5FwUNfA== - -"@typescript-eslint/typescript-estree@5.38.0": - version "5.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.38.0.tgz#89f86b2279815c6fb7f57d68cf9b813f0dc25d98" - integrity sha512-6P0RuphkR+UuV7Avv7MU3hFoWaGcrgOdi8eTe1NwhMp2/GjUJoODBTRWzlHpZh6lFOaPmSvgxGlROa0Sg5Zbyg== - dependencies: - "@typescript-eslint/types" "5.38.0" - "@typescript-eslint/visitor-keys" "5.38.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/utils@5.38.0": - version "5.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.38.0.tgz#5b31f4896471818153790700eb02ac869a1543f4" - integrity sha512-6sdeYaBgk9Fh7N2unEXGz+D+som2QCQGPAf1SxrkEr+Z32gMreQ0rparXTNGRRfYUWk/JzbGdcM8NSSd6oqnTA== - dependencies: - "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.38.0" - "@typescript-eslint/types" "5.38.0" - "@typescript-eslint/typescript-estree" "5.38.0" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" - -"@typescript-eslint/visitor-keys@5.38.0": - version "5.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.38.0.tgz#60591ca3bf78aa12b25002c0993d067c00887e34" - integrity sha512-MxnrdIyArnTi+XyFLR+kt/uNAcdOnmT+879os7qDRI+EYySR4crXJq9BXPfRzzLGq0wgxkwidrCJ9WCAoacm1w== - dependencies: - "@typescript-eslint/types" "5.38.0" - eslint-visitor-keys "^3.3.0" - -acorn-jsx@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" - integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== acorn-jsx@^5.3.2: version "5.3.2" @@ -1475,16 +1374,16 @@ acorn-walk@^8.2.0: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== -acorn@^8.5.0: - version "8.5.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.5.0.tgz#4512ccb99b3698c752591e9bb4472e38ad43cee2" - integrity sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q== - -acorn@^8.7.1, acorn@^8.8.0: +acorn@^8.7.1: version "8.8.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== +acorn@^8.9.0: + version "8.11.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + agent-base@6: version "6.0.0" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.0.tgz#5d0101f19bbfaed39980b22ae866de153b93f09a" @@ -1508,7 +1407,7 @@ aggregate-error@^4.0.0: clean-stack "^4.0.0" indent-string "^5.0.0" -ajv@^6.10.0, ajv@^6.12.4: +ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -1518,13 +1417,6 @@ ajv@^6.10.0, ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ansi-escapes@^4.2.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.0.tgz#a4ce2b33d6b214b7950d8595c212f12ac9cc569d" - integrity sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg== - dependencies: - type-fest "^0.8.1" - ansi-regex@^5.0.0, ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" @@ -1605,46 +1497,16 @@ array-find-index@^1.0.1: resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= -array-find@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-find/-/array-find-1.0.0.tgz#6c8e286d11ed768327f8e62ecee87353ca3e78b8" - integrity sha1-bI4obRHtdoMn+OYuzuhzU8o+eLg= - -array-includes@^3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9" - integrity sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - get-intrinsic "^1.1.1" - is-string "^1.0.7" - array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array.prototype.flat@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz#07e0975d84bbc7c48cd1879d609e682598d33e13" - integrity sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.0" - arrgv@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/arrgv/-/arrgv-1.0.2.tgz#025ed55a6a433cad9b604f8112fc4292715a6ec0" integrity sha512-a4eg4yhp7mmruZDQFqVMlxNRFGi/i1r87pt8SDHy0/I8PqSXoUTlWZRdAZo0VXgvEARcujbtTk8kiZRi1uDGRw== -arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= - arrify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/arrify/-/arrify-3.0.0.tgz#ccdefb8eaf2a1d2ab0da1ca2ce53118759fd46bc" @@ -1784,7 +1646,7 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^3.0.1, braces@^3.0.2, braces@~3.0.2: +braces@^3.0.1, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== @@ -1809,18 +1671,6 @@ buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" -builtin-modules@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" - integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== - -builtins@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/builtins/-/builtins-5.0.1.tgz#87f6db9ab0458be728564fa81d876d8d74552fa9" - integrity sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ== - dependencies: - semver "^7.0.0" - caching-transform@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-4.0.0.tgz#00d297a4206d71e2163c39eaffa8157ac0651f0f" @@ -1831,22 +1681,6 @@ caching-transform@^4.0.0: package-hash "^4.0.0" write-file-atomic "^3.0.0" -call-bind@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.0.tgz#24127054bb3f9bdcb4b1fb82418186072f77b8ce" - integrity sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.0" - -call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - callsites@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.0.0.tgz#fb7eb569b72ad7a45812f93fd9430a3e410b3dd3" @@ -1857,16 +1691,6 @@ callsites@^4.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-4.0.0.tgz#8014cea4fedfe681a30e2f7d2d557dd95808a92a" integrity sha512-y3jRROutgpKdz5vzEhWM34TidDU8vkJppF8dszITeb1PQmSqV3DTxyV8G/lyO/DNvtE1YTedehmw9MPZsCBHxQ== -camelcase-keys@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-7.0.1.tgz#5a57e6dfb3f6c7929dad15599ee4476a7e9a3b2d" - integrity sha512-P331lEls98pW8JLyodNWfzuz91BEDVA4VpW2/SwXnyv2K495tq1N777xzDbFgnEigfA7UIY0xa6PwR/H9jijjA== - dependencies: - camelcase "^6.2.0" - map-obj "^4.1.0" - quick-lru "^5.1.1" - type-fest "^1.2.1" - camelcase@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" @@ -1877,11 +1701,6 @@ camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" - integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== - caniuse-lite@^1.0.30001400: version "1.0.30001409" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001409.tgz#6135da9dcab34cd9761d9cdb12a68e6740c5e96e" @@ -1912,7 +1731,7 @@ chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: +chalk@^4.0.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -1970,11 +1789,6 @@ chunkd@^2.0.1: resolved "https://registry.yarnpkg.com/chunkd/-/chunkd-2.0.1.tgz#49cd1d7b06992dc4f7fccd962fe2a101ee7da920" integrity sha512-7d58XsFmOq0j6el67Ug9mHf9ELUXsQXYJBkyxhH/k+6Ke0qXRnv0kbemx+Twc6fRJ07C49lcbdgm9FL1Ei/6SQ== -ci-info@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.0.tgz#b4ed1fb6818dea4803a55c623041f9165d2066b2" - integrity sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw== - ci-info@^3.3.1: version "3.4.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.4.0.tgz#b28484fd436cbc267900364f096c9dc185efb251" @@ -1985,13 +1799,6 @@ ci-parallel-vars@^1.0.1: resolved "https://registry.yarnpkg.com/ci-parallel-vars/-/ci-parallel-vars-1.0.1.tgz#e87ff0625ccf9d286985b29b4ada8485ca9ffbc2" integrity sha512-uvzpYrpmidaoxvIQHM+rKSrigjOe9feHYbw4uOI2gdfe1C3xIlxO+kVXq83WQWNniTf8bAxVpy+cQeFQsMERKg== -clean-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/clean-regexp/-/clean-regexp-1.0.0.tgz#8df7c7aae51fd36874e8f8d05b9180bc11a3fed7" - integrity sha1-jffHquUf02h06PjQW5GAvBGj/tc= - dependencies: - escape-string-regexp "^1.0.5" - clean-stack@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.0.0.tgz#301bfa9e8dd2d3d984c0e542f7aa67b996f63e0a" @@ -2111,11 +1918,6 @@ concordance@^5.0.4: semver "^7.3.2" well-known-symbols "^2.0.0" -confusing-browser-globals@1.0.11: - version "1.0.11" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" - integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== - convert-source-map@^1.1.0: version "1.6.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" @@ -2147,17 +1949,6 @@ core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -cosmiconfig@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" - integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.2.1" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.10.0" - cross-spawn@^7.0.0: version "7.0.1" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" @@ -2167,7 +1958,7 @@ cross-spawn@^7.0.0: shebang-command "^2.0.0" which "^2.0.1" -cross-spawn@^7.0.2, cross-spawn@^7.0.3: +cross-spawn@^7.0.2: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -2202,20 +1993,6 @@ debug@4, debug@^4.1.1: dependencies: ms "^2.1.1" -debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - debug@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.0.tgz#373687bffa678b38b1cd91f861b63850035ddc87" @@ -2237,24 +2014,11 @@ debug@^4.3.2: dependencies: ms "2.1.2" -decamelize-keys@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" - integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk= - dependencies: - decamelize "^1.1.0" - map-obj "^1.0.0" - -decamelize@^1.1.0, decamelize@^1.2.0: +decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= -decamelize@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-5.0.1.tgz#db11a92e58c741ef339fb0a2868d8a06a9a7b1e9" - integrity sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA== - decompress-response@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" @@ -2279,17 +2043,7 @@ default-require-extensions@^3.0.0: dependencies: strip-bom "^4.0.0" -define-lazy-prop@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" - integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== - -define-lazy-prop@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f" - integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== - -define-properties@^1.1.2, define-properties@^1.1.3: +define-properties@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== @@ -2322,13 +2076,6 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - doctrine@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" @@ -2375,69 +2122,6 @@ end-of-stream@^1.4.1: dependencies: once "^1.4.0" -enhance-visitors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/enhance-visitors/-/enhance-visitors-1.0.0.tgz#aa945d05da465672a1ebd38fee2ed3da8518e95a" - integrity sha1-qpRdBdpGVnKh69OP7i7T2oUY6Vo= - dependencies: - lodash "^4.13.1" - -enhanced-resolve@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz#4d6e689b3725f86090927ccc86cd9f1635b89e2e" - integrity sha1-TW5omzcl+GCQknzMhs2fFjW4ni4= - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.2.0" - tapable "^0.1.8" - -env-editor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/env-editor/-/env-editor-1.0.0.tgz#a7de585a96f0198d9ba20a786c17a691c53afaab" - integrity sha512-SRy6e7u1tZgohoxL952q9+kbRkkUrzi63dB7J4zr6wOSMQrCD0KJUNhMZajGTNQfdY68PaStfmIzh7To/FKilQ== - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-abstract@^1.19.0, es-abstract@^1.19.1: - version "1.19.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" - integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.1.1" - get-symbol-description "^1.0.0" - has "^1.0.3" - has-symbols "^1.0.2" - internal-slot "^1.0.3" - is-callable "^1.2.4" - is-negative-zero "^2.0.1" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.1" - is-string "^1.0.7" - is-weakref "^1.0.1" - object-inspect "^1.11.0" - object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.1" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - es6-error@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" @@ -2468,309 +2152,91 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -eslint-config-prettier@^8.5.0: - version "8.5.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" - integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== - -eslint-config-xo-typescript@^0.53.0: - version "0.53.0" - resolved "https://registry.yarnpkg.com/eslint-config-xo-typescript/-/eslint-config-xo-typescript-0.53.0.tgz#702be21ea0dfcb124903c5f723d023b1fdeb0da2" - integrity sha512-IJ1n70egMPTou/41HoGGFbLf/2WCsVW5lSUxOSklrR8T1221fMRPVJxIVZ3evr8R+N5wR6uzg/0uzSymwWA5Bg== - -eslint-config-xo@^0.42.0: - version "0.42.0" - resolved "https://registry.yarnpkg.com/eslint-config-xo/-/eslint-config-xo-0.42.0.tgz#07764d626d4f61ce41f04d309e08ff1de1813bd6" - integrity sha512-HIfd+AM6tHFoaZ/NXYDV3Mr/CJrAj/DoP6IOYt1/v+90XtCwVYOfW7LXbRDYDmhQMzT16h7eqPRcex72waRqdA== - dependencies: - confusing-browser-globals "1.0.11" - -eslint-formatter-pretty@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/eslint-formatter-pretty/-/eslint-formatter-pretty-4.1.0.tgz#7a6877c14ffe2672066c853587d89603e97c7708" - integrity sha512-IsUTtGxF1hrH6lMWiSl1WbGaiP01eT6kzywdY1U+zLc0MP+nwEnUiS9UI8IaOTUhTeQJLlCEWIbXINBH4YJbBQ== - dependencies: - "@types/eslint" "^7.2.13" - ansi-escapes "^4.2.1" - chalk "^4.1.0" - eslint-rule-docs "^1.1.5" - log-symbols "^4.0.0" - plur "^4.0.0" - string-width "^4.2.0" - supports-hyperlinks "^2.0.0" - -eslint-import-resolver-node@^0.3.6: - version "0.3.6" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" - integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== - dependencies: - debug "^3.2.7" - resolve "^1.20.0" - -eslint-import-resolver-webpack@^0.13.2: - version "0.13.2" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.13.2.tgz#fc813df0d08b9265cc7072d22393bda5198bdc1e" - integrity sha512-XodIPyg1OgE2h5BDErz3WJoK7lawxKTJNhgPNafRST6csC/MZC+L5P6kKqsZGRInpbgc02s/WZMrb4uGJzcuRg== - dependencies: - array-find "^1.0.0" - debug "^3.2.7" - enhanced-resolve "^0.9.1" - find-root "^1.1.0" - has "^1.0.3" - interpret "^1.4.0" - is-core-module "^2.7.0" - is-regex "^1.1.4" - lodash "^4.17.21" - resolve "^1.20.0" - semver "^5.7.1" - -eslint-module-utils@^2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz#4f3e41116aaf13a20792261e61d3a2e7e0583974" - integrity sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA== - dependencies: - debug "^3.2.7" - -eslint-plugin-ava@^13.2.0: - version "13.2.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-ava/-/eslint-plugin-ava-13.2.0.tgz#a8e88fe62a259e11e0744d74aaff83f8ec4dbbe0" - integrity sha512-i5B5izsEdERKQLruk1nIWzTTE7C26/ju8qQf7JeyRv32XT2lRMW0zMFZNhIrEf5/5VvpSz2rqrV7UcjClGbKsw== - dependencies: - enhance-visitors "^1.0.0" - eslint-utils "^3.0.0" - espree "^9.0.0" - espurify "^2.1.1" - import-modules "^2.1.0" - micro-spelling-correcter "^1.1.1" - pkg-dir "^5.0.0" - resolve-from "^5.0.0" - -eslint-plugin-es@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz#f0822f0c18a535a97c3e714e89f88586a7641ec9" - integrity sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ== - dependencies: - eslint-utils "^2.0.0" - regexpp "^3.0.0" - -eslint-plugin-eslint-comments@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz#9e1cd7b4413526abb313933071d7aba05ca12ffa" - integrity sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ== - dependencies: - escape-string-regexp "^1.0.5" - ignore "^5.0.5" - -eslint-plugin-import@^2.26.0: - version "2.26.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b" - integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== - dependencies: - array-includes "^3.1.4" - array.prototype.flat "^1.2.5" - debug "^2.6.9" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.6" - eslint-module-utils "^2.7.3" - has "^1.0.3" - is-core-module "^2.8.1" - is-glob "^4.0.3" - minimatch "^3.1.2" - object.values "^1.1.5" - resolve "^1.22.0" - tsconfig-paths "^3.14.1" - -eslint-plugin-n@^15.2.5: - version "15.2.5" - resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-15.2.5.tgz#aa7ff8d45bb8bf2df8ea3b7d3774ae570cb794b8" - integrity sha512-8+BYsqiyZfpu6NXmdLOXVUfk8IocpCjpd8nMRRH0A9ulrcemhb2VI9RSJMEy5udx++A/YcVPD11zT8hpFq368g== - dependencies: - builtins "^5.0.1" - eslint-plugin-es "^4.1.0" - eslint-utils "^3.0.0" - ignore "^5.1.1" - is-core-module "^2.10.0" - minimatch "^3.1.2" - resolve "^1.22.1" - semver "^7.3.7" - -eslint-plugin-no-use-extend-native@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-no-use-extend-native/-/eslint-plugin-no-use-extend-native-0.5.0.tgz#d6855e3a823a819b467cf7df56adca57de741bf9" - integrity sha512-dBNjs8hor8rJgeXLH4HTut5eD3RGWf9JUsadIfuL7UosVQ/dnvOKwxEcRrXrFxrMZ8llUVWT+hOimxJABsAUzQ== - dependencies: - is-get-set-prop "^1.0.0" - is-js-type "^2.0.0" - is-obj-prop "^1.0.0" - is-proto-prop "^2.0.0" - -eslint-plugin-prettier@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz#8b99d1e4b8b24a762472b4567992023619cb98e0" - integrity sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ== - dependencies: - prettier-linter-helpers "^1.0.0" - -eslint-plugin-unicorn@^42.0.0: - version "42.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-42.0.0.tgz#47d60c00c263ad743403b052db689e39acbacff1" - integrity sha512-ixBsbhgWuxVaNlPTT8AyfJMlhyC5flCJFjyK3oKE8TRrwBnaHvUbuIkCM1lqg8ryYrFStL/T557zfKzX4GKSlg== - dependencies: - "@babel/helper-validator-identifier" "^7.15.7" - ci-info "^3.3.0" - clean-regexp "^1.0.0" - eslint-utils "^3.0.0" - esquery "^1.4.0" - indent-string "^4.0.0" - is-builtin-module "^3.1.0" - lodash "^4.17.21" - pluralize "^8.0.0" - read-pkg-up "^7.0.1" - regexp-tree "^0.1.24" - safe-regex "^2.1.1" - semver "^7.3.5" - strip-indent "^3.0.0" - -eslint-rule-docs@^1.1.5: - version "1.1.88" - resolved "https://registry.yarnpkg.com/eslint-rule-docs/-/eslint-rule-docs-1.1.88.tgz#206af1f82450f55c563d861de2006cf08d979dda" - integrity sha512-hKI6Qb1jZ+EgK5yeNs+Kos+t48bZbGl4G0BJ4vYWaCcENtb/+3OaLwM0wGO04oVJQ/7s6sf2kF8xP5++bo7aPA== - -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" +eslint-config-prettier@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" + integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== -eslint-scope@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" - integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-utils@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.0.0.tgz#7be1cc70f27a72a76cd14aa698bcabed6890e1cd" - integrity sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" - integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== - -eslint-visitor-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" - integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== - -eslint-visitor-keys@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.0.0.tgz#e32e99c6cdc2eb063f204eda5db67bfe58bb4186" - integrity sha512-mJOZa35trBTb3IyRmo8xmKBZlxf+N7OnUl4+ZhJHs/r+0770Wh/LEACE2pqMGMe27G/4y8P2bYGk4J70IC5k1Q== - eslint-visitor-keys@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== -eslint@^8.22.0: - version "8.23.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.23.1.tgz#cfd7b3f7fdd07db8d16b4ac0516a29c8d8dca5dc" - integrity sha512-w7C1IXCc6fNqjpuYd0yPlcTKKmHlHHktRkzmBPZ+7cvNBQuiNjx0xaMTjAJGCafJhQkrFJooREv0CtrVzmHwqg== - dependencies: - "@eslint/eslintrc" "^1.3.2" - "@humanwhocodes/config-array" "^0.10.4" - "@humanwhocodes/gitignore-to-minimatch" "^1.0.2" +eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint@^8.57.0: + version "8.57.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" + integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.57.0" + "@humanwhocodes/config-array" "^0.11.14" "@humanwhocodes/module-importer" "^1.0.1" - ajv "^6.10.0" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.2" debug "^4.3.2" doctrine "^3.0.0" escape-string-regexp "^4.0.0" - eslint-scope "^7.1.1" - eslint-utils "^3.0.0" - eslint-visitor-keys "^3.3.0" - espree "^9.4.0" - esquery "^1.4.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" esutils "^2.0.2" fast-deep-equal "^3.1.3" file-entry-cache "^6.0.1" find-up "^5.0.0" - glob-parent "^6.0.1" - globals "^13.15.0" - globby "^11.1.0" - grapheme-splitter "^1.0.4" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" ignore "^5.2.0" - import-fresh "^3.0.0" imurmurhash "^0.1.4" is-glob "^4.0.0" - js-sdsl "^4.1.4" + is-path-inside "^3.0.3" js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" lodash.merge "^4.6.2" minimatch "^3.1.2" natural-compare "^1.4.0" - optionator "^0.9.1" - regexpp "^3.2.0" + optionator "^0.9.3" strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" text-table "^0.2.0" -esm-utils@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/esm-utils/-/esm-utils-4.1.0.tgz#c224ed458fd96fa242e3479c87aa2d28dca382e9" - integrity sha512-/oTSIjfeNL/gzVgM7CbRL4bqE8aKU1ANJqr8voBwTXvVMjYYm15PdYG6c6zNSAHNa3s9b6UMRHDosIq26OBdWg== - dependencies: - import-meta-resolve "2.1.0" - url-or-path "2.1.0" - -espree@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.0.0.tgz#e90a2965698228502e771c7a58489b1a9d107090" - integrity sha512-r5EQJcYZ2oaGbeR0jR0fFVijGOcwai07/690YRXLINuhmVeRY4UKSAsQPe/0BNuDgwP7Ophoc1PRsr2E3tkbdQ== +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== dependencies: - acorn "^8.5.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^3.0.0" - -espree@^9.4.0: - version "9.4.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.0.tgz#cd4bc3d6e9336c433265fc0aa016fc1aaf182f8a" - integrity sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw== - dependencies: - acorn "^8.8.0" + acorn "^8.9.0" acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.3.0" + eslint-visitor-keys "^3.4.1" esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -espurify@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/espurify/-/espurify-2.1.1.tgz#afb043f22fac908d991dd25f7bf40bcf03935b9c" - integrity sha512-zttWvnkhcDyGOhSH4vO2qCBILpdCMv/MX8lp4cqgRkQoDRGK2oZxi2GfWhlP2dIXmk7BaKeOTuzbHhyC68o8XQ== - -esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== +esquery@^1.4.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== dependencies: estraverse "^5.1.0" @@ -2781,11 +2247,6 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -estraverse@^4.1.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" - integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= - estraverse@^5.1.0, estraverse@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" @@ -2801,21 +2262,6 @@ esutils@^2.0.3: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -execa@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - expand-template@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" @@ -2831,7 +2277,7 @@ fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-diff@^1.1.2, fast-diff@^1.2.0: +fast-diff@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== @@ -2918,20 +2364,6 @@ find-cache-dir@^3.2.0: make-dir "^3.0.0" pkg-dir "^4.1.0" -find-cache-dir@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" - integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - -find-root@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" - integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== - find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -2956,14 +2388,6 @@ find-up@^6.0.0: locate-path "^7.0.0" path-exists "^5.0.0" -find-up@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-6.3.0.tgz#2abab3d3280b2dc7ac10199ef324c4e002c8c790" - integrity sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw== - dependencies: - locate-path "^7.1.0" - path-exists "^5.0.0" - flat-cache@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" @@ -3062,52 +2486,11 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.1.tgz#94a9768fcbdd0595a1c9273aacf4c89d075631be" - integrity sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== -get-set-props@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/get-set-props/-/get-set-props-0.1.0.tgz#998475c178445686d0b32246da5df8dbcfbe8ea3" - integrity sha1-mYR1wXhEVobQsyJG2l3428++jqM= - -get-stdin@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-9.0.0.tgz#3983ff82e03d56f1b2ea0d3e60325f39d703a575" - integrity sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA== - -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - github-from-package@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" @@ -3120,7 +2503,7 @@ glob-parent@^5.1.2, glob-parent@~5.1.0, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" -glob-parent@^6.0.1: +glob-parent@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== @@ -3168,10 +2551,10 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.9.0.tgz#bde236808e987f290768a93d065060d78e6ab249" integrity sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg== -globals@^13.15.0: - version "13.17.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.17.0.tgz#902eb1e680a41da93945adbdcb5a9f361ba69bd4" - integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== +globals@^13.19.0: + version "13.24.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== dependencies: type-fest "^0.20.2" @@ -3198,7 +2581,7 @@ globby@^13.1.1: merge2 "^1.4.1" slash "^4.0.0" -graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6: +graceful-fs@^4.1.15, graceful-fs@^4.1.6: version "4.1.15" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== @@ -3213,20 +2596,10 @@ graceful-fs@^4.2.4: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== -grapheme-splitter@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" - integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== - -hard-rejection@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" - integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== - -has-bigints@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" - integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== has-flag@^3.0.0: version "3.0.0" @@ -3238,23 +2611,11 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-symbols@^1.0.0, has-symbols@^1.0.1: +has-symbols@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== -has-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" - integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== - -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -3270,18 +2631,6 @@ hasha@^5.0.0: is-stream "^2.0.0" type-fest "^0.8.0" -hosted-git-info@^2.1.4: - version "2.8.9" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== - -hosted-git-info@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" - integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== - dependencies: - lru-cache "^6.0.0" - html-escaper@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.0.tgz#71e87f931de3fe09e56661ab9a29aadec707b491" @@ -3304,11 +2653,6 @@ https-proxy-agent@^5.0.0: agent-base "6" debug "4" -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - iconv-lite@^0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" @@ -3333,29 +2677,11 @@ ignore-walk@3.0.4: dependencies: minimatch "^3.0.4" -ignore@^5.0.5: - version "5.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.0.6.tgz#562dacc7ec27d672dde433aa683c543b24c17694" - integrity sha512-/+hp3kUf/Csa32ktIaj0OlRqQxrgs30n62M90UBpNd9k+ENEch5S+hmbW3DtcJGz3sYFTh4F3A6fQ0q7KWsp4w== - -ignore@^5.1.1: - version "5.1.4" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" - integrity sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A== - ignore@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== -import-fresh@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.0.0.tgz#a3d897f420cab0e671236897f75bc14b4885c390" - integrity sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - import-fresh@^3.2.1: version "3.2.2" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.2.tgz#fc129c160c5d68235507f4331a6baad186bdbc3e" @@ -3364,16 +2690,6 @@ import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" -import-meta-resolve@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-meta-resolve/-/import-meta-resolve-2.1.0.tgz#c8952d331ed6e9bb6ad524a7549deb3d34af41ce" - integrity sha512-yG9pxkWJVTy4cmRsNWE3ztFdtFuYIV8G4N+cbCkO8b+qngkLyIUhxQFuZ0qJm67+0nUOxjMPT7nfksPKza1v2g== - -import-modules@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-modules/-/import-modules-2.1.0.tgz#abe7df297cb6c1f19b57246eb8b8bd9664b6d8c2" - integrity sha512-8HEWcnkbGpovH9yInoisxaSoIg9Brbul+Ju3Kqe2UsYDUBJD/iQjSgEj0zPcTDPKfPp2fs5xlv1i+JSye/m1/A== - imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -3412,20 +2728,6 @@ ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -internal-slot@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" - integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== - dependencies: - get-intrinsic "^1.1.0" - has "^1.0.3" - side-channel "^1.0.4" - -interpret@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== - into-stream@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-6.0.0.tgz#4bfc1244c0128224e18b8870e85b2de8e66c6702" @@ -3434,36 +2736,11 @@ into-stream@^6.0.0: from2 "^2.3.0" p-is-promise "^3.0.0" -irregular-plurals@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-3.2.0.tgz#b19c490a0723798db51b235d7e39add44dab0822" - integrity sha512-YqTdPLfwP7YFN0SsD3QUVCkm9ZG2VzOXv3DOrw5G5mkMbVwptTwVcFv7/C0vOpBmgTxAeTG19XpUs1E522LW9Q== - irregular-plurals@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-3.3.0.tgz#67d0715d4361a60d9fd9ee80af3881c631a31ee2" integrity sha512-MVBLKUTangM3EfRPFROhmWQQKRDsrgI83J8GS3jXy+OwYqiR2/aoWndYQ5416jLE3uaGgLH7ncme3X9y09gZ3g== -is-absolute@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" - integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== - dependencies: - is-relative "^1.0.0" - is-windows "^1.0.1" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - dependencies: - has-bigints "^1.0.1" - is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" @@ -3471,31 +2748,6 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" -is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-builtin-module@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.1.0.tgz#6fdb24313b1c03b75f8b9711c0feb8c30b903b00" - integrity sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg== - dependencies: - builtin-modules "^3.0.0" - -is-callable@^1.1.4: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" - integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== - -is-callable@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" - integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== - is-core-module@2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" @@ -3503,23 +2755,13 @@ is-core-module@2.9.0: dependencies: has "^1.0.3" -is-core-module@^2.10.0, is-core-module@^2.5.0, is-core-module@^2.7.0, is-core-module@^2.8.1, is-core-module@^2.9.0: +is-core-module@^2.9.0: version "2.10.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed" integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg== dependencies: has "^1.0.3" -is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== - -is-docker@^2.0.0, is-docker@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - is-error@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/is-error/-/is-error-2.2.2.tgz#c10ade187b3c93510c5470a5567833ee25649843" @@ -3540,14 +2782,6 @@ is-fullwidth-code-point@^4.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88" integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== -is-get-set-prop@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-get-set-prop/-/is-get-set-prop-1.0.0.tgz#2731877e4d78a6a69edcce6bb9d68b0779e76312" - integrity sha1-JzGHfk14pqae3M5rudaLB3nnYxI= - dependencies: - get-set-props "^0.1.0" - lowercase-keys "^1.0.0" - is-glob@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" @@ -3569,43 +2803,11 @@ is-glob@^4.0.3: dependencies: is-extglob "^2.1.1" -is-js-type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-js-type/-/is-js-type-2.0.0.tgz#73617006d659b4eb4729bba747d28782df0f7e22" - integrity sha1-c2FwBtZZtOtHKbunR9KHgt8PfiI= - dependencies: - js-types "^1.0.0" - -is-negated-glob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" - integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI= - -is-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== - -is-number-object@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" - integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== - dependencies: - has-tostringtag "^1.0.0" - is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-obj-prop@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-obj-prop/-/is-obj-prop-1.0.0.tgz#b34de79c450b8d7c73ab2cdf67dc875adb85f80e" - integrity sha1-s03nnEULjXxzqyzfZ9yHWtuF+A4= - dependencies: - lowercase-keys "^1.0.0" - obj-props "^1.0.0" - is-path-cwd@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" @@ -3616,10 +2818,10 @@ is-path-inside@^3.0.2: resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== -is-plain-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== is-plain-object@^5.0.0: version "5.0.0" @@ -3631,101 +2833,26 @@ is-promise@^4.0.0: resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-4.0.0.tgz#42ff9f84206c1991d26debf520dd5c01042dd2f3" integrity sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ== -is-proto-prop@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-proto-prop/-/is-proto-prop-2.0.0.tgz#99ab2863462e44090fd083efd1929058f9d935e1" - integrity sha512-jl3NbQ/fGLv5Jhan4uX+Ge9ohnemqyblWVVCpAvtTQzNFvV2xhJq+esnkIbYQ9F1nITXoLfDDQLp7LBw/zzncg== - dependencies: - lowercase-keys "^1.0.0" - proto-props "^2.0.0" - -is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-relative@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" - integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== - dependencies: - is-unc-path "^1.0.0" - -is-shared-array-buffer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" - integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== - is-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== -is-string@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" - integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== - -is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - -is-symbol@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== - dependencies: - has-symbols "^1.0.1" - -is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - is-typedarray@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= -is-unc-path@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" - integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== - dependencies: - unc-path-regex "^0.1.2" - is-unicode-supported@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz#d824984b616c292a2e198207d4a609983842f714" integrity sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ== -is-weakref@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.1.tgz#842dba4ec17fa9ac9850df2d6efbc1737274f2a2" - integrity sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ== - dependencies: - call-bind "^1.0.0" - -is-windows@^1.0.1, is-windows@^1.0.2: +is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== -is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -3800,11 +2927,6 @@ istanbul-reports@^3.0.2: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -js-sdsl@^4.1.4: - version "4.1.4" - resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.1.4.tgz#78793c90f80e8430b7d8dc94515b6c77d98a26a6" - integrity sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw== - js-string-escape@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef" @@ -3815,11 +2937,6 @@ js-tokens@^4.0.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-types@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/js-types/-/js-types-1.0.0.tgz#d242e6494ed572ad3c92809fc8bed7f7687cbf03" - integrity sha1-0kLmSU7Vcq08koCfyL7X92h8vwM= - js-yaml@3.14.1, js-yaml@^3.14.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" @@ -3853,16 +2970,6 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" @@ -3873,13 +2980,6 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= -json5@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" - integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== - dependencies: - minimist "^1.2.0" - json5@^2.1.0, json5@^2.2.1: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" @@ -3894,11 +2994,6 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" -kind-of@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -3907,18 +3002,6 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" -line-column-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/line-column-path/-/line-column-path-3.0.0.tgz#c873b42feb57f5f97bc72af30d21581076b3119e" - integrity sha512-Atocnm7Wr9nuvAn97yEPQa3pcQI5eLQGBz+m6iTb+CVw+IOzYB9MrYK7jI7BfC9ISnT4Fu0eiwhAScV//rp4Hw== - dependencies: - type-fest "^2.0.0" - -lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" - integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= - load-json-file@^7.0.0: version "7.0.1" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-7.0.1.tgz#a3c9fde6beffb6bedb5acf104fad6bb1604e1b00" @@ -3945,18 +3028,6 @@ locate-path@^7.0.0: dependencies: p-locate "^6.0.0" -locate-path@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-7.1.0.tgz#241d62af60739f6097c055efe10329c88b798425" - integrity sha512-HNx5uOnYeK4SxEoid5qnhRfprlJeGMzFRKPLCf/15N3/B4AiofNwC/yq7VBKdVk9dx7m+PiYCJOGg55JYTAqoQ== - dependencies: - p-locate "^6.0.0" - -lodash-es@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" - integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== - lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" @@ -3972,11 +3043,6 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash@^4.13.1: - version "4.17.11" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" - integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== - lodash@^4.17.13, lodash@^4.17.15: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" @@ -3987,18 +3053,6 @@ lodash@^4.17.21: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-symbols@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" - integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== - dependencies: - chalk "^4.0.0" - -lowercase-keys@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== - lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -4021,13 +3075,6 @@ make-dir@^3.0.0: dependencies: semver "^6.0.0" -make-dir@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - map-age-cleaner@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" @@ -4035,16 +3082,6 @@ map-age-cleaner@^0.1.3: dependencies: p-defer "^1.0.0" -map-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= - -map-obj@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" - integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== - matcher@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/matcher/-/matcher-5.0.0.tgz#cd82f1c7ae7ee472a9eeaf8ec7cac45e0fe0da62" @@ -4067,34 +3104,6 @@ mem@^9.0.2: map-age-cleaner "^0.1.3" mimic-fn "^4.0.0" -memory-fs@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.2.0.tgz#f2bb25368bc121e391c2520de92969caee0a0290" - integrity sha1-8rslNovBIeORwlIN6Slpyu4KApA= - -meow@^10.1.2: - version "10.1.2" - resolved "https://registry.yarnpkg.com/meow/-/meow-10.1.2.tgz#62951cb69afa69594142c8250806bc30a3912e4d" - integrity sha512-zbuAlN+V/sXlbGchNS9WTWjUzeamwMt/BApKCJi7B0QyZstZaMx0n4Unll/fg0njGtMdC9UP5SAscvOCLYdM+Q== - dependencies: - "@types/minimist" "^1.2.2" - camelcase-keys "^7.0.0" - decamelize "^5.0.0" - decamelize-keys "^1.1.0" - hard-rejection "^2.1.0" - minimist-options "4.1.0" - normalize-package-data "^3.0.2" - read-pkg-up "^8.0.0" - redent "^4.0.0" - trim-newlines "^4.0.2" - type-fest "^1.2.2" - yargs-parser "^20.2.9" - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - merge2@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" @@ -4110,11 +3119,6 @@ mgrs@1.0.0: resolved "https://registry.yarnpkg.com/mgrs/-/mgrs-1.0.0.tgz#fb91588e78c90025672395cb40b25f7cd6ad1829" integrity sha512-awNbTOqCxK1DBGjalK3xqWIstBZgN6fxsMSiXLs9/spqWkF2pAhb2rrYCFSsr1/tT7PhcDGjZndG8SWYn0byYA== -micro-spelling-correcter@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/micro-spelling-correcter/-/micro-spelling-correcter-1.1.1.tgz#805a06a26ccfcad8f3e5c6a1ac5ff29d4530166e" - integrity sha512-lkJ3Rj/mtjlRcHk6YyCbvZhyWTOzdBvTHsxMmZSk5jxN1YyVSQ+JETAom55mdzfcyDrY/49Z7UCW760BK30crg== - micromatch@^4.0.4: version "4.0.4" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" @@ -4123,19 +3127,6 @@ micromatch@^4.0.4: braces "^3.0.1" picomatch "^2.2.3" -micromatch@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - dependencies: - braces "^3.0.2" - picomatch "^2.3.1" - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - mimic-fn@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" @@ -4146,27 +3137,13 @@ mimic-response@^3.1.0: resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== -min-indent@^1.0.0, min-indent@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" - integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== - -minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" -minimist-options@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" - integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== - dependencies: - arrify "^1.0.1" - is-plain-obj "^1.1.0" - kind-of "^6.0.3" - minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" @@ -4177,11 +3154,6 @@ mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" @@ -4246,38 +3218,11 @@ nofilter@^3.1.0: resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-3.1.0.tgz#c757ba68801d41ff930ba2ec55bab52ca184aa66" integrity sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g== -normalize-package-data@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-package-data@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" - integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== - dependencies: - hosted-git-info "^4.0.1" - is-core-module "^2.5.0" - semver "^7.3.4" - validate-npm-package-license "^3.0.1" - normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - nyc@^15.1.0: version "15.1.0" resolved "https://registry.yarnpkg.com/nyc/-/nyc-15.1.0.tgz#1335dae12ddc87b6e249d5a1994ca4bdaea75f02" @@ -4311,17 +3256,7 @@ nyc@^15.1.0: test-exclude "^6.0.0" yargs "^15.0.2" -obj-props@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/obj-props/-/obj-props-1.1.0.tgz#626313faa442befd4a44e9a02c3cb6bde937b511" - integrity sha1-YmMT+qRCvv1KROmgLDy2vek3tRE= - -object-inspect@^1.11.0, object-inspect@^1.9.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" - integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== - -object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: +object-keys@^1.0.11, object-keys@^1.0.12: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== @@ -4336,25 +3271,6 @@ object.assign@^4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" -object.assign@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" - object-keys "^1.1.1" - -object.values@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" - integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -4362,43 +3278,17 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" -onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -open-editor@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/open-editor/-/open-editor-4.0.0.tgz#881900b3c5540eaeef5b880abd05638ee82ca81f" - integrity sha512-5mKZ98iFdkivozt5XTCOspoKbL3wtYu6oOoVxfWQ0qUX9NYsK8pdkHE7VUHXr+CwyC3nf6mV0S5FPsMS65innw== - dependencies: - env-editor "^1.0.0" - execa "^5.1.1" - line-column-path "^3.0.0" - open "^8.4.0" - -open@^8.4.0: - version "8.4.0" - resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" - integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== - dependencies: - define-lazy-prop "^2.0.0" - is-docker "^2.1.1" - is-wsl "^2.2.0" - -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== +optionator@^0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" + integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== dependencies: + "@aashutoshrathi/word-wrap" "^1.2.3" deep-is "^0.1.3" fast-levenshtein "^2.0.6" levn "^0.4.1" prelude-ls "^1.2.1" type-check "^0.4.0" - word-wrap "^1.2.3" p-defer@^1.0.0: version "1.0.0" @@ -4512,26 +3402,6 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-json@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" - integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - lines-and-columns "^1.1.6" - -parse-json@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - parse-ms@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-2.1.0.tgz#348565a753d4391fa524029956b172cb7753097d" @@ -4552,7 +3422,7 @@ path-is-absolute@^1.0.0: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-key@^3.0.0, path-key@^3.1.0: +path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== @@ -4607,13 +3477,6 @@ pkg-dir@^4.1.0: dependencies: find-up "^4.0.0" -pkg-dir@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760" - integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA== - dependencies: - find-up "^5.0.0" - pkg-fetch@3.4.2: version "3.4.2" resolved "https://registry.yarnpkg.com/pkg-fetch/-/pkg-fetch-3.4.2.tgz#6f68ebc54842b73f8c0808959a9df3739dcb28b7" @@ -4648,13 +3511,6 @@ pkg@^5.8.0: resolve "^1.22.0" stream-meter "^1.0.4" -plur@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/plur/-/plur-4.0.0.tgz#729aedb08f452645fe8c58ef115bf16b0a73ef84" - integrity sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg== - dependencies: - irregular-plurals "^3.2.0" - plur@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/plur/-/plur-5.1.0.tgz#bff58c9f557b9061d60d8ebf93959cf4b08594ae" @@ -4662,11 +3518,6 @@ plur@^5.1.0: dependencies: irregular-plurals "^3.3.0" -pluralize@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" - integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== - prebuild-install@7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.1.tgz#de97d5b34a70a0c81334fd24641f2a1702352e45" @@ -4690,17 +3541,10 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -prettier-linter-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== - dependencies: - fast-diff "^1.1.2" - -prettier@^2.6.2: - version "2.7.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" - integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== +prettier@^3.2.5: + version "3.2.5" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.5.tgz#e52bc3090586e824964a8813b09aba6233b28368" + integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A== pretty-ms@^7.0.1: version "7.0.1" @@ -4734,11 +3578,6 @@ proj4@^2.8.0: mgrs "1.0.0" wkt-parser "^1.3.1" -proto-props@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/proto-props/-/proto-props-2.0.0.tgz#8ac6e6dec658545815c623a3bc81580deda9a181" - integrity sha512-2yma2tog9VaRZY2mn3Wq51uiSW4NcPYT1cQdBagwyrznrilKSZwIZ0UG3ZPL/mx+axEns0hE35T5ufOYZXEnBQ== - pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -4757,11 +3596,6 @@ punycode@^2.1.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -quick-lru@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" - integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== - rc@^1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" @@ -4772,44 +3606,6 @@ rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" -read-pkg-up@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" - integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== - dependencies: - find-up "^4.1.0" - read-pkg "^5.2.0" - type-fest "^0.8.1" - -read-pkg-up@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-8.0.0.tgz#72f595b65e66110f43b052dd9af4de6b10534670" - integrity sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ== - dependencies: - find-up "^5.0.0" - read-pkg "^6.0.0" - type-fest "^1.0.1" - -read-pkg@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== - dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" - -read-pkg@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-6.0.0.tgz#a67a7d6a1c2b0c3cd6aa2ea521f40c458a4a504c" - integrity sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q== - dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^3.0.2" - parse-json "^5.2.0" - type-fest "^1.0.1" - readable-stream@^2.0.0, readable-stream@^2.1.4: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" @@ -4846,14 +3642,6 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" -redent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-4.0.0.tgz#0c0ba7caabb24257ab3bb7a4fd95dd1d5c5681f9" - integrity sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag== - dependencies: - indent-string "^5.0.0" - strip-indent "^4.0.0" - regenerate-unicode-properties@^10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" @@ -4890,26 +3678,6 @@ regenerator-transform@^0.15.0: dependencies: "@babel/runtime" "^7.8.4" -regexp-tree@^0.1.24: - version "0.1.24" - resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.24.tgz#3d6fa238450a4d66e5bc9c4c14bb720e2196829d" - integrity sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw== - -regexp-tree@~0.1.1: - version "0.1.5" - resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.5.tgz#7cd71fca17198d04b4176efd79713f2998009397" - integrity sha512-nUmxvfJyAODw+0B13hj8CFVAxhe7fDEAgJgaotBu3nnR+IgGgZq59YedJP5VYTlkEfqjuK6TuRpnymKdatLZfQ== - -regexpp@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.0.0.tgz#dd63982ee3300e67b41c1956f850aa680d9d330e" - integrity sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g== - -regexpp@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - regexpu-core@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" @@ -4992,7 +3760,7 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve@^1.10.0, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.22.1, resolve@^1.3.2: +resolve@^1.14.2, resolve@^1.22.0, resolve@^1.3.2: version "1.22.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== @@ -5035,19 +3803,12 @@ safe-buffer@~5.2.0: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -safe-regex@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-2.1.1.tgz#f7128f00d056e2fe5c11e81a1324dd974aadced2" - integrity sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A== - dependencies: - regexp-tree "~0.1.1" - "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.6.0, semver@^5.7.1: +semver@^5.4.1, semver@^5.6.0: version "5.7.2" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== @@ -5057,7 +3818,7 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.0.0, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7: +semver@^7.3.2, semver@^7.3.5: version "7.6.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== @@ -5088,25 +3849,11 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= -signal-exit@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== - signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" @@ -5171,32 +3918,6 @@ spawn-wrap@^2.0.0: signal-exit "^3.0.2" which "^2.0.1" -spdx-correct@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.2.tgz#19bb409e91b47b1ad54159243f7312a858db3c2e" - integrity sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" - integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== - -spdx-expression-parse@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" - integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.2.tgz#a59efc09784c2a5bada13cfeaf5c75dd214044d2" - integrity sha512-qky9CVt0lVIECkEsYbNILVnPvycuEBkXoMFLRWsREkomQLevYhtRKC+R91a5TOAQ3bCMjikRwhyaRqj1VYatYg== - sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -5250,22 +3971,6 @@ string-width@^5.0.0: emoji-regex "^9.2.2" strip-ansi "^7.0.1" -string.prototype.trimend@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" - integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string.prototype.trimstart@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" - integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -5301,36 +4006,12 @@ strip-ansi@^7.0.1: dependencies: ansi-regex "^6.0.1" -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= - strip-bom@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-indent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" - integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== - dependencies: - min-indent "^1.0.0" - -strip-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-4.0.0.tgz#b41379433dd06f5eae805e21d631e07ee670d853" - integrity sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA== - dependencies: - min-indent "^1.0.1" - -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -5362,31 +4043,18 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^7.0.0, supports-color@^7.1.0: +supports-color@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== dependencies: has-flag "^4.0.0" -supports-hyperlinks@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" - integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA== - dependencies: - has-flag "^4.0.0" - supports-color "^7.0.0" - supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -tapable@^0.1.8: - version "0.1.10" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.1.10.tgz#29c35707c2b70e50d07482b5d202e8ed446dafd4" - integrity sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q= - tar-fs@^2.0.0, tar-fs@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" @@ -5443,14 +4111,6 @@ time-zone@^1.0.0: resolved "https://registry.yarnpkg.com/time-zone/-/time-zone-1.0.0.tgz#99c5bf55958966af6d06d83bdf3800dc82faec5d" integrity sha1-mcW/VZWJZq9tBtg73zgA3IL67F0= -to-absolute-glob@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b" - integrity sha1-GGX0PZ50sIItufFFt4z/fQ98hJs= - dependencies: - is-absolute "^1.0.0" - is-negated-glob "^1.0.0" - to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" @@ -5468,33 +4128,6 @@ tr46@~0.0.3: resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= -trim-newlines@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-4.0.2.tgz#d6aaaf6a0df1b4b536d183879a6b939489808c7c" - integrity sha512-GJtWyq9InR/2HRiLZgpIKv+ufIKrVrvjQWEj7PxAXNc5dwbNJkqhAUoAGgzRmULAnoOM5EIpveYd3J2VeSAIew== - -tsconfig-paths@^3.14.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" - integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== - dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.1" - minimist "^1.2.6" - strip-bom "^3.0.0" - -tslib@^1.8.1: - version "1.11.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" - integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -5519,26 +4152,11 @@ type-fest@^0.20.2: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -type-fest@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" - integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== - -type-fest@^0.8.0, type-fest@^0.8.1: +type-fest@^0.8.0: version "0.8.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -type-fest@^1.0.1, type-fest@^1.2.1, type-fest@^1.2.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1" - integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== - -type-fest@^2.0.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.8.0.tgz#39d7c9f9c508df8d6ce1cf5a966b0e6568dcc50d" - integrity sha512-O+V9pAshf9C6loGaH0idwsmugI2LxVNR7DtS40gVo2EXZVYFgz9OuNtOhgHLdHdapOEWNdvz9Ob/eeuaWwwlxA== - typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" @@ -5546,26 +4164,6 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typescript@^4.7.3: - version "4.8.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.3.tgz#d59344522c4bc464a65a730ac695007fdb66dd88" - integrity sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig== - -unbox-primitive@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" - integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== - dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.1" - has-symbols "^1.0.2" - which-boxed-primitive "^1.0.2" - -unc-path-regex@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" - integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= - unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" @@ -5632,11 +4230,6 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -url-or-path@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/url-or-path/-/url-or-path-2.1.0.tgz#8bb39a2a2b7e8f2e31c7883d8207b0cbd07acb9f" - integrity sha512-dsBD6GbytSMj9YDb3jVzSRENwFh50oUORnWBeSHfo0Lnwv2KMm/J4npyGy1P9rivUPsUGLjTA53XqAFqpe0nww== - urlgrey@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/urlgrey/-/urlgrey-1.0.0.tgz#72d2f904482d0b602e3c7fa599343d699bbe1017" @@ -5667,14 +4260,6 @@ uuidv4@^6.2.13: "@types/uuid" "8.3.4" uuid "8.3.2" -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" @@ -5693,17 +4278,6 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" @@ -5721,11 +4295,6 @@ wkt-parser@^1.3.1: resolved "https://registry.yarnpkg.com/wkt-parser/-/wkt-parser-1.3.2.tgz#deeff04a21edc5b170a60da418e9ed1d1ab0e219" integrity sha512-A26BOOo7sHAagyxG7iuRhnKMO7Q3mEOiOT4oGUmohtN/Li5wameeU4S6f8vWw6NADTVKljBs8bzA8JPQgSEMVQ== -word-wrap@^1.2.3: - version "1.2.5" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" - integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== - wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" @@ -5767,48 +4336,6 @@ write-file-atomic@^4.0.1: imurmurhash "^0.1.4" signal-exit "^3.0.7" -xo@^0.52.3: - version "0.52.3" - resolved "https://registry.yarnpkg.com/xo/-/xo-0.52.3.tgz#524de05f1bf83f211045a5f6fe547da914a20a16" - integrity sha512-liCEteZ5z+QRyh3XzsYWQyxedBHBvx8CDlNvvi+BJz74L0E5/ID2v7JtoX3bD541AlMuOy4e/iWif6hhNGBFNw== - dependencies: - "@eslint/eslintrc" "^1.3.0" - "@typescript-eslint/eslint-plugin" "^5.35.1" - "@typescript-eslint/parser" "^5.35.1" - arrify "^3.0.0" - cosmiconfig "^7.0.1" - define-lazy-prop "^3.0.0" - eslint "^8.22.0" - eslint-config-prettier "^8.5.0" - eslint-config-xo "^0.42.0" - eslint-config-xo-typescript "^0.53.0" - eslint-formatter-pretty "^4.1.0" - eslint-import-resolver-webpack "^0.13.2" - eslint-plugin-ava "^13.2.0" - eslint-plugin-eslint-comments "^3.2.0" - eslint-plugin-import "^2.26.0" - eslint-plugin-n "^15.2.5" - eslint-plugin-no-use-extend-native "^0.5.0" - eslint-plugin-prettier "^4.0.0" - eslint-plugin-unicorn "^42.0.0" - esm-utils "^4.1.0" - find-cache-dir "^3.3.2" - find-up "^6.3.0" - get-stdin "^9.0.0" - globby "^13.1.1" - imurmurhash "^0.1.4" - json-stable-stringify-without-jsonify "^1.0.1" - json5 "^2.2.1" - lodash-es "^4.17.21" - meow "^10.1.2" - micromatch "^4.0.5" - open-editor "^4.0.0" - prettier "^2.6.2" - semver "^7.3.7" - slash "^4.0.0" - to-absolute-glob "^2.0.2" - typescript "^4.7.3" - y18n@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" @@ -5824,11 +4351,6 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@^1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" - integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== - yargs-parser@^16.1.0: version "16.1.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-16.1.0.tgz#73747d53ae187e7b8dbe333f95714c76ea00ecf1" @@ -5842,11 +4364,6 @@ yargs-parser@^20.2.2: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== -yargs-parser@^20.2.9: - version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - yargs-parser@^21.0.0: version "21.0.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.0.tgz#a485d3966be4317426dd56bdb6a30131b281dc55"